From e4530a98cb1e4a572711563b1214468b26c3d688 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 14 Dec 2020 16:06:03 -0600 Subject: [PATCH 01/71] Support dynamic overworld palettes --- include/event_object_movement.h | 6 +- include/field_effect_helpers.h | 1 + include/field_weather.h | 11 +- src/data/field_effects/field_effect_objects.h | 20 +- .../berry_tree_graphics_tables.h | 154 ++++----- src/event_object_movement.c | 311 +----------------- src/field_effect.c | 14 +- src/field_effect_helpers.c | 102 +++--- src/field_weather.c | 28 +- src/field_weather_effect.c | 21 +- src/overworld.c | 5 +- src/trainer_see.c | 28 +- 12 files changed, 236 insertions(+), 465 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index a935502e6..1dca5daae 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -68,11 +68,10 @@ struct LockedAnimObjectEvents extern const struct OamData gObjectEventBaseOam_32x8; extern const struct OamData gObjectEventBaseOam_32x32; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; -extern const u8 gReflectionEffectPaletteMap[]; -extern const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[]; +extern const u16 *const gBerryTreeObjectEventGraphicsIdTablePointers[]; extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[]; -extern const u8 *const gBerryTreePaletteSlotTablePointers[]; +extern const u16 *const gBerryTreePaletteSlotTablePointers[]; void ResetObjectEvents(void); u8 GetMoveDirectionAnimNum(u8); @@ -192,6 +191,7 @@ void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible) s16 GetFigure8XOffset(s16 idx); s16 GetFigure8YOffset(s16 idx); void CameraObjectReset2(void); +void LoadObjectEventPalette(u16 paletteTag); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8, u8, u8); diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 528492d81..a11c470ae 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -41,5 +41,6 @@ void UpdateBubblesFieldEffect(struct Sprite*); void UpdateSparkleFieldEffect(struct Sprite*); void SetSpriteInvisible(u8 spriteId); void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y); +void LoadFieldEffectPalette(u8 fieldEffect); #endif //GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_weather.h b/include/field_weather.h index 9c6a4ab7a..bea247918 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -139,6 +139,15 @@ extern struct Weather gWeather; extern struct Weather *const gWeatherPtr; extern const u16 gFogPalette[]; +enum +{ + GAMMA_NONE, + GAMMA_NORMAL, + GAMMA_ALT, +}; + +void UpdatePaletteGammaType(u8 index, u8 gammaType); + // field_weather_effect.c extern const u8 gWeatherFogHorizontalTiles[]; @@ -152,7 +161,7 @@ void FadeScreen(u8 mode, s8 delay); bool8 IsWeatherNotFadingIn(void); void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex); void ApplyWeatherGammaShiftToPal(u8 paletteIndex); -void LoadCustomWeatherSpritePalette(const u16 *palette); +void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette); void ResetDroughtWeatherPaletteLoading(void); bool8 LoadDroughtWeatherPalettes(void); void DroughtStateInit(void); diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 54145efbc..2b4a96df3 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -30,7 +30,7 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowSmall, @@ -40,7 +40,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowMedium, @@ -50,7 +50,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowLarge, @@ -60,7 +60,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowExtraLarge, @@ -267,7 +267,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Arrow, .images = sPicTable_Arrow, @@ -931,7 +931,7 @@ static const union AnimCmd *const sAnimTable_Sparkle[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Sparkle, .images = sPicTable_Sparkle, @@ -975,7 +975,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_TreeDisguise, .images = sPicTable_TreeDisguise, @@ -1019,7 +1019,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_MountainDisguise, .images = sPicTable_MountainDisguise, @@ -1039,7 +1039,7 @@ static const struct SpriteFrameImage sPicTable_SandDisguisePlaceholder[] = { const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_TreeDisguise, .images = sPicTable_SandDisguisePlaceholder, @@ -1064,7 +1064,7 @@ static const union AnimCmd *const sAnimTable_Bird[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = { .tileTag = 0xFFFF, - .paletteTag = 0xFFFF, + .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, .oam = &gObjectEventBaseOam_32x32, .anims = sAnimTable_Bird, .images = sPicTable_Bird, diff --git a/src/data/object_events/berry_tree_graphics_tables.h b/src/data/object_events/berry_tree_graphics_tables.h index 390c82f95..b674f4a50 100755 --- a/src/data/object_events/berry_tree_graphics_tables.h +++ b/src/data/object_events/berry_tree_graphics_tables.h @@ -10,7 +10,7 @@ static const struct SpriteFrameImage sPicTable_PechaBerryTree[] = { overworld_frame(gObjectEventPic_PechaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Pecha[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -24,7 +24,7 @@ static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = { overworld_frame(gObjectEventPic_KelpsyBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Kelpsy[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -38,7 +38,7 @@ static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = { overworld_frame(gObjectEventPic_WepearBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Wepear[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -52,7 +52,7 @@ static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = { overworld_frame(gObjectEventPic_IapapaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Iapapa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -66,7 +66,7 @@ static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = { overworld_frame(gObjectEventPic_CheriBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Cheri[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -80,7 +80,7 @@ static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = { overworld_frame(gObjectEventPic_FigyBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Figy[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -94,7 +94,7 @@ static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = { overworld_frame(gObjectEventPic_MagoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Mago[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_LumBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -108,7 +108,7 @@ static const struct SpriteFrameImage sPicTable_LumBerryTree[] = { overworld_frame(gObjectEventPic_LumBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Lum[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -122,7 +122,7 @@ static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = { overworld_frame(gObjectEventPic_RazzBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Razz[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -136,7 +136,7 @@ static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = { overworld_frame(gObjectEventPic_GrepaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Grepa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -150,7 +150,7 @@ static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = { overworld_frame(gObjectEventPic_RabutaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Rabuta[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -164,7 +164,7 @@ static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = { overworld_frame(gObjectEventPic_NomelBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Nomel[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -178,7 +178,7 @@ static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = { overworld_frame(gObjectEventPic_LeppaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Leppa[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -192,7 +192,7 @@ static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = { overworld_frame(gObjectEventPic_LiechiBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Liechi[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -206,7 +206,7 @@ static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = { overworld_frame(gObjectEventPic_HondewBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5}; +const u16 gBerryTreePaletteTagTable_Hondew[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NPC_4}; static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -220,7 +220,7 @@ static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = { overworld_frame(gObjectEventPic_AguavBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Aguav[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -234,7 +234,7 @@ static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = { overworld_frame(gObjectEventPic_WikiBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Wiki[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -248,7 +248,7 @@ static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = { overworld_frame(gObjectEventPic_PomegBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Pomeg[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -262,7 +262,7 @@ static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = { overworld_frame(gObjectEventPic_RawstBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Rawst[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -276,7 +276,7 @@ static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = { overworld_frame(gObjectEventPic_SpelonBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Spelon[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -290,7 +290,7 @@ static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = { overworld_frame(gObjectEventPic_ChestoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Chesto[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_OranBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -304,7 +304,7 @@ static const struct SpriteFrameImage sPicTable_OranBerryTree[] = { overworld_frame(gObjectEventPic_OranBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Oran[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -318,7 +318,7 @@ static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = { overworld_frame(gObjectEventPic_PersimBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Persim[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -332,7 +332,7 @@ static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = { overworld_frame(gObjectEventPic_SitrusBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Sitrus[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -346,7 +346,7 @@ static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = { overworld_frame(gObjectEventPic_AspearBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3}; +const u16 gBerryTreePaletteTagTable_Aspear[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_2}; static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -360,7 +360,7 @@ static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = { overworld_frame(gObjectEventPic_PamtreBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Pamtre[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -374,7 +374,7 @@ static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = { overworld_frame(gObjectEventPic_CornnBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Cornn[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -388,7 +388,7 @@ static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = { overworld_frame(gObjectEventPic_LansatBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Lansat[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -402,7 +402,7 @@ static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = { overworld_frame(gObjectEventPic_DurinBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4}; +const u16 gBerryTreePaletteTagTable_Durin[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_3}; static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -416,11 +416,11 @@ static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = { overworld_frame(gObjectEventPic_TamatoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2}; +const u16 gBerryTreePaletteTagTable_Tamato[] = {OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NPC_1}; -const u8 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES}; +const u16 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES}; -const u8 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES}; +const u16 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES}; const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = { [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = sPicTable_CheriBerryTree, @@ -468,53 +468,53 @@ const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = { [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = sPicTable_DurinBerryTree, }; -const u8 *const gBerryTreePaletteSlotTablePointers[] = { - [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cheri, - [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Chesto, - [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pecha, - [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rawst, - [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aspear, - [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Leppa, - [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Oran, - [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Persim, - [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lum, - [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Sitrus, - [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Figy, - [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wiki, - [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago, - [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav, - [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa, - [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz, - [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz, - [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago, - [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear, - [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa, - [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg, - [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Kelpsy, - [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear, - [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew, - [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa, - [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Tamato, - [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn, - [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg, - [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta, - [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Nomel, - [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Spelon, - [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pamtre, - [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta, - [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin, - [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew, - [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Liechi, - [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew, - [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav, - [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg, - [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa, - [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lansat, - [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn, - [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin, +const u16 *const gBerryTreePaletteTagTablePointers[] = { + [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cheri, + [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Chesto, + [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pecha, + [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rawst, + [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aspear, + [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Leppa, + [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Oran, + [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Persim, + [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Lum, + [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Sitrus, + [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Figy, + [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wiki, + [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Mago, + [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aguav, + [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Iapapa, + [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Razz, + [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Razz, + [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Mago, + [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wepear, + [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Iapapa, + [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg, + [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Kelpsy, + [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Wepear, + [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew, + [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Grepa, + [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Tamato, + [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cornn, + [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg, + [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rabuta, + [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Nomel, + [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Spelon, + [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pamtre, + [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Rabuta, + [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Durin, + [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew, + [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Liechi, + [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Hondew, + [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Aguav, + [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Pomeg, + [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Grepa, + [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Lansat, + [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Cornn, + [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteTagTable_Durin, }; -const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[] = { +const u16 *const gBerryTreeObjectEventGraphicsIdTablePointers[] = { [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable, [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable, [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeObjectEventGraphicsIdTable, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 67f203dcd..24a6d3c83 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -11,6 +11,7 @@ #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" +#include "field_weather.h" #include "fieldmap.h" #include "mauville_old_man.h" #include "metatile_behavior.h" @@ -62,8 +63,6 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit return 0;\ } -static EWRAM_DATA u8 sCurrentReflectionType = 0; -static EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0; static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); @@ -121,7 +120,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); @@ -153,8 +151,6 @@ static bool8 NpcTakeStep(struct Sprite *sprite); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; -const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0}; - static const struct SpriteTemplate sCameraSpriteTemplate = { .tileTag = 0, .paletteTag = 0xFFFF, @@ -465,13 +461,13 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #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" #include "data/object_events/object_event_pic_tables.h" #include "data/object_events/object_event_anims.h" #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_pointers.h" static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, @@ -512,187 +508,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {NULL, 0x0000}, }; -static const u16 sReflectionPaletteTags_Brendan[] = { - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_May[] = { - OBJ_EVENT_PAL_TAG_MAY_REFLECTION, - OBJ_EVENT_PAL_TAG_MAY_REFLECTION, - OBJ_EVENT_PAL_TAG_MAY_REFLECTION, - OBJ_EVENT_PAL_TAG_MAY_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_PlayerUnderwater[] = { - OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, - OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, - OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, - OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, -}; - -static const struct PairedPalettes sPlayerReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, - {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, - {OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater}, - {OBJ_EVENT_PAL_TAG_NONE, NULL}, -}; - -static const u16 sReflectionPaletteTags_QuintyPlump[] = { - OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, - OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, - OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, - OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_Truck[] = { - OBJ_EVENT_PAL_TAG_TRUCK, - OBJ_EVENT_PAL_TAG_TRUCK, - OBJ_EVENT_PAL_TAG_TRUCK, - OBJ_EVENT_PAL_TAG_TRUCK, -}; - -static const u16 sReflectionPaletteTags_VigorothMover[] = { - OBJ_EVENT_PAL_TAG_VIGOROTH, - OBJ_EVENT_PAL_TAG_VIGOROTH, - OBJ_EVENT_PAL_TAG_VIGOROTH, - OBJ_EVENT_PAL_TAG_VIGOROTH, -}; - -static const u16 sReflectionPaletteTags_MovingBox[] = { - OBJ_EVENT_PAL_TAG_MOVING_BOX, - OBJ_EVENT_PAL_TAG_MOVING_BOX, - OBJ_EVENT_PAL_TAG_MOVING_BOX, - OBJ_EVENT_PAL_TAG_MOVING_BOX, -}; - -static const u16 sReflectionPaletteTags_CableCar[] = { - OBJ_EVENT_PAL_TAG_CABLE_CAR, - OBJ_EVENT_PAL_TAG_CABLE_CAR, - OBJ_EVENT_PAL_TAG_CABLE_CAR, - OBJ_EVENT_PAL_TAG_CABLE_CAR, -}; - -static const u16 sReflectionPaletteTags_SSTidal[] = { - OBJ_EVENT_PAL_TAG_SSTIDAL, - OBJ_EVENT_PAL_TAG_SSTIDAL, - OBJ_EVENT_PAL_TAG_SSTIDAL, - OBJ_EVENT_PAL_TAG_SSTIDAL, -}; - -static const u16 sReflectionPaletteTags_SubmarineShadow[] = { - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, -}; - -static const u16 sReflectionPaletteTags_Kyogre[] = { - OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, - OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, - OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, - OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_Groudon[] = { - OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, - OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, - OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, - OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_Npc3[] = { // Only used by the Route 120 bridge Kecleon - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, -}; - -static const u16 sReflectionPaletteTags_RedLeaf[] = { - OBJ_EVENT_PAL_TAG_RED_LEAF, - OBJ_EVENT_PAL_TAG_RED_LEAF, - OBJ_EVENT_PAL_TAG_RED_LEAF, - OBJ_EVENT_PAL_TAG_RED_LEAF, -}; - -static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, - {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, - {OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump}, - {OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck}, - {OBJ_EVENT_PAL_TAG_VIGOROTH, sReflectionPaletteTags_VigorothMover}, - {OBJ_EVENT_PAL_TAG_MOVING_BOX, sReflectionPaletteTags_MovingBox}, - {OBJ_EVENT_PAL_TAG_CABLE_CAR, sReflectionPaletteTags_CableCar}, - {OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SSTidal}, - {OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre}, - {OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon}, - {OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3}, - {OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, sReflectionPaletteTags_SubmarineShadow}, - {OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf}, - {OBJ_EVENT_PAL_TAG_NONE, NULL}, -}; - -static const u16 sObjectPaletteTags0[] = { - OBJ_EVENT_PAL_TAG_BRENDAN, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_1, - OBJ_EVENT_PAL_TAG_NPC_2, - OBJ_EVENT_PAL_TAG_NPC_3, - OBJ_EVENT_PAL_TAG_NPC_4, - OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, -}; - -static const u16 sObjectPaletteTags1[] = { - OBJ_EVENT_PAL_TAG_BRENDAN, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_1, - OBJ_EVENT_PAL_TAG_NPC_2, - OBJ_EVENT_PAL_TAG_NPC_3, - OBJ_EVENT_PAL_TAG_NPC_4, - OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, -}; - -static const u16 sObjectPaletteTags2[] = { - OBJ_EVENT_PAL_TAG_BRENDAN, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_1, - OBJ_EVENT_PAL_TAG_NPC_2, - OBJ_EVENT_PAL_TAG_NPC_3, - OBJ_EVENT_PAL_TAG_NPC_4, - OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, -}; - -static const u16 sObjectPaletteTags3[] = { - OBJ_EVENT_PAL_TAG_BRENDAN, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_1, - OBJ_EVENT_PAL_TAG_NPC_2, - OBJ_EVENT_PAL_TAG_NPC_3, - OBJ_EVENT_PAL_TAG_NPC_4, - OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, - OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, -}; - -static const u16 *const sObjectPaletteTagSets[] = { - sObjectPaletteTags0, - sObjectPaletteTags1, - sObjectPaletteTags2, - sObjectPaletteTags3, -}; - #include "data/object_events/berry_tree_graphics_tables.h" #include "data/field_effects/field_effect_objects.h" @@ -1356,10 +1171,14 @@ 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) @@ -1388,25 +1207,15 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) + if (spriteTemplate->paletteTag != 0xFFFF) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0); - } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + LoadObjectEventPalette(spriteTemplate->paletteTag); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_ALT); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = 0xFFFF; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1420,7 +1229,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->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -1578,11 +1386,7 @@ u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 di sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; sprite->data[1] = z; - if (graphicsInfo->paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (graphicsInfo->paletteSlot >= 16) + if (graphicsInfo->paletteSlot >= 16) { _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); } @@ -1704,23 +1508,11 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) spriteFrameImage.size = graphicsInfo->size; MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; - - *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) + if (spriteTemplate.paletteTag != 0xFFFF) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + LoadObjectEventPalette(spriteTemplate.paletteTag); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -1739,8 +1531,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) } if (subspriteTables != NULL) SetSubspriteTables(sprite, subspriteTables); - - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; @@ -1786,10 +1576,6 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } else if (paletteSlot >= 16) { paletteSlot -= 16; @@ -1866,9 +1652,11 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite if (berryId > ITEM_TO_BERRY(LAST_BERRY_INDEX)) berryId = 0; + LoadObjectEventPalette(gBerryTreePaletteTagTablePointers[berryId][berryStage]); ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]); sprite->images = gBerryTreePicTablePointers[berryId]; - sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage]; + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gBerryTreePaletteTagTablePointers[berryId][berryStage]); + UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); StartSpriteAnim(sprite, berryStage); } } @@ -1980,7 +1768,7 @@ void FreeAndReserveObjectSpritePalettes(void) gReservedSpritePaletteCount = 12; } -static void LoadObjectEventPalette(u16 paletteTag) +void LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); @@ -2036,37 +1824,6 @@ static u8 FindObjectEventPaletteIndexByTag(u16 tag) return 0xFF; } -void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot) -{ - u8 i; - - PatchObjectPalette(tag, slot); - for (i = 0; sPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) - { - if (sPlayerReflectionPaletteSets[i].tag == tag) - { - PatchObjectPalette(sPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); - return; - } - } -} - -void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot) -{ - u8 i; - - sCurrentSpecialObjectPaletteTag = tag; - PatchObjectPalette(tag, slot); - for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) - { - if (sSpecialObjectReflectionPaletteSets[i].tag == tag) - { - PatchObjectPalette(sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); - return; - } - } -} - static void _PatchObjectPalette(u16 tag, u8 slot) { PatchObjectPalette(tag, slot); @@ -2519,40 +2276,6 @@ void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup } } -void InitObjectEventPalettes(u8 palSlot) -{ - FreeAndReserveObjectSpritePalettes(); - sCurrentSpecialObjectPaletteTag = OBJ_EVENT_PAL_TAG_NONE; - sCurrentReflectionType = palSlot; - if (palSlot == 1) - { - PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 6); - gReservedSpritePaletteCount = 8; - } - else - { - PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 10); - } -} - -u16 GetObjectPaletteTag(u8 palSlot) -{ - u8 i; - - if (palSlot < 10) - { - return sObjectPaletteTagSets[sCurrentReflectionType][palSlot]; - } - for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) - { - if (sSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag) - { - return sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType]; - } - } - return OBJ_EVENT_PAL_TAG_NONE; -} - movement_type_empty_callback(MovementType_None) movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround) diff --git a/src/field_effect.c b/src/field_effect.c index 8152f19bb..79a7cb15a 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -35,6 +35,7 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} EWRAM_DATA s32 gFieldEffectArguments[8] = {0}; +EWRAM_DATA u16 gReflectionPaletteBuffer[0x10] = {0}; // Static type declarations @@ -771,6 +772,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(palette->tag), GAMMA_NORMAL); UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); (*script) += 4; } @@ -3105,10 +3107,13 @@ u8 FldEff_RayquazaSpotlight(void) u8 FldEff_NPCFlyOut(void) { - u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1); - struct Sprite *sprite = &gSprites[spriteId]; + u8 spriteId; + struct Sprite *sprite; + + LoadFieldEffectPalette(FLDEFFOBJ_BIRD); + spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1); + sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = SpriteCB_NPCFlyOut; sprite->data[1] = gFieldEffectArguments[0]; @@ -3288,9 +3293,10 @@ static u8 CreateFlyBirdSprite(void) { u8 spriteId; struct Sprite *sprite; + + LoadFieldEffectPalette(FLDEFFOBJ_BIRD); 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 67a151aaa..ccf6076b9 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,6 +7,7 @@ #include "fieldmap.h" #include "gpu_regs.h" #include "metatile_behavior.h" +#include "palette.h" #include "sound.h" #include "sprite.h" #include "trig.h" @@ -17,8 +18,6 @@ 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 UpdateGrassFieldEffectSubpriority(struct Sprite *, u8, u8); static void FadeFootprintsTireTracks_Step0(struct Sprite *); static void FadeFootprintsTireTracks_Step1(struct Sprite *); @@ -30,7 +29,12 @@ static void SynchroniseSurfAnim(struct ObjectEvent *, struct Sprite *); static void SynchroniseSurfPosition(struct ObjectEvent *, struct Sprite *); static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *); static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); -static u32 ShowDisguiseFieldEffect(u8, u8, u8); +static u32 ShowDisguiseFieldEffect(u8, u8); +static void LoadFieldEffectPalette_(u8 fieldEffect, bool8 updateGammaType); + +void LoadSpecialReflectionPalette(struct Sprite *sprite); + +extern u16 gReflectionPaletteBuffer[]; // Used by several field effects to determine which of a group it is #define sFldEff data[1] @@ -47,7 +51,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); @@ -68,6 +71,8 @@ static s16 GetReflectionVerticalOffset(struct ObjectEvent *objectEvent) return GetObjectEventGraphicsInfo(objectEvent->graphicsId)->height - 2; } +#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102 + static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *reflectionSprite) { u8 bridgeType; @@ -75,50 +80,32 @@ 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)))) { + // 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. reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1]; - LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION); + reflectionSprite->oam.paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION); + UpdatePaletteGammaType(reflectionSprite->oam.paletteNum, GAMMA_NORMAL); + UpdateSpritePaletteWithWeather(reflectionSprite->oam.paletteNum); } else { - LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadSpecialReflectionPalette(reflectionSprite); } } -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) +void LoadSpecialReflectionPalette(struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *graphicsInfo; + struct SpritePalette reflectionPalette; - 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); - } -} - -// 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) -{ - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) - { - PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); - UpdateSpritePaletteWithWeather(paletteNum); - } + CpuCopy16(&gPlttBufferUnfaded[0x100 + sprite->oam.paletteNum * 16], gReflectionPaletteBuffer, 32); + TintPalette_CustomTone(gReflectionPaletteBuffer, 16, Q_8_8(1.0), Q_8_8(1.0), Q_8_8(3.5)); + reflectionPalette.data = gReflectionPaletteBuffer; + reflectionPalette.tag = GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) + 0x1000; + LoadSpritePalette(&reflectionPalette); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(reflectionPalette.tag); + UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) @@ -134,7 +121,6 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) } else { - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum]; reflectionSprite->oam.shape = mainSprite->oam.shape; reflectionSprite->oam.size = mainSprite->oam.size; reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP; @@ -177,6 +163,7 @@ u8 CreateWarpArrowSprite(void) u8 spriteId; struct Sprite *sprite; + LoadFieldEffectPalette_(FLDEFFOBJ_ARROW, FALSE); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52); if (spriteId != MAX_SPRITES) { @@ -235,6 +222,7 @@ u32 FldEff_Shadow(void) objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + LoadFieldEffectPalette_(sShadowEffectTemplateIds[graphicsInfo->shadowSize], FALSE); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { @@ -487,6 +475,7 @@ u32 FldEff_JumpLongGrass(void) struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + LoadFieldEffectPalette(FLDEFFOBJ_SURF_BLOB); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { @@ -1012,7 +1001,6 @@ u32 FldEff_SurfBlob(void) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.paletteNum = 0; sprite->tPlayerObjId = gFieldEffectArguments[2]; sprite->data[3] = -1; sprite->data[6] = -1; @@ -1289,13 +1277,13 @@ u32 FldEff_BerryTreeGrowthSparkle(void) struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); + LoadFieldEffectPalette(FLDEFFOBJ_SPARKLE); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->oam.paletteNum = 5; sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; @@ -1310,20 +1298,20 @@ u32 FldEff_BerryTreeGrowthSparkle(void) u32 ShowTreeDisguiseFieldEffect(void) { - return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE, 4); + return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE); } u32 ShowMountainDisguiseFieldEffect(void) { - return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, FLDEFFOBJ_MOUNTAIN_DISGUISE, 3); + return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, FLDEFFOBJ_MOUNTAIN_DISGUISE); } u32 ShowSandDisguiseFieldEffect(void) { - return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, FLDEFFOBJ_SAND_DISGUISE, 2); + return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, FLDEFFOBJ_SAND_DISGUISE); } -static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) +static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx) { u8 spriteId; struct Sprite *sprite; @@ -1333,12 +1321,12 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) FieldEffectActiveListRemove(fldEff); return MAX_SPRITES; } - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0); + LoadFieldEffectPalette(templateIdx); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0); if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; - sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; sprite->sLocalId = gFieldEffectArguments[0]; sprite->sMapNum = gFieldEffectArguments[1]; @@ -1685,6 +1673,24 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 of } } +static void LoadFieldEffectPalette_(u8 fieldEffect, bool8 updateGammaType) +{ + const struct SpriteTemplate *spriteTemplate; + + spriteTemplate = gFieldEffectObjectTemplatePointers[fieldEffect]; + if (spriteTemplate->paletteTag != 0xffff) + { + LoadObjectEventPalette(spriteTemplate->paletteTag); + if (updateGammaType) + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_NORMAL); + } +} + +void LoadFieldEffectPalette(u8 fieldEffect) +{ + LoadFieldEffectPalette_(fieldEffect, TRUE); +} + // Unused, duplicates of data in event_object_movement.c static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = { 1, 2, 2, 2, 2, 2, 2, 2, diff --git a/src/field_weather.c b/src/field_weather.c index 4b9c6a863..00e31c6e8 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -19,13 +19,6 @@ #define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) -enum -{ - GAMMA_NONE, - GAMMA_NORMAL, - GAMMA_ALT, -}; - struct RGBColor { u16 r:5; @@ -116,7 +109,7 @@ void (*const gWeatherPalStateFuncs[])(void) = // This table specifies which of the gamma shift tables should be // applied to each of the background and sprite palettes. -static const u8 sBasePaletteGammaTypes[32] = +EWRAM_DATA u8 sBasePaletteGammaTypes[32] = { // background palettes GAMMA_NORMAL, @@ -160,11 +153,10 @@ void StartWeather(void) { if (!FuncIsActiveTask(Task_WeatherMain)) { - u8 index = AllocSpritePalette(TAG_WEATHER_START); + u8 index = 15; CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32); BuildGammaShiftTables(); gWeatherPtr->altGammaSpritePalIndex = index; - gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2); gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->curRainSpriteIndex = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -282,6 +274,10 @@ static void BuildGammaShiftTables(void) u32 v10; u16 v11; s16 dunno; + u8 i; + + for (i = 0; i <= 12; i++) + sBasePaletteGammaTypes[i] = GAMMA_NORMAL; sPaletteGammaTypes = sBasePaletteGammaTypes; for (v0 = 0; v0 <= 1; v0++) @@ -857,10 +853,10 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void) return FALSE; } -void LoadCustomWeatherSpritePalette(const u16 *palette) +void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette) { - LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); - UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); + LoadSpritePalette(palette); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) @@ -1102,3 +1098,9 @@ void ResetPreservedPalettesInWeather(void) { sPaletteGammaTypes = sBasePaletteGammaTypes; } + +void UpdatePaletteGammaType(u8 index, u8 gammaType) +{ + if (index != 0xFF) + sBasePaletteGammaTypes[index + 16] = gammaType; +} diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 0d1e6958c..5cbabaa43 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -30,6 +30,10 @@ const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); +const struct SpritePalette sFogSpritePalette = {gFogPalette, 0x1201}; +const struct SpritePalette sCloudsSpritePalette = {gCloudsWeatherPalette, 0x1207}; +const struct SpritePalette sSandstormSpritePalette = {gSandstormWeatherPalette, 0x1204}; + //------------------------------------------------------------------------------ // WEATHER_SUNNY_CLOUDS //------------------------------------------------------------------------------ @@ -85,7 +89,7 @@ static const union AnimCmd *const sCloudSpriteAnimCmds[] = static const struct SpriteTemplate sCloudSpriteTemplate = { .tileTag = GFXTAG_CLOUD, - .paletteTag = PALTAG_WEATHER_2, + .paletteTag = 0x1207, .oam = &sCloudSpriteOamData, .anims = sCloudSpriteAnimCmds, .images = NULL, @@ -181,7 +185,7 @@ static void CreateCloudSprites(void) return; LoadSpriteSheet(&sCloudSpriteSheet); - LoadCustomWeatherSpritePalette(gCloudsWeatherPalette); + LoadCustomWeatherSpritePalette(&sCloudsSpritePalette); for (i = 0; i < NUM_CLOUD_SPRITES; i++) { spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); @@ -214,7 +218,7 @@ static void DestroyCloudSprites(void) DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]); } - FreeSpriteTilesByTag(GFXTAG_CLOUD); + FreeSpriteTilesByTag(0x1207); gWeatherPtr->cloudSpritesCreated = FALSE; } @@ -1474,6 +1478,7 @@ static void CreateFogHorizontalSprites(void) sprite->pos1.x = (i % 5) * 64 + 32; sprite->pos1.y = (i / 5) * 64 + 32; gWeatherPtr->sprites.s2.fogHSprites[i] = sprite; + sprite->oam.paletteNum = gWeatherPtr->altGammaSpritePalIndex; } else { @@ -1632,7 +1637,7 @@ static const union AnimCmd *const sAshSpriteAnimCmds[] = static const struct SpriteTemplate sAshSpriteTemplate = { .tileTag = GFXTAG_ASH, - .paletteTag = PALTAG_WEATHER, + .paletteTag = 0x1201, .oam = &sAshSpriteOamData, .anims = sAshSpriteAnimCmds, .images = NULL, @@ -1653,6 +1658,7 @@ static void CreateAshSprites(void) if (!gWeatherPtr->ashSpritesCreated) { + LoadCustomWeatherSpritePalette(&sFogSpritePalette); for (i = 0; i < NUM_ASH_SPRITES; i++) { spriteId = CreateSpriteAtEnd(&sAshSpriteTemplate, 0, 0, 0x4E); @@ -1849,7 +1855,7 @@ static const union AnimCmd *const sFogDiagonalSpriteAnimCmds[] = static const struct SpriteTemplate sFogDiagonalSpriteTemplate = { .tileTag = GFXTAG_FOG_D, - .paletteTag = PALTAG_WEATHER, + .paletteTag = 0x1201, .oam = &sFogDiagonalSpriteOamData, .anims = sFogDiagonalSpriteAnimCmds, .images = NULL, @@ -1871,6 +1877,7 @@ static void CreateFogDiagonalSprites(void) { fogDiagonalSpriteSheet = gFogDiagonalSpriteSheet; LoadSpriteSheet(&fogDiagonalSpriteSheet); + LoadCustomWeatherSpritePalette(&sFogSpritePalette); for (i = 0; i < NUM_FOG_DIAGONAL_SPRITES; i++) { spriteId = CreateSpriteAtEnd(&sFogDiagonalSpriteTemplate, 0, (i / 5) * 64, 0xFF); @@ -2096,7 +2103,7 @@ static const union AnimCmd *const sSandstormSpriteAnimCmds[] = static const struct SpriteTemplate sSandstormSpriteTemplate = { .tileTag = GFXTAG_SANDSTORM, - .paletteTag = PALTAG_WEATHER_2, + .paletteTag = 0x1204, .oam = &sSandstormSpriteOamData, .anims = sSandstormSpriteAnimCmds, .images = NULL, @@ -2129,7 +2136,7 @@ static void CreateSandstormSprites(void) if (!gWeatherPtr->sandstormSpritesCreated) { LoadSpriteSheet(&sSandstormSpriteSheet); - LoadCustomWeatherSpritePalette(gSandstormWeatherPalette); + LoadCustomWeatherSpritePalette(&sSandstormSpritePalette); for (i = 0; i < NUM_SANDSTORM_SPRITES; i++) { spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1); diff --git a/src/overworld.c b/src/overworld.c index 600333a47..59dbf9851 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2127,10 +2127,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); diff --git a/src/trainer_see.c b/src/trainer_see.c index 155c84cbe..328d9e95a 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -4,6 +4,7 @@ #include "event_object_movement.h" #include "field_effect.h" #include "field_player_avatar.h" +#include "field_weather.h" #include "pokemon.h" #include "script.h" #include "script_movement.h" @@ -19,6 +20,9 @@ #include "constants/field_effects.h" #include "constants/trainer_types.h" +extern const struct SpritePalette sObjectEventSpritePalettes[]; +extern const struct SpritePalette gObjectEventPal_Npc1; + // this file's functions static u8 CheckTrainer(u8 objectEventId); static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj); @@ -168,7 +172,7 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] = static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { .tileTag = 0xffff, - .paletteTag = 0xffff, + .paletteTag = 0x1100, ////LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_ExclamationQuestionMark, @@ -696,7 +700,12 @@ void TryPrepareSecondApproachingTrainer(void) u8 FldEff_ExclamationMarkIcon(void) { - u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53); + u8 spriteId, paletteNum; + + LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) + UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1100)); + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0); @@ -706,7 +715,13 @@ u8 FldEff_ExclamationMarkIcon(void) u8 FldEff_QuestionMarkIcon(void) { - u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); + u8 spriteId; + + LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) + UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1100)); + + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1); @@ -716,7 +731,12 @@ u8 FldEff_QuestionMarkIcon(void) u8 FldEff_HeartIcon(void) { - u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52); + u8 spriteId; + + LoadSpritePalette(&gObjectEventPal_Npc1); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1004), GAMMA_ALT); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1004)); + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52); if (spriteId != MAX_SPRITES) { From 8f562e3b19d51c1231673098efaf7e7602d98720 Mon Sep 17 00:00:00 2001 From: ExpoSeed <> Date: Wed, 21 Apr 2021 13:12:46 -0500 Subject: [PATCH 02/71] Fix Brendan being tinted after trainer see in weather --- src/trainer_see.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/trainer_see.c b/src/trainer_see.c index 328d9e95a..1043cfdbe 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -704,7 +704,6 @@ u8 FldEff_ExclamationMarkIcon(void) LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1100)); spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) @@ -719,8 +718,6 @@ u8 FldEff_QuestionMarkIcon(void) LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1100)); - spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) @@ -735,7 +732,6 @@ u8 FldEff_HeartIcon(void) LoadSpritePalette(&gObjectEventPal_Npc1); UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1004), GAMMA_ALT); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(0x1004)); spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52); if (spriteId != MAX_SPRITES) From c73993d40cf6576e71460027648aeffb86372cd3 Mon Sep 17 00:00:00 2001 From: ExpoSeed <> Date: Sun, 25 Apr 2021 23:09:41 -0500 Subject: [PATCH 03/71] Don't change the gamma in trainer see --- src/trainer_see.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/trainer_see.c b/src/trainer_see.c index 1043cfdbe..c2de3bd24 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -703,7 +703,6 @@ u8 FldEff_ExclamationMarkIcon(void) u8 spriteId, paletteNum; LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) - UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) @@ -717,7 +716,6 @@ u8 FldEff_QuestionMarkIcon(void) u8 spriteId; LoadObjectEventPalette(0x1100); //LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN) - UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1100), GAMMA_ALT); spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) @@ -731,7 +729,6 @@ u8 FldEff_HeartIcon(void) u8 spriteId; LoadSpritePalette(&gObjectEventPal_Npc1); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(0x1004), GAMMA_ALT); spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52); if (spriteId != MAX_SPRITES) From 6083cf98dde8da8c73473713797c4ad7b13e6e21 Mon Sep 17 00:00:00 2001 From: ExpoSeed <> Date: Fri, 4 Jun 2021 23:21:36 -0500 Subject: [PATCH 04/71] Partially fix Battle Dome --- src/event_object_movement.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 24a6d3c83..f4a5fa4a7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1229,6 +1229,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->pos1.x += 8; sprite->pos1.y += 16 + sprite->centerToCornerVecY; + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate->paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -1367,7 +1368,11 @@ u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 di graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); MakeObjectTemplateFromObjectEventGraphicsInfo(graphicsId, UpdateObjectEventSprite, &spriteTemplate, &subspriteTables); - *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; + if (spriteTemplate.paletteTag != 0xFFFF) + { + LoadObjectEventPalette(spriteTemplate.paletteTag); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); + } x += 7; y += 7; SetSpritePosToOffsetMapCoords(&x, &y, 8, 16); @@ -1378,18 +1383,10 @@ u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 di sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->pos1.y += sprite->centerToCornerVecY; - sprite->oam.paletteNum = graphicsInfo->paletteSlot; - if (sprite->oam.paletteNum >= 16) - { - sprite->oam.paletteNum -= 16; - } + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; sprite->data[1] = z; - if (graphicsInfo->paletteSlot >= 16) - { - _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); - } if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); @@ -1531,6 +1528,8 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) } if (subspriteTables != NULL) SetSubspriteTables(sprite, subspriteTables); + + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; From d0a3cf22c617b4ae6094acc6bc68f455e1cec7a9 Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Thu, 26 Aug 2021 21:49:17 -0500 Subject: [PATCH 05/71] Fix incorrect palettes in battle dome --- src/event_object_movement.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5d8564ec5..5a905ef34 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1570,22 +1570,17 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); sprite = &gSprites[objectEvent->spriteId]; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) + if (graphicsInfo->paletteTag != 0xFFFF) { - PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + LoadObjectEventPalette(graphicsInfo->paletteTag); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(graphicsInfo->paletteTag), GAMMA_ALT); } 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; + sprite->oam.paletteNum = IndexOfSpritePaletteTag(graphicsInfo->paletteTag); objectEvent->inanimate = graphicsInfo->inanimate; objectEvent->graphicsId = graphicsId; SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); From ff4e394a72a6dea50987deed515eea3d1f4088ae Mon Sep 17 00:00:00 2001 From: WiserVisor Date: Thu, 9 Sep 2021 14:49:32 -0700 Subject: [PATCH 06/71] Added AI Revive --- asm/macros/battle_script.inc | 4 ++++ charmap.txt | 1 + data/battle_scripts_2.s | 14 +++++++++++ .../map.json | 4 ++-- .../scripts.inc | 2 ++ include/battle_ai_switch_items.h | 1 + include/battle_message.h | 1 + include/constants/battle_script_commands.h | 1 + include/constants/battle_string_ids.h | 3 ++- src/battle_ai_switch_items.c | 13 ++++++++++ src/battle_message.c | 15 ++++++++++++ src/battle_script_commands.c | 24 +++++++++++++++++++ src/battle_util.c | 1 + src/data/trainers.h | 2 +- 14 files changed, 82 insertions(+), 4 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 0f51061e8..20bea13f9 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1431,3 +1431,7 @@ .macro jumpifnotbattletype flags:req, jumpptr:req jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm + + .macro usereviveonopponent + various 0, VARIOUS_USE_REVIVE_ON_OPPONENT + .endm diff --git a/charmap.txt b/charmap.txt index 84e1496f0..9a308b5e5 100644 --- a/charmap.txt +++ b/charmap.txt @@ -400,6 +400,7 @@ B_TRAINER2_WIN_TEXT = FD 31 B_PARTNER_CLASS = FD 32 B_PARTNER_NAME = FD 33 B_BUFF3 = FD 34 +B_TARGET_OF_REVIVE = FD 35 @ indicates the end of a town/city name (before " TOWN" or " CITY") NAME_END = FC 00 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index b7f0f693f..f1a0db813 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -35,6 +35,7 @@ gBattlescriptsForUsingItem:: .4byte BattleScript_OpponentUsesStatusCureItem @ AI_ITEM_CURE_CONDITION .4byte BattleScript_OpponentUsesXItem @ AI_ITEM_X_STAT .4byte BattleScript_OpponentUsesGuardSpec @ AI_ITEM_GUARD_SPEC + .4byte BattleScript_OpponentUsesReviveItem @ AI_ITEM_REVIVE .align 2 gBattlescriptsForRunningByItem:: @@ -200,3 +201,16 @@ BattleScript_ActionWallyThrow: printstring STRINGID_YOUTHROWABALLNOWRIGHT waitmessage B_WAIT_TIME_LONG end2 + +BattleScript_OpponentUsesReviveItem:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse SE_USE_ITEM + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + usereviveonopponent + printstring STRINGID_PKMNSITEMREVIVED + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index deee3e264..4a2562980 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -98,8 +98,8 @@ "x": 6, "y": 12, "elevation": 0, - "dest_map": "MAP_LITTLEROOT_TOWN", - "dest_warp_id": 2 + "dest_map": "MAP_RUSTBORO_CITY_GYM", + "dest_warp_id": 0 }, { "x": 7, diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 2bff65b31..d3c058162 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -147,6 +147,8 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: msgbox LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou, MSGBOX_DEFAULT clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 + givemon SPECIES_MANECTRIC, 100, ITEM_NONE + givemon SPECIES_MEWTWO, 100, ITEM_NONE releaseall end diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index a0b6fe62c..f55e8eaed 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -8,6 +8,7 @@ enum AI_ITEM_CURE_CONDITION, AI_ITEM_X_STAT, AI_ITEM_GUARD_SPEC, + AI_ITEM_REVIVE, AI_ITEM_NOT_RECOGNIZABLE }; diff --git a/include/battle_message.h b/include/battle_message.h index da3009d63..54c3c68d6 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -57,6 +57,7 @@ #define B_TXT_PARTNER_CLASS 0x32 #define B_TXT_PARTNER_NAME 0x33 #define B_TXT_BUFF3 0x34 +#define B_TXT_TARGET_OF_REVIVE 0x35 // for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 9794589af..8536fa676 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -88,6 +88,7 @@ #define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 #define VARIOUS_SET_TELEPORT_OUTCOME 25 #define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 +#define VARIOUS_USE_REVIVE_ON_OPPONENT 27 // Cmd_manipulatedmg #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index c8d37aac6..e89312eec 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H #define GUARD_CONSTANTS_BATTLE_STRING_IDS_H -#define BATTLESTRINGS_COUNT 369 +#define BATTLESTRINGS_COUNT 370 #define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved @@ -382,6 +382,7 @@ #define STRINGID_PKMNBOXLANETTESPCFULL 378 #define STRINGID_TRAINER1WINTEXT 379 #define STRINGID_TRAINER2WINTEXT 380 +#define STRINGID_PKMNSITEMREVIVED 381 // The below IDs are all indexes into battle message tables, diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 04122b17d..3cf74710c 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -782,6 +782,8 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u { if (itemId == ITEM_FULL_RESTORE) return AI_ITEM_FULL_RESTORE; + else if (itemEffect[4] & ITEM4_REVIVE) + return AI_ITEM_REVIVE; else if (itemEffect[4] & ITEM4_HEAL_HP) return AI_ITEM_HEAL_HP; else if (itemEffect[3] & ITEM3_STATUS_ALL) @@ -821,6 +823,7 @@ static bool8 ShouldUseItem(void) for (i = 0; i < MAX_TRAINER_ITEMS; i++) { + u8 loop; u16 item; const u8 *itemEffects; u8 paramOffset; @@ -916,6 +919,16 @@ static bool8 ShouldUseItem(void) if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0) shouldUse = TRUE; break; + case AI_ITEM_REVIVE: + for(loop = 0; loop < PARTY_SIZE; loop++) + { + if(GetMonData(&party[loop], MON_DATA_HP) == 0) + { + shouldUse = TRUE; + break; + } + } + break; case AI_ITEM_NOT_RECOGNIZABLE: return FALSE; } diff --git a/src/battle_message.c b/src/battle_message.c index ae30a2a62..587854e9b 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -499,6 +499,7 @@ static const u8 sText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PRE static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); +static const u8 sText_PkmnsItemRevived[] = _("{B_TARGET_OF_REVIVE} was revived!"); const u8 gText_EmptyString3[] = _(""); static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I'll do my best!"); @@ -812,6 +813,7 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNSITEMRESTOREDHPALITTLE - 12] = sText_PkmnsItemRestoredHPALittle, [STRINGID_ITEMALLOWSONLYYMOVE - 12] = sText_ItemAllowsOnlyYMove, [STRINGID_PKMNHUNGONWITHX - 12] = sText_PkmnHungOnWithX, + [STRINGID_PKMNSITEMREVIVED - 12] = sText_PkmnsItemRevived, [STRINGID_EMPTYSTRING3 - 12] = gText_EmptyString3, [STRINGID_PKMNSXPREVENTSBURNS - 12] = sText_PkmnsXPreventsBurns, [STRINGID_PKMNSXBLOCKSY - 12] = sText_PkmnsXBlocksY, @@ -2544,6 +2546,19 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active battlerId name with prefix HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler]) break; + case B_TXT_TARGET_OF_REVIVE: + toCpy = sText_FoePkmnPrefix; + while (*toCpy != EOS) + { + dst[dstID] = *toCpy; + dstID++; + toCpy++; + } + GetMonData(&gEnemyParty[gBattleStruct->wildVictorySong], MON_DATA_NICKNAME, text); + gBattleStruct->wildVictorySong = 0; + StringGetEnd10(text); + toCpy = text; + break; case B_TXT_CURRENT_MOVE: // current move name if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) toCpy = sATypeMove_Table[gBattleStruct->stringMoveType]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index cea30bb21..e7d38ea7f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6434,6 +6434,30 @@ static void Cmd_various(void) BtlController_EmitPlayFanfareOrBGM(0, MUS_VICTORY_TRAINER, TRUE); MarkBattlerForControllerExec(gActiveBattler); break; + case VARIOUS_USE_REVIVE_ON_OPPONENT: + for(i = 0; i < PARTY_SIZE; i++) + { + u16 currentMonMax = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); + u16 currentMonHalf = currentMonMax / 2; + if(GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + { + gBattleStruct->wildVictorySong = i; + switch(gLastUsedItem) + { + // Half health (revive) + case ITEM_REVIVE: + SetMonData(&gEnemyParty[i], MON_DATA_HP, ¤tMonHalf); + break; + // Full Health (max revive, revival herb) + case ITEM_MAX_REVIVE: + case ITEM_REVIVAL_HERB: + SetMonData(&gEnemyParty[i], MON_DATA_HP, ¤tMonMax); + break; + } + break; + } + } + break; } gBattlescriptCurrInstr += 3; diff --git a/src/battle_util.c b/src/battle_util.c index cbcd445b7..a4c152949 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -337,6 +337,7 @@ void HandleAction_UseItem(void) { case AI_ITEM_FULL_RESTORE: case AI_ITEM_HEAL_HP: + case AI_ITEM_REVIVE: break; case AI_ITEM_CURE_CONDITION: gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_CONFUSION; diff --git a/src/data/trainers.h b/src/data/trainers.h index 163a8296d..f1f818717 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -3716,7 +3716,7 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LEADER_ROXANNE, .trainerName = _("ROXANNE"), - .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE}, + .items = {ITEM_POTION, ITEM_POTION, ITEM_REVIVE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = ARRAY_COUNT(sParty_Roxanne1), From 3fd6df44fa967ab34b340b1f42a98165de8cdf8d Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Fri, 10 Sep 2021 22:00:29 -0500 Subject: [PATCH 07/71] Better reflections algorithm written by CompuMax --- src/field_effect_helpers.c | 40 ++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 299973633..7242d3790 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -13,6 +13,7 @@ #include "trig.h" #include "constants/field_effects.h" #include "constants/songs.h" +#include "constants/rgb.h" #define OBJ_EVENT_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c @@ -94,18 +95,37 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct } } +#define Red(Color) ((Color) & 31) +#define Green(Color) ((Color >> 5) & 31) +#define Blue(Color) ((Color >> 10) & 31) + void LoadSpecialReflectionPalette(struct Sprite *sprite) { - struct SpritePalette reflectionPalette; - - CpuCopy16(&gPlttBufferUnfaded[0x100 + sprite->oam.paletteNum * 16], gReflectionPaletteBuffer, 32); - TintPalette_CustomTone(gReflectionPaletteBuffer, 16, Q_8_8(1.0), Q_8_8(1.0), Q_8_8(3.5)); - reflectionPalette.data = gReflectionPaletteBuffer; - reflectionPalette.tag = GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) + 0x1000; - LoadSpritePalette(&reflectionPalette); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(reflectionPalette.tag); - UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); - UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); + u32 R, G, B, i; + u16 color; + u16* pal; + struct SpritePalette reflectionPalette; + + CpuCopy16(&gPlttBufferUnfaded[0x100 + sprite->oam.paletteNum * 16], gReflectionPaletteBuffer, 32); + BlendPalettes(gReflectionPaletteBuffer[0x100 + sprite->oam.paletteNum * 16], 6, RGB(12, 20, 27)); + pal = gReflectionPaletteBuffer; + for (i = 0; i < 16; ++i) + { + color = pal[i]; + R = Red(color) + 8; + G = Green(color) + 8; + B = Blue(color) + 16; + if (R > 31) R = 31; + if (G > 31) G = 31; + if (B > 31) B = 31; + pal[i] = RGB(R, G, B); + } + reflectionPalette.data = gReflectionPaletteBuffer; + reflectionPalette.tag = GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) + 0x1000; + LoadSpritePalette(&reflectionPalette); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(reflectionPalette.tag); + UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) From ff70307f00f5634975576d03fb0fbcf4f24b0773 Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Sat, 11 Sep 2021 22:32:32 -0500 Subject: [PATCH 08/71] Remove bad BlendPalette call, use rgb.h macros --- src/field_effect_helpers.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 7242d3790..d83b63808 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -95,10 +95,6 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct } } -#define Red(Color) ((Color) & 31) -#define Green(Color) ((Color >> 5) & 31) -#define Blue(Color) ((Color >> 10) & 31) - void LoadSpecialReflectionPalette(struct Sprite *sprite) { u32 R, G, B, i; @@ -107,14 +103,13 @@ void LoadSpecialReflectionPalette(struct Sprite *sprite) struct SpritePalette reflectionPalette; CpuCopy16(&gPlttBufferUnfaded[0x100 + sprite->oam.paletteNum * 16], gReflectionPaletteBuffer, 32); - BlendPalettes(gReflectionPaletteBuffer[0x100 + sprite->oam.paletteNum * 16], 6, RGB(12, 20, 27)); pal = gReflectionPaletteBuffer; for (i = 0; i < 16; ++i) { color = pal[i]; - R = Red(color) + 8; - G = Green(color) + 8; - B = Blue(color) + 16; + R = GET_R(color) + 8; + G = GET_G(color) + 8; + B = GET_B(color) + 16; if (R > 31) R = 31; if (G > 31) G = 31; if (B > 31) B = 31; From 1903dd28a69eb10263597fa8f2d017b66279d6bf Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Fri, 7 Jan 2022 12:31:51 -0800 Subject: [PATCH 09/71] Removed AI Revive code to revert back to just pret code --- asm/macros/battle_script.inc | 4 ---- charmap.txt | 1 - data/battle_scripts_2.s | 14 ----------- .../map.json | 4 ++-- .../scripts.inc | 2 -- include/battle_ai_switch_items.h | 1 - include/battle_message.h | 1 - include/constants/battle_script_commands.h | 1 - include/constants/battle_string_ids.h | 3 +-- src/battle_ai_switch_items.c | 13 ---------- src/battle_message.c | 15 ------------ src/battle_script_commands.c | 24 ------------------- src/battle_util.c | 1 - src/data/trainers.h | 2 +- 14 files changed, 4 insertions(+), 82 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 20bea13f9..0f51061e8 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1431,7 +1431,3 @@ .macro jumpifnotbattletype flags:req, jumpptr:req jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm - - .macro usereviveonopponent - various 0, VARIOUS_USE_REVIVE_ON_OPPONENT - .endm diff --git a/charmap.txt b/charmap.txt index 9a308b5e5..84e1496f0 100644 --- a/charmap.txt +++ b/charmap.txt @@ -400,7 +400,6 @@ B_TRAINER2_WIN_TEXT = FD 31 B_PARTNER_CLASS = FD 32 B_PARTNER_NAME = FD 33 B_BUFF3 = FD 34 -B_TARGET_OF_REVIVE = FD 35 @ indicates the end of a town/city name (before " TOWN" or " CITY") NAME_END = FC 00 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index f1a0db813..b7f0f693f 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -35,7 +35,6 @@ gBattlescriptsForUsingItem:: .4byte BattleScript_OpponentUsesStatusCureItem @ AI_ITEM_CURE_CONDITION .4byte BattleScript_OpponentUsesXItem @ AI_ITEM_X_STAT .4byte BattleScript_OpponentUsesGuardSpec @ AI_ITEM_GUARD_SPEC - .4byte BattleScript_OpponentUsesReviveItem @ AI_ITEM_REVIVE .align 2 gBattlescriptsForRunningByItem:: @@ -201,16 +200,3 @@ BattleScript_ActionWallyThrow: printstring STRINGID_YOUTHROWABALLNOWRIGHT waitmessage B_WAIT_TIME_LONG end2 - -BattleScript_OpponentUsesReviveItem:: - printstring STRINGID_EMPTYSTRING3 - pause 0x30 - playse SE_USE_ITEM - printstring STRINGID_TRAINER1USEDITEM - waitmessage 0x40 - usereviveonopponent - printstring STRINGID_PKMNSITEMREVIVED - waitmessage 0x40 - setbyte sMOVEEND_STATE, 0xF - moveend 0x1, 0x0 - finishaction diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index 4a2562980..deee3e264 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -98,8 +98,8 @@ "x": 6, "y": 12, "elevation": 0, - "dest_map": "MAP_RUSTBORO_CITY_GYM", - "dest_warp_id": 0 + "dest_map": "MAP_LITTLEROOT_TOWN", + "dest_warp_id": 2 }, { "x": 7, diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index d3c058162..2bff65b31 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -147,8 +147,6 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: msgbox LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou, MSGBOX_DEFAULT clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 - givemon SPECIES_MANECTRIC, 100, ITEM_NONE - givemon SPECIES_MEWTWO, 100, ITEM_NONE releaseall end diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index f55e8eaed..a0b6fe62c 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -8,7 +8,6 @@ enum AI_ITEM_CURE_CONDITION, AI_ITEM_X_STAT, AI_ITEM_GUARD_SPEC, - AI_ITEM_REVIVE, AI_ITEM_NOT_RECOGNIZABLE }; diff --git a/include/battle_message.h b/include/battle_message.h index 54c3c68d6..da3009d63 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -57,7 +57,6 @@ #define B_TXT_PARTNER_CLASS 0x32 #define B_TXT_PARTNER_NAME 0x33 #define B_TXT_BUFF3 0x34 -#define B_TXT_TARGET_OF_REVIVE 0x35 // for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 8536fa676..9794589af 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -88,7 +88,6 @@ #define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 #define VARIOUS_SET_TELEPORT_OUTCOME 25 #define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 -#define VARIOUS_USE_REVIVE_ON_OPPONENT 27 // Cmd_manipulatedmg #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index e89312eec..c8d37aac6 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H #define GUARD_CONSTANTS_BATTLE_STRING_IDS_H -#define BATTLESTRINGS_COUNT 370 +#define BATTLESTRINGS_COUNT 369 #define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved @@ -382,7 +382,6 @@ #define STRINGID_PKMNBOXLANETTESPCFULL 378 #define STRINGID_TRAINER1WINTEXT 379 #define STRINGID_TRAINER2WINTEXT 380 -#define STRINGID_PKMNSITEMREVIVED 381 // The below IDs are all indexes into battle message tables, diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 3cf74710c..04122b17d 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -782,8 +782,6 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u { if (itemId == ITEM_FULL_RESTORE) return AI_ITEM_FULL_RESTORE; - else if (itemEffect[4] & ITEM4_REVIVE) - return AI_ITEM_REVIVE; else if (itemEffect[4] & ITEM4_HEAL_HP) return AI_ITEM_HEAL_HP; else if (itemEffect[3] & ITEM3_STATUS_ALL) @@ -823,7 +821,6 @@ static bool8 ShouldUseItem(void) for (i = 0; i < MAX_TRAINER_ITEMS; i++) { - u8 loop; u16 item; const u8 *itemEffects; u8 paramOffset; @@ -919,16 +916,6 @@ static bool8 ShouldUseItem(void) if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0) shouldUse = TRUE; break; - case AI_ITEM_REVIVE: - for(loop = 0; loop < PARTY_SIZE; loop++) - { - if(GetMonData(&party[loop], MON_DATA_HP) == 0) - { - shouldUse = TRUE; - break; - } - } - break; case AI_ITEM_NOT_RECOGNIZABLE: return FALSE; } diff --git a/src/battle_message.c b/src/battle_message.c index 587854e9b..ae30a2a62 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -499,7 +499,6 @@ static const u8 sText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PRE static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); -static const u8 sText_PkmnsItemRevived[] = _("{B_TARGET_OF_REVIVE} was revived!"); const u8 gText_EmptyString3[] = _(""); static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I'll do my best!"); @@ -813,7 +812,6 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNSITEMRESTOREDHPALITTLE - 12] = sText_PkmnsItemRestoredHPALittle, [STRINGID_ITEMALLOWSONLYYMOVE - 12] = sText_ItemAllowsOnlyYMove, [STRINGID_PKMNHUNGONWITHX - 12] = sText_PkmnHungOnWithX, - [STRINGID_PKMNSITEMREVIVED - 12] = sText_PkmnsItemRevived, [STRINGID_EMPTYSTRING3 - 12] = gText_EmptyString3, [STRINGID_PKMNSXPREVENTSBURNS - 12] = sText_PkmnsXPreventsBurns, [STRINGID_PKMNSXBLOCKSY - 12] = sText_PkmnsXBlocksY, @@ -2546,19 +2544,6 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active battlerId name with prefix HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler]) break; - case B_TXT_TARGET_OF_REVIVE: - toCpy = sText_FoePkmnPrefix; - while (*toCpy != EOS) - { - dst[dstID] = *toCpy; - dstID++; - toCpy++; - } - GetMonData(&gEnemyParty[gBattleStruct->wildVictorySong], MON_DATA_NICKNAME, text); - gBattleStruct->wildVictorySong = 0; - StringGetEnd10(text); - toCpy = text; - break; case B_TXT_CURRENT_MOVE: // current move name if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) toCpy = sATypeMove_Table[gBattleStruct->stringMoveType]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e7d38ea7f..cea30bb21 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6434,30 +6434,6 @@ static void Cmd_various(void) BtlController_EmitPlayFanfareOrBGM(0, MUS_VICTORY_TRAINER, TRUE); MarkBattlerForControllerExec(gActiveBattler); break; - case VARIOUS_USE_REVIVE_ON_OPPONENT: - for(i = 0; i < PARTY_SIZE; i++) - { - u16 currentMonMax = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); - u16 currentMonHalf = currentMonMax / 2; - if(GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) - { - gBattleStruct->wildVictorySong = i; - switch(gLastUsedItem) - { - // Half health (revive) - case ITEM_REVIVE: - SetMonData(&gEnemyParty[i], MON_DATA_HP, ¤tMonHalf); - break; - // Full Health (max revive, revival herb) - case ITEM_MAX_REVIVE: - case ITEM_REVIVAL_HERB: - SetMonData(&gEnemyParty[i], MON_DATA_HP, ¤tMonMax); - break; - } - break; - } - } - break; } gBattlescriptCurrInstr += 3; diff --git a/src/battle_util.c b/src/battle_util.c index a4c152949..cbcd445b7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -337,7 +337,6 @@ void HandleAction_UseItem(void) { case AI_ITEM_FULL_RESTORE: case AI_ITEM_HEAL_HP: - case AI_ITEM_REVIVE: break; case AI_ITEM_CURE_CONDITION: gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_CONFUSION; diff --git a/src/data/trainers.h b/src/data/trainers.h index f1f818717..163a8296d 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -3716,7 +3716,7 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, .trainerPic = TRAINER_PIC_LEADER_ROXANNE, .trainerName = _("ROXANNE"), - .items = {ITEM_POTION, ITEM_POTION, ITEM_REVIVE, ITEM_NONE}, + .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, .partySize = ARRAY_COUNT(sParty_Roxanne1), From 5ea3d064c65c6d86425388edd12f7e0b62121526 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sat, 8 Jan 2022 13:32:43 -0800 Subject: [PATCH 10/71] Added Following Pokemon mechanics and sprites/palettes for all Gen 1 Pokemon --- asm/macros/event.inc | 40 + asm/macros/map.inc | 3 +- data/event_scripts.s | 1 + .../map.json | 13 + .../scripts.inc | 4 + data/script_cmd_table.inc | 4 + data/scripts/field_move_scripts.inc | 66 + data/scripts/pkmn_center_nurse.inc | 3 + gflib/sprite.c | 42 + .../object_events/palettes/followers/abra.pal | 19 + .../palettes/followers/aerodactyl.pal | 19 + .../palettes/followers/alakazam.pal | 19 + .../palettes/followers/arbok.pal | 19 + .../palettes/followers/arcanine.pal | 19 + .../palettes/followers/articuno.pal | 19 + .../palettes/followers/beedrill.pal | 19 + .../palettes/followers/bellsprout.pal | 19 + .../palettes/followers/blastoise.pal | 19 + .../palettes/followers/bulbasaur1.pal | 19 + .../palettes/followers/butterfree.pal | 19 + .../palettes/followers/caterpie.pal | 19 + .../palettes/followers/chansey.pal | 19 + .../palettes/followers/charizard.pal | 19 + .../palettes/followers/charmander.pal | 19 + .../palettes/followers/charmeleon.pal | 19 + .../palettes/followers/clefable.pal | 19 + .../palettes/followers/clefairy.pal | 19 + .../palettes/followers/cloyster.pal | 19 + .../palettes/followers/cubone.pal | 19 + .../palettes/followers/dewgong.pal | 19 + .../palettes/followers/diglett.pal | 19 + .../palettes/followers/ditto.pal | 19 + .../palettes/followers/dodrio.pal | 19 + .../palettes/followers/doduo.pal | 19 + .../palettes/followers/dragonair.pal | 19 + .../palettes/followers/dragonite.pal | 19 + .../palettes/followers/dratini.pal | 19 + .../palettes/followers/drowzee.pal | 19 + .../palettes/followers/dugtrio.pal | 19 + .../palettes/followers/eevee.pal | 19 + .../palettes/followers/ekans.pal | 19 + .../palettes/followers/electabuzz.pal | 19 + .../palettes/followers/electrode.pal | 19 + .../palettes/followers/exeggcute.pal | 19 + .../palettes/followers/exeggutor.pal | 19 + .../palettes/followers/farfetchd.pal | 19 + .../palettes/followers/fearow.pal | 19 + .../palettes/followers/flareon.pal | 19 + .../palettes/followers/gastly.pal | 19 + .../palettes/followers/gengar.pal | 19 + .../palettes/followers/geodude.pal | 19 + .../palettes/followers/gloom.pal | 19 + .../palettes/followers/golbat.pal | 19 + .../palettes/followers/goldeen.pal | 19 + .../palettes/followers/golduck.pal | 19 + .../palettes/followers/golem.pal | 19 + .../palettes/followers/graveler.pal | 19 + .../palettes/followers/grimer.pal | 19 + .../palettes/followers/growlithe.pal | 19 + .../palettes/followers/gyarados.pal | 19 + .../palettes/followers/haunter.pal | 19 + .../palettes/followers/hitmonchan.pal | 19 + .../palettes/followers/hitmonlee.pal | 19 + .../palettes/followers/horsea.pal | 19 + .../palettes/followers/hypno.pal | 19 + .../palettes/followers/ivysaur.pal | 19 + .../palettes/followers/jigglypuff.pal | 19 + .../palettes/followers/jolteon.pal | 19 + .../object_events/palettes/followers/jynx.pal | 19 + .../palettes/followers/kabuto.pal | 19 + .../palettes/followers/kabutops.pal | 19 + .../palettes/followers/kadabra.pal | 19 + .../palettes/followers/kakuna.pal | 19 + .../palettes/followers/kangaskhan.pal | 19 + .../palettes/followers/kingler.pal | 19 + .../palettes/followers/koffing.pal | 19 + .../palettes/followers/krabby.pal | 19 + .../palettes/followers/lapras.pal | 19 + .../palettes/followers/lickitung.pal | 19 + .../palettes/followers/machamp.pal | 19 + .../palettes/followers/machoke.pal | 19 + .../palettes/followers/machop.pal | 19 + .../palettes/followers/magikarp.pal | 19 + .../palettes/followers/magmar.pal | 19 + .../palettes/followers/magnemite.pal | 19 + .../palettes/followers/magneton.pal | 19 + .../palettes/followers/mankey.pal | 19 + .../palettes/followers/marowak.pal | 19 + .../palettes/followers/meowth.pal | 19 + .../palettes/followers/metapod.pal | 19 + .../object_events/palettes/followers/mew.pal | 19 + .../palettes/followers/mewtwo.pal | 19 + .../palettes/followers/moltres.pal | 19 + .../palettes/followers/mr_mime.pal | 19 + .../object_events/palettes/followers/muk.pal | 19 + .../palettes/followers/nidoking.pal | 19 + .../palettes/followers/nidoqueen.pal | 19 + .../palettes/followers/nidoran_f.pal | 19 + .../palettes/followers/nidoran_m.pal | 19 + .../palettes/followers/nidorina.pal | 19 + .../palettes/followers/nidorino.pal | 19 + .../palettes/followers/ninetales.pal | 19 + .../palettes/followers/oddish.pal | 19 + .../palettes/followers/omanyte.pal | 19 + .../palettes/followers/omastar.pal | 19 + .../object_events/palettes/followers/onix.pal | 19 + .../palettes/followers/paras.pal | 19 + .../palettes/followers/parasect.pal | 19 + .../palettes/followers/persian.pal | 19 + .../palettes/followers/pidgeot.pal | 19 + .../palettes/followers/pidgeotto.pal | 19 + .../palettes/followers/pidgey.pal | 19 + .../palettes/followers/pikachu.pal | 19 + .../palettes/followers/pinsir.pal | 19 + .../palettes/followers/poliwag.pal | 19 + .../palettes/followers/poliwhirl.pal | 19 + .../palettes/followers/poliwrath.pal | 19 + .../palettes/followers/ponyta.pal | 19 + .../palettes/followers/porygon.pal | 19 + .../palettes/followers/primeape.pal | 19 + .../palettes/followers/psyduck.pal | 19 + .../palettes/followers/raichu.pal | 19 + .../palettes/followers/rapidash.pal | 19 + .../palettes/followers/raticate.pal | 19 + .../palettes/followers/rattata.pal | 19 + .../palettes/followers/rhydon.pal | 19 + .../palettes/followers/rhyhorn.pal | 19 + .../palettes/followers/sandshrew.pal | 19 + .../palettes/followers/sandslash.pal | 19 + .../palettes/followers/scyther.pal | 19 + .../palettes/followers/seadra.pal | 19 + .../palettes/followers/seaking.pal | 19 + .../object_events/palettes/followers/seel.pal | 19 + .../palettes/followers/shellder.pal | 19 + .../palettes/followers/slowbro.pal | 19 + .../palettes/followers/slowpoke.pal | 19 + .../palettes/followers/snorlax.pal | 19 + .../palettes/followers/spearow.pal | 19 + .../palettes/followers/squirtle.pal | 19 + .../palettes/followers/starmie.pal | 19 + .../palettes/followers/staryu.pal | 19 + .../palettes/followers/tangela.pal | 19 + .../palettes/followers/tauros.pal | 19 + .../palettes/followers/tentacool.pal | 19 + .../palettes/followers/tentacruel.pal | 19 + .../palettes/followers/vaporeon.pal | 19 + .../palettes/followers/venomoth.pal | 19 + .../palettes/followers/venonat.pal | 19 + .../palettes/followers/venusaur.pal | 19 + .../palettes/followers/victreebel.pal | 19 + .../palettes/followers/vileplume.pal | 19 + .../palettes/followers/voltorb.pal | 19 + .../palettes/followers/vulpix.pal | 19 + .../palettes/followers/wartortle.pal | 19 + .../palettes/followers/weedle.pal | 19 + .../palettes/followers/weepinbell.pal | 19 + .../palettes/followers/weezing.pal | 19 + .../palettes/followers/wigglytuff.pal | 19 + .../palettes/followers/zapdos.pal | 19 + .../palettes/followers/zubat.pal | 19 + .../pics/pokemon/followers/abra.png | Bin 0 -> 547 bytes .../pics/pokemon/followers/aerodactyl.png | Bin 0 -> 1037 bytes .../pics/pokemon/followers/alakazam.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/arbok.png | Bin 0 -> 707 bytes .../pics/pokemon/followers/arcanine.png | Bin 0 -> 1005 bytes .../pics/pokemon/followers/articuno.png | Bin 0 -> 1286 bytes .../pics/pokemon/followers/beedrill.png | Bin 0 -> 861 bytes .../pics/pokemon/followers/bellsprout.png | Bin 0 -> 436 bytes .../pics/pokemon/followers/blastoise.png | Bin 0 -> 955 bytes .../pics/pokemon/followers/bulbasaur.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/butterfree.png | Bin 0 -> 876 bytes .../pics/pokemon/followers/caterpie.png | Bin 0 -> 606 bytes .../pics/pokemon/followers/chansey.png | Bin 0 -> 558 bytes .../pics/pokemon/followers/charizard.png | Bin 0 -> 1110 bytes .../pics/pokemon/followers/charmander.png | Bin 0 -> 528 bytes .../pics/pokemon/followers/charmeleon.png | Bin 0 -> 612 bytes .../pics/pokemon/followers/clefable.png | Bin 0 -> 654 bytes .../pics/pokemon/followers/clefairy.png | Bin 0 -> 508 bytes .../pics/pokemon/followers/cloyster.png | Bin 0 -> 1096 bytes .../pics/pokemon/followers/cubone.png | Bin 0 -> 751 bytes .../pics/pokemon/followers/dewgong.png | Bin 0 -> 800 bytes .../pics/pokemon/followers/diglett.png | Bin 0 -> 470 bytes .../pics/pokemon/followers/ditto.png | Bin 0 -> 436 bytes .../pics/pokemon/followers/dodrio.png | Bin 0 -> 1088 bytes .../pics/pokemon/followers/doduo.png | Bin 0 -> 575 bytes .../pics/pokemon/followers/dragonair.png | Bin 0 -> 1103 bytes .../pics/pokemon/followers/dragonite.png | Bin 0 -> 1030 bytes .../pics/pokemon/followers/dratini.png | Bin 0 -> 693 bytes .../pics/pokemon/followers/drowzee.png | Bin 0 -> 574 bytes .../pics/pokemon/followers/dugtrio.png | Bin 0 -> 764 bytes .../pics/pokemon/followers/eevee.png | Bin 0 -> 546 bytes .../pics/pokemon/followers/ekans.png | Bin 0 -> 593 bytes .../pics/pokemon/followers/electabuzz.png | Bin 0 -> 692 bytes .../pics/pokemon/followers/electrode.png | Bin 0 -> 529 bytes .../pics/pokemon/followers/exeggcute.png | Bin 0 -> 875 bytes .../pics/pokemon/followers/exeggutor.png | Bin 0 -> 877 bytes .../pics/pokemon/followers/farfetchd.png | Bin 0 -> 811 bytes .../pics/pokemon/followers/fearow.png | Bin 0 -> 1072 bytes .../pics/pokemon/followers/flareon.png | Bin 0 -> 828 bytes .../pics/pokemon/followers/gastly.png | Bin 0 -> 716 bytes .../pics/pokemon/followers/gengar.png | Bin 0 -> 672 bytes .../pics/pokemon/followers/geodude.png | Bin 0 -> 426 bytes .../pics/pokemon/followers/gloom.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/golbat.png | Bin 0 -> 844 bytes .../pics/pokemon/followers/goldeen.png | Bin 0 -> 773 bytes .../pics/pokemon/followers/golduck.png | Bin 0 -> 644 bytes .../pics/pokemon/followers/golem.png | Bin 0 -> 778 bytes .../pics/pokemon/followers/graveler.png | Bin 0 -> 687 bytes .../pics/pokemon/followers/grimer.png | Bin 0 -> 593 bytes .../pics/pokemon/followers/growlithe.png | Bin 0 -> 652 bytes .../pics/pokemon/followers/gyarados.png | Bin 0 -> 1450 bytes .../pics/pokemon/followers/haunter.png | Bin 0 -> 617 bytes .../pics/pokemon/followers/hitmonchan.png | Bin 0 -> 656 bytes .../pics/pokemon/followers/hitmonlee.png | Bin 0 -> 607 bytes .../pics/pokemon/followers/horsea.png | Bin 0 -> 561 bytes .../pics/pokemon/followers/hypno.png | Bin 0 -> 684 bytes .../pics/pokemon/followers/ivysaur.png | Bin 0 -> 657 bytes .../pics/pokemon/followers/jigglypuff.png | Bin 0 -> 483 bytes .../pics/pokemon/followers/jolteon.png | Bin 0 -> 740 bytes .../pics/pokemon/followers/jynx.png | Bin 0 -> 880 bytes .../pics/pokemon/followers/kabuto.png | Bin 0 -> 509 bytes .../pics/pokemon/followers/kabutops.png | Bin 0 -> 833 bytes .../pics/pokemon/followers/kadabra.png | Bin 0 -> 766 bytes .../pics/pokemon/followers/kakuna.png | Bin 0 -> 474 bytes .../pics/pokemon/followers/kangaskhan.png | Bin 0 -> 841 bytes .../pics/pokemon/followers/kingler.png | Bin 0 -> 1156 bytes .../pics/pokemon/followers/koffing.png | Bin 0 -> 644 bytes .../pics/pokemon/followers/krabby.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/lapras.png | Bin 0 -> 940 bytes .../pics/pokemon/followers/lickitung.png | Bin 0 -> 642 bytes .../pics/pokemon/followers/machamp.png | Bin 0 -> 967 bytes .../pics/pokemon/followers/machoke.png | Bin 0 -> 678 bytes .../pics/pokemon/followers/machop.png | Bin 0 -> 476 bytes .../pics/pokemon/followers/magikarp.png | Bin 0 -> 840 bytes .../pics/pokemon/followers/magmar.png | Bin 0 -> 881 bytes .../pics/pokemon/followers/magnemite.png | Bin 0 -> 482 bytes .../pics/pokemon/followers/magneton.png | Bin 0 -> 841 bytes .../pics/pokemon/followers/mankey.png | Bin 0 -> 631 bytes .../pics/pokemon/followers/marowak.png | Bin 0 -> 855 bytes .../pics/pokemon/followers/meowth.png | Bin 0 -> 685 bytes .../pics/pokemon/followers/metapod.png | Bin 0 -> 454 bytes .../pics/pokemon/followers/mew.png | Bin 0 -> 618 bytes .../pics/pokemon/followers/mewtwo.png | Bin 0 -> 928 bytes .../pics/pokemon/followers/moltres.png | Bin 0 -> 1158 bytes .../pics/pokemon/followers/mr_mime.png | Bin 0 -> 743 bytes .../pics/pokemon/followers/muk.png | Bin 0 -> 728 bytes .../pics/pokemon/followers/nidoking.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/nidoqueen.png | Bin 0 -> 830 bytes .../pics/pokemon/followers/nidoran_f.png | Bin 0 -> 496 bytes .../pics/pokemon/followers/nidoran_m.png | Bin 0 -> 525 bytes .../pics/pokemon/followers/nidorina.png | Bin 0 -> 666 bytes .../pics/pokemon/followers/nidorino.png | Bin 0 -> 692 bytes .../pics/pokemon/followers/ninetales.png | Bin 0 -> 810 bytes .../pics/pokemon/followers/oddish.png | Bin 0 -> 408 bytes .../pics/pokemon/followers/omanyte.png | Bin 0 -> 603 bytes .../pics/pokemon/followers/omastar.png | Bin 0 -> 837 bytes .../pics/pokemon/followers/onix.png | Bin 0 -> 1023 bytes .../pics/pokemon/followers/paras.png | Bin 0 -> 625 bytes .../pics/pokemon/followers/parasect.png | Bin 0 -> 782 bytes .../pics/pokemon/followers/persian.png | Bin 0 -> 717 bytes .../pics/pokemon/followers/pidgeot.png | Bin 0 -> 1177 bytes .../pics/pokemon/followers/pidgeotto.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/pidgey.png | Bin 0 -> 444 bytes .../pics/pokemon/followers/pikachu.png | Bin 0 -> 550 bytes .../pics/pokemon/followers/pinsir.png | Bin 0 -> 788 bytes .../pics/pokemon/followers/poliwag.png | Bin 0 -> 526 bytes .../pics/pokemon/followers/poliwhirl.png | Bin 0 -> 569 bytes .../pics/pokemon/followers/poliwrath.png | Bin 0 -> 741 bytes .../pics/pokemon/followers/ponyta.png | Bin 0 -> 679 bytes .../pics/pokemon/followers/porygon.png | Bin 0 -> 612 bytes .../pics/pokemon/followers/primeape.png | Bin 0 -> 806 bytes .../pics/pokemon/followers/psyduck.png | Bin 0 -> 516 bytes .../pics/pokemon/followers/raichu.png | Bin 0 -> 805 bytes .../pics/pokemon/followers/rapidash.png | Bin 0 -> 917 bytes .../pics/pokemon/followers/raticate.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/rattata.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/rhydon.png | Bin 0 -> 790 bytes .../pics/pokemon/followers/rhyhorn.png | Bin 0 -> 628 bytes .../pics/pokemon/followers/sandshrew.png | Bin 0 -> 521 bytes .../pics/pokemon/followers/sandslash.png | Bin 0 -> 729 bytes .../pics/pokemon/followers/scyther.png | Bin 0 -> 827 bytes .../pics/pokemon/followers/seadra.png | Bin 0 -> 813 bytes .../pics/pokemon/followers/seaking.png | Bin 0 -> 1038 bytes .../pics/pokemon/followers/seel.png | Bin 0 -> 669 bytes .../pics/pokemon/followers/shellder.png | Bin 0 -> 577 bytes .../pics/pokemon/followers/slowbro.png | Bin 0 -> 808 bytes .../pics/pokemon/followers/slowpoke.png | Bin 0 -> 634 bytes .../pics/pokemon/followers/snorlax.png | Bin 0 -> 892 bytes .../pics/pokemon/followers/spearow.png | Bin 0 -> 471 bytes .../pics/pokemon/followers/squirtle.png | Bin 0 -> 439 bytes .../pics/pokemon/followers/starmie.png | Bin 0 -> 703 bytes .../pics/pokemon/followers/staryu.png | Bin 0 -> 504 bytes .../pics/pokemon/followers/tangela.png | Bin 0 -> 656 bytes .../pics/pokemon/followers/tauros.png | Bin 0 -> 909 bytes .../pics/pokemon/followers/tentacool.png | Bin 0 -> 636 bytes .../pics/pokemon/followers/tentacruel.png | Bin 0 -> 749 bytes .../pics/pokemon/followers/vaporeon.png | Bin 0 -> 888 bytes .../pics/pokemon/followers/venomoth.png | Bin 0 -> 1087 bytes .../pics/pokemon/followers/venonat.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/venusaur.png | Bin 0 -> 898 bytes .../pics/pokemon/followers/victreebel.png | Bin 0 -> 967 bytes .../pics/pokemon/followers/vileplume.png | Bin 0 -> 665 bytes .../pics/pokemon/followers/voltorb.png | Bin 0 -> 349 bytes .../pics/pokemon/followers/vulpix.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/wartortle.png | Bin 0 -> 698 bytes .../pics/pokemon/followers/weedle.png | Bin 0 -> 547 bytes .../pics/pokemon/followers/weepinbell.png | Bin 0 -> 698 bytes .../pics/pokemon/followers/weezing.png | Bin 0 -> 1158 bytes .../pics/pokemon/followers/wigglytuff.png | Bin 0 -> 602 bytes .../pics/pokemon/followers/zapdos.png | Bin 0 -> 1073 bytes .../pics/pokemon/followers/zubat.png | Bin 0 -> 642 bytes include/constants/event_object_movement.h | 9 +- include/constants/event_objects.h | 154 +- include/constants/follow_me.h | 19 + include/constants/global.h | 3 + include/event_data.h | 2 +- include/event_object_movement.h | 24 +- include/field_player_avatar.h | 14 +- include/field_screen_effect.h | 2 + include/field_specials.h | 1 + include/fldeff.h | 2 +- include/follow_me.h | 58 + include/global.fieldmap.h | 5 +- include/global.h | 26 + include/overworld.h | 1 + include/script.h | 3 + ld_script.txt | 2 + spritesheet_rules.mk | 453 +++++ src/battle_main.c | 6 + src/battle_pike.c | 2 +- src/battle_setup.c | 4 + src/bike.c | 67 + src/cable_car.c | 4 +- .../movement_action_func_tables.h | 16 + .../object_events/movement_type_func_tables.h | 7 + src/data/object_events/object_event_anims.h | 318 ++++ .../object_events/object_event_graphics.h | 303 ++++ .../object_event_graphics_info.h | 152 ++ .../object_event_graphics_info_pointers.h | 302 ++++ .../object_events/object_event_pic_tables.h | 1369 +++++++++++++++ src/event_data.c | 2 +- src/event_object_movement.c | 709 +++++++- src/field_control_avatar.c | 40 + src/field_effect.c | 102 ++ src/field_player_avatar.c | 30 +- src/field_screen_effect.c | 68 +- src/field_specials.c | 21 +- src/fldeff_rocksmash.c | 2 +- src/follow_me.c | 1472 +++++++++++++++++ src/new_game.c | 1 + src/overworld.c | 74 +- src/pokemon_storage_system.c | 2 + src/scrcmd.c | 78 +- src/script.c | 7 + 354 files changed, 8828 insertions(+), 153 deletions(-) create mode 100644 graphics/object_events/palettes/followers/abra.pal create mode 100644 graphics/object_events/palettes/followers/aerodactyl.pal create mode 100644 graphics/object_events/palettes/followers/alakazam.pal create mode 100644 graphics/object_events/palettes/followers/arbok.pal create mode 100644 graphics/object_events/palettes/followers/arcanine.pal create mode 100644 graphics/object_events/palettes/followers/articuno.pal create mode 100644 graphics/object_events/palettes/followers/beedrill.pal create mode 100644 graphics/object_events/palettes/followers/bellsprout.pal create mode 100644 graphics/object_events/palettes/followers/blastoise.pal create mode 100644 graphics/object_events/palettes/followers/bulbasaur1.pal create mode 100644 graphics/object_events/palettes/followers/butterfree.pal create mode 100644 graphics/object_events/palettes/followers/caterpie.pal create mode 100644 graphics/object_events/palettes/followers/chansey.pal create mode 100644 graphics/object_events/palettes/followers/charizard.pal create mode 100644 graphics/object_events/palettes/followers/charmander.pal create mode 100644 graphics/object_events/palettes/followers/charmeleon.pal create mode 100644 graphics/object_events/palettes/followers/clefable.pal create mode 100644 graphics/object_events/palettes/followers/clefairy.pal create mode 100644 graphics/object_events/palettes/followers/cloyster.pal create mode 100644 graphics/object_events/palettes/followers/cubone.pal create mode 100644 graphics/object_events/palettes/followers/dewgong.pal create mode 100644 graphics/object_events/palettes/followers/diglett.pal create mode 100644 graphics/object_events/palettes/followers/ditto.pal create mode 100644 graphics/object_events/palettes/followers/dodrio.pal create mode 100644 graphics/object_events/palettes/followers/doduo.pal create mode 100644 graphics/object_events/palettes/followers/dragonair.pal create mode 100644 graphics/object_events/palettes/followers/dragonite.pal create mode 100644 graphics/object_events/palettes/followers/dratini.pal create mode 100644 graphics/object_events/palettes/followers/drowzee.pal create mode 100644 graphics/object_events/palettes/followers/dugtrio.pal create mode 100644 graphics/object_events/palettes/followers/eevee.pal create mode 100644 graphics/object_events/palettes/followers/ekans.pal create mode 100644 graphics/object_events/palettes/followers/electabuzz.pal create mode 100644 graphics/object_events/palettes/followers/electrode.pal create mode 100644 graphics/object_events/palettes/followers/exeggcute.pal create mode 100644 graphics/object_events/palettes/followers/exeggutor.pal create mode 100644 graphics/object_events/palettes/followers/farfetchd.pal create mode 100644 graphics/object_events/palettes/followers/fearow.pal create mode 100644 graphics/object_events/palettes/followers/flareon.pal create mode 100644 graphics/object_events/palettes/followers/gastly.pal create mode 100644 graphics/object_events/palettes/followers/gengar.pal create mode 100644 graphics/object_events/palettes/followers/geodude.pal create mode 100644 graphics/object_events/palettes/followers/gloom.pal create mode 100644 graphics/object_events/palettes/followers/golbat.pal create mode 100644 graphics/object_events/palettes/followers/goldeen.pal create mode 100644 graphics/object_events/palettes/followers/golduck.pal create mode 100644 graphics/object_events/palettes/followers/golem.pal create mode 100644 graphics/object_events/palettes/followers/graveler.pal create mode 100644 graphics/object_events/palettes/followers/grimer.pal create mode 100644 graphics/object_events/palettes/followers/growlithe.pal create mode 100644 graphics/object_events/palettes/followers/gyarados.pal create mode 100644 graphics/object_events/palettes/followers/haunter.pal create mode 100644 graphics/object_events/palettes/followers/hitmonchan.pal create mode 100644 graphics/object_events/palettes/followers/hitmonlee.pal create mode 100644 graphics/object_events/palettes/followers/horsea.pal create mode 100644 graphics/object_events/palettes/followers/hypno.pal create mode 100644 graphics/object_events/palettes/followers/ivysaur.pal create mode 100644 graphics/object_events/palettes/followers/jigglypuff.pal create mode 100644 graphics/object_events/palettes/followers/jolteon.pal create mode 100644 graphics/object_events/palettes/followers/jynx.pal create mode 100644 graphics/object_events/palettes/followers/kabuto.pal create mode 100644 graphics/object_events/palettes/followers/kabutops.pal create mode 100644 graphics/object_events/palettes/followers/kadabra.pal create mode 100644 graphics/object_events/palettes/followers/kakuna.pal create mode 100644 graphics/object_events/palettes/followers/kangaskhan.pal create mode 100644 graphics/object_events/palettes/followers/kingler.pal create mode 100644 graphics/object_events/palettes/followers/koffing.pal create mode 100644 graphics/object_events/palettes/followers/krabby.pal create mode 100644 graphics/object_events/palettes/followers/lapras.pal create mode 100644 graphics/object_events/palettes/followers/lickitung.pal create mode 100644 graphics/object_events/palettes/followers/machamp.pal create mode 100644 graphics/object_events/palettes/followers/machoke.pal create mode 100644 graphics/object_events/palettes/followers/machop.pal create mode 100644 graphics/object_events/palettes/followers/magikarp.pal create mode 100644 graphics/object_events/palettes/followers/magmar.pal create mode 100644 graphics/object_events/palettes/followers/magnemite.pal create mode 100644 graphics/object_events/palettes/followers/magneton.pal create mode 100644 graphics/object_events/palettes/followers/mankey.pal create mode 100644 graphics/object_events/palettes/followers/marowak.pal create mode 100644 graphics/object_events/palettes/followers/meowth.pal create mode 100644 graphics/object_events/palettes/followers/metapod.pal create mode 100644 graphics/object_events/palettes/followers/mew.pal create mode 100644 graphics/object_events/palettes/followers/mewtwo.pal create mode 100644 graphics/object_events/palettes/followers/moltres.pal create mode 100644 graphics/object_events/palettes/followers/mr_mime.pal create mode 100644 graphics/object_events/palettes/followers/muk.pal create mode 100644 graphics/object_events/palettes/followers/nidoking.pal create mode 100644 graphics/object_events/palettes/followers/nidoqueen.pal create mode 100644 graphics/object_events/palettes/followers/nidoran_f.pal create mode 100644 graphics/object_events/palettes/followers/nidoran_m.pal create mode 100644 graphics/object_events/palettes/followers/nidorina.pal create mode 100644 graphics/object_events/palettes/followers/nidorino.pal create mode 100644 graphics/object_events/palettes/followers/ninetales.pal create mode 100644 graphics/object_events/palettes/followers/oddish.pal create mode 100644 graphics/object_events/palettes/followers/omanyte.pal create mode 100644 graphics/object_events/palettes/followers/omastar.pal create mode 100644 graphics/object_events/palettes/followers/onix.pal create mode 100644 graphics/object_events/palettes/followers/paras.pal create mode 100644 graphics/object_events/palettes/followers/parasect.pal create mode 100644 graphics/object_events/palettes/followers/persian.pal create mode 100644 graphics/object_events/palettes/followers/pidgeot.pal create mode 100644 graphics/object_events/palettes/followers/pidgeotto.pal create mode 100644 graphics/object_events/palettes/followers/pidgey.pal create mode 100644 graphics/object_events/palettes/followers/pikachu.pal create mode 100644 graphics/object_events/palettes/followers/pinsir.pal create mode 100644 graphics/object_events/palettes/followers/poliwag.pal create mode 100644 graphics/object_events/palettes/followers/poliwhirl.pal create mode 100644 graphics/object_events/palettes/followers/poliwrath.pal create mode 100644 graphics/object_events/palettes/followers/ponyta.pal create mode 100644 graphics/object_events/palettes/followers/porygon.pal create mode 100644 graphics/object_events/palettes/followers/primeape.pal create mode 100644 graphics/object_events/palettes/followers/psyduck.pal create mode 100644 graphics/object_events/palettes/followers/raichu.pal create mode 100644 graphics/object_events/palettes/followers/rapidash.pal create mode 100644 graphics/object_events/palettes/followers/raticate.pal create mode 100644 graphics/object_events/palettes/followers/rattata.pal create mode 100644 graphics/object_events/palettes/followers/rhydon.pal create mode 100644 graphics/object_events/palettes/followers/rhyhorn.pal create mode 100644 graphics/object_events/palettes/followers/sandshrew.pal create mode 100644 graphics/object_events/palettes/followers/sandslash.pal create mode 100644 graphics/object_events/palettes/followers/scyther.pal create mode 100644 graphics/object_events/palettes/followers/seadra.pal create mode 100644 graphics/object_events/palettes/followers/seaking.pal create mode 100644 graphics/object_events/palettes/followers/seel.pal create mode 100644 graphics/object_events/palettes/followers/shellder.pal create mode 100644 graphics/object_events/palettes/followers/slowbro.pal create mode 100644 graphics/object_events/palettes/followers/slowpoke.pal create mode 100644 graphics/object_events/palettes/followers/snorlax.pal create mode 100644 graphics/object_events/palettes/followers/spearow.pal create mode 100644 graphics/object_events/palettes/followers/squirtle.pal create mode 100644 graphics/object_events/palettes/followers/starmie.pal create mode 100644 graphics/object_events/palettes/followers/staryu.pal create mode 100644 graphics/object_events/palettes/followers/tangela.pal create mode 100644 graphics/object_events/palettes/followers/tauros.pal create mode 100644 graphics/object_events/palettes/followers/tentacool.pal create mode 100644 graphics/object_events/palettes/followers/tentacruel.pal create mode 100644 graphics/object_events/palettes/followers/vaporeon.pal create mode 100644 graphics/object_events/palettes/followers/venomoth.pal create mode 100644 graphics/object_events/palettes/followers/venonat.pal create mode 100644 graphics/object_events/palettes/followers/venusaur.pal create mode 100644 graphics/object_events/palettes/followers/victreebel.pal create mode 100644 graphics/object_events/palettes/followers/vileplume.pal create mode 100644 graphics/object_events/palettes/followers/voltorb.pal create mode 100644 graphics/object_events/palettes/followers/vulpix.pal create mode 100644 graphics/object_events/palettes/followers/wartortle.pal create mode 100644 graphics/object_events/palettes/followers/weedle.pal create mode 100644 graphics/object_events/palettes/followers/weepinbell.pal create mode 100644 graphics/object_events/palettes/followers/weezing.pal create mode 100644 graphics/object_events/palettes/followers/wigglytuff.pal create mode 100644 graphics/object_events/palettes/followers/zapdos.pal create mode 100644 graphics/object_events/palettes/followers/zubat.pal create mode 100644 graphics/object_events/pics/pokemon/followers/abra.png create mode 100644 graphics/object_events/pics/pokemon/followers/aerodactyl.png create mode 100644 graphics/object_events/pics/pokemon/followers/alakazam.png create mode 100644 graphics/object_events/pics/pokemon/followers/arbok.png create mode 100644 graphics/object_events/pics/pokemon/followers/arcanine.png create mode 100644 graphics/object_events/pics/pokemon/followers/articuno.png create mode 100644 graphics/object_events/pics/pokemon/followers/beedrill.png create mode 100644 graphics/object_events/pics/pokemon/followers/bellsprout.png create mode 100644 graphics/object_events/pics/pokemon/followers/blastoise.png create mode 100644 graphics/object_events/pics/pokemon/followers/bulbasaur.png create mode 100644 graphics/object_events/pics/pokemon/followers/butterfree.png create mode 100644 graphics/object_events/pics/pokemon/followers/caterpie.png create mode 100644 graphics/object_events/pics/pokemon/followers/chansey.png create mode 100644 graphics/object_events/pics/pokemon/followers/charizard.png create mode 100644 graphics/object_events/pics/pokemon/followers/charmander.png create mode 100644 graphics/object_events/pics/pokemon/followers/charmeleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/clefable.png create mode 100644 graphics/object_events/pics/pokemon/followers/clefairy.png create mode 100644 graphics/object_events/pics/pokemon/followers/cloyster.png create mode 100644 graphics/object_events/pics/pokemon/followers/cubone.png create mode 100644 graphics/object_events/pics/pokemon/followers/dewgong.png create mode 100644 graphics/object_events/pics/pokemon/followers/diglett.png create mode 100644 graphics/object_events/pics/pokemon/followers/ditto.png create mode 100644 graphics/object_events/pics/pokemon/followers/dodrio.png create mode 100644 graphics/object_events/pics/pokemon/followers/doduo.png create mode 100644 graphics/object_events/pics/pokemon/followers/dragonair.png create mode 100644 graphics/object_events/pics/pokemon/followers/dragonite.png create mode 100644 graphics/object_events/pics/pokemon/followers/dratini.png create mode 100644 graphics/object_events/pics/pokemon/followers/drowzee.png create mode 100644 graphics/object_events/pics/pokemon/followers/dugtrio.png create mode 100644 graphics/object_events/pics/pokemon/followers/eevee.png create mode 100644 graphics/object_events/pics/pokemon/followers/ekans.png create mode 100644 graphics/object_events/pics/pokemon/followers/electabuzz.png create mode 100644 graphics/object_events/pics/pokemon/followers/electrode.png create mode 100644 graphics/object_events/pics/pokemon/followers/exeggcute.png create mode 100644 graphics/object_events/pics/pokemon/followers/exeggutor.png create mode 100644 graphics/object_events/pics/pokemon/followers/farfetchd.png create mode 100644 graphics/object_events/pics/pokemon/followers/fearow.png create mode 100644 graphics/object_events/pics/pokemon/followers/flareon.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastly.png create mode 100644 graphics/object_events/pics/pokemon/followers/gengar.png create mode 100644 graphics/object_events/pics/pokemon/followers/geodude.png create mode 100644 graphics/object_events/pics/pokemon/followers/gloom.png create mode 100644 graphics/object_events/pics/pokemon/followers/golbat.png create mode 100644 graphics/object_events/pics/pokemon/followers/goldeen.png create mode 100644 graphics/object_events/pics/pokemon/followers/golduck.png create mode 100644 graphics/object_events/pics/pokemon/followers/golem.png create mode 100644 graphics/object_events/pics/pokemon/followers/graveler.png create mode 100644 graphics/object_events/pics/pokemon/followers/grimer.png create mode 100644 graphics/object_events/pics/pokemon/followers/growlithe.png create mode 100644 graphics/object_events/pics/pokemon/followers/gyarados.png create mode 100644 graphics/object_events/pics/pokemon/followers/haunter.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmonchan.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmonlee.png create mode 100644 graphics/object_events/pics/pokemon/followers/horsea.png create mode 100644 graphics/object_events/pics/pokemon/followers/hypno.png create mode 100644 graphics/object_events/pics/pokemon/followers/ivysaur.png create mode 100644 graphics/object_events/pics/pokemon/followers/jigglypuff.png create mode 100644 graphics/object_events/pics/pokemon/followers/jolteon.png create mode 100644 graphics/object_events/pics/pokemon/followers/jynx.png create mode 100644 graphics/object_events/pics/pokemon/followers/kabuto.png create mode 100644 graphics/object_events/pics/pokemon/followers/kabutops.png create mode 100644 graphics/object_events/pics/pokemon/followers/kadabra.png create mode 100644 graphics/object_events/pics/pokemon/followers/kakuna.png create mode 100644 graphics/object_events/pics/pokemon/followers/kangaskhan.png create mode 100644 graphics/object_events/pics/pokemon/followers/kingler.png create mode 100644 graphics/object_events/pics/pokemon/followers/koffing.png create mode 100644 graphics/object_events/pics/pokemon/followers/krabby.png create mode 100644 graphics/object_events/pics/pokemon/followers/lapras.png create mode 100644 graphics/object_events/pics/pokemon/followers/lickitung.png create mode 100644 graphics/object_events/pics/pokemon/followers/machamp.png create mode 100644 graphics/object_events/pics/pokemon/followers/machoke.png create mode 100644 graphics/object_events/pics/pokemon/followers/machop.png create mode 100644 graphics/object_events/pics/pokemon/followers/magikarp.png create mode 100644 graphics/object_events/pics/pokemon/followers/magmar.png create mode 100644 graphics/object_events/pics/pokemon/followers/magnemite.png create mode 100644 graphics/object_events/pics/pokemon/followers/magneton.png create mode 100644 graphics/object_events/pics/pokemon/followers/mankey.png create mode 100644 graphics/object_events/pics/pokemon/followers/marowak.png create mode 100644 graphics/object_events/pics/pokemon/followers/meowth.png create mode 100644 graphics/object_events/pics/pokemon/followers/metapod.png create mode 100644 graphics/object_events/pics/pokemon/followers/mew.png create mode 100644 graphics/object_events/pics/pokemon/followers/mewtwo.png create mode 100644 graphics/object_events/pics/pokemon/followers/moltres.png create mode 100644 graphics/object_events/pics/pokemon/followers/mr_mime.png create mode 100644 graphics/object_events/pics/pokemon/followers/muk.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoking.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoqueen.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoran_f.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoran_m.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidorina.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidorino.png create mode 100644 graphics/object_events/pics/pokemon/followers/ninetales.png create mode 100644 graphics/object_events/pics/pokemon/followers/oddish.png create mode 100644 graphics/object_events/pics/pokemon/followers/omanyte.png create mode 100644 graphics/object_events/pics/pokemon/followers/omastar.png create mode 100644 graphics/object_events/pics/pokemon/followers/onix.png create mode 100644 graphics/object_events/pics/pokemon/followers/paras.png create mode 100644 graphics/object_events/pics/pokemon/followers/parasect.png create mode 100644 graphics/object_events/pics/pokemon/followers/persian.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgeot.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgeotto.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgey.png create mode 100644 graphics/object_events/pics/pokemon/followers/pikachu.png create mode 100644 graphics/object_events/pics/pokemon/followers/pinsir.png create mode 100644 graphics/object_events/pics/pokemon/followers/poliwag.png create mode 100644 graphics/object_events/pics/pokemon/followers/poliwhirl.png create mode 100644 graphics/object_events/pics/pokemon/followers/poliwrath.png create mode 100644 graphics/object_events/pics/pokemon/followers/ponyta.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygon.png create mode 100644 graphics/object_events/pics/pokemon/followers/primeape.png create mode 100644 graphics/object_events/pics/pokemon/followers/psyduck.png create mode 100644 graphics/object_events/pics/pokemon/followers/raichu.png create mode 100644 graphics/object_events/pics/pokemon/followers/rapidash.png create mode 100644 graphics/object_events/pics/pokemon/followers/raticate.png create mode 100644 graphics/object_events/pics/pokemon/followers/rattata.png create mode 100644 graphics/object_events/pics/pokemon/followers/rhydon.png create mode 100644 graphics/object_events/pics/pokemon/followers/rhyhorn.png create mode 100644 graphics/object_events/pics/pokemon/followers/sandshrew.png create mode 100644 graphics/object_events/pics/pokemon/followers/sandslash.png create mode 100644 graphics/object_events/pics/pokemon/followers/scyther.png create mode 100644 graphics/object_events/pics/pokemon/followers/seadra.png create mode 100644 graphics/object_events/pics/pokemon/followers/seaking.png create mode 100644 graphics/object_events/pics/pokemon/followers/seel.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellder.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowbro.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowpoke.png create mode 100644 graphics/object_events/pics/pokemon/followers/snorlax.png create mode 100644 graphics/object_events/pics/pokemon/followers/spearow.png create mode 100644 graphics/object_events/pics/pokemon/followers/squirtle.png create mode 100644 graphics/object_events/pics/pokemon/followers/starmie.png create mode 100644 graphics/object_events/pics/pokemon/followers/staryu.png create mode 100644 graphics/object_events/pics/pokemon/followers/tangela.png create mode 100644 graphics/object_events/pics/pokemon/followers/tauros.png create mode 100644 graphics/object_events/pics/pokemon/followers/tentacool.png create mode 100644 graphics/object_events/pics/pokemon/followers/tentacruel.png create mode 100644 graphics/object_events/pics/pokemon/followers/vaporeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/venomoth.png create mode 100644 graphics/object_events/pics/pokemon/followers/venonat.png create mode 100644 graphics/object_events/pics/pokemon/followers/venusaur.png create mode 100644 graphics/object_events/pics/pokemon/followers/victreebel.png create mode 100644 graphics/object_events/pics/pokemon/followers/vileplume.png create mode 100644 graphics/object_events/pics/pokemon/followers/voltorb.png create mode 100644 graphics/object_events/pics/pokemon/followers/vulpix.png create mode 100644 graphics/object_events/pics/pokemon/followers/wartortle.png create mode 100644 graphics/object_events/pics/pokemon/followers/weedle.png create mode 100644 graphics/object_events/pics/pokemon/followers/weepinbell.png create mode 100644 graphics/object_events/pics/pokemon/followers/weezing.png create mode 100644 graphics/object_events/pics/pokemon/followers/wigglytuff.png create mode 100644 graphics/object_events/pics/pokemon/followers/zapdos.png create mode 100644 graphics/object_events/pics/pokemon/followers/zubat.png create mode 100644 include/constants/follow_me.h create mode 100644 include/follow_me.h create mode 100644 src/follow_me.c diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 28f010ef2..ee98219c5 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1730,6 +1730,28 @@ .2byte \quantity .endm + @ sets an NPC up to follow the player + .macro setfollower localId:req, flags:req + .byte 0xe3 + .byte \localId + .2byte \flags + .endm + + @ remove the following NPC (assumes there will only ever be one) + .macro destroyfollower + .byte 0xe4 + .endm + + @ makes the player and follower face one another + .macro facefollower + .byte 0xe5 + .endm + + @ checks if you have a follower. returns the result to VAR_RESULT + .macro checkfollower + .byte 0xe6 + .endm + @ Supplementary @@ -1932,3 +1954,21 @@ waitbuttonpress closebraillemessage .endm + + .macro pokemonfaceplayer objectId=254 + setvar VAR_UNUSED_0x8014, \objectId + callnative ScrCmd_pokemonfaceplayer + .endm + + .macro updatefollowerpokemongraphic + setvar VAR_UNUSED_0x8014, 1 + callnative UpdateFollowerPokemonGraphic + .endm + + .macro hidefollower + callnative HideFollower + .endm + + .macro showfollower + callnative ShowFollower + .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc index 74ed06917..c99167233 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -15,7 +15,8 @@ .endm .macro object_event index:req, gfx:req, replacement: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, \gfx, \replacement, 0 + .byte \index, 0 + .2byte \gfx .2byte \x .2byte \y .byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 diff --git a/data/event_scripts.s b/data/event_scripts.s index 1f3db6aa2..66877b25c 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -53,6 +53,7 @@ #include "constants/union_room.h" #include "constants/vars.h" #include "constants/weather.h" +#include "constants/follow_me.h" .include "asm/macros.inc" .include "asm/macros/event.inc" .include "constants/constants.inc" diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index deee3e264..c7bf196ef 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -91,6 +91,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LittlerootTown_ProfessorBirchsLab_EventScript_Chikorita", "flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CHIKORITA" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_1", + "x": 6, + "y": 6, + "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": "FLAG_UNUSED_0x020" } ], "warp_events": [ diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 7c7f47d2e..e7c3bf5dc 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -29,6 +29,7 @@ LittlerootTown_ProfessorBirchsLab_MapScripts:: LittlerootTown_ProfessorBirchsLab_OnTransition: call Common_EventScript_SetupRivalGfxId call ProfBirch_EventScript_UpdateLocation + setflag FLAG_UNUSED_0x020 goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 4, LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout goto_if_eq VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 3, LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter @@ -139,6 +140,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: msgbox LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou, MSGBOX_DEFAULT clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 + addobject 7 + setfollower 7, 0x7E + updatefollowerpokemongraphic releaseall end diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 48ec7918a..7d7c028f2 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -227,6 +227,10 @@ gScriptCmdTable:: .4byte ScrCmd_warpwhitefade @ 0xe0 .4byte ScrCmd_buffercontestname @ 0xe1 .4byte ScrCmd_bufferitemnameplural @ 0xe2 + .4byte ScrCmd_setfollower @ 0xe3 + .4byte ScrCmd_destroyfollower @ 0xe4 + .4byte ScrCmd_facefollower @ 0xe5 + .4byte ScrCmd_checkfollower @ 0xe6 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 3e99fc08e..14570cf99 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -287,3 +287,69 @@ EventScript_FailSweetScent:: Text_FailSweetScent: .string "Looks like there's nothing here…$" + +FollowerPositionFixScript:: + setvar 0x8000 0x0 + callnative FollowerTrainerSightingPositionFix + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + call WalkCall + setvar 0x8000 0x1 + callnative FollowerTrainerSightingPositionFix +FollowerPositionFixScriptReturn: + return + +FollowerIntoPlayerScript:: + setvar 0x8000 0x0 + callnative FollowerIntoPlayer + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + setvar 0x8005 0xFE @ follower + call WalkCall + setvar 0x8000 0x1 + callnative FollowerIntoPlayer + return + +WalkCall: + compare VAR_RESULT 0x0 + call_if_eq WalkDownCall + compare VAR_RESULT 0x1 + call_if_eq WalkUpCall + compare VAR_RESULT 0x2 + call_if_eq WalkLeftCall + compare VAR_RESULT 0x3 + call_if_eq WalkRightCall + waitmovement 0x8005 + return + +WalkDownCall: + applymovement 0x8005 WalkDown + return + +WalkUpCall: + applymovement 0x8005 WalkUp + return + +WalkLeftCall: + applymovement 0x8005 WalkLeft + return + +WalkRightCall: + applymovement 0x8005 WalkRight + return + +WalkDown: + walk_down + step_end + +WalkUp: + walk_up + step_end + +WalkLeft: + walk_left + step_end + +WalkRight: + walk_right + step_end diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 64ccdfa77..c08acd26a 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,6 +33,7 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: + hidefollower applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL @@ -40,6 +41,8 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn:: applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown waitmovement 0 special HealPlayerParty + updatefollowerpokemongraphic + showfollower return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: diff --git a/gflib/sprite.c b/gflib/sprite.c index f05fe76f2..3805409a8 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -2,6 +2,7 @@ #include "sprite.h" #include "main.h" #include "palette.h" +#include "global.fieldmap.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -970,6 +971,29 @@ void ContinueAnim(struct Sprite *sprite) } } +bool8 IsFlyingPokemonGraphic(u16 graphicsId) +{ + switch(graphicsId) + { + case 250: + case 253: + case 255: + case 256: + case 260: + case 279: + case 280: + case 287: + case 380: + case 382: + case 383: + case 384: + case 387: + return TRUE; + default: + return FALSE; + } +} + void AnimCmd_frame(struct Sprite *sprite) { s16 imageValue; @@ -987,6 +1011,15 @@ void AnimCmd_frame(struct Sprite *sprite) sprite->animDelayCounter = duration; + if(gSaveBlock2Ptr->follower.inProgress && sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && sprite->y2 >= -1 + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + { + if(sprite->animCmdIndex % 2 == 0) + sprite->y2 = 0; + else + sprite->y2 = -1; + } + if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); @@ -1020,6 +1053,15 @@ void AnimCmd_jump(struct Sprite *sprite) duration--; sprite->animDelayCounter = duration; + + if(gSaveBlock2Ptr->follower.inProgress && sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && sprite->y2 >= -1 + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + { + if(sprite->animCmdIndex % 2 == 0) + sprite->y2 = 0; + else + sprite->y2 = -1; + } if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); diff --git a/graphics/object_events/palettes/followers/abra.pal b/graphics/object_events/palettes/followers/abra.pal new file mode 100644 index 000000000..dd409648b --- /dev/null +++ b/graphics/object_events/palettes/followers/abra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +1 1 1 +73 57 25 +145 121 97 +249 217 97 +121 97 57 +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/graphics/object_events/palettes/followers/aerodactyl.pal b/graphics/object_events/palettes/followers/aerodactyl.pal new file mode 100644 index 000000000..57c8403dd --- /dev/null +++ b/graphics/object_events/palettes/followers/aerodactyl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 201 209 +73 65 97 +145 137 201 +129 113 177 +177 177 225 +97 17 17 +233 233 249 +129 89 129 +185 137 193 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/alakazam.pal b/graphics/object_events/palettes/followers/alakazam.pal new file mode 100644 index 000000000..ba8f7100d --- /dev/null +++ b/graphics/object_events/palettes/followers/alakazam.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +177 177 185 +105 81 57 +1 1 1 +249 241 193 +145 121 57 +73 57 25 +249 217 97 +233 233 249 +145 121 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arbok.pal b/graphics/object_events/palettes/followers/arbok.pal new file mode 100644 index 000000000..a2c93dc60 --- /dev/null +++ b/graphics/object_events/palettes/followers/arbok.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 81 +121 89 169 +57 49 81 +177 129 193 +193 65 65 +1 1 1 +65 65 65 +233 233 249 +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/palettes/followers/arcanine.pal b/graphics/object_events/palettes/followers/arcanine.pal new file mode 100644 index 000000000..5707ca4a6 --- /dev/null +++ b/graphics/object_events/palettes/followers/arcanine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 105 +145 73 33 +225 193 145 +185 81 25 +73 49 25 +177 177 209 +89 89 89 +1 1 1 +233 233 249 +249 105 49 +121 89 57 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/articuno.pal b/graphics/object_events/palettes/followers/articuno.pal new file mode 100644 index 000000000..417a8deb9 --- /dev/null +++ b/graphics/object_events/palettes/followers/articuno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +49 177 193 +161 225 249 +57 57 41 +57 129 137 +177 177 209 +217 249 249 +49 105 153 +161 33 49 +201 185 73 +1 1 1 +121 201 249 +105 161 233 +49 65 89 +233 233 249 diff --git a/graphics/object_events/palettes/followers/beedrill.pal b/graphics/object_events/palettes/followers/beedrill.pal new file mode 100644 index 000000000..e4cedddf9 --- /dev/null +++ b/graphics/object_events/palettes/followers/beedrill.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 41 +193 193 193 +105 81 41 +145 145 145 +193 41 65 +249 209 65 +233 233 249 +81 81 81 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bellsprout.pal b/graphics/object_events/palettes/followers/bellsprout.pal new file mode 100644 index 000000000..4084780e4 --- /dev/null +++ b/graphics/object_events/palettes/followers/bellsprout.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +1 1 1 +81 65 49 +241 121 161 +137 217 81 +169 65 113 +121 9 5 +185 161 49 +241 225 73 +65 89 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blastoise.pal b/graphics/object_events/palettes/followers/blastoise.pal new file mode 100644 index 000000000..020dadbe0 --- /dev/null +++ b/graphics/object_events/palettes/followers/blastoise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 81 +145 137 233 +129 81 9 +241 201 81 +97 97 169 +49 57 89 +137 137 137 +233 233 249 +81 81 81 +185 185 185 +1 1 1 +73 41 9 +177 113 25 +201 169 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bulbasaur1.pal b/graphics/object_events/palettes/followers/bulbasaur1.pal new file mode 100644 index 000000000..96cbecffe --- /dev/null +++ b/graphics/object_events/palettes/followers/bulbasaur1.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 169 17 +201 201 201 +65 65 65 +65 153 81 +105 17 25 +105 209 121 +137 225 33 +233 233 249 +1 1 1 +185 49 25 +65 97 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/butterfree.pal b/graphics/object_events/palettes/followers/butterfree.pal new file mode 100644 index 000000000..9d7c7c4e3 --- /dev/null +++ b/graphics/object_events/palettes/followers/butterfree.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 145 +50 65 145 +105 201 249 +97 97 97 +249 113 137 +193 40 65 +81 145 225 +185 193 225 +65 40 89 +161 105 225 +233 233 249 +113 81 201 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/caterpie.pal b/graphics/object_events/palettes/followers/caterpie.pal new file mode 100644 index 000000000..86d3379ec --- /dev/null +++ b/graphics/object_events/palettes/followers/caterpie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 177 +105 153 41 +169 233 65 +65 89 33 +249 121 113 +81 81 81 +161 49 73 +169 153 65 +249 233 97 +1 1 1 +129 97 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chansey.pal b/graphics/object_events/palettes/followers/chansey.pal new file mode 100644 index 000000000..72f30866b --- /dev/null +++ b/graphics/object_events/palettes/followers/chansey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +233 193 217 +105 57 89 +217 137 185 +153 89 129 +233 233 249 +169 185 209 +225 97 121 +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/palettes/followers/charizard.pal b/graphics/object_events/palettes/followers/charizard.pal new file mode 100644 index 000000000..e817695ce --- /dev/null +++ b/graphics/object_events/palettes/followers/charizard.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +161 161 161 +97 49 1 +249 185 17 +41 73 89 +201 89 41 +1 1 1 +145 65 33 +217 217 249 +249 121 57 +193 17 33 +241 209 113 +217 169 49 +97 65 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmander.pal b/graphics/object_events/palettes/followers/charmander.pal new file mode 100644 index 000000000..8df0fb2ef --- /dev/null +++ b/graphics/object_events/palettes/followers/charmander.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +167 177 129 +249 137 57 +97 65 33 +233 233 249 +1 1 1 +185 89 33 +225 41 41 +217 169 49 +41 73 89 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmeleon.pal b/graphics/object_events/palettes/followers/charmeleon.pal new file mode 100644 index 000000000..108320b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/charmeleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +41 105 129 +177 185 249 +241 209 113 +201 17 41 +145 145 145 +185 65 57 +97 25 33 +233 233 249 +249 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clefable.pal b/graphics/object_events/palettes/followers/clefable.pal new file mode 100644 index 000000000..a9968049c --- /dev/null +++ b/graphics/object_events/palettes/followers/clefable.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 129 169 +73 57 57 +1 1 1 +217 81 121 +121 97 73 +201 201 201 +225 145 153 +121 57 73 +249 193 193 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clefairy.pal b/graphics/object_events/palettes/followers/clefairy.pal new file mode 100644 index 000000000..e207e246c --- /dev/null +++ b/graphics/object_events/palettes/followers/clefairy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 57 65 +233 233 249 +121 89 57 +169 169 169 +161 81 97 +185 105 129 +241 153 169 +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/palettes/followers/cloyster.pal b/graphics/object_events/palettes/followers/cloyster.pal new file mode 100644 index 000000000..b15a51ee6 --- /dev/null +++ b/graphics/object_events/palettes/followers/cloyster.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +97 97 97 +57 57 57 +233 233 249 +193 177 233 +145 113 185 +41 41 49 +1 1 1 +81 81 81 +97 89 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cubone.pal b/graphics/object_events/palettes/followers/cubone.pal new file mode 100644 index 000000000..19517af25 --- /dev/null +++ b/graphics/object_events/palettes/followers/cubone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 137 89 +193 193 193 +1 1 1 +137 97 25 +217 225 225 +161 161 161 +73 49 49 +129 129 129 +73 73 73 +209 177 145 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dewgong.pal b/graphics/object_events/palettes/followers/dewgong.pal new file mode 100644 index 000000000..0897c29ff --- /dev/null +++ b/graphics/object_events/palettes/followers/dewgong.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 185 +177 185 217 +49 49 81 +225 225 241 +1 1 1 +73 81 121 +233 233 249 +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/graphics/object_events/palettes/followers/diglett.pal b/graphics/object_events/palettes/followers/diglett.pal new file mode 100644 index 000000000..761624524 --- /dev/null +++ b/graphics/object_events/palettes/followers/diglett.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +113 113 113 +65 49 17 +1 1 1 +65 65 65 +169 169 169 +153 33 73 +153 121 57 +209 65 105 +233 113 153 +201 201 201 +113 73 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ditto.pal b/graphics/object_events/palettes/followers/ditto.pal new file mode 100644 index 000000000..c366583be --- /dev/null +++ b/graphics/object_events/palettes/followers/ditto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 177 +185 145 225 +113 81 145 +65 65 65 +1 1 1 +225 177 241 +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/graphics/object_events/palettes/followers/dodrio.pal b/graphics/object_events/palettes/followers/dodrio.pal new file mode 100644 index 000000000..183414bf0 --- /dev/null +++ b/graphics/object_events/palettes/followers/dodrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +121 81 41 +177 177 153 +129 129 129 +65 49 33 +137 97 41 +193 161 65 +1 1 1 +233 233 249 +97 25 33 +185 65 89 +225 129 145 +249 177 49 +57 57 57 +137 113 41 diff --git a/graphics/object_events/palettes/followers/doduo.pal b/graphics/object_events/palettes/followers/doduo.pal new file mode 100644 index 000000000..eea5b6958 --- /dev/null +++ b/graphics/object_events/palettes/followers/doduo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 97 41 +1 1 1 +113 105 97 +73 57 41 +193 121 25 +225 177 105 +185 129 73 +105 73 33 +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/palettes/followers/dragonair.pal b/graphics/object_events/palettes/followers/dragonair.pal new file mode 100644 index 000000000..5f7e4eaa8 --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonair.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +209 209 209 +65 65 65 +41 121 169 +81 145 217 +233 233 249 +105 105 105 +89 177 217 +145 41 33 +161 201 249 +49 65 105 +113 177 241 +81 113 177 +241 241 241 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonite.pal b/graphics/object_events/palettes/followers/dragonite.pal new file mode 100644 index 000000000..c17cc58ce --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 65 +145 153 161 +241 177 81 +65 57 33 +57 129 113 +1 1 1 +41 97 81 +233 233 249 +185 193 209 +153 97 49 +153 153 153 +233 201 153 +97 97 97 +209 169 121 +217 137 65 diff --git a/graphics/object_events/palettes/followers/dratini.pal b/graphics/object_events/palettes/followers/dratini.pal new file mode 100644 index 000000000..b8472f998 --- /dev/null +++ b/graphics/object_events/palettes/followers/dratini.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 65 65 +193 193 217 +97 113 169 +129 137 209 +105 105 105 +217 217 217 +145 41 33 +153 161 225 +233 233 249 +57 65 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/drowzee.pal b/graphics/object_events/palettes/followers/drowzee.pal new file mode 100644 index 000000000..d19de6d0d --- /dev/null +++ b/graphics/object_events/palettes/followers/drowzee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +81 65 49 +233 233 249 +105 81 121 +1 1 1 +121 105 33 +49 49 49 +233 201 81 +89 81 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dugtrio.pal b/graphics/object_events/palettes/followers/dugtrio.pal new file mode 100644 index 000000000..19bbad592 --- /dev/null +++ b/graphics/object_events/palettes/followers/dugtrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 105 57 +57 41 17 +1 1 1 +113 113 113 +65 65 65 +129 17 49 +169 169 169 +153 121 57 +209 65 105 +233 121 153 +201 201 201 +113 73 33 +153 33 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/eevee.pal b/graphics/object_events/palettes/followers/eevee.pal new file mode 100644 index 000000000..c04ada4ee --- /dev/null +++ b/graphics/object_events/palettes/followers/eevee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +225 209 169 +97 65 57 +185 161 97 +129 97 49 +65 49 25 +193 145 81 +233 233 249 +1 1 1 +121 97 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ekans.pal b/graphics/object_events/palettes/followers/ekans.pal new file mode 100644 index 000000000..cbe0d93b6 --- /dev/null +++ b/graphics/object_events/palettes/followers/ekans.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 169 +209 161 49 +113 97 41 +201 129 193 +121 81 121 +97 49 105 +249 217 65 +1 1 1 +145 97 145 +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/palettes/followers/electabuzz.pal b/graphics/object_events/palettes/followers/electabuzz.pal new file mode 100644 index 000000000..9c31f633c --- /dev/null +++ b/graphics/object_events/palettes/followers/electabuzz.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 17 +145 145 145 +65 57 33 +233 233 249 +73 81 81 +241 209 1 +1 1 1 +49 49 49 +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/palettes/followers/electrode.pal b/graphics/object_events/palettes/followers/electrode.pal new file mode 100644 index 000000000..335df9141 --- /dev/null +++ b/graphics/object_events/palettes/followers/electrode.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 185 193 +105 105 105 +201 33 33 +217 217 217 +49 49 49 +161 161 161 +233 233 249 +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/palettes/followers/exeggcute.pal b/graphics/object_events/palettes/followers/exeggcute.pal new file mode 100644 index 000000000..665e1c152 --- /dev/null +++ b/graphics/object_events/palettes/followers/exeggcute.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 105 +233 177 185 +89 73 65 +233 177 57 +241 209 217 +161 97 105 +1 1 1 +233 233 249 +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/palettes/followers/exeggutor.pal b/graphics/object_events/palettes/followers/exeggutor.pal new file mode 100644 index 000000000..9e45a52b5 --- /dev/null +++ b/graphics/object_events/palettes/followers/exeggutor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 169 41 +161 161 161 +57 81 41 +129 217 89 +201 137 89 +201 89 121 +145 97 57 +209 161 89 +233 233 249 +65 41 41 +249 201 89 +1 1 1 +89 73 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/farfetchd.pal b/graphics/object_events/palettes/followers/farfetchd.pal new file mode 100644 index 000000000..5c23264c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/farfetchd.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 33 +169 169 169 +249 201 49 +81 81 81 +153 161 113 +241 225 161 +1 1 1 +177 145 41 +73 57 41 +233 233 249 +137 113 65 +209 209 193 +177 129 73 +217 169 121 +201 185 121 diff --git a/graphics/object_events/palettes/followers/fearow.pal b/graphics/object_events/palettes/followers/fearow.pal new file mode 100644 index 000000000..04f68a619 --- /dev/null +++ b/graphics/object_events/palettes/followers/fearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 145 33 +241 129 153 +193 65 1 +225 129 97 +185 185 185 +65 65 65 +89 57 17 +185 169 113 +233 233 249 +177 81 121 +177 113 17 +89 17 9 +225 201 169 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flareon.pal b/graphics/object_events/palettes/followers/flareon.pal new file mode 100644 index 000000000..df0c348e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/flareon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 49 +233 217 153 +73 57 41 +153 65 41 +217 169 73 +233 233 249 +217 89 33 +249 129 73 +1 1 1 +217 193 193 +81 65 65 +193 65 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastly.pal b/graphics/object_events/palettes/followers/gastly.pal new file mode 100644 index 000000000..e3337fe80 --- /dev/null +++ b/graphics/object_events/palettes/followers/gastly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +73 73 73 +65 17 57 +233 233 249 +41 41 57 +1 1 1 +113 89 153 +81 57 105 +153 9 5 +185 185 185 +137 113 161 +57 57 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gengar.pal b/graphics/object_events/palettes/followers/gengar.pal new file mode 100644 index 000000000..374fed5aa --- /dev/null +++ b/graphics/object_events/palettes/followers/gengar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 97 97 +153 153 153 +81 57 105 +185 185 185 +145 121 161 +41 41 57 +217 97 97 +1 1 1 +249 169 161 +105 81 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/geodude.pal b/graphics/object_events/palettes/followers/geodude.pal new file mode 100644 index 000000000..ef0621ad0 --- /dev/null +++ b/graphics/object_events/palettes/followers/geodude.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 169 129 +121 113 97 +233 233 249 +65 49 33 +1 1 1 +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/graphics/object_events/palettes/followers/gloom.pal b/graphics/object_events/palettes/followers/gloom.pal new file mode 100644 index 000000000..638da245d --- /dev/null +++ b/graphics/object_events/palettes/followers/gloom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 113 25 +81 41 129 +65 113 153 +217 145 145 +169 49 73 +169 81 17 +49 81 113 +1 1 1 +217 97 113 +121 33 17 +169 169 169 +33 57 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golbat.pal b/graphics/object_events/palettes/followers/golbat.pal new file mode 100644 index 000000000..7d30f2f34 --- /dev/null +++ b/graphics/object_events/palettes/followers/golbat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 145 153 +97 65 129 +233 233 249 +57 25 89 +81 185 177 +65 113 121 +17 57 65 +1 1 1 +137 97 185 +185 185 193 +57 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/goldeen.pal b/graphics/object_events/palettes/followers/goldeen.pal new file mode 100644 index 000000000..3e9389b60 --- /dev/null +++ b/graphics/object_events/palettes/followers/goldeen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 113 +177 177 177 +233 73 33 +249 233 161 +217 161 81 +97 17 1 +81 81 81 +241 129 161 +233 233 249 +1 1 1 +201 89 121 +161 33 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golduck.pal b/graphics/object_events/palettes/followers/golduck.pal new file mode 100644 index 000000000..c1568e666 --- /dev/null +++ b/graphics/object_events/palettes/followers/golduck.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 185 65 +81 121 169 +241 49 113 +65 65 65 +249 233 137 +233 233 249 +1 1 1 +177 177 209 +89 17 33 +121 161 249 +249 193 81 +49 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golem.pal b/graphics/object_events/palettes/followers/golem.pal new file mode 100644 index 000000000..d2852e60c --- /dev/null +++ b/graphics/object_events/palettes/followers/golem.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 105 +89 81 57 +193 193 193 +153 153 153 +121 113 81 +49 49 49 +1 1 1 +105 17 25 +233 233 249 +193 153 121 +113 89 73 +145 113 97 +161 161 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/graveler.pal b/graphics/object_events/palettes/followers/graveler.pal new file mode 100644 index 000000000..b4d24683f --- /dev/null +++ b/graphics/object_events/palettes/followers/graveler.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 137 105 +81 73 65 +233 233 249 +169 169 177 +185 169 129 +121 113 97 +57 49 49 +177 81 105 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/grimer.pal b/graphics/object_events/palettes/followers/grimer.pal new file mode 100644 index 000000000..fef0c2dba --- /dev/null +++ b/graphics/object_events/palettes/followers/grimer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 57 65 +233 233 249 +105 81 121 +177 145 185 +129 105 137 +201 177 217 +121 97 153 +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/palettes/followers/growlithe.pal b/graphics/object_events/palettes/followers/growlithe.pal new file mode 100644 index 000000000..cc0737467 --- /dev/null +++ b/graphics/object_events/palettes/followers/growlithe.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 121 73 +73 49 25 +177 177 209 +89 89 89 +1 1 1 +145 73 33 +137 89 41 +201 153 81 +233 233 249 +225 193 145 +185 81 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gyarados.pal b/graphics/object_events/palettes/followers/gyarados.pal new file mode 100644 index 000000000..3019ff479 --- /dev/null +++ b/graphics/object_events/palettes/followers/gyarados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 129 1 +41 129 129 +193 193 209 +137 97 33 +73 177 225 +1 1 1 +33 97 129 +249 201 105 +185 65 105 +49 57 81 +217 113 153 +233 233 249 +137 145 145 +177 137 49 +65 121 153 diff --git a/graphics/object_events/palettes/followers/haunter.pal b/graphics/object_events/palettes/followers/haunter.pal new file mode 100644 index 000000000..aab1166f2 --- /dev/null +++ b/graphics/object_events/palettes/followers/haunter.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 161 +73 73 73 +233 233 249 +65 17 57 +1 1 1 +97 73 105 +65 49 57 +153 153 153 +185 185 185 +129 97 129 +97 33 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonchan.pal b/graphics/object_events/palettes/followers/hitmonchan.pal new file mode 100644 index 000000000..7c6c8e38c --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonchan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 105 +113 81 57 +145 25 41 +233 233 249 +73 49 49 +161 137 201 +113 105 129 +1 1 1 +225 57 57 +153 113 65 +57 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonlee.pal b/graphics/object_events/palettes/followers/hitmonlee.pal new file mode 100644 index 000000000..16a145cac --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonlee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 49 +161 161 161 +1 1 1 +89 73 41 +177 145 129 +161 129 81 +201 201 209 +97 97 97 +73 49 49 +233 233 249 +121 97 57 +209 185 113 +153 137 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/horsea.pal b/graphics/object_events/palettes/followers/horsea.pal new file mode 100644 index 000000000..4a5c74fdb --- /dev/null +++ b/graphics/object_events/palettes/followers/horsea.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +97 153 193 +25 57 97 +233 233 249 +65 65 65 +249 209 161 +169 185 209 +145 17 17 +41 89 137 +1 1 1 +145 185 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hypno.pal b/graphics/object_events/palettes/followers/hypno.pal new file mode 100644 index 000000000..1edc1ee50 --- /dev/null +++ b/graphics/object_events/palettes/followers/hypno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +169 169 169 +121 105 33 +57 49 41 +1 1 1 +233 233 249 +233 201 81 +201 201 209 +105 81 121 +49 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ivysaur.pal b/graphics/object_events/palettes/followers/ivysaur.pal new file mode 100644 index 000000000..db3e0fda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/ivysaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 169 17 +73 169 153 +49 89 25 +105 209 193 +201 89 121 +137 225 33 +145 65 33 +65 129 121 +241 129 161 +201 201 217 +1 1 1 +105 33 41 +233 233 249 +41 65 65 +65 65 65 diff --git a/graphics/object_events/palettes/followers/jigglypuff.pal b/graphics/object_events/palettes/followers/jigglypuff.pal new file mode 100644 index 000000000..cf6b522cc --- /dev/null +++ b/graphics/object_events/palettes/followers/jigglypuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 73 65 +113 161 249 +81 81 121 +97 41 65 +249 169 185 +145 73 89 +233 233 249 +209 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jolteon.pal b/graphics/object_events/palettes/followers/jolteon.pal new file mode 100644 index 000000000..1398b039a --- /dev/null +++ b/graphics/object_events/palettes/followers/jolteon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 161 33 +169 169 193 +65 57 41 +249 249 81 +1 1 1 +209 225 233 +169 105 33 +249 201 25 +73 65 81 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jynx.pal b/graphics/object_events/palettes/followers/jynx.pal new file mode 100644 index 000000000..10f616466 --- /dev/null +++ b/graphics/object_events/palettes/followers/jynx.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +153 153 185 +105 73 137 +193 193 209 +65 57 57 +249 225 33 +137 97 193 +233 233 249 +1 1 1 +177 57 33 +249 89 73 +249 233 185 +249 209 97 +241 129 161 +201 89 121 diff --git a/graphics/object_events/palettes/followers/kabuto.pal b/graphics/object_events/palettes/followers/kabuto.pal new file mode 100644 index 000000000..aa01d9002 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabuto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 97 65 +49 41 41 +233 185 89 +209 65 65 +169 129 57 +89 73 57 +137 25 25 +49 57 73 +1 1 1 +153 121 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kabutops.pal b/graphics/object_events/palettes/followers/kabutops.pal new file mode 100644 index 000000000..10c3bb588 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabutops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +89 57 33 +193 193 201 +105 105 121 +137 97 41 +153 153 153 +65 65 65 +49 41 41 +233 233 249 +1 1 1 +105 73 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kadabra.pal b/graphics/object_events/palettes/followers/kadabra.pal new file mode 100644 index 000000000..1e20369be --- /dev/null +++ b/graphics/object_events/palettes/followers/kadabra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +97 73 49 +177 177 185 +145 121 57 +193 41 65 +1 1 1 +89 89 89 +249 241 193 +73 57 25 +249 217 97 +233 97 121 +233 233 249 +145 121 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kakuna.pal b/graphics/object_events/palettes/followers/kakuna.pal new file mode 100644 index 000000000..4dd491adc --- /dev/null +++ b/graphics/object_events/palettes/followers/kakuna.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 65 +97 73 41 +233 233 249 +249 209 65 +145 113 33 +1 1 1 +65 65 65 +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/graphics/object_events/palettes/followers/kangaskhan.pal b/graphics/object_events/palettes/followers/kangaskhan.pal new file mode 100644 index 000000000..131f73a28 --- /dev/null +++ b/graphics/object_events/palettes/followers/kangaskhan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 41 +89 73 41 +169 185 209 +209 169 97 +113 113 113 +65 49 33 +73 73 73 +249 201 121 +233 233 249 +185 121 113 +105 9 1 +1 1 1 +57 57 65 +129 113 145 +121 81 57 diff --git a/graphics/object_events/palettes/followers/kingler.pal b/graphics/object_events/palettes/followers/kingler.pal new file mode 100644 index 000000000..bc35398e4 --- /dev/null +++ b/graphics/object_events/palettes/followers/kingler.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 81 +201 201 209 +169 65 57 +1 1 1 +65 41 41 +177 153 105 +233 233 249 +217 105 49 +225 193 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/koffing.pal b/graphics/object_events/palettes/followers/koffing.pal new file mode 100644 index 000000000..e33a361cc --- /dev/null +++ b/graphics/object_events/palettes/followers/koffing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 41 +137 129 209 +89 81 121 +57 41 57 +129 129 129 +233 233 249 +129 73 81 +1 1 1 +121 105 193 +169 169 209 +105 57 65 +201 185 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/krabby.pal b/graphics/object_events/palettes/followers/krabby.pal new file mode 100644 index 000000000..6a430a736 --- /dev/null +++ b/graphics/object_events/palettes/followers/krabby.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 81 +201 201 209 +81 57 49 +1 1 1 +201 97 33 +233 233 249 +169 65 57 +193 169 129 +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/palettes/followers/lapras.pal b/graphics/object_events/palettes/followers/lapras.pal new file mode 100644 index 000000000..cb7e199bd --- /dev/null +++ b/graphics/object_events/palettes/followers/lapras.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 73 +89 129 177 +105 81 17 +145 153 161 +193 201 209 +49 73 105 +49 57 57 +249 209 105 +97 177 233 +113 113 129 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lickitung.pal b/graphics/object_events/palettes/followers/lickitung.pal new file mode 100644 index 000000000..7c028935c --- /dev/null +++ b/graphics/object_events/palettes/followers/lickitung.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 129 +161 161 161 +233 233 249 +177 97 121 +233 185 201 +217 201 49 +217 153 177 +89 49 73 +1 1 1 +241 169 169 +169 89 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machamp.pal b/graphics/object_events/palettes/followers/machamp.pal new file mode 100644 index 000000000..a84bfe10a --- /dev/null +++ b/graphics/object_events/palettes/followers/machamp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +249 209 9 +233 201 153 +65 65 65 +177 153 113 +209 185 73 +233 233 249 +193 41 65 +241 233 113 +161 161 201 +81 89 105 +201 201 201 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machoke.pal b/graphics/object_events/palettes/followers/machoke.pal new file mode 100644 index 000000000..4585ebaa7 --- /dev/null +++ b/graphics/object_events/palettes/followers/machoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +73 73 73 +249 209 9 +233 201 153 +177 153 113 +97 105 129 +193 41 65 +1 1 1 +233 233 249 +161 161 201 +209 161 17 +89 89 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machop.pal b/graphics/object_events/palettes/followers/machop.pal new file mode 100644 index 000000000..828328b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/machop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 137 +233 201 153 +57 57 57 +1 1 1 +193 41 65 +177 153 113 +233 233 249 +73 97 105 +137 169 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magikarp.pal b/graphics/object_events/palettes/followers/magikarp.pal new file mode 100644 index 000000000..d29c0357d --- /dev/null +++ b/graphics/object_events/palettes/followers/magikarp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +185 65 105 +145 145 145 +137 41 25 +1 1 1 +81 33 17 +249 193 17 +217 113 153 +193 193 209 +233 233 249 +121 33 65 +233 169 73 +233 97 65 +49 49 49 +201 57 17 diff --git a/graphics/object_events/palettes/followers/magmar.pal b/graphics/object_events/palettes/followers/magmar.pal new file mode 100644 index 000000000..ce9d6c30d --- /dev/null +++ b/graphics/object_events/palettes/followers/magmar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 9 +49 49 49 +145 145 145 +201 89 129 +193 193 209 +185 57 25 +129 1 1 +241 209 1 +241 185 201 +233 233 249 +113 81 17 +225 153 17 +105 33 17 +1 1 1 +241 73 33 diff --git a/graphics/object_events/palettes/followers/magnemite.pal b/graphics/object_events/palettes/followers/magnemite.pal new file mode 100644 index 000000000..041b62f37 --- /dev/null +++ b/graphics/object_events/palettes/followers/magnemite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 145 +193 209 217 +81 81 81 +73 137 233 +233 65 65 +153 169 185 +57 57 57 +1 1 1 +113 113 121 +233 233 249 +177 177 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magneton.pal b/graphics/object_events/palettes/followers/magneton.pal new file mode 100644 index 000000000..041b62f37 --- /dev/null +++ b/graphics/object_events/palettes/followers/magneton.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 145 +193 209 217 +81 81 81 +73 137 233 +233 65 65 +153 169 185 +57 57 57 +1 1 1 +113 113 121 +233 233 249 +177 177 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mankey.pal b/graphics/object_events/palettes/followers/mankey.pal new file mode 100644 index 000000000..91522b4e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/mankey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +73 65 57 +1 1 1 +145 17 49 +153 121 97 +233 233 249 +177 105 129 +177 177 209 +177 169 129 +233 217 137 +137 105 57 +121 41 65 +209 177 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/marowak.pal b/graphics/object_events/palettes/followers/marowak.pal new file mode 100644 index 000000000..2f8424f47 --- /dev/null +++ b/graphics/object_events/palettes/followers/marowak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 73 +193 193 193 +1 1 1 +129 129 129 +73 49 49 +217 225 225 +201 153 81 +225 193 145 +193 161 105 +73 73 73 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/meowth.pal b/graphics/object_events/palettes/followers/meowth.pal new file mode 100644 index 000000000..1c7fd519a --- /dev/null +++ b/graphics/object_events/palettes/followers/meowth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 49 +81 57 25 +217 177 65 +121 105 81 +1 1 1 +169 121 81 +153 81 25 +169 33 81 +241 217 129 +249 201 33 +177 89 81 +217 145 25 +65 57 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metapod.pal b/graphics/object_events/palettes/followers/metapod.pal new file mode 100644 index 000000000..c070c1405 --- /dev/null +++ b/graphics/object_events/palettes/followers/metapod.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 49 +225 225 225 +161 217 73 +57 73 25 +1 1 1 +233 233 249 +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/graphics/object_events/palettes/followers/mew.pal b/graphics/object_events/palettes/followers/mew.pal new file mode 100644 index 000000000..d99299b99 --- /dev/null +++ b/graphics/object_events/palettes/followers/mew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +201 201 249 +97 97 97 +1 1 1 +233 233 249 +177 105 169 +89 49 81 +249 209 233 +217 161 185 +113 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mewtwo.pal b/graphics/object_events/palettes/followers/mewtwo.pal new file mode 100644 index 000000000..6f5afee0f --- /dev/null +++ b/graphics/object_events/palettes/followers/mewtwo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 121 153 +137 73 137 +217 201 217 +65 65 65 +153 153 153 +177 153 193 +65 49 81 +185 89 209 +97 97 97 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/moltres.pal b/graphics/object_events/palettes/followers/moltres.pal new file mode 100644 index 000000000..524c5a1d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/moltres.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 33 +177 177 209 +65 65 65 +249 185 33 +233 73 49 +1 1 1 +161 25 41 +249 137 121 +233 233 249 +65 49 49 +185 113 97 +249 201 121 +233 177 81 +201 129 57 +113 73 57 diff --git a/graphics/object_events/palettes/followers/mr_mime.pal b/graphics/object_events/palettes/followers/mr_mime.pal new file mode 100644 index 000000000..156deec2c --- /dev/null +++ b/graphics/object_events/palettes/followers/mr_mime.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 161 +33 65 89 +241 193 201 +145 65 81 +41 49 65 +1 1 1 +49 97 113 +233 233 249 +169 105 121 +201 201 233 +209 65 89 +105 105 105 +193 145 145 +73 49 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/muk.pal b/graphics/object_events/palettes/followers/muk.pal new file mode 100644 index 000000000..25c53904a --- /dev/null +++ b/graphics/object_events/palettes/followers/muk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 57 65 +105 81 121 +233 233 249 +177 145 185 +129 105 137 +97 73 105 +201 177 217 +121 97 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoking.pal b/graphics/object_events/palettes/followers/nidoking.pal new file mode 100644 index 000000000..0f1679f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +201 201 201 +217 153 241 +49 113 105 +185 129 185 +1 1 1 +65 49 81 +241 233 225 +153 105 161 +89 25 25 +161 161 161 +233 233 249 +169 169 153 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoqueen.pal b/graphics/object_events/palettes/followers/nidoqueen.pal new file mode 100644 index 000000000..9fb7ed22a --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoqueen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 137 177 +89 65 49 +201 201 201 +241 193 121 +73 65 121 +233 233 249 +97 41 25 +129 177 217 +193 161 81 +169 97 49 +169 201 241 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_f.pal b/graphics/object_events/palettes/followers/nidoran_f.pal new file mode 100644 index 000000000..a268e55b6 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoran_f.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 169 137 +49 89 73 +153 241 225 +161 81 105 +17 153 241 +1 1 1 +217 105 137 +161 33 17 +65 81 137 +233 233 249 +161 161 161 +241 121 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_m.pal b/graphics/object_events/palettes/followers/nidoran_m.pal new file mode 100644 index 000000000..91d4ac518 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoran_m.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +137 97 153 +193 65 105 +233 233 249 +217 153 241 +185 25 9 +1 1 1 +81 49 81 +49 113 105 +177 113 209 +161 161 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorina.pal b/graphics/object_events/palettes/followers/nidorina.pal new file mode 100644 index 000000000..f59ffda8b --- /dev/null +++ b/graphics/object_events/palettes/followers/nidorina.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 137 209 +113 193 225 +1 1 1 +49 89 105 +153 225 249 +169 169 193 +161 41 33 +81 161 177 +241 161 153 +233 233 249 +49 97 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorino.pal b/graphics/object_events/palettes/followers/nidorino.pal new file mode 100644 index 000000000..571d26a69 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidorino.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +233 233 249 +49 113 105 +177 121 201 +185 25 9 +177 177 193 +73 57 81 +1 1 1 +137 97 153 +217 153 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninetales.pal b/graphics/object_events/palettes/followers/ninetales.pal new file mode 100644 index 000000000..393b1073b --- /dev/null +++ b/graphics/object_events/palettes/followers/ninetales.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 1 +193 65 105 +1 1 1 +89 57 49 +233 233 249 +185 161 105 +145 113 73 +233 217 153 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/oddish.pal b/graphics/object_events/palettes/followers/oddish.pal new file mode 100644 index 000000000..a707d037a --- /dev/null +++ b/graphics/object_events/palettes/followers/oddish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 113 65 +17 161 49 +33 73 41 +1 1 1 +113 1 1 +65 113 153 +41 73 73 +137 193 129 +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/palettes/followers/omanyte.pal b/graphics/object_events/palettes/followers/omanyte.pal new file mode 100644 index 000000000..121eb8cc6 --- /dev/null +++ b/graphics/object_events/palettes/followers/omanyte.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 161 +233 201 153 +81 65 57 +73 169 217 +145 113 73 +1 1 1 +121 201 241 +177 153 105 +233 233 249 +169 169 177 +105 105 105 +49 73 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/omastar.pal b/graphics/object_events/palettes/followers/omastar.pal new file mode 100644 index 000000000..1f042f749 --- /dev/null +++ b/graphics/object_events/palettes/followers/omastar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 65 +57 129 161 +81 65 57 +249 225 105 +233 225 185 +129 105 81 +177 153 105 +73 169 217 +121 201 241 +233 201 153 +1 1 1 +105 105 105 +49 65 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/onix.pal b/graphics/object_events/palettes/followers/onix.pal new file mode 100644 index 000000000..41933ba53 --- /dev/null +++ b/graphics/object_events/palettes/followers/onix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 129 +193 193 193 +81 73 73 +1 1 1 +49 49 49 +145 145 145 +233 233 249 +105 97 97 +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/palettes/followers/paras.pal b/graphics/object_events/palettes/followers/paras.pal new file mode 100644 index 000000000..e2285d9db --- /dev/null +++ b/graphics/object_events/palettes/followers/paras.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 41 +169 81 17 +169 169 169 +113 113 113 +97 41 25 +1 1 1 +249 113 25 +233 233 249 +169 49 73 +217 97 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/parasect.pal b/graphics/object_events/palettes/followers/parasect.pal new file mode 100644 index 000000000..b07e4319f --- /dev/null +++ b/graphics/object_events/palettes/followers/parasect.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 33 +169 81 17 +169 169 169 +97 41 25 +233 201 89 +217 97 113 +249 113 25 +233 233 249 +1 1 1 +169 49 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/persian.pal b/graphics/object_events/palettes/followers/persian.pal new file mode 100644 index 000000000..16d9b1527 --- /dev/null +++ b/graphics/object_events/palettes/followers/persian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +1 1 1 +81 57 25 +145 129 73 +185 65 113 +233 233 249 +193 169 121 +241 217 129 +145 105 81 +161 129 105 +65 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgeot.pal b/graphics/object_events/palettes/followers/pidgeot.pal new file mode 100644 index 000000000..22828bc3f --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 137 1 +241 105 225 +145 89 49 +1 1 1 +177 65 97 +193 153 65 +129 25 113 +209 113 41 +233 233 249 +241 209 113 +249 193 49 +81 57 25 +225 113 113 +201 73 33 +161 161 161 diff --git a/graphics/object_events/palettes/followers/pidgeotto.pal b/graphics/object_events/palettes/followers/pidgeotto.pal new file mode 100644 index 000000000..8b3242b54 --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeotto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 169 +209 129 33 +153 153 153 +97 65 33 +233 233 249 +225 113 113 +241 209 113 +241 137 225 +201 73 33 +161 33 161 +193 153 65 +1 1 1 +177 81 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgey.pal b/graphics/object_events/palettes/followers/pidgey.pal new file mode 100644 index 000000000..f843a7e59 --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 65 +217 145 177 +97 65 33 +241 209 113 +233 233 249 +201 113 33 +153 57 97 +1 1 1 +185 185 185 +185 89 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pikachu.pal b/graphics/object_events/palettes/followers/pikachu.pal new file mode 100644 index 000000000..987f609d0 --- /dev/null +++ b/graphics/object_events/palettes/followers/pikachu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 65 +113 81 57 +233 233 249 +49 49 49 +249 209 81 +153 113 57 +1 1 1 +201 89 57 +145 57 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pinsir.pal b/graphics/object_events/palettes/followers/pinsir.pal new file mode 100644 index 000000000..bb6f6e121 --- /dev/null +++ b/graphics/object_events/palettes/followers/pinsir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 97 +81 65 49 +193 193 209 +121 105 81 +1 1 1 +49 49 49 +145 145 145 +97 81 57 +233 233 249 +105 105 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwag.pal b/graphics/object_events/palettes/followers/poliwag.pal new file mode 100644 index 000000000..207b398d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwag.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +89 89 89 +233 233 233 +121 129 233 +25 41 57 +1 1 1 +65 89 153 +97 49 65 +177 177 209 +241 121 161 +177 65 105 +49 49 49 +233 233 249 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwhirl.pal b/graphics/object_events/palettes/followers/poliwhirl.pal new file mode 100644 index 000000000..71d107bee --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwhirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +57 73 113 +233 233 249 +49 49 49 +121 129 233 +33 41 57 +161 161 161 +73 97 185 +177 177 209 +89 89 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwrath.pal b/graphics/object_events/palettes/followers/poliwrath.pal new file mode 100644 index 000000000..0937b8faa --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwrath.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 201 201 +73 97 185 +49 49 49 +121 129 233 +33 41 57 +161 161 161 +233 233 249 +177 177 209 +89 89 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ponyta.pal b/graphics/object_events/palettes/followers/ponyta.pal new file mode 100644 index 000000000..90cf88072 --- /dev/null +++ b/graphics/object_events/palettes/followers/ponyta.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 161 25 +81 57 33 +241 225 169 +81 97 129 +129 121 89 +225 73 33 +185 169 113 +161 49 9 +233 233 249 +153 57 81 +1 1 1 +73 57 41 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon.pal b/graphics/object_events/palettes/followers/porygon.pal new file mode 100644 index 000000000..a9a1804e9 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 137 153 +41 97 97 +81 217 217 +1 1 1 +177 49 105 +41 65 73 +249 153 209 +233 105 161 +233 233 249 +41 185 193 +97 25 49 +161 185 201 +209 65 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/primeape.pal b/graphics/object_events/palettes/followers/primeape.pal new file mode 100644 index 000000000..38020a677 --- /dev/null +++ b/graphics/object_events/palettes/followers/primeape.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +65 57 49 +1 1 1 +105 105 105 +209 169 113 +233 233 249 +121 41 65 +177 177 209 +137 105 57 +233 217 137 +153 121 97 +177 105 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/psyduck.pal b/graphics/object_events/palettes/followers/psyduck.pal new file mode 100644 index 000000000..4990fa0d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/psyduck.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 65 +241 233 185 +233 185 65 +201 185 137 +105 97 65 +1 1 1 +233 233 249 +249 217 105 +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/palettes/followers/raichu.pal b/graphics/object_events/palettes/followers/raichu.pal new file mode 100644 index 000000000..a131215ea --- /dev/null +++ b/graphics/object_events/palettes/followers/raichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 33 +1 1 1 +113 73 41 +209 177 25 +249 233 209 +121 105 73 +249 225 9 +73 41 25 +249 145 1 +249 193 65 +233 233 249 +137 89 25 +193 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rapidash.pal b/graphics/object_events/palettes/followers/rapidash.pal new file mode 100644 index 000000000..aa197a10a --- /dev/null +++ b/graphics/object_events/palettes/followers/rapidash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 161 25 +73 57 41 +241 225 169 +81 97 129 +185 169 113 +249 81 33 +113 97 65 +185 201 121 +161 49 9 +233 233 249 +153 57 81 +1 1 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raticate.pal b/graphics/object_events/palettes/followers/raticate.pal new file mode 100644 index 000000000..75f836e6c --- /dev/null +++ b/graphics/object_events/palettes/followers/raticate.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 57 +225 201 169 +89 65 25 +185 169 113 +233 233 249 +137 49 121 +201 201 201 +177 97 57 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rattata.pal b/graphics/object_events/palettes/followers/rattata.pal new file mode 100644 index 000000000..79c244a7b --- /dev/null +++ b/graphics/object_events/palettes/followers/rattata.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 81 +169 129 217 +57 49 89 +233 217 177 +185 169 129 +217 217 217 +225 57 33 +105 89 153 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhydon.pal b/graphics/object_events/palettes/followers/rhydon.pal new file mode 100644 index 000000000..d8b41c6ea --- /dev/null +++ b/graphics/object_events/palettes/followers/rhydon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 49 +185 185 185 +65 57 25 +137 137 137 +217 217 217 +121 105 57 +137 33 57 +217 177 89 +1 1 1 +65 65 65 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyhorn.pal b/graphics/object_events/palettes/followers/rhyhorn.pal new file mode 100644 index 000000000..67ea3d889 --- /dev/null +++ b/graphics/object_events/palettes/followers/rhyhorn.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 145 +201 201 201 +65 65 65 +1 1 1 +137 33 57 +233 233 249 +113 113 113 +177 177 177 +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/palettes/followers/sandshrew.pal b/graphics/object_events/palettes/followers/sandshrew.pal new file mode 100644 index 000000000..ac1703261 --- /dev/null +++ b/graphics/object_events/palettes/followers/sandshrew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 169 +185 137 41 +161 161 161 +225 217 169 +97 65 33 +185 169 137 +1 1 1 +33 97 121 +217 169 57 +233 233 249 +121 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sandslash.pal b/graphics/object_events/palettes/followers/sandslash.pal new file mode 100644 index 000000000..d11a2ce3b --- /dev/null +++ b/graphics/object_events/palettes/followers/sandslash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 131 3 +153 153 153 +97 65 33 +233 225 153 +89 89 89 +177 177 177 +201 137 49 +1 1 1 +233 233 249 +137 97 41 +49 33 17 +41 105 129 +225 169 65 +193 161 137 +161 105 33 diff --git a/graphics/object_events/palettes/followers/scyther.pal b/graphics/object_events/palettes/followers/scyther.pal new file mode 100644 index 000000000..b279ae4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/scyther.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +177 169 201 +1 1 1 +41 65 33 +129 129 129 +233 233 249 +153 209 105 +177 153 41 +241 217 73 +81 65 17 +177 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seadra.pal b/graphics/object_events/palettes/followers/seadra.pal new file mode 100644 index 000000000..cd2bb36c4 --- /dev/null +++ b/graphics/object_events/palettes/followers/seadra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +89 145 217 +1 1 1 +233 233 249 +65 65 73 +169 185 209 +73 137 169 +249 209 161 +49 81 113 +121 185 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seaking.pal b/graphics/object_events/palettes/followers/seaking.pal new file mode 100644 index 000000000..7cc446f83 --- /dev/null +++ b/graphics/object_events/palettes/followers/seaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 161 81 +169 57 49 +177 177 177 +249 233 161 +249 81 41 +49 49 49 +241 129 161 +113 25 17 +233 233 249 +1 1 1 +97 97 97 +193 65 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seel.pal b/graphics/object_events/palettes/followers/seel.pal new file mode 100644 index 000000000..dad2284d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/seel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 9 +225 129 145 +113 89 33 +249 241 185 +73 81 121 +49 49 81 +1 1 1 +225 225 241 +161 169 209 +193 65 89 +81 33 33 +233 201 97 +97 97 97 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellder.pal b/graphics/object_events/palettes/followers/shellder.pal new file mode 100644 index 000000000..b48549223 --- /dev/null +++ b/graphics/object_events/palettes/followers/shellder.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +73 73 161 +233 233 249 +129 129 201 +41 41 49 +233 153 217 +57 57 73 +1 1 1 +193 89 177 +161 161 241 +73 33 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slowbro.pal b/graphics/object_events/palettes/followers/slowbro.pal new file mode 100644 index 000000000..f6c55d4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowbro.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 193 89 +73 81 89 +241 169 177 +145 121 49 +241 241 169 +177 97 105 +153 153 153 +233 233 249 +113 49 57 +193 65 65 +193 201 209 +217 113 97 +1 1 1 +209 121 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slowpoke.pal b/graphics/object_events/palettes/followers/slowpoke.pal new file mode 100644 index 000000000..324117fbd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowpoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 129 +241 217 145 +209 169 97 +105 81 17 +233 233 249 +161 169 177 +193 193 193 +97 41 49 +153 89 97 +241 153 161 +1 1 1 +249 193 177 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/snorlax.pal b/graphics/object_events/palettes/followers/snorlax.pal new file mode 100644 index 000000000..204900db7 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorlax.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 81 +161 161 185 +65 65 65 +1 1 1 +249 225 169 +137 105 73 +41 49 49 +81 129 145 +233 233 249 +65 105 121 +193 193 201 +217 193 121 +41 73 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spearow.pal b/graphics/object_events/palettes/followers/spearow.pal new file mode 100644 index 000000000..2c7f13b8a --- /dev/null +++ b/graphics/object_events/palettes/followers/spearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 33 +81 57 17 +249 137 145 +233 121 89 +65 65 65 +201 57 25 +185 169 113 +145 41 17 +233 233 249 +161 81 105 +129 89 33 +137 121 65 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/squirtle.pal b/graphics/object_events/palettes/followers/squirtle.pal new file mode 100644 index 000000000..8d090127d --- /dev/null +++ b/graphics/object_events/palettes/followers/squirtle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 25 +57 137 185 +217 169 49 +233 233 249 +33 73 97 +185 185 185 +1 1 1 +161 9 3 +89 185 241 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/starmie.pal b/graphics/object_events/palettes/followers/starmie.pal new file mode 100644 index 000000000..1dba44dc5 --- /dev/null +++ b/graphics/object_events/palettes/followers/starmie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 145 25 +65 65 113 +57 49 17 +105 25 25 +137 113 233 +1 1 1 +49 41 65 +233 177 33 +241 89 73 +89 89 193 +185 41 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/staryu.pal b/graphics/object_events/palettes/followers/staryu.pal new file mode 100644 index 000000000..47f9daf31 --- /dev/null +++ b/graphics/object_events/palettes/followers/staryu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 121 33 +57 49 17 +177 145 25 +105 25 25 +121 81 9 +1 1 1 +225 97 73 +233 177 33 +185 41 41 +89 73 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tangela.pal b/graphics/object_events/palettes/followers/tangela.pal new file mode 100644 index 000000000..eec939132 --- /dev/null +++ b/graphics/object_events/palettes/followers/tangela.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 145 +233 233 249 +65 65 65 +121 145 177 +161 49 41 +1 1 1 +25 33 33 +89 113 113 +169 185 209 +105 161 169 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tauros.pal b/graphics/object_events/palettes/followers/tauros.pal new file mode 100644 index 000000000..9d198490e --- /dev/null +++ b/graphics/object_events/palettes/followers/tauros.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +113 129 169 +73 65 65 +201 153 65 +193 193 209 +105 97 89 +1 1 1 +41 33 17 +145 145 145 +233 233 249 +81 81 105 +225 169 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tentacool.pal b/graphics/object_events/palettes/followers/tentacool.pal new file mode 100644 index 000000000..ebde6755c --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacool.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +73 145 161 +65 65 65 +121 193 241 +145 25 89 +177 121 73 +249 161 161 +41 105 121 +233 233 249 +65 49 41 +209 169 97 +1 1 1 +209 209 209 +225 49 97 +57 73 97 diff --git a/graphics/object_events/palettes/followers/tentacruel.pal b/graphics/object_events/palettes/followers/tentacruel.pal new file mode 100644 index 000000000..5eb5f673e --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacruel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +1 1 1 +65 65 65 +233 233 249 +121 193 241 +169 169 169 +145 25 89 +153 121 89 +41 105 121 +185 161 121 +81 153 169 +225 49 97 +249 161 161 +57 73 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vaporeon.pal b/graphics/object_events/palettes/followers/vaporeon.pal new file mode 100644 index 000000000..e28edebe1 --- /dev/null +++ b/graphics/object_events/palettes/followers/vaporeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 5 +33 145 137 +129 201 233 +81 73 57 +89 177 225 +1 1 1 +177 153 57 +209 209 209 +33 57 105 +17 113 121 +225 201 105 +233 233 249 +73 137 177 +161 161 161 +49 105 137 diff --git a/graphics/object_events/palettes/followers/venomoth.pal b/graphics/object_events/palettes/followers/venomoth.pal new file mode 100644 index 000000000..558651bc1 --- /dev/null +++ b/graphics/object_events/palettes/followers/venomoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 65 +209 153 249 +105 97 137 +233 233 249 +73 65 89 +1 1 1 +193 193 193 +161 105 241 +113 113 113 +233 185 249 +217 185 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/venonat.pal b/graphics/object_events/palettes/followers/venonat.pal new file mode 100644 index 000000000..b1281ab1c --- /dev/null +++ b/graphics/object_events/palettes/followers/venonat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 145 81 +73 57 129 +201 201 201 +129 97 33 +1 1 1 +137 1 1 +137 137 137 +113 73 209 +169 49 81 +49 33 65 +233 233 249 +161 105 241 +233 129 153 +217 185 129 +249 201 201 diff --git a/graphics/object_events/palettes/followers/venusaur.pal b/graphics/object_events/palettes/followers/venusaur.pal new file mode 100644 index 000000000..46f21dc4a --- /dev/null +++ b/graphics/object_events/palettes/followers/venusaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 129 41 +241 121 161 +137 225 33 +145 65 33 +65 153 97 +105 217 193 +233 193 113 +201 73 129 +233 233 249 +105 33 41 +97 169 17 +161 161 161 +1 1 1 +65 97 49 +249 225 9 diff --git a/graphics/object_events/palettes/followers/victreebel.pal b/graphics/object_events/palettes/followers/victreebel.pal new file mode 100644 index 000000000..90de7ab6a --- /dev/null +++ b/graphics/object_events/palettes/followers/victreebel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +1 1 1 +169 65 113 +121 9 5 +185 137 57 +193 193 193 +233 233 249 +33 33 33 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/vileplume.pal b/graphics/object_events/palettes/followers/vileplume.pal new file mode 100644 index 000000000..503e1333c --- /dev/null +++ b/graphics/object_events/palettes/followers/vileplume.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 153 +169 81 17 +1 1 1 +33 57 105 +217 97 113 +169 49 73 +121 33 17 +217 185 145 +249 137 73 +49 81 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/voltorb.pal b/graphics/object_events/palettes/followers/voltorb.pal new file mode 100644 index 000000000..e5c53dd09 --- /dev/null +++ b/graphics/object_events/palettes/followers/voltorb.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +233 81 81 +113 17 17 +201 201 209 +49 49 49 +161 161 161 +241 113 113 +201 33 33 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vulpix.pal b/graphics/object_events/palettes/followers/vulpix.pal new file mode 100644 index 000000000..9c57ccda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/vulpix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 137 73 +169 81 25 +217 113 49 +233 233 249 +121 73 57 +89 57 49 +1 1 1 +185 89 57 +241 201 153 +89 65 73 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wartortle.pal b/graphics/object_events/palettes/followers/wartortle.pal new file mode 100644 index 000000000..d4d157193 --- /dev/null +++ b/graphics/object_events/palettes/followers/wartortle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +161 161 161 +65 81 153 +57 57 73 +233 233 249 +1 1 1 +65 121 217 +161 89 25 +161 9 3 +241 209 113 +113 153 225 +65 65 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weedle.pal b/graphics/object_events/palettes/followers/weedle.pal new file mode 100644 index 000000000..d78ce1a02 --- /dev/null +++ b/graphics/object_events/palettes/followers/weedle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 49 +185 185 185 +97 73 41 +249 209 65 +129 129 129 +249 113 137 +193 41 65 +193 153 65 +233 233 249 +1 1 1 +65 65 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weepinbell.pal b/graphics/object_events/palettes/followers/weepinbell.pal new file mode 100644 index 000000000..c6ea065e7 --- /dev/null +++ b/graphics/object_events/palettes/followers/weepinbell.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +89 89 89 +1 1 1 +185 137 57 +185 185 185 +233 233 249 +121 9 5 +169 65 113 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/weezing.pal b/graphics/object_events/palettes/followers/weezing.pal new file mode 100644 index 000000000..84a071158 --- /dev/null +++ b/graphics/object_events/palettes/followers/weezing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 41 +137 129 209 +89 81 121 +57 41 57 +161 161 129 +233 233 249 +129 73 81 +1 1 1 +121 105 193 +169 169 209 +105 57 65 +201 185 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wigglytuff.pal b/graphics/object_events/palettes/followers/wigglytuff.pal new file mode 100644 index 000000000..4c86b3af9 --- /dev/null +++ b/graphics/object_events/palettes/followers/wigglytuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 105 129 +233 233 249 +193 193 193 +137 57 81 +241 153 169 +57 97 201 +113 185 249 +81 81 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zapdos.pal b/graphics/object_events/palettes/followers/zapdos.pal new file mode 100644 index 000000000..037f1b687 --- /dev/null +++ b/graphics/object_events/palettes/followers/zapdos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 1 +1 1 1 +65 65 65 +249 209 1 +225 169 25 +177 177 209 +161 113 73 +57 41 25 +233 233 249 +225 145 73 +249 217 65 +89 81 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zubat.pal b/graphics/object_events/palettes/followers/zubat.pal new file mode 100644 index 000000000..548a44a6a --- /dev/null +++ b/graphics/object_events/palettes/followers/zubat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 121 +1 1 1 +97 65 129 +137 97 185 +81 185 177 +17 57 65 +161 129 177 +185 185 193 +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/followers/abra.png b/graphics/object_events/pics/pokemon/followers/abra.png new file mode 100644 index 0000000000000000000000000000000000000000..0526af89a2e9d7ceefbb6512bce714edad0e057c GIT binary patch literal 547 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*tm11CL<%Gr={e? z%EX^H6Dt!ffs(jDpy8_fKsn9=kH}&M25w;xW@MN(M}mQYai*t>V~9uR+bO=2niT|E zHEkFpc1E7b#hK}N8*IFVvp**tMQ z%i8qcnX;LrZAiQ~!+wLbfXR&sS6HRDpWGm>p{XEsN;}?mJ`-D+zVw%c7ui<3G^W0f zQYqNg^O51g#;jKlW=Hz{TUgGTvrkWY&Ey{`Gwm;{`0noPPG9caZCiaV_t|-wkgK@{ zcg`J|;8<>59_)JSjM$O&&uvQPaSMd%E#`fSa zuP}>F{r|gf^1{sg8Fvh2x1Tus#z|z`J@MaL8iG`KS1Ck4wlT>M%*uXtXv3tkT^(!x zA2?V2>Zy>!i_m9GEg?^49EFN1_S%JBU!2kdN000000000000000z7}d;00009 za7bBm000XU000XU0RWnu7ytkRgGod|R7i>KmcMS>Fc8K?@CC?FGTLqh3S<>QN=3X0 zqO}XMy1Qif07Ze!eS{)i;;qOOJ!OyoWXW#Q0-aivOH7`8AMf{_&dIX>>t9{0Tx~Id zqZc0kRs3R6dnRzmkPaUaSv~lB@%WTTpM-7CZn#L$EY8zr89yxJ^9GQJYB=Rz7m#H& z-NYj-NrHh%E-vGih=>fA8=We#r5Hz&95tY`Y1dsF(6QBcoyo}pJU51KkZuNX+ zJdS-PMA#W&53BsRvxyph)HEjGOg~=6?d?wZIIeb4z#*ynLU84f3V7JwlIH}n8&Q)W zun{-qWxTdZdt}&jp;rPD-cThn# z1%Z#9A!h>bI`uYHFv&6`klUvyfRr`q0@7F#1UJST6Ob?_+2n|#oqg4rQmh5Obj_E9 zYx-7(1oD_XMoOt9fQ^mu+URUXf+c?w3TAs{)zGX2L~c!bx$*S1^$Bn@3*fv}bMtog z;NvJ@i%4+3eTYQy-RFI~TfPZ+mw(t7sZEaeEq9)X_IMvo%BrZVB32E_wMT}7Kt#gZ z=_%gl{ijAMwQvDT1q~)u#I`-k#(AQ)$8d{Um|pU|uH)8P?vTOX1(N(`n!bi~*YAjw zYAEsi?wau>+Pb4uZ)Q+W2-88uZWVxapIU#wV^W>wX7FO@7aUVx%(6rvBi+L)rhemmx79^wUfQq7~w zXlU|YFq1}4#sJxnTm&Q;RtqEv*_(U*8AebY2BDGBSlX9V1;Kmk1qNg*fow+NF0I$I?tCHd zN&jpdkdd=r|J8p3*p%7Ji>|-$)A$Pu>zCtyyzs9I_^Z|rZOaA_4Afkb00000NkvXX Hu0mjf$7R>> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/alakazam.png b/graphics/object_events/pics/pokemon/followers/alakazam.png new file mode 100644 index 0000000000000000000000000000000000000000..065a7fe79e478fbbe5140c273a60dab3d8ca771c GIT binary patch literal 799 zcmV+)1K|9LP)G_d)VE_OC000000000000000JA1Z%00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmA`A_Fcg3_2sG<3O>R60h0ZnvGFh=M zjx!hT#=8)jjy5rs=@#e@b!^DcJ%NJ$%6qb+Sk@)=Ew}Xz3ST6B?>$G65&DeJ_>6xF z(fatC5h8hehsRxls$Nc>&oM%Um%!sLLG|2>rx=k7uK|y{1VrYC;WVS7hcI^=@VHAr zWDhod!1NcMJ~%#)I|Zm(bKZ9zd7DY~w3x~mo#Re{W+~5eCFQMj3ii2E0Ov_Uh%-zy zIPLn}DM0#hLG;dWEp)2!S^HRD%5@;lF`=4iewwTGt6Vz;`wZ*%^i9eaI?GQp5(VwA zX|E~3Wg@R$DUF>5+6-~e=tjyb8oZxoqTVUQy~mXJ34zj#5C9h^X!MPai?fh&v4$IhwP=P~~&0~Rp(XoMoL%m;NvFyb(b z#X$%Og=W}kEO^Ri$`SfJ-hO{bq9mGL<61b5EoUY{j08?1u5u&91EP2m#X`^M$hLg6 zcOD7ik#afP;W4Ci4TvAVgtrk0E(eYf#@0Nv)g(mt+ZWg9A!@(gj^PPEn1=l literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/arbok.png b/graphics/object_events/pics/pokemon/followers/arbok.png new file mode 100644 index 0000000000000000000000000000000000000000..5df32b93a58f519b9cf65f4c9396a7a813aa4d21 GIT binary patch literal 707 zcmV;!0zCbRP)FN0Z0000000000000000000000000Y*?P500009 za7bBm000V|000V|0Vb6__5c6^IY~r8R7i>KmA$UpFbstS2=Lw^FF-3wM?*GpcSZ1> z6Cit_1Zw9Xg1#htAF`%a|n1Nk4d|;~2iVW8T z4M0%ZX9Jk@Hw-J)2NYaJ#&Av0!1WUR^^zVn4=T=W%P{!E{+bmTjs=rodTQXjJM6zC z7V*TmbY@~Gy2E)_z6cbvpiaC;-etk+Hv`Ju^LzogZD72UA5rj`Lgr=h$;})u5sDIS zC>=aAaf}5j3TnA1REO868;TUersk=k90t(2oruifTNJ!?DaU^fgDuV|4bV$9#PH+g z$c=p94U{Y%Itt$VWZ1jm)r)i@Q3VgCFksv{OB%)>Pi_zejn0fuiI($;?ijE-H@t8% zsPK34ek=RI>Lb!|33$LaS!dIU{d}TFD^C_oGT>TNjSt1 pihTS|_BmJKE{-=AkVNtStzR()*PgqfURwYF002ovPDHLkV1luLGG71y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/arcanine.png b/graphics/object_events/pics/pokemon/followers/arcanine.png new file mode 100644 index 0000000000000000000000000000000000000000..ace23f81bf91be545a6bc419b5c867fc479faa96 GIT binary patch literal 1005 zcmVqN1xltKOF&VM3(OFqp0RaK&>G}C-F?m@zF)=X!0000000000_NkAh00009 za7bBm000XU000XU0RWnu7ytkRV@X6oR7i>Kl|gRQFcgNpiR7(`f+E3+!h&TmBjo^& zG_AU5lthY#TcAn^R^!H@X6Px8NlP)_js>9rLp}AuAG6&5p;P^VM-|(={W6>5R3x(083bL^>!i0JXBVau$~)1RFXn1gU>qn%txi>_8t|KSs7DM1l$qOsmHe>($;uj|u3^vo!W-!#V*yfr# zIUl$v<`s=aGJHYDoyGa$%MVFH!FXq2xHnXSzq?%T&@`u8u9BDNo{OSQVshPb^=3t9 zNq*jJx*2y_3I1tw{chI_l$v$J+g6ZW_xIDCuMR`DZ3)aH$=KDWrb~s(s-ybwfYR5A z-pX0ewSJ&%lP9*?aHldrM4zH6qC^}uADYvXDOQ5=@V)=!r~_A_}Zs4;LD(r{!5dN-`OI_CZ1qxh)# zsS%}W3SeIk8?ED13yLZxBxGg^Ma31HDa0%(l7<~uv1V4}YlFyp&SBNah3Tm1SQ}g>CrUqMWw*kwrkK^#KR}V~zK2ZA_ b_*eY}TnlnUfG6s@00000NkvXXu0mjf6C1~1 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/articuno.png b/graphics/object_events/pics/pokemon/followers/articuno.png new file mode 100644 index 0000000000000000000000000000000000000000..da3cc960efe0c609d43035f82280495fc1c9e8f5 GIT binary patch literal 1286 zcmV+h1^N1kP)R7i=nmNAdyG!(~OY!~sWtpHJEm1@uw8=)if-lW{4m}N38OP0Ki9)%U1C~DiK~1b3pnk76eGoSVR$a^5LO>&8twxzSm8r@&cH1QQh2Tzhkk*_udoD) zu*-0>`RwY2A;6!?o~SM|O+b|s+KPcGq9STAn`w_%+i8K?gQMh6%-Np%V@JUoeK;D~ zXplfhR2RnUMhRF1Nydl>aaU@O+cZO=oq6<$5&(5{2LXuvvAKuZBFj6X6>TatKxfdV zIi+D}g04KiO$$-z>5KPK!BCYriH1L_!(XPKiM%6Ho&K*Hb28tjv;)RA45!V;dVHG- zAcprhu-ICUu@z#q=RrSRKmGca1i%SVoBjOdLS%OPZl{QL#zKwa zw-4gub`W5S$h;7*7LN0FY($-mfO;z-%5s*b*ES~MqW`VVe$m&aV&sJO(g%vm=A{*ednUJmkOtP(v zcw{d!x_?*ed^JIv1&@e6HiNzI2fTzJZkocnaA|L6I)<&-T{G|p0o*=LeEagLJ8OP9 zKd;fARgZ{F20%S^(U?Lio2Fl&Zt-eRfahX+EvtaftiX@w&T~ygU0%F*OaeRmvJ;W% z@99pFL8K05|LXQ3qav{uKz#E!3iwHB1zxhDQB9Nb#ku<5lr~dDx?8Dj6}@qKKd6vJ z%HiQ0&FAMybYfqpX*N8i3Q(U=2(y*>QxUlW6kuNmfDRN{S48&Qv7-xmv~0+{Ja+{= z%r%-E2o#ZVpqrH@XAqGgApav1k$a5<+^KY9BcI^%{&L++&iXGIsQeT8&{A)+afiwB wpZgCq{iy`G{kNHaX>aip{C~B-0aEb4Y7f3vasU7T07*qoM6N<$f@{lL&;S4c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/beedrill.png b/graphics/object_events/pics/pokemon/followers/beedrill.png new file mode 100644 index 0000000000000000000000000000000000000000..ac46df2e137b4e8fdd88e131e33dbc3960804944 GIT binary patch literal 861 zcmV-j1ETziP)KmBDYDFciiuaWTi-lIs%^aBJGNyCbBI z^Rz>cRU~V@GAgGxnnsPe0ig;0Z)am;Fv&Vi+IH$o6y-C|zwbTg1rYj(kN8i)kz4*t zzFWxmUo@1vxwRl(?->qJAbA1j?*m%_#8!!=UGQM2fQSt!3EKp=!3l6uF>>~MdxtSp zKnAAd9F+)1mI2EZkm)4GIsj&76S^Vf;unSrIOJkyf3Y2Du|n6m1TwnTnlb^vJFSJG zLkL;nQ329W>kb&uq2%S^!O{r(bS;5YFJd3)&EfDl^@HB95C#vsp@0`@*lP*g4M2yy zl4fTaWT`KKkZC{$p#*}bHPGxpNJG=0*H7}g))LsJ>C<39EG;XF6!5mMFuIZzUK;Ju zirgPFzt=t$hDWNj0{R9hPLI@?KQcfYuLFMSCt>5giLC2JYjK28I9tGNe}pviJ41Cu z9ngc3!PT;kz%qaiSQ`U)`$1NZy~Z1wC9_3LQ$6gpHcZPA&haD4Z#?u^0|TRz zuVi(nXBqFB7`%N0UVKyzwXX~nQ~?u1TV8*w;@JM5Z#!VD8$d;~6-Ur)dAD#(Lx`cO zy(k1Kk+_Hfq+!Ag@XK%?a5$f}46F`#2P|4884cs)z~jVUO9!_G4gwy9;!D?2S}Vhv zvL3iGKykU`bMQw7VyTfpl`non0NyUWD*P0bPzbySHw>F7JS$Ny3H0UR*Y0uswTe z^I-!OV`>a}IR%#00$FhabkXu+e7~ORiQyDjR@2AbDbPXhYb$>WEbWKM89-@1&g)73 n1bBi!1^h1T{4>Ch_=ETfoMSxQjC%l100000NkvXXu0mjfxh;1W literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bellsprout.png b/graphics/object_events/pics/pokemon/followers/bellsprout.png new file mode 100644 index 0000000000000000000000000000000000000000..20838a022d81b571c37942325630a3bd86caeac8 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qAuel97=y(9!T? z<-*RJfh!#gD>+$rE;Ri3(9Q|{J8U4(?!Qkry6xRD*Q}d5n5%^Ru$aulEsYm=>mfbIWZ2sh(nZ&9+Y>m;sVoi8g7x(UtHtlau zzS1jMu+h@C{BS|}n!NWZXRcl@JaF{i1K#KFcI>%-ddA^NsaCtIKIG|tD9h3f)2i;b zP~h1eRA>FJ?C`o{Z;EHXDSi9>F<-&N`aMsLu5Ld1ZtLydYGKcX0Vn4@?ao~;QNjJ+ ze&IjY*p1Q8^MrLD-ip7lqAuonVv`BOC0l3ii@Po~9Zk*LH~sg0_t%r^^&)5Of68q? Wd1m4!?w3BGp!Ib1b6Mw<&;$UGs=Fls literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/blastoise.png b/graphics/object_events/pics/pokemon/followers/blastoise.png new file mode 100644 index 0000000000000000000000000000000000000000..018f0386914b0dc1d4bc7e690cf2566fa34b4202 GIT binary patch literal 955 zcmV;s14R6ZP)>48xR@yStPVW}}WS&4~>>FN1VQBk?Mxd8zINht}jaT&>}Q2+n{Xr#Ta00009 za7bBm000V|000V|0Vb6__5c6_F-b&0R7i>K)jez5KmZ0{O#-7yr9;6G=oOh#Lx*Z9 zNjw-tArvwwIoCvsF_l8?IU&JQ3nm|4LZQ@+$P_S%UCPC&Mn5nn*WB5li|-F1HZV-}>frp;E=ZEm2OCWR6!M0^1ei*#xZ;jX{G zQ47*`(}wf{*lix57_SB1h_R?E079cbo~=Ceg@uT>ufj+;I;hh1Ro#F`ZL z4mLNpTfqXtE-LAli*pN=&g`gQ%-&-;qk-4_;E!86?N2wG` z`ZC4u@I+PHX;rQ9`P?oK`~nSg=^SIf;3ISblVkZKxjU>*4bV%0t#c4Lf`YyMQD;^=1Vv- deT@Hd`~}D1|2TWyKPvzL002ovPDHLkV1ho-wGsdT literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bulbasaur.png b/graphics/object_events/pics/pokemon/followers/bulbasaur.png new file mode 100644 index 0000000000000000000000000000000000000000..637615bd8cc0fc9a6ca7434f6d365149205d98d6 GIT binary patch literal 552 zcmV+@0@wYCP)FN0a0Rg!&89`w&000000000000000MoS?C00009 za7bBm000V|000V|0Vb6__5c6@o=HSOR7i>Kl(A~VFcd`vnT#fpAq4+~i$b7uYaXV; zYlrMH4@##@{*9Q1g2x{jA1mcq#`Xt4uc0pD$iuW0Im`A- z;^C$+TVxCCipyk`gds#8E@Bi9jCIRhZVcyF#%@b5ld2inWteFiBkow%Zko%w(C3Ep z_@m>Q=A)@RHbRO@8E^?kB+cZh0_gVt)a_0bd7+xG69;OEW<|2VJ@4- z!U}L$KM*&Dq6>Juvl*E-oDXw}TTC%$?aW=)0WYtZZiSc0mGv9hT%>1w$2Zw-k;~ff z`3vzZyi9LRVJkrM&(9jDnUvQ1x~vV3YGc6qiZq{0AaKrCiCM3?wFqPl2uasibJ`CO z#~7sb2AYjw0F8u?selAd)=^P_1n7+jDk<&5Lnk7R7i>KlQC->F&Ku0@!~~6@Rq4Rpq(7J z!NqtD=*A|#7PNy7lk?P5_6p#!0uNnWUoxCeoqO6s50$$QD|l|#u^$}j^m-x+o%xl;ueF(<Ty4;8(j`LQn$-Ama2J=X+bk z%wP}9TP9RgWe5R@tuAy=jBX4wQUH$6w>SAk0K@^9fKzR_1=au@&`hKq2;$k81yGCJ z0`hb#?6@&Jf*N&zPkXu-)cqAwN`|{%-(O|+5e5ge0F{L#Z2|U3@-v!^-3b}PGy6jH zj_$TMuW83^K)*IEJ(t&$I$o25c$HRdzsAjGF%&t9z$6Qw4Ky(DnbPRwL+V>~M$cUUk)rGw_PUar?m`$ga-Ai}@vrGvQz3&3T= z(tcT@`6?k)e;K%>F9Meh>*()QdSzruf6Z`JFV`OeF7H_7cL**30000Kl0R$XFc^mgh681jJ@k5;Uqf*>|AD*9 zcwqWDj?{Q>J2dImK!}_v=?#rCwcOxbK4oQDPF|^vxk9`7H|eon{T@3JA$|Jv>C@+< z@})?>7w?(>okqoe{XYk?BERSm;zGs0z;EaC%gB!bi_-Au3e)2>@ZF1ponl7h9;3Kt2NW*cPI~SAwhnJZcM7Xeb5Y`Ej8opi{|E zHjrl{DHuGp0xjGbg4y&8X5~?#QCPEE^J%j#ijnV;?V{b(LjFV!q2)A9N>pGAQK4cc z(Qo)638%~>RV&cK!59n3I)ETt9v7lQl@$Y@HS-U_Y|T8=U$lJ=f_Sn=DU^I-224Mf;KnEhsd!NnPVFX5wwrtxm0dqV4-|FYZY#PwdZexy{tE!TX(m82die;dE~ zc0Vr3OSkx#UJVKM{hDqn{78IRjp>V9)4nffcyxT3oz5AT+btbD3`rZMj4ztale{%O zN}_Pv)2i)799)J;hqe@-e>;<@qIOQIli7?_3*S^d{r2YVlUWvP83V=Bqy0KwFJ%3E zXW81$%bG_RqCc}b3kw~p;ykUg_rslK>$7K0Um{vK^H8mjGw0ihH?A4qauaYo=;rg| zrH{?>OiTYs7B9{2eyhBGO6XU))tXbemCL$+RrK6;xSi$Urx6(Z>yW{#)zKZRb{#Ui zuq`U2&}vJ~nH93uzWnF2Kh*X;|9bOUvSo^r_u`r}9R}qG~xI5Eo_LZQ6EC<^N&wD^4}(JXm`_4ivSXu6{1-oD!MKmA{MQMij>fhDCve1r=VB`vW#91;dSu zO}Zs1+^jjoZPF#mKAX8loG%(7lOhpoi%pd##kD4*&8u9PO+e)}DfX%qY1V(j{SO&w z^vfpRR4D>Ch4Dukz3+S9H$Mn@Ki-f3%Ww#xk1=74Jj(wv=!%embC?MO*onB$gzgFM zu~h^N4m0IK`Oab15B%Nudu*-JbXQ=PV;_-chnevmxjkkMvv9D&fHid)ZuL}*n2F#J zGX&;#@+o=NR0FGwe2w_)D7*Fw0s56)vwdoUS^>|&x2mR6wF-u#JKq|J;&rH}3N>-BL{M5%aX%c3?0jtm zy!aQPzRbKzpm%BbdRz&_0pHvuR@Rst4A1k#Qn)JA&$OK|l~2Te!O7xjsZ=JCJaDV?cnUH^E?MZ)v9FoQn-81w%Tl?gXfwnPW^(A1KHD@OYVS9hS zg=PIgWVjYs%1{SfOk`9EPzW_oTY(3GYSEr11;e6qdPVTvcKa8!JuqAeN4(oTlyJ^lqWw10)UKDD7yQft4<|+b9hVF^P5qYC(X0Q?O2%rPFZA+LHRP)Rr~x ztxrB?%$4m2a>m%pA38UV3;IBA-_JC6uP{Pi!mNAE7udZ-Wp{ENRCY;9t24(6q*!Z*4GSN}-<;$Op zjEp-Y6(4G9-dt&@=^6R)Vj)l!8aQ*{(Nv%iXMsm#F#`kFTo7hdn`--wfq}8j)5S5w zqx0>gjec7VB-*5%ZrF<~lFs#e{6>~RvpHGYSBAfHQUPOn!51+fo3`Cs11!Ed-+p@j z{SoW0nGY*(GbvVodvkO1^Y@1$1fSH4x-hJqE_r)b-LGaQVZI5Xa%SiK4!0=yad>$c zv^H)1bL>jqGW8B~R>j7rdAske)yX~RAfWCZqu?l3*SAD7pd){G>*AbyK9}SL*YEJL zV~WwVKQ2_2VOaiFYtMY{W6F;fs{1WcZ;*caJmPunH6^(?v1K33#OH86dgwFf$m9)Q zjWa(LhbhU~iLFyh{PlODxZl0IOqV<^q&7UR+2dy2^srLa>w%lZR=I7K8F$4P*L`Z- z)hhZ$-0n&c(_`_6)86*AW}IROcUU=n=gm#k349_SSS23bRoDNUQ|Ik9wZGLs{1rzl z!;#C}Zx3sPG?a3QYI!W&Sx_=*rr5bxCx6J!V_pB)^XE(xFY_G%*5N0%7S&F?#`F7Z z$k~=^wLs%=k4I4pjEhzI&b^+kf9fKCQtNHb$2!dYIbyB?|MT}T)VL=wU2+z_28uaP LS3j3^P6G}C-Spfk7000000000000000##oNI00009 za7bBm000V|000V|0Vb6__5c6@+DSw~R7i>K)Xz%8FdPT)UIvAp1c!nTAbWgv^2a z%mCI8EX7WpRA@pD2Y_ifNs)UfpwxrB@S6c+u-h@!bM*u3jU()d9bi&%1J~YwlEZ4# zr=tiP1w86oo)>;g$SAZs&G;Pns$q&fwgcWzfe%{0h1oLX>DCekgy^5Weu|9(qy#Qo zWRSZXZd`9IxFES{cpYIM+W`s1hxx1PDfY|ONl7xIeV_Nq+KRkkLtOXlq1b^?OZipH<7WENB*PE;ElbM_hAyd}v zoecTRvMI(7j&F+2HvKR yy7}=N-VlfD2JVPEq*}CqR@pt2Gxuw^KdcY*yF-t7xk0)B0000EWic{xe>!NC9k000000000000000000007!~;;00009 za7bBm000XU000XU0RWnu7ytkQ1W80eR7i>Km9dVTFc5~3XxyTG5%y*;9OWrjY@O8> zd4f~gSh<02B~WZ?6v4c0#`c1ZW70)RvA?tu-`M_VY!6G8J@n8+5B(p4a{G{Ct#7-` z>ilDZpD(~GZaG}bJr*rBd#tt4Kd#;|<}7=<5(paWUth{3KQoizYl?Fsh2H@dx0p@n zE73r#%PzM}ZJKMOSw3Aai(AY##)imC%6+yS*{UDNg!|hLAC2SG9m@p2*v&wfPW?H}85DphkB2hBHBY3mKll^cvQ^hkHC5pqSeAFri=wFTSQLi@n~5~_{*EJd zD>$TrgR2~m%Q&3gKJ(AN;Q$)hvvl+J?g{Nwn z8?&ppF=?CiVsdR6mxKy{bPMaEkgcHt3=_=g*(Ffe5(Y8HYDplJoKc}#6FAlu2JU;+ z_{GD_37Tz!yh5Wefsy|^QL<^|-Owd8?B*-d8$&e@Do$`Wj1zbk>@J%u$pTSh9&jek0 ogz}BS-v*;8dGs~=Gw@IK8%A$vBVO~Bi2wiq07*qoM6N<$f_51mk^lez literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/clefairy.png b/graphics/object_events/pics/pokemon/followers/clefairy.png new file mode 100644 index 0000000000000000000000000000000000000000..219f37e4c0ca3e2f3072c23db8689624111eeb2a GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpm}u$v^5xIU zNXwNgS1t@p+?m<(5=-DKc?KzH9->jXxZBMdzlhm0be&Mkpk5VU}w>Oqh z6-zol&$jy8pT$>>$H&-jIJ0f?onVnaA1A6#P+gPt^GaLv%;y4`2ZE<*W^~A9J6*q2d+Sg7=HU4tU(HvU!(%Fg)XZqgkS(?6MM(&EKw-zKxpjd)B3@ ziW@qqk>^-ruiVPI8+f6ivQlZmHAlvG?Ys*vw(-uG&bz}$e)<-TH(%0zuL!lRKbs$X z=XBMVg0eF~VTZS@&g(OLKK-S^vOQ~`{;OQ@SyIhAl2^g$MndV!H_H^h2W>bc9y59A z8Xwjt&m@W&*C#gZJ#+d&dgDidJxXa8rz|dQ?udLO`FO*;Y1NV@y@tN?zl2=q`zx^3 zq{<|b`I+iY!?Y8Zrm;A4iZ@GkeGorZb9SK`*LwHRz<)wwHLE|J{p)l!H*TKRq}k7w rzj|lYduM&qqy*VL3TD>FN2wvFVXn+a0000000000000008gM_x00009 za7bBm000XU000XU0RWnu7ytkRzDYzuR7i>Kmc5UhMiju2C^Aat>fGK{SFTKg2wkN7 z2PZ~&TeL4|s+?q*RVwx{!(-aW(ypsWXy@?!l^Ny(xOKdhlQf~)9}j--y!qR zn+yM8Kgqwf@uK2yp5Ri*%P%V+^%b4~uf<;^Ac)mv1*{h36>jr@WGkbFcI|vwF$Z<| zkwb-IxWaKB61rK%cTHP-wPMbcs#nqJg%m~P0PBVIZxfI6ACf7-9Crz@{+o(JrLS?- zE!JTy8!n>&r@q@9gOrtwZ3yaNF>#m@6iYnbVGA~{uLN zc9Sln+tY`ts^0aVs1@u!TRs~BPGh52t`>qV031s|D{S?&RI~8@#Fz!2Dan*A-4Wsg?aewsF zRxt6P%kX2W7lviGEVQtoF`I=?H--o05*lIm>IRR?I_UA$>p7p^9vdxum^bh+wd~?g zH@rL#Y8HN1Sx)C2H5~gR;tA&yAl1+x#byzfh=mvGmMpshwNN#=YP^tihHLZ<1hE)T z$J0@9-$AMR<4KJEND*q(!gAh%iDNJ1Y#4A1yzqO+^F`Pwe!@OQFl}6|{Lo}SYk_l71 zT={}ao}Ll4c=@kk9P2g4$dmeOj7VM_`j>3(UHok!HC~N>$(O!=?fMJIOE zefsq2^G`zZY0C-N zCKyWpsR3HsQkYbLL==?W9GurjM+y^a0#MPxew{Ncysnl>Fw9f79hLSVlU{kB71i@U9*D53j2?c zl;{bOJYdwZ4g94c#Iq%q8-rhFZnwD|L;mmB8>~uWXJh2cr zuwfj#nSwz&RalR++2;A89oFNUaPyp@)3cC={Mu4E3ukz4?aNcx@wThas~;-sxf?J~ zELhKp$Gi*NK)?gG{R?P9s)vwITi*oTV#JjW)Nx|z&2ZkMEB4-+=BGrA&!i>Irue~^ hFF!QjU!C+H@*Czh^R)5dFzx^V002ovPDHLkV1mB*W0?Q| literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dewgong.png b/graphics/object_events/pics/pokemon/followers/dewgong.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad0a155eacf1b645aed3bf4c245dd88aa39ca81 GIT binary patch literal 800 zcmV+*1K<3KP)KmOXFVFc5|f5Yi7&fp*rBQdfr*+?_h@ zhFu|R!V2D7ApQM4ejFt_cDe)w3WSrNgnV8ezwF)aqkXjhr5RJ8F#C7*tFiEFeBS_J z%YXr11&F`!+fAd|3Wc)ct1kPyTtAinx@O;7l>uPKOWErJ{nI_Je_ztLxO17;b^y5* z3I~_25Y~XUzsEH~FbW+Pnt6LvTq&$O`*@nRB_g8T-(lJ@@Sg{a0n8leTXiM;ZWo8g zl?M`T_kGL4f0iLNY+Ys!ye$N^5emhFZZHc402To$@RqQm1wfo`3$Ixtg!K{z!cobb z0&fW`O9ps5zzmYBf1%-iTXhIv=D?f6=@;6U^)Aq%L8JRE|3GGKFA8mA{37iO*08@L z6uqN4tTWy@AmP)7dz(3|xkYPsLSFG2a3!QAn6^t&2m=pxw9EtQ;51qmycgMU2*N(^ z@Uw@g(_Wrq2&P<1pW?j&<0_bS;YVr7>Gj2Z-;LDsY(F? zt&2hz&$SsGpj#{~97tomj{^j>$`=G#06r4g7Y)v zr$C&FKoTUOVgZ+!uDXeh|Y z$mrD=jZNX1*+(dGh4RLQh4YatNqw-S`s7;wyM=+<~-* zIXYWE2Y$IUv%P3@w%+F1rX2~}?KPk6p85a(PL-}E2>7?Ia+aU`l9x-<|I|L%I%V5w z&zasoE#%a><~pQqip}fV^`1B7i})`lcha#s`S~3(7vAFV>X*C(hQfsHx2K5UwF*o)^dY$|J`dDSI2c3@t$}y2Ndj{u6{1- HoD!M3j-%Q zIyy2kGCth+5h#fZJiX?B3n<4~;1OBOz`!jG!i)^F=14FwFlu?aIEHw1z70Oz*KEM^ z=3q^O<`=ooJMzD?d$4?8rX;`N>Z*dq7 zb?-tpv$*P-7B;9wNw~BXY<0d;vf4`E?vFK_!U`E)O!Al>`@pW?8JFzwDpP?uV(Z%f zc&Xg@dT)VKcd_gaZl0J$z7BI@#Tqv$Ha<{9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dodrio.png b/graphics/object_events/pics/pokemon/followers/dodrio.png new file mode 100644 index 0000000000000000000000000000000000000000..c25503d7df045b85eb348d006a8c73a3fa52afef GIT binary patch literal 1088 zcmV-G1i$-G@$9A-O?W;enC)u`xM0If-#85qG&&00009 za7bBm000XU000XU0RWnu7ytkRwn;=mR7i=LIIINo#C1z`OQCRr1fr- z1fpj7%>4BE{xma^jnMz(npFR?V8rDl_=kaY)tut2^-l*LCbmNy8%9imlha@ybObyJ zCduHAdVpgd2aLFGt3f0%35Et&*d7Mp1$!Z&wf)w0HMjxTZ9&$BerHe*=dirybc)<% zm4T$HE3K=Fh1(GXF5G8S!eu(`yQ?i*Bc_xxD{M_*w+LC|pNF%)BM3ZaX(n7D7(8Z# zGF!1R!r&4DA|sUjsKBo2tp4#l_4*EF;42za)&=;+poKjvqZH~; z(JH^z%qg82;UpkdsLqQF%(-q7>UoK9U=NWDEa7eV!ya2HBuVQVA>QwJBAIYHjg3%# zJdIH0$UxYL1=98LRh2c4kC)X|V4p|{5vda+Ts?{6Qt{h-!;BEY`7%P41Jmg1LVRYb zKFqGdKsdg*4V^$K#HG)SaFw8mFB#|Yp4rCBh8ZD-?PQWOhD<%GMclxfe`9=M2Amt# z!g-m-LJJFdG9_n?*gR=rTf|KSXIKfJi!3lqbUiA4UQqV_;YR!5W6`rJ$kI4%Uuz+< ze8~`gQo{0eGs~xe7J}faHf*o3O*xG|-aZQ$?QQg2-dE$mp{AL@=8*l8M?IW^z2 zyp}}@ulC*j??)Id;e>K#?snM>VgAL|i+bUhbC1$>e7jAKupIEZZ`BJ-zWwmHjgK>Y zo2VCV?{AK<8tA@NFEIJ=aQFDz30_9a=>7d;a)jjocb4>k(Jvow?~)T-wr#Q97DpM5 zbt{~D4D8;I$e-KB{UaR$59Z4Ponrhw`)T3wo8-+qx8R#+^6UmIKHlhD! zkPJF5&>#?mXwVW#hJhd$1&juU52O{x>4jSk1c%1|==vMwL>H_{7~=x~0000EamT(fKy? zbY8Q8z?K#D2TZhVn_Q>JDVxean85lj^a_86$GasScHytu%MJNHDmU6(abDV!a(we< z>)q271U?;L=KsSTAi;g7Q&m{G@i)W$_4bDw-+4XT%b)7i%ctmpV zeJNsjP_*yG`V2R?qT3m@msxZv7^o8zencT zz5cS}{I0YQHdp>e+Dq%os1GsLVxiN{iOZBd>e=^fMf%I-FE;z`H%o|Zc%-5o!C4w0 zS-}#pU;S&$>zx;F7F48^S}svj7rD90g?Z8Zk_&UXyh{|mtj^)FUvOS5T+WyC?Abjz zUYUJwijHiW=&Q@NW6CF;<$=k2lmQhjFX&_XCXfQ^_<(xyZ6*a9=-DC%tf1XtF^x* zpS8NGbdg!yjAcK6xW`velF{r G5}E)e>F_ZC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dragonair.png b/graphics/object_events/pics/pokemon/followers/dragonair.png new file mode 100644 index 0000000000000000000000000000000000000000..01c13c028ed073303bc85ec23b06c38bc9c3cc99 GIT binary patch literal 1103 zcmV-V1hD&wP)KmQQQkMi|CN>~SbawpB`3-NPE60!tGg zO5H^e$f2;OZJA4?J@s4k7Rarq(rYiq(8HjEWU^o^*`OHZAWce4F%+B}ydk%s&(L@N zXfz|bp@jC~90+`RLFrALr@ep$T|!SI{Ke7yuiH!hq6bD=??Y z>C^z=bJ|SzkF`aA-N5XgXxSd)@5)xLmk+26uGT@t- zG1l}ITEN}`Q1u-gN4;;$?%mHOT!31JLPd2Uior{k3V;ar| zM|jP`c?GLi2{q7pq5uREF8g>Bi0dCtHu6BMg#pEHN8yZDr~Ke8`1I;U;PwdzK;FTa zaZXI&Io)MyJ2IXT)8qM-*n-Yr4!EBj&)q&@2RvJJfY+?*0DNHv@bl#B>JRDGXS~ay zSHG^rYo?b6oxjkNpHZK%1MWTSlHM@A9BzaGbQp_PXfShcc*)85^&O7F{{0#oBhJ1bR-oc`?L!7KUfLN1tpw)i4$a^>p< z~_qRvT7NY>ph&wdgBt&w-ILP8Z1;OvlB4rr&d2**{hw^))``3f3<%a~Qyos*a> zUsL5D-zZb#wu*4gEiGivWfh@w(71awF(pB{QxZb1wccBB%_rb*`9=^QE@&Cf7iMbw zo-EgO(nv?824IPb?$s>lo8bAZ8k5M?x|~!#5$DI@TZc)IFeV+qjjb;kS>7bk8@+|GB7Mw7W1c}FDvkiF>rWkY9 zb)$L;=-^rv916B002ovPDHLkV1m7T5O4qh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dragonite.png b/graphics/object_events/pics/pokemon/followers/dragonite.png new file mode 100644 index 0000000000000000000000000000000000000000..aedbf448ffa80f2adc17537fccd64f99256c0efd GIT binary patch literal 1030 zcmV+h1o``kP)FN2o!O@vvF`1c}>B*U4VPVm!dD)3UDNnPS00009 za7bBm000XU000XU0RWnu7ytkRd`Uz>R7i>CmcMJ;KorL{2o2c^{ZF2w!HZ066mU&6 z6ydR=axbk3+!9BBK>m?Z8xL+lTZhacLomtEC4WJOQk2225=7|h{nAN3;iQyy>ccqP z>D~K&Kc{yWTh@OOcErC&|4v|VVfT8@vh%z7QFDqFcw~Wp6u91iXn`k)9Jf*4@8^a8 zh(!N7rkA>YgUE2)Z~La?lE(DtqAs~fG==FD-s_=3WH`1lr-r0OE~kr&YSJXKfk$f_ zk>S{eqx0Ml2tKVIQoW!-)DYMpl8!4oar?ZtHUww^ZLDFLM25iTSUT=&h4`WC)r$#% z6+ks-cO;QsVhZetaeKot8LJ&|pr{uU>;2U!z-g`u+TE5Q8iAT1JID$&iYz`**)2{NVlEJaUvo@DS1pGd zXu-S=uzP$@!F#)&h)r;I!xKp~30-L^54eDjzy%#vT^L}0N$HpgOkPSr3h$UeyS7Jh zm{4ZOJCrGLI6RR=laNn1fJj*VoZ`wA4#CU$7}=soI`)vRZGQZ#S0QPAq7^zpL53^=66Y`nx8-myHK43XLoo~&}ll(6S*bM zp(09%+#zlr1%})s50Q$Gs~saIN%%@_3!$b!fOA4p+?N8Dt%#20dT%{ur9CW02qIw= zNTOb(9diLvUJyIC#Tv$yfIEUUF0a?C7EzaqBZ<^wvKNRp#XVmo*n&tO6XqBTLaefl z4{p=kqYEt%+0g%)Wkt7Tsm@kJ9r@UDPzo?bnb4O+<$Gj~nL_na2j`Hxh_mYUAi=|O ziM}$x4z409Eg)|g5B0VxqEdi4W!=dI@5|+FrDzaYH0Li}-!CQ+b1aU!HkbuWv8r#`X^~~wH=J!DvU)y0 zwY_pnOrnP4J`>Q{JjRROv*-Oqnb075F=GOwk9vtg)NpLgvFcKh(Thkls%~e4h~3`~ zI{{Tw7(`9SHmP5BjQNbIk3VlC;u%o?ziSdT9iMeJ#-hE;W6~tz5!cijL=DH*V?Tnd zCXp#%5;Yw^6$TL>85xG)6OR8N41vENCehaT1wax&NL?IBYybcN07*qoM6N<$f}R`8 Al>h($ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dratini.png b/graphics/object_events/pics/pokemon/followers/dratini.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab1aa0340e4c86c55f8c78430af4d6b524ae3a4 GIT binary patch literal 693 zcmV;m0!safP)Kl(B2uKorI$uea!^K{#GYQcyZJa_P{i z_%xVK0Ubqn%YWd+RBbY~|A9j^yl$Bcp6pg4r1#JDPGH}APuN?Q;x`yR`MdA;-JMVn z9OpR4`Cq2zeqO(vKS-h=2(R}CaLxTe@013fGI|mjgBS3Ct|oqA&Mt7A`JHmWtf=Ds z0bNb};<=j22<3y`ND4Tc0mP_82go$_HvpHV2Z#cyct-Mj=`}!tw#9)=Gyl^BaG;pO z0`c60Mrhw+;Ve&ZL3#5TTd+GpN|H<9sBK3f9`FHT@f&-*d5&<}n1Ul`2JHS#_QhC5? zHn{9FfcSa4JYS;#4#a`ZuL1PdAC^DhA@{4}Zv)6UV7yw55P$ zu{fad7iUjFkpi_P_>xbMH`*^3CFDj=F+pVI4Y6e9yz!ld)EWm`Al9O+raJd^oX)hu zTMoZifI_cYtG5o(XnO?+;D9*>yjS+fxW?Z*7pO*?HPu^LtBmZR1*)-c{9%ssJK8-O zmub4$r|kvUNq2z`sK)Pny)-2U$hDgx$>%zheTB3Gjz6x6n|%MdZWqaeIwaaE869wU b^h?e^?||>8EtLu900000NkvXXu0mjfixokg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/drowzee.png b/graphics/object_events/pics/pokemon/followers/drowzee.png new file mode 100644 index 0000000000000000000000000000000000000000..983693dcd5603f665dfe04d6dbc1153be493dbc1 GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*tm11W}u_t%a=bh z11lLB87ngt4Gj%no(zl(^aQFx19tXin}9-`1s;*b3=G`DAk4@xYmNj11LGD?7sn8f z&bLzx^P3F>S_Os9z6lFSYxd}j_$_}+c6q7GwrxR+dfr}Wyf|?}UTTNZzuekoN7I{5 zURio7c-s3Dd!O&NU^y5X9$R{K|3#a*PYMLRX08j8kKZ!?{UuF4B>@IQ5xac_4XO;) z>SfN?su-)ZI(`B9QoWvO~j$0>(^zpLW`^zQpACULXws?}K z5%TKsNoE%{o%fI1?_6(qcjM^<i5O)&pPQ;+N*6lO>57Y4XwS!oTp~ypIG*A zUCNp|jha1gcz&;b&ceZWe$E;56yr@h*ekk&<Tc5MZrY zer-d~MAv#jr^dRH)|SPOg8#pF`IMbuvF(neS&!;9gDB>|?65lN>&^UOp|HVWFXwnx&agWTU0ZVeOcKH_mTXxqW7Zbr z71U*N>A=~Se=Iq3CM{l479=iHe^+46Nz*ws?^^oB{sr8BuJOa@-Oruspm_Fl^>bP0 Hl+XkK{YvoW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dugtrio.png b/graphics/object_events/pics/pokemon/followers/dugtrio.png new file mode 100644 index 0000000000000000000000000000000000000000..b60c3fb73ba29829f09888c7ad535c529d7f4878 GIT binary patch literal 764 zcmVKlQC=KFcil{oPK~@#x94GKnD*;+?E_T zP%cko4T(hNa?5=H2k*@yXy!uu0s0wkwz=X#TcL16zDu8E%eG|BJveTQAdsJ>_y0Zl zC4`*TX`R+-{q^#~@L!I5;q-%wnGjz(65K%dc)Q#YdP0bOM}>p#aW5C*u1iR~dvR}7 z*a>c6Pc#F4|616BmXLURnOOo`*mD9b?hS@dKYn%!@zBfTbNXkYD`?)xyB!RFKg>FW zdW6~W)e_jk);mYe{LlLP*XQ%W{H;Ss^hlyGssmfXW}xO=9I`TE{`h?`oYewXX!?_~ z4s?Z9pn3@-DP<;vHhRa~!Kb_qbcLjxs2qi+!LRIkc^pIVMD!>&wfq27$51MFJ6P;n(rbAa~1y(Gj z{EO}!BuS(7v?5W>;rg&BCR>GCZKieS62-_a(XJ=~^N+m3L zk>BaS^s;1`*6iVL{-6XYFRoV!xe>5kfE-}klbvR&8HELJH}Y2?(@~Hys`u9wtNr;K zhGB&tYkeWC85al2rN0isXuMDi@wWhZbbMu+*)kaW0i(cT-P9Hg16TKt~#R98+og*egs3}Q$agQVQ0JVrIcPc>v+!ht|Nc4S6)%?kSL u#&DmKJ~zZ~`V`A~9kv2WSG1Y`Ki4~`z@qj`uf$pa0000? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/eevee.png b/graphics/object_events/pics/pokemon/followers/eevee.png new file mode 100644 index 0000000000000000000000000000000000000000..6f69d899a66c123f36e9b7c2a0d2be2c9a01aa72 GIT binary patch literal 546 zcmV+-0^R+IP)FN0a0ReeoK>z>%000000000000000F0hie00009 za7bBm000XU000XU0RWnu7ytkPm`OxIR7i>K)In>5Fcb&yoB}xtYn)e+eS-~lEk$T= zWmxcLN{!2I4rbPG5l5@!I?ABma#5HhsoB_Jhk^f|e)`@^U$Fu(Wy+K(Q~pt)a2qlJ z8k8aGunNu0cGIeX!9CCi7)CxrRm+NC+%OX~(FWS?8wyey0}O+f*JasqF>YAxla2m; zEvq!V=4D$6mzBDY!+FV>)P7Oh-N1sYP~kH2I}Zz)hQ42E+g-SCpsK!NPJ^SGI1}TB zoELhn?H>p9TT9B0*|^&mzoJ^L?LOp@zmm*tc?zSm7&o~lUJ6h%^jhvyGcO>*X?Tk0 zF8UaE9*|kuwEXL#w%s=@?>u}TyS<`Y`s6TrxJ`D9Ki`0H_t)lflfEt8{=oAXpBv2q#3CzIRF3v07*qoM6N<$f`9VyKmY&$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ekans.png b/graphics/object_events/pics/pokemon/followers/ekans.png new file mode 100644 index 0000000000000000000000000000000000000000..dc315987acabdc3b2d1bf3f111f3bd9dff9cbe15 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#_tTzPS!VPT@?$;N|~ zft87dnLlqjGBPqwOq>W*f(dqTs2&4~au#?*7Bet#%>`jbwW+q>7#J9jd%8G=cyzv< zyfN>Pfk4}0uW9MxQ&Zktv1@4kz-(Zk*2Ob(^`dp10;bwsKJPYG`zhMZ-jcL1NHwqV z{kebj@il&vs_#6O`~JiH;Ff)B6EsunydBk+&iT6~?)3%hXW1; z{`(zZTiS4(HQsn-&>O!@p*Skux^xjE|^w^({_*1mW>-$N(NCc3gYyWcTU zTA_G3Z|{P6Rn1pstcm+s%cD?{apU3vpA>6f|KOCZ)n|@ueK{v#v*eE4mWE$f1dq#y z9h@VT;NI-0nz*{CUh3K^*?mIWKAx5?X!?EUvy}a(cUJ`OFWC1jxvPzF`l&}AqW2tD z2`QvMNs=?_4Nl~YescIHhi{zL3O2@loRzB?w6r@Iceps_$1%uUvPqbDtN2my;+C)C z;)dtmB>KAD@11dgWpAajOO*Sb&+hX|+U%aFrSx?RPiEikJE6cb`2Qh}DV0Y)runGU Zi^tb@?$~&x%Uuu@`<||TF6*2UngIV)`<(y) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/electabuzz.png b/graphics/object_events/pics/pokemon/followers/electabuzz.png new file mode 100644 index 0000000000000000000000000000000000000000..6a24e3dcb746972d617019c386ecb189591dee4b GIT binary patch literal 692 zcmV;l0!#ggP)JkwG~j>FN1NQBm>H0RaI4F)=X!0000000000000000000000000EL%UF00009 za7bBm000XU000XU0RWnu7ytkQDoI2^R7i>Km9cKyFc5}a2mxn8u;evwAVDxS3n-ed zMja3bn?LiKmO)_B9A()R`sQLm`(KR8@$8QJZHI|CKT06a-@%JUneOVocsfu2kNNex-hAC=q<0s%#`MVZg{Qy zc5w2Tb!_<$s+3Gy;S*Zkbw$9fdn~dJbk)!t_lB5t&Dt|;{$^Y{!!5Ub+8-UuO7qWI zx9oML`ry*UY~K8J3*BYw77VRr-wQOet-iNNAKB>-JJHG_sr-o)Yq{=T z&Oli9?Nakwl?D39PA8CqtjhO4z6daMn8y@ybD_OA)ZN(f^Z?1ZD+ArKGu-PlmcP{C z3QL~5=M7>LRa&cxqF!S-MSIL^QDfb(KWEYn;-a$=pFqHwA|4m$#jmgPgc+B}P?}pq zk2m;K%b=(yMdR(Z{Oo^j$gApo z&#V8P<^28cQ{(S_^N)J2{;;mJ_~zSvmk*l+-m0^|TX9*<-(Ps?)LoZd_|Mw4dt7?) zd&yZ9=@-A(?R)cS>tZ{ZB5`%!saHB*Sl|C5>-(VLg}g?t)?X*PTYtRo8hq^jZLm1| z$_u%aGpzp(hP)J;b@ADmKacFT7_q){Oo{&SC)nuEQ`UDSZZ%RzZT;SztD7J@p1i6#cqeTk%dEMKmoiRE>aMYFl;4mWu%l_`SxW{LhU0~slI&L7U6@|7qb^Y@ z)MjOuE#I6=UCc}0uF%SSp#I)cL%VBD&0Z7z51nO}nbF!nZ`|+6Sax*VbLnFCT&uP5 zGu+yRZg1(>miu{|%}>!5 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/exeggcute.png b/graphics/object_events/pics/pokemon/followers/exeggcute.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a0b7b278713df6af169a1e72a7c687108e6dbe GIT binary patch literal 875 zcmV-x1C;!UP)jfxmig;>9INS(b=J4X#oKN>FN0Z00000000000000000000000000GiKA00009 za7bBm000XU000XU0RWnu7ytkQ;Ymb6R7i>KmCI`5FcgLbUT7^F>e=R);4FP)7PGJku*wZQyA!CpkC!O_WvCn9V<$GU*FgNa~1xJ1$TD-Qem;) zwO56oT-sk}RlLFes!*xzHREwNf6V%zRDS~Kt_bmtef(I6^)wgtW&ARAs)uP6U$_){ z{xMjXb525j9N-Q!8TNJ6$42~Tul4aFSE6ert)(VGF#bZOsbCdPy*CBN1+C2 z)i{P{=zqK+oEl|TlAdcxl_~-PSX6_kS7z0I! zT$n1(l^<~GPc8)FSGWjElW{NTg~m%@68h%XfQi}}YCsA^Va=?@xBv`%gZAV~3DkH> zFq@lwSYA(oS^|?$!^l0+qlOKv{6PY>tG3MPL#IG|;mJD*#EGX3My_W;XaM{n28xh4 z?4tJNE41r)k`!2Q&Kzi_skTiW#}aztwo^%f&xgRjT!vjd?i@Vh=NC$*b0}vCGzLHY zZQ#vHSOmD53h;R^fg+&yoy;u-PG(3$iNDU61GhXGUEo)fu{QVt@bePLLT2sbiW^g< zlZ4NqoH?*l#RfJaa6l8EG2+O(%7H8#^Y<|j>)FH`bdu&A1Ai>ibER*du+ogZS49>` z!kqbNE^wd2*yEg5Ifp=PQqw$DnsMw)e4d0EOQ4BI6)kbjIRq*G?q^Df!7+0RaJ7NkISr00000c4My`00009 za7bBm000XU000XU0RWnu7ytkQ<4Ht8R7i>K)<0_-F%$rBfj6T?=tg~rJI>=Rhc$XC z90#Fu=+G%}92jqf5@LUYbO?ns#`Xs=mWNZ$X%bg~E?oloE`5ssL?=sWA$05W^m~@y zdwM>D5&9p09q}Lh)@XHK_nV>)5$aG}S029}F`P!qZ-`YlL>;zDE05tmVY8@deHwTD zhQL9$m9A3daVx1>6ejZ+PNNlTRBIUFI*x+6mokqLCbTADOqj=FHtd8DDG61(p-iuM$|OrAXKFic z)0?J**O3a+ZO$@QDkc#$3^om$Rx;p>L=la{?YK>El6Axqs8>0yR~9j%__m?tR!mYE zC5m@96>aN!oYPv;q;gwDurkU5LPNJ}!eU8C&_zxo%n9Kvk-S$qjd1k5^JKTwrr~%@ z6d^Q@oqpbF9Z}t~=k#VK0xMT8uZV6(RlR-FwvP7cr-Z;)7gSDTp2i9uOTt}N5HXGT z?pI-3$5hN`YCN3n9z)A86HO#^bh|C)Bem~-Xq^#a3a^F7s)lk&tj^q?3Nb!YO70eF z8ww7^LWsqeg~w>TN*O#lYq!T@F%(x9c=rw2hMg|Yr+Vn6$7q(aHT=GNZvVK4)64$8 zoNXvL6w~=!eEaAzlI*rD2a;4y--+qaENC0z`|14;aer6&tkz|zD^^b957W{4vbfmK zYgwlr?u3}Hy+-Z4$jc*Kxvj=RjIx)4w)OeJ=i^b|Yjm0ExbXS$cz%-`1#P2tk*bZtzh){oS7ICCyvVY0;5E7_pe3g}j(f+`2<-9C2BXgr|jL^=?vUqPy zq|D?lIqxxa$;PZ}x|0;e1l$aB%TN&pG00000NkvXXu0mjf DY<8AM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/farfetchd.png b/graphics/object_events/pics/pokemon/followers/farfetchd.png new file mode 100644 index 0000000000000000000000000000000000000000..d4eb66b53a5f3a4ca74eb385bf233d6f88123682 GIT binary patch literal 811 zcmV+`1JwM9P)gryp#cE_v5_fBIVtJs`H68s(b2)Nfl1k^dC9qX_6Vic!^mtz{G~X#vE{M6>{GZX(=QF{;|HHA{hZQgfZgwdS{m7T_3F?bn)TDcJ$X zJk3mkZ8B5#>umWI&vji+iqfRk=f;rzam;g)g0S#3gsxH0 zk6#w8T^pmnV?C6EwnUST3ZoS>2_Tw1>iu=X@tfl;wnJUx0zQ9h+X5Q>ozi?L#;pnZ z=pK!3g0lePU?1&B;j49A?{o$iX!ji3IY;vP6up8*uwR-Beb|yVAs;%v)&Nfl*98@R zzVd~FlMvniuGdZJq40#wuhhj=X%@n2_g>qCqVSn@0tylvbM11+ruPuwD`pCbBv($+ zv>fU?v@tr4zyByLe!e?7unAdMIIsyr&^oj+^8%20R|CGN`C9;4c?Vp^aTkw@L4L5F z-gO^r!iFe}MtdP7xPY+m^LFw(2^xo9K@8ObVu%mO!ICht_NEUCA05Xm-|+xh6fQMd zc`KZ2B+iJRo(3a2>bF21yjBADGEcQ}0b>=Aqb<~@iCs*a{sCZKd&4PUYD|AL$2cUb p-W;M9l^K=Z>hKLuHxK&f?GI$4+yVl_I;8*r002ovPDHLkV1jPMc^Ciy literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/fearow.png b/graphics/object_events/pics/pokemon/followers/fearow.png new file mode 100644 index 0000000000000000000000000000000000000000..99508e3be13ad3779dcd38d71aff4be9ff511aae GIT binary patch literal 1072 zcmV-01kd}4P)L0LHwxv6pK>G`oyd9iU3SrG~0$*BPW0RR91J9O!800009 za7bBm000V|000V|0Vb6__5c6_rb$FWR7i>Cmc44+SQN)^HK!Q_s${sai)^uwENLd- zX2=tSJcGAc%m#u)z|yXwfi#goXx?JGG-`6SoQ)V_Lm-$ynnYmMOsBDh^$fXJx*wYH zM@&*|vA6M&?#J)^|L2~O3HjfQ#W&{tA3T5j_~v=|;{G6Dy76MM35dChTS36}uLw64 zY(B$wOyJ)e0HBYG{4XZ0NNssBUEjQ^2(}A1I=Q|O5K=W6#REVlkA>$GH4pAUfe~vL z{&o>x51`ahA-+|~M#$7lXIIVlqNF0N(6ce7YWeYHz=+jvWEfzscVQtz&)KzQ7%-y< ziUGh!>=cX_N0$ks*^>heK&P(>(5nCuGm1cq^(cCXonzz2M@NfIz`^X%fwDX0fUYJS zpiB*IkE(feH84~bN#_~GGXvC(*twNEZ$4aj{_6Hq(4Q*}AI!t?-Du44u0o(>Nu z6W`B zOi4g2KJ%JXCTlVZ3RR;Kf9-aPcvash&tZ#cLl1XDKhIv;#wD+6?o8?GlT5Nfe8p>$ zA}-a6Aj=XtJ30}Eb4472pOxoO@mt!j`0&#o=r#p^_9X)Htuyxi@0BeRh7d(fQZ#K; zRY|4#Z=WmtjVls=_mt;uq)ITpd;g3PE2klPjw=DqS^e`_ZR@rQOI{NkNK8_iyp$5! z1dEC*s<4AZ3NiAH+cT5t%;TZ&iYt-jy}_#3qVNq6}bXHL`?<`Z9SuO zXWszGQx4c8()0IXKbBaUUoqa}gF7giX#C5tnTV)~J`HfkYG`Xw-4;YBl7QZG(lm^F zuFr%Lu~hMi0K66e{Us1J(Q$}#ZacBkK>}P6SsPaU*YJ}h0CP1J2r&zuL@_h#ADG3V zyj{Tnz!i~=vGxMeMgz!2(Pz7QYqA~y0JHx6MQS{uEL?sHv`<&-~(;-fHl<%9R=}HMs;#)06*=vYhiw> q6FI&9--hoWP@7cz`i6!7(fA6lIobLU2fEn+0000;!BIg$!9gJa0000000000tNfAh00009 za7bBm000XU000XU0RWnu7ytkQvPnciR7i>Kl`(7EKorNXsEbC&7@9F>G-Q)?61KoY zz=mMR;uAOcV-yEu(`*j)nJh}=Lls%OWG}QOW3v?eq59-Vx+gUXDQ&mBNk84)`|G`X z?}?CCd$m_9jj`wO@6F)dXYe2RcPzUZ!Ri71X@HJHyNzf@@CF3a27ZAVlvV|RbqK~P zGDMfes|IdEKsew!gE4RzAU#eg%8{|y7@feB^9DY!*%&*lGlcB%V@zOJZ0>3Nf3vO?rgD8l zErvN3s7!7bBT5G!q9!II$MXCWEimyMt9?=kyj#gDzpRUrQCZ%8Q#kE2X^uqA~$tS6ElNkti;b zm^5;Bx~Ch(m^!*M`*JAdq{E9=(yRsixi4mH*~nQR(t}>fJ?9`3c;vyySdLUjLI_sjB4wF*Ng~&YDjn1r9D>BP=9^40 z7c~0eoCy$^kqUD(eY{z?2$#ZcV$-9RCD5HHVNuI3C}mU(p|vXPK}hK>8rCwaeYSwcYLX=W>2H z-u*~X-@pJA{1`g`K0@rKtv3F>m~rcHt262{cJ`p>n+nEkR~>iej`=ZSNaOG)ULP?Z ze-KF-o1j&wl{9}keanbC{a_m6l#JXeqZPx}Q;01usaPX=oM0000FN0?DLDZF0dZNGQ8{Uu2?e>ixruS1IXO810000000000?9O2Q00009 za7bBm000XU000XU0RWnu7ytkQLPKl)Y+OF%-wONpQD9my$`44#BUHK0qKO z;4FdG&CtP%ErT*#DEJEc1X%+O6gqe@H=wBj-_`D<;}nQt7T1mp)xxTjkiaRX1UkjY4j)ZdDU_5z|(l z6@sME<|pn+4ZAhz2Fsiox5iXoglF`vdXbGb9g>*TI$Sz^3~{dwm#%dm5N0(oJajg< z!xBsg{a~heZWJ7I=3i9@`y?HyY=M&(2SFGPZ?&<^q5$Zderbti0i6?sup15L5NWz; zs5kM@Efb0i2V)!HjBu!qQP79y=CG`wPq(*2^!7a2?>WPvK|$h#S!A9B0_Rf@3{yGo z-BW3{Pkfh5Q?i?A0Zxfd&pl#)#U~fZMk(tv&iOP3J!gM3A@d~ZlA^#C@VLhsY1wc1 zXmT%OaPj2Rk3&Nuwi#1l zhU6D0;CO18E{)iLwIy5Y7Wd%&j?QlBxXlH^P%LG(?Rc`*gMxVrT))K yN~XDCauc#&&@&-x$i7408v6nNc}uxw*NKd7&vOIoV-h0RaK|siA36fdBvi000000000000000rG`?W00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Kl}(D*zs1Z|i_wj!ROWtZIs z4TDw&Vb$aavod&`(f9%bT~;X3yi-^4Y@T_Bf=ALCWvZOnF z2+TaYcynM>aukM1+2#{^0r&U<^~et+1D1eCHu0V-SI|hxu#%Lm3B%e07;3*Bd~|yxN!lWe}JNFn%MB}Vg3uUt2{6GB6W_RCyswwiWGgyhX#uhGO-`Cv{y`U2+2UWMs< zl6NJXS?uRS)iyrgQknwC13zHnF@4F8aAL&?B9b94Ra_F=j{~Dp)4bI35^gU zG8q!HhNU>o{3me=4NbfGADA&z*<5k*lI>&vU*4tgf2QAtq+v{>j5T8b0000lY{rh4U*TqXf@X7ztOT+zl;u9;5 zyuSJ{@*Tqkv8l5xjX3(3JBmzJ72E&FxZrrwY13l2yNyl$oQmAS;)nPI{g1YZEnB;A zB}fe0msn_)ALL*EN=3g!k4wyy!yz@+1+-= z>>cZ=dA$9l2XzhkF~6mm55` z_wJf9*EC>$@b}hj_m3qdKGJa!|G6}&^A3nmPyxdJI||mbgq5= wYoXQdLTB$zcXN4Ixop+^n$PK(J^m=Koke?8wqi7F`fMiZ?H*O9lCo7 zc5^Yr)d7bNwC3R1I$|Ol9cm1p!h}HwKU5D6JUEM0nl24*`~CmkJ3vC3X{MQG{>6kp z__w1^NEBUgHfnagwefbia%7`AONV`@rZtQCf$8XBg+<5$p4IeX{q(t5Z%(yp{_{{| zdY0+A!)vVhtCzb$;GW({ar#n8HuUrCHfsTOE$Yh)6sHH$ERYLsGBei;W=>A)RP)&= z*)5L9mOTdMTlV?REIz8mhQ8^Bb^H;H8STrKmA#JIKoo_iurzLMY57r_FhU_bz$!>- zya**wveC$K30e#&4KB=}t=Iy`$yTuzDSm+@QeGeuFPHhd#>UQ4L@6Tem5Z@I=A3(v z2SDhlp6aRo%VHJJ%oW-^w&xs2?5N6Wt1{m)7H-uN=Nib?=Q#5-QA``#vcabrUFydn z%@lA*^}gMV&hlJMq&Y))+Rmgxx_e*JH=C4t4XrxjyOcoaz194JQkv&#BE@+mc-moX z1qPm5$|x^@Mv1Eg@OA3^iHnI87m?tXJ4)-?;2kZ$1oM&$^z@CG=Tx0m)f;p&=0f0000000000`qiK?00009 za7bBm000XU000XU0RWnu7ytkQdr3q=R7i>KmCcIVFcgKg8iC%RTNfJa&9yUJ(F=ja~a$Ov8P zQkS~aKNtSbf;i>V3*@Ex6G5J&00~b5uEicbu7p?NL6Vb9Kx6sXZ1i5go2VGY^QfPt=jry48hSO)%$RfkY~WDs>W z0+AVJb`ENUqrF`8KTJo7F*F^uu+f71HM4q-!_iP4-oVqZuaPoylvb8IKWJpHIzME( zBV%YfYASjIL8c0ux#Q6kkxboG@ZpfzE#wEo$_)nIQl+T>7t}brQ%dqcA%q=4MN~h`^iOdXVcGEZ&OS-%U=YZ4KnrV3Ct1rDeCWf({)K4{OEfL{<7a)EN!{uI z51v-`2hg|v9Zxv5g~b@`T4<7F*#8H000000000068TQb00009 za7bBm000XU000XU0RWnu7ytkP`bk7VR7i>K)je+;As7d6HWrptic%$0XcZ*H9Q6Zq z>Rd1FH|P|dWFeh0cgWZwd#=Mph^bQdGs{VY4^_bD;{h9|a+FMdGX22(dG3uMbgW|? z>#d6TznA#gvV$F7;%ABs*4e=wY=j)dwu!caJAJU7;|V*ANN2S&dXEjIbxX?i0OCsf z1>APZimH(@sxw2ySSjILnk^m5Dqln0#l^JMA&*1a!z{_usci@(ko&rCq$7@zKq2Zp3on9{9U;pqe57S)fX~8|e z`X#DHjc=LW?DX>F;vU}e($fO^_fHm3cx(iPJpp5Rat`xKuR9)}PA^6n5S*UVt!k`k z!H2f?)Pa-&EZuf!xO-ZBH+||Nx|^Sy($pG}o?E;2W`W@h!73dBJ}$my0nwWP{9v@w zot>?sSN-OCL=Rgg%4LoL?DUMnfZ)}9NzxxpTCLKC(c{z*=~{IQjt0`JUgSrGH2m`y z3Id`>@b&vo*UH&4dP73n^M-;A*h5c&L&dWt1nGSh^8xa9OG{E#d2v}uk#S+6p`ic(00000_g6b+00009 za7bBm000XU000XU0RWnu7ytkQfJsC_R7i>Km9cKyFc3gFQ8NX|nSB7QKS-ARK_(HP zy&5Vk1GWc4NyS0=j}}Geq)tk?%z6Xc2OZ zV;tice;d&>n*IaRC|Z+um_%$G45kM&oiT6JGIp6z#$3h*hq5yh0Q`jfi3$0r7kKLf zIp#ygcwp0ACXQf&L*PyhV<*6B%!M)OXB?5hnFoAw7*nQ&Y()AQw={GE#sq`)K|C`; zcS?Gh(2#k!Kr*)xG#qvE{ft7%JQ1`CykfH2F)>jJN35XcL8+&#ZkW(32Ae*nkrYx& z0ir&#E)%l2m2jPHVm>y)o#9EQ1&bRA)e1h=Oj=w$(P9$QRi+xc* zR14>pZJy(wi}ZI57n)68<<@8A%QQutL-cNbgL3mB$q~ z1yu}}CHk71tKtv)V!4Hvo4m~9kxF2BXD-@x9#)*@Eg|;JGB^1&4=c6>Lr}lwU^h%c z|1!DDW6LO<;||r;gArUksETdDw9cm&4PVsxrXUT|=;c5wR{rWSv5dmCqZDzJVW;}7 zh%JcbzPv3+=yRUD`1J?vId6S%?8?{C7QUOuV}CQ_?a2R%-^Wu>{74D&2mk;807*qo IM6N<$f^qa;>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/graveler.png b/graphics/object_events/pics/pokemon/followers/graveler.png new file mode 100644 index 0000000000000000000000000000000000000000..b77557ca43b31112239add542e7a010e2dd2348b GIT binary patch literal 687 zcmV;g0#N;lP)Kl)rAY>jbJAL#ARK$s+K=E#;YN#-g3zEBaViSTY243mRFZ!pqJ$m z1A~^Yzy^EJ-0qHF1|AGgf@PK;gCtuNJE?zr)W ziD^ezK{*H-L&xT`RiP>cC}0$H%(`Og$OwW0UXMjx;h1~Fg!aH}L*NCip=ajOgw+|W z`*G-w)3yu_r7O5l^?~WZK=+PELt2CB8U{gY=-I!fp7FP|ovw}Jb#$$C?_0jsP~k^% zH6$o9$f457E$)Evb%CRS<+R2=Fra4OW`BV}%*0M4GwW`$nHXO~I_gKJ*Y<99Dg@YP;VkZyhKOr79{f^_?bLLxf%Z3_z4gj V5npD_r858k002ovPDHLkV1jREHVyy) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grimer.png b/graphics/object_events/pics/pokemon/followers/grimer.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c9c3e56023447c100e70647ec5b7b3f8075bc4 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=xFKq^5xIW zz{-sicQ$5rp4@n|GI1tQ2`0Gm;DjDfl(WDivY3H^TNs2H8D`CqU|?W8?&;zf;?enb zqM`p`1A$iQ|4nSS&K(V6vew$r8??W`786Ei32kB=`C%{ke)n=!Qu6}s@8=LY6U9_ zuN9atYjx;ki)gM~cU@m4cs0{+hHsTE=NAimNaz37+;c;$qq^~JarRg4-v`#u`#!tu z|Ao!c9#Kj2EoX{e&w9G=fVRp~5skOUzienc9DH7F!z+WT!#)$U_thTx{(Ix?8BXce zf3__>keexazwmc%rPynSYNwF>OeveHmHF1Ld0V+_Lwd*}=JNNi`z$@q>2AKmGHZG& zcjWURsb@722lhIBWe{amd#^7WZZS2=&scWH8mq9DHGV0g@rS&g-TnR3M|`@-j;Ih> z?>`E<%S)GidX@fp`I1ReChq#?8={|X;{Fmjf6bqpoA+>j7G;v%xGg5S?^TibW2S8f zlDR_C{)C-7EVFh=*o4bEWqXpB{de7Yx}vUc@eHNM3Y$wF$Qo+8oz*vRTXe3#D0RfRoA&FTj$(d2<>G|Qok-1SB000000000000000aLSfM00009 za7bBm000XU000XU0RWnu7ytkQ0!c(cR7i>Kls#{pKoEw}O8Wx_A8BYVD-)lfN|DN4 zq!jKrl9h<5+(jwfxIc;0iaLM5D3;K4AmN5Tm*e=j*)?k?MY?+{o}J;H*-ytg>#VcR z`fD*^42bo=@mmT}|3P4>H(Lz=dl`Jx2IcNG zPLvWBW+BF!zrmwn{o}PJcCdkjP7EXAbc04j^7)hE+~GHhCO(&7NdvA%E+WT^Sx<)1siW01X#>zbF4cmB; zH+LS$u$tR5`6$_76-hg1oh!PQGKgqk_6+dgA?`-UnW;bb>z{kSj&1DlZc_!MC*Czh zIfOY}xDPGjbT1~}k#uK!-=B&r&&Cc*5G!&vSQa70^{j@1DSm(SU8Sb-6KlK7vtIx=bQ5)UBKI(7dI(O;3&eW0nU~z;vE{t> z)7H+BS5$NcmxN_e)+;xeV8u literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gyarados.png b/graphics/object_events/pics/pokemon/followers/gyarados.png new file mode 100644 index 0000000000000000000000000000000000000000..33cb2b88810eb9ef311317fc701b7ce36fd23c25 GIT binary patch literal 1450 zcmV;b1y%ZqP)FN22k&&^9F+q8m5pzGF00009 za7bBm000XU000XU0RWnu7ytkTAW1|)R7i=vmc5G`M;M2v2wM!KI7pMmMZj02OA&<} zT#P~7!4)=K*bS)BCO(bAVBI!G8y0dR-H|3u8aHO`lV)K++CRWmNC+V$*q}p(1#tw9 zy+j6y5Nibs=gB)WJNoihm29O)JNtWP-uc)?=zqD$8~9BZ4&Tt=w!0d-&N{{Aui&sl zkZZZG5#DAYFTIBKQ>D_&8T0)b`}t%cctOazCFf-DYSt+{DZQL=XVb21ZHJ3nYeLKU zeaj|ExX##Ri@eybb`$hchCJKpFK(_2kyqL7*j{5EIA^Cb?*(BsJ0C7OwZ!=9Cg*u~ zF+uA>L}PgqAb4Gclzm(5gzI;7aaP9miSvcSG99=qv`V20WK-L& z2+He(ht}mk6-%=cB6RO%u-*+Cdt&s{`2uCTVQUHN1A)d1+ zh+-PT@6fOmB6R&;gYFzYPf>iS*6sCsQrJsz_iI(6UddlUVXvwV&3_{8ASs+&__u}K@?_%1!P=N~}@RQI4 ziU0%=18%ptVI_oh+3qIKVMSVUaFX$9(u3KF^v-W2U;VK0OE5g#K@Ax=7Xo`lU`x!7 zXq>C#6YnLO3n8-H-d+!;AhZ(IW6PDokv!7XVPTP@jg2c!GKyRkXoNI!$xH{L2+AP^ z@->R1ZfLkTug9Z_$gC26QXCGwk(`ncn^(-i#>P7b-SK&r3EiR)W?4BX0zEPF(>zYQlFJk+E`$iZ z)jNMi(5+#sIL<);EQN|5C)USzOM9mScJm<6!gud(bj!QIO&w^}h3}{1vD-zDE z7ea^_T|7%enzWm!5K6u^^pp?}L+j7ubleyOyE0G;pFT`M80^+veHg}!`~HX!*;vlH zr`QOg$Gnwiw3QcAfJc!4PVQ(Sm-~i}(|X{`Kq-U~NujSR27$TYM{dy=wRdC1MhKI7 z!F##r1;~_Wq}T}6e>cwkNC$ExM|2~tN51|BXzxZM^4s&)xV&Kf;yoPuH-d?&5D3>; zrIfiJn2$L^T**zHX_Y~JXYmDNL4B54cG>saML{+1uCRKFmUrkHn+EjGPI+hP9x1Of zth;hEYVze4#BZ*CXu|S$U&+K>y}8b^@mh=Zxc~0@7vM|jtL2A4`Tzg`07*qoM6N<$ Ef=AAyzyJUM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/haunter.png b/graphics/object_events/pics/pokemon/followers/haunter.png new file mode 100644 index 0000000000000000000000000000000000000000..84df6caf2ca4000ef96b37b009cdd551a87ad884 GIT binary patch literal 617 zcmV-v0+#)WP)Kl(BB4Fc5}mEY~h_g&*PGAgTAR*lQeV z;Uc;#FcK9hf+hOA#C0TRR+&0oUhX`$!Nx#}q&S_le}VW0&p(4PlVulObkTn!)xOW4 z6jic)kBJD^kFe@xo=1KuXXFa6x8j4W#ws6lOEFqr8fB2pN?*&W#*|u~y@JGGRopBuJ9izfA zaW3R^kg^VoQ^r$q!j8U$0p&O{lmK!vq`h`ro_#=di_x><9v+T|!=IlpClF+zW<%OF zW8Heg0w#86g+2({MIEa=ql*ef*$egKRgtrdT0W4_Q7evFXFki$Q<~T;n3b)RV%(7b?dUBSF6NCxV_;m@kAhIuL z4T+u&t;%5Hmxlt&pKPtPppPbtB1f|9SR_j?`q%mkDbyRNYXl8;00000NkvXXu0mjf D6YC75 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hitmonchan.png b/graphics/object_events/pics/pokemon/followers/hitmonchan.png new file mode 100644 index 0000000000000000000000000000000000000000..852fbad16e90c6beaf800a9c34d3c72924deab12 GIT binary patch literal 656 zcmV;B0&o3^P)FN1NF)^Wu$#H3c0RaKwIXRheK{+`&000000000000000(>b=t00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>KmCuUXFc8KCi$Ktm0s`S%U<+Zdxn!?} z-tDrXX&zwv29==~DTTOTU8Q&(OOur-lwL|ceEH2}z8U?AjnG9G zUG)D5=V|_Hf64O{rw3R9H^^2}a-QPk0GNSc*xB;2oKAcP$f%HzPD6H* z=53qZX&z;+4+kS(WQ zfB3R+%!e_^qUA!!Z2Me=2d?^d+UVBX6Uerpc`%!qUY*vp+ByEvJR6ev+6bY$dG#U_ zwOa>=0N6&FuXS0Mw}T-bxEdOoT8L6_hX#wDhk;%-532I~em1*+T>~YAIvGMncwY)p z{}{Kh=V70(n#Y;%ciU|CD3DV3_W3e4c)UM`#t|HQLxsGxEB+odSUmac3Z6cF{5%>e z<+uX*DA)5v=^I|n>k>4;Myc9=Tb4@c9OV55L7u2Cyp{W3@RLJCj)Hf%LReIPoPS>e qzq0^3`$8aSn97q11(p#cE_SxG6ek%6IsQOU{CVPRoOF)``s`FUYE(YbM%iCF*u00000kO_(>00009 za7bBm000XU000XU0RWnu7ytkP)k#D_R7i>Km9cJvFcd{CdGefzZ|IU1Iz)6T-7gtJr%ss|`$x4Q#m@#*gw!o};=F6_b&LXpTy)Vz7mXDY zVmdoshxPgm=VB@|+v~8FTF-epkvF#2VcmJuHyfr-yE$>;G<^N2L9zsZk>qa zfmJ|!LLZ>4Rwi&&K@kx;$G(Ss5Bq^ktY_*cfyGL!61kU}Krs`d!oDZ+3i~G^JhSC* z-%j&qZh@E)D$u*8%n9|-e?^>B$J+R7kI<_1#hvqR%PVJ~12f3lX}0}LtwI&}3is`{ zZk8XZDP&jI3p>so)Pa7Mw*mSZ7wW*UFy}x6n43bjEuF8CJE#MRkIqe9<3b%s@i{9% tg<0vGNM~S$_syu^vC)XRah<_`>Ib>LXPH;!J8S>|002ovPDHLkV1k1R44MD{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/horsea.png b/graphics/object_events/pics/pokemon/followers/horsea.png new file mode 100644 index 0000000000000000000000000000000000000000..068020595388831bd1014ec1604b7481a2faa7ff GIT binary patch literal 561 zcmV-10?z%3P)FN1FK|%S^p{cpikr5FoS&0Dw0g<`k000000000000000V|e~t00009 za7bBm000XU000XU0RWnu7ytkPr%6OXR7i>Kl)X;FFcgI=Sqx+=NbJ24Rg)~inVN2$ z7(s|ijDX+)5RbqUIATbO8_s~g~h=bAf<Bp5}QmzYn&-Z2l>vzu(r;8%7 z@}!&2pA46BEq;1pPRx3bxKPaV#K!FU!CM%Cl-CzI{$Fv<(H3zZtjsz1x5k!GUMtUV zVJ;Cn&5ORr9H!`I%4@~pVOE)y8TqqO{$u?B`}w{gWpk6A00000NkvXXu0mjf|FidX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hypno.png b/graphics/object_events/pics/pokemon/followers/hypno.png new file mode 100644 index 0000000000000000000000000000000000000000..4663f9ea1d330751394858fb5e379cd236e251d9 GIT binary patch literal 684 zcmV;d0#p5oP)jF#rGn000000000000000>?&nR00009 za7bBm000XU000XU0RWnu7ytkQB1uF+R7i>K)G@D{Fc1fD53sPE63T8BhHOZUQgsTg zBcx71FjmJRWqBJ)kkt?J_B2C3XYGUs_7PWAq;|>;QGSN|pCJT7p7pF}{ikB%$73em z)(*rL1tEU_xV_8{#3tW*#>A`JLc4d`%b>RNZR^0Ovj^A~+P%vvFEkF$tOFw{yH~e` zcJH!~)^282l}lA8w=?af!+s=>Ka488Y&}z6t9Z;peTDEmreXh0 z;BCkEeLWe%mDOzcy7o>lelMJcYtwxT8ATm@8UwL)1!*JYVR3fY`lrSTq_Sycv{!ztiz19R==n*;Uk;XE4OO##U}&gD4J z?|yp->@NVMaa&6XkWN42eg#`I4qFGZ9Tb=I7zj0sdee*B5J?I^XAZ`z+5cPG*Id_#Y0=+VAB3tNIN%*z>7; S^3>)40000G>%^K|w)5<(O4J00009 za7bBm000V|000V|0Vb6__5c6^2T4RhR7i>Kl(B2uKorIwWRy8L49?(8hX+$Nj*Y;J zJ1I99TF4}V!HWra@l?`aXxhc~5Xc-t{tH_Pso{w6kPZdYzri>j0s>FjGBjt)l1>-h zEhdn`-=yC=>HFT@lLWBQMjLJPel#BGd0nM0>snr0e=lky9j~iY?dqbgVKf1lYZy}F zF=%+}lfw-yCBv*R{+F95*@8b;ha*t(Rw;YpIH%ZBFgN^iS*K!v$jHLHp>}8}GeEh4 ze>;bL+$<(Dpd6pceIa}x#%Nl`J2l4%3}s&IsF}s>ui4B|F_{5!9rfFP+SO zz!POR^tqs5?Tlt!?zgx7BS@DyFg&C20Fn7j((U8ej3S=VpY;E)MjEdcW%iFG&kd_) z6yS4sWPOIyINR?f@vM4hlWr+fO0NPWUdq^YseKn2dOk<%XME^`^F%fX7cC#Lm7&aj z@xwPtznf|%W}`(EJSTZV_bU+WPv+&BxP;ndsAS$1b7KJ_^UItaEy8db=Y^r^<_HrE zmK=RpMrT0s?zw`|fE0-E>oYp}4k6+Oct;*%o={?(r$Q5q>rtFRg%^6!<4p83$lM#o r1AxJ689g;i_p^9`O#mf1zKvc0Q^yfpP8i$s00000NkvXXu0mjfE3PDV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jigglypuff.png b/graphics/object_events/pics/pokemon/followers/jigglypuff.png new file mode 100644 index 0000000000000000000000000000000000000000..ea877a890adf812292ce324f03d2cd5ba30b751e GIT binary patch literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpnCR(PxbSCS zU}d7FO>_%)r1c48n{Iv*t)JFfc}Xx;Tb- zbiTc^F|XM`fGt5nK%0lva2d1z1@{*d3}qFPRD{xRoDc|j=B6Pl*>LanwHvvG>&&9f z|7ir-9r?R_LPKiq%}uGNr|H^%{CWG^wL90e{XAs1rZ!){=D6=sL5kY;tQY$FGNyy1%s6HsAjDkl#V~QC%6&yU8~# zzQ24s?Jma-k)ZAytV(=4Z(1zBe(Tsmr>Ex@O{?6c6lb&9`JTC?jGuez_75d$f2Y~1 z_Va6~Tds1xc=LPh*P3&$zcZ;HGXJ`-=nv1y+O(6$)o;F>>ENDY_2>D4{m;1dP9G{~ SnQlA}6d9hbelF{r5}E+7A8WWU`NK)lYBQFc=1KOHmFSBZxw;nTEv8sS}YM zD_*p4gF-ZR?V2x0xVz=u z2pep5h8z+KZG+1qQg5u`aLNha&auHZgAn9rXRsW!z^Sj1hUYU%37t<&UO)$+lbCGJ z9H)({b=Neq;t}C-ln{fF%>f{(I$XCMCd5rs6g&@0)3W4ZB*%0&b`3_>LX5|cGo<$d zz@5X$a-Ju>X_+sba!fCbw(pCg5Xu|W+<~iQvY*9}5v^suKP&;3Vq!8X{GQ)CAg!%( zIz)a49vkU=?$HASU^%LpR~G(_INkIQTFVL(A*L*0qlwPvvQ0T@)z)pgxDhZu-5#_K zVF@(7{9sk^?>=rJ6G z>Ukckwu4LmcAC*H*1N3GPxrg)zR?yhE2JjR{9YP3gO`olG%DA1dR<@VHCr@WXBjoQ zC{kzbR3k3!t(~=c+=-&s%asOlX`wVQ@W{ZehSZ9ry%)DyM~}?bS>>Njv{wJXknM!NJi%IXU^^A&FtZ>FN0a0Rgc&A^BNJ`RTd&(P8m{p~+c!tCfIg00009 za7bBm000XU000XU0RWnu7ytkQ=1D|BR7i>Kl|5|JKoo$zc<^{bKq>Olt!&6dRfaM^ z5p*Mkf>IhbkeEwkvVfRSH>XJ&T|!iKVCZ@3f)wA>fdR=GJa~xYn_=t7%K83mUu%nn z0jV$3chB#A?_I3KFs|b|{+F;uCj6&@S=1t4g|K=66T%8)^@P}DSs|<(!0Zr`YpEfN zFR38OI_N^mpnQN<1VFA>Ll%1rLP+?eRCvVzIbq8tB>8TXAbUOx=~?)rRJccxBqalw zv|$*=GN&Ow3l}?aCsbBlXf0?Fv2z3Dg;tG($%06|hAcWs?B47q>QEP&Q7SxFQx%2g z*rw^MxQJXpUbwE?QHQ#)6NNO+vmOPZ>2A;q%aTQ8F^krz;EsAPE(z^~3W$BR@Rj>1 z-%-OfU_XBU$bH<6q(BqG8U04-%(fb!AUysxr0G~>aCd;6nhW8D)QF`?jrLknm`V8HWTDdcQC9XA2UI%-G@_8U?A_yV?;j^pu- zgpji}XaJD*uZesnWNeJm2eOVDrYmpGj$ZG)nT?#D*oX^b&W806u&6nZ=arEEragbV z-|p8`I}Ot~T$_Hof#Gn=6B}`%V8a-;m|%O0``Co3kh6*B&gNQOHq(%oOm3Z>;gwbS zT5dunTvgv&pEVo`w(fJ`Gf#9pf!k~9t+||c#nvek?ucZ7kdKh;xQh`&K~{XFKxce9 z381gIAhc*h><7NQ&uM`Cd@(=7KK*!QY~jGi2$u*U!Z^q!Cq6DTV~22x^Z(R3PlL2a zZU82fOdp;@FISB5<-dIhy$Vii=CG74t)JfPZ=!mDiuePEk~d;5KI^jp0000QCGL?Vsm@j1A zvBRv8U1dhmw)g+$WXDS{^qj2bJImzd{}#*tw#oM2n{zeTAFxNR)|j1i?oV3(+FK_2 z3oH+Wyw=zr)me4kFhw~i@^I)J#w|@bb2zUuEGj$M@H-;#vdff0KTF@PoH?BzA1kye zx8I3hbx!lcs?I{aBbka?W~Z!KI|U3>oZs>tDNwcFYbnX>1!9{ks(a&Dz*j{zfZnrd_6iCUfOQLBy4gbz4Y;sO~yyo%Ki{~IQezZsorAln^N=aPj6p7^Re;a{=SbwVWDRI29@vo zcJ1w*aQ5u8d$$FYw(~4ZPVd-O+#xvXG=Tx0clAw000000000000000ej@V$00009 za7bBm000XU000XU0RWnu7ytkQw@E}nR7i>Kl|5_QKpcmUED_h~3Z|i%VhEUct^@uA zU6Z0lIAe$$)WvP69o$704L+o)Yo@b}FN!pkk|Lxp*E^kbFN)nx-Fz6N=U$%Q=`YCw zVApnS*LF=b3;&(5ad^R2P#*TSF|cL_roX{phCz}5e6WQrge{EKsuw(K`KI4wCT!(D z57V=QEo{xu5n?~Qg%_=JL)c{2!xy|pZ?~}3wr$k1&pVqLB6LYKTa*7C0HSu+zHE2> z&Aed3Sle=w%dTUD&h-F;CsENkbGn5J5Ii51#5UuknKCw+3B0psmfDin1qIWIpy5rC z9d(LqII8B?>{S(M1t@j23K`4=p8XD?4>p-p0w|b{%Sh@@yPX;Co(LhIFL>j#9M20#em5D50%(nx!B87!6orEV2ibB~nu{Dn|1ul@zI1*e|(gwO+l zmCz-SGo`njq1*RP!bK9E411)SFWBqx@x|d2nnY^DoG-p<7r+GL`Nyvp*HaClR6-Ugcm#VQU_Xwc z2tR^S*kph)b(2i(7-Lq780Z1uZtl8wb0riEY6fA}?c}};Fu1(t>r^i~yc#>i2)K7{ zPwyQi)ETS@%!42Za~U9+)J2X5`u``ribIXrv~?b3=|Bb4+!y1pSgx08Eo?Gd5!(ax z8nS@C!E73gU-==CLX#l@LAXu=Uk22i02vTRnGv8f6IhuA*pns$FlV2SRQJta5L^pc zZ^f#}_s)&}X7!!MHwUvg`kM$LB=8d}w)SX)z=vSjk!ZCEWPLKA53Go&*FN2Ad0_wm000005xKW000009 za7bBm000XU000XU0RWnu7ytkQbV)=(R7i>Kls}8xFciQ&88qrh4K`WMgW(P`wG^&o z3FjJeAEA?#<{q(|4qf^YZs=rlMxc}ofoq`RI(Erg=#=S(zzzN`m2KHp)EG*jTOJtv zlk|R1|7^oJ#VJm4ihm3$9y2+fndZ~kScHZVCr2~#mA(Tk5|ZjUlCvP()9GxWn>C|+ z+|5qGb{E4aUaLBtMZzWKE9atKfu{zist+}VzbS|3CIp-^{n{mNb2Y=xFK^5v; zC4AEadrV3p4iEF!cl=Bh>RcrBou8Y&BG4I&Ex{dZZp3y4%4{_jfk^+&W;0X^lpHk! zN}+PdlFRFk_~Q*%4plN!F5Pm6311PbK2_vZoY!M0!GJL&Oyg}aV8Mr?T-XRJj`;Vs zz{C}M(#MlpxO}SEl}keTj;=AypSQ^YUOddPDy%r>yj_ABLF!-{)xya|#ZdPT@|eRQ z_hf;FuS($vV+)){sBx=E!&Rrvfit9~BAcU)ryXZ~T7>VENq6Sm&Z?2Jq=K z%<4l$l1ZJ?gGszrRtQna>ODp9 z7H+cu8rfIF4@|_`$+P`;R9kJ6VzvcSy!oGBot>pDVtdX@R9spulVu1JOw*xZIz7WP9)XVXcHy z!u)%YPlRT0U7Z~8T!OK7!2?%DrfPB3y)4UKpE$Je(NXgaYnM;wx!}~^yXU6--r&|3 z%Xwo$g&G`g7jB;ZZ))YY+US$dyJv6R&$DqJ;{wS$Yi}8U`21#Lf$WECD@_^niXX0R zpMT8$4ezRg)N9cdp-+ED$yeOSw$HTrb0_-5h5u{q7-!zjzH@Ek#n+&i@O1TaS?83{ F1OU8@%+3G+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kangaskhan.png b/graphics/object_events/pics/pokemon/followers/kangaskhan.png new file mode 100644 index 0000000000000000000000000000000000000000..9faf8c2adf6cf28267ae44eecf004d998d6335c9 GIT binary patch literal 841 zcmV-P1GfB$P)*DXF>9(Wzl^adAO0AxTL|`N?_d>G`>NacKzw0RaIyIYEJOk$F)$G9e)n00009 za7bBm000XU000XU0RWnu7ytkQzez+vR7i>K);(+6Ko|#bO_~HnL){FapP*Z}Hed?D z%@8OZu3iGMQ*(nj5QREg+?GHF5BUUzP6Z8z!VUcbZj;DGy+&i`i#xVU3x%c{4#D-# z(n)7UN{6&tp26_Dlb-+iu|#4Rmvvc}^^c1F#TPAW{d~(vdI5hvTx?jiydD60u7}-b zzX#oAeY0xAgmef%m%?77JpjBWTjFAGQnssFtc-VL!=>@0$-B~P4W16c##C!qwW!1K zH2@xs*PHxy^(p}OSNG~Y^?yQAGnqwOgGBfH+#iMPG9Q#P!6Ui8HC zp3rkV^SoJuMZ;(Pai|9@SeEI$@VpOxugQjsXEU4_wT|{b-SkmhTwJv*$GJV5z4HAg zn-LZj^lBaBch50Nip{F!m%>r7|1k>iq~3-TVMcIJ9zeGxvIx~iRPlT%kSB`DfT}qr zOnlUv@^*^T^2Ak(iAH3FkpmX|%zQ;TpE6>;40MPJP|lA@X^gcW?2HX34P8nT6#KO{ z35^*eB&B(vtIXzIOm90SLHP(&ZJ0Q4J9i%s5~c!3<_KpE2zTX363%LU>~#_v!=m5Z zp|1tBS57-Wz6|cEhB(N4@GCPN^PEYR9GJE&b!C-@dofydjD+7iS20 zARa7^@>^iY#UmDRl;6F#1!>5+nz}Hh#O3;nnY2*YcatWEJi*w7NI8bmD!>?Yn3!7m zY7OqR7>V^)%}x5Yz5IJa`RKuG+iq!rkTa6#2XGnTusAa0Vq9fEbL)m!(E1xkn<0cf zI#IT$2_Y&2<3vngai4SKriC{*i@kXQsw`Nw{{-j_4G0%Eh0Fajf3eRl{J;7G268x6 TZA1$Y00000NkvXXu0mjf$}4+t literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kingler.png b/graphics/object_events/pics/pokemon/followers/kingler.png new file mode 100644 index 0000000000000000000000000000000000000000..e9844c2732cfc132bd73520e7e816c3c6b12321a GIT binary patch literal 1156 zcmV-~1bh35P)0RaI)DJij;Y3b?t*=aH1!I=O600000000000000000000dtWRh00009 za7bBm000XU000XU0RWnu7ytkR`bk7VR9J=Wmb;SMHWY?g01x09@d=W=KtS4ZM+Jv4 z)sf-FQf&w`TRWajFLHw3($4JL=HNmQ;>wN-PpX9q@gqU}9}YlDN%GoW+iQDm*a#H= z(@o!Kl^*|l?DfgzCV<+UnN(@5kTHuAyZJ_7# z)_1B_-PimwFrU_+=PuB3r8x+zNLb41hto4D_%q`2A&!8C$m-Di1tx&`X8FgDtqKBpb>JM16O{CPuqV!XIC~)(D0W%XUisN_Yz;Qr-iMMW1=8sHjp)`G+d@$sKAO4 zR(5TU&vokpQ3xEf9+X=G`j!3q$V3|i3}=@`fHJ|~{e6BLIo&UxExl-VL(;5Yt_NuS^U{u}y)@huCu5qSKAy|3>xl&uxWJ85SGL1=>& z88*Cq#K6Zq+nKJK2T;IzszaG`nU!redB6mky@@wjzljCU?dO#s^ zO&>mD;FqW2YP$#azP4yebrM2=VJYD>&sa43;X$d;ecyaRh&~7z z0ofcM5TCB8Gy~GWo2BLn^r|4II%3oje%sRlgivbvjTIouz*LnrQ4$1>pv=3Y*+?&x zir)A&LOtV0ik(zau|4rWc*h|7eT5{>1;|N%Ajh W{nLk_n2fXl0000IVm}Tfr07i`GHAM0RaJdX~C(f(P=qB$+>v|0000000000A#|*f00009 za7bBm000XU000XU0RWnu7ytkP`bk7VR7i>KmAy{GFc5%ksRKiXcJCCrbghd-V5yWy zv|{8Pkaz+lrb-}D7-NJmD-z=837|{6=b^YuY{$OFEds>UoBHLm@6Jw@V{9AS*v9`x z(f*e2c+0pZ-r1O+7fXNTve_3)*LO8_b$PzpWn_A&cAAwe(m#l|1uDN%z?ARW0=S_y z@(WblZt}cXxSngW?G(l?Oabg6?J;w?U09*H(X-CN_pF5!8Cq1#>o*FwmdPZu2xoJd zdd3L1CPCn>3~?z>l{!uK!;A$& ze0+Z}I1&*z_VKga_A_aea87tloWnLpZiR`!#i_0?44r|ea1(- z;_+1srfXQ{>0lZWwl^k*sk53e##lTZh$|Kmwx9N~5E-!jK5Et;NB}w6O7_Orc<%&O z)F0T2%kQe$gWM)uxKxj)lIyut#%#vi1e%vV^N>f13g40fWzcEYF#W=wlZoC`;CDfX eerH2_e-vM(M=tlM=F!Cf0000C#e7OxM%30tMS{fq~PIM0r zE%Po}dZ_UDc@F&}4g%GQ-o=MHYnM;G_3}vU?ezj&TUShIXcFJ{W!C!{CAW>P&Ro#H zLU2`oQp*#ob~!vTR6}8db?Yuq%3z|K|_L~;>C1T zi|yynFWL z-ktv}&B!TZ+Ue9+=98l5-Mp<4_iEqwGr9Uc=a|1ZbU$<6Yw}K`%lDj9$O?I8&PP)= z#ChZ=Ua>K4+!GZx%V&E=ZG}msVe90VtvaeE(<(jgu)j0@Y`u8#$y3VDxzEmC6cqj8 RP8lc)Jzf1=);T3K0RUm@;OYPX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lapras.png b/graphics/object_events/pics/pokemon/followers/lapras.png new file mode 100644 index 0000000000000000000000000000000000000000..f55e3028db1e24253f5a6c479eedaabb451f1052 GIT binary patch literal 940 zcmV;d15^BoP)KmcMJ;KorLf1_g>1bqFbR$rY3ev}Eg$ z(TTz2F9;djOR6Bykio%JWNC+@`3iyu8U+U7DV?&pYO0__e^lRDce*s31OO^r+AM^SDPrwH3aWNpLOrN~ zs0O`;CXg=zN=T)^WE!eufVm(Y7*T^f>-Xk(=nnGFpf*Te%Nv<*0vsdHKL8Mw+!JK!1t zR|?Q?r~}tfg5gUu-aQa?OhcAkv)(Zsl;1pfqc!L^)PZX#-IHu!o^^aikZMfwfw z;}D|bryJ_Pbu<^nrA&uF9O9qPWi7Dnmzow1aTzs-{e}jR=a1(3MCR?vap=ur+||B! zHi@Qryue)~cfV<<12Hyc#bl%`HoIh2pLP#B2l zO`MM=vodN6hRJ8RDaNtfR@6+_cs-RY!H3oKagB~!pmZGEj^koJmib{4fv_hdf#|XTekELUra$MXMmvX|xO-M;xH1fI~ZiT3q-CGCGWXgfA zIGGmhbhjz-GDD!8q0Mfi>`dL5dw7?-bLduJw}xQnV-`qV5#LFYPp^r)5)E7J$)7^W zZYet}yUVF&Clo)OwgIXjQuq0=#s@V>KCVIa-Eo|%5ldS literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lickitung.png b/graphics/object_events/pics/pokemon/followers/lickitung.png new file mode 100644 index 0000000000000000000000000000000000000000..715f9a5b9d81ed3904b32cd88602c462617ab025 GIT binary patch literal 642 zcmV-|0)737P)Km9cKyFc5|{O5*_fx|M4WiL2%JU z7hUxKC|~~_zoZ)5?fD#faXtq@goqDkb68^QI{GZNmj`frE|(G#$Ia(s3D;+GsNly3 zdjXGCX@tGdKjY5OiTC+6hS27DGsLVjtn*-ir6PEb_>TOB88&Q)`RF@h!_7PKxjP`= z8YhEXB=Sm$)7O050#6Adl;*SYSt@6M4cI${n%8C{g)}7Wi36rNc^XH_8ipRrN<(;> z3a|#6Ticg`1k76n&By*%p$uaLy%X`J&*}gI5duc-00$-G0KBw)&D}szy*kK;AqG8Q zboID!S%*UMcmQT6W{QcKV8fMRwLZo7tDgr*kpbwHMbr5KJ~oDrJGosgt|!K@P8Hh$ zLY@Ih>yvzcwcG(gnON%sqTa#&0StEsQZiq{#NlMMaJizqqV-9R#P;s?S^$g9e0Miw z2TAOHru6f4_9=6DzI2(;Vv~^}4)-@es51|!f@NixO=n{#@!Q+!j5+~vPA40uUn#bM z`zFpNb|FEo3Jy!dH)1Q?M9~kdvb^Z`^McxbG^WnNrHV1_{e1*cAEms&XMOpE`&;-; czwqz$3!}aB*TvK|!&ZanZR+>FN2wDM9h+aiO8fQCVrp$;kl$0RR910cCnn00009 za7bBm000XU000XU0RWnu7ytkRJxN4CR7i>KmAz^mITXj$s8tj40tcp&5v0f)WZTPR zK-=6fm2r8CEnTE=x8yAXX&RtTjIYWrR0Sh>#+&Hv`;v=_H@xb+)B<{8>OW8@?5 z=L>83>-bwn;$Opgf&F zJG9*lzAPZIG|to|5is%vO%ZZn;m-IhEIhj?3Fzzm6!7KZ;@qnv7GY*Fq4Ud4XnLg6 zJX(lC4qQ0xYe4RmxluT#CF7V`9HT>B5Pk9LCKoG<`2(&25b)+Jx{!r;S>ZsM+03~~ z-m}b8a;g*JICay98jx6;7fXP!5MCkTRXEG{=|$zH%|eI77tL5M;Xe|)6etR|MeCavy^(oB}(&eDTh49VgSVgX^P6QC?{Gjs z7k{YKLuQ?v|LS+ITtm7BM23Fl)Zuvf8m?ciTd?PzV$TRvdXlDaI{N>-{(J>EF2cwf z!zMt*xtG^3`KlUFIiH#inka0bJe(`XZC97qf1K&DE-&$W-ooWE;DDxcM8Vm542Qxx zGc>#>+QC#$*}_ReWdG)4u=tocz-)GCY`JIP{*NV~a-WtIj8(wH$R(g~pYM9Wk8VAa zk!L+_ct)?#b=-aya$w;(2b_5kSm;F-2GbV)ngeEjP;e(4!YDQjzN6_eg*FTMvvAN! z2wwKY3ok+rEF5xxBHQbYQBgl{0~ATLj~+cf4p}(ER9I1|9|vZ%Sr}j{oa;h9wL7DH z((MA`8`(U6((6@Nc&(4t_PD8MuJsOj+#0RHeL#mWSqk-q%RSO$`6Smje8Kl`(GHFcgLfXyTl;6FnHT7DWW)5^j%? z9wC5NXY82C(IQZ=14g%C2FrP4yA;g@I`l3jMcRI%BO^7?rSQLf?-5U2U~m)#q}ty1A+F;t@OLc7n==d1kp8;AH;g_I8dp z&}Tnky=kAWfE`8;P#rU&1%_o-rBqqLaa1jE&0q1iq#@IKItxz=Okdk#L;O^IKu zm#r_p1A{-Kgw0xfsWB6^kqTI9bh-=+a?exKJxIQh zxxG^((-2s4&r{>i$f#b|#7r8fDBOMBk`SminP+PRKluspjfB8_lX(t4seiF04y^0+ zzPEs>g#P}c&JKZ|RbW%ePp_{M`JRJMu79f*x6O6a_U}NGsrYa;9qj|_vEz*DouAi2 zDC9H8JD+^kyS;cx^bzn%*qsoI(LOLR@<+O6*zXu0dasSrZS=WL7#C9EKrJN0%x!!3 zd_vIz5H-G5M+?{jMMXEh7kJXAEPAmhi+?!L06(gFw|`{6HU3}e4?DMFt->hd&Hw-a M07*qoM6N<$g5In*sQ>@~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/machop.png b/graphics/object_events/pics/pokemon/followers/machop.png new file mode 100644 index 0000000000000000000000000000000000000000..37f625a5d0e8126b1062e8503b68b8acd5d98290 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*jU)u`SRpUOG`^e zM#h7hjvHqdzI^%9GcmJsEamT z(fM}r#=K?&fwqZfxaTA!`u=8MT5b$K>yj4|UpWQd734?z%zE}NU{S}a zAohQ6KexX>7ty!KH2d0`$j|nRzJAkd*H|mQ*(z_|3}Kt48eMOL?nT}X(yYw7WpcJo zbNcbK#=06muk+qo_c}{SwLK*F_O7>1d0X#oWNUJs^Ih(B>KdUV51Z%seGvKF_ao|l zqRX574X4~ZJeUtY=gt3dlFLiZ{2*`GO-B=pGtyHue@!Wnneped5W@`qKX0$TY@O@( zY0I_QmrqV;s(jE`#qiF3U&Z0s=Ph_zR&I6R?wj+Iy*5WzI-;n<^oDg*LCUYGXP@ue zQ^Csl`>7UVCF|w0%eN#Pd+(VVS5g0!YgOaEm{8u6Z&aDT{Sn%j&U--e-Q1nO?)+># z@o_4{|kc(W3wW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magikarp.png b/graphics/object_events/pics/pokemon/followers/magikarp.png new file mode 100644 index 0000000000000000000000000000000000000000..9af8fc80736d54c7139dc26662f0e2063425ddf7 GIT binary patch literal 840 zcmV-O1GoH%P)Rb{!O`jI`FSBh>8VNSVL>r5G08a*>eDGU00009 za7bBm000XU000XU0RWnu7ytkQzDYzuR7i>Kl|N|IP#nh}XtD@_1KVy+4(=%jS$YNE z6+6_VT;AOv_^x_MkHl=LTKzkp7nb7TwRgdfqgYwY zg{!FoDNYC@R^4#;{t2E`S1Ll7X6AEOU38x1|0E%gqq_^Ys(iSx-h|@vnh>U$3D)zb_WDxH+Pq9ju4Kr-xfmSrKz-=BL}Zc!Y>0@gz}xw&IeKkY(;hhrBua#HaSn z&AsD_6D=^!JhX}XUmdVyKB^mWfo@j_d9?P<%1#Le8hun-E8|8(t&~+1R1qw>aBV1t7#8jjkVK3Nf=>JqB1bY_BD=ZX2H1k`@bj zmKp^LXJLW8hLL!!5s{f7YJEY{3wt%IV=5fFg8Ifn6XYx zc>{>T?(4djpVnIv8yoK6J}G7Ot|x@Nfd8;(LX%4rv((m4Vj<&3z^?REQ~Ybs_uN`^ zmqX5rX}{J35(!zs8c>R1uxh)s6bOsusDxd@-3}C?9~ZdyOvgZ`R3dY+98I?k+#{wC zvVtZt`}Ki=6bs#sU&E0wVDSC=w6ude2hR(TpUPs*+c13)LRQcQJU2Sn?<^)@;@gcE zD9PfY1$#c&|De~ZncUuxg{+`co?9LZSzWu1ald9vv`~V#Q5?;A{L#gunf#+530c7% z3(d}xa0SYIZp5w9=m8n9+y)T3QgzDCa?Z+P+C#CB7qn1Cv`b}vBse5qFlR+>WNrS& zR!A1}CRLI8uND+6#|>Wzx&n>gdd}#+R6ygqxoTxGk0eCNj|pOpSZO8s|K$%@ykP}C SMzELw0000ArS!q0r5#8k=r(L00009 za7bBm000XU000XU0RWnu7ytkQ=Sf6CR7i>Kl)Z1$Kp4ioWwNC#5mJ*dGSQK4otXFo z7(rd$NGLfAhIXP7TZYi73@rR3Oj)7~j^*&-hT?M^pia~#*Uc@c$#HhhzKh#ymogyr zl`Z*qAJ6lgeLhXQtGoJ7O6PZ0PIBE|4V>kj8NQ9LTMTfM!A<>|j#mY7&fa4aT2h31j$12{^_(9|Y+=uGuHiRMUk){~98Uzm zt~F~)aTxb<@2Fp{)r*dry;h^%QgH!l#A*qHm_6B$EvapSxz$s1*{ZNh!38qB=r)8} z!jfS;;XaKht*Cj+>R9cDf(=TkWec^0CBt|^i3vs(B^zLw^$t?-0n@Xjz(|cMg$~H5X_E&ei1F#4E~kQeThhpCj=z>IqAN zA)v4k$PAG3mv_fIbW03QS(ksz(ELpyOdWJL;aS%0+b&x8B9vjfGw|)@c;hips0Nu} z%6L!cyY{d5`=n#?AwyVlYB)ref4cDOEP!wMi-(@g$CEK&ccD$vZq7ro&4)1B-T&~C zM9aOU!y@633+Pcq(8V4KMF4`%Llj1Hp83c6HrBj(w!j=SK@22pIH%8+{m+AheQs#L z%thxmU@oXfbC($c4*51Hpvj&Yh{Ofb49&pJm)!z}KiPnHw^m!W7j5E@(h7 zh0v~N<6RipNE>E}T~r<;JrW<87|l{0?un1WITg^1UMCEDb{2qhI(*tV8)Ga4r^DSH zj5EJjpxw9HeOt|yYTd3>RXjQ}(Ha$p19=*aN~U~R804h5Mgq~0FcCcJmy7*u+iH5k z*?6P+=wwt9(~Y0#dW^X>k9 zTwZ@BGu-B1aC(uI$?iSEmjXU!-{7`A&;5(xGf?5>h#c3t?vkTsdT;+Xv{foU+AAou z$inpd=dZ^;U-HxV&1sPP`?LHZrzMkfbXy(;O`DsVndBtUrE_3MrNU;hUB6!cVx3Yj VM{wr3t|y>a@O1TaS?83{1OWY;#)<#{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magneton.png b/graphics/object_events/pics/pokemon/followers/magneton.png new file mode 100644 index 0000000000000000000000000000000000000000..75f67de256193522c4ee6cc591ceddfd8cb6d312 GIT binary patch literal 841 zcmV-P1GfB$P)KRZnZ%FdPl!;9RvrVz&G4y=-Co0PDWN zpr>S@hMiQ>R`z_6Nmt9!dDM_oFKh8mh0(b4m)lR0E&c3_FnZag3JBisN$)-DUj~Ec z_S~M(r1;n3(*#F#wL4~~*f-o0pg(uCDgH93SKOJjCqRGhX`ZqjgMM+xa8Cf38%a+E zj}q_Qo3-}(Q&2?5nj=7{25`P4I2!C zi#qaZ!?KI@kffsJk44Q921AVJJq(5|)`DB4HUue*&5Z5KvYhy8U4NNAmD|%`zfzoLT(Ka9#h)E#*nvyL>(cyw})K}Yx*%M>S~i8IUH%j*yAN3 zhUD_c=@esqD)Nd)kJ6tKr4140DIu%K;|vTZEw2Ryl2gS>6`VUPML@%B z5XkXKdwsYu%$Vb6Qz;Lr=a<@$GbD&^(I|bBSL%bqm(|5<8VdP>(&(2F@P>{*SS~T& z8a9F#c{TBgzuwLlvi94|>nlq0>JfUiWje7lWID0o$?|lJd248RBbcJZ?{0esH@W&! zs$#P)sbV&9YiJWEDV-6K61bp_w}zHCf++FyMju>%)p(MYk&I43$t444ZSG^Nmo~v1s_9!I`}m zXXh-&f_Kls{|SFc^mg))zRq(R3(X3qEABTo4Wx zDW!+k+q%Sf3EYS1-hPs97gEZ5Xt``>Zs?Q_$ztPBOy18>$^Rs~xuYC(s^9I=PkLS? zStewxvBnx}tpB4N?>N_kjGfH$xStJKSI9xK;6&zm)H4oQ6_wWjtDDo=M<)!A_x7!s?t+=QXS%|tk0ma#h-*$7#<7y#_>FKD~eV`K}Pb zA;#Gbu*Yf3^bzyPHY2T2@obCPSJ(bhDL%h`i}?}edpyJuqQEfigb`l6D#HDhN0_hh5Yy;75eare8s(R9lJ%aN6Gsn^!aOwRPV<$OhXoh0*+Io^?f_$3W`qs{ zw(bA$XzGjR6RJxnKDSd4)vsg1 zQ_j=H=&f!zPt5eLA)Zryx9hbJ`8Yp&t3$xT$nILi9@g%99Zp2Ti(dP+@KcY&Ibii! z&BL__IulQP>2oN!(w9S7pwX5)9v-&;k;~``x|Sh##8O2X|lIoGWZZn9Jp?%KZe4F@Hct1KYgHklg^vD{34;76E^C`S}?--E34r(U7qIPY`%MLoDsy3%_;O zP_X$)qDW^CHY7rZ#S0~@&-Hi!F7zIJRIVcwhq{4i9TmEv0x@Ro7Z&XLUQnR2 zG0lob_vjB|#!B6gM;T)SV~BK&VyhvBVmeX{5qG~Y7NE(&=#>Tcv+;6`T~X_PX1(~< h8-8fv&+hpz@f*R1DRdFAR-6C;002ovPDHLkV1h;4mrVcw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/meowth.png b/graphics/object_events/pics/pokemon/followers/meowth.png new file mode 100644 index 0000000000000000000000000000000000000000..13cfac09077dc2815f9a1f2d0653e42b36bd6e0b GIT binary patch literal 685 zcmV;e0#f~nP)Kls}3aF%-syKxK-(fuix)sMu!4lVpli z%NENL7&I0}OR5dIz=H7=7Sd@D%PUf*OPOLXFc;Xc_sQ5Z_B;s-8%(C)3-TP9 zvbt+gK1FF@kSYYm6~Eg8su-UjYAla)QfiT!oF8TytS#g|1t5#_B)@{@YR*SaphN!tU}&sac!h^i)+M5hBz&|38CPJnEl!X_Ln{~ z(&ZncmAie3Fl|cE268*H(=ae=-RGaUH2Q3PC@~eizn?d#r2pPa9!guCQ3L+MkI-pAo~2S2R8<6IaJ3T%O`XPvP=O~ zV`EHM=Ab~2Pj7he>fY1*1{y(p&Tu)V3XFrXT7*n!Zt8oKz!Fmrzk*7zrd#nobYQgK zO+pRc3PUE-H1RGuPp7*Xn3{e!=--Fj+gh#h8PiN_TwhsUEmzoJUDbO-ntTw+M-(l- z-OmC8qB+IIkpZW;8g~;i@BeEu8q!=4y2i`P1;#Na1_yXkul8LP2B-t^|4sh@LaErD T#+Ho$00000NkvXXu0mjfR+cIt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/metapod.png b/graphics/object_events/pics/pokemon/followers/metapod.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed08761c12d7682f308f336699d72d6967a826d GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qGUA`0(Mwg*QDd zJtY|#8DGBq36#VIviW56fpVM$9+AZi3|ww>d4!uZD)leyu+>eOtZk zgW%iGnf;iI>aXOSFRIz*cA#^<&27&G>3*Wsm*!qu&Uo8K$u!Vnw!`b+ht@E!Y25JW z%t4n-d(#8L0!xz9{jySDuVtKQcx7%PpNPA_JpEwRsQ0|@I|A3_+&vuB9>?_b`=)!+ z_Zs4k9N+kE+7bWql>U#)@-A28Go*Bs?lu&W;G6sLtJ?Y_zvMhzHs+asyTIRm?!=s{ z3~#HMm3eu~FPyGCG|yn+uY+RKlhS%-er-Dz%TaaUu&i(c$DKJ>sajNGFiEN ebN!S5v9-((OoL9YicB&F1-z%LpUXO@geCwJ7ro8^ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mew.png b/graphics/object_events/pics/pokemon/followers/mew.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae89a52f1eb3a3d0fa0c61b38ff7d73ee873f91 GIT binary patch literal 618 zcmV-w0+s!VP)G`o~saY{m`O)dwp}BEcaR2}S000000000000000>WLFE00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)-g}xFcbjbNJUuceD@o;@uUuyZb6D5 z8JUhBP&Eycg-YzOHrG7Qgg9?wIC00nJXa*eFFIQwl?CA?`Re#R=h<=^1fT7*yq^p2b@L3cdw5hB+dU!b_t7Pl6CAr zh`?!~mgM1QPwZVXnIqnP_juN+naivLm6?m64ne;RkP4uyJ+7s@zl2R_Vo8W>Pr%+K zXB~iAxSb|7D67!vu79wERi(HI7}*ZBUDPu$ZQ*eWlDHQ8{#`{DiqETfW42&L2&&A z;Pk}pvV&x9Cum|dnBnO+vmX0^y{9C>5rRqTGs>JgnGY6-+T8D7q4!@>qjSWy*Lpj$ zd|C7LdBLp&y=j6nj=ULl&ye{b3JGR*sw||7s z>El)7^V2Bc*g?Tr=5xuJ_Idh1KmN9GFKp2K^I50s|h|uDx>d;b8=@~=q zMUE~?vDTChnT*5@)e=G>nX|-@r4T429hD`@B3p_|a(}LOk|lk*Sn|-NLk|LZ?xg2^ zPn?Ai`ak}S@k{(^Kic_k$4(R@^zzWk+Y4Z;X;c_T&$qWP_pQ9O0GfSj1}Kcjb`;Kr z?YynP?c^EyR2G2`(L-dl@|FTScVsq!euc%b!zc``cJ3~47u`otsInABQPc=fxvKz< z!n-i77gd&1L<)zk++9Ej$B(35RXG=qqlgSUxT}C8;06d)7DLO0lUD97V2`7akhtES z!czE+c-}Z@=dJ?S^9UiMN~m%^W^X<3gVoBKyoCgt8IL}S!eDy}=X2Q$8D}6fXK)Z~ zvQOYsg^bx_2-8)TQ}#qu3P6dR39SRk&l|Yu22(}|i&5{qg%Nf}Hur+05@MT3c1Fbn zw(!KsG8YyoczpwP7`M>H;uLLWo9TGYmwqJ_|47D$mp=tMq{L5BuM~>Fg6Xh$N=~0o zt={Fu)jEFOWJLF3%`lAq@meSXPb8y6xAN=vJl_bI?yZG%X!{1wbkE!M3xPh;QSbVs z44BdeqfC!c=CkxmAryg6$AV*&8gYKT*f3@Op;HJ&AUkwfV7b|Ry(QNcPh?ODsh0EC zk`oJIeM*hPLMQ^C9KpKSOTiqWDV@@jLMQ`|1zSif4<2^no;j! zg_&dv@p2vOtJJgBLJ?^Dt5g&y))8L@M`uEKT?)C8a}|g*cCff~CY4YdNd`yR4i?uQ zSSOOL^6n9H4ovg3SDu=L`3;trd|oVU_$mG?r1F}ZPJ`N?_du~Er^IdMrjC0HmR00009 za7bBm000XU000XU0RWnu7ytkR{7FPXR7i=B$NNkLQ#gLL(;!r@H|uozcu2 zjpeX8EDN1O$aqG-KX2Z=H8QO#w{+3-z`DkOS*-A?O(sIq-!sK@GhIfm%Y9oO)jX@=$-s|Aunv8?t5> zBv!i7IA{_Cp4M6cCh0u2SQAtLlAs2d?r8$&+=7td1sp}t z!}&#`_8>w?lOXWAlWhRk0I={`yLS#-g+)o=D_KG@&i4~FMILE42=LjH?lu5%4FIb( z50Cx=v;7G;Qj#mh_#*y8<#PCCyO~6-*PU$u=?FYqt!0`rBZkruM6gm^=C2^2VK=&N z5RB3wJsp|=!clz$_EkFnTm2t7{kU?36XK4w;_`B?0)ubz^s+%P`}}qK#Sj2!TsgwY z!i7*KOFDrNIs^K(aO5+EC=|E20n!yy{IYzP{<)1Gz4#&h{YQ1v1E-*sBcE>ItXi|> z>SqYi9w{>6h;F>DR@{o`W)p=lK_U-7#|d zz=?$;gTP)dS5pW{6;;M>g`%r!&ol4SuZ-GLIRY?xIOg@ANAK_mj@c593J|;~mrlcx*iO)T}e|V+}n0$OJI{ Y0|$E&pV9HaQvd(}07*qoM6N<$f(L3D>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mr_mime.png b/graphics/object_events/pics/pokemon/followers/mr_mime.png new file mode 100644 index 0000000000000000000000000000000000000000..ce52c1f03c82ba1a4471b4e5d1df18e5850fa4c3 GIT binary patch literal 743 zcmV?P)FN2YX?e-X>Cr)1X=!P}k&#I;IRF3v6tnKm9c8uKpe)k_=XMw(cr;D27!|YI9f_T zLm*^msR;!ubd%EPl17z=LXrmvcxdMiT}n+#2c;Ma#RLaDb||5Xi#8jX8qr3zo}qX8 z%hpMjtQYV%2>tHl@B8$ZYzx9lE3LE=2$AJn*%QK$9SgYB|DdidjH<*10mSzwq~Kvb|IzpT%nc$OoX z*DoHv?IwmXgQ57v14HqLmlKHa1%9u1$?ax1`hefN+`6)7hJ6oM45G{K)<0ToB<{U& zCk_OLK!i^y@BwLNhT%6d9Fiv?7zXQIU~}AO{7?Gn52hZkye;Q87=p9cQgk#6erpxpc92-{qO< z*!69zRm_uJNjhv4G5Sh;-p#C9ZrWc!G*IP2kpXLS{$TrmiFN2gk-33siD5};$+6jaVVM8`00000000000000000000b|~eT00009 za7bBm000XU000XU0RWnu7ytkQPDw;TR7i>Kld*2wFc5}C_XWflV$scJVgVUr!b0Z` z-EDyaG)j!G@S35IP-JZj8_?U9M^Y3;$wq;qn>hse$kYGbQF4;p*L~gBef{m?eD#k7 z!CFjfxs->|W}J7kV8Qt)e-qW}EveVxM&6>kQJ@25Xn2ll-IlD=>%t5LbN+vlo=_r!HVK zd*ith1+-3RSWncN8x#5jmk`aANz2=U%0>v=p5cZ<&!}9QdVH#NLc@9@D=>*dHw?{` zmjzbdW{oeBmE;IrZ&$1u41+i&>(Kgw=3}9FfQi*y#4?WWF}OaI`a|$0000< KMNUMnLSTX`r$vDP literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/nidoking.png b/graphics/object_events/pics/pokemon/followers/nidoking.png new file mode 100644 index 0000000000000000000000000000000000000000..20045f13e362106d4916fd161eaaa9a7a1661ce7 GIT binary patch literal 799 zcmV+)1K|9LP)i$=R9lF>z_Rfw=(z0YNcQ@#*22X`xve8KI$}>FN2YshI!(00000y39sb00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)jez5Ko|$`o6d6}Izcir&&l>qnQvt!iB_ZS8Ce}fZ2NF52 z1-4DEMnU8T??+j;O`xMNfm(xx2QhGf@^qe=(35?aG52uqZI8XwO+mxb@3NFJI52W- zTHATO+h>rn!@Z!}RHO`m0rD<~01#g7y|D+ky*=W<41#meXMwpH23@9U4B_bHKo*y^ z?QL;j44k0PG>VNS?>0{Xu1+G)2DZIDt!vkX>!8;PjM-VYl{uS?qpl{K&Q}C0*JXE3 zp9h#i4AmhG56snAA)=I|)7vre3*w_y)MqLbV@&Z*o4}(LN?eXfr}LWmSqfQJ?poX7 z7`2P~H0UyA@Ih-(_StQF+jE@XTh(Qm?R@GM^RqFcLhacG)55z=;E3lE#%LeQwoSmX zUJJ$_QyU07f3?nh%pBC2w$`~bzcA;~qpStyR`mw-?qad#o5i^eJl;9JFXnGW9*Dxe zO0e*a4R~58iPZ~~K3!^EGvRW+*vvnxpGAXJlKV2TTM{9LAW+@dhH7hV=jr@%IT6!x z)9HLR5jd?~1n=8svswCfB-y#V4F-tQ*Jjl=knddHwsf=pF%e7O-exqXs!Wu3F&w^{ zO>6^&ElcfrW36lhQMg>P)Km9cBvKorJxi)Nh)4lY{mB?v?{#n2^F zJY>q!Awx4+M^JF^(oUshEOd^crfR)-@!+*nX%}fw5q^JEPbcf{bdl&#+9?lV`KKp+ z-+QM!o#Q;kQ#{503DP+|=D&`BO1;1v;6E2YXI({$ee}|F78Kq9*M>8z0FxaGVOPJ) z(gX4&$~xF|3@^@bQL6i3m^3t?1!J5v?gEK3TpEU{!m?86!n zm*DlWTVTGQOdi^sZEl{3g&=rCOh${U!j$&18;foxr=wYGU~wZjt>(ql8{~OZmQ^(C zWiFb@j+x5ZEaUmRHGY2Y4YChQzJz{W;QCh<@-RK*Y?fUyCgwfUo{40&SX>IQ1f~rd z9vuYZk5_C2D`n7S*)fd8xcOSJVcoUJl`t+O@`qKTw^@i?VwSwd_m%M({HYA3`2Ns2` zAp@2JJG4wF-Eq#LwHLevgGJo(Pp`A9RVzsDS2Zth+gm8F1)&{7w{{bpv@hjugDVIV zrFR!piOCMhqAbfIC3riRtk+6okhJ-P!#MMGiTns3AXMwpN$x8ySby-`>@Lf`%#|Q% zSj__$YQa!Xf)K`$uRqD0z4bYO668k=>d*!}-0ilYKNTQ3)q*UF7&r0>05c4?RE(My zbT`6X7&?X^rK9P&;^~E8umnvO6&i-l2*fN4m7trZ;tum2OfST*u}9Q@UBghQf!E3V z!c!aEoG`HkYC(E)l9(&m>Fhr}7pX^RH!0Z26IK(miU!Fc=14;X%725N)PdhV0S{2KNBH zfeYE}xYdx3JwexQ!L-mZbnVh><8il4GFgl|hXl6k(^P1CqHkbdUoaTMxHGwz%=v0UAF{jwUe|GF zFq>wh-mo_)=lz7X8=Co!&*E;FRMMUAeJDa-pmLxH%j_~U)UFF2iLX~eAplkWS1 z@8bqBcbd|j@Cwq@#A{$;*VA13YcqJZ1+~`hfT7#4w|i@vI_o!l`QsL(yXWv9G6lkc m^C2Art%>#uYC2Nx-|`EtCT#bc(REh<0000FN2|nen+92>}5CQ87_5acQw}(V?NC000000000000000+*pzN00009 za7bBm000V|000V|0Vb6__5c6@gGod|R7i>K)Uj&AFc1b{Z}OU}2i(xF)VlvKWD=$(Er6uYr)x8T)j#up7%)sewR;g8#wrN%rX?%kjJ+Lxv0)@^4b; zi+{dPrHu7emFN0oBqW|kfV-?3$1eM&NX&ZJp8u{Nm=;bq1)Y`xf?mVOo?k^}nN@|; zpbZWa5dbwh#@0jY2q3#koMtf#RcJL4S(x2aQCGh2w%`T8qqzVwr2v##O`z^&U3GKF zOq`x3f@k7FkU)sLw1fzNZ@FUyxERZ_Sr@;L3tkk%FxfjdcKmBEUfFdW7M<^}dv*jrQ(da)B-WO|Vp zVa}QSsdR38+H+4mYlOT&DfHa#18m#Vyj+uU)aV*$>2*E^nV#1@?iJfcOt+QvF$Ty$<{&-H zNVafXvu#w+V$pEHK@2sRPq@vPg~xQUfF+wVr{A{GS$Y`lpa1Wtl8?_eFM$uF7+{H){vu3u0fvee&&SI({LubSW90$g|?edGLF?_|t{H0M<`WWRgKe}%S07I!$4@397bM7tm9SdK1G(V3#KFj*@HMt zoYZC)l94Z|Bx}{qIl(N?n*|fSEA-4kVz?a((5wy_kSU*LT;w8h?vOFmG<$Y_#E0*+ z7#m&;RjUr&%$m1q4#c|S#NE3GZC*#NzcDNkbvQ^7cLD=l>8^4LP{VUz@K^@VoiqLr z?Vpx!qhN`HiTk~zt1D>g1X6p&!Y=ryf204>A7^#OBu3va3;+NC07*qoM6N<$f`HR6 AfB*mh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/nidorino.png b/graphics/object_events/pics/pokemon/followers/nidorino.png new file mode 100644 index 0000000000000000000000000000000000000000..ee64197051ec1f52b3a041fe34920531bd6c1fdf GIT binary patch literal 692 zcmV;l0!#ggP)6v3be4840nm!AUt$0RaJtVVT*P@c;k-000000000000000TK)G?2nFcbh_Z+Jar=?`e7DqF>tv2sO{ z-;v?&rVJ?Ho2ZT+#M>#6z-(2hFz;9P0l_v1nxX1YDKAo#&#~Xb&rS%r$35)pf=Cj*J~BIJqj)>BhzdivoN4{z3bp@yVEZ zxT8S<%MPfE>#lUdu`&4fqJZK((Nj7f^*N=@nWkn*D$wE8K8P<1ca`+B$Hq8>&7mpY z5An_iJ;mA9HF#!$Z5o4kSh$Mqr`^sM&-jSXZ~f4rv)&Qm=c+2tW(RTO?jmA7fS)eJ zrry9^h>v(HmZn9W?Sy!3&yyC=UfHnU(AZs7^=YlXeO7ZOvCn+QL;XE(?6(DI>cbKw zz_lfv>jLZ+QPqaICF^d$PFOOYYs=PMLBIaBtf7GZr`s5cx*q(L86Hd-KWgtwq~dS?pCO!CaWrU_bh1!(e=Z!4Mg1<>-i zt$JP;M8{2J4-m9TNM%0!Z^2HdsqA+YzJ1Mu@JT;UnBah6zv54}9)4<&HXrRdI54^7 aU&L?1d~RSvL054A0000G`>#X_0YB>DifyIXM6T00000000000000000000S`>Fh00009 za7bBm000XU000XU0RWnu7ytkQph-kQR7i>K)xmDtAQ%U5B=Z81r@p|n!)~^)7)L52 z=JVcQ0)6E;sa5&_F!$?yn)9X$^D^c-CN zpG*HSU;7z@+St$8I`WY*-CZ;-mR!kVf@$)IVv=VI^msNIInFE_Rd@<%k{44{tjipK zh=Fl}aKVJm6QT~}f>jEf(4MSgckXzBiGj=oSvQ>mA_hDaqOihy!~v9+XB&Dpp#ep_ zWg$YSn&>s~G-7Ltv%5Fi;`)CU%d-hN#=wB-WByiitk`qlTC>8jTHbeB<64u&Hjq~`d`!|}6Y;zr-E6BHh2VE||2xUZSw_;5=> zTXibg)@e~Tfz=0D^D-noIOqI|0WO+arx7|O*JFV? z7h?Heyfm)22bAD?V?J(Ac`;`F$|?p~cicgcpNGqUfoEamT(fRhu z?ySQGB5V(gIZUi2Ov1%fvV}duPm6Ayub}_HC3dP%!1bz^+2Pw3l=iDG$CX}3O*1%f)8U5L*`(i#bgfRV>68@Fl~}3xB;2I? zZTIWbZZ~>6Zze2TEX;;)9P_NR;=mXy}6UVqkar$%a?Y2fGkTfa;> m`t;$tDf7Q+=IL?O&*Hz}n!38msdf=45ItS}T-G@yGywqYe5yGB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/omanyte.png b/graphics/object_events/pics/pokemon/followers/omanyte.png new file mode 100644 index 0000000000000000000000000000000000000000..c20f2bf69c123d6314df1afef1afeb622409f830 GIT binary patch literal 603 zcmV-h0;K(kP)G`Rtv1w^(F-cJX00000000007@AxX00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>Klrc*yK@^1-7Pd+wNUEtukhKeM$zzMx z2%;!fK1M88Uvi&fenmpUZABEte;}`ZwL(~k%#U*JX5E>&agxf)oGRa(-E(e+or$8g z)>><=@1rcsI?H&~^Q#n}A^u*%JaEBZSum7xw2b)xz8`1c$1#qgt_e_`F!RDZMNAt% z{(Z9VUtfpAK%TF*GERaOhEtu002ovPDHLkV1jj!3sL|8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/omastar.png b/graphics/object_events/pics/pokemon/followers/omastar.png new file mode 100644 index 0000000000000000000000000000000000000000..5f32df5ec9050d8124f7dc43740668f76b1572d7 GIT binary patch literal 837 zcmV-L1G@Z)P)Kl|5_QKp4jlG#=Ump^GLLBQU6ui#--f zp&vux4wTWL18HifgpjR6O6g><;JheuV!J-H&n*__Uojq)AlBgm)Jb9(s&1NLG;7t4CO%UlrCB@LZ^ zM*h5Gpk~doDdB!*;4qf~34PdwK`(1AJ)2PHFhlCmkWzOZ9p-8b`@0>v=x3k0E)9B^ z@rH0gf7!!jf`>6iK|f&~Jc21&{t5x?!Q;zF(3!-TXA)U53&M#RHt zbeI9y-f%(QH6>UTELp#-Sm(SzsAWKKQNk_^Jwk}5wr!XB=Sfb=B`ZN*P;em*i*E9k zP|90U09jD5ZdU1tAkV@COTjMlgn=D;6PqmF3qiP5Y>J;2=VL-cG8KYlLBScT46QM9 zuw4sw8Ds_X!-owG5+$HGORE)`D`!lI<-|ge#gdaj$=dn!Dqnd-?cy#2P{8l2kAe5$ z*AF3><%;!+VZ2#8mW4J#kQbC3S1Z21zrNkB@%~^{e2tq2EgyV)MCXsULm^l|#i{J! zCa@8jl32DdmYj$VK3)AZ5!!d8;&shD-$=gPTkq~}Vkwv@HkAVsSW^qy4_W`o*CR1NX!0XBL$7 zq)DKM&XoiH3@`;2t{lZ87B6tUoYh*(Ci9FYURpTE$q`gP=zE~F(~@5LcIjq=TOQ|I?B>Lm%Wtow0k21G~Q)1SL{0~HQ0erKLplIlF;r0 z0H~DLZA!)r7;WF&f#{PqzmUD%uuw07f-W6v8pkwIi;fVbvAl8zxEbvm(Kn5$!O4%f zoy$XQ1Dj=fM`=ToYhwYiq@CiY_23x`P{a)-WJO=+(NNn!X#syW^w;n1DI+O6Z2-H$ zGiCs$pL7ar?)^My7iiC}c=?|E9t(Gt%NdY)#@x}q?SH#yJ#=$msBK_v1JS6HQE3R! zx;Ui}Fd6rbO7Zds(Yjiv_u){xz|tOru}dV-<|%2Wc&ZkSSH@U6+Dj^lR+_BtgQ2#8 zth0fojAaG%2V+`iXS*Uy*#x`;P(8L>7pb24p|*k21y-YZQGgbdtlf?pfH~(TVoqSZ z9ym+CmV%o`sR9$Gz)HH?5e==Xffh0V$cxe3CKgAuNjH*U>F-1T8UEXrR%w zse>Di%8ORsb#{3B_8R@bm;zx-SgtFm^R=opTv4TR2#gNtw^j55LlDBue7t1f3t7Py z@i`|DfUi060lPi`_y#ry*UT3-<9)3M0Gx;xFuCHgh5)?T^%*EPdomf3y-`Iq9V%>J zEqpaE(gM6yiS=el#O4+|U%p_6r<5_cz6cv5yH(DBD=Q+7-J2wt*|HgUn|EgUb{REq zAZF|d0(Sj#gutHQRFh+rXNyLr<6;z6N2NLE3lOzO%*)G@1yo0VmLvs$!;Wk+4vry8 z`zMBL2Oydc(rI&ShG7AkLoA+$4qPqm+q~#A;INdfYS5Co3l#k0gIJ|3 zkf*gG%Kgfstt(EsXT|*#0ZPG0mn& t{1r_aOhB1G%);`>E58SzpyWUL`~@&ZLL1sDV=Vvx002ovPDHLkV1i95&UgR- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/paras.png b/graphics/object_events/pics/pokemon/followers/paras.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a3a83ce21f3bad289b3889afd8293ae4837102 GIT binary patch literal 625 zcmV-%0*?KOP)FN2YF-h5BaR2}S0000000000000005Xc-a00009 za7bBm000XU000XU0RWnu7ytkP=Sf6CR7i>KlCf^vFc5~hkZ;f-83|bI>;QR$&IS$2 z=q5)TZatMQL+6!&T?{;BgcjW1m_}8n6dPRCrHB<9BSQ{ zNBrK!kxQn^xQS2MM1jWv4g&EYOpIHySKYxQp1Xc3s*xc!lx`F9><9yg#1x-|GvslY zf`hcZL-F-K#$pf{r!$cf-I3Uo5ImdEfPMV5g$?j&v*)VKZ;Wq%@Xeed8fxoVM^@mE zq_tCn+W4PrLt^~^_Xu1~iyd#Z<=W;ATHJN}=8zhUY$j%=70Bz>FN0a0RgEoNdN!<000000000000000=K*II00009 za7bBm000XU000XU0RWnu7ytkQgh@m}R7i>Kl|75&Fc5}SxKSC{UD%Yy5M1vScU{hB z$SK_wNwM7)QIXOFgzEhRUY$WGogudn{mL7CSdN9A6vuU$%8xYjzB6N!Aasv=+`~sw zmRI?oV@>zVYkVWha(R_e@=59G3g3``^g(va_GEjy!Z#$=bU1L#2z}oUk7B+daoYe+ zcCX86zAlkGLHfl&F}sytEs zVM=v9&TeJfp+wJ(P5*W3vSUWLg@K_X+MY)lN@k|y?V%oHtX(^MpB=L~c{Fl#qtBxZ z2WF{Le4N2LcOW=-{xO?;>$!VvpGO&e7&aw-XG1==uARBRjoBQzj`Xaa;MNWO79=kD zs6Wjcp}M<`7(NN2^h|4gR{pI8E<3|VJJP(ZM;OmF?1b*SHx@HOMOLb#)=G%X8K%N= zQ>M#qXVB4hub1yr|z_7%!|~LD<2t5RTDGX+3+|>vQ8JI+o`C z2Wif5K>Q`}+Vpqo*a?0uetuh2!Wjsb0|&#TvJ+~hR^E^}Zi)j?`A#HLN+>T^zAMI+ zYVt5a0)l0lkrnd>k`cp;$~A!xBqd6zf{TMQRF&nt&! zl}o&0PB01VN^qul3Xv}w?hIvanK!v@Su&7sWG6@%Ye>~#R$m%G1WR1mucI?SwS)=N zY$=@}&SY&EdaiwajU-P(IpfHIKKaV38x4 zqi`JrRbV`7*eAIAkYJ=S$NffXE8gp&{_Zkj!|4PyOo8W#ivJOR0nq89c(@3#iU0rr M07*qoM6N<$g5#B09smFU literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/persian.png b/graphics/object_events/pics/pokemon/followers/persian.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec83aea565c1bc8ae09d9bfaf72a42c249cd621 GIT binary patch literal 717 zcmV;;0y6!HP)En`N64q@!5fqX;GnpX+b$L000000000000000eBX&_00009 za7bBm000XU000XU0RWnu7ytkQLrFwIR7i>Km9fs#Fc8Nhd*lTeqZla>U7~o11sg)5 zkHC(Qy3!yyjE!6Q{|4yOx6zHU%O}*A!zN9A4sz)bCb&vff3kh|zw@1&W&iD8HCZq1 zP)5jMmi5npNHX8AmrcPrj3jeZ%cj5~Vuyk+TqD6|4kLbccDL@nQhbly4DbY@yUOM% zzQ@Yp2A3GzCpet*9VV;U?oyC8DtikHou~NE#(RjUFD0rj5PJ(?|0c-^r)0KTcYqe% z1%#z3xOG~Qh}q=mGX4`QGF!?Wprh8#c)lL-N{_#$@t?Q~!^#RsH56HjeL_H&;MZR- z%J(Mb5MXt7ZMQn-DbAFWtY`*=IVLGDOw8fL>fwap$77!2Uy{kCN37tb_}8*Ef!z&r zlEH&J@P!75IpapgP2fs6@p~slNOvWCR6Mdm&VwZO%^d%>cZs?{eY11oJVVR*bQ}(d0(kGfakFUtkr{8Y%fpK#PL&A zu7P)Xn%k&ewQ==L){R}vLaLTABVZoq%|!&za{8vtUz&H zXI30veq*2>$?o7Yw&La@r^^M)o1Fjd^RL)X>ERSMf4=7^00000NkvXXu0mjfjC)Go literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pidgeot.png b/graphics/object_events/pics/pokemon/followers/pidgeot.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcdce3cdd81eb872d5065201498aebbdb7f3727 GIT binary patch literal 1177 zcmV;K1ZMk*P)G|=|arwb9Q8^jmadF8>A)%q6G2&_w00009 za7bBm000V|000V|0Vb6__5c6`4@pEpR7i=vmN9GOMi_=w2(FoC$#uK9y)F`N1pAK+zfSr!7$C4WH1Ori41bXmkPxDi+CIA*aBy7gFTQrbnpkRtY$sZwM# z-^^&_i!U6(nZ}Yv`kwcFzZuUujvRLJd%CDz@H?nZ{r z`-Whl?rj}k=lL5Of!2dN!0v6G_ur}~=oA#T*Y7Ll{XFaSdX`EH0IC3B6beC^2Bge5 zDm7r#Q7r3o&MlP}>%pbEtNxe6WTle#w z0a-;4`!gOSa7{F)Qt_Hk{nR0YSC~FlLQwo4y{$?9-esS3WyjB2&=S(|7ClG-E zth3tJ5s?u%LIG*!mE!9ug*VpytiE=-TW3=Dvzz1l0cXzyV2`PY2q~naipYpSaWNs@ zN&yDfdz}V!0Vz&&WEGYfi>MC1$POmZ@l8rd(g61fIcXx2iak+(0c&cVi>W(+=&yeE zOQakC;I#yRg9-rf6~ctX(vbixwc>(!m_pTh=Vn5VL%TjIe){9>yM3k{1PmOZSUC`Y z;_-zBP>~S;iPS6=7vfz2Jo=Qs6jL2S#lQP)=TBJlh~gjtKox^1MB)apMlHS)Y^!q;OME`xl%D{64H`g`m<=l#N*rm#xz~f znF3I}gvd%v6`=TDlz4Hb7oWQ?9Yw8T(GG0(6#$OC`bxcDCF2F9>8#QjFG&*_DHpJF zs*~cIfDFGb&FXfgqqZO=qJFD*vl0m%?{06I?(rU`6#J^nE?ovqWN`@woa)pWpLu17 zUKxONWC5tC-zrA4W)&6Nt4j@VON^Icr87>4O=O1)m4N`b;(v`}0i+|-#Ek%8&nOoA zN-k5r)d1#xi}4R3(h)>u6WLN{ERL0fZG9WcqXvd_WB_Q9VvLPq2l>LFm{vyuS}^n^ zijG)Y03tKrpE}Xi!LMO^0)wM=aQuACjbZ^125mlTekpLL1wdpLz=_0?v;fkPP5812 zOdnzbfM?e1Mn5+NAhPyzHP6fw>BuVKxb_|LDPDaL0FgN#7*Q17KZ#~^(E+mVU(o!K rKjpfBboTFW{g+Xs;ll!)$Xxvme`|!V|7a@-00000NkvXXu0mjf8!{AX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pidgeotto.png b/graphics/object_events/pics/pokemon/followers/pidgeotto.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf9865eba7d3c18059768afe3ca99a4c408394f GIT binary patch literal 912 zcmV;B18@9^P)FN35adGj{aq)@a$w?uhA)&#UK>+~)u~8ua0000000000F2s+r00009 za7bBm000V|000V|0Vb6__5c6_21!IgR7i>KmA`A-KorLhZYr7%Z?3kCU1W|JV{7Y} z(HI1of{CE=pW#KtW1*(aR18PBXmBu1O{7H#LXqAd)syarlv7#=B%Si`p!=cs{eIrP zlM#B0w|J?*-fIi2UoaV+Juznq*hKUh`SIy_e{MauC#>PWN@zJg4fcJ3*b=aaCTokZ zOH@0?)HuM4O`7%vf=3o@qDc^2>z$!+jD0W@r{~8wwizZtD^QnT5*eF#5X=W%_YILc zr^YdK1dj2hN6;1UJx%26IXqaj0(hzR*ALopR+!~Qyy>4oS72J`1f`yHieO%K1f-xA zs2xM94*>_8tfe&q3nPF-Bk-_PbF(5ouk?m7^JK}ygL0g~!386b<~;#iEasXK^W2jH zqjIO0Vd58h!6OM%*P<(8omc(*sYYewX~(xES7y-m=EI0QM!F0W0&*RvBPg&|98AFZ5febd_hP^^Wjn< zxHZwR0YKx3C5M92B4b>3ijy^hkQ&FpY3taZ5%9sBiD*mWO~WvZywOnB$VnTbN+!T; zm7<@QmwP7-Ri`+jT%hwKhg|@jw2tY_g`$|4ujBYfg=RdAZagPva+A{#>2I*OqWE}y zeQ2IkPC;aDHo6bRDYlLU5)@whhjO>tBWIibxLF z@ibHfKliHMa^!hSY)!n&-rGxqR^5)|Wp!6w=im41(gp=)A9va0*d)^<+FvKeO!u>O z(djDv^z2)scjfC3ih%a=b5 z4Gn)@44heL$;ilfGSYIQr6f=l8u%jr*aaxWS>O>_%)r1k7lawrrrLgEU|^i%>EamT z(fRi3LBAFQ0fq~00+##}pK7^G*Z;6j=Afctpti&-4kU|4US!#=Fn%IdA!2>b4{!F@gX1{CQ k{PJT`Kgyo5|1;XhkfE`%ZVlHpMNoWty85}Sb4q9e0BA_*>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pinsir.png b/graphics/object_events/pics/pokemon/followers/pinsir.png new file mode 100644 index 0000000000000000000000000000000000000000..fe630135f34fa0d160566ce1dee599f1e8f9569f GIT binary patch literal 788 zcmV+v1MB>WP)G^4CX#fBK000000000000000`(o#H00009 za7bBm000XU000XU0RWnu7ytkQib+I4R7i>K)z5F*Fcb&yT%*g`bpbQ=ae4;XiNQGTFTyv-D!8i~5IS~`(|+(_K0>CxG~TX;F* zZAL$Nj%sPT^FWuQ+2`}Bfpi&2=2skn@r8?R_T5c#LY1aFD>2%drrF<&qgE5w{c&xY z?8SB3Odm&AQ&T1C&g${FnVP1*IY#YXC$xWTB)A!K>I3GeWI@M{X7 z=0vwazuv?EAK}pD5b~M?9ga=x)dO`K_wV2iZf2etwL2abf!?6QGx(nIQ03`1W(;6_ z2~0L^ngp>OPs9q6fxIs*%EdVI^1wvpX%5mb{%|_NDlD5)(klc)@wb7^^CFFsBCE7d?Z;o*Ljrb)_+z^tLP-0#USOBD7w z5Gz-6f-$CQiZUmx?(A0`3SonNKFn}XS}rtt5gvp{!(oRFA6OuUDvw+OHauVtmX%nx zv}NZ8X`0$0Owg+K#jfy0wGh#{UG1Y0000G=Qv00000n?{iC00009 za7bBm000XU000XU0RWnu7ytkPgh@m}R7i>Kkuht7Kp2Lz?!=U)bn~5jzL)QP@6JxA zRjXF5TD7WVny0gAD4xRk3}f?DHnDEVo?dI{VkYA>K78v+mdLrrSf2id$4a@%e=X=m zdEi+B7O@8q0dQHE3u(L6von}B@`xS+E5<3!fO{_v3%u0>2m~$*`NHC6{rWhZHnR803Pe9$ zX27U_%`WF!Vc~Hu3t{1o(ho5}Vb7=0kW@@q0Wf;#V@%vK54bGknm;AUm)p!vundXl z$9`6D|H>!Cs{SeGP`m(J2+uEL_Xx+9T;OejJ@9?#6W6Ic&T@XIJ9)pD8O@BGO|Y8^ zY{yo?DA|ivjd>ukZCe~LB!=wIM1Laqb5A}lntN(K3;bbp%tz{ZYlDB)Hvmb|;m5a3 QkN^Mx07*qoM6N<$f`G~Bm;e9( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/poliwhirl.png b/graphics/object_events/pics/pokemon/followers/poliwhirl.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9a3f1fde67aceea73cb9fd806d4b7585b6fc24 GIT binary patch literal 569 zcmV-90>=G`P)Kls`|xKp4h*iRnxQOmTAI1DNANWK#KK z7=gTiTS+Xknt-_01UyD!O$;lOd`ho(E!R6}ql1YC#DNWK-(pjwthOm#niedozFmaS|E0jFN2gvC&ysSpWb40000000000000007y7Bo00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>Kl)I1GKoEz$(#f?KCnmWrQ4+4T_DmgJ zno#DJwNNUf4elW)L3=#JiVmH13S|@uxW6*9>s`OF6J3#1jG_2uc7F5l!?MnHwzHk> z|5zOVnZfLe?^$d!8kK?-md80Eg_Ig*w3$bYc8iKtwk*y@7kbPMfPI4ubm ziy9a*ly&QQ#NwC)Q9-TDa%TjN(;#f*)au!WVHnSXCoEl*K~Dh}QI9$1UAQT7m584~(% zcm#W(dS&LS9;%6~ODND0SrB;J5!uF+4U^rz zmu$bOj?v_u=EyWKB+~pW$8b6k>izO3om>$0eoi{&uRD)>$K;VmW(9_`IF@>D6C;mc zuONp!?3D(vIDGu$Ap)m>R>G_#CQ2_w~NjWJ10000000000S(wS{00009 za7bBm000XU000XU0RWnu7ytkQ9Z5t%R7i>Klrd}DKorMs3J21nMF_lvY#Gx>Z8g<5 zXorA@2ArW zfA9V8-5tl+CN{B&|0Z~%4J5c(vWc-F9@ao@a2;y~=oOA7f^T zFUB}w2VQJ9aq4z5%=5b?=dc5Vg!|$cGmC9%FojMdhv_LXcxZk8#pXBgUP>vJ^;Y}| z&u6`$PtKqp^zoLMH`bKsXI5*)=`BD<&RHElCO~@Y4NE>Rm=yFAqQ4fcQttwQhZ@$o zNC*HvpaP-d0WB!^u&%f?%-smu=*|=@(d;5&0N%;_l7(Vo2w$Q$))kkAQ-1_LdXE&h zwbw#??7fQ-ZxxIS21nf!tQWk}O=q;gZ=>OizG{!fRz99&c;J3K{jTX`Qzux@kDk7= zg)Hw;166QN4CWa%oK*GF@Lv5IZ^>-qjb=d8t0Rqisy+iZm{R<=@e}f@@}WmI4OsvH N002ovPDHLkV1lY1GyDJm literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/porygon.png b/graphics/object_events/pics/pokemon/followers/porygon.png new file mode 100644 index 0000000000000000000000000000000000000000..04115d119ac348ca23b89893617dd8e9fe11fec2 GIT binary patch literal 612 zcmV-q0-ODbP)1mG>(S!C@IOp}EP?L5TnW00000$endD00009 za7bBm000XU000XU0RWnu7ytkP+DSw~R7i>KlDkR+K@^6kShm?}LGu84g$RmOB9oxI z+U-EV6t0(5BG!|P-a6YGx@U$$^usVw4_-&5Rdg1(arqJR-!0Ap+oN0nC z=e!1Hbm7xLh#~Beup7EOgof`{Bv z8+=h91trM6!WQb?f(v@nW~>DEDK1Qf>L3#Z$L$PYC4}7bPv)?1mrh2&pD_FYGxTk{ zdJ9+zA0fAb1H@7Qcy}Rej=;Wzfsh#CS~lx60V^ToB4emm!cR7x(1t&m&ho-OrD&lp y)O#!>&NY1TuS}@A1&*jeDdHb`iD;kB|Cx75GVvEr?p{{_00001KIqEP)KlQE0iFcilH&Ty+CQ^uQa49J(km%+wL z3dUQ~Phg|A*khp-I+ao~T({EBA)d5e2o$GNf|s~UuVeFF`Xu=|wl6v8m2P>Hf0F(C zKRqRcoa2ADmg0mJILw`H}JHKmzA*1Qn**|f4@JM zl@>xEvRIVDY#(jv0d-zGy{v+~G^zItPbBN)k-{Of5oA{DTxM)cfv z;6f7Fa>)C5K}`nV)RaetjJ7W>?Le zYhf9lK(l0D?ti+x{kme5MzID^@M$(a&FeL&^>v zOo)f(n73ajoXHsx#_+WnIp1Vs_}rwZ zdz9MZAWW_8);dUh&A4ySv~~bEpv}C7pD1_d@REA01^S}zIaYli*scOQX4>>UTwvs3 kwF4j7#~;J#h5uN80Nb6+hDsIIF!e6xc|e_vkP_@eg1hVZM#a#%(D#q7QIF*0;isPHB*L}(2_!zfO^64o)bJ*e3I)%x*@2;AW zb}sbTQH|s5ntd7*Hid7V{Ar!tVHuNi{YAB(+uqIDWPj1oYp2`dr#qzna0%&tlCA#l zdFpJn*_)+ru80Zja1DP{@#Ab*=(VgT*5B+V-#$0v;d_nW4O=G9=3{+ktKN~A6J&aB zTkt{Yg>QCcrIz$D1t+wwJ8>Z9N!170`G3MPTjj%MKkl@C%Xm|9g54UmlcMhX9{<|C z!@fiPM)_JFf2krrVorzy1IGeGHFZG#7V8-4X{yn5V0s%Q~loCIJ0| B?alxI literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/raichu.png b/graphics/object_events/pics/pokemon/followers/raichu.png new file mode 100644 index 0000000000000000000000000000000000000000..1887d9a74621bb5f563d79e33fe53b5784c7b1a6 GIT binary patch literal 805 zcmV+=1KRwFP)Ct&p000009&AD100009 za7bBm000V|000V|0Vb6__5c6^n@L1LR7i>Kl`(4@F&Ku$70eA<)(+)8N66H_W#gL?E3ItlH|4Sv^Njf_@+#1>` z@8IK+zVCfc(jf!ztYAF#w# z!MK1KJ@-7EGgRzlSekn%R}4z`6@(7*{=nLv&wrJR86s5n z{65q3g7wW&3VO)Nxs`%>&sho(*KdAJ9%nx{kCWa0!hEuu`@eaQ%L{&8J^&Wwfk(33 jKcDy9rO8JF|4zRF=C)~SaP%|M00000NkvXXu0mjfUC(7L literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rapidash.png b/graphics/object_events/pics/pokemon/followers/rapidash.png new file mode 100644 index 0000000000000000000000000000000000000000..974d681994545f4500a922cb7dc5cde93a9b6138 GIT binary patch literal 917 zcmV;G18V$W{QDK3(sd4#HA#q_rxygBKmAz}*Kp4iwE#^Rr7J(sy8{woTn_q+w z@#Lk8CkxdGvZ%uuL6%~YEcqjJc9FTcbm*M1ixbrj2K`ahhkakI5(*hQ^vw|ebh_tx z?n8Hm@xT6+!c1kBzO}xkC^Fi8+W?rT2AQQ9(5~Wut-p295@Sp2Ppw34x787AuWREi zJH+}367>bDwqtdK%u*GZHvY1MZ7Yg2))LyPB2@z6uG(6%K7=eLiN=xu>QReyPi3~_ zRB&cnshlUX^(B1DuE}!K%4kR#Sq|G6$B%?{g+s}4sxC?%<@;dM$_O%=t%fapimykB zvLr_8DaW#%jIs;JrfIyW7l$YFS7ylhw!EYE^fJ2!$ZYvaR{cgGVDTQ!R*LEx4j z)>H%tDi#JEa3KKqeJb9sm4N$TiU>e?)0TRx`D1af? z!`98Pc%JbkG1z=oJh`8_Aj`dQ=1BpbONKoU&=1dw(>#j#ws)rS+PxJw44qF6^g%lQ z)?)+B;^PBst-UG$Z^mVSXHQ(?{Wuw{??Z73qA*^Dv6un8o*C##=vUC0iFP`_GR(0Q zU^y{N5y1RteHozfHsbA_ZDP*k8v#uWz09%rjkEjT0+_cvfH`5PhkB+EK|eRJ4xx2M2|?OPwuxWVQe zczdC!dC-#2P48>X>h|7?Ex-FU|4HI*r#g#-nzbKd&wfb#$ISS|Nct0pTFd^t59%F4 z=C|7fpNM?Ce*LfQvDUdc(p4AOIUcmhx*Ren-<10z_<_^WkL=$v=gzq|wL$o>t^R_o zUB_9T{`#gXrrM^l=A0*#m)sV-Tryz&={Y!1I~ zaDR*xTb0Rh!F^^o@8PzUIYAlBhqV}74t=c5v#JxTf3&J#W8w`N#r>fkatrx4JQQbG zs(f?9*-aLLZJ!Sv-Ie%x?%5-z8cQC2P-IM4U6z+Kjmx#Yb8@NkY;%Uy%NN|9e>Ug| zbArR18mS5WqSFmLINwJ|-qPt$_|){GtZ%LkZ>is+X{Sr9~j@%+z;-R6fr{WWYT7Tf3* zedoxr-Kk4cr`^np^e4cx%OlBA*E)o(>$hfPd>7EbGz@g@EKS1wlmlH Z&bR!r&(inK15o;4@O1TaS?83{1OV2E{$2n8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rattata.png b/graphics/object_events/pics/pokemon/followers/rattata.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b389ef618ba5fd8fc4ea2e642fb665b670f19c GIT binary patch literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toDWaAo67OT);Q zH#hDCvTojdXsMVPIrHVqpNx!*K!wO4<+z3ekk47*5n0T@z%>_y8P%rReq&%@oagD{ z7~;|ScFM-QW&?pX-Mh!aQcqWeNliJqb@HjRQu7otr}s%3e-lh_?0L&A5TJY{Sj^e$ zUB-zC%YxYb3~Dyk&Nr+VNLsP5P3qPEDS}#^fyjBmhtJdsFQGPlCI#&1==Otdf(YyN*i^(vx2*;)BS^pVZ0^b<>#`fphALu1XoX?12?e(Yhz?hH~B>tyN*#5Vso zd${VM%8DRYmcGX2LN!MMzHXlW`#98aMs~>%g;!!SFhf7`0Emd7*3tr zmpkRl^<8CdmK7cDd=XN2Lw99C$qn0pgXxj`x;FD<$xnS6Yb_aKsrCKwI)@6)!*{$_ n22A-{I`8hKa|z3D&%Y+V_;*W=?+tNTP;`2_`njxgN@xNA(B9~F literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rhydon.png b/graphics/object_events/pics/pokemon/followers/rhydon.png new file mode 100644 index 0000000000000000000000000000000000000000..b606f11f894bb874685ef4807b3726c2cc56847f GIT binary patch literal 790 zcmV+x1L^#UP)=Uxj{J@iHV8X+1Yt%If)@T*|Avx0RcflLFwuF0000000000000005%7_R00009 za7bBm000XU000XU0RWnu7ytkQj7da6R7i>KmA!7QH7$cpUXv2;%?zT<8tpvgx0SzbS&4n@=n=#z!?{1kV>lB zuQJF66v*RjtwCyKNJ+^#nyZDW>&+^+H9!q3+yV%W2Ge%VQPY4x5MyC-E)1}V>5T=K z?6D0_jpxgF_a$2IkV;&z&V`BHEyFEe>O+Cia}N%u@x?_v4Wb@$l5=;a%lp$O@t}5VELvSRMjqvNkLS%>s1ZZocsX|g zwO`&ps=IWt580w}sOF5;4E*ZNdGi2-NPWmT$AG}Vhu4j0hY$~0V{1@1GgggB{H>99 zpxv1BoQq;lKP?KirTy+0mx4%<;gG1`j|Frxa(9H1FSYWZQbuQ7b^Tm{B#iCnp+3f? zP^2^qc$6bEBrZz3H7zLANnzk%sdsR7&2O{WQDES!>yFVc9CiZ4ik|e4gMi8e)Y65- zUK8qi=p^e{Es&~vhvn5r*|8p4Ie0XIbEJBQEQm&vM-|ewB2;{Dv=+mFrHIUWC<6)m z^~APmHt?i~Y(#qBq2pVJ%==M* z9fqL8w67_!9!&zb>Nk&2N;A6p%xK6@4&A4d+qM};K@)ikxM3xWG@$lc3QXYd4F1=DEOjyh2G~i?dNtF8+QFSO2yjpEn1)`N}`CKM=Ww UiAokZPXGV_07*qoM6N<$g5W)Bk^lez literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rhyhorn.png b/graphics/object_events/pics/pokemon/followers/rhyhorn.png new file mode 100644 index 0000000000000000000000000000000000000000..78faf7323823f376cb0a990a415d7689934d3f33 GIT binary patch literal 628 zcmV-)0*n2LP)PbXFR7i>K)xnONFc1b{BzS>|M-Asy9{?9u;mF`o z;R&i<`v~bGu~!zW;jz~wN({s%hwZ7#+&+VU9D4{+^sHw+>;I`d+xDlc$hQ621;ng3 z{cr(~@?}N&h9gd~-14K6&=6!{E0hX1{HS8ii(Kij35X!T528woNhGz&DeHOk!UgL|+D6NPJP_K+JwmT`d6$*V!v4?JFE4 zn%3{QhiXvis8i$hw569o47oK^pl-cp31S=vMgi#aGy!M;(NoYhDGf-fstdm7ra*a@sL;26739lBQdO#n*T z$m^L+&S#zuwIeC{bnB{MW_yO#7w<;T@9g|8JK&%6@9P7*&%d_w=OpF; O0000q2bx7VL>6esfhsr0U=>|*{M0{>G^qSSpfk7000000000000000ici1R00009 za7bBm000V|000V|0Vb6__5c6@e@R3^R7i>K)Ui&(Fc1LH3{i$|CxUD70o_prbAzlZ zuvN5TjoUPe*g7D@XbDBf7nBd69rBgLO=&KU-2sUKDL3_pL$!|oHtT;UZtoas8`264#FSU0pgR>KY5i|IP@ zH-K&7cA!s`SS?|@q1S2pSn$NvOX9ZFch0O1#;*&>n}(*31=H(`l)0TkfiSf@UCfaV zH+`5IsnsoSe!U%Yp65zAoZYK9BwIGE3yP1?@-t7IM%@q{Ufl@{Nk`MV0J6uMta*wZ za|Wz+0_vUMDk7J%o42h)UXI5z^6z-orq6`&0$d(c-6D3H?hWPulK9YYRF)Y@1zA}x z$w0~0v-bLWCQk#G`;@*3y{fcjUC^G_$puM}8LL^d-l?{=`?L54K|7z0_>g@#00000 LNkvXXu0mjfa=h!D literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sandslash.png b/graphics/object_events/pics/pokemon/followers/sandslash.png new file mode 100644 index 0000000000000000000000000000000000000000..7977fb8fc91d427b88177ff1eeb30954e46960e5 GIT binary patch literal 729 zcmV;~0w(>5P)EW4KSy{2MvB`-s0RaK&>G_FaDKQ}tDQSV>sX@V^iJ@sBzBqal00009 za7bBm000V|000V|0Vb6__5c6^Pf0{UR7i>K)G><_K@PSq>o}mZ6 zUtnsngRm&bJZF=9p_^)A$UYTmg*Xj9! znRxWDqq{B`;!asAqq4$SYlwQIAJs@(uY`wv#aFm0wSTuL2s_pB+NX@fgWU|8#LK)jw<8FcbiAfi-0_5;#Y`gnbg#rCF?4 zAZR{CDQ$*MM%NSJrqV)t*+P~m(}fJZ%NDMrL%v*PTXJljlR`s>Lf-cCJH7WL|2Y6& z;wAo@fY0rwM#UON!~W-8LSP??6s1PT!YX$Z3?oJLDxW>Xm_BY z!Hz-kvDR#OYKOLjR>9EaNrll-1b2(&tBF8!w z%w@N1WA&A(1ZnzxIqZGAC6=L)Nrw#WEILLfrWt3;)kq8__SBNsk2o@)GZbfw^FhO8 zqf5-pg&QZd4aug3Rzg!}=*;rQV*iYCk(oB{-Q){aA~JdyIJ9l>lkSoUrim*kapPak z9IX&WyVvm}j!0HsoIVU38qPL6vp25r1*P-dw8_Wo)9X^*EUtV5Z`|a?N~)Vxdrw2# z2E^`(#L5?(Z5qFFM&^R*>BOAlLGzdpIx+sKgn{jj<|&hlZ*uGl&c?OVgXU`!?GYk{ zEXaXt&>A`F7~?lLt{mUnu(D%Yz<$;2MA@M)I3L%}BWL9DN60libottRqwhDFzkjyh zJ)3vjG!U8K6#Ie-;>x}OAU^LJAfK<_1J3R~Qa)`D92fHsx4id{LttFQh<6$|`wxC# z|NBP8{2hU~{W`;(-4R-(-3GQmPSPXP7Krw&eF2~6=wZ)sCm$)hO!!CE1|vN-r)nK_ znpX21^$Kq1eZ%_tL8l_=vt1BISn#R5eYg6#p#}daegjVOPa+cd12_Nx002ovPDHLk FV1hmAfT;ig literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seadra.png b/graphics/object_events/pics/pokemon/followers/seadra.png new file mode 100644 index 0000000000000000000000000000000000000000..64c61f85ffd643510743cf55b6937dc965390e50 GIT binary patch literal 813 zcmV+|1JeA7P)FN1FK}o5((MgG^`O%>>@c;k-000000000000000bfRQ)00009 za7bBm000XU000XU0RWnu7ytkQqe(KmOX3RKp21zjtm+dQ%c6Z3J7UZbh!5E z2Xv0=iY6V~Ur>qkP_{G_GTJACdl{WV$^FVoitf{OhK6o=2g4(Y_jx~jLI}OYOT2`N zcJ;jbPX|s>o+7e0VX*4&i+>m5`z}HEvrib@qb$V_PYJO@KI5&(DYpc^P^Ns98}@|= z5gt4FJ;urWZj*<5g(!z;if!n_ketDnEKg+ZGo5}?-odORdJmQwyQOZJ2)7%DdZ3r9EykPJXC$mcG~_s5^4 z`~csM>zGbtU@zP=xo{e0tvg(dk>8&bY z^(cH~OySFC=*k|S_PM`wQZtC^uWG4y6ke+W&P5gi6-u}`AB0qK2HnORvm&2SSu&D@ z^9wzq`LY*&oQ;gHqBbL&H%f@F2H{#WftK0F$YWHz7HtxW&E!<^AY>CQtblW1GtJNm zd88N}5So!vZ*1UMX#|*xXWgklh`6=O;mV>LAe)Sa+x^g%3cju^Av_C443K_hs&X{R_f+zSmC%cf~+tAIgx zqBsx}poQ)SiFMDfkR8M|;wh`A)?FloSlI>iLd_h0!tGRVB!Kukte4gf`iu}dOdzy{ zNU+9v|Mo%+obv{o{(?A$2D=UH2zHn`?-tau+6XcM4Kl|b$Gl^=0fejiY2LK^83S|L r%_3*sk3rIBFmb*Yx`Vcx|Nq4wm6Q<;${Sc{00000NkvXXu0mjfaMotW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seaking.png b/graphics/object_events/pics/pokemon/followers/seaking.png new file mode 100644 index 0000000000000000000000000000000000000000..6277a92913ad1276f19a6bb7272a711df435b8f4 GIT binary patch literal 1038 zcmV+p1o8WcP)G=Tx0byZb!9i&N0000000000v!Cws00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kl|PT1Mi|Da&C$n!RkZ0m5;9C> zDV58UW_7o2(4ifL+Yb4gRb-}wd_C&(x)UmzbV!!W}F*^O-}?mPv< zk7b@`-ak8N+Sl=Qe2Jmc;q*TY>W$|h@CMT-5A*$zAM_|1%~}BMjSld62Bn)G_R}F6 z%~~Lw^yu>pOvK`mAKn|NlqiEn7$o(;z?jGl*=+Lm>VjM#*hJWn5h8En5fm&@8IasZr0I2J)H@w2mE|?;>Rp{EgWz#P>uR-S zT^INO_boHEBLh{}SA@3XS9SR@tvI_5lAf+uHWwW2uyny@m| zp%gj2t)qkNV~Ee!S4&8wf{z4;0*$;NWJMMkgd(6lqdp_yQ$l^ZxU4ufu{?)ru0Gz{EI^j50tV5^=Fk}-d!!defEKnYBnon zd_AiGc*vU-`GecudWV^f1U1ulI!1-qa&txqv1W}lP~2xoGph}G@$Gkn{MyKn6wBW; z0GD1n5EdQVNO0(4SyMvJujZ(+wIMgE#=M9dvi$KmA+NeUnC~UubcUvj5EtYZENi?L zj5G26yUpbrVp((KbZy^r|GxwD%Nz3cp8R&}#GRpJY3Spk#IqkzQ*=z%e#04;g*cnu zy-b*8ou)pL29irh8RU@FT=24FaV`u)$r%Vk>Sg#(%W6<6KY0d1oJ-_(^mm+HSuXDl zd%!jiRHaCJ$QW6Y%j_ZT45{Mlyjy~s)}V3a`xAaVeZqUr>%X{yz0oJ#cyhMgSne?{ z>d?1NeQ46de3xekrF*%S2iT7M`=4LV(__rQKG|;hnUo%8aej^zGiPF;<*)D3qs+u1 zprhVk!tJBc=Xi=jaT?Qr4cSfZ5pEximrwAcBcH6A@_&tg00YjQ2_w~;oB(VXVPWa%`2YX_-wAx-00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls%5yFc3xs1f~vNyOGxh6j+Xxk@gOCUEWJgrxpvXv@JCK^hZq@g$P(^N^Y#xR3j|kNfy< zL!=(A(sX8OHx};{WU!)G!J&oxmN0q!i_nWKTP{GvmI!=du*QZhxDfi0g-R)h`>;p~uohLdryF zH`~J$*|Ii2R`P6Fsbn?J!rUr)C{(zx^&pXZMk)|BBuQP*u~;vS0Hf(sqCx?!t&u)5 z)?BbR)~25047)MibSLaTwMSbLv*93cERo%rg*&wM97~8xRhG$k%nQd+2hZ&pP~w=l zXDSe~Is=^5Sb~M)-S|GL;Ml_M`!wHjKmYmT78{&4?3vwiy{!PYYB(k#J069hYaQdg z&d{;yO7`L9^b}z;_NIWSe0%)-@^uho+VRtLQA^u8#!M0%SAEHTKJ2g|UzKCt z7xd=z`}9i=r<%dhGHE9Knu=1|L*5kq|Jz|pdv%x#&H9K57`%OY$iu-ZbYZwqWLAL( znkiI>Q|3_9um0Kt>!9mP$6-GA-nQFv{^gYi|8V>P8YMM=K)%QP00000NkvXXu0mjf DYBe(O literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shellder.png b/graphics/object_events/pics/pokemon/followers/shellder.png new file mode 100644 index 0000000000000000000000000000000000000000..53e2f9db5708e8f2d8d26e33fd1d63de789768dc GIT binary patch literal 577 zcmV-H0>1r;P)DKY7p**Q5$0RaKQS+Sv^@kt>;000000000000000LP`1$00009 za7bBm000XU000XU0RWnu7ytkPw@E}nR7i>Kld)>UFc5~b*^sG2plgG`CR35zq*9c$7B)Ip=(7{A%dozH~Tmj-`*|)^ZoL07koVgsPbe z#2e-Lw#26}P<Yw4h8C^1o8$T+%P5)zz$4+0z~b7HF1ss0!&}YRr!j5HmU+N(4`7MLwz8we1s-O zPr^-sWEQ~LT(QYO@8zDZOb6Nk!>fsjz;BL8>KSiP0bcIe^cDe5SB3(CP$2ET|B(VE z>3QV-elie{nkzW#HJh#x;HCol+6&5K&{ya}FN1#F*(6OLBYw<*>Pb30Rho@fdBvihMSP800009 za7bBm000XU000XU0RWnu7ytkQo=HSOR7i>K)jw<7KokJ*BSS%h2a|ZnQiK+_n07fR zF(HC3g)RjTf{uX}6%Y2{p(>ax@lZhsxOVMw1nWb%LtG9Qx@Qm$*mc7hS`~vRzR%D* z>yOX!$r(B}Z}RWNdr!JM-vMwJcX1d0Paw42|5^Y+h_*Q6u4gBGYXRaxsFPIp#^tqY zNwWmVf}}bFUqSc;x+$JQ*b}QI%@g<=i3O5gMvA#~SFE<~TMGc7%sHz~xv$yRIEz)a zqt}dvXuVGc@py2mh>0E4(FkRFxXKM{s?ijXR9Me%97hIW_ z34d(Eu)ls%V-F1DY-Qk#-dz$O0GT_vmkp@XiH7?`W*%s6u&DMbv3*DgzQ4fZzs<0_! z_PsBm7g!sdX*evnX|oNx=A-wc=mX2JXbNU6DG&cJJVBJtv*iGZPLx&wYi!LPM+JWc zei-Fv+t4v5HV$W0*@s0cn5_%_X&Cn@iUvqv5?Rr(jjKT+3Rffg|P2?6U#c8rdsKm z6*n_l8L6i*1BGlJ0Dla<+1f`l`E$}QYT6EkszB?mGDY=qcwTt=uTzQ7cr mZe>fptl+lTykq5KlK2aSx58`yz@R1o0000G`3lvBAN?VJR`0Sz+;+p#cE_`N6RO0000000000lLfbF00009 za7bBm000XU000XU0RWnu7ytkP@JU2LR7i>KlRt~wFc`))+#vAuLOJqhbLi5oSNZ{Z zbs=*hkReN;L!on_qeZzxj+bW39 zGE7#fleuAMGNFKo$-v28B6;s(3hm99EIM8ec{DyY6^eh?W!^>@ruW3ol&?em)tD?4 z;}hc3K6G(s3+Xo5+~F=Hr$aHhGL+H-+Dvl5q!pks6Wv;g4G}uGvI@;*Pm9{{R7Q3x7Os!lQ zeE8`5vv;)tQ#@?~0S3sLQ_dBS)%fSj1IFsvgjTL5eD{5S!ZIfVFv!8moG?rvdBMTS*}-`!Nl5?z00000mIw^W00009 za7bBm000XU000XU0RWnu7ytkQ@<~KNR7i>KmN9GFKorLhEYO?`8A|5Ph0;zL+(vDR z5^uc_jJq_gLpymeNVsHkh)};mMzt2t)mCWM45kp2Az*4Sx$n~VPCDsymXZ?aQu+)w zzk9m>|K8m@VaEQ)KN8*@Y`5`i=l*PkgNmNX%#S>87!U5t_N%exw#qmmbioY<_hm13 z$NG{@W^5E-Xl0q~2Qhw{*bc_=c%l_x@E;i5&OX8fbo(l!C7cAoNjPa{DcHn5Hw?IG zV8#3(;0IA7LyUsZz}5@}0SbGQY3K{*C!9x(45$duz!vA-P|q5Shdx9>j7U|b*vkg& zA;>86IcL|&dd<6_8yL(yNcOhh^TWN)BvbGdgB-9&i7N%me9j;p?DPc*ilV7Z4nnw| z;es!ga4H8%4rss+A(9J*BCl9>>eh#p1eZ$CWcwVqbMq`cdjMH$`x^hiJZ-mw;c9us zc#^Hzeu{dDI#rVy`xGYdb!}~fPVST{LIKGMd>&9wVm=QNwBsf$C?OZY}j(*tLU z6Rc_E<_vSnJ4z3oD37`-hHWXh4DO?7PPtd94{K$L@~b0%Eq()+S?93x SK=^?G0000j5&4Oc>3LZ}K|#qm8M&!(ktq@B>G`2iX@OZGiFrW*0RaF200000TJj+m00009 za7bBm000V|000V|0Vb6__5c6@O-V#SR7i>K(m!j1Ko|yaaq4oz-5P`_g+hW;wuWvc zTSv!kB3b+f4LFo;{UU`7+M$HQk5JIW*w*rXm!5w@&eM}3w9`G??@ph457jgk6%`c~ zm4A$-Pe)tW>bP2)%*j~mbF1AYxLPwY#@0xi7P0v<(e*$WPsorBkXgr=8hn@F=2SM( zbjSdy#O0%(LHkwSRZuyxA-9fMA?Y_OjA4ELvZCw4T^R0Sxpe~oNU!xJrW7DCn@=LT z&QtomO!GkM%sx7Bne_Sa@Jnj{8OLkIv4)tX0w(Xd1;vY5?fK^d0e09D$iFRb}-<4ALWV6 z@bC_NndmYF`zv@OfPybX+s^*>j9GhL1T*mh8tSZQ@caGFyq$$V%nz(7y(a4dIJy7; N002ovPDHLkV1gwb)Q|uG literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/squirtle.png b/graphics/object_events/pics/pokemon/followers/squirtle.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf56fd5af8857eeb2176d5e2dab98f8933c67b3 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m$y1(z0{s&6S2P zU;b3|Ox(G1CnF={LQdw$ogY75ECeb<232-toIpNjfk$L90|VDw5N1@HYWt0Wfl=4f z#WBRA^X=u0euoVN*dFMGrL}e44V6mGRgqip>QI{G%oE9731)65tfjMCRP)jvYZ~s@ z^3C*{z`=))`eDTM# z&gL(^e)VU?z1Zn(M{n#~_;T^gW!HU=U93DLEi5Ly>dejmBK9KJouA6gb$`3+bK3uz Y`m1f0pPlNM@&gpQp00i_>zopr0C*|B!~g&Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/starmie.png b/graphics/object_events/pics/pokemon/followers/starmie.png new file mode 100644 index 0000000000000000000000000000000000000000..55b68853e3abf864a54a0cf0fa66a5b925394c63 GIT binary patch literal 703 zcmV;w0zmzVP)9Ha4SxH%0!MQ0Z000000000000000fsp?z00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K)G=!tF%$=I(T39;3?*YxsZ?%DOd)tH zWJu{))PtK;LFD4;5L^nkg@ob{&?R(}aSq;A=;klir#kLQitLoqZhnjTNxt`gr#p_2 zeeG*s|DtHK+kf<@U8YsMoBCI^)!)1AZPYOJ{o*6u8NiZ&*#36u(lx(tJGEc(4lfD) zXh2srR6;{HQ>XTU=xBhzw08P33{Q*=msKZ0v~|D5RpU)J$C8-VFqJ9{h>a^CTM4}% zDr*e%4hIO04KM0AATl9O%6=)qb?$lI7+AG^8x9cqRS6dm9C~U(jj>V!2xC;vh3S^q zQPzFdPv@oUf_E-8Atk`#<#_BS050biW*}>fyn`y^gYRPzHcU;3m9V%z9-U4=ioEY& zS<4z`S-)M)Cpj*#%?NVbI_WtO0b@iH= zysdV4Y_8-YXKaXJQ9xurl6i4+yE;EHP2Pp?=6kA~4}Q!~WboFc#_GhUo7K1TFSgGc z4}@XCX0F6LqAnI84nJ8>1QH_>=d{iRhuG_A_zDbg8zPuH9_$jAsYzh_c7itK^`9DYfG>=Wf lYqN{H_Y0NmJXrXj^%HrtW7}`jv{e8A002ovPDHLkV1i6rKOz7C literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/staryu.png b/graphics/object_events/pics/pokemon/followers/staryu.png new file mode 100644 index 0000000000000000000000000000000000000000..e29b0d9fea097c589d2ce9eaeea2f0db3a0749a6 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toJ%(b7=F^J<(N z^V^Z#(C<^8zxTfFA~yLaC#ib>3*?ypUf}GZcb_MmHA~&Owe|1sCI(T3`t7$?+kbRU zn4bJyQRhLiZqu1vrEmWIoYDBmSeHSRL2toQ2DS&&cb+axH_iRT6fmRR^_`X^w~EKH zn&pm67Cu@HcXS-`KC9F&Op51`Pk*wo;L_{l6KB?U-Q8=nLdz@cV}OlW@}{}wZ)evY zJ!3Dw+kTQ)|8bLZbJ!%eOt*XcHO`|fbr0jGpB}5P_rEGCPCjhgaQOAyjCzj63_H13 zZht@jy!5**U0*p9ZkhPLdiZ}<(R_ow)wjd)+)uhS7yT$)yfd9;_vysa-K*E#)m!8; z->BU=_V#kuckI^!i!yl3-%9#kPfdJ3y;aWVqQfF-{^u72{62SQ`t7jY5N-VZe73W# q)(Kk~t2im%lJ}4A7XA4k|BSnH@~000000000000000E98P!00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>K)G@D{Fc1J>Pk6Q}`6A}(?NzJ(fL3~H ze*l@|q&W~1UVO;gQzf8#)t#lT_?5-civfouQ>6~MDWA_i@No)bk9fo*9`XMK-SPbm zw}ZReX3SQ%eeVI9sJdYySQK2CIPt~i$bLyXJHWKMG_NRi7D7`Z^OOcXD;V1^2~#?> z;ntD48(~0%^wJ6k>Sq^8 zwRY#XS~}?oY@dgMv37ALyv3RF~BiE6_Tn6xo^+ zhhS0{Mj-a7Yk5k7C_FVXcc~k{n>pWlX{!bWxehIf?GOCXMi_zTvAFQ~lLXe~s+Gw> zOMq~_$o_y7IEKitn3>J^xLSmkEu2VHc`0|HMUj2MH~8uK+uOr=?k)_nL($;Ny7$jY zIUOeA!sCJO`1G{j@0pFjL8;F{~Y5k*r}tL8tx z6x7z!m_|OWZQhSPFGAb6JRlx6Q(M~(+kE=>OIpIVZeLwv+ZD}JEw*1G^CGitC|Dme zHTF1|Vcs>_whcaJMVHsFre@4edl_|2KKB^rnBi_#&mbn4ZKn;VJcg-a$tj=Dvh#9y q%$D{20d^7dL$~u6*|qKeEdBzbdlzpMd1hV!0000}9Spfk7DIpP&k&)@?`B716;i*Xg0000000000J1@_~00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMVCKorMs<5r|dFk6xQ2Uv=`y1Iyq z;<1$#wOcD-=l~e=h@1hEt9@0nRvEHZ>e3;Lp+LB_O}#z{!5~H3Hqn0Hd0>PlJ%ZY#3n5F86DYKrHKXs&)2iz)eh&8W}Z} zn*3dOn4}D7#d(5KP7*C?f8~!t>oOQHFDUi!rH2P8r*#!p1(#Q(^6v~f76L#)w_*=* zj#yoV$vsaNQcYA|PfK-_2EgNlCR$ZyKr5~v(9XDSej1@R-V8o^?E{!VNTquUYq!1; zo3|3{kV?FXYfsra*EObKJAQ&%8M>jxB@TeZGH-0H>9R4vydnpH4V%v#vz&m+NOL-r zMZA^@4!LF5oacCLz?U*(t4z`)j`#_k#gjr%Wfa*EvB<8b968`xyk_mQm#+s~*iyJi z()kEPCZ6D|5L6k>7MP;BccCCLM!a9}Loz=({--Vse`c zl58HHE*nhBzKxubcp6DvqOh+Yg^4+?`VUe{^dx1C^aH jSbZLL2<-E(>G?r1DbcB60RaKg(b3^CVL3@*p2BK)00009 za7bBm000XU000XU0RWnu7ytkP@<~KNR7i>Klrd}DKorNNRT!=*HrZPGdP4_+mwtg9 zZ#*a-LYK@LvX?BSpP&$EDOo&t@*ro<;4a}fLjzZP=qJeF&4^$$8eA!E{O(>WVG5n< zHwd17r~mIgBosya+Sk7J^&i!GegF6T;7QoW2frVY_#!yP0vq|-t%ESJn(=Ak<2H7B z^?{9Cq?g}!o;DJs2S$jJ7 z1@WEEkGY_e+wxd_U?(@Kj(6JA`~+@D(9`+cq@iH4IJ(nwI>d#Og;F6WVJvlSJVEpn zrwd?$l|AaAqqVqjWhKghlTaW!kZ1w@s0Jx;pti@VGFeZhs1rMP`A!WO=(5icV;`xrkqs<-S!?AmRviZ`@+@?Kx!|~ zEdkI)VYO^FN1-!SSi7sgW63nR!_$X?eM!c~P0E;W1(Pp`kfRVE_OCzgE$N00009 za7bBm000XU000XU0RWnu7ytkQV@X6oR7i>K)iG<^Koke?%V{rh77b3}I7NvfQ4ms7 zg!%zGb+F-4j3D2^A;pxM4$@+}wU8lXQbfMLIyT7TQSRS00d3B=~kF25pi)`qt1V&h%@HZMCh|SLYP-s~lT|P9Ed7!L*zkK*u8a;jKHs5)T?oBFm0^UeuOhNwn zc#%ZK{F>1-=v?3TKipsEzsoYm074sAAWtS2Ns=E~-3S9D$%&D~&=wm!kuh}QEO1_~ znk~vYBK~u z$P&F`lUTn2RqAJwM8*C@=xr2di zu2IL{opMAewUYctt~qN6{5T4VK>gNHxHWr7)~I8TV3wzuMlqo3tU%Qx_ls(Oi@Hgc)2+7QOgHZ+| ze!-bhe$iLdCFF*>uIYq5&CE8WTTM5m;uh5cvt=wiuc~9>gc=POH;`W0;Cl#dVN5Zp f{>}fh@!!^85p96jPk|7>00000NkvXXu0mjfz`t8B literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/vaporeon.png b/graphics/object_events/pics/pokemon/followers/vaporeon.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b769f26224c1e465da3c45fb5f794a7dd382bf GIT binary patch literal 888 zcmV-;1Bd*HP)FN1NiLs%fp)qNRfmsY$00009 za7bBm000XU000XU0RWnu7ytkQ?ny*JR7i>KmN97CKo~~P5CpeH-qN99ZC1C46bdb5 z2sEY8p{WcC2pfl(bZ`PC5JIOc#a@KsaKUFdo2Z45WDNw`xkKmH1{H+YWGRJ`LI&fW z5}oc&jvPt|bm%`AKl${%^PTQa0Q|3iqZAC_?wtx|e*P-lr4X7$(;6eZeJ$IjJ4Sf> zQoi@b2?59?ZboZOpHiEczeN1S&$TF_V>oJn(!rgBv2C4)~XtQ zOkU6QiY5m}4EZpif;_1bmvh(*x|XVy7*B<~&6wupfEdVlhiBmOYe^vS#2XX@LASA< z!h4#26&+VoWcMO`=ryq0Gz3iF*J;6{nI>V zft(xhT6%tH>G{Q@*))d3bApDV01?!Q7#U>x!TKrPTdo2bw_18EczW=)wd3#4rZK=) z;9J5|hHXL^FFnS_#;_JYTDG{^v(CU%t(zG3XS7eo+u~sE{#wxMaMVt9Pv^ zkg;uYL36okJXu~zWpKH21p%T$b~{9-)jqA8W)#TTkK4E3Ef_|DudF1G3PgsuUHd^( zSzyFS*v+6*u?ws9R0f0w_QfFzw+h}Lr*=k{V!YBrMkW#Wo~Bb-t-0yk=?8uBh*KzY zA#9&v+zm+27KAe``FN1NL0JI-0l~q+p=t4PadGLn`PsRF000000000000000_>5MQ00009 za7bBm000XU000XU0RWnu7ytkRwMj%lR7i>Kma&f8I1q-_khs=Gwn;Zw353csb~g`@ z;!2+Y8$v2CH&O_v4A!}N0uhAjLmoiD8V0)*SMAH)kRmC`mu!*ha5ycn_Ha1!e>0>> zW!eAFfArbB;NwmD%G#gI&$^`<^tS%LH13nT@f!Ev0r1nf58O?|+d1@wK%I}H!p-5< zB7I6qUG?@f2}ckqobCLqh6KROl(Wt1Zq^4%M45@G1}^|0a-V<+fWpN(K}TG5-v{uJ zT^sw!3s!d$XB8cWjSHyk-X|Dr*OJYfe((txbfX~V5nxL;+Xet4rUEJx%i%@cYGY>t zk}^;Ljx!FWMY*pwQuekSB|}B!DFC3{RGUf$03zP7PS~Lc>2h7{&@L+Q#L`!gNo&ti zqef-z-~~W<;(Fxu0NQ9w07P6@2(e!>mqiUQ7brdP!B2NhKC2u%K?0|7Kva&n_7!-5 zA~#(j0)QhX0Si%}KwVF(;}*zz;=|dCawx49Xo}vB$b1+y5o;Vy5ugxXj1xFT;!c#- zjxFL)Lt_>Ktn|c(Ja(+qh^TuQdzQVk+7b6-TN#vRlWfij)Ei1v>o<}BHi1~tj-3QRG(F4(xGfxUd5We!{t4G# zk9}-vc_w0IAr>^4Vtp&n1_5*eP!6MjgttcFqJpd%iNm_Hb8&nR*X>a}#R|_vtcGY> z90mHPMC{apTV8*Cq-qz(-EJg~V-su_Nz!?PD21Wo!+_*JP0_~%M z=@1zOJaH6YP$&>B*b*Awb0S)DgYEfBv>_XBi!F@>f{={`_qR@lN4)_chK>PySr#r2rD~bO-T$##dMV zB8dWycn-i;ud)fCUHv5%8~^^QUMvFBMBL7c%-Z?<3dz3!@OOLy;LbY_;CntdolV3) zen(-NhVp6P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/venonat.png b/graphics/object_events/pics/pokemon/followers/venonat.png new file mode 100644 index 0000000000000000000000000000000000000000..ce572706871a2d8b6c93025d4d2c260485c3c1b5 GIT binary patch literal 589 zcmV-T0K)GzTW-nL!4F`dSPmzlgR9W} ztQ^+bPa(KD6)f?HlTdIA2ikg`ql<0@A(SU>Vuud(L%0bhm8MPZUg_dw|JyGwc}cFJ zp100A>#XyCl6oEyOWafraT8(9&N&sC@G_AK)Gg((*t%6iWM(_pI`@y+kigBe!2HyT z32zp=cN%()8)+K4*6|M-11b+9%%qnL=%AMtnjAlpc57%piR<5vRmonexJke&ae!DI z=Ny7~@wk?C`n_$~>I>8vQ{kBXDnKUZRoCi3ynO~IJjN|mL%`fW;|?0 zBm)>C&e~u#bgj0OdPJIAIV zIWD$;rOv{bneAE+ZGHwRos>~m^t)$>Nt30lLQU1RPCcQNCgBpRE2B>0NwPTGwLVgf z*2}eJt~79~FSG^3PDPgG*p`oDx0Rcf_G5O&M^??(900009 za7bBm000V|000V|0Vb6__5c6^_(?=TR7i>K)G=t=KokH_%?23^oomoyk)=aMlR%+s z#?xeLiVs?F1~2if#fQLTYKBfBlPhRDc>GvfI|f1RU}~R83HBl+NT<@Nr#qdj$me<} z9SS)-_!xsKcU1jowAA?il8k+M4!lWSFF3dV$*eI-C>l`r(H+B7xd0 z!tR)#8+oAQitNZ$TlXA;I6e1+rnZ*M`;Fm=WA?*4rFGd6)zl`9-f++}hnm_|m=H33 zHYY>yl}=?XnO|Fb!3{Z%$&~Q4EK7TdrE&ag#QE7)MchWM!wJn`yTRJ{+CSY;GhS z-iSk;MQK4;$wMx>iZP{l;R7syH(WA*EvGna!tt$4c#}JOO|5%AvbC*kdyUz8wSZ_W zCR#SX0a<5>pJ3D$3FF+^b)1c?tMD3kFh0G9alE2|!lD4iX9>ogw%Ri+Mph^w+zEKX z*BIMTvPS&zHtu9+oSw_2#rm=?ZBa7JEenW|@q}fwnZIY7lXZ4=W1N4A!r8lYaBtqu zvINp$W~*bfky(WTsS!p&dLTGk;_Akm0<#$L4eeE+HbTfwkVq&BawBfqvaq!&urY4u z1=>ri)4{D}OKe%TglU#gN9`5M79&|eT4bO!S>dxa&IX#=!uBdZ!ZabJ2(>AdUq>n| z3u-h>L)HAPLN<5)mT3By&&!r9z!~U;fKJo0`R?p70v>-93(9{A+x22FeN=sW*FRam Y0jaAA*XSELIRF3v07*qoM6N<$f~)bV0ssI2 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/victreebel.png b/graphics/object_events/pics/pokemon/followers/victreebel.png new file mode 100644 index 0000000000000000000000000000000000000000..dcec3333bcb8d9351274d70ab2b8e3bc1f4a46af GIT binary patch literal 967 zcmV;&133JNP)KlreAGKp2KkvQAl8PBI(GfW*=+Rtc$F z6(Xz0Mk*70fvABCz#}*hY;PBf(~MAzi8-3t@?hm#9+5o{jB0 zJBAKbruG)}obP*|`)uw2_&@%cA>DJnz5UEuxd7^amya6NOvDiH$cPD63T-Pkk-|7F z))B@&i;IAMMx~0fE z>;qwJ^^E#4SH?R61UHN_e}fUB7pPecg+H`0&OlKhbxqT}cqIsra9I$pb%|Q2cR72) zdKg$4VnIMikA3E-;EnmwG`WBYjhBLOt@$oi30fW z)HF|XONC&sqi%KdWPZfD|C9q^p!ASUv~{2gUm3Q~O!NKgr9x0(J0?mp?|wGTw>2(s zi!X8t7uYuYh}mp5r?VqsB?>{wQA>`J%zF=d?c7ulv_BkYTY_MSZSaH;vahfcW8D?H z><1DzZST47E%GgW}maohZ_6AaGd}Kz3@Ilnq1k&dwbn8a$u7 zfm3aeNnlX?#)?IO$AC`^v21t(+3Pqigea4~b^~V_lulqUr<62>9s3MJK^1GRV2Azc z2|_SHqiZ_u)7b!tyyLUP@^D!JhrS?Scq`=>Q*eNqo&b#!g=~KA2L|jge&Mr3zak`C zOpwn5fx%&u`c6pZ^or7%f4h0YD=vhC^deB;^>N?vd6QOUtW^N~$^J_M14w7VOM=c0 zr4x>1!NGM3N6tD`^FKxb+s=j)G7DtaDGO{)^aukIUM>;~pw1L5W5@!xsc;vy9L~k7 z?>J2k+fkE6v60k&u94lTN1M+8Bog pf8bi77A*;xJyT+9;|<*B_zl?3>6fzxXodg)002ovPDHLkV1i_Vtr7qL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/vileplume.png b/graphics/object_events/pics/pokemon/followers/vileplume.png new file mode 100644 index 0000000000000000000000000000000000000000..a47decc2d579e13dbfbce44728cf9835c4b321e5 GIT binary patch literal 665 zcmV;K0%rY*P)Kld*2wKn#WtI02py77)OrIuzOD&`}Cc zHIyl9KuNnGx!r;W@*xi()U$!M&}i6Gp0YeiKAlcdwoWw%!ykG4c_dGaUF~XDyW0O_ zQqJVd2RxHfvMHvcy{OGf53#_XFO$p)OiHt$$+H5tSz^?)Sh+GR3&iadgTw?ee)UIr zhe?bW>H0RSgopflm2bfxXPzLn6c_kB#vBT)e&H*$$u=w39_7LN(+OC7PxpPRXe#KB z@Ru@v^KPkPdmWqWfnt1Heb!^OIiQ9Q-f#N#hde{XAJw72ecX)K;wB-9?!2Jv1p3T# zDXE~`rEJKY_LX{{z9BYIn`^-g(-hJSbAOcC1LB=`kMX5xlX;HO4uTykI^r)_zgo5g1|@DwJPXQlcsN=!!?0{R>2CpchbVMgyd{W`@| zFIRK($N7|*10OPD&PI)7*%fH`Q6m7H09N{Z!)=1IAY6CJHY?`8H953W zFqnnJdS%QW$k4$Y+d+fw!AQJwaj;?o$3L{c6&ChKwBeh=00000NkvXXu0mjf;BzD* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/voltorb.png b/graphics/object_events/pics/pokemon/followers/voltorb.png new file mode 100644 index 0000000000000000000000000000000000000000..79d9ff5537f2ae2d3021fc9c8bf13e37e8ed2875 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp_%blCP*CvX z$%}@Dh6@)i{8(6cQc>~c%b!41XyEOa2k(GFoCO|{#S9GG!XV7ZFl&wkQ1G&+i(`mK z=i7cmz9t6&*Nq$6j|k*sK4B2s5)~;VEELV%X?pfsQ`(-!}56I{A%p6!Rbi?{vP z?p(29j^xhb{#!5EJ56U>X1oow{;MGP`ix_Cf0SaT=J{x@x%cdos@p3rU1)q0>s-BC z^wD#z`|IQvUVgeavw!y8>@B|w6D!}^?N}kR_0Xb6nWbTtS?&K<%?NnD;_dlQCP7wN h?U^DgWw+KpFN1-NjX_LF#!Pqxmh{!$(dO}Nr^c*000000000000000()cP=00009 za7bBm000XU000XU0RWnu7ytkP=}AOER7i>K)iICSFcb%HPxkEUgpt@B$=)3)`6ykJ zASE4*5q_yUWjS)=Z7?ErsJeAxxGz_em^yYsh4Ai3r6O&lDudXwj+d&w2WMf6Z?wPpclNpU&DYtQ*R3W>TDKkm|O9Mtk z#%Y|6W;8Zdr39>sIN)yopOTCGECWU+jb)T7?X`(S&amK-%DnCl^|nxAb5MX#1r1UNA+PW0*f~2< zR+hp|z4E!ww+*Fr7BsO?R2IC(Ii(F{Me#m^nTLY=1#7dg>lW%(`;CFR*n$rQ=k6cr z1-|c5*tl)m=a6wjmsFGT{ig*t%Za;!?ePGk0;E13rVWmV@gD$o>(>Ua&x>Y{K4#ik zqw$Op+QGQK>i|3b&+9u|!dFD})sBIm N002ovPDHLkV1gUt8h`)* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wartortle.png b/graphics/object_events/pics/pokemon/followers/wartortle.png new file mode 100644 index 0000000000000000000000000000000000000000..2d23e30b207e73824f7147afe3781f608a5200ef GIT binary patch literal 698 zcmV;r0!96aP)G=Tx0YQ1$p;;NB2?O!badDa9K|w(P0000000000urggf00009 za7bBm000V|000V|0Vb6__5c6^FiAu~R7i>Kl|OIVKp2NDfjqHTQThSgTo~#hjZqh8 zNZlij#Ab075)24}J$NeN&)_cIn7ek(loeX5dNWv&n8JtZ*%;sJtD!^HrQ$ar9^ZSv z2iqs1D90Rg%rXB*Hhdt`XM)xMW5dSK!IjQK8IPApm^G z0*Q4l9G7zimM(ti85d7dt2 z_y+KGBm^lB1lxqPv%=J;ySYH+@7wG>=Y?C=#ojbGVHnPIAw5sHiSCH#&g?=6T=%U0 zF1sUjXii_D!jz>OsKRi5@6+@Ag2OpjiJ>NIpIR$1&)ECZFcVa)sH2Tgp($~)p*#2d zaFsuUDkR(%LN3s{MM2JL_jBh9E({{heWeiEczg&yBH`rmp<#<5ld;>gYq8FSi`P4$ z=XVwZR5+RyIZ5l2rZq%?Lf>jycq7;uvD-RY|3HvXh3UdWWol65RIt=e&?!;;d+h{J zp+6%wKBkVxc{i`ZxX_nyED8JxrG+1HM=2JncV2=0iHGKgc!|IDx%b;&j@p;6@JD-q grFm&o-uZ9y3lseRDgaK+I{*Lx07*qoM6N<$g4ne=UxnW5u`O!gvfr0sPiNPsB!I?qn>G=Tx0YO1Q000000000000000b>sMA00009 za7bBm000V|000V|0Vb6__5c6@nMp)JR7i>Klrc-gKorLhG6;85DSm;1Q^L|0%z`@P043yD(O!Oqnue zvb_9p0}=mHcoa7Z8@xsM#*XlZSPyYnB(#>b*BqfBqfj<+mbDe^NQJJHEmY5hBDT>i zl+E))Er1=V(2-I?20}4e9U}o@BaofC1h=Ws8fpO=AQOt3gWQzA!u9h=up`6*$nHCK zQ#OLOlV4RLI0uV3?jGFYs^R$`B#*T;-wqR>=LnQVsU8X_zuSi0*w)!3I=#SUIaePTX@Z z9U#%~60+rXV#A`21x=;y&^{-^*(e&oH=6B7l?^A!0tyUMfrU1W7D{;n1$-32CBZyb zuH6B}H9KSttg2ltVtzXr=Q6jI1NV*Qutmq-Cs literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/weepinbell.png b/graphics/object_events/pics/pokemon/followers/weepinbell.png new file mode 100644 index 0000000000000000000000000000000000000000..f21e1a243fff5cc84eff2322cfd7175593e1492a GIT binary patch literal 698 zcmV;r0!96aP)G^pH1*t)CL0KvB;YqonF@a$zZ}b9F00009 za7bBm000XU000XU0RWnu7ytkQFiAu~R7i>KlCf*sKoo}$4m6l9Ub1!ZkfB}z0d-2C zAT(tzbW@#hjWL$DdhAdzftG9;Iv9!v4f20bVQ8UaJBWh8!wHH(xNUr6*Y@u0yL)$5 zGz7BwZJ(a*dq2GsLi^g+zV>zR!bcA*eEPcn{o@*{EJx_QiE3Z>hA8Sl=+$4RySrdlh{@9K5A7p(0G$JO!0v)wp}(Hn#({mrFV8{WkL`FB3wDHfP5RbE zJ2Ao~EkQq~&H!g0B-#i`r1+HPv^XN>H9IlFl=Odqal~05DXn?U11a>I2Zm{`c_*<5 zKurMrlQMe%SYPFt#-v$U}pHY3WNqclz270y}Xtt>i z{NchjxR}WyA+3)ZJt-^!Gg`0>r=8XHZPRQd?Tjv&-sT-bG)dER0yq}J2r{n?Pdkh) z%^h=IT{E-IZS}Zt3Ix4RX_{3FU2aSn1AfWOcRm1ly(}Yj9NQMaUS@R!FRcgL$AsLM g6GxXgzvx5PeIVm}zp@He?`GHAM0RaJdX~C(f(P=qB$+>v|0000000000b0KhM00009 za7bBm000XU000XU0RWnu7ytkR{7FPXR9J=Wm%nf0HWbGxK!b)1)~-p;a9U0EU}h2` z4KZ%+&^gQH`UiCAV${Y#!fm22(7PK86v$;Q+9qD&U4K*`#UBzWCU?UP9m)W)Kh)!U zU%p41&xHIx{+lC?Uw$6Mi|-xL_TQgg4iNXJ?-x5*h=@DUPYC+*tHbF9BqN)UkdEUeano9|N6Mh+|F|(=i*U( ztOQum0^j)?CWGE_n&3)ZEjNcwQHL?)4HrC3c@z*<#_N=ERE6@X1SlR%W>`2d`gOor0s}j5QvvaGMZ*~gzsbpF5&~!4#QDg= z!K{L_;~9AJHs!%*Rg+zs!a;eRGTF2#tVwO`Z64fT)uvp7fC;Oas@}J`S|Q?3Sj67| zR4irC`M62bj8^~$<642JOkMJ83Qs9q9FHj$bfUe&lb?Fk0TB|hs!ntc|>Lms}y$p4wOHa#f~nq=1cfc zcsXK+lII&JY3*fF(>&kgcy9RC$5EDFW(~YI0vyJgK+f9pveg0{j_B*(;o_RDRXmq5 z;;uZ$ymKYM;U;~3lXVY9pUW7Kan{~mr=6dhi?=s$`~Hq@{VXJH4jAxUe<9lZq3!+v ze!SBGUB;SWw%}cp{p07~1ft&6*3UyyOPna#D<4M>@CEQw$Jgqq!z5ZV3OM(9`wY|L z7yKLT9TqvGqT*EM1iwlxjvnvC=Yp=aKZnI~Jaq8se)|l+`T6f(e*NpAAkT2T2)W1! zm4^y%D~rjS;|)+=n|LmhkZw5K9{+rfclQtQ`Eks+X4MwqbrUV~j8Q6&0A7C(7K>5X+S!+^FQU zlN5+KscX|X2(JT=y^eUPv8K{Oww96?a!##ZXt~z<;Z>L`0fU`n)f1}31WtG9_BuwQ z)#Hr~mvUs9T1$Yc&cq9u3DAy52eZc7_rt=>C5~Rb-u;ymI6a}a4S(^$H`*I^A6VP? Y7fa)G_Baj;fdBvi07*qoM6N<$g7N|;>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wigglytuff.png b/graphics/object_events/pics/pokemon/followers/wigglytuff.png new file mode 100644 index 0000000000000000000000000000000000000000..d4200e0d237312283004374f0e3aac74433d5351 GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpxHGfy<;$N3 z4<78a4E#8ArDfvD!ks?@0|SAo&_H+QiA_Ku&H|6fVg?3oVGw3ym^DX&fr0UYr;B5V zN9Wrq8~qL&2((Q;=)8TGgUYceUwMYh8=M`IwArft7tJ|x<^Z#SfwDl*{b`$nUv)ob zVA}Zg{e+r*um8u(XnStD9#{SLtMW$sxcyh({>l%Z@@>1IUBpgNwdMPh_FPqcKl8hV zXW#l|JhxPK&pT#$`%~zY;Eb6M=09}a=KX$Z-b1#yV-i}-Cqk!e4E>n4)tKkzzeHxY z#+~(&$qkZMBsmw%(L8hOE8oqxC$0Tb%q|WObcks=P&t`el(@9ufT?!x?#0ba{6e+f+9_+ZoYcwEcOY z*$oa;*=^^e53^^;Wjgc+cd+lU4Y}dr#r%$E)}tja@+YR&>-3s`X*~8(*G#WdvB;Ju z!Yt?;kB)wM{!IP73;E~lHvgHmeU3zwnWMuY@t{+|Nd@VZ`>eTq7R0}uX?<>cTWe-^ z{tvbAgjWg;y1&|D6W+aca?pKbvva~)p??ud*@{icr^J@p=zb3LYrSf7Dl?KROQJ|U zcG^?bNSjSQa>D6CmTRN$UE|-Xbo0dXsKByWPopmDS5z%Ao%?9@FPEot_-r0(@yjcC mvTOfPs*8GVv!;dn|0@0%xvOWV&D8P(r2$V@KbLh*2~7a1qW?eu literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/zapdos.png b/graphics/object_events/pics/pokemon/followers/zapdos.png new file mode 100644 index 0000000000000000000000000000000000000000..281e5f3d6c7eba0fb8df00f509ba85e215fd090f GIT binary patch literal 1073 zcmV-11kU@3P)w_d0YO1Q`OyL4sTr}c(V=lkIVlG|Q2N%`49Sy4d%0000000000T(64>00009 za7bBm000XU000XU0RWnu7ytkRr%6OXR7i>Kl|PT$HWt< zF2u`!&+mCi%LsjG|E-M>4*tjE#L38Ie)pun=K_tp|4>|22uT%?3~ z2Jy0fw|fQk_EoyC>p%)_Y-HzmTCm~-ZU$UCEbI5Jqlay7iBZwF2~7cp{Up)?XUVjN z&5w2cQ#q|urUdsUvdx1O#I?xf2>^o(2}$fRc!#y4^X+Y7iE)dJMN|W%{Rqr0FbXOE z?XT_c8KmJ=BWNPKYy``CB8oY{Oo*u>4%sx;jxKLm&=Lm)Gsx>dfBEhM0EPBxoh1>_ z^q*ZSJ9RNEf>cKaAO$_fz5yWx79}tyiRD159o?$Z5+??k($`;qn9vATS4N(-I7)&8F<4~eWlJh+qd+OU_W84TL0CfN1{!m&Bja4vF_)PPVBBXc=ITHiwvK4v z5L;xmWH6Jv7ws)GvZ7fQ7JZG7#BF3$dG^AD^@{my*-seN+e7W3J-;F52W07*&-g;L zKW&!y-adY@!##G@=&@lF8Ih!#;F=Bxgbqyv-XXGMVvCH>h7Y*C5;V-u@8i*HR2U*k zbYwkKhdpmM=8OxhYe5k^$Ov!#_W8oz2}RG>V!aN`$HOB&Q<1$SJp&Nn zKZfDG?3;2V#6~)LA%tiJB(cvOWbb}Q1V7vfqJsEKizB}cDl*g(QMCS<^nT4fyQ6V* z*sh4>fd^#o*+?v$OP625Lio-G9oeCYxT@U$1MTS06mjk%Q&h~{1M#X@xqo{)GUtHr zt5xRAYe&w!B1SGUDyqsY&+wU39Y@vxR7U_^M<>Jx$sIX*v~?rv0(2dn5_flW1v-(P r&R5;}r-@J6)A}Eq|J05z?a}rx=?!BBcf(b500000NkvXXu0mjff0XRp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/zubat.png b/graphics/object_events/pics/pokemon/followers/zubat.png new file mode 100644 index 0000000000000000000000000000000000000000..b744d060ef9e3fcb520e7a2348b1254b876680bd GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*yvbT$;il<=-Akq zxHE9)MnOx*g^e3`?mP%of(bl|loElWoCO|{#S9GG!XV7ZFl&wk0|Vm^PZ!4!kIuJK zeESv~2(;?zXT|rOu#&hqD|f>s_8Ie;Rc0pTsvo+u*x$~~zKk(5)$P?)4bjdM3H!ds zB}R9I?|l`zzAED0zsKAUo}Z3?XuFPe9-~TR{_fMyJ@{C%%$d$JOuF^q^!e#+i;_>A zn3b`g@efbK{rmQeEzey=0{VG*`(o4B8cP`z>*sX%2sPa1IKh?b*wTKylkK?A1L=#~ z#6v|q8vJ@YyPmkPb)CDMpR6=nrdjK9jPLdMo2PjK}^^^Z6g43lmo4 zO->Gv-^8%$GBe}a$qt!kCaf?zZt}5BOVGuA`izWMr6p_1XKKp6>TM|ARbuQIzO1ve z$5VLW0i{yO6$>V;Shi@cjJ)?@pWi~)Pjjr}`*=@{KU7$F=AEzWj@Cv=KZq@Kbbayn z%?=~At-`ZDyDg|@zjIjA)G~GDt=9$*;arQ>x;@CTdwKq6w91R~Re0X}4follower.objId]; + bool8 followerPlaced = FALSE; gUnusedBikeCameraAheadPanback = FALSE; if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { + if (gSaveBlock2Ptr->follower.inProgress) + { + if (!(player->currentCoords.x == follower->currentCoords.x && player->currentCoords.y == follower->currentCoords.y)) + { + follower->currentCoords = player->currentCoords; + gSprites[follower->spriteId].x = gSprites[gPlayerAvatar.spriteId].x; + gSprites[follower->spriteId].y = gSprites[gPlayerAvatar.spriteId].y; + } + ObjectEventClearHeldMovement(follower); + + // First, check to see if the follower can appear behind the player + if (player->facingDirection == DIR_NORTH) + { + if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) + { + ObjectEventSetHeldMovement(follower, 8); + followerPlaced = TRUE; + } + } + else if (player->facingDirection == DIR_SOUTH) + { + if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) + { + ObjectEventSetHeldMovement(follower, 9); + followerPlaced = TRUE; + } + } + else if (player->facingDirection == DIR_EAST) + { + if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) + { + ObjectEventSetHeldMovement(follower, 10); + followerPlaced = TRUE; + } + } + // Don't need to check playerDirection due to else-if chain + else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) + { + ObjectEventSetHeldMovement(follower, 11); + followerPlaced = TRUE; + } + + // If follower can't appear behind player, then check if they can appear south, north, west, or east of player. + if (!followerPlaced) + { + if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) + ObjectEventSetHeldMovement(follower, 8); + else if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) + ObjectEventSetHeldMovement(follower, 9); + else if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) + ObjectEventSetHeldMovement(follower, 10); + else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) + ObjectEventSetHeldMovement(follower, 11); + } + follower->invisible = FALSE; + } + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); Overworld_ClearSavedMusic(); Overworld_PlaySpecialMapMusic(); } else { + if (gSaveBlock2Ptr->follower.inProgress) + { + follower->invisible = TRUE; + } + SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); Overworld_ChangeMusicTo(MUS_CYCLING); diff --git a/src/cable_car.c b/src/cable_car.c index c81764728..00f62d08f 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -800,12 +800,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, diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 8070e9877..6f06d86bc 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -261,6 +261,11 @@ u8 MovementAction_FlyUp_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementAction_Fly_Finish(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FlyDown_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FlyDown_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceUp[])(struct ObjectEvent *, struct Sprite *); @@ -420,6 +425,12 @@ u8 (*const gMovementActionFuncs_StopLevitateAtTop[])(struct ObjectEvent *, struc u8 (*const gMovementActionFuncs_Figure8[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FlyUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceSouth[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceNorth[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceWest[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent *, struct Sprite *); u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { [MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown, @@ -580,6 +591,11 @@ 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_FOLLOWING_POKEMON] = gMovementActionFuncs_FollowingPokemon, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACESOUTH] = gMovementActionFuncs_FollowingPokemon_FaceSouth, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACENORTH] = gMovementActionFuncs_FollowingPokemon_FaceNorth, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST] = gMovementActionFuncs_FollowingPokemon_FaceWest, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST] = gMovementActionFuncs_FollowingPokemon_FaceEast, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f5189d838..8d0956f48 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -24,6 +24,13 @@ u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = { GetLimitedVectorDirection_SouthWestEast, }; +u8 (*const gMovementTypeFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowingPokemon_Step0, + MovementType_FollowingPokemon_Step1, + MovementType_FollowingPokemon_Step2, + MovementType_FollowingPokemon_Step3, +}; + u8 (*const gMovementTypeFuncs_LookAround[])(struct ObjectEvent *, struct Sprite *) = { MovementType_LookAround_Step0, MovementType_LookAround_Step1, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index a5fb41462..de974df3b 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -1143,6 +1143,324 @@ static const union AffineAnimCmd *const sAffineAnimTable_KyogreGroudon[] = { sAffineAnim_KyogreGroudon_DipEast, // Unused }; +const union AnimCmd gObjectEventImageAnim_FaceSouth_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceNorth_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 14), + ANIMCMD_FRAME(2, 14), + ANIMCMD_FRAME(3, 14), + ANIMCMD_FRAME(3, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceNorth_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 14, .hFlip = TRUE), + ANIMCMD_FRAME(0, 14, .hFlip = TRUE), + ANIMCMD_FRAME(1, 14, .hFlip = TRUE), + ANIMCMD_FRAME(1, 14, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceWest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 14), + ANIMCMD_FRAME(4, 14), + ANIMCMD_FRAME(5, 14), + ANIMCMD_FRAME(5, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceWest_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 14), + ANIMCMD_FRAME(2, 14), + ANIMCMD_FRAME(3, 14), + ANIMCMD_FRAME(3, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceEast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 14, .hFlip = TRUE), + ANIMCMD_FRAME(4, 14, .hFlip = TRUE), + ANIMCMD_FRAME(5, 14, .hFlip = TRUE), + ANIMCMD_FRAME(5, 14, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceEast_Unique_FollowingPokemon[] = +{ + ANIMCMD_FRAME(6, 14), + ANIMCMD_FRAME(6, 14), + ANIMCMD_FRAME(7, 14), + ANIMCMD_FRAME(7, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_FaceEast_Unique_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 14), + ANIMCMD_FRAME(4, 14), + ANIMCMD_FRAME(5, 14), + ANIMCMD_FRAME(5, 14), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkSouth_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorth_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorth_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(5, 8), + ANIMCMD_FRAME(5, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWest_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(5, 8, .hFlip = TRUE), + ANIMCMD_FRAME(5, 8, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEast_Unique_FollowingPokemon[] = +{ + ANIMCMD_FRAME(6, 8), + ANIMCMD_FRAME(6, 8), + ANIMCMD_FRAME(7, 8), + ANIMCMD_FRAME(7, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEast_Unique_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(5, 8), + ANIMCMD_FRAME(5, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkSouthFast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 6, .hFlip = TRUE), + ANIMCMD_FRAME(0, 6, .hFlip = TRUE), + ANIMCMD_FRAME(1, 6, .hFlip = TRUE), + ANIMCMD_FRAME(1, 6, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFast_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon[] = +{ + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon[] = { + // Needed for if the Pokemon is in overworld and for idle animation. + gObjectEventImageAnim_FaceSouth_FollowingPokemon, + gObjectEventImageAnim_FaceNorth_FollowingPokemon, + gObjectEventImageAnim_FaceWest_FollowingPokemon, + gObjectEventImageAnim_FaceEast_FollowingPokemon, + + // Needed for when the player walks + gObjectEventImageAnim_WalkSouth_FollowingPokemon, + gObjectEventImageAnim_WalkNorth_FollowingPokemon, + gObjectEventImageAnim_WalkWest_FollowingPokemon, + gObjectEventImageAnim_WalkEast_FollowingPokemon, + + // Filler + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_FollowingPokemon, + + // Needed for when the player runs + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_FollowingPokemon, +}; + +const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEast[] = { + // Needed for if the Pokemon is in overworld. + gObjectEventImageAnim_FaceSouth_FollowingPokemon, + gObjectEventImageAnim_FaceNorth_FollowingPokemon, + gObjectEventImageAnim_FaceWest_FollowingPokemon, + gObjectEventImageAnim_FaceEast_Unique_FollowingPokemon, + + // Needed for when the player walks + gObjectEventImageAnim_WalkSouth_FollowingPokemon, + gObjectEventImageAnim_WalkNorth_FollowingPokemon, + gObjectEventImageAnim_WalkWest_FollowingPokemon, + gObjectEventImageAnim_WalkEast_Unique_FollowingPokemon, + + // Filler + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, + + // Needed for when the player runs + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, +}; + +const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth[] = { + // Needed for if the Pokemon is in overworld. + gObjectEventImageAnim_FaceSouth_FollowingPokemon, + gObjectEventImageAnim_FaceNorth_Double_FollowingPokemon, + gObjectEventImageAnim_FaceWest_Double_FollowingPokemon, + gObjectEventImageAnim_FaceEast_Unique_Double_FollowingPokemon, + + // Needed for when the player walks + gObjectEventImageAnim_WalkSouth_FollowingPokemon, + gObjectEventImageAnim_WalkNorth_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWest_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEast_Unique_Double_FollowingPokemon, + + // Filler + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, + + // Needed for when the player runs + gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, +}; + // For animations with alternating steps static const struct StepAnimTable sStepAnimTables[] = { { diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 81d83a856..0042e162f 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -360,3 +360,306 @@ 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_Bulbasaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bulbasaur.4bpp"); +const u16 gObjectEventPal_Bulbasaur[] = INCBIN_U16("graphics/object_events/palettes/followers/bulbasaur1.gbapal"); +const u32 gObjectEventPic_Ivysaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ivysaur.4bpp"); +const u16 gObjectEventPal_Ivysaur[] = INCBIN_U16("graphics/object_events/palettes/followers/ivysaur.gbapal"); +const u32 gObjectEventPic_Venusaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/venusaur.4bpp"); +const u16 gObjectEventPal_Venusaur[] = INCBIN_U16("graphics/object_events/palettes/followers/venusaur.gbapal"); +const u32 gObjectEventPic_Charmander[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/charmander.4bpp"); +const u16 gObjectEventPal_Charmander[] = INCBIN_U16("graphics/object_events/palettes/followers/charmander.gbapal"); +const u32 gObjectEventPic_Charmeleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/charmeleon.4bpp"); +const u16 gObjectEventPal_Charmeleon[] = INCBIN_U16("graphics/object_events/palettes/followers/charmeleon.gbapal"); +const u32 gObjectEventPic_Charizard[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/charizard.4bpp"); +const u16 gObjectEventPal_Charizard[] = INCBIN_U16("graphics/object_events/palettes/followers/charizard.gbapal"); +const u32 gObjectEventPic_Squirtle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/squirtle.4bpp"); +const u16 gObjectEventPal_Squirtle[] = INCBIN_U16("graphics/object_events/palettes/followers/squirtle.gbapal"); +const u32 gObjectEventPic_Wartortle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wartortle.4bpp"); +const u16 gObjectEventPal_Wartortle[] = INCBIN_U16("graphics/object_events/palettes/followers/wartortle.gbapal"); +const u32 gObjectEventPic_Blastoise[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/blastoise.4bpp"); +const u16 gObjectEventPal_Blastoise[] = INCBIN_U16("graphics/object_events/palettes/followers/blastoise.gbapal"); +const u32 gObjectEventPic_Caterpie[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/caterpie.4bpp"); +const u16 gObjectEventPal_Caterpie[] = INCBIN_U16("graphics/object_events/palettes/followers/caterpie.gbapal"); +const u32 gObjectEventPic_Metapod[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/metapod.4bpp"); +const u16 gObjectEventPal_Metapod[] = INCBIN_U16("graphics/object_events/palettes/followers/metapod.gbapal"); +const u32 gObjectEventPic_Butterfree[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/butterfree.4bpp"); +const u16 gObjectEventPal_Butterfree[] = INCBIN_U16("graphics/object_events/palettes/followers/butterfree.gbapal"); +const u32 gObjectEventPic_Weedle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weedle.4bpp"); +const u16 gObjectEventPal_Weedle[] = INCBIN_U16("graphics/object_events/palettes/followers/weedle.gbapal"); +const u32 gObjectEventPic_Kakuna[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kakuna.4bpp"); +const u16 gObjectEventPal_Kakuna[] = INCBIN_U16("graphics/object_events/palettes/followers/kakuna.gbapal"); +const u32 gObjectEventPic_Beedrill[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/beedrill.4bpp"); +const u16 gObjectEventPal_Beedrill[] = INCBIN_U16("graphics/object_events/palettes/followers/beedrill.gbapal"); +const u32 gObjectEventPic_Pidgey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pidgey.4bpp"); +const u16 gObjectEventPal_Pidgey[] = INCBIN_U16("graphics/object_events/palettes/followers/pidgey.gbapal"); +const u32 gObjectEventPic_Pidgeotto[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pidgeotto.4bpp"); +const u16 gObjectEventPal_Pidgeotto[] = INCBIN_U16("graphics/object_events/palettes/followers/pidgeotto.gbapal"); +const u32 gObjectEventPic_Pidgeot[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pidgeot.4bpp"); +const u16 gObjectEventPal_Pidgeot[] = INCBIN_U16("graphics/object_events/palettes/followers/pidgeot.gbapal"); +const u32 gObjectEventPic_Rattata[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rattata.4bpp"); +const u16 gObjectEventPal_Rattata[] = INCBIN_U16("graphics/object_events/palettes/followers/rattata.gbapal"); +const u32 gObjectEventPic_Raticate[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/raticate.4bpp"); +const u16 gObjectEventPal_Raticate[] = INCBIN_U16("graphics/object_events/palettes/followers/raticate.gbapal"); +const u32 gObjectEventPic_Spearow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/spearow.4bpp"); +const u16 gObjectEventPal_Spearow[] = INCBIN_U16("graphics/object_events/palettes/followers/spearow.gbapal"); +const u32 gObjectEventPic_Fearow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/fearow.4bpp"); +const u16 gObjectEventPal_Fearow[] = INCBIN_U16("graphics/object_events/palettes/followers/fearow.gbapal"); +const u32 gObjectEventPic_Ekans[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ekans.4bpp"); +const u16 gObjectEventPal_Ekans[] = INCBIN_U16("graphics/object_events/palettes/followers/ekans.gbapal"); +const u32 gObjectEventPic_Arbok[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/arbok.4bpp"); +const u16 gObjectEventPal_Arbok[] = INCBIN_U16("graphics/object_events/palettes/followers/arbok.gbapal"); +const u32 gObjectEventPic_Pikachu_Follow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pikachu.4bpp"); +const u16 gObjectEventPal_Pikachu[] = INCBIN_U16("graphics/object_events/palettes/followers/pikachu.gbapal"); +const u32 gObjectEventPic_Raichu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/raichu.4bpp"); +const u16 gObjectEventPal_Raichu[] = INCBIN_U16("graphics/object_events/palettes/followers/raichu.gbapal"); +const u32 gObjectEventPic_Sandshrew[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sandshrew.4bpp"); +const u16 gObjectEventPal_Sandshrew[] = INCBIN_U16("graphics/object_events/palettes/followers/sandshrew.gbapal"); +const u32 gObjectEventPic_Sandslash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sandslash.4bpp"); +const u16 gObjectEventPal_Sandslash[] = INCBIN_U16("graphics/object_events/palettes/followers/sandslash.gbapal"); +const u32 gObjectEventPic_Nidoran_F[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoran_f.4bpp"); +const u16 gObjectEventPal_Nidoran_F[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoran_f.gbapal"); +const u32 gObjectEventPic_Nidorina[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidorina.4bpp"); +const u16 gObjectEventPal_Nidorina[] = INCBIN_U16("graphics/object_events/palettes/followers/nidorina.gbapal"); +const u32 gObjectEventPic_Nidoqueen[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoqueen.4bpp"); +const u16 gObjectEventPal_Nidoqueen[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoqueen.gbapal"); +const u32 gObjectEventPic_Nidoran_M[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoran_m.4bpp"); +const u16 gObjectEventPal_Nidoran_M[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoran_m.gbapal"); +const u32 gObjectEventPic_Nidorino[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidorino.4bpp"); +const u16 gObjectEventPal_Nidorino[] = INCBIN_U16("graphics/object_events/palettes/followers/nidorino.gbapal"); +const u32 gObjectEventPic_Nidoking[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoking.4bpp"); +const u16 gObjectEventPal_Nidoking[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoking.gbapal"); +const u32 gObjectEventPic_Clefairy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/clefairy.4bpp"); +const u16 gObjectEventPal_Clefairy[] = INCBIN_U16("graphics/object_events/palettes/followers/clefairy.gbapal"); +const u32 gObjectEventPic_Clefable[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/clefable.4bpp"); +const u16 gObjectEventPal_Clefable[] = INCBIN_U16("graphics/object_events/palettes/followers/clefable.gbapal"); +const u32 gObjectEventPic_Vulpix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vulpix.4bpp"); +const u16 gObjectEventPal_Vulpix[] = INCBIN_U16("graphics/object_events/palettes/followers/vulpix.gbapal"); +const u32 gObjectEventPic_Ninetales[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ninetales.4bpp"); +const u16 gObjectEventPal_Ninetales[] = INCBIN_U16("graphics/object_events/palettes/followers/ninetales.gbapal"); +const u32 gObjectEventPic_Jigglypuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/jigglypuff.4bpp"); +const u16 gObjectEventPal_Jigglypuff[] = INCBIN_U16("graphics/object_events/palettes/followers/jigglypuff.gbapal"); +const u32 gObjectEventPic_Wigglytuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wigglytuff.4bpp"); +const u16 gObjectEventPal_Wigglytuff[] = INCBIN_U16("graphics/object_events/palettes/followers/wigglytuff.gbapal"); +const u32 gObjectEventPic_Zubat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/zubat.4bpp"); +const u16 gObjectEventPal_Zubat[] = INCBIN_U16("graphics/object_events/palettes/followers/zubat.gbapal"); +const u32 gObjectEventPic_Golbat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golbat.4bpp"); +const u16 gObjectEventPal_Golbat[] = INCBIN_U16("graphics/object_events/palettes/followers/golbat.gbapal"); +const u32 gObjectEventPic_Oddish[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/oddish.4bpp"); +const u16 gObjectEventPal_Oddish[] = INCBIN_U16("graphics/object_events/palettes/followers/oddish.gbapal"); +const u32 gObjectEventPic_Gloom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gloom.4bpp"); +const u16 gObjectEventPal_Gloom[] = INCBIN_U16("graphics/object_events/palettes/followers/gloom.gbapal"); +const u32 gObjectEventPic_Vileplume[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vileplume.4bpp"); +const u16 gObjectEventPal_Vileplume[] = INCBIN_U16("graphics/object_events/palettes/followers/vileplume.gbapal"); +const u32 gObjectEventPic_Paras[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/paras.4bpp"); +const u16 gObjectEventPal_Paras[] = INCBIN_U16("graphics/object_events/palettes/followers/paras.gbapal"); +const u32 gObjectEventPic_Parasect[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/parasect.4bpp"); +const u16 gObjectEventPal_Parasect[] = INCBIN_U16("graphics/object_events/palettes/followers/parasect.gbapal"); +const u32 gObjectEventPic_Venonat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/venonat.4bpp"); +const u16 gObjectEventPal_Venonat[] = INCBIN_U16("graphics/object_events/palettes/followers/venonat.gbapal"); +const u32 gObjectEventPic_Venomoth[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/venomoth.4bpp"); +const u16 gObjectEventPal_Venomoth[] = INCBIN_U16("graphics/object_events/palettes/followers/venomoth.gbapal"); +const u32 gObjectEventPic_Diglett[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/diglett.4bpp"); +const u16 gObjectEventPal_Diglett[] = INCBIN_U16("graphics/object_events/palettes/followers/diglett.gbapal"); +const u32 gObjectEventPic_Dugtrio[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dugtrio.4bpp"); +const u16 gObjectEventPal_Dugtrio[] = INCBIN_U16("graphics/object_events/palettes/followers/dugtrio.gbapal"); +const u32 gObjectEventPic_Meowth[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/meowth.4bpp"); +const u16 gObjectEventPal_Meowth[] = INCBIN_U16("graphics/object_events/palettes/followers/meowth.gbapal"); +const u32 gObjectEventPic_Persian[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/persian.4bpp"); +const u16 gObjectEventPal_Persian[] = INCBIN_U16("graphics/object_events/palettes/followers/persian.gbapal"); +const u32 gObjectEventPic_Psyduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/psyduck.4bpp"); +const u16 gObjectEventPal_Psyduck[] = INCBIN_U16("graphics/object_events/palettes/followers/psyduck.gbapal"); +const u32 gObjectEventPic_Golduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golduck.4bpp"); +const u16 gObjectEventPal_Golduck[] = INCBIN_U16("graphics/object_events/palettes/followers/golduck.gbapal"); +const u32 gObjectEventPic_Mankey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mankey.4bpp"); +const u16 gObjectEventPal_Mankey[] = INCBIN_U16("graphics/object_events/palettes/followers/mankey.gbapal"); +const u32 gObjectEventPic_Primeape[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/primeape.4bpp"); +const u16 gObjectEventPal_Primeape[] = INCBIN_U16("graphics/object_events/palettes/followers/primeape.gbapal"); +const u32 gObjectEventPic_Growlithe[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/growlithe.4bpp"); +const u16 gObjectEventPal_Growlithe[] = INCBIN_U16("graphics/object_events/palettes/followers/growlithe.gbapal"); +const u32 gObjectEventPic_Arcanine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/arcanine.4bpp"); +const u16 gObjectEventPal_Arcanine[] = INCBIN_U16("graphics/object_events/palettes/followers/arcanine.gbapal"); +const u32 gObjectEventPic_Poliwag[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwag.4bpp"); +const u16 gObjectEventPal_Poliwag[] = INCBIN_U16("graphics/object_events/palettes/followers/poliwag.gbapal"); +const u32 gObjectEventPic_Poliwhirl[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwhirl.4bpp"); +const u16 gObjectEventPal_Poliwhirl[] = INCBIN_U16("graphics/object_events/palettes/followers/poliwhirl.gbapal"); +const u32 gObjectEventPic_Poliwrath[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwrath.4bpp"); +const u16 gObjectEventPal_Poliwrath[] = INCBIN_U16("graphics/object_events/palettes/followers/poliwrath.gbapal"); +const u32 gObjectEventPic_Abra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/abra.4bpp"); +const u16 gObjectEventPal_Abra[] = INCBIN_U16("graphics/object_events/palettes/followers/abra.gbapal"); +const u32 gObjectEventPic_Kadabra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kadabra.4bpp"); +const u16 gObjectEventPal_Kadabra[] = INCBIN_U16("graphics/object_events/palettes/followers/kadabra.gbapal"); +const u32 gObjectEventPic_Alakazam[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/alakazam.4bpp"); +const u16 gObjectEventPal_Alakazam[] = INCBIN_U16("graphics/object_events/palettes/followers/alakazam.gbapal"); +const u32 gObjectEventPic_Machop[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machop.4bpp"); +const u16 gObjectEventPal_Machop[] = INCBIN_U16("graphics/object_events/palettes/followers/machop.gbapal"); +const u32 gObjectEventPic_Machoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machoke.4bpp"); +const u16 gObjectEventPal_Machoke[] = INCBIN_U16("graphics/object_events/palettes/followers/machoke.gbapal"); +const u32 gObjectEventPic_Machamp[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machamp.4bpp"); +const u16 gObjectEventPal_Machamp[] = INCBIN_U16("graphics/object_events/palettes/followers/machamp.gbapal"); +const u32 gObjectEventPic_Bellsprout[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bellsprout.4bpp"); +const u16 gObjectEventPal_Bellsprout[] = INCBIN_U16("graphics/object_events/palettes/followers/bellsprout.gbapal"); +const u32 gObjectEventPic_Weepinbell[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weepinbell.4bpp"); +const u16 gObjectEventPal_Weepinbell[] = INCBIN_U16("graphics/object_events/palettes/followers/weepinbell.gbapal"); +const u32 gObjectEventPic_Victreebel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/victreebel.4bpp"); +const u16 gObjectEventPal_Victreebel[] = INCBIN_U16("graphics/object_events/palettes/followers/victreebel.gbapal"); +const u32 gObjectEventPic_Tentacool[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tentacool.4bpp"); +const u16 gObjectEventPal_Tentacool[] = INCBIN_U16("graphics/object_events/palettes/followers/tentacool.gbapal"); +const u32 gObjectEventPic_Tentacruel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tentacruel.4bpp"); +const u16 gObjectEventPal_Tentacruel[] = INCBIN_U16("graphics/object_events/palettes/followers/tentacruel.gbapal"); +const u32 gObjectEventPic_Geodude[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/geodude.4bpp"); +const u16 gObjectEventPal_Geodude[] = INCBIN_U16("graphics/object_events/palettes/followers/geodude.gbapal"); +const u32 gObjectEventPic_Graveler[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/graveler.4bpp"); +const u16 gObjectEventPal_Graveler[] = INCBIN_U16("graphics/object_events/palettes/followers/graveler.gbapal"); +const u32 gObjectEventPic_Golem[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golem.4bpp"); +const u16 gObjectEventPal_Golem[] = INCBIN_U16("graphics/object_events/palettes/followers/golem.gbapal"); +const u32 gObjectEventPic_Ponyta[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ponyta.4bpp"); +const u16 gObjectEventPal_Ponyta[] = INCBIN_U16("graphics/object_events/palettes/followers/ponyta.gbapal"); +const u32 gObjectEventPic_Rapidash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rapidash.4bpp"); +const u16 gObjectEventPal_Rapidash[] = INCBIN_U16("graphics/object_events/palettes/followers/rapidash.gbapal"); +const u32 gObjectEventPic_Slowpoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slowpoke.4bpp"); +const u16 gObjectEventPal_Slowpoke[] = INCBIN_U16("graphics/object_events/palettes/followers/slowpoke.gbapal"); +const u32 gObjectEventPic_Slowbro[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slowbro.4bpp"); +const u16 gObjectEventPal_Slowbro[] = INCBIN_U16("graphics/object_events/palettes/followers/slowbro.gbapal"); +const u32 gObjectEventPic_Magnemite[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magnemite.4bpp"); +const u16 gObjectEventPal_Magnemite[] = INCBIN_U16("graphics/object_events/palettes/followers/magnemite.gbapal"); +const u32 gObjectEventPic_Magneton[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magneton.4bpp"); +const u16 gObjectEventPal_Magneton[] = INCBIN_U16("graphics/object_events/palettes/followers/magneton.gbapal"); +const u32 gObjectEventPic_Farfetchd[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/farfetchd.4bpp"); +const u16 gObjectEventPal_Farfetchd[] = INCBIN_U16("graphics/object_events/palettes/followers/farfetchd.gbapal"); +const u32 gObjectEventPic_Doduo[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/doduo.4bpp"); +const u16 gObjectEventPal_Doduo[] = INCBIN_U16("graphics/object_events/palettes/followers/doduo.gbapal"); +const u32 gObjectEventPic_Dodrio[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dodrio.4bpp"); +const u16 gObjectEventPal_Dodrio[] = INCBIN_U16("graphics/object_events/palettes/followers/dodrio.gbapal"); +const u32 gObjectEventPic_Seel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seel.4bpp"); +const u16 gObjectEventPal_Seel[] = INCBIN_U16("graphics/object_events/palettes/followers/seel.gbapal"); +const u32 gObjectEventPic_Dewgong[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dewgong.4bpp"); +const u16 gObjectEventPal_Dewgong[] = INCBIN_U16("graphics/object_events/palettes/followers/dewgong.gbapal"); +const u32 gObjectEventPic_Grimer[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/grimer.4bpp"); +const u16 gObjectEventPal_Grimer[] = INCBIN_U16("graphics/object_events/palettes/followers/grimer.gbapal"); +const u32 gObjectEventPic_Muk[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/muk.4bpp"); +const u16 gObjectEventPal_Muk[] = INCBIN_U16("graphics/object_events/palettes/followers/muk.gbapal"); +const u32 gObjectEventPic_Shellder[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shellder.4bpp"); +const u16 gObjectEventPal_Shellder[] = INCBIN_U16("graphics/object_events/palettes/followers/shellder.gbapal"); +const u32 gObjectEventPic_Cloyster[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cloyster.4bpp"); +const u16 gObjectEventPal_Cloyster[] = INCBIN_U16("graphics/object_events/palettes/followers/cloyster.gbapal"); +const u32 gObjectEventPic_Gastly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gastly.4bpp"); +const u16 gObjectEventPal_Gastly[] = INCBIN_U16("graphics/object_events/palettes/followers/gastly.gbapal"); +const u32 gObjectEventPic_Haunter[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/haunter.4bpp"); +const u16 gObjectEventPal_Haunter[] = INCBIN_U16("graphics/object_events/palettes/followers/haunter.gbapal"); +const u32 gObjectEventPic_Gengar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gengar.4bpp"); +const u16 gObjectEventPal_Gengar[] = INCBIN_U16("graphics/object_events/palettes/followers/gengar.gbapal"); +const u32 gObjectEventPic_Onix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/onix.4bpp"); +const u16 gObjectEventPal_Onix[] = INCBIN_U16("graphics/object_events/palettes/followers/onix.gbapal"); +const u32 gObjectEventPic_Drowzee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/drowzee.4bpp"); +const u16 gObjectEventPal_Drowzee[] = INCBIN_U16("graphics/object_events/palettes/followers/drowzee.gbapal"); +const u32 gObjectEventPic_Hypno[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hypno.4bpp"); +const u16 gObjectEventPal_Hypno[] = INCBIN_U16("graphics/object_events/palettes/followers/hypno.gbapal"); +const u32 gObjectEventPic_Krabby[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/krabby.4bpp"); +const u16 gObjectEventPal_Krabby[] = INCBIN_U16("graphics/object_events/palettes/followers/krabby.gbapal"); +const u32 gObjectEventPic_Kingler[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kingler.4bpp"); +const u16 gObjectEventPal_Kingler[] = INCBIN_U16("graphics/object_events/palettes/followers/kingler.gbapal"); +const u32 gObjectEventPic_Voltorb[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/voltorb.4bpp"); +const u16 gObjectEventPal_Voltorb[] = INCBIN_U16("graphics/object_events/palettes/followers/voltorb.gbapal"); +const u32 gObjectEventPic_Electrode[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electrode.4bpp"); +const u16 gObjectEventPal_Electrode[] = INCBIN_U16("graphics/object_events/palettes/followers/electrode.gbapal"); +const u32 gObjectEventPic_Exeggcute[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/exeggcute.4bpp"); +const u16 gObjectEventPal_Exeggcute[] = INCBIN_U16("graphics/object_events/palettes/followers/exeggcute.gbapal"); +const u32 gObjectEventPic_Exeggutor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/exeggutor.4bpp"); +const u16 gObjectEventPal_Exeggutor[] = INCBIN_U16("graphics/object_events/palettes/followers/exeggutor.gbapal"); +const u32 gObjectEventPic_Cubone[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cubone.4bpp"); +const u16 gObjectEventPal_Cubone[] = INCBIN_U16("graphics/object_events/palettes/followers/cubone.gbapal"); +const u32 gObjectEventPic_Marowak[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/marowak.4bpp"); +const u16 gObjectEventPal_Marowak[] = INCBIN_U16("graphics/object_events/palettes/followers/marowak.gbapal"); +const u32 gObjectEventPic_Hitmonlee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hitmonlee.4bpp"); +const u16 gObjectEventPal_Hitmonlee[] = INCBIN_U16("graphics/object_events/palettes/followers/hitmonlee.gbapal"); +const u32 gObjectEventPic_Hitmonchan[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hitmonchan.4bpp"); +const u16 gObjectEventPal_Hitmonchan[] = INCBIN_U16("graphics/object_events/palettes/followers/hitmonchan.gbapal"); +const u32 gObjectEventPic_Lickitung[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lickitung.4bpp"); +const u16 gObjectEventPal_Lickitung[] = INCBIN_U16("graphics/object_events/palettes/followers/lickitung.gbapal"); +const u32 gObjectEventPic_Koffing[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/koffing.4bpp"); +const u16 gObjectEventPal_Koffing[] = INCBIN_U16("graphics/object_events/palettes/followers/koffing.gbapal"); +const u32 gObjectEventPic_Weezing[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weezing.4bpp"); +const u16 gObjectEventPal_Weezing[] = INCBIN_U16("graphics/object_events/palettes/followers/weezing.gbapal"); +const u32 gObjectEventPic_Rhyhorn[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhyhorn.4bpp"); +const u16 gObjectEventPal_Rhyhorn[] = INCBIN_U16("graphics/object_events/palettes/followers/rhyhorn.gbapal"); +const u32 gObjectEventPic_Rhydon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhydon.4bpp"); +const u16 gObjectEventPal_Rhydon[] = INCBIN_U16("graphics/object_events/palettes/followers/rhydon.gbapal"); +const u32 gObjectEventPic_Chansey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chansey.4bpp"); +const u16 gObjectEventPal_Chansey[] = INCBIN_U16("graphics/object_events/palettes/followers/chansey.gbapal"); +const u32 gObjectEventPic_Tangela[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tangela.4bpp"); +const u16 gObjectEventPal_Tangela[] = INCBIN_U16("graphics/object_events/palettes/followers/tangela.gbapal"); +const u32 gObjectEventPic_Kangaskhan[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kangaskhan.4bpp"); +const u16 gObjectEventPal_Kangaskhan[] = INCBIN_U16("graphics/object_events/palettes/followers/kangaskhan.gbapal"); +const u32 gObjectEventPic_Horsea[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/horsea.4bpp"); +const u16 gObjectEventPal_Horsea[] = INCBIN_U16("graphics/object_events/palettes/followers/horsea.gbapal"); +const u32 gObjectEventPic_Seadra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seadra.4bpp"); +const u16 gObjectEventPal_Seadra[] = INCBIN_U16("graphics/object_events/palettes/followers/seadra.gbapal"); +const u32 gObjectEventPic_Goldeen[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/goldeen.4bpp"); +const u16 gObjectEventPal_Goldeen[] = INCBIN_U16("graphics/object_events/palettes/followers/goldeen.gbapal"); +const u32 gObjectEventPic_Seaking[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seaking.4bpp"); +const u16 gObjectEventPal_Seaking[] = INCBIN_U16("graphics/object_events/palettes/followers/seaking.gbapal"); +const u32 gObjectEventPic_Staryu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/staryu.4bpp"); +const u16 gObjectEventPal_Staryu[] = INCBIN_U16("graphics/object_events/palettes/followers/staryu.gbapal"); +const u32 gObjectEventPic_Starmie[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/starmie.4bpp"); +const u16 gObjectEventPal_Starmie[] = INCBIN_U16("graphics/object_events/palettes/followers/starmie.gbapal"); +const u32 gObjectEventPic_Mr_Mime[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mr_mime.4bpp"); +const u16 gObjectEventPal_Mr_Mime[] = INCBIN_U16("graphics/object_events/palettes/followers/mr_mime.gbapal"); +const u32 gObjectEventPic_Scyther[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/scyther.4bpp"); +const u16 gObjectEventPal_Scyther[] = INCBIN_U16("graphics/object_events/palettes/followers/scyther.gbapal"); +const u32 gObjectEventPic_Jynx[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/jynx.4bpp"); +const u16 gObjectEventPal_Jynx[] = INCBIN_U16("graphics/object_events/palettes/followers/jynx.gbapal"); +const u32 gObjectEventPic_Electabuzz[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electabuzz.4bpp"); +const u16 gObjectEventPal_Electabuzz[] = INCBIN_U16("graphics/object_events/palettes/followers/electabuzz.gbapal"); +const u32 gObjectEventPic_Magmar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magmar.4bpp"); +const u16 gObjectEventPal_Magmar[] = INCBIN_U16("graphics/object_events/palettes/followers/magmar.gbapal"); +const u32 gObjectEventPic_Pinsir[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pinsir.4bpp"); +const u16 gObjectEventPal_Pinsir[] = INCBIN_U16("graphics/object_events/palettes/followers/pinsir.gbapal"); +const u32 gObjectEventPic_Tauros[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tauros.4bpp"); +const u16 gObjectEventPal_Tauros[] = INCBIN_U16("graphics/object_events/palettes/followers/tauros.gbapal"); +const u32 gObjectEventPic_Magikarp[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magikarp.4bpp"); +const u16 gObjectEventPal_Magikarp[] = INCBIN_U16("graphics/object_events/palettes/followers/magikarp.gbapal"); +const u32 gObjectEventPic_Gyarados[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gyarados.4bpp"); +const u16 gObjectEventPal_Gyarados[] = INCBIN_U16("graphics/object_events/palettes/followers/gyarados.gbapal"); +const u32 gObjectEventPic_Lapras[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lapras.4bpp"); +const u16 gObjectEventPal_Lapras[] = INCBIN_U16("graphics/object_events/palettes/followers/lapras.gbapal"); +const u32 gObjectEventPic_Ditto[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ditto.4bpp"); +const u16 gObjectEventPal_Ditto[] = INCBIN_U16("graphics/object_events/palettes/followers/ditto.gbapal"); +const u32 gObjectEventPic_Eevee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/eevee.4bpp"); +const u16 gObjectEventPal_Eevee[] = INCBIN_U16("graphics/object_events/palettes/followers/eevee.gbapal"); +const u32 gObjectEventPic_Vaporeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vaporeon.4bpp"); +const u16 gObjectEventPal_Vaporeon[] = INCBIN_U16("graphics/object_events/palettes/followers/vaporeon.gbapal"); +const u32 gObjectEventPic_Jolteon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/jolteon.4bpp"); +const u16 gObjectEventPal_Jolteon[] = INCBIN_U16("graphics/object_events/palettes/followers/jolteon.gbapal"); +const u32 gObjectEventPic_Flareon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/flareon.4bpp"); +const u16 gObjectEventPal_Flareon[] = INCBIN_U16("graphics/object_events/palettes/followers/flareon.gbapal"); +const u32 gObjectEventPic_Porygon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/porygon.4bpp"); +const u16 gObjectEventPal_Porygon[] = INCBIN_U16("graphics/object_events/palettes/followers/porygon.gbapal"); +const u32 gObjectEventPic_Omanyte[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/omanyte.4bpp"); +const u16 gObjectEventPal_Omanyte[] = INCBIN_U16("graphics/object_events/palettes/followers/omanyte.gbapal"); +const u32 gObjectEventPic_Omastar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/omastar.4bpp"); +const u16 gObjectEventPal_Omastar[] = INCBIN_U16("graphics/object_events/palettes/followers/omastar.gbapal"); +const u32 gObjectEventPic_Kabuto[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kabuto.4bpp"); +const u16 gObjectEventPal_Kabuto[] = INCBIN_U16("graphics/object_events/palettes/followers/kabuto.gbapal"); +const u32 gObjectEventPic_Kabutops[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kabutops.4bpp"); +const u16 gObjectEventPal_Kabutops[] = INCBIN_U16("graphics/object_events/palettes/followers/kabutops.gbapal"); +const u32 gObjectEventPic_Aerodactyl[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/aerodactyl.4bpp"); +const u16 gObjectEventPal_Aerodactyl[] = INCBIN_U16("graphics/object_events/palettes/followers/aerodactyl.gbapal"); +const u32 gObjectEventPic_Snorlax[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/snorlax.4bpp"); +const u16 gObjectEventPal_Snorlax[] = INCBIN_U16("graphics/object_events/palettes/followers/snorlax.gbapal"); +const u32 gObjectEventPic_Articuno[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/articuno.4bpp"); +const u16 gObjectEventPal_Articuno[] = INCBIN_U16("graphics/object_events/palettes/followers/articuno.gbapal"); +const u32 gObjectEventPic_Zapdos[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/zapdos.4bpp"); +const u16 gObjectEventPal_Zapdos[] = INCBIN_U16("graphics/object_events/palettes/followers/zapdos.gbapal"); +const u32 gObjectEventPic_Moltres[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/moltres.4bpp"); +const u16 gObjectEventPal_Moltres[] = INCBIN_U16("graphics/object_events/palettes/followers/moltres.gbapal"); +const u32 gObjectEventPic_Dratini[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dratini.4bpp"); +const u16 gObjectEventPal_Dratini[] = INCBIN_U16("graphics/object_events/palettes/followers/dratini.gbapal"); +const u32 gObjectEventPic_Dragonair[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dragonair.4bpp"); +const u16 gObjectEventPal_Dragonair[] = INCBIN_U16("graphics/object_events/palettes/followers/dragonair.gbapal"); +const u32 gObjectEventPic_Dragonite[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dragonite.4bpp"); +const u16 gObjectEventPal_Dragonite[] = INCBIN_U16("graphics/object_events/palettes/followers/dragonite.gbapal"); +const u32 gObjectEventPic_Mewtwo[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mewtwo.4bpp"); +const u16 gObjectEventPal_Mewtwo[] = INCBIN_U16("graphics/object_events/palettes/followers/mewtwo.gbapal"); +const u32 gObjectEventPic_Mew_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mew.4bpp"); +const u16 gObjectEventPal_Mew[] = INCBIN_U16("graphics/object_events/palettes/followers/mew.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index ea424090a..5e0d06bc9 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -243,3 +243,155 @@ 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_Lugia, 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_HoOh, gDummySpriteAffineAnimTable}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bulbasaur, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur = {0xFFFF, OBJ_EVENT_PAL_TAG_IVYSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ivysaur, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur = {0xFFFF, OBJ_EVENT_PAL_TAG_VENUSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venusaur, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMANDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmander, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMELEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmeleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSLASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandslash, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_F, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_F, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFAIRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_ODDISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_VILEPLUME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_PSYDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_GROWLITHE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWRATH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_ALAKAZAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLSPROUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_RAPIDASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_DROWZEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_MAROWAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYHORN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARYU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTABUZZ, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, 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 1c94919a7..8e052f870 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -244,6 +244,157 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower; const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { @@ -486,6 +637,157 @@ 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_BULBASAUR] = &gObjectEventGraphicsInfo_Bulbasaur, + [OBJ_EVENT_GFX_IVYSAUR] = &gObjectEventGraphicsInfo_Ivysaur, + [OBJ_EVENT_GFX_VENUSAUR] = &gObjectEventGraphicsInfo_Venusaur, + [OBJ_EVENT_GFX_CHARMANDER] = &gObjectEventGraphicsInfo_Charmander, + [OBJ_EVENT_GFX_CHARMELEON] = &gObjectEventGraphicsInfo_Charmeleon, + [OBJ_EVENT_GFX_CHARIZARD] = &gObjectEventGraphicsInfo_Charizard, + [OBJ_EVENT_GFX_SQUIRTLE] = &gObjectEventGraphicsInfo_Squirtle, + [OBJ_EVENT_GFX_WARTORTLE] = &gObjectEventGraphicsInfo_Wartortle, + [OBJ_EVENT_GFX_BLASTOISE] = &gObjectEventGraphicsInfo_Blastoise, + [OBJ_EVENT_GFX_CATERPIE] = &gObjectEventGraphicsInfo_Caterpie, + [OBJ_EVENT_GFX_METAPOD] = &gObjectEventGraphicsInfo_Metapod, + [OBJ_EVENT_GFX_BUTTERFREE] = &gObjectEventGraphicsInfo_Butterfree, + [OBJ_EVENT_GFX_WEEDLE] = &gObjectEventGraphicsInfo_Weedle, + [OBJ_EVENT_GFX_KAKUNA] = &gObjectEventGraphicsInfo_Kakuna, + [OBJ_EVENT_GFX_BEEDRILL] = &gObjectEventGraphicsInfo_Beedrill, + [OBJ_EVENT_GFX_PIDGEY] = &gObjectEventGraphicsInfo_Pidgey, + [OBJ_EVENT_GFX_PIDGEOTTO] = &gObjectEventGraphicsInfo_Pidgeotto, + [OBJ_EVENT_GFX_PIDGEOT] = &gObjectEventGraphicsInfo_Pidgeot, + [OBJ_EVENT_GFX_RATTATA] = &gObjectEventGraphicsInfo_Rattata, + [OBJ_EVENT_GFX_RATICATE] = &gObjectEventGraphicsInfo_Raticate, + [OBJ_EVENT_GFX_SPEAROW] = &gObjectEventGraphicsInfo_Spearow, + [OBJ_EVENT_GFX_FEAROW] = &gObjectEventGraphicsInfo_Fearow, + [OBJ_EVENT_GFX_EKANS] = &gObjectEventGraphicsInfo_Ekans, + [OBJ_EVENT_GFX_ARBOK] = &gObjectEventGraphicsInfo_Arbok, + [OBJ_EVENT_GFX_PIKACHU_FOLLOW] = &gObjectEventGraphicsInfo_Pikachu_Follow, + [OBJ_EVENT_GFX_RAICHU] = &gObjectEventGraphicsInfo_Raichu, + [OBJ_EVENT_GFX_SANDSHREW] = &gObjectEventGraphicsInfo_Sandshrew, + [OBJ_EVENT_GFX_SANDSLASH] = &gObjectEventGraphicsInfo_Sandslash, + [OBJ_EVENT_GFX_NIDORAN_F] = &gObjectEventGraphicsInfo_Nidoran_F, + [OBJ_EVENT_GFX_NIDORINA] = &gObjectEventGraphicsInfo_Nidorina, + [OBJ_EVENT_GFX_NIDOQUEEN] = &gObjectEventGraphicsInfo_Nidoqueen, + [OBJ_EVENT_GFX_NIDORAN_M] = &gObjectEventGraphicsInfo_Nidoran_M, + [OBJ_EVENT_GFX_NIDORINO] = &gObjectEventGraphicsInfo_Nidorino, + [OBJ_EVENT_GFX_NIDOKING] = &gObjectEventGraphicsInfo_Nidoking, + [OBJ_EVENT_GFX_CLEFAIRY] = &gObjectEventGraphicsInfo_Clefairy, + [OBJ_EVENT_GFX_CLEFABLE] = &gObjectEventGraphicsInfo_Clefable, + [OBJ_EVENT_GFX_VULPIX] = &gObjectEventGraphicsInfo_Vulpix, + [OBJ_EVENT_GFX_NINETALES] = &gObjectEventGraphicsInfo_Ninetales, + [OBJ_EVENT_GFX_JIGGLYPUFF] = &gObjectEventGraphicsInfo_Jigglypuff, + [OBJ_EVENT_GFX_WIGGLYTUFF] = &gObjectEventGraphicsInfo_Wigglytuff, + [OBJ_EVENT_GFX_ZUBAT] = &gObjectEventGraphicsInfo_Zubat, + [OBJ_EVENT_GFX_GOLBAT] = &gObjectEventGraphicsInfo_Golbat, + [OBJ_EVENT_GFX_ODDISH] = &gObjectEventGraphicsInfo_Oddish, + [OBJ_EVENT_GFX_GLOOM] = &gObjectEventGraphicsInfo_Gloom, + [OBJ_EVENT_GFX_VILEPLUME] = &gObjectEventGraphicsInfo_Vileplume, + [OBJ_EVENT_GFX_PARAS] = &gObjectEventGraphicsInfo_Paras, + [OBJ_EVENT_GFX_PARASECT] = &gObjectEventGraphicsInfo_Parasect, + [OBJ_EVENT_GFX_VENONAT] = &gObjectEventGraphicsInfo_Venonat, + [OBJ_EVENT_GFX_VENOMOTH] = &gObjectEventGraphicsInfo_Venomoth, + [OBJ_EVENT_GFX_DIGLETT] = &gObjectEventGraphicsInfo_Diglett, + [OBJ_EVENT_GFX_DUGTRIO] = &gObjectEventGraphicsInfo_Dugtrio, + [OBJ_EVENT_GFX_MEOWTH] = &gObjectEventGraphicsInfo_Meowth, + [OBJ_EVENT_GFX_PERSIAN] = &gObjectEventGraphicsInfo_Persian, + [OBJ_EVENT_GFX_PSYDUCK] = &gObjectEventGraphicsInfo_Psyduck, + [OBJ_EVENT_GFX_GOLDUCK] = &gObjectEventGraphicsInfo_Golduck, + [OBJ_EVENT_GFX_MANKEY] = &gObjectEventGraphicsInfo_Mankey, + [OBJ_EVENT_GFX_PRIMEAPE] = &gObjectEventGraphicsInfo_Primeape, + [OBJ_EVENT_GFX_GROWLITHE] = &gObjectEventGraphicsInfo_Growlithe, + [OBJ_EVENT_GFX_ARCANINE] = &gObjectEventGraphicsInfo_Arcanine, + [OBJ_EVENT_GFX_POLIWAG] = &gObjectEventGraphicsInfo_Poliwag, + [OBJ_EVENT_GFX_POLIWHIRL] = &gObjectEventGraphicsInfo_Poliwhirl, + [OBJ_EVENT_GFX_POLIWRATH] = &gObjectEventGraphicsInfo_Poliwrath, + [OBJ_EVENT_GFX_ABRA] = &gObjectEventGraphicsInfo_Abra, + [OBJ_EVENT_GFX_KADABRA] = &gObjectEventGraphicsInfo_Kadabra, + [OBJ_EVENT_GFX_ALAKAZAM] = &gObjectEventGraphicsInfo_Alakazam, + [OBJ_EVENT_GFX_MACHOP] = &gObjectEventGraphicsInfo_Machop, + [OBJ_EVENT_GFX_MACHOKE] = &gObjectEventGraphicsInfo_Machoke, + [OBJ_EVENT_GFX_MACHAMP] = &gObjectEventGraphicsInfo_Machamp, + [OBJ_EVENT_GFX_BELLSPROUT] = &gObjectEventGraphicsInfo_Bellsprout, + [OBJ_EVENT_GFX_WEEPINBELL] = &gObjectEventGraphicsInfo_Weepinbell, + [OBJ_EVENT_GFX_VICTREEBEL] = &gObjectEventGraphicsInfo_Victreebel, + [OBJ_EVENT_GFX_TENTACOOL] = &gObjectEventGraphicsInfo_Tentacool, + [OBJ_EVENT_GFX_TENTACRUEL] = &gObjectEventGraphicsInfo_Tentacruel, + [OBJ_EVENT_GFX_GEODUDE] = &gObjectEventGraphicsInfo_Geodude, + [OBJ_EVENT_GFX_GRAVELER] = &gObjectEventGraphicsInfo_Graveler, + [OBJ_EVENT_GFX_GOLEM] = &gObjectEventGraphicsInfo_Golem, + [OBJ_EVENT_GFX_PONYTA] = &gObjectEventGraphicsInfo_Ponyta, + [OBJ_EVENT_GFX_RAPIDASH] = &gObjectEventGraphicsInfo_Rapidash, + [OBJ_EVENT_GFX_SLOWPOKE] = &gObjectEventGraphicsInfo_Slowpoke, + [OBJ_EVENT_GFX_SLOWBRO] = &gObjectEventGraphicsInfo_Slowbro, + [OBJ_EVENT_GFX_MAGNEMITE] = &gObjectEventGraphicsInfo_Magnemite, + [OBJ_EVENT_GFX_MAGNETON] = &gObjectEventGraphicsInfo_Magneton, + [OBJ_EVENT_GFX_FARFETCHD] = &gObjectEventGraphicsInfo_Farfetchd, + [OBJ_EVENT_GFX_DODUO] = &gObjectEventGraphicsInfo_Doduo, + [OBJ_EVENT_GFX_DODRIO] = &gObjectEventGraphicsInfo_Dodrio, + [OBJ_EVENT_GFX_SEEL] = &gObjectEventGraphicsInfo_Seel, + [OBJ_EVENT_GFX_DEWGONG] = &gObjectEventGraphicsInfo_Dewgong, + [OBJ_EVENT_GFX_GRIMER] = &gObjectEventGraphicsInfo_Grimer, + [OBJ_EVENT_GFX_MUK] = &gObjectEventGraphicsInfo_Muk, + [OBJ_EVENT_GFX_SHELLDER] = &gObjectEventGraphicsInfo_Shellder, + [OBJ_EVENT_GFX_CLOYSTER] = &gObjectEventGraphicsInfo_Cloyster, + [OBJ_EVENT_GFX_GASTLY] = &gObjectEventGraphicsInfo_Gastly, + [OBJ_EVENT_GFX_HAUNTER] = &gObjectEventGraphicsInfo_Haunter, + [OBJ_EVENT_GFX_GENGAR] = &gObjectEventGraphicsInfo_Gengar, + [OBJ_EVENT_GFX_ONIX] = &gObjectEventGraphicsInfo_Onix, + [OBJ_EVENT_GFX_DROWZEE] = &gObjectEventGraphicsInfo_Drowzee, + [OBJ_EVENT_GFX_HYPNO] = &gObjectEventGraphicsInfo_Hypno, + [OBJ_EVENT_GFX_KRABBY] = &gObjectEventGraphicsInfo_Krabby, + [OBJ_EVENT_GFX_KINGLER] = &gObjectEventGraphicsInfo_Kingler, + [OBJ_EVENT_GFX_VOLTORB] = &gObjectEventGraphicsInfo_Voltorb, + [OBJ_EVENT_GFX_ELECTRODE] = &gObjectEventGraphicsInfo_Electrode, + [OBJ_EVENT_GFX_EXEGGCUTE] = &gObjectEventGraphicsInfo_Exeggcute, + [OBJ_EVENT_GFX_EXEGGUTOR] = &gObjectEventGraphicsInfo_Exeggutor, + [OBJ_EVENT_GFX_CUBONE] = &gObjectEventGraphicsInfo_Cubone, + [OBJ_EVENT_GFX_MAROWAK] = &gObjectEventGraphicsInfo_Marowak, + [OBJ_EVENT_GFX_HITMONLEE] = &gObjectEventGraphicsInfo_Hitmonlee, + [OBJ_EVENT_GFX_HITMONCHAN] = &gObjectEventGraphicsInfo_Hitmonchan, + [OBJ_EVENT_GFX_LICKITUNG] = &gObjectEventGraphicsInfo_Lickitung, + [OBJ_EVENT_GFX_KOFFING] = &gObjectEventGraphicsInfo_Koffing, + [OBJ_EVENT_GFX_WEEZING] = &gObjectEventGraphicsInfo_Weezing, + [OBJ_EVENT_GFX_RHYHORN] = &gObjectEventGraphicsInfo_Rhyhorn, + [OBJ_EVENT_GFX_RHYDON] = &gObjectEventGraphicsInfo_Rhydon, + [OBJ_EVENT_GFX_CHANSEY] = &gObjectEventGraphicsInfo_Chansey, + [OBJ_EVENT_GFX_TANGELA] = &gObjectEventGraphicsInfo_Tangela, + [OBJ_EVENT_GFX_KANGASKHAN] = &gObjectEventGraphicsInfo_Kangaskhan, + [OBJ_EVENT_GFX_HORSEA] = &gObjectEventGraphicsInfo_Horsea, + [OBJ_EVENT_GFX_SEADRA] = &gObjectEventGraphicsInfo_Seadra, + [OBJ_EVENT_GFX_GOLDEEN] = &gObjectEventGraphicsInfo_Goldeen, + [OBJ_EVENT_GFX_SEAKING] = &gObjectEventGraphicsInfo_Seaking, + [OBJ_EVENT_GFX_STARYU] = &gObjectEventGraphicsInfo_Staryu, + [OBJ_EVENT_GFX_STARMIE] = &gObjectEventGraphicsInfo_Starmie, + [OBJ_EVENT_GFX_MR_MIME] = &gObjectEventGraphicsInfo_Mr_Mime, + [OBJ_EVENT_GFX_SCYTHER] = &gObjectEventGraphicsInfo_Scyther, + [OBJ_EVENT_GFX_JYNX] = &gObjectEventGraphicsInfo_Jynx, + [OBJ_EVENT_GFX_ELECTABUZZ] = &gObjectEventGraphicsInfo_Electabuzz, + [OBJ_EVENT_GFX_MAGMAR] = &gObjectEventGraphicsInfo_Magmar, + [OBJ_EVENT_GFX_PINSIR] = &gObjectEventGraphicsInfo_Pinsir, + [OBJ_EVENT_GFX_TAUROS] = &gObjectEventGraphicsInfo_Tauros, + [OBJ_EVENT_GFX_MAGIKARP] = &gObjectEventGraphicsInfo_Magikarp, + [OBJ_EVENT_GFX_GYARADOS] = &gObjectEventGraphicsInfo_Gyarados, + [OBJ_EVENT_GFX_LAPRAS] = &gObjectEventGraphicsInfo_Lapras, + [OBJ_EVENT_GFX_DITTO] = &gObjectEventGraphicsInfo_Ditto, + [OBJ_EVENT_GFX_EEVEE] = &gObjectEventGraphicsInfo_Eevee, + [OBJ_EVENT_GFX_VAPOREON] = &gObjectEventGraphicsInfo_Vaporeon, + [OBJ_EVENT_GFX_JOLTEON] = &gObjectEventGraphicsInfo_Jolteon, + [OBJ_EVENT_GFX_FLAREON] = &gObjectEventGraphicsInfo_Flareon, + [OBJ_EVENT_GFX_PORYGON] = &gObjectEventGraphicsInfo_Porygon, + [OBJ_EVENT_GFX_OMANYTE] = &gObjectEventGraphicsInfo_Omanyte, + [OBJ_EVENT_GFX_OMASTAR] = &gObjectEventGraphicsInfo_Omastar, + [OBJ_EVENT_GFX_KABUTO] = &gObjectEventGraphicsInfo_Kabuto, + [OBJ_EVENT_GFX_KABUTOPS] = &gObjectEventGraphicsInfo_Kabutops, + [OBJ_EVENT_GFX_AERODACTYL] = &gObjectEventGraphicsInfo_Aerodactyl, + [OBJ_EVENT_GFX_SNORLAX] = &gObjectEventGraphicsInfo_Snorlax, + [OBJ_EVENT_GFX_ARTICUNO] = &gObjectEventGraphicsInfo_Articuno, + [OBJ_EVENT_GFX_ZAPDOS] = &gObjectEventGraphicsInfo_Zapdos, + [OBJ_EVENT_GFX_MOLTRES] = &gObjectEventGraphicsInfo_Moltres, + [OBJ_EVENT_GFX_DRATINI] = &gObjectEventGraphicsInfo_Dratini, + [OBJ_EVENT_GFX_DRAGONAIR] = &gObjectEventGraphicsInfo_Dragonair, + [OBJ_EVENT_GFX_DRAGONITE] = &gObjectEventGraphicsInfo_Dragonite, + [OBJ_EVENT_GFX_MEWTWO] = &gObjectEventGraphicsInfo_Mewtwo, + [OBJ_EVENT_GFX_MEW_FOLLOWER] = &gObjectEventGraphicsInfo_Mew_Follower, }; 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 1b8c9c727..1e9e539a3 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2172,3 +2172,1372 @@ static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 7), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 8), }; + +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_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_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), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 2), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 3), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), +}; + +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_Follow[] = { + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 0), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 1), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 2), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 3), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 4), + overworld_frame(gObjectEventPic_Pikachu_Follow, 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_Nidoran_F[] = { + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 5), +}; + +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_Nidoran_M[] = { + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 5), +}; + +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_Farfetchd[] = { + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 0), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 1), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 2), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 3), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 4), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 5), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 6), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 6), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 6), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 6), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 6), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 7), +}; + +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_Mr_Mime[] = { + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 0), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 1), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 2), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 3), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 4), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 5), +}; + +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_Follower[] = { + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 5), +}; diff --git a/src/event_data.c b/src/event_data.c index e2af6c3d0..1defd2ccb 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 2c7ceedf4..236149bb6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -22,6 +22,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "follow_me.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" #include "constants/field_effects.h" @@ -29,6 +30,7 @@ #include "constants/mauville_old_man.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/metatile_behaviors.h" // this file was known as evobjmv.c in Game Freak's original source @@ -133,7 +135,6 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8); 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); @@ -270,6 +271,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_FOLLOWING_POKEMON] = MovementType_FollowingPokemon, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -314,6 +316,7 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = FALSE, }; const u8 gInitialMovementTypeFacingDirections[] = { @@ -398,6 +401,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 @@ -436,6 +440,157 @@ 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_BULBASAUR 0x1124 +#define OBJ_EVENT_PAL_TAG_IVYSAUR 0x1125 +#define OBJ_EVENT_PAL_TAG_VENUSAUR 0x1126 +#define OBJ_EVENT_PAL_TAG_CHARMANDER 0x1127 +#define OBJ_EVENT_PAL_TAG_CHARMELEON 0x1128 +#define OBJ_EVENT_PAL_TAG_CHARIZARD 0x1129 +#define OBJ_EVENT_PAL_TAG_SQUIRTLE 0x112A +#define OBJ_EVENT_PAL_TAG_WARTORTLE 0x112B +#define OBJ_EVENT_PAL_TAG_BLASTOISE 0x112C +#define OBJ_EVENT_PAL_TAG_CATERPIE 0x112D +#define OBJ_EVENT_PAL_TAG_METAPOD 0x112E +#define OBJ_EVENT_PAL_TAG_BUTTERFREE 0x112F +#define OBJ_EVENT_PAL_TAG_WEEDLE 0x1130 +#define OBJ_EVENT_PAL_TAG_KAKUNA 0x1131 +#define OBJ_EVENT_PAL_TAG_BEEDRILL 0x1132 +#define OBJ_EVENT_PAL_TAG_PIDGEY 0x1133 +#define OBJ_EVENT_PAL_TAG_PIDGEOTTO 0x1134 +#define OBJ_EVENT_PAL_TAG_PIDGEOT 0x1135 +#define OBJ_EVENT_PAL_TAG_RATTATA 0x1136 +#define OBJ_EVENT_PAL_TAG_RATICATE 0x1137 +#define OBJ_EVENT_PAL_TAG_SPEAROW 0x1138 +#define OBJ_EVENT_PAL_TAG_FEAROW 0x1139 +#define OBJ_EVENT_PAL_TAG_EKANS 0x113A +#define OBJ_EVENT_PAL_TAG_ARBOK 0x113B +#define OBJ_EVENT_PAL_TAG_PIKACHU 0x113C +#define OBJ_EVENT_PAL_TAG_RAICHU 0x113D +#define OBJ_EVENT_PAL_TAG_SANDSHREW 0x113E +#define OBJ_EVENT_PAL_TAG_SANDSLASH 0x113F +#define OBJ_EVENT_PAL_TAG_NIDORAN_F 0x1140 +#define OBJ_EVENT_PAL_TAG_NIDORINA 0x1141 +#define OBJ_EVENT_PAL_TAG_NIDOQUEEN 0x1142 +#define OBJ_EVENT_PAL_TAG_NIDORAN_M 0x1143 +#define OBJ_EVENT_PAL_TAG_NIDORINO 0x1144 +#define OBJ_EVENT_PAL_TAG_NIDOKING 0x1145 +#define OBJ_EVENT_PAL_TAG_CLEFAIRY 0x1146 +#define OBJ_EVENT_PAL_TAG_CLEFABLE 0x1147 +#define OBJ_EVENT_PAL_TAG_VULPIX 0x1148 +#define OBJ_EVENT_PAL_TAG_NINETALES 0x1149 +#define OBJ_EVENT_PAL_TAG_JIGGLYPUFF 0x114A +#define OBJ_EVENT_PAL_TAG_WIGGLYTUFF 0x114B +#define OBJ_EVENT_PAL_TAG_ZUBAT 0x114C +#define OBJ_EVENT_PAL_TAG_GOLBAT 0x114D +#define OBJ_EVENT_PAL_TAG_ODDISH 0x114E +#define OBJ_EVENT_PAL_TAG_GLOOM 0x114F +#define OBJ_EVENT_PAL_TAG_VILEPLUME 0x1150 +#define OBJ_EVENT_PAL_TAG_PARAS 0x1151 +#define OBJ_EVENT_PAL_TAG_PARASECT 0x1152 +#define OBJ_EVENT_PAL_TAG_VENONAT 0x1153 +#define OBJ_EVENT_PAL_TAG_VENOMOTH 0x1154 +#define OBJ_EVENT_PAL_TAG_DIGLETT 0x1155 +#define OBJ_EVENT_PAL_TAG_DUGTRIO 0x1156 +#define OBJ_EVENT_PAL_TAG_MEOWTH 0x1157 +#define OBJ_EVENT_PAL_TAG_PERSIAN 0x1158 +#define OBJ_EVENT_PAL_TAG_PSYDUCK 0x1159 +#define OBJ_EVENT_PAL_TAG_GOLDUCK 0x115A +#define OBJ_EVENT_PAL_TAG_MANKEY 0x115B +#define OBJ_EVENT_PAL_TAG_PRIMEAPE 0x115C +#define OBJ_EVENT_PAL_TAG_GROWLITHE 0x115D +#define OBJ_EVENT_PAL_TAG_ARCANINE 0x115E +#define OBJ_EVENT_PAL_TAG_POLIWAG 0x115F +#define OBJ_EVENT_PAL_TAG_POLIWHIRL 0x1160 +#define OBJ_EVENT_PAL_TAG_POLIWRATH 0x1161 +#define OBJ_EVENT_PAL_TAG_ABRA 0x1162 +#define OBJ_EVENT_PAL_TAG_KADABRA 0x1163 +#define OBJ_EVENT_PAL_TAG_ALAKAZAM 0x1164 +#define OBJ_EVENT_PAL_TAG_MACHOP 0x1165 +#define OBJ_EVENT_PAL_TAG_MACHOKE 0x1166 +#define OBJ_EVENT_PAL_TAG_MACHAMP 0x1167 +#define OBJ_EVENT_PAL_TAG_BELLSPROUT 0x1168 +#define OBJ_EVENT_PAL_TAG_WEEPINBELL 0x1169 +#define OBJ_EVENT_PAL_TAG_VICTREEBEL 0x116A +#define OBJ_EVENT_PAL_TAG_TENTACOOL 0x116B +#define OBJ_EVENT_PAL_TAG_TENTACRUEL 0x116C +#define OBJ_EVENT_PAL_TAG_GEODUDE 0x116D +#define OBJ_EVENT_PAL_TAG_GRAVELER 0x116E +#define OBJ_EVENT_PAL_TAG_GOLEM 0x116F +#define OBJ_EVENT_PAL_TAG_PONYTA 0x1170 +#define OBJ_EVENT_PAL_TAG_RAPIDASH 0x1171 +#define OBJ_EVENT_PAL_TAG_SLOWPOKE 0x1172 +#define OBJ_EVENT_PAL_TAG_SLOWBRO 0x1173 +#define OBJ_EVENT_PAL_TAG_MAGNEMITE 0x1174 +#define OBJ_EVENT_PAL_TAG_MAGNETON 0x1175 +#define OBJ_EVENT_PAL_TAG_FARFETCHD 0x1176 +#define OBJ_EVENT_PAL_TAG_DODUO 0x1177 +#define OBJ_EVENT_PAL_TAG_DODRIO 0x1178 +#define OBJ_EVENT_PAL_TAG_SEEL 0x1179 +#define OBJ_EVENT_PAL_TAG_DEWGONG 0x117A +#define OBJ_EVENT_PAL_TAG_GRIMER 0x117B +#define OBJ_EVENT_PAL_TAG_MUK 0x117C +#define OBJ_EVENT_PAL_TAG_SHELLDER 0x117D +#define OBJ_EVENT_PAL_TAG_CLOYSTER 0x117E +#define OBJ_EVENT_PAL_TAG_GASTLY 0x117F +#define OBJ_EVENT_PAL_TAG_HAUNTER 0x1180 +#define OBJ_EVENT_PAL_TAG_GENGAR 0x1181 +#define OBJ_EVENT_PAL_TAG_ONIX 0x1182 +#define OBJ_EVENT_PAL_TAG_DROWZEE 0x1183 +#define OBJ_EVENT_PAL_TAG_HYPNO 0x1184 +#define OBJ_EVENT_PAL_TAG_KRABBY 0x1185 +#define OBJ_EVENT_PAL_TAG_KINGLER 0x1186 +#define OBJ_EVENT_PAL_TAG_VOLTORB 0x1187 +#define OBJ_EVENT_PAL_TAG_ELECTRODE 0x1188 +#define OBJ_EVENT_PAL_TAG_EXEGGCUTE 0x1189 +#define OBJ_EVENT_PAL_TAG_EXEGGUTOR 0x118A +#define OBJ_EVENT_PAL_TAG_CUBONE 0x118B +#define OBJ_EVENT_PAL_TAG_MAROWAK 0x118C +#define OBJ_EVENT_PAL_TAG_HITMONLEE 0x118D +#define OBJ_EVENT_PAL_TAG_HITMONCHAN 0x118E +#define OBJ_EVENT_PAL_TAG_LICKITUNG 0x118F +#define OBJ_EVENT_PAL_TAG_KOFFING 0x1190 +#define OBJ_EVENT_PAL_TAG_WEEZING 0x1191 +#define OBJ_EVENT_PAL_TAG_RHYHORN 0x1192 +#define OBJ_EVENT_PAL_TAG_RHYDON 0x1193 +#define OBJ_EVENT_PAL_TAG_CHANSEY 0x1194 +#define OBJ_EVENT_PAL_TAG_TANGELA 0x1195 +#define OBJ_EVENT_PAL_TAG_KANGASKHAN 0x1196 +#define OBJ_EVENT_PAL_TAG_HORSEA 0x1197 +#define OBJ_EVENT_PAL_TAG_SEADRA 0x1198 +#define OBJ_EVENT_PAL_TAG_GOLDEEN 0x1199 +#define OBJ_EVENT_PAL_TAG_SEAKING 0x119A +#define OBJ_EVENT_PAL_TAG_STARYU 0x119B +#define OBJ_EVENT_PAL_TAG_STARMIE 0x119C +#define OBJ_EVENT_PAL_TAG_MR_MIME 0x119D +#define OBJ_EVENT_PAL_TAG_SCYTHER 0x119E +#define OBJ_EVENT_PAL_TAG_JYNX 0x119F +#define OBJ_EVENT_PAL_TAG_ELECTABUZZ 0x11A0 +#define OBJ_EVENT_PAL_TAG_MAGMAR 0x11A1 +#define OBJ_EVENT_PAL_TAG_PINSIR 0x11A2 +#define OBJ_EVENT_PAL_TAG_TAUROS 0x11A3 +#define OBJ_EVENT_PAL_TAG_MAGIKARP 0x11A4 +#define OBJ_EVENT_PAL_TAG_GYARADOS 0x11A5 +#define OBJ_EVENT_PAL_TAG_LAPRAS 0x11A6 +#define OBJ_EVENT_PAL_TAG_DITTO 0x11A7 +#define OBJ_EVENT_PAL_TAG_EEVEE 0x11A8 +#define OBJ_EVENT_PAL_TAG_VAPOREON 0x11A9 +#define OBJ_EVENT_PAL_TAG_JOLTEON 0x11AA +#define OBJ_EVENT_PAL_TAG_FLAREON 0x11AB +#define OBJ_EVENT_PAL_TAG_PORYGON 0x11AC +#define OBJ_EVENT_PAL_TAG_OMANYTE 0x11AD +#define OBJ_EVENT_PAL_TAG_OMASTAR 0x11AE +#define OBJ_EVENT_PAL_TAG_KABUTO 0x11AF +#define OBJ_EVENT_PAL_TAG_KABUTOPS 0x11B0 +#define OBJ_EVENT_PAL_TAG_AERODACTYL 0x11B1 +#define OBJ_EVENT_PAL_TAG_SNORLAX 0x11B2 +#define OBJ_EVENT_PAL_TAG_ARTICUNO 0x11B3 +#define OBJ_EVENT_PAL_TAG_ZAPDOS 0x11B4 +#define OBJ_EVENT_PAL_TAG_MOLTRES 0x11B5 +#define OBJ_EVENT_PAL_TAG_DRATINI 0x11B6 +#define OBJ_EVENT_PAL_TAG_DRAGONAIR 0x11B7 +#define OBJ_EVENT_PAL_TAG_DRAGONITE 0x11B8 +#define OBJ_EVENT_PAL_TAG_MEWTWO 0x11B9 +#define OBJ_EVENT_PAL_TAG_MEW 0x11BA #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -482,6 +637,157 @@ 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}, + {gObjectEventPal_Bulbasaur, OBJ_EVENT_PAL_TAG_BULBASAUR}, + {gObjectEventPal_Ivysaur, OBJ_EVENT_PAL_TAG_IVYSAUR}, + {gObjectEventPal_Venusaur, OBJ_EVENT_PAL_TAG_VENUSAUR}, + {gObjectEventPal_Charmander, OBJ_EVENT_PAL_TAG_CHARMANDER}, + {gObjectEventPal_Charmeleon, OBJ_EVENT_PAL_TAG_CHARMELEON}, + {gObjectEventPal_Charizard, OBJ_EVENT_PAL_TAG_CHARIZARD}, + {gObjectEventPal_Squirtle, OBJ_EVENT_PAL_TAG_SQUIRTLE}, + {gObjectEventPal_Wartortle, OBJ_EVENT_PAL_TAG_WARTORTLE}, + {gObjectEventPal_Blastoise, OBJ_EVENT_PAL_TAG_BLASTOISE}, + {gObjectEventPal_Caterpie, OBJ_EVENT_PAL_TAG_CATERPIE}, + {gObjectEventPal_Metapod, OBJ_EVENT_PAL_TAG_METAPOD}, + {gObjectEventPal_Butterfree, OBJ_EVENT_PAL_TAG_BUTTERFREE}, + {gObjectEventPal_Weedle, OBJ_EVENT_PAL_TAG_WEEDLE}, + {gObjectEventPal_Kakuna, OBJ_EVENT_PAL_TAG_KAKUNA}, + {gObjectEventPal_Beedrill, OBJ_EVENT_PAL_TAG_BEEDRILL}, + {gObjectEventPal_Pidgey, OBJ_EVENT_PAL_TAG_PIDGEY}, + {gObjectEventPal_Pidgeotto, OBJ_EVENT_PAL_TAG_PIDGEOTTO}, + {gObjectEventPal_Pidgeot, OBJ_EVENT_PAL_TAG_PIDGEOT}, + {gObjectEventPal_Rattata, OBJ_EVENT_PAL_TAG_RATTATA}, + {gObjectEventPal_Raticate, OBJ_EVENT_PAL_TAG_RATICATE}, + {gObjectEventPal_Spearow, OBJ_EVENT_PAL_TAG_SPEAROW}, + {gObjectEventPal_Fearow, OBJ_EVENT_PAL_TAG_FEAROW}, + {gObjectEventPal_Ekans, OBJ_EVENT_PAL_TAG_EKANS}, + {gObjectEventPal_Arbok, OBJ_EVENT_PAL_TAG_ARBOK}, + {gObjectEventPal_Pikachu, OBJ_EVENT_PAL_TAG_PIKACHU}, + {gObjectEventPal_Raichu, OBJ_EVENT_PAL_TAG_RAICHU}, + {gObjectEventPal_Sandshrew, OBJ_EVENT_PAL_TAG_SANDSHREW}, + {gObjectEventPal_Sandslash, OBJ_EVENT_PAL_TAG_SANDSLASH}, + {gObjectEventPal_Nidoran_F, OBJ_EVENT_PAL_TAG_NIDORAN_F}, + {gObjectEventPal_Nidorina, OBJ_EVENT_PAL_TAG_NIDORINA}, + {gObjectEventPal_Nidoqueen, OBJ_EVENT_PAL_TAG_NIDOQUEEN}, + {gObjectEventPal_Nidoran_M, OBJ_EVENT_PAL_TAG_NIDORAN_M}, + {gObjectEventPal_Nidorino, OBJ_EVENT_PAL_TAG_NIDORINO}, + {gObjectEventPal_Nidoking, OBJ_EVENT_PAL_TAG_NIDOKING}, + {gObjectEventPal_Clefairy, OBJ_EVENT_PAL_TAG_CLEFAIRY}, + {gObjectEventPal_Clefable, OBJ_EVENT_PAL_TAG_CLEFABLE}, + {gObjectEventPal_Vulpix, OBJ_EVENT_PAL_TAG_VULPIX}, + {gObjectEventPal_Ninetales, OBJ_EVENT_PAL_TAG_NINETALES}, + {gObjectEventPal_Jigglypuff, OBJ_EVENT_PAL_TAG_JIGGLYPUFF}, + {gObjectEventPal_Wigglytuff, OBJ_EVENT_PAL_TAG_WIGGLYTUFF}, + {gObjectEventPal_Zubat, OBJ_EVENT_PAL_TAG_ZUBAT}, + {gObjectEventPal_Golbat, OBJ_EVENT_PAL_TAG_GOLBAT}, + {gObjectEventPal_Oddish, OBJ_EVENT_PAL_TAG_ODDISH}, + {gObjectEventPal_Gloom, OBJ_EVENT_PAL_TAG_GLOOM}, + {gObjectEventPal_Vileplume, OBJ_EVENT_PAL_TAG_VILEPLUME}, + {gObjectEventPal_Paras, OBJ_EVENT_PAL_TAG_PARAS}, + {gObjectEventPal_Parasect, OBJ_EVENT_PAL_TAG_PARASECT}, + {gObjectEventPal_Venonat, OBJ_EVENT_PAL_TAG_VENONAT}, + {gObjectEventPal_Venomoth, OBJ_EVENT_PAL_TAG_VENOMOTH}, + {gObjectEventPal_Diglett, OBJ_EVENT_PAL_TAG_DIGLETT}, + {gObjectEventPal_Dugtrio, OBJ_EVENT_PAL_TAG_DUGTRIO}, + {gObjectEventPal_Meowth, OBJ_EVENT_PAL_TAG_MEOWTH}, + {gObjectEventPal_Persian, OBJ_EVENT_PAL_TAG_PERSIAN}, + {gObjectEventPal_Psyduck, OBJ_EVENT_PAL_TAG_PSYDUCK}, + {gObjectEventPal_Golduck, OBJ_EVENT_PAL_TAG_GOLDUCK}, + {gObjectEventPal_Mankey, OBJ_EVENT_PAL_TAG_MANKEY}, + {gObjectEventPal_Primeape, OBJ_EVENT_PAL_TAG_PRIMEAPE}, + {gObjectEventPal_Growlithe, OBJ_EVENT_PAL_TAG_GROWLITHE}, + {gObjectEventPal_Arcanine, OBJ_EVENT_PAL_TAG_ARCANINE}, + {gObjectEventPal_Poliwag, OBJ_EVENT_PAL_TAG_POLIWAG}, + {gObjectEventPal_Poliwhirl, OBJ_EVENT_PAL_TAG_POLIWHIRL}, + {gObjectEventPal_Poliwrath, OBJ_EVENT_PAL_TAG_POLIWRATH}, + {gObjectEventPal_Abra, OBJ_EVENT_PAL_TAG_ABRA}, + {gObjectEventPal_Kadabra, OBJ_EVENT_PAL_TAG_KADABRA}, + {gObjectEventPal_Alakazam, OBJ_EVENT_PAL_TAG_ALAKAZAM}, + {gObjectEventPal_Machop, OBJ_EVENT_PAL_TAG_MACHOP}, + {gObjectEventPal_Machoke, OBJ_EVENT_PAL_TAG_MACHOKE}, + {gObjectEventPal_Machamp, OBJ_EVENT_PAL_TAG_MACHAMP}, + {gObjectEventPal_Bellsprout, OBJ_EVENT_PAL_TAG_BELLSPROUT}, + {gObjectEventPal_Weepinbell, OBJ_EVENT_PAL_TAG_WEEPINBELL}, + {gObjectEventPal_Victreebel, OBJ_EVENT_PAL_TAG_VICTREEBEL}, + {gObjectEventPal_Tentacool, OBJ_EVENT_PAL_TAG_TENTACOOL}, + {gObjectEventPal_Tentacruel, OBJ_EVENT_PAL_TAG_TENTACRUEL}, + {gObjectEventPal_Geodude, OBJ_EVENT_PAL_TAG_GEODUDE}, + {gObjectEventPal_Graveler, OBJ_EVENT_PAL_TAG_GRAVELER}, + {gObjectEventPal_Golem, OBJ_EVENT_PAL_TAG_GOLEM}, + {gObjectEventPal_Ponyta, OBJ_EVENT_PAL_TAG_PONYTA}, + {gObjectEventPal_Rapidash, OBJ_EVENT_PAL_TAG_RAPIDASH}, + {gObjectEventPal_Slowpoke, OBJ_EVENT_PAL_TAG_SLOWPOKE}, + {gObjectEventPal_Slowbro, OBJ_EVENT_PAL_TAG_SLOWBRO}, + {gObjectEventPal_Magnemite, OBJ_EVENT_PAL_TAG_MAGNEMITE}, + {gObjectEventPal_Magneton, OBJ_EVENT_PAL_TAG_MAGNETON}, + {gObjectEventPal_Farfetchd, OBJ_EVENT_PAL_TAG_FARFETCHD}, + {gObjectEventPal_Doduo, OBJ_EVENT_PAL_TAG_DODUO}, + {gObjectEventPal_Dodrio, OBJ_EVENT_PAL_TAG_DODRIO}, + {gObjectEventPal_Seel, OBJ_EVENT_PAL_TAG_SEEL}, + {gObjectEventPal_Dewgong, OBJ_EVENT_PAL_TAG_DEWGONG}, + {gObjectEventPal_Grimer, OBJ_EVENT_PAL_TAG_GRIMER}, + {gObjectEventPal_Muk, OBJ_EVENT_PAL_TAG_MUK}, + {gObjectEventPal_Shellder, OBJ_EVENT_PAL_TAG_SHELLDER}, + {gObjectEventPal_Cloyster, OBJ_EVENT_PAL_TAG_CLOYSTER}, + {gObjectEventPal_Gastly, OBJ_EVENT_PAL_TAG_GASTLY}, + {gObjectEventPal_Haunter, OBJ_EVENT_PAL_TAG_HAUNTER}, + {gObjectEventPal_Gengar, OBJ_EVENT_PAL_TAG_GENGAR}, + {gObjectEventPal_Onix, OBJ_EVENT_PAL_TAG_ONIX}, + {gObjectEventPal_Drowzee, OBJ_EVENT_PAL_TAG_DROWZEE}, + {gObjectEventPal_Hypno, OBJ_EVENT_PAL_TAG_HYPNO}, + {gObjectEventPal_Krabby, OBJ_EVENT_PAL_TAG_KRABBY}, + {gObjectEventPal_Kingler, OBJ_EVENT_PAL_TAG_KINGLER}, + {gObjectEventPal_Voltorb, OBJ_EVENT_PAL_TAG_VOLTORB}, + {gObjectEventPal_Electrode, OBJ_EVENT_PAL_TAG_ELECTRODE}, + {gObjectEventPal_Exeggcute, OBJ_EVENT_PAL_TAG_EXEGGCUTE}, + {gObjectEventPal_Exeggutor, OBJ_EVENT_PAL_TAG_EXEGGUTOR}, + {gObjectEventPal_Cubone, OBJ_EVENT_PAL_TAG_CUBONE}, + {gObjectEventPal_Marowak, OBJ_EVENT_PAL_TAG_MAROWAK}, + {gObjectEventPal_Hitmonlee, OBJ_EVENT_PAL_TAG_HITMONLEE}, + {gObjectEventPal_Hitmonchan, OBJ_EVENT_PAL_TAG_HITMONCHAN}, + {gObjectEventPal_Lickitung, OBJ_EVENT_PAL_TAG_LICKITUNG}, + {gObjectEventPal_Koffing, OBJ_EVENT_PAL_TAG_KOFFING}, + {gObjectEventPal_Weezing, OBJ_EVENT_PAL_TAG_WEEZING}, + {gObjectEventPal_Rhyhorn, OBJ_EVENT_PAL_TAG_RHYHORN}, + {gObjectEventPal_Rhydon, OBJ_EVENT_PAL_TAG_RHYDON}, + {gObjectEventPal_Chansey, OBJ_EVENT_PAL_TAG_CHANSEY}, + {gObjectEventPal_Tangela, OBJ_EVENT_PAL_TAG_TANGELA}, + {gObjectEventPal_Kangaskhan, OBJ_EVENT_PAL_TAG_KANGASKHAN}, + {gObjectEventPal_Horsea, OBJ_EVENT_PAL_TAG_HORSEA}, + {gObjectEventPal_Seadra, OBJ_EVENT_PAL_TAG_SEADRA}, + {gObjectEventPal_Goldeen, OBJ_EVENT_PAL_TAG_GOLDEEN}, + {gObjectEventPal_Seaking, OBJ_EVENT_PAL_TAG_SEAKING}, + {gObjectEventPal_Staryu, OBJ_EVENT_PAL_TAG_STARYU}, + {gObjectEventPal_Starmie, OBJ_EVENT_PAL_TAG_STARMIE}, + {gObjectEventPal_Mr_Mime, OBJ_EVENT_PAL_TAG_MR_MIME}, + {gObjectEventPal_Scyther, OBJ_EVENT_PAL_TAG_SCYTHER}, + {gObjectEventPal_Jynx, OBJ_EVENT_PAL_TAG_JYNX}, + {gObjectEventPal_Electabuzz, OBJ_EVENT_PAL_TAG_ELECTABUZZ}, + {gObjectEventPal_Magmar, OBJ_EVENT_PAL_TAG_MAGMAR}, + {gObjectEventPal_Pinsir, OBJ_EVENT_PAL_TAG_PINSIR}, + {gObjectEventPal_Tauros, OBJ_EVENT_PAL_TAG_TAUROS}, + {gObjectEventPal_Magikarp, OBJ_EVENT_PAL_TAG_MAGIKARP}, + {gObjectEventPal_Gyarados, OBJ_EVENT_PAL_TAG_GYARADOS}, + {gObjectEventPal_Lapras, OBJ_EVENT_PAL_TAG_LAPRAS}, + {gObjectEventPal_Ditto, OBJ_EVENT_PAL_TAG_DITTO}, + {gObjectEventPal_Eevee, OBJ_EVENT_PAL_TAG_EEVEE}, + {gObjectEventPal_Vaporeon, OBJ_EVENT_PAL_TAG_VAPOREON}, + {gObjectEventPal_Jolteon, OBJ_EVENT_PAL_TAG_JOLTEON}, + {gObjectEventPal_Flareon, OBJ_EVENT_PAL_TAG_FLAREON}, + {gObjectEventPal_Porygon, OBJ_EVENT_PAL_TAG_PORYGON}, + {gObjectEventPal_Omanyte, OBJ_EVENT_PAL_TAG_OMANYTE}, + {gObjectEventPal_Omastar, OBJ_EVENT_PAL_TAG_OMASTAR}, + {gObjectEventPal_Kabuto, OBJ_EVENT_PAL_TAG_KABUTO}, + {gObjectEventPal_Kabutops, OBJ_EVENT_PAL_TAG_KABUTOPS}, + {gObjectEventPal_Aerodactyl, OBJ_EVENT_PAL_TAG_AERODACTYL}, + {gObjectEventPal_Snorlax, OBJ_EVENT_PAL_TAG_SNORLAX}, + {gObjectEventPal_Articuno, OBJ_EVENT_PAL_TAG_ARTICUNO}, + {gObjectEventPal_Zapdos, OBJ_EVENT_PAL_TAG_ZAPDOS}, + {gObjectEventPal_Moltres, OBJ_EVENT_PAL_TAG_MOLTRES}, + {gObjectEventPal_Dratini, OBJ_EVENT_PAL_TAG_DRATINI}, + {gObjectEventPal_Dragonair, OBJ_EVENT_PAL_TAG_DRAGONAIR}, + {gObjectEventPal_Dragonite, OBJ_EVENT_PAL_TAG_DRAGONITE}, + {gObjectEventPal_Mewtwo, OBJ_EVENT_PAL_TAG_MEWTWO}, + {gObjectEventPal_Mew, OBJ_EVENT_PAL_TAG_MEW}, {}, }; @@ -1196,7 +1502,9 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId == OBJ_EVENT_ID_FOLLOWER) + return GetFollowerObjectId(); + else if (localId < OBJ_EVENT_ID_PLAYER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1343,7 +1651,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1361,10 +1669,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) @@ -1393,25 +1704,14 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) + if (spriteTemplate->paletteTag != 0xffff) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0); - } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + LoadObjectEventPalette(spriteTemplate->paletteTag); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1425,7 +1725,6 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -1438,7 +1737,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -1470,7 +1769,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 z) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) { struct ObjectEventTemplate objectEventTemplate; @@ -1560,7 +1859,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 z, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -1653,7 +1952,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -1691,7 +1990,6 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -1712,22 +2010,10 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == 0) + if (spriteTemplate.paletteTag != 0xffff) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + LoadObjectEventPalette(spriteTemplate.paletteTag); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -1747,7 +2033,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) if (subspriteTables != NULL) SetSubspriteTables(sprite, subspriteTables); - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; @@ -1780,7 +2065,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -1819,7 +2104,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -1874,7 +2159,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { u8 bard; @@ -2393,7 +2678,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -2807,6 +3092,38 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } +movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) + +bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = FALSE; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[1] = 1; + return TRUE; +} + movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -4695,8 +5012,9 @@ 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 != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) { + // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreZCoordsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -4844,6 +5162,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -4944,6 +5263,41 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } +bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) +{ + if(follower->currentCoords.x == player->currentCoords.x) + { + // Follower is south of player + if(follower->currentCoords.y > player->currentCoords.y) + { + gSprites[follower->spriteId].animNum = 5; + follower->facingDirection = DIR_NORTH; + } + // Follower is north of player + else + { + gSprites[follower->spriteId].animNum = 4; + follower->facingDirection = DIR_SOUTH; + } + } + else + { + // Follower is east of player + if(follower->currentCoords.x > player->currentCoords.x) + { + gSprites[follower->spriteId].animNum = 6; + follower->facingDirection = DIR_WEST; + } + // Follower is west of player + else + { + gSprites[follower->spriteId].animNum = 7; + follower->facingDirection = DIR_EAST; + } + } + return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); +} + dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -5086,7 +5440,8 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -5320,7 +5675,19 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 2) + { + sprite->data[7] = 2; + sprite->animNum = 4; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -5336,7 +5703,19 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 3) + { + sprite->data[7] = 3; + sprite->animNum = 5; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -5352,7 +5731,19 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 4) + { + sprite->data[7] = 4; + sprite->animNum = 6; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -5368,7 +5759,19 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 5) + { + sprite->data[7] = 5; + sprite->animNum = 7; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -5442,7 +5845,8 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; } return result; } @@ -5491,6 +5895,11 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -5508,6 +5917,11 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -5525,6 +5939,11 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -5542,6 +5961,11 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = -8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -5605,7 +6029,19 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 6) + { + sprite->data[7] = 6; + sprite->animNum = 20; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -5621,7 +6057,19 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 7) + { + sprite->data[7] = 7; + sprite->animNum = 21; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -5637,7 +6085,19 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 8) + { + sprite->data[7] = 8; + sprite->animNum = 22; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -5653,7 +6113,19 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 9) + { + sprite->data[7] = 9; + sprite->animNum = 23; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -8586,7 +9058,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); @@ -8764,6 +9236,30 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite * MovementAction_Fly_Finish, }; +u8 (*const gMovementActionFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_Step0, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceSouth[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_FaceSouth_Step0, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceNorth[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_FaceNorth_Step0, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceWest[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_FaceWest_Step0, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_FaceEast_Step0, + MovementAction_Finish, +}; + u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { bool32 ableToStore = FALSE; @@ -8932,8 +9428,115 @@ u8 MovementAction_FlyDown_Step1(struct ObjectEvent *objectEvent, struct Sprite * return FALSE; } +u8 MovementAction_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + switch(sprite->animNum % 4) + { + case 0: + case 1: + sprite->x2 = 0; + break; + case 2: + sprite->x2 = 8; + break; + case 3: + sprite->x2 = -8; + break; + } + if(sprite->data[7] != 1) + { + sprite->data[7] = 1; + sprite->animPaused = FALSE; + if(sprite->animNum > 3) + sprite->animNum = sprite->animNum % 4; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + return FALSE; +} + +void RecreateObjectEvent(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 newSpriteId; + struct ObjectEventTemplate clone; + struct ObjectEvent backupFollower = *objectEvent; + backupFollower.graphicsId = objectEvent->graphicsId; + DestroySprite(sprite); + RemoveObjectEvent(objectEvent); + + clone = *GetObjectEventTemplateByLocalIdAndMap(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup); + clone.graphicsId = objectEvent->graphicsId; + + objectEvent = &gObjectEvents[TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y)]; + newSpriteId = objectEvent->spriteId; + *objectEvent = backupFollower; + objectEvent->spriteId = newSpriteId; +} + +u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + RecreateObjectEvent(objectEvent, sprite); + sprite->animNum = 0; + MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + RecreateObjectEvent(objectEvent, sprite); + sprite->animNum = 1; + MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + RecreateObjectEvent(objectEvent, sprite); + sprite->animNum = 2; + sprite->x2 = 8; + MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + RecreateObjectEvent(objectEvent, sprite); + sprite->animNum = 3; + sprite->x2 = -8; + MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); + sprite->data[2]++; + return FALSE; +} + // though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it. u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *sprite) { return TRUE; } + +// NEW +u16 GetMiniStepCount(u8 speed) +{ + return (u16)sStepTimes[speed]; +} + +void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) +{ + sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); +} + +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) + return TRUE; + + return FALSE; +} diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 8d6b564d2..ce2e9e000 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -28,6 +28,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "wild_encounter.h" +#include "follow_me.h" #include "constants/event_bg.h" #include "constants/event_objects.h" #include "constants/field_poison.h" @@ -156,9 +157,41 @@ int ProcessPlayerFieldInput(struct FieldInput *input) { IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); + + if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT + && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0) + { + switch(playerDirection) + { + case 1: // South + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y - 16; + break; + case 2: // North + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y + 16; + break; + case 3: // West + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x + 16; + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; + break; + case 4: // East + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x - 16; + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; + break; + } + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; + } + if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } + else if(gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0x9E); + } + if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE) return TRUE; if (input->heldDirection && input->dpadDirection == playerDirection) @@ -306,6 +339,13 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 if (InTrainerHill() == TRUE) script = GetTrainerHillTrainerScript(); + else if (objectEventId == GetFollowerObjectId())//(gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_FOLLOWER) + { + if(gObjectEvents[objectEventId].invisible == FALSE) + script = GetFollowerScriptPointer(); + else + return NULL; + } else script = GetObjectEventScriptPointerByObjectEventId(objectEventId); diff --git a/src/field_effect.c b/src/field_effect.c index 3f0ba2455..951bc88f8 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -26,6 +26,7 @@ #include "trainer_pokemon_sprites.h" #include "trig.h" #include "util.h" +#include "follow_me.h" #include "constants/field_effects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" @@ -38,6 +39,7 @@ EWRAM_DATA s32 gFieldEffectArguments[8] = {0}; // Static type declarations +extern void FollowMe_WarpSetEnd(void); static void Task_PokecenterHeal(u8 taskId); static void PokecenterHealEffect_Init(struct Task *); static void PokecenterHealEffect_WaitForBallPlacement(struct Task *); @@ -1355,8 +1357,45 @@ static void Task_UseFly(u8 taskId) gFieldEffectArguments[0] = 0; FieldEffectStart(FLDEFF_USE_FLY); + + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + + if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) + { + if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) + { + // Move South + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); + } + else + { + // Move North + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); + } + } + else + { + if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) + { + // Move East + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); + } + else + { + // Move West + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); + } + } + } + task->data[0]++; } + + if (gSaveBlock2Ptr->follower.inProgress && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId])) + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; + if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -1535,6 +1574,7 @@ static bool8 FallWarpEffect_End(struct Task *task) UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); + FollowMe_WarpSetEnd(); return FALSE; } @@ -1586,6 +1626,7 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) task->tState++; task->data[2] = 0; task->data[3] = 0; + EscalatorMoveFollower(task->data[1]); if ((u8)task->tGoingUp == FALSE) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride @@ -1883,6 +1924,7 @@ static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct Ob gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); + FollowMe_WarpSetEnd(); return FALSE; } @@ -2269,6 +2311,31 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); + + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + switch(objectEvent->facingDirection) + { + case DIR_SOUTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 25); + break; + case DIR_NORTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 26); + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 27); + break; + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 28); + break; + } + } + if (task->tNumTurns < 12) task->tNumTurns++; task->tSpinDelay = 8 >> (task->tNumTurns >> 2); @@ -3010,6 +3077,38 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) SetPlayerAvatarFieldMove(); ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; + + if(gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + + if(objectEvent->currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) + { + if(objectEvent->currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) + { + // Move South + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); + } + else + { + // Move North + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); + } + } + else + { + if(objectEvent->currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) + { + // Move East + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); + } + else + { + // Move West + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); + } + } + } } } @@ -3022,6 +3121,9 @@ static void SurfFieldEffect_ShowMon(struct Task *task) gFieldEffectArguments[0] = task->tMonId | SHOW_MON_CRY_NO_DUCKING; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->tState++; + + if (gSaveBlock2Ptr->follower.inProgress) + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 3c0276a27..e2cf0bea1 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,6 +20,7 @@ #include "strings.h" #include "task.h" #include "tv.h" +#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -636,7 +637,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) { PlayerRun(direction); gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; @@ -1213,32 +1214,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) +u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1256,7 +1257,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1325,7 +1326,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1337,7 +1338,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; @@ -1350,7 +1351,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1388,6 +1389,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); + CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) @@ -1661,6 +1663,12 @@ static void Task_WaitStopSurfing(u8 taskId) ScriptContext2_Disable(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); DestroyTask(taskId); + + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], playerObjEvent->facingDirection + 7); + } } } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index eda146725..9f562131d 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -27,6 +27,7 @@ #include "sound.h" #include "start_menu.h" #include "task.h" +#include "follow_me.h" #include "text.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" @@ -42,8 +43,6 @@ static void FillPalBufferWhite(void); static void Task_ExitDoor(u8); static bool32 WaitForWeatherFadeIn(void); static void Task_SpinEnterWarp(u8 taskId); -static void Task_WarpAndLoadMap(u8 taskId); -static void Task_DoDoorWarp(u8 taskId); static void Task_EnableScriptAfterMusicFade(u8 taskId); // data[0] is used universally by tasks in this file as a state for switches @@ -111,7 +110,7 @@ void WarpFadeOutScreen(void) } } -static void SetPlayerVisibility(bool8 visible) +void SetPlayerVisibility(bool8 visible) { SetPlayerInvisibility(!visible); } @@ -275,6 +274,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); SetUpWarpExitTask(); + FollowMe_WarpSetEnd(); ScriptContext2_Enable(); } @@ -323,6 +323,7 @@ static void Task_ExitDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -352,6 +353,8 @@ static void Task_ExitDoor(u8 taskId) case 3: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 4; } @@ -372,6 +375,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -390,6 +394,8 @@ static void Task_ExitNonAnimDoor(u8 taskId) case 2: if (IsPlayerStandingStill()) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 3; } @@ -643,7 +649,7 @@ void ReturnFromLinkRoom(void) CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } -static void Task_WarpAndLoadMap(u8 taskId) +void Task_WarpAndLoadMap(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -674,59 +680,6 @@ static void Task_WarpAndLoadMap(u8 taskId) } } -static void Task_DoDoorWarp(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - s16 *x = &task->data[2]; - s16 *y = &task->data[3]; - - switch (task->tState) - { - case 0: - FreezeObjectEvents(); - PlayerGetDestCoords(x, y); - PlaySE(GetDoorSoundEffect(*x, *y - 1)); - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); - task->tState = 1; - break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - u8 objEventId; - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP); - task->tState = 2; - } - break; - case 2: - if (IsPlayerStandingStill()) - { - u8 objEventId; - task->data[1] = FieldAnimateDoorClose(*x, *y - 1); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); - SetPlayerVisibility(FALSE); - task->tState = 3; - } - break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - task->tState = 4; - } - break; - case 4: - TryFadeOutOldMapMusic(); - WarpFadeOutScreen(); - PlayRainStoppingSoundEffect(); - task->tState = 0; - task->func = Task_WarpAndLoadMap; - break; - } -} - static void Task_DoContestHallWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1010,6 +963,7 @@ static void Task_SpinEnterWarp(u8 taskId) case 1: if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE) { + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); ScriptContext2_Disable(); DestroyTask(taskId); diff --git a/src/field_specials.c b/src/field_specials.c index d97a17a7d..aca6a59b9 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 graphicsId, u8 localEventId, u8 paletteNum); +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum); static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId); static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId); static void Task_PCTurnOnEffect(u8); @@ -502,7 +502,7 @@ void SpawnLinkPartnerObjectEvent(void) }; u8 myLinkPlayerNumber; u8 playerFacingDirection; - u8 linkSpriteId; + u16 linkSpriteId; u8 i; myLinkPlayerNumber = GetMultiplayerId(); @@ -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. @@ -1498,6 +1498,21 @@ u8 GetLeadMonIndex(void) return 0; } +u8 GetLeadMonNotFaintedIndex(void) +{ + u8 i; + u8 partyCount = CalculatePlayerPartyCount(); + for(i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0 + && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) + { + return i; + } + } + return 0; +} + u16 ScriptGetPartyMonSpecies(void) { return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 6f4ce8002..1cadf051a 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -29,7 +29,7 @@ static void FieldCallback_RockSmash(void); static void FieldMove_RockSmash(void); // text -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId) +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId) { u8 objEventId; diff --git a/src/follow_me.c b/src/follow_me.c new file mode 100644 index 000000000..157af8152 --- /dev/null +++ b/src/follow_me.c @@ -0,0 +1,1472 @@ +#include "global.h" +#include "follow_me.h" +#include "event_object_movement.h" +#include "field_door.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "field_player_avatar.h" +#include "field_control_avatar.h" +#include "field_screen_effect.h" +#include "field_weather.h" +#include "fieldmap.h" +#include "fldeff_misc.h" +#include "item.h" +#include "task.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "script.h" +#include "event_data.h" +#include "sound.h" +#include "trig.h" +#include "metatile_behavior.h" +#include "constants/event_object_movement.h" +#include "constants/event_objects.h" +#include "constants/songs.h" +#include "constants/map_types.h" +#include "constants/field_effects.h" +#include "constants/metatile_behaviors.h" +/* + -FollowMe_StairsMoveHook ? + -FollowMe_WarpStairsEndHook ? +*/ + +/* +Known Issues: + -follower gets messed up if you go into a map with a maximum number of event objects + -inherits incorrect palette, may get directionally confused +*/ + +// Defines +#define PLAYER_AVATAR_FLAG_BIKE PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE + +struct FollowerSpriteGraphics +{ + u16 normalId; + u16 machBikeId; + u16 acroBikeId; + u16 surfId; + u16 underwaterId; +}; + +// EWRAM +//EWRAM_DATA struct Follower gSaveBlock2Ptr->follower = {0}; + +// Function Declarations +static u8 GetFollowerMapObjId(void); +static u16 GetFollowerSprite(void); +static void TryUpdateFollowerSpriteUnderwater(void); +static void Task_ReallowPlayerMovement(u8 taskId); +static u8 DetermineFollowerDirection(struct ObjectEvent* player, struct ObjectEvent* follower); +static void PlayerLogCoordinates(struct ObjectEvent* player); +static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 direction); +static bool8 IsStateMovement(u8 state); +static u8 ReturnFollowerDelayedState(u8 direction); +static void SetSurfJump(void); +static void Task_BindSurfBlobToFollower(u8 taskId); +static void SetUpSurfBlobFieldEffect(struct ObjectEvent* npc); +static void SetSurfDismount(void); +static void Task_FinishSurfDismount(u8 taskId); +static void Task_FollowerOutOfDoor(u8 taskId); +static void Task_FollowerHandleIndoorStairs(u8 taskId); +static void Task_FollowerHandleEscalator(u8 taskId); +static void Task_FollowerHandleEscalatorFinish(u8 taskId); +static void CalculateFollowerEscalatorTrajectoryUp(struct Task *task); +static void CalculateFollowerEscalatorTrajectoryDown(struct Task *task); +static void TurnNPCIntoFollower(u8 localId, u16 followerFlags); + +// Const Data +static const struct FollowerSpriteGraphics gFollowerAlternateSprites[] = +{ + //FORMAT: + //{WALKING/RUNNING SPRITE ID, MACH BIKE SPRITE ID, ACRO BIKE SPRITE ID, SURFING SPRITE ID}, + [0] = + { + .normalId = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL, + .machBikeId = OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE, + .acroBikeId = OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE, + .surfId = OBJ_EVENT_GFX_RIVAL_MAY_SURFING, + .underwaterId = OBJ_EVENT_GFX_MAY_UNDERWATER, + }, + +}; + +// Functions +u8 GetFollowerObjectId(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return OBJECT_EVENTS_COUNT; + + return gSaveBlock2Ptr->follower.objId; +} + +u8 GetFollowerLocalId(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return 0; + + return gObjectEvents[gSaveBlock2Ptr->follower.objId].localId; +} + +const u8* GetFollowerScriptPointer(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return NULL; + + return gSaveBlock2Ptr->follower.script; +} + +void HideFollower(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + if (gSaveBlock2Ptr->follower.createSurfBlob == 2 || gSaveBlock2Ptr->follower.createSurfBlob == 3) + { + SetSurfBlob_BobState(gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId, 2); + DestroySprite(&gSprites[gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId]); + gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId = 0; //Unbind + } + + gObjectEvents[GetFollowerMapObjId()].invisible = TRUE; +} + +/* +void IsFollowerStoppingRockClimb(void) +{ + gSpecialVar_Result = FALSE; + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + gSpecialVar_Result = (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_ROCK_CLIMB) == 0; +} +*/ + +void FollowMe_SetIndicatorToComeOutDoor(void) +{ + if (gSaveBlock2Ptr->follower.inProgress) + gSaveBlock2Ptr->follower.comeOutDoorStairs = 1; +} + +void FollowMe_SetIndicatorToRecreateSurfBlob(void) +{ + if (gSaveBlock2Ptr->follower.inProgress) + gSaveBlock2Ptr->follower.createSurfBlob = 2; +} + +void FollowMe_TryRemoveFollowerOnWhiteOut(void) +{ + if (gSaveBlock2Ptr->follower.inProgress) + { + if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CLEAR_ON_WHITE_OUT) + gSaveBlock2Ptr->follower.inProgress = FALSE; + else + FollowMe_WarpSetEnd(); + } +} + +static u8 GetFollowerMapObjId(void) +{ + return gSaveBlock2Ptr->follower.objId; +} + +static u16 GetFollowerSprite(void) +{ + u32 i; + + switch (gSaveBlock2Ptr->follower.currentSprite) + { + case FOLLOWER_SPRITE_INDEX_MACH_BIKE: + for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) + { + if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) + return gFollowerAlternateSprites[i].machBikeId; + } + break; + case FOLLOWER_SPRITE_INDEX_ACRO_BIKE: + for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) + { + if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) + return gFollowerAlternateSprites[i].acroBikeId; + } + break; + case FOLLOWER_SPRITE_INDEX_SURF: + for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) + { + if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) + return gFollowerAlternateSprites[i].surfId; + } + break; + case FOLLOWER_SPRITE_INDEX_UNDERWATER: + for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) + { + if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) + return gFollowerAlternateSprites[i].underwaterId; + } + break; + } + + return gSaveBlock2Ptr->follower.graphicsId; +} + +static void TryUpdateFollowerSpriteUnderwater(void) +{ + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + { + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_UNDERWATER); + + follower = &gObjectEvents[GetFollowerMapObjId()]; //Can change on reload sprite + follower->fieldEffectSpriteId = StartUnderwaterSurfBlobBobbing(follower->spriteId); + } +} + +//Actual Follow Me +void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) +{ + struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + u8 dir; + u8 newState; + u8 taskId; + + if (player != npc) //Only when the player moves + return; + else if (!gSaveBlock2Ptr->follower.inProgress) + return; + else if (ScriptContext2_IsEnabled() && !ignoreScriptActive) + return; //Don't follow during a script + + + // fix post-surf jump + if ((gSaveBlock2Ptr->follower.currentSprite == FOLLOWER_SPRITE_INDEX_SURF) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) && follower->fieldEffectSpriteId == 0) + { + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); + gSaveBlock2Ptr->follower.createSurfBlob = 0; + } + + //Check if state would cause hidden follower to reappear + if (IsStateMovement(state) && gSaveBlock2Ptr->follower.warpEnd) + { + gSaveBlock2Ptr->follower.warpEnd = 0; + + if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) + { + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerOutOfDoor, 1); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = follower->currentCoords.x; + gTasks[taskId].data[3] = follower->currentCoords.y; + goto RESET; + } + else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) + { + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + } + + // This makes sure the follower is still invisible after diving or surfacing + if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))) + follower->invisible = FALSE; + MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); + ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding + + /*if (gSaveBlock2Ptr->follower.createSurfBlob == 2) //Recreate surf blob + { + SetUpSurfBlobFieldEffect(follower); + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); + } + else + { + TryUpdateFollowerSpriteUnderwater(); + }*/ + } + + dir = DetermineFollowerDirection(player, follower); + + if (dir == DIR_NONE) + goto RESET; + + newState = DetermineFollowerState(follower, state, dir); + if (newState == MOVEMENT_INVALID) + goto RESET; + + /*if (gSaveBlock2Ptr->follower.createSurfBlob == 1) //Get on Surf Blob + { + gSaveBlock2Ptr->follower.createSurfBlob = 2; + gPlayerAvatar.preventStep = TRUE; //Wait for finish + SetSurfJump(); + goto RESET; + } + else if (gSaveBlock2Ptr->follower.createSurfBlob == 3) //Get off Surf Blob + { + gSaveBlock2Ptr->follower.createSurfBlob = 0; + gPlayerAvatar.preventStep = TRUE; //Wait for finish + SetSurfDismount(); + goto RESET; + }*/ + + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, newState); + PlayerLogCoordinates(player); + + switch (newState) + { + case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: + if(follower->invisible == FALSE) + { + CreateTask(Task_ReallowPlayerMovement, 1); //Synchronize movements on stairs and ledges + gPlayerAvatar.preventStep = TRUE; //allow follower to catch up + } + } + +RESET: + ObjectEventClearHeldMovementIfFinished(follower); +} + +static void Task_ReallowPlayerMovement(u8 taskId) +{ + bool8 animStatus = ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetFollowerMapObjId()]); + if (animStatus == 0) + { + /*if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) + && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running*/ + return; + } + + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); +} + +static u8 DetermineFollowerDirection(struct ObjectEvent* player, struct ObjectEvent* follower) +{ + //Move the follower towards the player + s8 delta_x = follower->currentCoords.x - player->currentCoords.x; + s8 delta_y = follower->currentCoords.y - player->currentCoords.y; + + if (delta_x < 0) + return DIR_EAST; + else if (delta_x > 0) + return DIR_WEST; + + if (delta_y < 0) + return DIR_SOUTH; + else if (delta_y > 0) + return DIR_NORTH; + + return DIR_NONE; +} + +static void PlayerLogCoordinates(struct ObjectEvent* player) +{ + gSaveBlock2Ptr->follower.log.x = player->currentCoords.x; + gSaveBlock2Ptr->follower.log.y = player->currentCoords.y; +} + +#define RETURN_STATE(state, dir) return newState == MOVEMENT_INVALID ? state + (dir - 1) : ReturnFollowerDelayedState(dir - 1); +static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 direction) +{ + u8 newState = MOVEMENT_INVALID; + #if SIDEWAYS_STAIRS_IMPLEMENTED == TRUE + u8 collision = COLLISION_NONE; + s16 followerX = follower->currentCoords.x; + s16 followerY = follower->currentCoords.y; + u8 currentBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); + u8 nextBehavior; + + MoveCoords(direction, &followerX, &followerY); + nextBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); + #endif + + if (IsStateMovement(state) && gSaveBlock2Ptr->follower.delayedState) + newState = gSaveBlock2Ptr->follower.delayedState + direction; + + //Clear ice tile stuff + follower->disableAnim = FALSE; //follower->field1 &= 0xFB; + + #if SIDEWAYS_STAIRS_IMPLEMENTED == TRUE + // clear overwrite movement + follower->directionOverwrite = DIR_NONE; + + //sideways stairs checks + collision = GetSidewaysStairsCollision(follower, direction, currentBehavior, nextBehavior, collision); + switch (collision) + { + case COLLISION_SIDEWAYS_STAIRS_TO_LEFT: + follower->directionOverwrite = GetLeftSideStairsDirection(direction); + break; + case COLLISION_SIDEWAYS_STAIRS_TO_RIGHT: + follower->directionOverwrite = GetRightSideStairsDirection(direction); + break; + } + #endif + + switch (state) + { + case MOVEMENT_ACTION_WALK_SLOW_DOWN ... MOVEMENT_ACTION_WALK_SLOW_RIGHT: + // Slow walk + RETURN_STATE(MOVEMENT_ACTION_WALK_SLOW_DOWN, direction); + + case MOVEMENT_ACTION_WALK_NORMAL_DOWN ... MOVEMENT_ACTION_WALK_NORMAL_RIGHT: + // normal walk + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: + // If the follower is invisible due to bike riding, just walk + if(follower->invisible == FALSE) + { + // Ledge jump + if (((newState - direction) >= MOVEMENT_ACTION_JUMP_2_DOWN && (newState - direction) <= MOVEMENT_ACTION_JUMP_2_RIGHT) + || ((newState - direction) >= 0x84 && (newState - direction) <= 0x87)) //Previously jumped + { + newState = MOVEMENT_INVALID; + RETURN_STATE(MOVEMENT_ACTION_JUMP_2_DOWN, direction); //Jump right away + } + + gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_2_DOWN; + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + } + else + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + case MOVEMENT_ACTION_WALK_FAST_DOWN ... MOVEMENT_ACTION_WALK_FAST_RIGHT: + // Handle player on waterfall + if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && (state == MOVEMENT_ACTION_WALK_FAST_UP)) + return MOVEMENT_INVALID; + + //Handle ice tile (some walking animation) - Set a bit to freeze the follower's animation + if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) + follower->disableAnim = TRUE; + + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + + case MOVEMENT_ACTION_WALK_FASTER_DOWN ... MOVEMENT_ACTION_WALK_FASTER_RIGHT: + // mach bike + if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) + follower->disableAnim = TRUE; + + RETURN_STATE(MOVEMENT_ACTION_WALK_FASTER_DOWN, direction); + + // acro bike + case MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN ... MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT: + // Handle player on waterfall + if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && IsPlayerSurfingNorth()) + //if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && (state == MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN)) + return MOVEMENT_INVALID; + + RETURN_STATE(MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, direction); //regular movement + + + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT: + if(follower->invisible == FALSE) + { + switch(state) + { + case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN, direction); + case MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN, direction); + case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN, direction); + case MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, direction); + } + } + else + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + // Sliding + case MOVEMENT_ACTION_SLIDE_DOWN ... MOVEMENT_ACTION_SLIDE_RIGHT: + RETURN_STATE(MOVEMENT_ACTION_SLIDE_DOWN, direction); + case MOVEMENT_ACTION_PLAYER_RUN_DOWN ... MOVEMENT_ACTION_PLAYER_RUN_RIGHT: + //Running frames + if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_HAS_RUNNING_FRAMES) + RETURN_STATE(MOVEMENT_ACTION_PLAYER_RUN_DOWN, direction); + + RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); + case MOVEMENT_ACTION_JUMP_SPECIAL_DOWN ... MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT: + gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN; + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: + if(gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE) + gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_DOWN; + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + + // run slow + #ifdef MOVEMENT_ACTION_RUN_DOWN_SLOW + case MOVEMENT_ACTION_RUN_DOWN_SLOW ... MOVEMENT_ACTION_RUN_RIGHT_SLOW: + if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_HAS_RUNNING_FRAMES) + RETURN_STATE(MOVEMENT_ACTION_RUN_DOWN_SLOW, direction); + + RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); + #endif + + default: + return MOVEMENT_INVALID; + } + + return newState; +} + +static bool8 IsStateMovement(u8 state) +{ + switch (state) + { + case MOVEMENT_ACTION_FACE_DOWN: + case MOVEMENT_ACTION_FACE_UP: + case MOVEMENT_ACTION_FACE_LEFT: + case MOVEMENT_ACTION_FACE_RIGHT: + //case MOVEMENT_ACTION_FACE_DOWN_FAST: + //case MOVEMENT_ACTION_FACE_UP_FAST: + //case MOVEMENT_ACTION_FACE_LEFT_FAST: + //case MOVEMENT_ACTION_FACE_RIGHT_FAST: + case MOVEMENT_ACTION_DELAY_1: + case MOVEMENT_ACTION_DELAY_2: + case MOVEMENT_ACTION_DELAY_4: + case MOVEMENT_ACTION_DELAY_8: + case MOVEMENT_ACTION_DELAY_16: + case MOVEMENT_ACTION_FACE_PLAYER: + case MOVEMENT_ACTION_FACE_AWAY_PLAYER: + case MOVEMENT_ACTION_LOCK_FACING_DIRECTION: + case MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION: + case MOVEMENT_ACTION_SET_INVISIBLE: + case MOVEMENT_ACTION_SET_VISIBLE: + case MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK: + case MOVEMENT_ACTION_EMOTE_QUESTION_MARK: + case MOVEMENT_ACTION_EMOTE_HEART: + //case MOVEMENT_ACTION_EMOTE_CROSS: + //case MOVEMENT_ACTION_EMOTE_DOUBLE_EXCLAMATION_MARK: + //case MOVEMENT_ACTION_EMOTE_HAPPY: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN: + case MOVEMENT_ACTION_JUMP_IN_PLACE_UP: + case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP: + case MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN: + case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT: + case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT: + return FALSE; + } + + return TRUE; +} + +static u8 ReturnFollowerDelayedState(u8 direction) +{ + u8 newState = gSaveBlock2Ptr->follower.delayedState; + gSaveBlock2Ptr->follower.delayedState = 0; + + /* + #ifdef MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT + switch (newState) + { + case MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT ... MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_DOWN_RIGHT: + case MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT_RUNNING ... MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_DOWN_RIGHT_RUNNING: + case MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP_LEFT ... MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN_RIGHT: + return newState; //Each its own movement, so don't modify direction + } + #endif + */ + + return newState + direction; +} + +#define LEDGE_FRAMES_MULTIPLIER 2 + +//extern void (**stepspeeds[5])(struct Sprite*, u8); +//extern const u16 stepspeed_seq_length[5]; +void FollowMe_Ledges(struct ObjectEvent* npc, struct Sprite* sprite, u16* ledgeFramesTbl) +{ + u8 speed; + u16 frameCount; + u8 currentFrame; + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + if (follower == npc) + speed = gPlayerAvatar.runningState ? 3 : 1; + else + speed = 0; + + //Calculate the frames for the jump + frameCount = GetMiniStepCount(speed) * LEDGE_FRAMES_MULTIPLIER; //in event_object_movement.c + ledgeFramesTbl[sprite->data[4]] = frameCount; + + //Call the step shifter + currentFrame = sprite->data[6] / LEDGE_FRAMES_MULTIPLIER; + //stepspeeds[speed][currentFrame](sprite, sprite->data[3]); + RunMiniStep(sprite, speed, currentFrame); //in event_object_movement.c +} + +bool8 FollowMe_IsCollisionExempt(struct ObjectEvent* obstacle, struct ObjectEvent* collider) +{ + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + if (!gSaveBlock2Ptr->follower.inProgress) + return FALSE; + + if (obstacle == follower && collider == player) + return TRUE; + + return FALSE; +} + +/*void FollowMe_FollowerToWater(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + //Prepare for making the follower do the jump and spawn the surf head + //right in front of the follower's location. + FollowMe(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_JUMP_DOWN, TRUE); + gSaveBlock2Ptr->follower.createSurfBlob = 1; +}*/ + +/*void FollowMe_BindToSurbBlobOnReloadScreen(void) +{ + struct ObjectEvent* follower; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + follower = &gObjectEvents[GetFollowerMapObjId()]; + TryUpdateFollowerSpriteUnderwater(); + + if (gSaveBlock2Ptr->follower.createSurfBlob != 2 && gSaveBlock2Ptr->follower.createSurfBlob != 3) + return; + + //Spawn surfhead under follower + SetUpSurfBlobFieldEffect(follower); + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); +}*/ + +/*static void SetSurfJump(void) +{ + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + u8 direction; + u8 jumpState; + + //Reset NPC movement bits + ObjectEventClearHeldMovement(follower); + + //Jump animation according to direction + direction = DetermineFollowerDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); + jumpState = GetJumpMovementAction(direction); + SetUpSurfBlobFieldEffect(follower); + + //Adjust surf head spawn location infront of follower + switch (direction) + { + case DIR_SOUTH: + gFieldEffectArguments[1]++; //effect_y + break; + case DIR_NORTH: + gFieldEffectArguments[1]--; + break; + case DIR_WEST: + gFieldEffectArguments[0]--; //effect_x + break; + default: //DIR_EAST + gFieldEffectArguments[0]++; + }; + + //Execute, store sprite ID in fieldEffectSpriteId and bind surf blob + follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); + CreateTask(Task_BindSurfBlobToFollower, 0x1); + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_SURF); + + follower = &gObjectEvents[GetFollowerMapObjId()]; + ObjectEventSetHeldMovement(follower, jumpState); +}*/ + +/*static void Task_BindSurfBlobToFollower(u8 taskId) +{ + struct ObjectEvent* npc = &gObjectEvents[GetFollowerMapObjId()]; + bool8 animStatus = ObjectEventClearHeldMovementIfFinished(npc); //Wait jump animation + if (animStatus == 0) + return; + + //Bind objs + SetSurfBlob_BobState(npc->fieldEffectSpriteId, 0x1); + UnfreezeObjectEvents(); + DestroyTask(taskId); + gPlayerAvatar.preventStep = FALSE; //Player can move again + return; +}*/ + +/*static void SetUpSurfBlobFieldEffect(struct ObjectEvent* npc) +{ + //Set up gFieldEffectArguments for execution + gFieldEffectArguments[0] = npc->currentCoords.x; //effect_x + gFieldEffectArguments[1] = npc->currentCoords.y; //effect_y + gFieldEffectArguments[2] = gSaveBlock2Ptr->follower.objId; //objId +}*/ + +/*void PrepareFollowerDismountSurf(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + FollowMe(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_WALK_NORMAL_DOWN, TRUE); + gSaveBlock2Ptr->follower.createSurfBlob = 3; +}*/ + +/*static void SetSurfDismount(void) +{ + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + u8 direction; + u8 jumpState; + u8 task; + + ObjectEventClearHeldMovement(follower); + + //Jump animation according to direction + direction = DetermineFollowerDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); + jumpState = GetJumpMovementAction(direction); + + //Unbind and destroy Surf Blob + task = CreateTask(Task_FinishSurfDismount, 1); + gTasks[task].data[0] = follower->fieldEffectSpriteId; + SetSurfBlob_BobState(follower->fieldEffectSpriteId, 2); + follower->fieldEffectSpriteId = 0; //Unbind + FollowMe_HandleSprite(); + + follower = &gObjectEvents[GetFollowerMapObjId()]; //Can change after sprite reload + ObjectEventSetHeldMovement(follower, jumpState); +}*/ + +/*static void Task_FinishSurfDismount(u8 taskId) +{ + struct ObjectEvent* npc = &gObjectEvents[GetFollowerMapObjId()]; + bool8 animStatus = ObjectEventClearHeldMovementIfFinished(npc); //Wait animation + + if (animStatus == 0) + { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running + + return; + } + + DestroySprite(&gSprites[gTasks[taskId].data[0]]); + UnfreezeObjectEvents(); + DestroyTask(taskId); + gPlayerAvatar.preventStep = FALSE; +}*/ + +void Task_DoDoorWarp(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + u8 playerObjId = gPlayerAvatar.objectEventId; + u8 followerObjId = GetFollowerObjectId(); + + switch (task->data[0]) + { + case 0: + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Stop running + + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; //Just in case came out and when right back in + FreezeObjectEvents(); + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y - 1)); + task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + ObjectEventClearHeldMovementIfActive(&gObjectEvents[playerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[playerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); + + if (gSaveBlock2Ptr->follower.inProgress && !gObjectEvents[followerObjId].invisible) + { + u8 newState = DetermineFollowerState(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP, + DetermineFollowerDirection(&gObjectEvents[playerObjId], &gObjectEvents[followerObjId])); + ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], newState); + } + + task->data[0] = 2; + } + break; + case 2: + if (IsPlayerStandingStill()) + { + if (!gSaveBlock2Ptr->follower.inProgress || gObjectEvents[followerObjId].invisible) //Don't close door on follower + task->data[1] = FieldAnimateDoorClose(*x, *y - 1); + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjId]); + SetPlayerVisibility(0); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + task->data[0] = 4; + } + break; + case 4: + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); + ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); + } + + TryFadeOutOldMapMusic(); + WarpFadeOutScreen(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = Task_WarpAndLoadMap; + break; + case 5: + TryFadeOutOldMapMusic(); + PlayRainStoppingSoundEffect(); + task->data[0] = 0; + task->func = Task_WarpAndLoadMap; + break; + } +} + +static u8 GetPlayerFaceToDoorDirection(struct ObjectEvent* player, struct ObjectEvent* follower) +{ + s16 delta_x = player->currentCoords.x - follower->currentCoords.x; + + if (delta_x < 0) + return DIR_EAST; + else if (delta_x > 0) + return DIR_WEST; + + return DIR_NORTH; +} + +static void Task_FollowerOutOfDoor(u8 taskId) +{ + struct ObjectEvent *follower = &gObjectEvents[GetFollowerMapObjId()]; + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + //if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(player)) + //SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running + + if (ObjectEventClearHeldMovementIfFinished(player)) + ObjectEventTurn(player, GetPlayerFaceToDoorDirection(player, follower)); //The player should face towards the follow as the exit the door + + switch (task->data[0]) + { + case 0: + FreezeObjectEvents(); + task->data[1] = FieldAnimateDoorOpen(follower->currentCoords.x, follower->currentCoords.y); + if (task->data[1] != -1) + PlaySE(GetDoorSoundEffect(*x, *y)); //only play SE for animating doors + + task->data[0] = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) //if Door isn't still opening + { + follower->invisible = FALSE; + ObjectEventTurn(follower, DIR_SOUTH); //The follower should be facing down when it comes out the door + follower->singleMovementActive = FALSE; + follower->heldMovementActive = FALSE; + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN); //follower step down + task->data[0] = 2; + } + break; + case 2: + if (/*ObjectEventClearHeldMovementIfFinished(follower)*/follower->movementActionId == 0x9E) + { + task->data[1] = FieldAnimateDoorClose(*x, *y); + task->data[0] = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) //Door is closed + { + UnfreezeObjectEvents(); + task->data[0] = 4; + } + break; + case 4: + FollowMe_HandleSprite(); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gPlayerAvatar.preventStep = FALSE; //Player can move again + DestroyTask(taskId); + break; + } +} + +void StairsMoveFollower(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + if (!FuncIsActiveTask(Task_FollowerHandleIndoorStairs) && gSaveBlock2Ptr->follower.comeOutDoorStairs != 2) + CreateTask(Task_FollowerHandleIndoorStairs, 1); +} + +static void Task_FollowerHandleIndoorStairs(u8 taskId) +{ + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + gSaveBlock2Ptr->follower.comeOutDoorStairs = 2; //So the task doesn't get created more than once + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, DetermineFollowerDirection(player, follower))); + task->data[0]++; + break; + case 1: + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, player->movementDirection)); + DestroyTask(taskId); + } + break; + } +} + +void EscalatorMoveFollower(u8 movementType) +{ + u8 taskId; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + taskId = CreateTask(Task_FollowerHandleEscalator, 1); + gTasks[taskId].data[1] = movementType; +} + +static void Task_FollowerHandleEscalator(u8 taskId) +{ + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; + + ObjectEventClearHeldMovementIfActive(follower); + ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, DetermineFollowerDirection(player, follower))); + DestroyTask(taskId); +} + +void EscalatorMoveFollowerFinish(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + CreateTask(Task_FollowerHandleEscalatorFinish, 1); +} + +static void Task_FollowerHandleEscalatorFinish(u8 taskId) +{ + s16 x, y; + struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; + struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Sprite* sprite = &gSprites[follower->spriteId]; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); + PlayerGetDestCoords(&x, &y); + task->data[2] = MapGridGetMetatileBehaviorAt(x, y); + task->data[7] = 0; + task->data[0]++; + break; + case 1: + if (task->data[7]++ < 0x20) //Wait half a second before revealing the follower + break; + + task->data[0]++; + task->data[1] = 16; + CalculateFollowerEscalatorTrajectoryUp(task); + gSaveBlock2Ptr->follower.warpEnd = 0; + gPlayerAvatar.preventStep = TRUE; + ObjectEventSetHeldMovement(follower, GetFaceDirectionMovementAction(DIR_EAST)); + if (task->data[2] == 0x6b) + task->data[0] = 4; + break; + case 2: + follower->invisible = FALSE; + CalculateFollowerEscalatorTrajectoryDown(task); + task->data[0]++; + break; + case 3: + CalculateFollowerEscalatorTrajectoryDown(task); + task->data[2]++; + if (task->data[2] & 1) + { + task->data[1]--; + } + + if (task->data[1] == 0) + { + sprite->x2 = 0; + sprite->y2 = 0; + task->data[0] = 6; + } + break; + case 4: + follower->invisible = FALSE; + CalculateFollowerEscalatorTrajectoryUp(task); + task->data[0]++; + break; + case 5: + CalculateFollowerEscalatorTrajectoryUp(task); + task->data[2]++; + if (task->data[2] & 1) + { + task->data[1]--; + } + + if (task->data[1] == 0) + { + sprite->x2 = 0; + sprite->y2 = 0; + task->data[0]++; + } + break; + case 6: + if (ObjectEventClearHeldMovementIfFinished(follower)) + { + gPlayerAvatar.preventStep = FALSE; + DestroyTask(taskId); + } + } +} + +static void CalculateFollowerEscalatorTrajectoryDown(struct Task *task) +{ + struct Sprite* sprite = &gSprites[gObjectEvents[GetFollowerMapObjId()].spriteId]; + + sprite->x2 = Cos(0x84, task->data[1]); + sprite->y2 = Sin(0x94, task->data[1]); +} + +static void CalculateFollowerEscalatorTrajectoryUp(struct Task *task) +{ + struct Sprite* sprite = &gSprites[gObjectEvents[GetFollowerMapObjId()].spriteId]; + + sprite->x2 = Cos(0x7c, task->data[1]); + sprite->y2 = Sin(0x76, task->data[1]); +} + +bool8 FollowerCanBike(void) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return TRUE; + else if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) + return TRUE; + else + return FALSE; +} + +void FollowMe_HandleBike(void) +{ + if (gSaveBlock2Ptr->follower.currentSprite == FOLLOWER_SPRITE_INDEX_SURF) //Follower is surfing + return; //Sprite will automatically be adjusted when they finish surfing + + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE && FollowerCanBike() && gSaveBlock2Ptr->follower.comeOutDoorStairs != 1) //Coming out door + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_MACH_BIKE); //Mach Bike on + else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE && FollowerCanBike() && gSaveBlock2Ptr->follower.comeOutDoorStairs != 1) //Coming out door + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_ACRO_BIKE); //Acro Bike on + else + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); +} + +void FollowMe_HandleSprite(void) +{ + if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) + { + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_MACH_BIKE); + else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_ACRO_BIKE); + } + else if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + { + TryUpdateFollowerSpriteUnderwater(); + } + else + { + SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); + } +} + +void SetFollowerSprite(u8 spriteIndex) +{ + u8 oldSpriteId; + u8 newSpriteId; + u16 newGraphicsId; + struct ObjectEventTemplate clone; + struct ObjectEvent backupFollower; + struct ObjectEvent *follower; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + if (gSaveBlock2Ptr->follower.currentSprite == spriteIndex && gObjectEvents[GetFollowerMapObjId()].invisible == FALSE) + return; + + //Save sprite + follower = &gObjectEvents[GetFollowerMapObjId()]; + gSaveBlock2Ptr->follower.currentSprite = spriteIndex; + oldSpriteId = follower->spriteId; + newGraphicsId = GetFollowerSprite(); + + //Reload the entire event object. + //It would usually be enough just to change the sprite Id, but if the original + //sprite and the new sprite have different palettes, the palette would need to + //be reloaded. + backupFollower = *follower; + backupFollower.graphicsId = newGraphicsId; + //backupFollower.graphicsIdUpperByte = newGraphicsId >> 8; + DestroySprite(&gSprites[oldSpriteId]); + RemoveObjectEvent(&gObjectEvents[GetFollowerMapObjId()]); + + clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); + clone.graphicsId = newGraphicsId; + //clone.graphicsIdUpperByte = newGraphicsId >> 8; + gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); + + follower = &gObjectEvents[GetFollowerMapObjId()]; + newSpriteId = follower->spriteId; + *follower = backupFollower; + follower->spriteId = newSpriteId; + MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); + ObjectEventTurn(follower, follower->facingDirection); +} + +void FollowMe_WarpSetEnd(void) +{ + struct ObjectEvent *player; + struct ObjectEvent *follower; + u8 toY; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + follower = &gObjectEvents[GetFollowerMapObjId()]; + + gSaveBlock2Ptr->follower.warpEnd = 1; + PlayerLogCoordinates(player); + + toY = gSaveBlock2Ptr->follower.comeOutDoorStairs == 1 ? (player->currentCoords.y - 1) : player->currentCoords.y; + MoveObjectEventToMapCoords(follower, player->currentCoords.x, toY); + + follower->facingDirection = player->facingDirection; + follower->movementDirection = player->movementDirection; +} + +void CreateFollowerAvatar(void) +{ + struct ObjectEvent* player; + struct ObjectEventTemplate clone; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); + + clone.graphicsId = GetFollowerSprite(); + //clone.graphicsIdUpperByte = GetFollowerSprite() >> 8; + clone.x = player->currentCoords.x - 7; + clone.y = player->currentCoords.y - 7; + clone.movementType = 0; //Doesn't get to move on its own + + switch (GetPlayerFacingDirection()) + { + case DIR_NORTH: + clone.movementType = MOVEMENT_TYPE_FACE_UP; + break; + case DIR_WEST: + clone.movementType = MOVEMENT_TYPE_FACE_LEFT; + break; + case DIR_EAST: + clone.movementType = MOVEMENT_TYPE_FACE_RIGHT; + break; + } + + // Create NPC and store ID + gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group, clone.x, clone.y); + if (gSaveBlock2Ptr->follower.objId == OBJECT_EVENTS_COUNT) + gSaveBlock2Ptr->follower.inProgress = FALSE; //Cancel the following because couldn't load sprite + + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + gSaveBlock2Ptr->follower.createSurfBlob = 0; + + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; +} + +static void TurnNPCIntoFollower(u8 localId, u16 followerFlags) +{ + struct ObjectEvent* follower; + u8 eventObjId; + const u8 *script; + u16 flag; + + if (gSaveBlock2Ptr->follower.inProgress) + return; //Only 1 NPC following at a time + + for (eventObjId = 0; eventObjId < OBJECT_EVENTS_COUNT; eventObjId++) //For each NPC on the map + { + if (!gObjectEvents[eventObjId].active || gObjectEvents[eventObjId].isPlayer) + continue; + + if (gObjectEvents[eventObjId].localId == localId) + { + follower = &gObjectEvents[eventObjId]; + follower->movementType = MOVEMENT_TYPE_NONE; //Doesn't get to move on its own anymore + gSprites[follower->spriteId].callback = MovementType_None; //MovementType_None + SetObjEventTemplateMovementType(localId, 0); + if (CheckFollowerFlag(FOLLOWER_FLAG_CUSTOM_FOLLOW_SCRIPT)) + script = (const u8 *)ReadWord(0); + else + script = GetObjectEventScriptPointerByObjectEventId(eventObjId); + + flag = GetObjectEventTemplateByLocalIdAndMap(follower->localId, follower->mapNum, follower->mapGroup)->flagId; + gSaveBlock2Ptr->follower.inProgress = TRUE; + gSaveBlock2Ptr->follower.objId = eventObjId; + gSaveBlock2Ptr->follower.graphicsId = follower->graphicsId; + gSaveBlock2Ptr->follower.map.id = gObjectEvents[eventObjId].localId; + gSaveBlock2Ptr->follower.map.number = gSaveBlock1Ptr->location.mapNum; + gSaveBlock2Ptr->follower.map.group = gSaveBlock1Ptr->location.mapGroup; + gSaveBlock2Ptr->follower.script = script; + gSaveBlock2Ptr->follower.flag = flag; + gSaveBlock2Ptr->follower.flags = followerFlags; + gSaveBlock2Ptr->follower.createSurfBlob = 0; + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + + if (!(gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) //Follower can't bike + && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) //Player on bike + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Dismmount Bike + } + } +} + +bool8 CheckFollowerFlag(u16 flag) +{ + if (!gSaveBlock2Ptr->follower.inProgress) + return TRUE; + + if (gSaveBlock2Ptr->follower.flags & flag) + return TRUE; + + return FALSE; +} + +static u8 GetPlayerMapObjId(void) +{ + return gPlayerAvatar.objectEventId; +} + +enum +{ + GoDown, + GoUp, + GoLeft, + GoRight +}; +void FollowerPositionFix(u8 offset) +{ + u8 playerObjId = GetPlayerMapObjId(); + u8 followerObjid = gSaveBlock2Ptr->follower.objId; + u16 playerX = gObjectEvents[playerObjId].currentCoords.x; + u16 playerY = gObjectEvents[playerObjId].currentCoords.y; + u16 npcX = gObjectEvents[followerObjid].currentCoords.x; + u16 npcY = gObjectEvents[followerObjid].currentCoords.y; + + gSpecialVar_Result = 0xFFFF; + + if (!gSaveBlock2Ptr->follower.inProgress) + return; + + if (playerX == npcX) + { + if (playerY > npcY) + { + if (playerY != npcY + offset) //Player and follower are not 1 tile apart + { + if (gSpecialVar_0x8000 == 0) + gSpecialVar_Result = GoDown; + else + gObjectEvents[followerObjid].currentCoords.y = playerY - offset; + } + } + else // Player Y <= npcY + { + if (playerY != npcY - offset) //Player and follower are not 1 tile apart + { + if (gSpecialVar_0x8000 == 0) + gSpecialVar_Result = GoUp; + else + gObjectEvents[followerObjid].currentCoords.y = playerY + offset; + } + } + } + else //playerY == npcY + { + if (playerX > npcX) + { + if (playerX != npcX + offset) //Player and follower are not 1 tile apart + { + if (gSpecialVar_0x8000 == 0) + gSpecialVar_Result = GoRight; + else + gObjectEvents[followerObjid].currentCoords.x = playerX - offset; + } + } + else // Player X <= npcX + { + if (playerX != npcX - offset) //Player and follower are not 1 tile apart + { + if (gSpecialVar_0x8000 == 0) + gSpecialVar_Result = GoLeft; + else + gObjectEvents[followerObjid].currentCoords.x = playerX + offset; + } + } + } +} + +void FollowerTrainerSightingPositionFix(void) +{ + FollowerPositionFix(1); +} + +void FollowerIntoPlayer(void) +{ + FollowerPositionFix(0); +} + +bool8 PlayerHasFollower(void) +{ + return gSaveBlock2Ptr->follower.inProgress; +} + +bool8 IsPlayerOnFoot(void) +{ + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT) + return TRUE; + else + return FALSE; +} + +bool8 FollowerComingThroughDoor(void) +{ + if (!PlayerHasFollower()) + return FALSE; + + if (gSaveBlock2Ptr->follower.comeOutDoorStairs) + return TRUE; + + return FALSE; +} + +//////////////////SCRIPTING//////////////////// +//@Details: Sets up the follow me feature. +//@Input: local id - NPC to start following player. +// flags - Follower flags. +void SetUpFollowerSprite(u8 localId, u16 flags) +{ + TurnNPCIntoFollower(localId, flags); +} + +//@Details: Ends the follow me feature. +void DestroyFollower(void) +{ + if (gSaveBlock2Ptr->follower.inProgress) + { + RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + FlagSet(gSaveBlock2Ptr->follower.flag); + gSaveBlock2Ptr->follower.inProgress = FALSE; + } +} + +//@Details: Faces the player and the follower sprite towards each other. +void PlayerFaceFollowerSprite(void) +{ + if (gSaveBlock2Ptr->follower.inProgress) + { + u8 playerDirection, followerDirection; + struct ObjectEvent* player, *follower; + + player = &gObjectEvents[gPlayerAvatar.objectEventId]; + follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + playerDirection = DetermineFollowerDirection(player, follower); + followerDirection = playerDirection; + + //Flip direction + switch (playerDirection) + { + case DIR_NORTH: + playerDirection = DIR_SOUTH; + followerDirection = DIR_NORTH; + break; + case DIR_SOUTH: + playerDirection = DIR_NORTH; + followerDirection = DIR_SOUTH; + break; + case DIR_WEST: + playerDirection = DIR_EAST; + followerDirection = DIR_WEST; + break; + case DIR_EAST: + playerDirection = DIR_WEST; + followerDirection = DIR_EAST; + break; + } + + ObjectEventTurn(player, playerDirection); + ObjectEventTurn(follower, followerDirection); + } +} + +//@Details: Checks if the player is being followed. +//@Returns: LastResult: 0 if the Player isn't being followed. 1 otherwise. +void CheckPlayerHasFollower(void) +{ + gSpecialVar_Result = gSaveBlock2Ptr->follower.inProgress; +} + +void ShowFollower(void) +{ + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; +} + diff --git a/src/new_game.c b/src/new_game.c index 077b86775..f22ca7940 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -203,6 +203,7 @@ void NewGameInitData(void) WipeTrainerNameRecords(); ResetTrainerHillResults(); ResetContestLinkResults(); + memset(&gSaveBlock2Ptr->follower, 0, sizeof(gSaveBlock2Ptr->follower)); } static void ResetMiniGamesRecords(void) diff --git a/src/overworld.c b/src/overworld.c index 4aa579fdd..476642381 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -59,6 +59,7 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" +#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -66,6 +67,7 @@ #include "constants/songs.h" #include "constants/trainer_hill.h" #include "constants/weather.h" +#include "constants/event_object_movement.h" struct CableClubPlayer { @@ -365,6 +367,7 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); + UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -414,6 +417,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } + + FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1447,6 +1452,10 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } + + // if stop running but keep holding B -> fix follower frame + if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) + ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1482,6 +1491,20 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); + + // Make sure follower's sprite is properly positioned when map reloads. + if (gSaveBlock2Ptr->follower.inProgress) + { + switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) + { + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + break; + } + } } void SetMainCallback1(MainCallback cb) @@ -1664,6 +1687,7 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; + UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2130,10 +2154,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2168,6 +2189,7 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); + FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -3219,3 +3241,47 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) sprite->data[7]++; } } + +void UpdateFollowerPokemonGraphic(void) +{ + // Loaded in case the player changed the species of the Pokemon in the lead of the party. + // If so, the following Pokemon needs to change. + u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; + struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) + { + // Sets the follower's graphic data to the proper following Pokemon graphic data + gSaveBlock2Ptr->follower.graphicsId = leadMonGraphicId; + + // Sets the current follower object's graphic data to the proper data. + // Necessary because, without it, the follower's sprite won't change until entering a loading zone. + follower->graphicsId = leadMonGraphicId; + + // Specifically for Pokemon Center, if lead Pokemon is revived, deletes old follower and creates new one + if(gSpecialVar_Unused_0x8014 == 1) + { + // Loop allows for creation of variables not at top of function + do + { + u8 newSpriteId; + struct ObjectEventTemplate clone; + struct ObjectEvent backupFollower = *follower; + backupFollower.graphicsId = gSaveBlock2Ptr->follower.graphicsId; + DestroySprite(&gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId]); + RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + + clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); + clone.graphicsId = gSaveBlock2Ptr->follower.graphicsId;; + gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); + + follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + newSpriteId = follower->spriteId; + *follower = backupFollower; + follower->spriteId = newSpriteId; + MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); + ObjectEventTurn(follower, follower->facingDirection); + gSpecialVar_Unused_0x8014 = 0; + } while(FALSE); + } + } +} diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 755cc7de0..c5918338e 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -647,6 +647,7 @@ static void SetMovingMonPriority(u8); static void SpriteCB_HeldMon(struct Sprite *); static struct Sprite *CreateMonIconSprite(u16, u32, s16, s16, u8, u8); static void DestroyBoxMonIcon(struct Sprite *); +extern void UpdateFollowerPokemonGraphic(void); // Pokémon data static void MoveMon(void); @@ -1706,6 +1707,7 @@ static void CB2_ExitPokeStorage(void) { sPreviousBoxOption = GetCurrentBoxOption(); gFieldCallback = FieldTask_ReturnToPcMenu; + UpdateFollowerPokemonGraphic(); SetMainCallback2(CB2_ReturnToField); } diff --git a/src/scrcmd.c b/src/scrcmd.c index 2c18cb565..0e70b4537 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1179,7 +1179,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 graphicsId = ScriptReadByte(ctx); + u16 graphicsId = ScriptReadByte(ctx); u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); u32 y = VarGet(ScriptReadHalfword(ctx)); @@ -2308,3 +2308,79 @@ bool8 ScrCmd_warpwhitefade(struct ScriptContext *ctx) ResetInitialPlayerAvatarState(); return TRUE; } + +bool8 ScrCmd_pokemonfaceplayer(struct ScriptContext *ctx) +{ + // The script will affect the following Pokemon if no argument is passed to it. + if(gSpecialVar_Unused_0x8014 == OBJ_EVENT_ID_FOLLOWER) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + ObjectEventPokemonFacePlayer(&gObjectEvents[gSaveBlock2Ptr->follower.objId], &gObjectEvents[gPlayerAvatar.objectEventId]); + } + // The script will affect an event object based on the local id passed to the script. + else + { + gSpecialVar_Unused_0x8014 = GetObjectEventIdByLocalIdAndMap(gSpecialVar_Unused_0x8014, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + ObjectEventClearHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014]); + + #define POW2(num) (num * num) + + // Checks to see whether the object is furthest away from the player along the x or y axis. + if(POW2((gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.x - gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x)) < POW2((gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.y - gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y))) + { + // Player is South of object + if(gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.y < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) + { + ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 159); + } + // Player is North of object + else + { + ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 160); + } + } + else + { + // Player is East of object + if(gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.x < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) + { + ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 162); + } + // Player is West of object + else + { + ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 161); + } + } + } + return TRUE; +} + +// follow me script commands +#include "follow_me.h" +bool8 ScrCmd_setfollower(struct ScriptContext *ctx) +{ + u8 localId = ScriptReadByte(ctx); + u8 flags = ScriptReadByte(ctx); + + SetUpFollowerSprite(localId, flags); + return FALSE; +} + +bool8 ScrCmd_destroyfollower(struct ScriptContext *ctx) +{ + DestroyFollower(); + return FALSE; +} + +bool8 ScrCmd_facefollower(struct ScriptContext *ctx) +{ + PlayerFaceFollowerSprite(); + return FALSE; +} + +bool8 ScrCmd_checkfollower(struct ScriptContext *ctx) +{ + CheckPlayerHasFollower(); + return FALSE; +} \ No newline at end of file diff --git a/src/script.c b/src/script.c index 4728e739c..20d8d2ef3 100644 --- a/src/script.c +++ b/src/script.c @@ -447,3 +447,10 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), NO_OBJECT); } + +u8* ReadWord(u8 index) +{ + struct ScriptContext *ctx = &sScriptContext1; + + return (T1_READ_PTR(&ctx->data[index])); +} From d330dfeb800aec7703ce2391835e8dd5bc209785 Mon Sep 17 00:00:00 2001 From: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sat, 8 Jan 2022 13:55:10 -0800 Subject: [PATCH 11/71] Fixed tap/spacing --- asm/macros/map.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/asm/macros/map.inc b/asm/macros/map.inc index c99167233..9097f72a4 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -16,11 +16,11 @@ .macro object_event index:req, gfx:req, replacement: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, 0 - .2byte \gfx + .2byte \gfx .2byte \x .2byte \y .byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 - .2byte \trainer_type, \sight_radius_tree_etc + .2byte \trainer_type, \sight_radius_tree_etc .4byte \script .2byte \event_flag .2byte 0 From 04c203b352bef6d08d36f3799d0c061d0a67dd51 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 9 Jan 2022 13:51:21 -0800 Subject: [PATCH 12/71] Fixed custom script error --- src/follow_me.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/follow_me.c b/src/follow_me.c index 157af8152..96a7f8fc3 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -1255,7 +1255,7 @@ static void TurnNPCIntoFollower(u8 localId, u16 followerFlags) follower->movementType = MOVEMENT_TYPE_NONE; //Doesn't get to move on its own anymore gSprites[follower->spriteId].callback = MovementType_None; //MovementType_None SetObjEventTemplateMovementType(localId, 0); - if (CheckFollowerFlag(FOLLOWER_FLAG_CUSTOM_FOLLOW_SCRIPT)) + if (followerFlags & FOLLOWER_FLAG_CUSTOM_FOLLOW_SCRIPT) script = (const u8 *)ReadWord(0); else script = GetObjectEventScriptPointerByObjectEventId(eventObjId); From 06ba6d767544602997100dbe4849425c5ef5f238 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 9 Jan 2022 21:26:29 -0800 Subject: [PATCH 13/71] Added custom footprints from Sonikku A and applied them to all Gen 1 Pokemon --- 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 | 6 + spritesheet_rules.mk | 9 ++ .../field_effect_object_template_pointers.h | 6 + src/data/field_effects/field_effect_objects.h | 47 +++++++ .../object_events/object_event_graphics.h | 3 + .../object_event_graphics_info.h | 122 +++++++++--------- src/event_object_movement.c | 75 +++++++++++ src/field_effect_helpers.c | 54 ++++++++ 13 files changed, 279 insertions(+), 61 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..277cbb376 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 @@ -128,6 +131,18 @@ gFieldEffectScript_JumpTallGrass:: gFieldEffectScript_SandFootprints:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints field_eff_end + +gFieldEffectScript_TracksBug:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug + field_eff_end + +gFieldEffectScript_TracksSpot:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot + field_eff_end + +gFieldEffectScript_TracksSlither:: @ 82DBBFF + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither + field_eff_end gFieldEffectScript_JumpBigSplash:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash 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 8c488a708..3dd15a7d9 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -427,6 +427,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 a62040947..b7195e2bd 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -68,6 +68,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 @@ -106,6 +109,9 @@ #define FLDEFFOBJ_BUBBLES 34 #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 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index a61e28e55..46e656c5a 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1076,6 +1076,15 @@ $(FLDEFFGFXDIR)/sand_disguise_placeholder.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/sand_footprints.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)/short_grass.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 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 598b88932..b0a509757 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), @@ -509,6 +539,23 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +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), +}; + +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 0042e162f..bd5d1e848 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -314,6 +314,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.h b/src/data/object_events/object_event_graphics_info.h index 5e0d06bc9..40afed1cc 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -253,21 +253,21 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, gDummySpriteAffineAnimTable}; @@ -284,17 +284,17 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_ODDISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_VILEPLUME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_PSYDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; @@ -306,63 +306,63 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWRATH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_ALAKAZAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLSPROUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_RAPIDASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_DROWZEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_MAROWAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYHORN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARYU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, gDummySpriteAffineAnimTable}; @@ -372,26 +372,26 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 236149bb6..268de7a24 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -81,6 +81,8 @@ static EWRAM_DATA u8 sCurrentReflectionType = 0; static EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0; static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; +extern void PlaySE(u16); +extern void PlaySE12WithPanning(u16, s8); static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static void SetMovementDelay(struct Sprite *, s16); @@ -116,6 +118,9 @@ 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_FootprintsBug(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent*, struct Sprite*); static void DoGroundEffects_OnSpawn(struct ObjectEvent*, struct Sprite*); @@ -8309,6 +8314,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_BUG] = DoTracksGroundEffect_FootprintsBug, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) @@ -8343,6 +8351,73 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[a]); } +static void DoTracksGroundEffect_FootprintsSpot(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsA_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_FootprintsBug(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsB_FieldEffectData[a]); +} + +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]; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { // Specifies which bike track shape to show next. diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 0acb15863..bb706ced4 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -583,6 +583,60 @@ u32 FldEff_SandFootprints(void) return 0; } +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_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; +} + u32 FldEff_DeepSandFootprints(void) { u8 spriteId; From 252023df2d0fd3424bd17c6c186e909151056247 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sat, 22 Jan 2022 18:27:41 -0800 Subject: [PATCH 14/71] Added Gen 2 sprites and allowed for more than 255 palettes --- gflib/sprite.c | 14 + .../palettes/followers/aipom.pal | 19 + .../palettes/followers/ampharos.pal | 19 + .../palettes/followers/ariados.pal | 19 + .../palettes/followers/azumarill.pal | 19 + .../palettes/followers/bayleef.pal | 19 + .../palettes/followers/bellossom.pal | 19 + .../palettes/followers/blissey.pal | 19 + .../palettes/followers/caterpie.pal | 2 +- .../palettes/followers/celebi.pal | 19 + .../palettes/followers/chikorita.pal | 19 + .../palettes/followers/chinchou.pal | 19 + .../palettes/followers/cleffa.pal | 19 + .../palettes/followers/corsola.pal | 19 + .../palettes/followers/crobat.pal | 19 + .../palettes/followers/croconaw.pal | 19 + .../palettes/followers/cyndaquil.pal | 19 + .../palettes/followers/delibird.pal | 19 + .../palettes/followers/donphan.pal | 19 + .../palettes/followers/dunsparce.pal | 19 + .../palettes/followers/ekans.pal | 2 +- .../palettes/followers/elekid.pal | 19 + .../palettes/followers/entei.pal | 19 + .../palettes/followers/espeon.pal | 19 + .../palettes/followers/feraligatr.pal | 19 + .../palettes/followers/flaaffy.pal | 19 + .../palettes/followers/forretress.pal | 19 + .../palettes/followers/furret.pal | 19 + .../palettes/followers/girafarig.pal | 19 + .../palettes/followers/gligar.pal | 19 + .../palettes/followers/granbull.pal | 19 + .../palettes/followers/heracross.pal | 19 + .../palettes/followers/hitmontop.pal | 19 + .../palettes/followers/ho_oh.pal | 19 + .../palettes/followers/hoothoot.pal | 19 + .../palettes/followers/hoppip.pal | 19 + .../palettes/followers/houndoom.pal | 19 + .../palettes/followers/houndour.pal | 19 + .../palettes/followers/igglybuff.pal | 19 + .../palettes/followers/jumpluff.pal | 19 + .../palettes/followers/kingdra.pal | 19 + .../palettes/followers/lanturn.pal | 19 + .../palettes/followers/larvitar.pal | 19 + .../palettes/followers/ledian.pal | 19 + .../palettes/followers/ledyba.pal | 19 + .../palettes/followers/lugia.pal | 19 + .../palettes/followers/magby.pal | 19 + .../palettes/followers/magcargo.pal | 19 + .../palettes/followers/mantine.pal | 19 + .../palettes/followers/mareep.pal | 19 + .../palettes/followers/marill.pal | 19 + .../palettes/followers/meganium.pal | 19 + .../palettes/followers/miltank.pal | 19 + .../palettes/followers/misdreavus.pal | 19 + .../palettes/followers/murkrow.pal | 19 + .../object_events/palettes/followers/natu.pal | 19 + .../palettes/followers/noctowl.pal | 19 + .../palettes/followers/octillery.pal | 19 + .../palettes/followers/phanpy.pal | 19 + .../palettes/followers/pichu.pal | 19 + .../palettes/followers/pidgeotto.pal | 2 +- .../palettes/followers/piloswine.pal | 19 + .../palettes/followers/pineco.pal | 19 + .../palettes/followers/politoed.pal | 19 + .../palettes/followers/porygon2.pal | 19 + .../palettes/followers/pupitar.pal | 19 + .../palettes/followers/quagsire.pal | 19 + .../palettes/followers/quilava.pal | 19 + .../palettes/followers/qwilfish.pal | 19 + .../palettes/followers/raikou.pal | 19 + .../palettes/followers/remoraid.pal | 19 + .../palettes/followers/scizor.pal | 19 + .../palettes/followers/sentret.pal | 19 + .../palettes/followers/shuckle.pal | 19 + .../palettes/followers/skarmory.pal | 19 + .../palettes/followers/skiploom.pal | 19 + .../palettes/followers/slowking.pal | 19 + .../palettes/followers/slugma.pal | 19 + .../palettes/followers/smeargle.pal | 19 + .../palettes/followers/smoochum.pal | 19 + .../palettes/followers/sneasel.pal | 19 + .../palettes/followers/snubbull.pal | 19 + .../palettes/followers/spinarak.pal | 19 + .../palettes/followers/stantler.pal | 19 + .../palettes/followers/steelix.pal | 19 + .../palettes/followers/sudowoodo.pal | 19 + .../palettes/followers/suicune.pal | 19 + .../palettes/followers/sunflora.pal | 19 + .../palettes/followers/sunkern.pal | 19 + .../palettes/followers/swinub.pal | 19 + .../palettes/followers/teddiursa.pal | 19 + .../palettes/followers/togepi.pal | 19 + .../palettes/followers/togetic.pal | 19 + .../palettes/followers/totodile.pal | 19 + .../palettes/followers/typhlosion.pal | 19 + .../palettes/followers/tyranitar.pal | 19 + .../palettes/followers/tyrogue.pal | 19 + .../palettes/followers/umbreon.pal | 19 + .../palettes/followers/unown.pal | 19 + .../palettes/followers/ursaring.pal | 19 + .../palettes/followers/wobbuffet.pal | 19 + .../palettes/followers/wooper.pal | 19 + .../object_events/palettes/followers/xatu.pal | 19 + .../palettes/followers/yanma.pal | 19 + .../pics/pokemon/followers/aipom.png | Bin 0 -> 798 bytes .../pics/pokemon/followers/ampharos.png | Bin 0 -> 775 bytes .../pics/pokemon/followers/ariados.png | Bin 0 -> 1043 bytes .../pics/pokemon/followers/azumarill.png | Bin 0 -> 725 bytes .../pics/pokemon/followers/bayleef.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/bellossom.png | Bin 0 -> 699 bytes .../pics/pokemon/followers/blissey.png | Bin 0 -> 665 bytes .../pics/pokemon/followers/celebi.png | Bin 0 -> 663 bytes .../pics/pokemon/followers/chikorita.png | Bin 0 -> 479 bytes .../pics/pokemon/followers/chinchou.png | Bin 0 -> 708 bytes .../pics/pokemon/followers/cleffa.png | Bin 0 -> 449 bytes .../pics/pokemon/followers/corsola.png | Bin 0 -> 669 bytes .../pics/pokemon/followers/crobat.png | Bin 0 -> 963 bytes .../pics/pokemon/followers/croconaw.png | Bin 0 -> 836 bytes .../pics/pokemon/followers/cyndaquil.png | Bin 0 -> 713 bytes .../pics/pokemon/followers/delibird.png | Bin 0 -> 676 bytes .../pics/pokemon/followers/donphan.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/dunsparce.png | Bin 0 -> 789 bytes .../pics/pokemon/followers/elekid.png | Bin 0 -> 558 bytes .../pics/pokemon/followers/entei.png | Bin 0 -> 1072 bytes .../pics/pokemon/followers/espeon.png | Bin 0 -> 812 bytes .../pics/pokemon/followers/feraligatr.png | Bin 0 -> 1090 bytes .../pics/pokemon/followers/flaaffy.png | Bin 0 -> 782 bytes .../pics/pokemon/followers/forretress.png | Bin 0 -> 620 bytes .../pics/pokemon/followers/furret.png | Bin 0 -> 791 bytes .../pics/pokemon/followers/girafarig.png | Bin 0 -> 770 bytes .../pics/pokemon/followers/gligar.png | Bin 0 -> 958 bytes .../pics/pokemon/followers/granbull.png | Bin 0 -> 695 bytes .../pics/pokemon/followers/heracross.png | Bin 0 -> 838 bytes .../pics/pokemon/followers/hitmontop.png | Bin 0 -> 591 bytes .../pics/pokemon/followers/ho_oh.png | Bin 0 -> 2252 bytes .../pics/pokemon/followers/hoothoot.png | Bin 0 -> 647 bytes .../pics/pokemon/followers/hoppip.png | Bin 0 -> 595 bytes .../pics/pokemon/followers/houndoom.png | Bin 0 -> 758 bytes .../pics/pokemon/followers/houndour.png | Bin 0 -> 597 bytes .../pics/pokemon/followers/igglybuff.png | Bin 0 -> 463 bytes .../pics/pokemon/followers/jumpluff.png | Bin 0 -> 671 bytes .../pics/pokemon/followers/kingdra.png | Bin 0 -> 859 bytes .../pics/pokemon/followers/lanturn.png | Bin 0 -> 947 bytes .../pics/pokemon/followers/larvitar.png | Bin 0 -> 479 bytes .../pics/pokemon/followers/ledian.png | Bin 0 -> 1027 bytes .../pics/pokemon/followers/ledyba.png | Bin 0 -> 1025 bytes .../pics/pokemon/followers/lugia.png | Bin 0 -> 1751 bytes .../pics/pokemon/followers/magby.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/magcargo.png | Bin 0 -> 1206 bytes .../pics/pokemon/followers/mantine.png | Bin 0 -> 1002 bytes .../pics/pokemon/followers/mareep.png | Bin 0 -> 722 bytes .../pics/pokemon/followers/marill.png | Bin 0 -> 574 bytes .../pics/pokemon/followers/meganium.png | Bin 0 -> 843 bytes .../pics/pokemon/followers/miltank.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/misdreavus.png | Bin 0 -> 891 bytes .../pics/pokemon/followers/murkrow.png | Bin 0 -> 509 bytes .../pics/pokemon/followers/natu.png | Bin 0 -> 472 bytes .../pics/pokemon/followers/noctowl.png | Bin 0 -> 1114 bytes .../pics/pokemon/followers/octillery.png | Bin 0 -> 691 bytes .../pics/pokemon/followers/phanpy.png | Bin 0 -> 457 bytes .../pics/pokemon/followers/pichu.png | Bin 0 -> 465 bytes .../pics/pokemon/followers/piloswine.png | Bin 0 -> 640 bytes .../pics/pokemon/followers/pineco.png | Bin 0 -> 420 bytes .../pics/pokemon/followers/politoed.png | Bin 0 -> 751 bytes .../pics/pokemon/followers/porygon2.png | Bin 0 -> 592 bytes .../pics/pokemon/followers/pupitar.png | Bin 0 -> 623 bytes .../pics/pokemon/followers/quagsire.png | Bin 0 -> 625 bytes .../pics/pokemon/followers/quilava.png | Bin 0 -> 1062 bytes .../pics/pokemon/followers/qwilfish.png | Bin 0 -> 633 bytes .../pics/pokemon/followers/raikou.png | Bin 0 -> 1010 bytes .../pics/pokemon/followers/remoraid.png | Bin 0 -> 599 bytes .../pics/pokemon/followers/scizor.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/sentret.png | Bin 0 -> 608 bytes .../pics/pokemon/followers/shuckle.png | Bin 0 -> 594 bytes .../pics/pokemon/followers/skarmory.png | Bin 0 -> 1071 bytes .../pics/pokemon/followers/skiploom.png | Bin 0 -> 581 bytes .../pics/pokemon/followers/slowking.png | Bin 0 -> 817 bytes .../pics/pokemon/followers/slugma.png | Bin 0 -> 659 bytes .../pics/pokemon/followers/smeargle.png | Bin 0 -> 694 bytes .../pics/pokemon/followers/smoochum.png | Bin 0 -> 541 bytes .../pics/pokemon/followers/sneasel.png | Bin 0 -> 741 bytes .../pics/pokemon/followers/snubbull.png | Bin 0 -> 701 bytes .../pics/pokemon/followers/spinarak.png | Bin 0 -> 667 bytes .../pics/pokemon/followers/stantler.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/steelix.png | Bin 0 -> 1628 bytes .../pics/pokemon/followers/sudowoodo.png | Bin 0 -> 672 bytes .../pics/pokemon/followers/suicune.png | Bin 0 -> 1091 bytes .../pics/pokemon/followers/sunflora.png | Bin 0 -> 605 bytes .../pics/pokemon/followers/sunkern.png | Bin 0 -> 445 bytes .../pics/pokemon/followers/swinub.png | Bin 0 -> 497 bytes .../pics/pokemon/followers/teddiursa.png | Bin 0 -> 692 bytes .../pics/pokemon/followers/togepi.png | Bin 0 -> 553 bytes .../pics/pokemon/followers/togetic.png | Bin 0 -> 747 bytes .../pics/pokemon/followers/totodile.png | Bin 0 -> 574 bytes .../pics/pokemon/followers/typhlosion.png | Bin 0 -> 1101 bytes .../pics/pokemon/followers/tyranitar.png | Bin 0 -> 940 bytes .../pics/pokemon/followers/tyrogue.png | Bin 0 -> 515 bytes .../pics/pokemon/followers/umbreon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/unown!.png | Bin 0 -> 279 bytes .../pics/pokemon/followers/unowna.png | Bin 0 -> 316 bytes .../pics/pokemon/followers/unownb.png | Bin 0 -> 344 bytes .../pics/pokemon/followers/unownc.png | Bin 0 -> 393 bytes .../pics/pokemon/followers/unownd.png | Bin 0 -> 354 bytes .../pics/pokemon/followers/unowne.png | Bin 0 -> 343 bytes .../pics/pokemon/followers/unownf.png | Bin 0 -> 375 bytes .../pics/pokemon/followers/unowng.png | Bin 0 -> 354 bytes .../pics/pokemon/followers/unownh.png | Bin 0 -> 352 bytes .../pics/pokemon/followers/unowni.png | Bin 0 -> 310 bytes .../pics/pokemon/followers/unownj.png | Bin 0 -> 323 bytes .../pics/pokemon/followers/unownk.png | Bin 0 -> 332 bytes .../pics/pokemon/followers/unownl.png | Bin 0 -> 326 bytes .../pics/pokemon/followers/unownm.png | Bin 0 -> 341 bytes .../pics/pokemon/followers/unownn.png | Bin 0 -> 352 bytes .../pics/pokemon/followers/unowno.png | Bin 0 -> 345 bytes .../pics/pokemon/followers/unownp.png | Bin 0 -> 312 bytes .../pics/pokemon/followers/unownq.png | Bin 0 -> 354 bytes .../pics/pokemon/followers/unownquestion.png | Bin 0 -> 324 bytes .../pics/pokemon/followers/unownr.png | Bin 0 -> 317 bytes .../pics/pokemon/followers/unowns.png | Bin 0 -> 378 bytes .../pics/pokemon/followers/unownt.png | Bin 0 -> 287 bytes .../pics/pokemon/followers/unownu.png | Bin 0 -> 321 bytes .../pics/pokemon/followers/unownv.png | Bin 0 -> 307 bytes .../pics/pokemon/followers/unownw.png | Bin 0 -> 315 bytes .../pics/pokemon/followers/unownx.png | Bin 0 -> 316 bytes .../pics/pokemon/followers/unowny.png | Bin 0 -> 322 bytes .../pics/pokemon/followers/unownz.png | Bin 0 -> 361 bytes .../pics/pokemon/followers/ursaring.png | Bin 0 -> 844 bytes .../pics/pokemon/followers/vaporeon.png | Bin 888 -> 870 bytes .../pics/pokemon/followers/wobbuffet.png | Bin 0 -> 551 bytes .../pics/pokemon/followers/wooper.png | Bin 0 -> 444 bytes .../pics/pokemon/followers/xatu.png | Bin 0 -> 740 bytes .../pics/pokemon/followers/yanma.png | Bin 0 -> 1038 bytes include/constants/event_objects.h | 102 +- spritesheet_rules.mk | 385 +++++- .../object_events/object_event_graphics.h | 228 ++++ .../object_event_graphics_info.h | 127 ++ .../object_event_graphics_info_pointers.h | 227 ++++ .../object_events/object_event_pic_tables.h | 1149 +++++++++++++++++ src/event_object_movement.c | 208 ++- 239 files changed, 4336 insertions(+), 10 deletions(-) create mode 100644 graphics/object_events/palettes/followers/aipom.pal create mode 100644 graphics/object_events/palettes/followers/ampharos.pal create mode 100644 graphics/object_events/palettes/followers/ariados.pal create mode 100644 graphics/object_events/palettes/followers/azumarill.pal create mode 100644 graphics/object_events/palettes/followers/bayleef.pal create mode 100644 graphics/object_events/palettes/followers/bellossom.pal create mode 100644 graphics/object_events/palettes/followers/blissey.pal create mode 100644 graphics/object_events/palettes/followers/celebi.pal create mode 100644 graphics/object_events/palettes/followers/chikorita.pal create mode 100644 graphics/object_events/palettes/followers/chinchou.pal create mode 100644 graphics/object_events/palettes/followers/cleffa.pal create mode 100644 graphics/object_events/palettes/followers/corsola.pal create mode 100644 graphics/object_events/palettes/followers/crobat.pal create mode 100644 graphics/object_events/palettes/followers/croconaw.pal create mode 100644 graphics/object_events/palettes/followers/cyndaquil.pal create mode 100644 graphics/object_events/palettes/followers/delibird.pal create mode 100644 graphics/object_events/palettes/followers/donphan.pal create mode 100644 graphics/object_events/palettes/followers/dunsparce.pal create mode 100644 graphics/object_events/palettes/followers/elekid.pal create mode 100644 graphics/object_events/palettes/followers/entei.pal create mode 100644 graphics/object_events/palettes/followers/espeon.pal create mode 100644 graphics/object_events/palettes/followers/feraligatr.pal create mode 100644 graphics/object_events/palettes/followers/flaaffy.pal create mode 100644 graphics/object_events/palettes/followers/forretress.pal create mode 100644 graphics/object_events/palettes/followers/furret.pal create mode 100644 graphics/object_events/palettes/followers/girafarig.pal create mode 100644 graphics/object_events/palettes/followers/gligar.pal create mode 100644 graphics/object_events/palettes/followers/granbull.pal create mode 100644 graphics/object_events/palettes/followers/heracross.pal create mode 100644 graphics/object_events/palettes/followers/hitmontop.pal create mode 100644 graphics/object_events/palettes/followers/ho_oh.pal create mode 100644 graphics/object_events/palettes/followers/hoothoot.pal create mode 100644 graphics/object_events/palettes/followers/hoppip.pal create mode 100644 graphics/object_events/palettes/followers/houndoom.pal create mode 100644 graphics/object_events/palettes/followers/houndour.pal create mode 100644 graphics/object_events/palettes/followers/igglybuff.pal create mode 100644 graphics/object_events/palettes/followers/jumpluff.pal create mode 100644 graphics/object_events/palettes/followers/kingdra.pal create mode 100644 graphics/object_events/palettes/followers/lanturn.pal create mode 100644 graphics/object_events/palettes/followers/larvitar.pal create mode 100644 graphics/object_events/palettes/followers/ledian.pal create mode 100644 graphics/object_events/palettes/followers/ledyba.pal create mode 100644 graphics/object_events/palettes/followers/lugia.pal create mode 100644 graphics/object_events/palettes/followers/magby.pal create mode 100644 graphics/object_events/palettes/followers/magcargo.pal create mode 100644 graphics/object_events/palettes/followers/mantine.pal create mode 100644 graphics/object_events/palettes/followers/mareep.pal create mode 100644 graphics/object_events/palettes/followers/marill.pal create mode 100644 graphics/object_events/palettes/followers/meganium.pal create mode 100644 graphics/object_events/palettes/followers/miltank.pal create mode 100644 graphics/object_events/palettes/followers/misdreavus.pal create mode 100644 graphics/object_events/palettes/followers/murkrow.pal create mode 100644 graphics/object_events/palettes/followers/natu.pal create mode 100644 graphics/object_events/palettes/followers/noctowl.pal create mode 100644 graphics/object_events/palettes/followers/octillery.pal create mode 100644 graphics/object_events/palettes/followers/phanpy.pal create mode 100644 graphics/object_events/palettes/followers/pichu.pal create mode 100644 graphics/object_events/palettes/followers/piloswine.pal create mode 100644 graphics/object_events/palettes/followers/pineco.pal create mode 100644 graphics/object_events/palettes/followers/politoed.pal create mode 100644 graphics/object_events/palettes/followers/porygon2.pal create mode 100644 graphics/object_events/palettes/followers/pupitar.pal create mode 100644 graphics/object_events/palettes/followers/quagsire.pal create mode 100644 graphics/object_events/palettes/followers/quilava.pal create mode 100644 graphics/object_events/palettes/followers/qwilfish.pal create mode 100644 graphics/object_events/palettes/followers/raikou.pal create mode 100644 graphics/object_events/palettes/followers/remoraid.pal create mode 100644 graphics/object_events/palettes/followers/scizor.pal create mode 100644 graphics/object_events/palettes/followers/sentret.pal create mode 100644 graphics/object_events/palettes/followers/shuckle.pal create mode 100644 graphics/object_events/palettes/followers/skarmory.pal create mode 100644 graphics/object_events/palettes/followers/skiploom.pal create mode 100644 graphics/object_events/palettes/followers/slowking.pal create mode 100644 graphics/object_events/palettes/followers/slugma.pal create mode 100644 graphics/object_events/palettes/followers/smeargle.pal create mode 100644 graphics/object_events/palettes/followers/smoochum.pal create mode 100644 graphics/object_events/palettes/followers/sneasel.pal create mode 100644 graphics/object_events/palettes/followers/snubbull.pal create mode 100644 graphics/object_events/palettes/followers/spinarak.pal create mode 100644 graphics/object_events/palettes/followers/stantler.pal create mode 100644 graphics/object_events/palettes/followers/steelix.pal create mode 100644 graphics/object_events/palettes/followers/sudowoodo.pal create mode 100644 graphics/object_events/palettes/followers/suicune.pal create mode 100644 graphics/object_events/palettes/followers/sunflora.pal create mode 100644 graphics/object_events/palettes/followers/sunkern.pal create mode 100644 graphics/object_events/palettes/followers/swinub.pal create mode 100644 graphics/object_events/palettes/followers/teddiursa.pal create mode 100644 graphics/object_events/palettes/followers/togepi.pal create mode 100644 graphics/object_events/palettes/followers/togetic.pal create mode 100644 graphics/object_events/palettes/followers/totodile.pal create mode 100644 graphics/object_events/palettes/followers/typhlosion.pal create mode 100644 graphics/object_events/palettes/followers/tyranitar.pal create mode 100644 graphics/object_events/palettes/followers/tyrogue.pal create mode 100644 graphics/object_events/palettes/followers/umbreon.pal create mode 100644 graphics/object_events/palettes/followers/unown.pal create mode 100644 graphics/object_events/palettes/followers/ursaring.pal create mode 100644 graphics/object_events/palettes/followers/wobbuffet.pal create mode 100644 graphics/object_events/palettes/followers/wooper.pal create mode 100644 graphics/object_events/palettes/followers/xatu.pal create mode 100644 graphics/object_events/palettes/followers/yanma.pal create mode 100644 graphics/object_events/pics/pokemon/followers/aipom.png create mode 100644 graphics/object_events/pics/pokemon/followers/ampharos.png create mode 100644 graphics/object_events/pics/pokemon/followers/ariados.png create mode 100644 graphics/object_events/pics/pokemon/followers/azumarill.png create mode 100644 graphics/object_events/pics/pokemon/followers/bayleef.png create mode 100644 graphics/object_events/pics/pokemon/followers/bellossom.png create mode 100644 graphics/object_events/pics/pokemon/followers/blissey.png create mode 100644 graphics/object_events/pics/pokemon/followers/celebi.png create mode 100644 graphics/object_events/pics/pokemon/followers/chikorita.png create mode 100644 graphics/object_events/pics/pokemon/followers/chinchou.png create mode 100644 graphics/object_events/pics/pokemon/followers/cleffa.png create mode 100644 graphics/object_events/pics/pokemon/followers/corsola.png create mode 100644 graphics/object_events/pics/pokemon/followers/crobat.png create mode 100644 graphics/object_events/pics/pokemon/followers/croconaw.png create mode 100644 graphics/object_events/pics/pokemon/followers/cyndaquil.png create mode 100644 graphics/object_events/pics/pokemon/followers/delibird.png create mode 100644 graphics/object_events/pics/pokemon/followers/donphan.png create mode 100644 graphics/object_events/pics/pokemon/followers/dunsparce.png create mode 100644 graphics/object_events/pics/pokemon/followers/elekid.png create mode 100644 graphics/object_events/pics/pokemon/followers/entei.png create mode 100644 graphics/object_events/pics/pokemon/followers/espeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/feraligatr.png create mode 100644 graphics/object_events/pics/pokemon/followers/flaaffy.png create mode 100644 graphics/object_events/pics/pokemon/followers/forretress.png create mode 100644 graphics/object_events/pics/pokemon/followers/furret.png create mode 100644 graphics/object_events/pics/pokemon/followers/girafarig.png create mode 100644 graphics/object_events/pics/pokemon/followers/gligar.png create mode 100644 graphics/object_events/pics/pokemon/followers/granbull.png create mode 100644 graphics/object_events/pics/pokemon/followers/heracross.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmontop.png create mode 100644 graphics/object_events/pics/pokemon/followers/ho_oh.png create mode 100644 graphics/object_events/pics/pokemon/followers/hoothoot.png create mode 100644 graphics/object_events/pics/pokemon/followers/hoppip.png create mode 100644 graphics/object_events/pics/pokemon/followers/houndoom.png create mode 100644 graphics/object_events/pics/pokemon/followers/houndour.png create mode 100644 graphics/object_events/pics/pokemon/followers/igglybuff.png create mode 100644 graphics/object_events/pics/pokemon/followers/jumpluff.png create mode 100644 graphics/object_events/pics/pokemon/followers/kingdra.png create mode 100644 graphics/object_events/pics/pokemon/followers/lanturn.png create mode 100644 graphics/object_events/pics/pokemon/followers/larvitar.png create mode 100644 graphics/object_events/pics/pokemon/followers/ledian.png create mode 100644 graphics/object_events/pics/pokemon/followers/ledyba.png create mode 100644 graphics/object_events/pics/pokemon/followers/lugia.png create mode 100644 graphics/object_events/pics/pokemon/followers/magby.png create mode 100644 graphics/object_events/pics/pokemon/followers/magcargo.png create mode 100644 graphics/object_events/pics/pokemon/followers/mantine.png create mode 100644 graphics/object_events/pics/pokemon/followers/mareep.png create mode 100644 graphics/object_events/pics/pokemon/followers/marill.png create mode 100644 graphics/object_events/pics/pokemon/followers/meganium.png create mode 100644 graphics/object_events/pics/pokemon/followers/miltank.png create mode 100644 graphics/object_events/pics/pokemon/followers/misdreavus.png create mode 100644 graphics/object_events/pics/pokemon/followers/murkrow.png create mode 100644 graphics/object_events/pics/pokemon/followers/natu.png create mode 100644 graphics/object_events/pics/pokemon/followers/noctowl.png create mode 100644 graphics/object_events/pics/pokemon/followers/octillery.png create mode 100644 graphics/object_events/pics/pokemon/followers/phanpy.png create mode 100644 graphics/object_events/pics/pokemon/followers/pichu.png create mode 100644 graphics/object_events/pics/pokemon/followers/piloswine.png create mode 100644 graphics/object_events/pics/pokemon/followers/pineco.png create mode 100644 graphics/object_events/pics/pokemon/followers/politoed.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygon2.png create mode 100644 graphics/object_events/pics/pokemon/followers/pupitar.png create mode 100644 graphics/object_events/pics/pokemon/followers/quagsire.png create mode 100644 graphics/object_events/pics/pokemon/followers/quilava.png create mode 100644 graphics/object_events/pics/pokemon/followers/qwilfish.png create mode 100644 graphics/object_events/pics/pokemon/followers/raikou.png create mode 100644 graphics/object_events/pics/pokemon/followers/remoraid.png create mode 100644 graphics/object_events/pics/pokemon/followers/scizor.png create mode 100644 graphics/object_events/pics/pokemon/followers/sentret.png create mode 100644 graphics/object_events/pics/pokemon/followers/shuckle.png create mode 100644 graphics/object_events/pics/pokemon/followers/skarmory.png create mode 100644 graphics/object_events/pics/pokemon/followers/skiploom.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowking.png create mode 100644 graphics/object_events/pics/pokemon/followers/slugma.png create mode 100644 graphics/object_events/pics/pokemon/followers/smeargle.png create mode 100644 graphics/object_events/pics/pokemon/followers/smoochum.png create mode 100644 graphics/object_events/pics/pokemon/followers/sneasel.png create mode 100644 graphics/object_events/pics/pokemon/followers/snubbull.png create mode 100644 graphics/object_events/pics/pokemon/followers/spinarak.png create mode 100644 graphics/object_events/pics/pokemon/followers/stantler.png create mode 100644 graphics/object_events/pics/pokemon/followers/steelix.png create mode 100644 graphics/object_events/pics/pokemon/followers/sudowoodo.png create mode 100644 graphics/object_events/pics/pokemon/followers/suicune.png create mode 100644 graphics/object_events/pics/pokemon/followers/sunflora.png create mode 100644 graphics/object_events/pics/pokemon/followers/sunkern.png create mode 100644 graphics/object_events/pics/pokemon/followers/swinub.png create mode 100644 graphics/object_events/pics/pokemon/followers/teddiursa.png create mode 100644 graphics/object_events/pics/pokemon/followers/togepi.png create mode 100644 graphics/object_events/pics/pokemon/followers/togetic.png create mode 100644 graphics/object_events/pics/pokemon/followers/totodile.png create mode 100644 graphics/object_events/pics/pokemon/followers/typhlosion.png create mode 100644 graphics/object_events/pics/pokemon/followers/tyranitar.png create mode 100644 graphics/object_events/pics/pokemon/followers/tyrogue.png create mode 100644 graphics/object_events/pics/pokemon/followers/umbreon.png create mode 100644 graphics/object_events/pics/pokemon/followers/unown!.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowna.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownb.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownc.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownd.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowne.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownf.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowng.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownh.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowni.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownj.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownk.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownl.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownm.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownn.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowno.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownp.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownq.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownquestion.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownr.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowns.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownt.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownu.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownv.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownw.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownx.png create mode 100644 graphics/object_events/pics/pokemon/followers/unowny.png create mode 100644 graphics/object_events/pics/pokemon/followers/unownz.png create mode 100644 graphics/object_events/pics/pokemon/followers/ursaring.png create mode 100644 graphics/object_events/pics/pokemon/followers/wobbuffet.png create mode 100644 graphics/object_events/pics/pokemon/followers/wooper.png create mode 100644 graphics/object_events/pics/pokemon/followers/xatu.png create mode 100644 graphics/object_events/pics/pokemon/followers/yanma.png diff --git a/gflib/sprite.c b/gflib/sprite.c index 3805409a8..7b04658f4 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -988,6 +988,20 @@ bool8 IsFlyingPokemonGraphic(u16 graphicsId) case 383: case 384: case 387: + case 402: + case 403: + case 404: + case 407: + case 414: + case 425: + case 426: + case 427: + case 431: + case 464: + case 465: + case 487: + case 488: + case 489: return TRUE; default: return FALSE; diff --git a/graphics/object_events/palettes/followers/aipom.pal b/graphics/object_events/palettes/followers/aipom.pal new file mode 100644 index 000000000..f658712e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/aipom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 97 +169 137 201 +97 81 65 +225 209 161 +185 201 225 +113 73 145 +1 1 1 +81 41 113 +233 233 249 +137 105 169 +137 113 81 +137 153 185 +201 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ampharos.pal b/graphics/object_events/palettes/followers/ampharos.pal new file mode 100644 index 000000000..17ad1d495 --- /dev/null +++ b/graphics/object_events/palettes/followers/ampharos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +185 57 17 +113 129 153 +49 57 65 +1 1 1 +185 201 225 +241 89 81 +129 25 9 +81 97 113 +241 209 89 +105 89 9 +233 233 249 +201 161 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ariados.pal b/graphics/object_events/palettes/followers/ariados.pal new file mode 100644 index 000000000..ebc2b6797 --- /dev/null +++ b/graphics/object_events/palettes/followers/ariados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 1 +97 33 169 +129 97 9 +1 1 1 +201 65 57 +49 41 33 +169 185 209 +113 17 25 +145 81 225 +233 233 249 +249 193 9 +73 73 73 +241 97 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/azumarill.pal b/graphics/object_events/palettes/followers/azumarill.pal new file mode 100644 index 000000000..8efd7cab0 --- /dev/null +++ b/graphics/object_events/palettes/followers/azumarill.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 161 137 +185 201 225 +57 113 161 +73 145 201 +49 57 65 +233 233 249 +113 177 241 +185 49 41 +33 49 105 +129 161 201 +1 1 1 +209 209 225 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bayleef.pal b/graphics/object_events/palettes/followers/bayleef.pal new file mode 100644 index 000000000..bdfc636fc --- /dev/null +++ b/graphics/object_events/palettes/followers/bayleef.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 9 +217 217 217 +169 153 89 +161 193 81 +65 81 1 +201 185 89 +177 81 121 +233 233 249 +233 217 89 +1 1 1 +97 81 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bellossom.pal b/graphics/object_events/palettes/followers/bellossom.pal new file mode 100644 index 000000000..d6249f109 --- /dev/null +++ b/graphics/object_events/palettes/followers/bellossom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +233 233 249 +17 65 41 +57 137 89 +241 193 57 +233 81 57 +113 33 9 +217 137 25 +1 1 1 +97 89 9 +193 41 25 +73 105 25 +153 193 113 +217 153 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blissey.pal b/graphics/object_events/palettes/followers/blissey.pal new file mode 100644 index 000000000..e169adc07 --- /dev/null +++ b/graphics/object_events/palettes/followers/blissey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 169 +169 185 209 +65 73 97 +1 1 1 +225 81 97 +233 233 249 +105 17 65 +249 121 185 +249 169 201 +185 89 137 +201 209 233 +145 65 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/caterpie.pal b/graphics/object_events/palettes/followers/caterpie.pal index 86d3379ec..68f678aba 100644 --- a/graphics/object_events/palettes/followers/caterpie.pal +++ b/graphics/object_events/palettes/followers/caterpie.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -129 177 177 +161 177 129 105 153 41 169 233 65 65 89 33 diff --git a/graphics/object_events/palettes/followers/celebi.pal b/graphics/object_events/palettes/followers/celebi.pal new file mode 100644 index 000000000..50b97151d --- /dev/null +++ b/graphics/object_events/palettes/followers/celebi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 81 +25 169 225 +121 185 73 +249 249 193 +1 89 137 +33 41 41 +145 153 153 +137 185 241 +193 225 113 +233 233 249 +1 1 1 +33 65 33 +81 177 209 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chikorita.pal b/graphics/object_events/palettes/followers/chikorita.pal new file mode 100644 index 000000000..6f6efef17 --- /dev/null +++ b/graphics/object_events/palettes/followers/chikorita.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 145 41 +169 185 209 +145 193 65 +57 105 17 +1 1 1 +169 41 41 +113 177 81 +233 233 249 +193 217 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chinchou.pal b/graphics/object_events/palettes/followers/chinchou.pal new file mode 100644 index 000000000..23a92cfb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/chinchou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +41 57 113 +193 201 217 +81 65 9 +1 1 1 +113 169 241 +185 49 41 +249 209 97 +89 89 161 +129 105 25 +233 233 249 +193 185 217 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cleffa.pal b/graphics/object_events/palettes/followers/cleffa.pal new file mode 100644 index 000000000..249bd5c9d --- /dev/null +++ b/graphics/object_events/palettes/followers/cleffa.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 153 +129 73 57 +233 233 249 +169 113 105 +81 41 33 +241 185 193 +217 89 97 +1 1 1 +153 89 97 +97 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corsola.pal b/graphics/object_events/palettes/followers/corsola.pal new file mode 100644 index 000000000..caf141ec5 --- /dev/null +++ b/graphics/object_events/palettes/followers/corsola.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 185 +169 185 209 +73 81 97 +1 1 1 +233 233 249 +169 65 89 +121 33 65 +233 129 161 +241 169 193 +217 105 129 +193 209 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/crobat.pal b/graphics/object_events/palettes/followers/crobat.pal new file mode 100644 index 000000000..35a380e27 --- /dev/null +++ b/graphics/object_events/palettes/followers/crobat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +73 25 121 +41 145 185 +17 97 145 +233 233 249 +121 81 145 +161 49 57 +233 217 97 +169 185 209 +161 113 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/croconaw.pal b/graphics/object_events/palettes/followers/croconaw.pal new file mode 100644 index 000000000..f1504a314 --- /dev/null +++ b/graphics/object_events/palettes/followers/croconaw.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 89 +73 65 17 +57 169 193 +41 65 97 +113 25 41 +225 209 121 +121 105 41 +233 233 249 +65 105 137 +169 41 65 +113 193 225 +1 1 1 +137 73 1 +209 49 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cyndaquil.pal b/graphics/object_events/palettes/followers/cyndaquil.pal new file mode 100644 index 000000000..58b2aa207 --- /dev/null +++ b/graphics/object_events/palettes/followers/cyndaquil.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 25 +73 73 113 +129 25 25 +97 129 225 +89 65 17 +1 1 1 +209 57 49 +169 185 209 +233 233 249 +33 49 81 +249 209 97 +81 97 161 +161 41 41 +57 65 81 +241 161 17 diff --git a/graphics/object_events/palettes/followers/delibird.pal b/graphics/object_events/palettes/followers/delibird.pal new file mode 100644 index 000000000..899736131 --- /dev/null +++ b/graphics/object_events/palettes/followers/delibird.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +129 105 17 +137 1 1 +145 161 177 +185 25 25 +193 209 233 +249 217 89 +73 73 73 +233 233 249 +153 1 1 +201 25 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/donphan.pal b/graphics/object_events/palettes/followers/donphan.pal new file mode 100644 index 000000000..df25c4cb5 --- /dev/null +++ b/graphics/object_events/palettes/followers/donphan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 137 153 +73 65 73 +249 249 249 +1 1 1 +25 41 57 +121 121 129 +73 89 113 +185 185 193 +137 25 25 +137 1 1 +153 153 161 +49 73 81 +185 185 201 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dunsparce.pal b/graphics/object_events/palettes/followers/dunsparce.pal new file mode 100644 index 000000000..9cc03ea9e --- /dev/null +++ b/graphics/object_events/palettes/followers/dunsparce.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 1 +1 1 1 +137 185 225 +25 57 73 +217 193 1 +233 233 249 +249 225 161 +185 209 241 +249 233 113 +153 137 105 +81 161 185 +65 81 97 +65 57 57 +121 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ekans.pal b/graphics/object_events/palettes/followers/ekans.pal index cbe0d93b6..b163ae5c8 100644 --- a/graphics/object_events/palettes/followers/ekans.pal +++ b/graphics/object_events/palettes/followers/ekans.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -129 177 169 +161 177 129 209 161 49 113 97 41 201 129 193 diff --git a/graphics/object_events/palettes/followers/elekid.pal b/graphics/object_events/palettes/followers/elekid.pal new file mode 100644 index 000000000..b3d6b954a --- /dev/null +++ b/graphics/object_events/palettes/followers/elekid.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 1 +105 81 1 +1 1 1 +193 113 1 +249 217 97 +57 65 73 +233 233 249 +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/graphics/object_events/palettes/followers/entei.pal b/graphics/object_events/palettes/followers/entei.pal new file mode 100644 index 000000000..934782cde --- /dev/null +++ b/graphics/object_events/palettes/followers/entei.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 25 +97 65 49 +113 137 145 +49 57 81 +249 217 57 +217 73 33 +169 25 1 +89 81 25 +169 193 209 +1 1 1 +73 49 41 +233 233 249 +89 97 121 +169 121 81 +129 89 57 diff --git a/graphics/object_events/palettes/followers/espeon.pal b/graphics/object_events/palettes/followers/espeon.pal new file mode 100644 index 000000000..814e30a6e --- /dev/null +++ b/graphics/object_events/palettes/followers/espeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 33 121 +241 201 233 +233 137 177 +57 113 177 +225 177 217 +201 57 49 +81 41 121 +169 105 161 +233 233 249 +201 145 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/feraligatr.pal b/graphics/object_events/palettes/followers/feraligatr.pal new file mode 100644 index 000000000..043239005 --- /dev/null +++ b/graphics/object_events/palettes/followers/feraligatr.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 41 +81 129 185 +73 65 17 +185 161 89 +161 209 241 +169 41 65 +225 193 121 +161 177 201 +17 65 97 +97 33 41 +65 105 137 +233 233 249 +1 1 1 +113 177 233 +209 49 73 diff --git a/graphics/object_events/palettes/followers/flaaffy.pal b/graphics/object_events/palettes/followers/flaaffy.pal new file mode 100644 index 000000000..3e934d7da --- /dev/null +++ b/graphics/object_events/palettes/followers/flaaffy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 185 89 +57 153 193 +97 201 241 +49 57 65 +225 145 185 +33 89 145 +185 201 225 +185 97 129 +113 41 65 +249 185 217 +233 233 249 +89 105 121 +137 153 177 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/forretress.pal b/graphics/object_events/palettes/followers/forretress.pal new file mode 100644 index 000000000..12bb3be0e --- /dev/null +++ b/graphics/object_events/palettes/followers/forretress.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +89 65 105 +225 209 249 +105 17 25 +185 153 185 +137 113 145 +49 49 49 +1 1 1 +217 97 65 +193 49 57 +209 185 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/furret.pal b/graphics/object_events/palettes/followers/furret.pal new file mode 100644 index 000000000..923ed8670 --- /dev/null +++ b/graphics/object_events/palettes/followers/furret.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +113 81 49 +233 233 249 +65 33 9 +241 209 161 +209 177 113 +153 113 65 +89 57 25 +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/palettes/followers/girafarig.pal b/graphics/object_events/palettes/followers/girafarig.pal new file mode 100644 index 000000000..5d0e01229 --- /dev/null +++ b/graphics/object_events/palettes/followers/girafarig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 81 +33 65 121 +249 209 97 +73 49 17 +185 81 105 +161 177 201 +41 49 57 +201 161 81 +233 233 249 +233 113 185 +57 113 161 +105 81 57 +1 1 1 +73 81 89 +97 113 153 diff --git a/graphics/object_events/palettes/followers/gligar.pal b/graphics/object_events/palettes/followers/gligar.pal new file mode 100644 index 000000000..74a83d573 --- /dev/null +++ b/graphics/object_events/palettes/followers/gligar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +89 41 97 +241 193 217 +9 89 129 +161 89 137 +1 1 1 +233 233 249 +201 113 177 +137 33 57 +225 153 209 +177 73 121 +209 105 153 +169 185 161 +201 209 217 +17 97 129 diff --git a/graphics/object_events/palettes/followers/granbull.pal b/graphics/object_events/palettes/followers/granbull.pal new file mode 100644 index 000000000..ed5998bfc --- /dev/null +++ b/graphics/object_events/palettes/followers/granbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 121 137 +177 193 209 +49 65 81 +129 89 137 +1 1 1 +233 233 249 +193 145 209 +225 185 241 +161 113 169 +105 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/heracross.pal b/graphics/object_events/palettes/followers/heracross.pal new file mode 100644 index 000000000..26bd7164c --- /dev/null +++ b/graphics/object_events/palettes/followers/heracross.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 9 +81 153 177 +153 89 1 +249 249 249 +17 73 97 +129 193 201 +57 121 145 +1 1 1 +241 177 65 +33 97 121 +153 169 185 +185 201 217 +57 73 81 +17 17 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmontop.pal b/graphics/object_events/palettes/followers/hitmontop.pal new file mode 100644 index 000000000..cb5c2f1ee --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmontop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +97 153 209 +89 73 25 +209 161 105 +233 233 249 +57 113 161 +25 57 105 +177 185 193 +1 1 1 +129 81 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ho_oh.pal b/graphics/object_events/palettes/followers/ho_oh.pal new file mode 100644 index 000000000..dcc241696 --- /dev/null +++ b/graphics/object_events/palettes/followers/ho_oh.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 153 1 +57 57 57 +1 1 1 +161 57 25 +129 201 81 +169 185 209 +81 25 1 +169 105 1 +97 121 121 +217 233 249 +57 97 17 +249 209 97 +217 81 49 +97 41 1 +233 233 249 diff --git a/graphics/object_events/palettes/followers/hoothoot.pal b/graphics/object_events/palettes/followers/hoothoot.pal new file mode 100644 index 000000000..bf367bd48 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoothoot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 113 113 +65 81 89 +1 1 1 +225 169 169 +81 41 9 +217 81 73 +137 73 57 +233 217 161 +169 185 209 +41 41 41 +177 129 89 +105 41 41 +137 89 65 +201 177 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hoppip.pal b/graphics/object_events/palettes/followers/hoppip.pal new file mode 100644 index 000000000..7dade5208 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoppip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 201 1 +225 105 129 +49 89 17 +97 153 65 +1 1 1 +169 65 89 +89 9 3 +113 193 81 +241 145 193 +201 89 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/houndoom.pal b/graphics/object_events/palettes/followers/houndoom.pal new file mode 100644 index 000000000..e3f59cb81 --- /dev/null +++ b/graphics/object_events/palettes/followers/houndoom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +81 81 89 +225 185 161 +41 41 49 +137 129 145 +113 97 121 +73 57 81 +145 25 41 +233 233 249 +1 1 1 +169 161 185 +137 97 65 +57 57 65 +105 113 113 +0 0 0 diff --git a/graphics/object_events/palettes/followers/houndour.pal b/graphics/object_events/palettes/followers/houndour.pal new file mode 100644 index 000000000..f13881bf3 --- /dev/null +++ b/graphics/object_events/palettes/followers/houndour.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +81 81 89 +225 185 161 +41 41 49 +137 129 145 +113 97 121 +233 233 249 +73 57 81 +1 1 1 +169 161 185 +137 97 65 +177 185 193 +57 57 65 +105 113 113 +0 0 0 diff --git a/graphics/object_events/palettes/followers/igglybuff.pal b/graphics/object_events/palettes/followers/igglybuff.pal new file mode 100644 index 000000000..0d5864b65 --- /dev/null +++ b/graphics/object_events/palettes/followers/igglybuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 169 +169 81 97 +249 201 217 +89 41 65 +225 113 121 +1 1 1 +233 233 249 +169 49 57 +201 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jumpluff.pal b/graphics/object_events/palettes/followers/jumpluff.pal new file mode 100644 index 000000000..63bedfafd --- /dev/null +++ b/graphics/object_events/palettes/followers/jumpluff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +41 81 137 +249 249 201 +113 113 97 +33 57 97 +97 153 225 +121 17 9 +193 185 161 +57 113 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kingdra.pal b/graphics/object_events/palettes/followers/kingdra.pal new file mode 100644 index 000000000..53a982441 --- /dev/null +++ b/graphics/object_events/palettes/followers/kingdra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 41 +73 121 161 +137 97 33 +169 185 209 +25 57 97 +233 233 249 +1 1 1 +193 209 233 +113 153 201 +113 17 17 +73 73 73 +217 161 57 +41 81 129 +145 193 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lanturn.pal b/graphics/object_events/palettes/followers/lanturn.pal new file mode 100644 index 000000000..c2a012f36 --- /dev/null +++ b/graphics/object_events/palettes/followers/lanturn.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +17 33 89 +185 201 217 +81 65 9 +225 233 241 +1 1 1 +185 49 41 +65 97 169 +249 209 97 +129 105 25 +113 177 241 +161 209 241 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/larvitar.pal b/graphics/object_events/palettes/followers/larvitar.pal new file mode 100644 index 000000000..e7a518194 --- /dev/null +++ b/graphics/object_events/palettes/followers/larvitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 177 105 +57 65 73 +161 185 201 +33 41 41 +177 217 121 +185 49 49 +1 1 1 +73 89 41 +233 233 249 +121 33 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ledian.pal b/graphics/object_events/palettes/followers/ledian.pal new file mode 100644 index 000000000..95b25de50 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 89 +137 65 1 +17 129 193 +65 65 97 +241 209 81 +177 41 49 +1 1 1 +185 201 225 +249 97 121 +113 97 73 +17 105 153 +233 233 249 +209 177 81 +225 33 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ledyba.pal b/graphics/object_events/palettes/followers/ledyba.pal new file mode 100644 index 000000000..4540e80b7 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledyba.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 177 49 +81 89 201 +129 113 49 +193 201 225 +169 33 9 +1 1 1 +105 33 41 +233 233 241 +241 225 129 +249 113 49 +225 57 33 +57 57 57 +225 201 41 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lugia.pal b/graphics/object_events/palettes/followers/lugia.pal new file mode 100644 index 000000000..adf9c9f0e --- /dev/null +++ b/graphics/object_events/palettes/followers/lugia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 209 217 +41 49 113 +41 121 193 +73 73 89 +153 161 169 +233 233 249 +49 97 193 +137 169 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magby.pal b/graphics/object_events/palettes/followers/magby.pal new file mode 100644 index 000000000..8a53eb769 --- /dev/null +++ b/graphics/object_events/palettes/followers/magby.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 33 +105 73 1 +177 185 193 +129 1 1 +65 65 73 +1 1 1 +153 41 57 +249 81 121 +233 233 249 +241 193 57 +81 89 105 +209 41 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magcargo.pal b/graphics/object_events/palettes/followers/magcargo.pal new file mode 100644 index 000000000..04fdccbae --- /dev/null +++ b/graphics/object_events/palettes/followers/magcargo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 121 25 +41 49 57 +1 1 1 +177 57 49 +73 1 1 +105 113 137 +249 153 1 +73 81 97 +249 209 89 +225 81 73 +121 25 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mantine.pal b/graphics/object_events/palettes/followers/mantine.pal new file mode 100644 index 000000000..62f32dc56 --- /dev/null +++ b/graphics/object_events/palettes/followers/mantine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 137 153 +217 209 225 +17 65 105 +81 121 185 +177 169 185 +49 49 73 +209 233 249 +49 89 145 +1 1 1 +121 161 217 +57 81 121 +137 177 217 +41 65 73 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mareep.pal b/graphics/object_events/palettes/followers/mareep.pal new file mode 100644 index 000000000..04d1d5345 --- /dev/null +++ b/graphics/object_events/palettes/followers/mareep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 1 +1 1 1 +105 89 9 +169 145 73 +249 249 177 +49 57 65 +81 129 185 +89 105 121 +241 201 81 +121 169 233 +233 233 249 +225 113 1 +137 5 7 +233 209 105 +249 169 1 diff --git a/graphics/object_events/palettes/followers/marill.pal b/graphics/object_events/palettes/followers/marill.pal new file mode 100644 index 000000000..87cd5612b --- /dev/null +++ b/graphics/object_events/palettes/followers/marill.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +233 233 249 +57 113 161 +73 145 201 +49 57 65 +169 185 209 +185 49 41 +137 161 185 +113 177 241 +33 57 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/meganium.pal b/graphics/object_events/palettes/followers/meganium.pal new file mode 100644 index 000000000..0e95eb9ff --- /dev/null +++ b/graphics/object_events/palettes/followers/meganium.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 41 +201 177 185 +137 97 1 +129 161 89 +177 81 121 +161 185 81 +233 233 249 +73 89 41 +105 41 81 +241 209 49 +1 1 1 +193 209 81 +209 97 145 +105 105 65 +185 177 201 diff --git a/graphics/object_events/palettes/followers/miltank.pal b/graphics/object_events/palettes/followers/miltank.pal new file mode 100644 index 000000000..e64e3f03d --- /dev/null +++ b/graphics/object_events/palettes/followers/miltank.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 89 +81 65 33 +169 185 209 +41 65 81 +1 1 1 +121 73 81 +33 49 65 +233 233 249 +209 137 161 +73 97 121 +177 97 121 +241 169 193 +57 65 73 +89 41 57 +209 185 121 diff --git a/graphics/object_events/palettes/followers/misdreavus.pal b/graphics/object_events/palettes/followers/misdreavus.pal new file mode 100644 index 000000000..64f7bcb41 --- /dev/null +++ b/graphics/object_events/palettes/followers/misdreavus.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 1 +33 81 97 +201 73 105 +105 129 161 +33 49 89 +97 1 3 +65 105 137 +217 97 161 +233 233 249 +225 177 41 +1 1 1 +193 65 129 +81 113 153 +89 9 3 +0 0 0 diff --git a/graphics/object_events/palettes/followers/murkrow.pal b/graphics/object_events/palettes/followers/murkrow.pal new file mode 100644 index 000000000..3f8fb5c91 --- /dev/null +++ b/graphics/object_events/palettes/followers/murkrow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +17 33 73 +121 153 193 +49 49 49 +49 65 113 +1 1 1 +233 233 249 +201 57 49 +145 33 25 +113 89 9 +177 193 217 +225 177 41 +73 89 137 +33 49 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/natu.pal b/graphics/object_events/palettes/followers/natu.pal new file mode 100644 index 000000000..e3133ef1c --- /dev/null +++ b/graphics/object_events/palettes/followers/natu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 73 +49 49 49 +113 129 153 +129 193 113 +65 81 105 +121 17 33 +1 1 1 +97 81 1 +185 201 225 +217 73 89 +241 209 97 +233 233 249 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/noctowl.pal b/graphics/object_events/palettes/followers/noctowl.pal new file mode 100644 index 000000000..05f350df8 --- /dev/null +++ b/graphics/object_events/palettes/followers/noctowl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +97 65 17 +169 185 209 +201 185 121 +65 81 89 +225 169 169 +105 41 41 +209 161 113 +201 113 113 +233 233 249 +225 217 161 +97 73 57 +129 97 81 +1 1 1 +169 49 49 diff --git a/graphics/object_events/palettes/followers/octillery.pal b/graphics/object_events/palettes/followers/octillery.pal new file mode 100644 index 000000000..78b4092d3 --- /dev/null +++ b/graphics/object_events/palettes/followers/octillery.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 25 +129 105 17 +153 161 177 +137 1 1 +1 1 1 +137 25 1 +201 89 73 +233 233 249 +249 217 89 +177 41 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/phanpy.pal b/graphics/object_events/palettes/followers/phanpy.pal new file mode 100644 index 000000000..fa6f2ba20 --- /dev/null +++ b/graphics/object_events/palettes/followers/phanpy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 57 105 +185 201 217 +137 1 1 +81 129 177 +153 33 33 +249 249 249 +137 177 209 +209 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pichu.pal b/graphics/object_events/palettes/followers/pichu.pal new file mode 100644 index 000000000..ec7bc91d9 --- /dev/null +++ b/graphics/object_events/palettes/followers/pichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +81 81 81 +225 121 161 +49 49 49 +1 1 1 +97 89 41 +193 169 65 +193 81 137 +233 233 249 +249 217 105 +65 65 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgeotto.pal b/graphics/object_events/palettes/followers/pidgeotto.pal index 8b3242b54..03725fd2b 100644 --- a/graphics/object_events/palettes/followers/pidgeotto.pal +++ b/graphics/object_events/palettes/followers/pidgeotto.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -129 177 169 +161 177 129 209 129 33 153 153 153 97 65 33 diff --git a/graphics/object_events/palettes/followers/piloswine.pal b/graphics/object_events/palettes/followers/piloswine.pal new file mode 100644 index 000000000..a9806b257 --- /dev/null +++ b/graphics/object_events/palettes/followers/piloswine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +121 73 49 +169 185 209 +73 41 9 +1 1 1 +201 97 113 +49 49 65 +233 137 161 +233 233 249 +153 105 65 +145 41 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pineco.pal b/graphics/object_events/palettes/followers/pineco.pal new file mode 100644 index 000000000..b01042837 --- /dev/null +++ b/graphics/object_events/palettes/followers/pineco.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 129 169 +17 81 129 +233 233 249 +1 1 1 +201 65 73 +97 113 153 +81 177 193 +17 89 129 +161 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/politoed.pal b/graphics/object_events/palettes/followers/politoed.pal new file mode 100644 index 000000000..113eb9ff2 --- /dev/null +++ b/graphics/object_events/palettes/followers/politoed.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 9 +249 129 177 +105 185 65 +49 81 17 +209 185 65 +189 203 220 +33 65 81 +1 1 1 +137 57 73 +201 89 137 +65 113 121 +89 153 57 +233 233 249 +153 217 113 +241 201 73 diff --git a/graphics/object_events/palettes/followers/porygon2.pal b/graphics/object_events/palettes/followers/porygon2.pal new file mode 100644 index 000000000..b70e67bb6 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 193 +17 73 121 +145 233 249 +1 1 1 +113 17 49 +225 81 137 +249 153 209 +169 41 81 +41 121 169 +185 201 217 +249 249 249 +89 185 217 +193 57 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pupitar.pal b/graphics/object_events/palettes/followers/pupitar.pal new file mode 100644 index 000000000..5ea18eb79 --- /dev/null +++ b/graphics/object_events/palettes/followers/pupitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 41 41 +161 185 201 +185 49 49 +33 57 73 +233 233 249 +121 161 177 +137 193 201 +57 65 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/quagsire.pal b/graphics/object_events/palettes/followers/quagsire.pal new file mode 100644 index 000000000..5309d8c04 --- /dev/null +++ b/graphics/object_events/palettes/followers/quagsire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 113 161 +33 65 121 +73 145 201 +33 49 57 +113 177 241 +1 1 1 +145 89 185 +177 113 209 +57 89 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/quilava.pal b/graphics/object_events/palettes/followers/quilava.pal new file mode 100644 index 000000000..20abfb6b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/quilava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 81 +73 65 17 +49 137 153 +241 201 41 +161 17 25 +33 81 89 +209 177 89 +217 81 81 +233 233 249 +25 57 73 +41 113 121 +249 209 97 +185 49 49 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/qwilfish.pal b/graphics/object_events/palettes/followers/qwilfish.pal new file mode 100644 index 000000000..3606f4b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/qwilfish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 65 +73 145 193 +57 57 25 +225 209 137 +17 49 105 +1 1 1 +233 233 249 +33 73 129 +249 129 161 +153 33 57 +49 105 153 +193 177 97 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raikou.pal b/graphics/object_events/palettes/followers/raikou.pal new file mode 100644 index 000000000..07b95381f --- /dev/null +++ b/graphics/object_events/palettes/followers/raikou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 17 +65 33 97 +161 185 201 +33 57 65 +49 81 105 +185 49 49 +1 1 1 +233 233 249 +233 185 65 +161 89 185 +73 89 89 +113 57 145 +89 65 41 +57 97 97 +153 201 201 diff --git a/graphics/object_events/palettes/followers/remoraid.pal b/graphics/object_events/palettes/followers/remoraid.pal new file mode 100644 index 000000000..379f4e4f6 --- /dev/null +++ b/graphics/object_events/palettes/followers/remoraid.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 121 161 +169 185 209 +105 25 81 +233 233 249 +73 73 73 +1 1 1 +193 209 233 +25 57 105 +113 153 201 +41 81 129 +145 193 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/scizor.pal b/graphics/object_events/palettes/followers/scizor.pal new file mode 100644 index 000000000..ee3678e0c --- /dev/null +++ b/graphics/object_events/palettes/followers/scizor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 1 +137 89 1 +129 25 17 +1 1 1 +185 201 217 +41 49 65 +81 89 113 +209 57 57 +233 233 249 +145 153 177 +89 17 9 +105 113 137 +161 33 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sentret.pal b/graphics/object_events/palettes/followers/sentret.pal new file mode 100644 index 000000000..7e9a52ae0 --- /dev/null +++ b/graphics/object_events/palettes/followers/sentret.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 89 +81 65 57 +241 225 193 +73 41 9 +1 1 1 +161 65 113 +129 97 73 +217 193 129 +49 33 25 +233 233 249 +137 33 49 +209 169 129 +89 73 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shuckle.pal b/graphics/object_events/palettes/followers/shuckle.pal new file mode 100644 index 000000000..ecf1abe78 --- /dev/null +++ b/graphics/object_events/palettes/followers/shuckle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 49 +73 57 57 +1 1 1 +89 25 17 +241 217 81 +209 57 57 +233 209 201 +201 177 65 +113 97 33 +161 33 33 +201 169 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skarmory.pal b/graphics/object_events/palettes/followers/skarmory.pal new file mode 100644 index 000000000..5d54ff7e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/skarmory.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 17 +33 49 105 +121 145 193 +161 25 49 +1 1 1 +201 57 89 +209 233 249 +73 1 1 +65 97 153 +249 209 97 +153 177 217 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skiploom.pal b/graphics/object_events/palettes/followers/skiploom.pal new file mode 100644 index 000000000..6d538d4e6 --- /dev/null +++ b/graphics/object_events/palettes/followers/skiploom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 33 +185 201 225 +233 193 25 +129 193 81 +185 49 177 +249 217 81 +121 81 9 +169 121 9 +41 113 9 +233 233 249 +1 1 1 +185 217 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slowking.pal b/graphics/object_events/palettes/followers/slowking.pal new file mode 100644 index 000000000..30d658e9b --- /dev/null +++ b/graphics/object_events/palettes/followers/slowking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 41 +153 161 169 +113 49 57 +1 1 1 +73 81 89 +193 201 209 +209 121 129 +153 65 73 +209 17 17 +121 89 17 +233 233 249 +233 201 97 +241 169 177 +201 161 65 +201 81 97 diff --git a/graphics/object_events/palettes/followers/slugma.pal b/graphics/object_events/palettes/followers/slugma.pal new file mode 100644 index 000000000..8697071e3 --- /dev/null +++ b/graphics/object_events/palettes/followers/slugma.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 17 +161 57 25 +73 1 1 +1 1 1 +217 97 65 +193 73 41 +121 25 17 +233 209 105 +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/palettes/followers/smeargle.pal b/graphics/object_events/palettes/followers/smeargle.pal new file mode 100644 index 000000000..380390f8e --- /dev/null +++ b/graphics/object_events/palettes/followers/smeargle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 177 65 +177 185 193 +41 113 41 +161 153 105 +217 217 185 +97 89 73 +1 1 1 +65 57 49 +233 233 249 +113 97 33 +185 185 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/smoochum.pal b/graphics/object_events/palettes/followers/smoochum.pal new file mode 100644 index 000000000..79f273b2d --- /dev/null +++ b/graphics/object_events/palettes/followers/smoochum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 137 25 +249 153 201 +113 33 97 +1 1 1 +177 65 153 +129 81 1 +249 193 49 +233 233 249 +217 65 105 +177 185 193 +153 97 41 +225 161 105 +153 49 81 +201 129 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sneasel.pal b/graphics/object_events/palettes/followers/sneasel.pal new file mode 100644 index 000000000..d3e0617ce --- /dev/null +++ b/graphics/object_events/palettes/followers/sneasel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 17 +57 73 81 +81 153 177 +89 97 105 +121 1 1 +249 249 249 +1 1 1 +25 81 121 +201 49 73 +169 185 201 +241 177 65 +57 113 137 +129 145 169 +153 9 3 +25 89 113 diff --git a/graphics/object_events/palettes/followers/snubbull.pal b/graphics/object_events/palettes/followers/snubbull.pal new file mode 100644 index 000000000..36e6c87a4 --- /dev/null +++ b/graphics/object_events/palettes/followers/snubbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 153 +49 65 81 +209 193 145 +1 1 1 +185 73 113 +121 33 65 +177 193 209 +73 153 193 +241 145 185 +233 233 249 +209 105 145 +33 81 113 +161 49 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinarak.pal b/graphics/object_events/palettes/followers/spinarak.pal new file mode 100644 index 000000000..2f09009e2 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinarak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 33 +113 137 153 +81 57 1 +121 185 33 +233 233 249 +65 97 89 +169 185 209 +161 217 97 +209 65 105 +1 1 1 +113 17 25 +193 137 1 +225 193 9 +33 81 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/stantler.pal b/graphics/object_events/palettes/followers/stantler.pal new file mode 100644 index 000000000..ca315697f --- /dev/null +++ b/graphics/object_events/palettes/followers/stantler.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 25 +89 73 9 +169 185 209 +201 145 89 +73 65 57 +225 209 81 +97 49 9 +1 1 1 +233 233 249 +185 97 49 +137 33 49 +113 89 81 +201 177 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/steelix.pal b/graphics/object_events/palettes/followers/steelix.pal new file mode 100644 index 000000000..cac012566 --- /dev/null +++ b/graphics/object_events/palettes/followers/steelix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 121 145 +161 185 201 +49 65 81 +1 1 1 +233 233 249 +193 209 225 +193 57 57 +129 153 169 +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/palettes/followers/sudowoodo.pal b/graphics/object_events/palettes/followers/sudowoodo.pal new file mode 100644 index 000000000..a16242e5e --- /dev/null +++ b/graphics/object_events/palettes/followers/sudowoodo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 153 65 +1 1 1 +201 169 1 +25 81 17 +161 129 89 +121 209 121 +129 105 65 +185 153 89 +233 233 249 +225 121 121 +89 65 17 +225 193 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/suicune.pal b/graphics/object_events/palettes/followers/suicune.pal new file mode 100644 index 000000000..2ec7c2b8c --- /dev/null +++ b/graphics/object_events/palettes/followers/suicune.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 153 137 +65 33 97 +97 201 193 +81 81 97 +97 153 193 +185 49 49 +129 153 153 +185 201 201 +25 57 89 +161 97 177 +233 233 249 +113 57 137 +49 97 137 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunflora.pal b/graphics/object_events/palettes/followers/sunflora.pal new file mode 100644 index 000000000..34210aafa --- /dev/null +++ b/graphics/object_events/palettes/followers/sunflora.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 137 49 +225 185 17 +89 185 81 +1 1 1 +41 81 17 +201 129 33 +241 225 113 +233 193 33 +121 209 113 +225 161 41 +129 73 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunkern.pal b/graphics/object_events/palettes/followers/sunkern.pal new file mode 100644 index 000000000..8184c4986 --- /dev/null +++ b/graphics/object_events/palettes/followers/sunkern.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 9 +233 233 249 +89 65 1 +113 193 81 +73 97 113 +1 1 1 +153 105 9 +241 217 113 +33 49 57 +105 161 57 +217 185 49 +41 81 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swinub.pal b/graphics/object_events/palettes/followers/swinub.pal new file mode 100644 index 000000000..1ac67e68b --- /dev/null +++ b/graphics/object_events/palettes/followers/swinub.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 97 57 +185 153 105 +113 89 81 +201 97 113 +145 41 65 +73 41 9 +169 129 73 +1 1 1 +233 137 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/teddiursa.pal b/graphics/object_events/palettes/followers/teddiursa.pal new file mode 100644 index 000000000..10b1388ec --- /dev/null +++ b/graphics/object_events/palettes/followers/teddiursa.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 33 +177 185 193 +225 201 97 +89 73 65 +241 225 193 +1 1 1 +89 49 17 +233 161 57 +153 97 33 +233 233 249 +201 209 225 +217 201 137 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/togepi.pal b/graphics/object_events/palettes/followers/togepi.pal new file mode 100644 index 000000000..52fd5d0ed --- /dev/null +++ b/graphics/object_events/palettes/followers/togepi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 73 +97 169 225 +233 217 89 +49 57 41 +193 177 73 +217 209 209 +217 81 89 +113 97 49 +233 121 145 +153 153 145 +249 233 145 +233 233 249 +121 201 241 +81 81 81 +1 1 1 diff --git a/graphics/object_events/palettes/followers/togetic.pal b/graphics/object_events/palettes/followers/togetic.pal new file mode 100644 index 000000000..bf8df7baf --- /dev/null +++ b/graphics/object_events/palettes/followers/togetic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 145 +233 233 249 +41 49 89 +97 169 225 +41 41 41 +1 1 1 +217 81 89 +161 177 217 +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/palettes/followers/totodile.pal b/graphics/object_events/palettes/followers/totodile.pal new file mode 100644 index 000000000..1a7c37644 --- /dev/null +++ b/graphics/object_events/palettes/followers/totodile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 81 +65 73 81 +81 129 185 +113 25 41 +41 57 97 +169 185 209 +209 49 73 +1 1 1 +233 233 249 +113 177 233 +65 97 137 +121 105 41 +161 33 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/typhlosion.pal b/graphics/object_events/palettes/followers/typhlosion.pal new file mode 100644 index 000000000..eeacd5c1f --- /dev/null +++ b/graphics/object_events/palettes/followers/typhlosion.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 81 +73 65 17 +57 137 169 +241 201 41 +25 57 73 +161 17 25 +209 185 97 +217 81 81 +233 233 249 +57 97 121 +1 1 1 +105 89 57 +185 49 49 +249 209 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyranitar.pal b/graphics/object_events/palettes/followers/tyranitar.pal new file mode 100644 index 000000000..4dadfce81 --- /dev/null +++ b/graphics/object_events/palettes/followers/tyranitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 121 81 +137 185 105 +57 49 105 +121 137 145 +33 41 41 +161 185 201 +113 161 89 +41 73 49 +81 105 169 +233 233 249 +177 217 121 +1 1 1 +97 137 193 +49 65 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyrogue.pal b/graphics/object_events/palettes/followers/tyrogue.pal new file mode 100644 index 000000000..e0f3829ec --- /dev/null +++ b/graphics/object_events/palettes/followers/tyrogue.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +193 57 57 +177 185 193 +89 49 105 +169 121 177 +73 89 105 +97 25 25 +1 1 1 +233 233 249 +137 97 9 +201 161 217 +145 41 41 +113 81 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/umbreon.pal b/graphics/object_events/palettes/followers/umbreon.pal new file mode 100644 index 000000000..83c9ac129 --- /dev/null +++ b/graphics/object_events/palettes/followers/umbreon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 17 +129 89 9 +209 25 25 +233 233 249 +225 177 41 +25 41 57 +65 73 81 +1 1 1 +249 217 89 +105 113 121 +137 57 1 +41 57 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/unown.pal b/graphics/object_events/palettes/followers/unown.pal new file mode 100644 index 000000000..d729ca129 --- /dev/null +++ b/graphics/object_events/palettes/followers/unown.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 73 89 +233 233 249 +41 49 65 +185 185 185 +97 105 145 +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/graphics/object_events/palettes/followers/ursaring.pal b/graphics/object_events/palettes/followers/ursaring.pal new file mode 100644 index 000000000..36e1ff602 --- /dev/null +++ b/graphics/object_events/palettes/followers/ursaring.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 57 +161 169 185 +121 73 49 +1 1 1 +145 105 57 +209 161 97 +233 233 249 +73 41 9 +217 201 137 +193 193 201 +177 129 89 +89 73 65 +153 105 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wobbuffet.pal b/graphics/object_events/palettes/followers/wobbuffet.pal new file mode 100644 index 000000000..94c8adeb8 --- /dev/null +++ b/graphics/object_events/palettes/followers/wobbuffet.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 161 +57 161 193 +33 49 65 +169 185 209 +57 81 113 +1 1 1 +25 57 113 +113 201 241 +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/palettes/followers/wooper.pal b/graphics/object_events/palettes/followers/wooper.pal new file mode 100644 index 000000000..b0ebb5db6 --- /dev/null +++ b/graphics/object_events/palettes/followers/wooper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 65 121 +145 201 249 +73 145 201 +177 113 209 +97 41 97 +57 113 161 +233 233 249 +113 177 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/xatu.pal b/graphics/object_events/palettes/followers/xatu.pal new file mode 100644 index 000000000..399c787a2 --- /dev/null +++ b/graphics/object_events/palettes/followers/xatu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 145 57 +113 129 153 +49 49 49 +129 193 113 +65 81 97 +176 198 222 +121 17 33 +1 1 1 +233 233 249 +217 73 89 +97 81 1 +241 209 97 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/yanma.pal b/graphics/object_events/palettes/followers/yanma.pal new file mode 100644 index 000000000..40a8c8679 --- /dev/null +++ b/graphics/object_events/palettes/followers/yanma.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 121 49 +41 105 9 +185 201 225 +81 97 137 +113 193 81 +185 65 17 +145 49 9 +97 25 25 +1 1 1 +241 105 81 +161 233 129 +57 73 73 +233 233 249 +217 73 49 +0 0 0 diff --git a/graphics/object_events/pics/pokemon/followers/aipom.png b/graphics/object_events/pics/pokemon/followers/aipom.png new file mode 100644 index 0000000000000000000000000000000000000000..76dd6b92bb14c259d6e4a61c6c7949fc263b2584 GIT binary patch literal 798 zcmV+(1L6FMP)DKHkpTe#Q7Lih>G_Fisflq>iJ7^{v4H>p00000h?Pvk00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>K)G=$@Koke?0}ayZCZKlk(4%ldP;e@P zCl9G_s3{&Z^b>TI&xKR21YD;eMUbJ8(gfPYi-e#3PuTcn%3mbra$i z?tePu+_BPf^VVRZ^#|bSBgU`tW(QeDSg4z@tg!XyLw@b6fLnujst1_kg9F>&;5c!E zni)zTt`?cmMP9y!mE7t=|!a4Fcm?cTlXw!|E-jAdi zOSM2*LHlR8(OKMVBgz83pB1My%X*j4+FLg%d#HPSci&cM1)x^iUv2fBEi0S%>H6lK cg@0JT0h#bA42cB`8UO$Q07*qoM6N<$f~t*nUjP6A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ampharos.png b/graphics/object_events/pics/pokemon/followers/ampharos.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbb26f04426db24b892be32466383eb93773c7b GIT binary patch literal 775 zcmV+i1Ni)jP)0u5pjW;F*!j20Rg$m;qh5fff)%=VR7-%S!r1b>FN2&p&K)iG-uF%$q`1tc)slEE25$ynMwTczd%`6zoFlgaEXF%vKCRmV49dh?{x)r&DYW zy4m?2-vC^ov8LA(UIH|oEnZe!;HDl6!|a>sWLXdli_Mm&hUL4d=etIqOsBn<+iWQ{ zEU*|ufX{tuau-FcSKKv>zxz?4tx37M`ln0XJHr+2_lKps4lyo4L_SSGTwNiHU;F43 z1?>3Iu6X7UXC-u*|I^o*k=WKo!HmCQO3)^tIWwkmSpqs{JNGw`PJ?#5^ z8(Ee6_-C!XnBIqT+i#_?S;h1Ajx)ejxw=002ovPDHLk FV1noaZ;Su{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ariados.png b/graphics/object_events/pics/pokemon/followers/ariados.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6431a13a1e315799294fb2325410a778dce77b GIT binary patch literal 1043 zcmV+u1nm2XP))600009 za7bBm000XU000XU0RWnu7ytkRiAh93R7i>KmAy|RM;OLO_7*POGv=;% zDJ&B8&c_qRS(fR6u^Qu2fiZUd5lms8sKo|OJmDBiQxjjoIOhwD_OCxqW1eV(v06Og z7|XRk-Sg~H8s~m~O6dw6kRxJoG*Oa*tFvb?M5TU+!F0y znc+ej@6tyP zVuZhTs7}8TdJ)@5akgL<0N#JT<-^SoB49u(c%s;tE=~b}jIbiMoDE7HA-GuH)6AVg z04ODdlsjFsa#0gICfO{~l39^#Am0Ixe(Uvrf%;UxQ~`Ue7o;($AWnx&4#pyU*`yUOh^q_Dk0RI^CiDPpVphx zUg@l=P621Uw?>IQqkgQ!KIZtrs;V&Zq8T9N7`V0YkD4P}<)UVlD7Qsm4tv{boMh~| z7sQSIVjG7W_Mr+RFPc>e-_4nV17f9ECHm?oBy4R*a-8|w$N#Z1u>rq!|2ou;h0TZo zh!&TZS+bsY9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/azumarill.png b/graphics/object_events/pics/pokemon/followers/azumarill.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbc660ed3b2ba4f853b0a5551642d95754aee79 GIT binary patch literal 725 zcmV;`0xJE9P)IJ$pHZY(b3@m0000000000RmMWW00009 za7bBm000XU000XU0RWnu7ytkQOG!jQR7i>KlfQ1;Fc8MMcpx-&@Q}5gT6Az47lF}k z72*i$kO1{iWX&5?@KvBj15waLfC(ss`vTom#D-ERqZcE7sGdklB5CwbhAxF~5b(S2 z?!F@>5weec>|-DQNeCNh=IB&p?Nc>~?rG@6(RIC8fIYE{9fMn_GdVPQ@3`)u(DdcN z>NdX_qZAqinwV`MmX0AQfn$cxS_6o&m#5>_01A9Yp=D5lUnmN%%$3pb$}#Y&G$8c! zx=mMiwZV0JML7=ifHek0)JMvhG9V(H*#c=4=RV3Aq_ zMVPt<HvLu_8G#dJBFo5Scb4O{~{28jQ_!LK;KnOWZ{vSlb6z!~@mrtmp1 zPv^2S#RfC^7^aTqvdkS%VG4upmy|r}bZcOy4TNE498a_LJM%G%7+xyX{}Pq#XR1h` zUN`AW=Yf0$0J@k@l|i$dW^TSSF@#SL4KseJHsO*-nJhwA)S=d;d32d^$s=VjXKLf- zM^{Ww#^$xH$B_7&jQh$!C_a!y`AKlFevb=pv;i6_Hm+ntn&mW8-!ve@Ex`7$e*uNb zA7xSQ2j{~IlJ!7oC7V2XU3NTAHt&)_?}J{B@Pxlj4kslu=9Bv^#;Q*$lfR$IA`go5 z)fO|_+$(zh`v-$xZsP5#=RwQ)SM2o))4;>}icD)7OKi>SU?j2S3XI~vz+pFA8#y;Y2^&N4y`X9zm8BRiZZ*iF$00000NkvXX Hu0mjfo}xz1 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bayleef.png b/graphics/object_events/pics/pokemon/followers/bayleef.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1fa7bd2862c9ddac1c6df5acf72419645cd9fa GIT binary patch literal 745 zcmVQ31)hS+P-h>FN3D*;xSr0bx-g000000000000000OMyaV00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>Km9cKyFc5~>K?^+zkd}7K*p7q(*q#EA zOC|>*3#i!|AVBg2d4py*V&I&Gjnkr*7PmqQSbDioc3|BxW(su3l-s`J-T&WNl+4&$ zyv3`8F%yiDG5@3Dw;|Pgsjvf=(k~?(c>_IVwLB(GQrg}?Drz7nv=kpZCAr7IWwAjd zv4J5iTxqNrd48Ju^;PDWR4KhP;BE&jVL6r{rO%a~;+>lxRk1``j%JP%GSv6DH*|uy z)G<}sjUg?m@}5ZBVvG=Xr7NmbVcy0-)8EZ?k)jHq39wdQmbYj)tqfq^#yUw)DSyBt z^9z8P-OoB50?d(t$J++b1=yF^MSvq&08IORecr?Xw1HKae|CbG0d}(xcb~ghLZa|m zKEG&SI{49FW1lyIvzy{#9_B^YGYar>`W4`J+BbW=$$bO3nunPWZ;Gi6@Di?Imi3p= z=Pv$!1h~5lGZ$J38{jqk0+GGn9s1nGX}9u2mMs8-@!&BtxeytikTQ>R zfGoBlX7?Mx{wev)k5rcHB*@Gh0-WIiC`Yj|pJ6%*u@lU-%CG@tR*Utm7_$&ZG8czu zV&rk(&x|-pMcH%NF`Bp*<67VsjdB#{V=+bsaW3i_8`S4o9pGztpw&5=crg~DM)ka7 zWN5^wERmzBMY$j^&UI6v1>6cvb&bzO)zb5}!Too2#oA9KVgHan5YoLT^^bF2K2LDV bUL_s@l@&<^SEFK^00000NkvXXu0mjfsLDx= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bellossom.png b/graphics/object_events/pics/pokemon/followers/bellossom.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2232f0108f8b508b513883c9be1872c83e837f GIT binary patch literal 699 zcmV;s0!00ZP)Kl`(7EKp2J(JP3s>!ccJQ{D>O9)w{ zMOlkz>!Hx0G9ioUAXC(}OD6{#6-80W5El$3TWwM|kW8hmT1b{4ns4fsA-|z_isbw5 zEQeC)RDY8ny{G5Zon=hOVivQQ#r(IUb_oe@$(1%Cohfy0Sy?Vrf~U!;`(~byC|-*w zZgD~R_@yh@W(#GZ7j)pl3)w*n_O5T>^P%1`0%h?$e!`#3P3&I(J}6&rRfd?c(89d~wvuB|t!t6X5{rfFcN zLQ7!ND)?YCbPjATV}+QrYZeol1PL~7xQx*pv#05grcv=-fj4aA4@n6LD&udmO~P% hLZK)iG<^Koke?0}BpH<}RHoLxxT!G6vH{ ztq<3tbBA_KcWjZdQJ8#n> zNwERG>CH+fzRtI@6|d&ovfL5LpI@zfy)jGk11Evjw~%sJ*Bdk~;_>2%U6W(!Snq>Z zXDo#Ex-6zz#$s?Lt_!2Rd?G~agJUmd@P1h}P%J}M;EC(fHTXd>vQJ27EFUHSUXDby zJP;iMe+@90>5UeVsCX4czRt2BPXX!;>K1Wm7vLDa&}mO=Sujtn!M!n)N2xVXEOK-h zuEaxy*LF{9^t7n=`HoG`PsLGYLns$j%aM#=GN+5lCDFTc^CK^Kv(b>Kgu2&jDOjOZ|HdH zl>dR^d?w@RleA084%@cTouk2w_T8$QYMK5s+kQ-Xf9XztRP`>cywY%b?lfL=!MU^C z{PFrSRqC~FAmSo5ja#I(jI8^0OI>c=_>cJw&nTco{rB}B00000NkvXXu0mjfTW2<> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/celebi.png b/graphics/object_events/pics/pokemon/followers/celebi.png new file mode 100644 index 0000000000000000000000000000000000000000..faec947981824ff58ed875fd7052d3f21ad41770 GIT binary patch literal 663 zcmV;I0%-k-P)KmA^~FKorN5;anO)Xc2>5#aYrt=u&(N zqC*f0YAGm4LGeFua&U1A{(#WVB6V>vh{i%fRS0Cr;{Ri=QSaT$4|NfQez&`K_dfTz zCXJ$uGtM}Fme4CKYhm&3?*YSVF<_za0DfULj;RdG9+S=_Z85clx`OMn5wA+2Mx{tA zm%YhbG$k3a$d6l0nz*Gn080a?Q4FxGo(w3XH7p8r-ID>LN;G|_8-jkL?{j*a?Jqa^P6s#{>hu1_{k5kN9>=J&he5l$H; z4UWTb1~s5Ys_V2|bVZU;=_!0cbZV4L>bhlNC^6D|i)R7)ky-y_v;Wmovup>QZe)bU ziI!pPqsNdMRei&#`gum0;o|p-8}$j`b+qB%y)JUo&Mhc1QX?PJeqIF_K x{{D$kR;W=b#E7J*_Srx_@h|H?_(cDsyaT~C=!Q%gjfVgL002ovPDHLkV1hh=BH{o5 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chikorita.png b/graphics/object_events/pics/pokemon/followers/chikorita.png new file mode 100644 index 0000000000000000000000000000000000000000..e654b62065e5a80b431d35b0c5fa323f0d3a5cfe GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*yuP>bLGy96AwCC zW(qPgGOpCrEZi9Q^5xHiHw%HP(11>uYYI?^v%n*=n1O*?7=#%aX3ddcU|XVx}mzH=={x@}w#TLVhzXZP@&7FB`##Htv1~WGG-8xqonjUtJ z--5v~RW|th)75k1Pl@hgO1f3Ga$QAM`mygC42HR~B2P{7r-l7HcWb$ut4Go9Ekz+m zEDk*I^Hi3a2`d+KW zRu*B#to02FSN2+!pSsud`J8%$-0E!we-y4ih-aJiCo@CH=0HM3MZ!a!3GCNq*{;7> zQ{-?wo8b<7g%p!b1VaydpY^`OjD0$}U-ql8f7s$}^zPcsV}0+h9j;c`e(J}?KQp|) zy(?r`ZBb`0@my3ZA?$bi*Uu9dt396j=gjpJfAZH)*})p|Yinido%t`Bm+ai2DeG)@ P78DVlu6{1-oD!MFN2wx!C{!00000wN3G|00009 za7bBm000XU000XU0RWnu7ytkQI!Q!9R7i>Kls{|RKp4hfIIKaM(x9Oz(}^n3E{YB+ z+&Pmcdk`UXIhvw^y2aq5YrjF)t<^yaq~xxGvb21AoPu1> zp`9S$p&#B<-GEntCAe##s)?ho)~a29~ zJ-%%Ksx8+8DY4cp?>HF++!h=iG~aN4?K}X$XI4XZWNug+1m7F*--rqy{y|OLMd0V+ z1q4UZa2DO(u+$PPg0;g+m*j$V20acArf{8$yhbfGu?yjPu@E($Ri60e(V2)-OK^AZ zvWzkpLZl{C`2sW(6Y7*4qhJiPwT>**JbK*dOwPn*VhPSdmoZ9mjDoQV6{9w6GA|&b zi^U~PM^l~hG^6u5a-s1G4JhyQ{PWOZnQXQa;@vWpX@iW`@Lgnry8nzbO0$kh zv2p~-lk=WI2;=dRuEwbj6*D(HYYkp0!TlbG$!h%3{u6m=Ge+uPuqFM#Djh0ju9=(6 z!T*AKS+ec6Xf`pELtLH2dxJyv$YzXm^HrUAQ|nNRpPIKnbmp*`lu43Qr*)h1spQv_ zHiDCf@pG)+()Z7*uAyuuiaSA%dr6tVzTuRTy*7oQL@%qq1to6n_q)<= qPuN?KeY=BkyW9N6q%X(dztt}Re6HsV8}6V00000YWU^Mr1 zaSZY3e0zCg)?otywg)2(ztSkMeD{|A z&kt17(#{L^>haIuTmDk)r;4GR{K-pis$CYJu5tcRzN+r_ACN&XLV4I#Sj$&EUP8Kf55+d%n8Q%Imk*AAUW5*ZhKK{JZr% km+r`yh}>}Xc-4Qi`&+Z;HEF#(S_KMcPgg&ebxsLQ0NVV?6aWAK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/corsola.png b/graphics/object_events/pics/pokemon/followers/corsola.png new file mode 100644 index 0000000000000000000000000000000000000000..62c09dd48a8ea71c889aec2b056b740933b11038 GIT binary patch literal 669 zcmV;O0%HA%P)G`QaS$QEr>4Bl~slnN4fx*$~000000000000000VD!{G00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls}8xFciQIC#=2w22JSF?e3t%Euje8 z`UtmmFmBw*Lx|&yCCC<8jqKOCG?1~}aK&G)k`wEX8*^|_=#aPltf%*T(zES(*SN+t zu5pe3B=QmCY@E?Q$*1{+`iD`q?cah!=A?}{JPGmQvS9l&c2@8)A#Mgi(z#tBou+!& zniJ4M35sG^9|E3!ms79*s~*)EzqWHN(cr4<)vhG+607SJL9!McTdlq8VOdIR3re|B&?|?^mY!_4Pv!$$&=p#Bp zEOQ}Y)*GNWcE4`QDNr-hG5f3cvfzAuQHW)3TU9#w#73wB3Enio>M8baKJ2^wOrsR; zJ2nW{RabT2Om|~e1;dBmY4?##v3K+4`T5sd?=sU*UDwU6>lksrVgAtF&!!p8Z{OWp zd(e~Qr!$bd+1;(x@R<7z3q(BfT9*GT^PjxH|2F;r(uDrFd0ap*00000NkvXXu0mjf DWW+L? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/crobat.png b/graphics/object_events/pics/pokemon/followers/crobat.png new file mode 100644 index 0000000000000000000000000000000000000000..214a0be7e9d57e185b57d7be3ebd6d92bc5ad41a GIT binary patch literal 963 zcmV;!13dhRP)(5n++(>G^q4k)bg;>DghaxzV9Kmc4G&y zPC=E)Z_rJqQzG!#p~#$}=nJHKWJ4(KQ}*(ovXchr(k1j@Q-?g?xfDgYC|=uZJ8C@p z4eY6_|74IZ^-py`(Zo1-_Ba2h4PMfPE;t4NtdAyHi9c(Q>nERB(&f@879HSaoV7kI zfqXdgW@QXw3?7g55#YiZg6?D+uZ#8LApivqG67=Z0Lb;GXF=yX5147bZvp_s{1Ha} z3{WDH0keRfg~S{K!08UKin?qsd}1xzWhxulgk=cm3OV3F$(1$3-X}Ic{T!#;wpd2p zr8bGxz6k)Dh1E$nNh=B38%&fl>wRK~rbhs$I{+mX8DK)O@T}7#fT8w<2W)$92)MPQ zl-H?L187&w>9RF9)+Q#vRahYu1D>%FpgX5T=S*8by~SXFdTJsOkW2_T82zkCfF<*Z zi4_6;Jzbe(fP$;r?>O8kWv|u7$|jaL7y#_91oa2j+B*Vvjm(|eH#{UJRs_7i$ARn7 z*&*wn`1{A)F-wWPt%xI@TF2d`&^Tz`_{VOsvK7gehs6E9xejLa?N(tw@`t|G55IKf zw@g{#`8VwEWbYry`A%qR3!M4^#G{JzsZ%MjXp`YP8cG?n6)GebUmqScm*HY1Ohw%L z!Ft})B!x2-64j=nDkb(TCw>t$7PAwF?^#I(>*6e8ZAIRn4l-5OTGy4Z=t-s5XQwf#iG4XiM%&KcSB!F0ka~75#T@ulmihQgT2Da{LmV>Qm;-77k zcrqf08yQ!Sdd=rx&^iF<52m7z$^+tS3q7E76>V8atk`Ig#0?}sxryg&v1rzA(QNO{ za{$q~elopQlk7GZa04RV_i}TYgeL%Hwx#{?Eqpf}m?sASeFYgHD{kQcKA{I>x_beI zqdpz^2Y^B-+H!s#Y^F(g>xOyBegS6s{P<5msAU8IPH&00B{QKM4Rd<_el4E?Knyj4 lxR(C|D5rd3k9m>FN1FX^E*RL2<$10RaJtNdeI@NdN!K)-i9>KokIAtFi|qFHxleq6;7)bxfZV zFwS5&3pIGjK$ZqYDuIg-T?&Y)Q#-J>xI^7k-MUnW#pzI9hg2yNrBUZf%q*ztZ@@h( zch@7AA|aUirhN9h_b$2fIfii=m+`;Cy1;*3V7fBQJtbT9g#|9KeRBS$>OU!1)!V8Z zoyc=moyF72P@DB9T3aWlKYJeyt+N3~`$HYpYrf9bkJGJhas$QLfTKfyh;5v%?doiO zs#dq8FRYqP80)q65ZkzoyE-#^)!Bdp-03c8Z9j(sIJ1L&C%)GJC~Wp`s%8VOdx-A1-s9NLn++I2=Mz})qDLxlTduiD%JbN@lG_i}H5 z&Q`1n_uQF9eKVPyqcg9?J|vm>lR%OprH#bt=R@XxzTHD8HY@ymw0i_oTfBuC=3mA! z@PcN->;=5w-SitZftzIRH#A7vfOf&2bw6GvWD| zIPd7ZSkk<yZhis`9>EU`6b+iQqYqxm;?T1$PLp7{PPnKTZ-jMv;Cd_Hhuy8)?@VWD`V&Y O0000G>fsQTfqfQDLE>DJeNYQSqS>VLuTP00009 za7bBm000XU000XU0RWnu7ytkQKS@MER7i>KlQC%9Kp2GuA}R z=X`8+0B0l40nat6HNH6@9F19NXkByZU}YVv0~_j@4jV5Bt8}!Oh~p?Mcd;mrMF4P3%>95#82^oG()91xd@f*-U z^ZfR<-)dyTPPevFySI=J&dG4YCTTIP^Hjmwi=Ex%4?IlM^#=BA*AMo{>^OCvs_V79 z7Kk(^+y{+ZLb`C?C&X12E3SOsF6&Ks&F)qLR*(AbGq|wgc8|XU!z16XyrB91F$i4! v`Mxs!_2bot+J0?L{@=`vUTr$J@Xz!c`qCwmitc1700000NkvXXu0mjfwzED+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/delibird.png b/graphics/object_events/pics/pokemon/followers/delibird.png new file mode 100644 index 0000000000000000000000000000000000000000..ce37055ba2e11bfeb391f97e425b86e4faecaa9b GIT binary patch literal 676 zcmV;V0$crwP)G|1NNl8iR>G_!f0m&H|000000000000000$k$yO00009 za7bBm000XU000XU0RWnu7ytkQ8c9S!R7i>K(=l(;Koke?Gg)qo>%>aTQc^(~V;P}R zrYMn>j7*)aM5n;W0E`Z`qH~xmMN!^}vLG{6UJ(9roSnq?eC>5WVnKO>rJr>7fA7vV zA*VXksZRBuRLCDUp<(gle``7(*W(luVkAwkZzhkK5WVThq)psFF(C`E@~oSLT5m){ zTkBgliE*H6LY9+N{yX+Vo#RQ-aH8|uyY(8!sTN0uZT<@qttkxiY_iq3k#_;m#HvNv zF?@?*+0@x!(>!AVdDx9RfCM*CEQ+rIV7(1>CQI<%Y$WTB#9I7asxBsi4s5%L-b^&y z1RBQxqZ#V1y4VmT@gfQIX72&e6)muzd|Ciw@=8=60&m{c8wk&5Eef;6+Ftz4W zC+%13OYaUcIb$<4v1(C{?a!EB1(NI1X{Yj!RhsTlgPN&7eLe5UH0pZ{yO{X9xHVG- zI;CBC!j{iIq^4Y7+Br0cMyu?KRmUgM_@{@xPaF+W8EBN2r!=m_JCz3@r1Wt;A3n`& z6vzj;V=E0Vb}eg%uFWcZF5MAqlN}& z^B(e00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)iG<^KokdX5zb5La-iVVq#ipprUbf3 z_LCH98CY0zejLxo9)aUp57*~h|P`l@KL)&t+etYEG-v(g0s{xOth zWdp?PC2;dJb#pM(KEXl& z957J1x1OADWD!M6SyZ;~P_o+4OtY}-eYXD2aBfX;GoMK~Z5rIXQX3*#H0lDj0xd00009 za7bBm000XU000XU0RWnu7ytkQi%CR5R7i>Kl)sDGU>L{WhE8o99B$|!NT77MQ4j}* zP4z)!pM!Ci#QmzuOxuGE8isWzT zo6E2Fm5ah*H=pfeUccYx$NRhhY-1bS@FJ$uY;N43MYEybeD3xJJGA12-?RZrP;4A- zxP(|7QHqlXt*E27G(a+CV4w~6=-&A;ZFn@>q&(Zp!Iyg)@r%Qhp-ErdWnL4i*pZ~J z(DPZli}^DfFo>NanN(cnb#`93?y>R_8 zYYmY!WE(T|>DLFs(BZ%kun_CXzzTz7%-)P*j@eV|uRd{iHDKS+3BxIw=pfCkHf~AMT=O0AjEt$&^=5R(Is3%2 zcof$|UJUt3sIaETs_$f0+`^|A2T~tSP-+(>EkKsGb zZ>N2QR6&FZk`J;l9fW-)~oIa=Do;=>)&floGk=%wv1Lzk+w+(NQURGe6sXbq1j} z@E6-<2+2hUAfLMt?F0gg*X^Z$*18;p7x T{(WgQ00000NkvXXu0mjfY4CON literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/elekid.png b/graphics/object_events/pics/pokemon/followers/elekid.png new file mode 100644 index 0000000000000000000000000000000000000000..e27d185de48cfe63dc20cae626aa254ee5beba4a GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!XiLV`d;D5F9LI z{CP9c($Vwf%b!4btbqSv?i`>5XMsm#F#`j)FbFd;%$g&?z`(e~)5S5wqx0?5v&BsY z0!JlhytH-uaH{=+wxaLe@Z0mQ9-B9DqP5lE|I(W_sw}jaHuGM^_WOC?_L^Eeu$Zjo zJImyy-p-G?)3)xBI4{W6yX@@ROLJNmTP|F-@a)=%gP$&*sabseaaha58lBxelHb!e zubF6~b*$)A(BpqO(@Y;J@BJZOX8Aa0d22Kev+=&qhZXw{-~V06(Y8`_!Z)Uvds*fO z@`~B|LS1B-&C?~1)h6CtdRu48%Er9Z2RvMH6FlxUFXY(6kiNrJZK3g&NS-Mb&x-91 zH?B(Sx+utWYUllPXATCi=rsna^4C;cM7d*LQ%)awajsBnJ!z> z8!{TbA4>+PACj*wF%@Y%aPPd7%8KkM@iVo;elNV5=)JY}<8{vD<5SvS30co&+;B}? zI^21WO8ee>K7TH6KKCgsBS6%Ar(D|hMXoDM-Dq$&ELmp_o#C9-vg=BL9y%U>gTe~DWM4f0LJjb literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/entei.png b/graphics/object_events/pics/pokemon/followers/entei.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce920b929164018633b370d4582634d189bfe57 GIT binary patch literal 1072 zcmV-01kd}4P)#5JF*#BB**V!sA*mSwSy36O!O;N$0ZB0_>FN1dVR@-}QGr=G2{Tej00009 za7bBm000XU000XU0RWnu7ytkRrb$FWR7i>KmA`M>Mij?y&_qH*1}_=2wH@U}Z3GxF z7a7suK`7uqKmpXf2C{W2GFJkMlSzP$#0WY%q*@yZETYn2p#j@7pu$}ki2r~D&>cKc zfUif1_d^N=b;!`6ZxHTt ziha2DpVWnPbAjmrs<8) z!m?xc%FO1l-J@*=+ixa}&wY&jlz%#@B6LL!g4L_K;>3XWIXbh@-eU{3%xn&hbf3Q2 zt@4C%(#4Fey+_~IsX+rmiFNFk*ep&7nua z4VDbCUu4rKr*(g>9#@awrET*OLpa5a0t{eN=3>gP^>yw2@z->F3+J^aJ@c_qVO&WV zS618}e_N{;o8w}7MvM!v!3T1DTL1II^A~@EYz}BSIv$tV{Rz`HO1aZIMM!(v+&^3y z2rjY&HR_(~Kb|`51>a;%E5oPwTGI{$H!x0FX}yTta$r1bhs#Elm>Uec=hwLFuo1P% zKnWUCeE0zfh9x{^j1oZz{Wp`N`~lCGl6oc9i<5fbTkub%r6zpmH2dCt|h}nkO~YA*!82!0Z@eDFHaIJ z<<%EFfo{BdG7tt!aXy^EaxEJsg1JJ08ypt)Wy5xuq$(xeX3283DG7cQ(q1A65aO&P q1qee0Z6?sAB5vOuN@fB7PT?P7R@7>QyX}?$00004~v9ak1gC*~vLEQ7L(;X`$)q`N@&d000000000000000Ty9~N00009 za7bBm000XU000XU0RWnu7ytkQqDe$SR7i>K)lX~NFcbiA>87KFnQ`bR7(1Cqi?bYi z=(&u*uBBjHa$HY4$(R`hokE}_9>@d z{+(d*6weUll{mpa4>nwgex4!9d2)j1m>`LQe*PwyIBnfD64Y)DEt>A~sIevWvU$d! zUQ;CO|MC6rI5}!en0pg=)}6g3Wtjr#j5LJgsIj2lXx}<2;gG)A{Q&|VgaG2W8H}9K zZ>**C4^v}inP92}A544P?0zDcFjsSLYqeNYmgP>3ZR?th@aZbznN?XXOHp+j+M7sW z`o~q4Nvp<=3Aq3rqwe6kE+NID3As!iv-|Gge5)anRS3_b^MzE#gq9#nD9oNqJ;A~3 z5lR?+#&ykwZ8n{^wL$6pGiY zR|U3Nz`FMtE8*rE%r}5%8c^WLjBw-mJZ&9*j3L!)VGn_0!rB#)vWBl;pcZ|`mrKJJ z!~`poFh2YpCU`HT?DBOc)vWCfoBHN@Q>Q&9WO~;$_Vs6>TDPw&+-?d{Cfj_S<)l3% zG}-)stMBWi$GDbgu+7YdT+=v{5#F07aJ_9eK&ZHQ55o^Z(PK=Q=TFWAj@dTDXlA~x zZ7-gsEGu;P2@~`6AFN0a0ReHb>CrJsxTT^U00009 za7bBm000XU000XU0RWnu7ytkRxJg7oR7i>K)2j#B3zr7gj9`)1!+4xn*Ep_Gn&Dn5)VNVUPEF`Yl{ZdzM*VZlTxYSbv zq~WMh?%f-n$YmcNlvqu;>JA4Cy9@6C;xg}k`v_h%*Kgwzs|iO9m}r1fbNqZ2`WI{8 zl~_#>M~6cJ!=8DZu6Sd-ZH&LB0OIIkyw!w#aR>jsQ|^`Yj_!~5a{(VS8F;o9kF}bx z^%ch7Y?Pac<3q7C-rd!?w>%9@#yf30Tc2V2>4sZo4x)JoJ)YCfo%OdtHLQC_oz8DP z?*0YcA3`0Vomb#;OXZdT&F0vCZle0p@4sy=gJ3w{kx{2lrS&C!v^w|D1m+G%)=w#g z;|5SF)BpzBS^po^YV{r_CNMP~uw_Tin|(U>)1?l?QD!H*B?csrfg;2ryHL7?W+Iz_mb}oXB(zYh z&4uucec^h1`E$?B0%bvM$O;g7>DK_ecC?*NuZ7xJKQ-i2K|*A{(j5VqY1=?-C*Uk1 zS)eS)GuyP6_SZsrc4Q;gxteeu=eDCKdEhw+OgOqp@>}>3F!r>Oc*Pw#-f?&q2*gt+ z^_S{qe` zgl0k~O6?SO{AR-|0^7=D;A=VC#`4L}>nk%KCD>twJJG`3yGylgy~5fP=}$~S6t%i{ z=;h!7q?4#+3Rp`~$m@w2z!&RYm>8ql_RQj~ehZbNB{mGVNlf;^QVOm4+WS6#o03FTNl&E^A>i_@%07*qo IM6N<$f_Wtb?*IS* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/flaaffy.png b/graphics/object_events/pics/pokemon/followers/flaaffy.png new file mode 100644 index 0000000000000000000000000000000000000000..57e8ee5023718f904cf90e25fcfd7af193b7619b GIT binary patch literal 782 zcmV+p1M&QcP)K)G=$@Ko|z#8;rpaH1-F$kfmcFV-WO= zT|zTSG){srrp?$X;RZFCTxu^Og_zVHGNp@BJhTA~pBy|iWRS^J$RJV#QAko7{f3^B zNcwbGrck<+yo-5s_ugmD$b>xRF^~CwG8|0zU!M>5V47zJLz3m3oIXo*80lPRKc|?K z-!VDMi}p*3*F=Xog>%;$WLts@_n1s}4jdcMbkTPix#zBn4s=3$XnhO%dWLg-0Otq| z5PbJ+wAJtHXUP|ILi=bPcru*Z>Vu012o5t|1sh<^%k(RLo|War3t;#c63ydlaN-;* z-V_65dLK5f@qwawq(-o!`NkAG0N*oQFq=1;p4^G(Ff+lbd8myuT@Dyy+t>0$cg=&7 z;V3y!bQs6(nY}MC$Z{D@8FMUoqPvF&CluX@=(_{iFVno%2kV04D*=l!NM3}LyFK%T zrZYKTOFMN%u)U(`_LE{QWfFDrZ!NHny`&Hz7gjzSBR;J@n|68t>+I=v{p)1( z0{qxX3cJ|BnCX_6fA+M7O~^Vy1qRl}$9i!ddnfATi{DR;x7GObYu~RobFK@`OkqI{RoI zzsAmv;I&2mdg?0igW20Xo^kcmMzZ M07*qoM6N<$f>ir#N&o-= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/forretress.png b/graphics/object_events/pics/pokemon/followers/forretress.png new file mode 100644 index 0000000000000000000000000000000000000000..286ecb983e9b709c1e95229d9c372496cc81a3a9 GIT binary patch literal 620 zcmV-y0+aoTP)FN0Z0000000000bn^Nu00009 za7bBm000XU000XU0RWnu7ytkP;z>k7R7i>K)G=$@KokdXAu{M2c*#)gx)^)Q!y%AG z1cj(KI-D16fx4mn02hJ>6U+FjtR51Lfi~e*BNMm}5Pz)bPI|JWSas{tDgICX>Hn;E z9N31j%Pza@@{VHhfAFT^IOeUq+1i_i)yjz{Dc{nYhE>K38ujO+YDYApRUSu!!55h? zi#CiscYYYZ5T2dHPGm0d)-M1!rm%WecIf~`$HShK0J$$0 ztl~ls;NbkouJCEPaIIYcDd(%QY<;P`eR~|V0=vS$JpdUiG_$g76)xBnXV*`o3OmU{ z-(F|eRd^uT_LAf5h131o<9;oerJg1B(IF8}TnMt(!#6GXx$Hg zgnKWgT{~T4j*O7Hv z;YqJai)GO&)}%iu{vrN_tKmQRnOFc`+ckSs?v8R00+EcgZXj)dUZ zoz%`1qu_Oj@Om_ppnU9Y`PY|@nwadIc56cNv+eUd_H8Sg_P_nRZSu|fr}f`f946ND zj|XGz`e}}z(N_|ed49exIP=9bdd5Ia{6Z<3t_sd}{9z=|7z`6@I;9l-BvsHzeKKF| zp3qkkYdQl!2CAR|8UGxg&{q;`Isl+G`y#mF{opGi)%k(JFtKJ9NpeE03chkY&J~gJ zec)hL82E&NU<#1l7c@O#xKPB*_cdmdB8L@Ej1xwDej!;E6nStW^KuZ+zK#u-r7WwO zIN*jEGEfAKn){jtc4H-Mw~pfw({c8Pg9X<&lj zw&;8{GcU_LV2we;gykR&M)g4odV$eZ@Fx1;(Ej%NvaeN6 zXM391w>kgC8UqUMxZ~QOh`R|oY@lHB@=@75@LiVLw>f`l4A{>t8FwrUm@5r($|yw! z3Y!byC*8iyKbTk(2EWPH>A7Hg()cy)@G|n#xjAv6X;C==0Rc%-Sz&RR24XUB00009 za7bBm000XU000XU0RWnu7ytkQcu7P-R7i>K)W2)nKoke?8?>J3p$uL;b!kR%P4Q5J zi`C-6hC&FqhD;3}3hwHuLuv&w)Jsi5kJk1O)c+w{p&n(hi0WF#7XpDmhIkBkC{(Ir z-Mg!Aap{%^9zG}O`+QG75W27Xy01m0E*8Hv4G*m{LSYx7>(1J~dMn4N{^tfa=W?8C zgm8T}8x7ZX2zsw_bU`ib)P{PeYV%(0LT4OyzDa3{5en?@7|SdVj!!|q;R z+JIt&##YE!$870*mVLq4UNg7am~~&%JlKHZsHWR2s;z<6l-6pLYK$3c@4)#gj+ZKN z;K5L9pGK9@IK|iz3{)Lgal}~N(Yrvmw&`Pyqj9!(Uy6f?4O?vCGh?T4m#S&ir5fX~ z&S=g}0)-1Czr4Ws$k=9H1gOT8bGgAmW$7R6^wP?>JIlbt#uF>KYsUMdSC3!=#i&fo z01y>8UruP!-n_KTiHqzUE+nYM+>OXiUuIh9)NuqdT7C&vzGr!o{m( z)5f^!w%`s_kB&c;q2q>k#ueu~CDbB(5h%xqrjHd(a58zWx>L@8IKV*xcx<>hPR#% z8#E~a$9=`|$A{81Y_LzM2|V54rDp@^pbYG13s#8;j}=EVKP)-~KIf$99721gzNhzi zzxbi=d3orPC*I?@0sq;60gZQDYS7?ZZos)XAE%u`P_jL+uo2kse1vbJk34XU^P%4I z`FQr{@dO>C1>BIncT)Q5CG`*dB`zP(kA463fB*mh07*qoM6N<$g5W%G A+W-In literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gligar.png b/graphics/object_events/pics/pokemon/followers/gligar.png new file mode 100644 index 0000000000000000000000000000000000000000..6d17b0e3abf84b78feec20d34c8d583f387959ee GIT binary patch literal 958 zcmV;v13~Kmdk3}Koo|DA=Tc+`zWWD7z`l`(=NP< zL)vXXR6=BBMC2%jtkboM+`*5bAVH@MR-LOZaauxXcR2=;Z+_`N z|6HsXp_h88m-;t_;lTjdUAF7Xv)CqS*ACNe1M8i+Jd1JO^~1T}ZHTP5Q-osufECq@ z-A8o39JLPGFzp!P+Fdy57hvVr}bVA>B_JA{KH4uqTSKzWhC9+tq8MDjh$r^QN725Bzlt8aQ6M52fl{F6sAaU2rO3Gr>ICrnhSbSEU5lOfj;X4kA(mC?c^ z7R=@gqNgAdB{!c~c~wRtF|xqd9DAU3D*UL@u~TYJ3X%F%!6B!iX&{-AjG8qPiN2h( zn{z4?BQ)7)j`j|vK3q^yi>1=}R!C0y=7>X5UU5I-8$Zc;ngwRbcEAb3C1W)3VIT%h zdLI<;?TQB2VJxCR(m9ifc>}|$!Oi)yBcQgBWd;24*dWW)OuP^zm z*H@dymjhT%_{441prnGSYJfvZA?-JZNU(R%44^^pcs=`i7i}heWiUBe&+hM{YI39- zlyoUl*A1v(evu8V`|sfIHGYbFt&Z7o^~;~dLA7}=Unz;l`GWI0w6&iw42096IC??(sKTCVYIP^|@58~Ikpz^w>BqtgR1RkW!`##+68DQA_1-qtf}DU6%1AgXQ~wCIkF@_qY%_5?YL~4X2dKm7!R?}&1$d0Nel>Iq gZ9MJrw*CLB-x5@!LziqCmH+?%07*qoM6N<$f(>lD;s5{u literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/granbull.png b/graphics/object_events/pics/pokemon/followers/granbull.png new file mode 100644 index 0000000000000000000000000000000000000000..037d321f738f91f7b83340c9e9073f660d2954cd GIT binary patch literal 695 zcmV;o0!aOdP)Kl|PTuKoG@^kejsk8R$V)6hs}A990Bt zoVX{VPgdh|OH4+tIUPx5=@PB+r)1U}d&iqUNCvt*rO40Ee(PC##-4Z6O*j1;mHBo4 zTlFxz&SmLUzq}iJGlbSHpYlc^iWt*w96{L%blIb`jYKE*5jQ1^bD2sWoAcLsCoT|E zF|lzj>zWffn5ncI)BiE1HqB*S^DL&aQqhThQ%-ZsE>|_l!+HVZ=+FeZtQ8isZ*S8~UStz^p4D`!WSBHzE}Ov5i0}CV z4ujrvIM0QWDS!=hxvC02Mu%5mpOfLp`jwbp$@qRI(iIDIne=iHN|l7N>5kIy@^$Th z(s_OB8$S94CL`XtF4L|JWC$R`)$wR=WO$j>J_IDNzTuf6Tl4t#NPw>u|aUvMHP@T%{8 dUmX0u`VDP9rj)xkKZ5`O002ovPDHLkV1nMBMRWiF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/heracross.png b/graphics/object_events/pics/pokemon/followers/heracross.png new file mode 100644 index 0000000000000000000000000000000000000000..3699497b44303a23b40ef1981c4efeb3b0eeb93f GIT binary patch literal 838 zcmV-M1G)T(P)K)z502KpY3~xh$Pa=N8>F1rLF~z?P8UVIQE!K1f(BW^7t~hWc+t*K`aN3O(ev zm;KB*-=CwqiqKO%)qhZvlW|u?e1zh^^}9jf(Dj0Igcpxkleo}#1BY%F9E2aWQAbNp z;=A+&6}`Ekn+oRd{ZYfd%;wCQDBEso=yvo2JsGub$~>XLg!Tf5t}8<67W-pnQWM2T zhGB@gq3f|(mS*W<#D2D2N=!@@6%<6`(DfKF-AuI+TcGJOW0lNO0I|WLt12|z(zYYE z=iteVA%-$gMG{xFWT2$}h!5s7kUCWp0N6(|S3N(&{-ru%nD6Y0*e@^pfkT&%mBa6__e1k#exw14UYCK&RBnYG!;4p`%hz)^9k5@l ztH8~cFW`<^PmXm^B3A?s9D6i!Y{w1TKoqt1ym}y7KwtwnORWjSG50y&qH81vft;ruGp~&u{O6&n*Iffs?z}TTb##v1k|y zDRk zdr#uBj3T(mJ5H?3HG2*$QWWG&Z241dgPSB9=F(!tU-M)YS57uv0-8*Voi`F*6<3{p zTJ=7~mg;ZhOgMG?Tvp&2=8vAMwk0Re$g82|tP000000000000000in%x&00009 za7bBm000XU000XU0RWnu7ytkP#Ysd#R7i>Kld*2XFc5~RGN5#`5>SqU%&tCZ4iRP|ewpQb1iQ{wbd?{{QnisZ_4I>Z<=E<3c_v z-n@W+lYUXav6qEh2%6{f@c=h~fbKYrKOy*_ZaU}v}46lhSk?4 zyk1#g`@Wos&P7LQ7oO5|*P+fE#)RWx=H0q5+znl4Arl!wJFa0Vw}c_{4l_>}XYzjb zxlqE~mbENr6n?c5Hdgi22TRs;F4in$wS@jiIg>pMT~DpMUi@A6-cvsy={gq%quw*$ z{Tv3|_nu#Az{EwQ^_*qh@bHD&xf z`9eKpG#m73eJ~_-j2@A`Y-TEN4Uw*yn5lt-zFsGR)oG|SJPotGD?t5770vL+x~Vp7 d>iz$zz5wSN&RqL*BYpq?002ovPDHLkV1jDA1a1HT literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ho_oh.png b/graphics/object_events/pics/pokemon/followers/ho_oh.png new file mode 100644 index 0000000000000000000000000000000000000000..714171a55d48f4b2fc027cf311bb9bc6fd603c6b GIT binary patch literal 2252 zcmV;-2s8JIP)ZfQ$f+R~P`w52U= zX-iw$(w4Tgr7i9M!EUbqxBc_${Q83$2(BN}yQ)5@b1-#0c~BdCr<-3PkC0j&xepq? z!ZlYNPe$}J%kCq@i&B0cIfQt3ZZe*Xxxy&Z$@>TudQM((E+GKW zspJVr2-&-@RD2Y9cgzLjiOfwhK)wy3Qa*tkLi}XZQ4~4n-GmTNcI}M@>R}ZG6gwbb zgg5XOgrJjb54c=HynCrAc{yN8h$mm!$L$7Iqar$CvEzgyj`?0fU`HkCFx!P(LVPIz z0ogO`me3BdeZ9$6jDT-6E_No7xDH|#tGZp!2 z#03*7U@UVH5+u!Jbg&t7LCPYDTzXKU6e z5+gy;fglmXj+}mZxYzFwTk4FEI&Ag(r!7{14Gs`?7Oxsp1#?1zO?K1OcBb+@oyK|M zo4RK8hZRbw+v;1IsoMmZ#wPKQbzt>{mc;fgp&jDs=@5+EPye<5RA_o}xCO;9O1n5E zWY!H$(-{GxD1&NM4e6(NSHKQrE>k}_ZBRlRduOI@*yIWkz!M~ka{L|)JuR3K0#`^n z5fOaRfu{EB*u)HL6ri5(b`R&2oN)s1`P))+@5cV9k()g~2GeX3#`OWq<_~ZTyhuh88I+DpZ&gjq|&InobTRIO`Mfqku76***;+mQeBHTszv*+7}&m!@|b`^m9dOo3Q|F{B6HXye%Y;ZtU5Bz&}g~ zSvrc*+umIZ)JjYTl*Qv^h(gp3%#DYB5q{TOGUv~^SIInf;g3xptow6>BW z#Btjuxgv^0c8H!H9cpE&psq+|>OZ#SgdFLU_?Jbn(Kw?D5<>7}{Sny@C-&o5K-g6$ z?wt`{Amq^qN)zJvp+%02dKrS)YGE_fgf}Un>3qZlXtZ?$i=mCZbCVbeAj7l1Xl9;F zH~X+i9M^)9i*CJn@`i>&n;`@dM7-xe_}gb+J~r4zGIr215<;GZ9$IL6p#Irt3^l&^ z+%l4Kz1<%)Ga?9f+y_*E0uis)u=1b0`8W8lGKA=Q??3}$Bot?``{&L^)gJ+pcsW6WIxAo zE5G{Z!NG?tA^rn{eEea(Q!H;jB_6X=jO|H6XdmzS7f~-zilP!a5heg23@jkzA6?|# z%m|uR*7Vbw=#JGICV+c#0LBucQ{eE4(kV*&LdGNj0Wl$5fEkH5vRF}MDUiR$Pxezn zs9U$qXm!Z)!;0#<8FvROpkV)d458I6;(h#5DP2m>o*Lu`ontErp+{)DuoF?Lk}Q=J z_zUg&mQbDo5I{FNg`Qf?IRC$=Ztnk(CB%O~{P$iKN|)EqerFRrgt&wdS_He?bDj-C1Is<)5JKg6`3dM_0p07wm+K%P!R*?&!CMLwp%c8AFJV1;n}qbh8;-Ob9hW9fyuvsg8TmXbbIePUt$v zvDJ*r^RzL9c;j~11mtpR=0)cHx6oD#T@WyG_-%Bvu|Viy|HjI)Id>uZf;J~ItwG_Y zTC1v&aE`8H3xwW{fcX`yfG?!?nDvUz5}F!t0o*O2cjNzqZ7w_Of_6&izvRz5v4qgl a7VJMRNp_@OCf~*Y0000Di&FxzQ;pDY1cBX(=g*SwYFMc>n+akOBYj00009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>KlQC=CKpe#nj2EpXTc>pMr1D2jEa7~B zP62UC!%e0dyn4zv@RTJ(*I+ds&dnsU_|OpOTngf#MBJ36L;D?ir?XCXmnu+0r}{1C zcklGx>F*Ol2OV_KLH~=W^Yhni)_WMCRkK7#doo4Aja%TdeBk&7EvLF&G@q5?oUu6XXQBdm4{x?PlvbF} zN=cj)dC|`oD)7FCYbxLOyfb}PulzX6Sp#ZJc8sQoXq3|P?xDo%w{fN+{WypE$TP_rEfFy&TZ1<)2gtUr*N zRIS-Cn|9oYR6oB?%{7!GY1oVeVMwgcASqLMX29AHK7+s_GEXb6i^#gvYHmN4%PSKA zShM-l(J&$9h3((hyg1+ar&mJosJoYvF^=4Oiq4kHrNT#NmbeJx6552PFUi002ovPDHLkV1m&mC*A-6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hoppip.png b/graphics/object_events/pics/pokemon/followers/hoppip.png new file mode 100644 index 0000000000000000000000000000000000000000..90dc9f1260659cf67e5bdd4ac9b771b345a0d32a GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!c1!Rnt-_IxEw_oMVzy}P%bW&OUZRf-Zz)^99* z_T>9!-d_Q~b=I7TYGb@I(KaFQ-TdAK3l+_shVCb{On4Sl<&!g$jb^Q%cHWM zNt{Wv7vWYE4Ae?f*{`XdG$Z7BaKQQG6Fkd!ZkNv2cMW@JqAoDkUq?NuDat|Wr(bUt z&o4g%XNI1)ZkLpQ=1uH8xu?QN^_7H@{Li-yarg7y+?#Ht=+6?BR=o18-WKMILH6mN z+wJC?gtaHnTyvsfZC(A9_F{(IJ6{Diu6}!Lsou1#6#j&rc`3`vq@EwY^i9w(cg~%C zg?38$OWtkSXE^54dohsT~xOt||* z{FGb4&x(_0{hc}^-mUC)VivvbRk_2^D(2m_*}ONHAI$xHT!Q_E%ZE=NKQ;bo>ED~b zC^-3wpIEC({l(1UhK{GJW$vHcJGWfzS60sPiT`pRP451z5md^%DJe0Dfst`xc}Y1@kr^rJ>G=Tx0jZ(6iD5xGIYDW0aR2}SNU8tU00009 za7bBm000XU000XU0RWnu7ytkQY)M2xR7i>K)iG}qF%$scH=J~mMTf$|Y_ilT3@Euw~RdPUA*0ZTp;t&B1O9r5>wZIMox{My-4(&y&Np$3PL63l7xh zepjuTUcfSHg~?!V7`8nIU=O6kT2rQjZX%l6sO_?&WSpmZho-M6FwPUctBu+&A5c?f z^b%uvhJ8jdPwQnu?)LHlDdidUdktfJA3R1|=Yt9=JEu;srhM|*TmsYK0pW+>_N|jG zDHr9{c;WIgqWwF!_v_&Gp2*_7g3@cV9~~ zR9CCbZ+ki8`Mp|=w7_Qw=Daupx7U8GuVXUo^#B?!myxr|<3~8BKEpO)xT-CgY5oc4 z!;PHR1L|~{kbF2b3YdmS@M5ABu*`5i+sGM@sM}DqF=yo2pMXW^&9SmM{_a#y7~{>4Mu8yuIWo54^!=AubBuRlp(QMic8r3Nnhn>dgh>z^1*Vi~ zM-w1Mje=^^2SocmuRx#|+%8|bqHWyJStd09gE(cGPLIqP)d^%DJe0Dfst`xdFko-NjXsg0RgF@xrt#xvAMxHIYDW0aR2}SQUp*B00009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K)4xx`Koke?8yM)oK>QCbCI%Bo3=1P6 zCI)wnn7E6xNrlM?kT{(62Rux>DvWM~_&=c0M20%BC??$BU`q|Wd-ia0>)Sqk*YCS) zdW=OCRa8+$HLrMMnPYjiOZ{ghhIRAQ)w@6fshQ0TU^mFZCHSVl^@%EH|`IVu7Qqn_>Pt8O+YdM_IgZ`Hc^ zbkxBM9WU@oZ&r|UoDX-c({-jOkU9u_>s9Yx^kx=-CBog#ol6(>sDr?@X0N`gH-kH~ zE5d!5ZAsaHd6zoa(AH<;qmb8{Z3A==v5l1tN7mbwq6l{ocyXD%K;M8mmhyItPlydk zKkzssG!6oDha1WO)v@*6n|(Y$F=S-7>7eqib;IZC6O?3<&3e3W|D+Th+#J6;4* z&mQ&RafIyl;Q_6%xa(TV06UEa7PuVq{9-w^A9y>sE+OyS4s0~g=3f6`;e^+>7AM~1 z065U*V37ekg4xOm1XBkBsC@v`e=RZNdJiu@#rz30l>eOl8n~qI->XCswOyewc!3rT jT+)Z%%ME&$|E<0O8lzzeqZ-G2ymLU(NaEe7*DsGNLi(cDcL}Hw)jmbD!UzXAh%g3BX7lL6h4PDQURS@; yJ|p#W&288I$o1tW_q$ls)X)4l`MBga|5xs9p0Sr@m;#$Y0q^PR=d#Wzp$P!m+Qq#9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jumpluff.png b/graphics/object_events/pics/pokemon/followers/jumpluff.png new file mode 100644 index 0000000000000000000000000000000000000000..3755edb0494131342530994d5bc030cff28e9e55 GIT binary patch literal 671 zcmV;Q0$}}#P)KlQC=KFc^mIL*1h|4%U`rD0DPm4m1Yh zJ8ta3QSj)}6XXvZWHjo5Ru?+x59D`NmZjQ~V>L^cl5a_@SNh)P6`!K$TGzVPXH>B} zvxtiDp^x-of7p&4&>n&vg1SqL0AM@XvsbI`w&G&lBfiYQCl2U-!$f_<%uba85@CoKmQ#i9@t=5)<7;f^31G-Nf3nA)zum4S^ zR?}(XknR)TU{RBiL6r&ocbYh)`@|)~M80|k53ItB^}BrHrPgO>b)Wcwv8Tc_D1NfG z`WNXDqovjtXA_kNOo|_lK>`D~HYDWi#7>o+3siK8{@Ay)CvE>jVgZUS(PC#BR>O%a zRU^n(LjyI*c!he0h`&H3oYyiS%15Pt2a|?n5@5*N#C(DUnjDpUyx5NR_CeX4Dbq_?E2`{%j2R zf1QYPZE$4jl*Bh7}!Jx|PFEaoD002ovPDHLk FV1nmCDw_ZR literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kingdra.png b/graphics/object_events/pics/pokemon/followers/kingdra.png new file mode 100644 index 0000000000000000000000000000000000000000..8043bb032d06a45443d23e582a9d329c296e337d GIT binary patch literal 859 zcmV-h1ElPx#Md$}g00009 za7bBm000XU000XU0RWnu7ytkQ(Md!>R7i>Kl|65pKp22;K{s^k-l0?$N~JFCU$B#o z$Ot*6RSH$*~S7{ZhY=13G>t1xuPkSR;mA#?XGQRE>VDk0>d_ZxZ++;Ml{s_Ms< zTkMAyKM!Dx5xQG<>z}OG&CAuF&im`?t4u~^gb2Cz%pMjRbu&-a%zHwFJR3RPCZobB zLXpn{dXNQHa}nqTbs=NdA-0SwL71-zA`ey!Vy*@ILgXcZ1KkEps?ePge@(DISA%^a z;}EFW-$6j*f&zQfFc&(%H}46NK@!UL=WEBtlr7&l=G+K5Z}a(tb331`5h5d}b%(}| zJ6j2=@Yrrx1npLs+|Ijz8q|ddC)Mh7pgkp=rA;8p{6QX1ZUeACR=C<8`-4Ihv#AZZ zta*S0OG-!a@ikp(ker z$zpy&2rbAtrRU^Sa2w=2g}{tSJ>mzX1{-0Nl13P^>-GL@K~e}s0A|Z_Sytjc(1S1z ztWyX-4+gm~YlVm3mgMG!lAE#k;oUn*56k6s^!#Eth~MnyZZUbW$-guu$c5>CBg7CB z!ft^uI~IZLlaY(}ZLM3?wsQs4J4*8~w@??aaP z;*9j5E(GL)JCC+R0O3c6*H61gi56t@+=-65xfbjTjR)okvhD*2y>i1Z5^6#AFe{2w zo~yy0(0FEAPe2y9(@`j)9z<@j0GYKQ?5RT7bF9ED-${q24*H6aI_b@*>T08&%002ovPDHLkV1f|teG>ox literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lanturn.png b/graphics/object_events/pics/pokemon/followers/lanturn.png new file mode 100644 index 0000000000000000000000000000000000000000..2c42ca35b6afc1935ff6631ae58e0e9c908a1b6f GIT binary patch literal 947 zcmV;k15EshP)^@R7i>KmcMHoF%-uSgz~{QmJ&?i0=ASG zimyv!0@><7rZ$s<=QtVMhGgzqx*4)$C6SPdd=%qU9!n_o4VeS|8!DZoJL#^} zE$J9--*->n&(p7GTh`-v9RF#Q(jj2V?Fab-KOOT7Xtww2A;8&ydj6B~H3ggjps77d zgz9AzkOa;GxM{%92!VoGaS}KS0Mh_71eOz@3;(u75G6y{1XL3VBsn2@=%(I+D6s^9 zpzHl)&OAA&rP)i@YTMGHKC(-9a}SGz~`Y> zDH+?l$Qd`adOGm6Dc-aF#$&_CcsYuya-@-LBNUPab|62PXQwUpyTn%R5uun15INAK(P)1LT7t> zFIY0?hp+#zYbl@xnAR5p9q@g;qv?H@A?UCeYs&1EZi7h(@Y%vk{E#gP1W`$t-sYWS zy}}TPVng3e0)}3sGZXH|9A(7{2!<${aBDlqx&a3&4M+`g0IZ3tVu4l20dQR|u};sP za)2+7O#z7n0J85+4!hG~Q5rD7$aantpwg^i1cwmSnvF2OQp3=N7}XjgzuvpPV17d+ z4Ha+D>?&r?G?cDT>8x0A_oga3YmVjLX5oCji@0I2{R~W7epjFTP>@j~9Lk18= zfR{XQcE2PH0Ac#e8>Z#!Ar@xMip>_f(kNkOzl=ad0PvGmkJ}*yP{4v{27s*R@6T_p z?^dNjQ)yWt+toQZAGJfk?jtVq>VP~GY|p`G9}y{tiUp8hWUKx`T5o&3_lqRjk}}ux zWFrFDaKUVbb*QzfY#S~$H%q{l6?0&x*&uNWC^)BcQH4Zl5}9u6%~BwZhTraNG#fz0 zLLghdmO|JO>JySWlLnZ9_JLv8?$kETUl?NerSwdIr7c$gfAd%CPb2j==x_fQ{Q}`( VY*yvcccuUU002ovPDHLkV1m-hri%ao literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/larvitar.png b/graphics/object_events/pics/pokemon/followers/larvitar.png new file mode 100644 index 0000000000000000000000000000000000000000..6a12f6d7b0adae0b363d471572959d05ef0c81e0 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x0!-)6&s%;m(ta znwlGLR_-)3WMpLYjMRMj@@J)@B2XbR@Gv$%4&-wdctjR6FmMZlFeAgPIT8#EjG>+` zjv*eMZ?A03Yc>#Idyu2BZL-wNzRD@v6kl~M;ZXT`6V)>V=53mxQDAq{ z!}E&X({1PN_Z?O{m1KB5rugjFeyxfljwhYcqE}TM&`MVP9M6;SYT2&airFV}ryHI5 zR4se0qr__aTC3x8^zJ=bCx0pY*}ip_ymdDir3e+y|44< z^Vpu9&aipygGfcWmisT{ZWs2pvoy{-@O9}!_IKY7yck-knZr`Vr(S zvDM3#&#{d6>x9C1GYKDG(}xjLzg)TWYu0Nv1-12Oa@$WW|0;EgbM>-mcI{kY3LdBK zgbL`Jd+PjY3z~ZA`HRo5MH75>{^mXY{+h|+UejC+Y30m3+b8M~oQ`@QbYk`2$j*=c z71{LZ&ZTG*r!4jBLH(5~u7xU@B}~W5n135@dupO%Qtc!@t7&WU{)O>tzopr06go literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ledian.png b/graphics/object_events/pics/pokemon/followers/ledian.png new file mode 100644 index 0000000000000000000000000000000000000000..d8651c2ff6c63884946d39c77bc1149fd62a05ca GIT binary patch literal 1027 zcmV+e1pNDnP)<3NfBw8>FN2=u~Fe6IRF3vTr6#900009 za7bBm000XU000XU0RWnu7ytkRc}YY;R7i>Kl)-BgK@`T9P3eM1K|Dwytih!RLvTO? zO{L1x7|@*bD2PZ)FC}b3XG@#CROlRX5>e(7=t&Sf^%(3WhXlGu(bM)2gCP{=Z}82| z%w{%StQQf)7jk$z^SrWfB{)A{l{-Lb3xd^|N$hu@-%3v)HTr5w z>Dx8a&SxjeBwlM+D>xDXlngmKwCUU%l4+JH#5M1t#c2>sj z`CX62$714!B*ro2vRe%p16l0W^4#G3K4UHD^I9S>94QA76vRT%WYO8)=}EnJ8boI! zCCJx>ph?HINen%8r;w_^dZ%pSva!5Xk%$}0TjqiRC%!KP&D&A5hfdh>N;`_|M6j*| zEx7P5L|_5ji^J!SduOm=;@Q#w5^=+a>dbDVRYBZFtNhuOPw3u_6V|(qRzDgS1r4)M z>vBOxUB2D?(ffQBut~Ed^h6?9Z>l@Uk%PTsAnrBELHqy_xBYb^YCSrLXXXSA1H*9@ z;Ww_v@17k+)nMXx`szd=5g7WRbTlf22;ws7lw!lfu-cCBHEJYRZV^+nGGi$Ls1LFmZ=W8X<)@Oa>Q$KHZ?(>NdNX4h9FkYP|3naM<1{;o3YvK#WZrL zvtS{E5&H(U7RRoAc<4^QwTA!zMeN6 x;}?}qltDaS7lCB%QRegfu#8@CN?r2zl{002ovPDHLkV1hr{*E9eC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ledyba.png b/graphics/object_events/pics/pokemon/followers/ledyba.png new file mode 100644 index 0000000000000000000000000000000000000000..32e858e2b77cd3cc9188040e5ad28cb6851c4b25 GIT binary patch literal 1025 zcmV+c1pfPpP)FM$D;eq*aG2uBOIXOAu$tmgS`2YX_S?-on00009 za7bBm000XU000XU0RWnu7ytkRcS%G+R7i>KlCf{wMij;m2}CYl=m4E8z-9!)LsGO| zx^yBgve0PA!WfA>Fh+6(gfws+%LGKBgW!Q{vU$iX;92k#g@8|klQ?uCT>>auVQ@1t zWboh6yW^2ZD~W>!Ejlz09PS->@B6;r9YSC0YyEG_T>qB^Iz7F1U9~8=H~y*lCes2X z3aLWr_U_=zNBU>F_DCZ#hok7*|ev-(9<03M{-#Rx@8#MEH#_J5Z>s-NXu))@= zxHTNF$d)6MiCBir^w*mJUcu9uMA9+SNbbdrAOc`HCEI7K?PjyHdbBYwdM=(OQpn8C zcm)7@4W<=}iMZn;l2Wq?K^ywxOu!DER=@}Bwl->Au3!h0QJyFmj;U1a0MIr-un+y* zrbtw9+@Tst37RlyFo;xtAq?^I@9zOleOwE>ykBmxp-9A$)w<$I1ET}ir5xRnLgtG^ z%CmG_K+@iO553_y%FJ+q?dr)J*sH(8p%mEm-89k4W+(*q`)ts<<+g_0l|mNrL_STC zNyh~wZTtp$5N+fL?XbI8eE@r;%2yo8Qi%OD(Pk~=y+K#WD`)5NwfKJH8B)kZB85yk z=18(j2>7t5w~1}7FmF8l82~@yD-p@YSt3XNM2L;K0CpB*!CfMAZ@CSHOgiq5{cK?A z>2(@yU>wfp3Wx+WIi_3Lwb@xB^^1-1)tx65?8sgqJK}=NEJY?AgO5X{U>sBWFsWd1 zf2xerUw%s_{)2bl*m%Yv+@bby7=Si^RiVb2q5yZJV`Fa8KS8~ zOX2p_a*~uQp*+H$U3Y;evg|M&DIHJjT!5c{v1TnU6$I`wYciQT)B<-zA}!$DnON3j zt)>K=E8p`()=zfIEOl)CVCMsgfn&U;pAj;+!rURzi7tyoi%Rf<&8n}HB(A?mkJwl0 zuSFtOS0hu$-=V_5lla6##SM=g==sx$&W vX(GMxf#c8BRHEscO7wZhf4im<{ipR8+F#Rp)L@A!00000NkvXXu0mjf$9v@_ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lugia.png b/graphics/object_events/pics/pokemon/followers/lugia.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac53eff1997ad1e1d2326ba552cbd7a7b46522b GIT binary patch literal 1751 zcmV;|1}OQ7P)fj zf;~q9Y@K7Q19cq$b`BB1N=Vjg2Kd^&o~#O9M0}_0ibm#!D=A_6paMHgRe(>hs>gz?Im3N_329AgZ2&)zzU#B z#i!)8Q8tuyqiE-l!4(wJK~NQqbj(+rzoWfFhLid5!5Ff8&=>K}A?l=V2tXR&DvP@W zSOkFOb_uKjqz)!UBc1Xt17r(ZhZ00#2IDD!zK!l2vXCJ_4$?q&DVG9{7QWA+twRa* zkVzI=c^{1!6we2!cbE&meKLFk|v|Db#ab0FAf>Z2#=Wlx9#Gd+Z5r1EBT#OX)d7 z7T|ZWi>P&I3N^Qv)|z>u-C=z$DDwi+7Qkr&3{QZ#k4@Oa<%j`H!V@SL#2x^@sVkWs z`aahTAOLPI0eAsv>yT3fn0od6Sg%BaiY-{OL%e{*`P(Y|@+`aPMW^;x3 zuu%n+!J)Axph8@%5yg9!Iw+7Q0BHgFV za^e}rr<8mD{P-~ys|i0K@O{wh9qy#Y1^(c|pUVHHGtq{ps8k#xfK$W^4Iql&2Zuh& z3Mj{TlW5YOCCbB#%WoH#wO>aZ%@1i20L&GKY=Px_#E)a_yew_wEI4#0-n27F!wfsf zpzIHVtzvhpOOE|7R%z zXb2$Xg?cIg{9P4Tf#eXq==^*0`Q6PwP8(th>=4Mu40SpN-shpz0lY)K0F=lp$S1M( z-RtD0f<|7{F-&(>uho-VE{px4i(7 zok$M(6yTR3J5f_03J!_4_=^uUU971Sr_4a>P@g*9VA5_4^m9mnFH~FQZ6!2RX2;D~ z^!e4p6T{>hK=B%Yqo4mpfPB}GKc30}!6EUMVF0Sfxf&+`xmw&h)Thm9FDpNHBnZeM zZvkc+Kwnfd0ys6x3j)ZsISdZ<1v!}?1rQ_7vu%-cR%u_adq?))Neq`)PW)mKMXf{q z-Q@X^dQS7`w#t-`Zbu{D1N?#kFMplt`3ce-{c+D_ tAbG|=&IZ;_@(J46q0000000000BKw0G00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>Kl(A03Fc5~L$YKXUkq`?~#lT#3$`INr z&ESQh%n=E0hAc=`o}h|u$Rn_H1zrHwMp2RcP{eLS&lfdABqsWAUw+?zXUmRd9d*=E zNBti$m$_Y;O-L4DEm3gMm3^2Pk(6~);03tdm}Sw@@Ca*h$Tv`QV;1Ke(8!dvyci&h zy737BEc5-yl(nk$RYf$1_swnD+QgHZE_!yeIVssL3O4^0Ogj3ypTCMz6R?p z=e*ctEe!q=4zT^<6doFw@^+-iS$jbX3n|3`zIzL$L>}dB!8$3OpoOJ0iZJ(ApN2pQd8rT14aW z{64`iRq+6^oXsTSvEq8YeHI!M+dYR~B8$yO{RIw~j`}H{IN?Q!2T)x5_Gwb$UxVF~ zN#k!ff4Laq!0_QRHT*a;8Y=#!sfTx8v5*EUg^&0as(bi6G#aGTpYI!l>BPk*3l|3K jf}s6NtKTr2tN&0xT*mU>tCYpk00000NkvXXu0mjfgEZ@E literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magcargo.png b/graphics/object_events/pics/pokemon/followers/magcargo.png new file mode 100644 index 0000000000000000000000000000000000000000..a64af468ebaf3a575f1c458470f6bdeb77fbb744 GIT binary patch literal 1206 zcmV;n1WEgeP)(OKb9NqHF&000000000000000Z>qnf00009 za7bBm000XU000XU0RWnu7ytkSEJ;K`R9J=WmA!AO zP~*R1aYnF}^V+VlvWZYfHR((^OAYldkb*+mbtF$djHxdYy^B=vyXE+Z&O0iKUNsAf z=tU>PD4(G=JRAD}&I$uR$2Hy#zg$>tpZeXkT-1ZxMei$vhIE#)`=d#Hs=vNCJdqBx zGn3MAiVwfN+%^g(+;fJ#!oVN#22x+Qn)!h9VRY5@L;8OGQwPZ_}4X6F+lJlD;K~eI0!9OkR96kPhn^M?m<_YIkwDNu3oXbiay(bt&)b7nHoc880?z^9V zY5)WXFk#?2yZHvx4HyUmcg17BBdCn;Ip37G!Zj#tPjQjZB!(jvD93b zU$w*}&Ge~IN%B4DbK6cwz_M89v75g<+9naaD`$9TIhI|rX95<$ZehTcTo}5u?9b<7 zT|qX50~en{D}YA2B8s7l;y_eoXI=%O`1pmW+9#;>ZPbm+C08xR*t~dn6i>398<<$z ztuZI?JTsuhueKYA2Q2G>S<4DU%E>yY#{n_*?G_hrF_wb;Vh=F3iA_rGTL1#Re0x>N zg&}O+p0pr12e|-wMLrJ#IQS;zXRQFXUXV>bfCi31Ft|M_-_nPIm=NTYh6oDgxa7X% z!jLMe2Y`WAevuI&1i%1f>?YqLg|cQ>787Fa2$G6`jDj`Mih21?V9BMSd%}eSLhK3? zA(0!9jhtNP24rK&$+=B>lz)brC)lq1sgL_HLFKJb(Ih5gRIp3pM8Fy~vxbx5oxKR=;c8P!JXf0>XId)}e(4Iy93&Dk(0R z^lVT-OIwF#C}aqR`~{}OTU~Gq1*fP1iFk=KR0oD^rpUX8cyNgdwLwG2{ujOXOM0>! zyInHnz*y(^bl>;g-MeQ^yR$pH9W%Q8bF&32SE-fa6^miSKQ}WV?wa`V==eVXmK3c8 zC^g4R0E#37EDMx?ON#82tj^J})x2B?A1jDPSm{S1f~5jjV#AJ?1JK`eODo!_wIHC> zQYAh62=MhCd(_D^S5zjZ07xe#!dMxe=a^iPZYKyJ7-s;QZ>4hpi~7SXs%}|k z0bq2MuMx5fXcs()pAv^FvPtR+#$e?Ne248uHt|>n(JKJ`0)nCl*--?HPaFz>-(CXX zCHUYn#skWj?Tu;i866-dwx)=p+w>QQBUq{;k>AWr+VZ&~T3Lm0iFRHXRcMNUINPnJ zsJtDd0BPXxgiLcqv`etXGfSlep@<6LjDrxj4rwnMumf|pyghy^is(W(A4K4@4#qB# zim*#e+Tw&}gV675jY|;L)db^+xWswRPiqM2F4S;!5?_iUy3m^sX5iBd=-4Gv5q62G zW3GE08m%+K+_N%EKsFv2xzfA6?{ z=fO1KePr}F{~6CPG6ug|_sOLBjr#9>4p8l8T}UbsK-lL+#N|v8k}ybsAy3Xu?&JP| zpVu;1H01$0yYPY35x@jP9m`bau)>6m?Sm%tP{uFIQq4@`SA2Ww^>MA zD#`^Ehab9EDqI8OH2D#fg~Y0@-LN zr|C3vG^t2^r*HxN?E)+SkTn;aR8%naU%~PXSTuhPK&I#>E5+lL07kGn{y$i}65tl? Y54EAbF$x%2xc~qF07*qoM6N<$f+!HnO8@`> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mareep.png b/graphics/object_events/pics/pokemon/followers/mareep.png new file mode 100644 index 0000000000000000000000000000000000000000..5cce3787a0e0bccf71d355cbdae6e63d0146cd0a GIT binary patch literal 722 zcmV;@0xkWCP)FMeD;c)?p1qbQTY5A!E+?>K(?4(8KokJ*(^;xIGcdbnY$$_k;Sy!C zCH{0|0A5F{i4>Q1=)lk+BU3wei9EAZa=t;7j}VFPU|_ug#zdlL%l7?AT(tumkLl;T z_ujqJfzT;Vaf(y?SGY&6uN|D@Ht_HFN=Kogt29^re11*d!4mw3y=3H<#s*A?uv;~H zVSZmat_u?fA9Tsu<0{X=EgOOsuc$h!r_9f@Gi?FZuZe8!so2trJP6LCvcGCD9}1*_aH$73Rc1wtljK*_|NCAUsMd3WKk+8>7lkD>Gy%MFZ{71#Y|yqXknxU(LOp@*C2U`gIt8 zudOT0UR-!{6$C{C|9uHFxuUeN|F8?W+jrIl zd$zoR;;dk@jF-!@z%#!egcslFx-dRib?$aMCX@;d6lWQ<8UMDEY7ahyl=43!8HAUm zoAJDn)+;WQ*%qCJ(Yv1a^=gyBh$ey?f-z~(jXNsm#l#rVz9(*HALoP^f;B?OTv~TK zVgfeY4qwMjg8EJIJoAQ>o_<1VVEy0MiL!&O$?3<8KMgk}z>*nwdjJ3c07*qoM6N<$ Ef_t1&O8@`> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/marill.png b/graphics/object_events/pics/pokemon/followers/marill.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7bd99a521ec303edbe9cb8401e2caee884c2bf GIT binary patch literal 574 zcmV-E0>S->P)Klf7=jFcgKaRYj^iC4vqxBGehAEXh`| zR5=rsnir@LuYh=rK%~luXAoi+@p-EzF}UEiE@9S4A3y?XWP)$4DBo6F1< z_)Qu3*K*BD$F0o(h|O6RWfwRTtBXHchHVBIv4St=ck_X-E=FPCypuMI2eyo{*PY+V zOsa!N1smEUx7jvqt_Z*^-(|_!%&>h56p8*hU{X44nvnFf@4#Zr*wzh@Y`j#BF4&$X zP)!SmP18*+3{Seb1Z*?^{h0AaTsmyLbZwqzQ2`av0g{<&5{88PpZ4@n z@x97r<0aKl@lntc>DO9IPE?aH3<>v-WdP2nWg|IMfpr!ULQ1@#4kKp$Zy?-HCVBkk z1v*gj3`CPQCCVUcNRLAkNXr2u}$00009 za7bBm000XU000XU0RWnu7ytkQ!AV3xR7i>K)IUgDK^zD08!ZO`x6T2FAkJMn9_^Et zNszX8XDwLPR&q)Qm@**yteX?fYDdlp&44FIjcP~xuPwwp0 zq0n1iKKI^zfA{|6N67#2FO0%KKTLWsFt4}$$ADh^T{}#;Fg;y0;w;N66L~mQ0jBBc zA>q|RoD!$6IXAX!8%y@y;Q|^DJjO&0ovoBOUASB5#oCr_4-@5rf!AaT06N6&LUk+t zp@&%>E_e^{_7;D{KuFxaP7hP<(g_b2^a1+GExx6|O|K7nqV3^=GdME>Ow$LL*ACsj zIRt2FYi;KXKn8aGX3GFiL$^=yZlS8eY!3sM`~Bsv-%O6s?L1JOn{dA1>-}>1Uf1tP z25!6k3Cuv-`GSY|){aB3NkaxEZr9rD_&&t=ob7zPkT0$3_td-)0dc$bWgS{!@g?zC zjynzfV?`%^@70UNJ>hoLU2n5sadvdlwjA|+#-p%4E?QrbUQnK$%d**`+qBjWA`Ile zPui9nnpu(`#bU{0TFFX6%w=nC(-dFH#_qwm7h0Bqk1;UN3Yeyq%L4$R6);WkquN|J zfTqvn_zI`CE)t)QB7Ets4X^R)T@38-#BExMGx6r?gW6$yE_Rj46f5%@Q=gITJvP5u z(%O@4e5R|5Pb&H|HjFz8pkow}X4TR4CGq+ZKD1GDv5k*pMVw#0T1kA)|F|m9Hl3-* z7Z}(M+$LmGY-HayweNgrU!bEvw)za)UtoFM3mR;Gu4Fs{Y1JDzizW+1!PrNo;*Q=9 zZIed1wcq4gGvi$BfGR*)$fHOv5b^W+*YpWf9jxdY<4D|_}#%_Fb)*YJFQ)^aExI+KJ_yvTC VG*W;9FN2=iJ?hhd9h)6@u|T%K}lIDInlX!lRau200009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)lF*}K^z9~MX)(lh?gD;X*b}Z^b3U2 zLJqS?Y!4yq_%ez&4>qN=pag=qP_Ut=qJ=Ty$su*jr4R$|f|r&i8zdC+1=2uTBwqRn z(pmRyc6CB8z4_qfw|{+x-JL;6nrEJQ=K0sa$>$btZHayNhrcXnmT)yyuCCwW9Yj`y zK7ZzK3tEyE$}5QMq~3^KMWib9IaK`%1T0AiKuRGXLQ~UJWR=oYzAk7fOxu7`kf7@# z(>A3EDsY&s)%Ml-&91Z+kZ1!nu`X~)L6j0TKHE7`Mf?s3ngt^D#W#gOp;hya6oGSO z2T^VZ1Z`$}*l7&+#V!Gs_-rpwgS`>={Y-h1%E{@$hhwo-vrw7s-zP)BZGb78i5%=c z{rdUzLg)f(RFbn@dGfvnp!Z0EHoyO>`>tuEwKM0!*z$L~F;eW;Q{~LwCui<>GSAgn zA@B-=W+~xX^SENHVf*APIJTd1sWa+gj9b`Q5L<3c=3xW-3WH{WYa`I#1NA+pu%7|C z4q7#Po51H8+QC}A;Vx+T(3&SPz=x||UC?Yzi0^Ihzs0Iks91I%B*c`kPHxT)a-(Cj z2>J#dcy&dfH<`oSO+=2)Zf?e#SI$AoTfT7TeJxG2&XwbQUn9GyW6wA7*ci3E!c9CF zwpvn}+encwKOg*Ax_==w)e+Hk-aVSNeaBcr-O(WA6f*bdpcO*=0)>x@i;wti7_g?t zvigzdm-;ev7nH9d(Jy7UP`>V=?4=yz-}5ghM`6Kp()4T3*HC^8%bruFoyQ(Z_Ob;z z>K2BQI_$|&iH{nGu+0CVq#!KuCpW$k^UpV8-aMQKh2@9dG{(q#@&joqzCt)X=MSs@ d;0F1B^B3elf20uJaA5!d002ovPDHLkV1jQ2c)kDt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/misdreavus.png b/graphics/object_events/pics/pokemon/followers/misdreavus.png new file mode 100644 index 0000000000000000000000000000000000000000..89b91ee032347d41f651a6a6eb20533c63812a8e GIT binary patch literal 891 zcmV->1BCpEP)y6&VaZ8pX@Q|3FG|QYDFFci!9jshahX{O0{{R3A&Mpm00009 za7bBm000XU000XU0RWnu7ytkQ@kvBMR7i>Kl(B2uKorK0faqY*(2iY-h;soatD$QU zcxWi0RA{itVo0VgN0c|5ovF|c-TF7QT}5hF1*siEiUuhf3Z_GH#iT76D*QL}BujUv zEAG@W58L=B-F@G8?+GDvTeo#vRhe_`!s0(0z7}ZB=7*3$`auk4D3r=A3MFIpe#lW-e9b(&$ zs$&|Q$=4(Mu~!=q!VNG~21a~V9AOK}p-jm7a|kRUI3b%oO0b*>7l5aBQ7)}{QgT@L zHQ<4Y&jZzvf64>FRjoK*Y_o?A~oSh9E$)&MNvRdEYf+$pKp2~x0P zPc=a9+ll?*oul!d*aKw=ji6$GDfrPbTk@<6SlA9um) z%bO)P_0b*2^E`Jo8@wZ=vx27>I;V=5&Sgu6VgLQ%-bzN-mSxS+3U&^0l!3Jk6*?7VQl|4;<*gdq=nd)3@u#US#6>vAYSk9bJ*#e6yOfbQMhljY)bIwGY z0W!4bN@w2Jw)*-CUFiFAal4_%*+F_aj`mz>OTw`6dPJ>I-K^!+`L_O9e*giHi{~Eq RZ*c$s002ovPDHLkV1jTyk}&`P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/murkrow.png b/graphics/object_events/pics/pokemon/followers/murkrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c714663ab2d3251101d845dddb8be5902a3a2bc8 GIT binary patch literal 509 zcmVK)iFy0F%$>zBS?mBeuEIX3=RcXC&h1Y zkbpxaM(%;wb8z!BbP^Epr&ZJ7EKW4kps z6~dNT{Zavg-Rz4U+w1|r1q<5^)B%t9SF0hm&DHGgX{N&#bw^v?_{eE3O-me@>4`i@=Th5r^}D`74fx=8>ev%)ncwn`IyBl3J9B~nQ2z7dD0FAh?)o6P)!&Jfx&S>QE7P*AprpaVNn6O$>G^aS@F?f>FN2gDLJ{BF*#8oOQI=N00009 za7bBm000XU000XU0RWnu7ytkPPDw;TR7i>K)IUqZKo|z_;^2+tXlUL1lOdCjN;?nytI6z2 zUp~)<@oT@>F?1dpT~8zCDIKPR#C@zbq8P_d+1C*Pe@={VnWr|QsXM1C(^aQ`BHs)w za%eLu8&T%$Nj5DCdTJK^mXlfX?hefC4E`(7_rDYUbw!QCZ=ssc9)G(V=n4adGMC`Qh22VM#fGVNn4A0jV)D6#Pja00009 za7bBm000XU000XU0RWnu7ytkR&`Cr=R7i>Kma&T*Hx$N&np7Fkfbl}&V@KS=z@DZ{ zo8q|6#E_7y?yrb(Y}^EHs;Ra}k#y-&hb%D!2DWhR1Wr|oykWg@5!f5Kca^87C$09f zXS+|-%+BcPec$grt!9MyfBg4`oaT2rd#2y9FwMU`u&|ke9_TV}{KR~En*n-mY8NAH(hIb=3v``fqOs<C%n5sA1eLQ?)RL~Cyx ziAsN6N5?G+gn!+WN2d<;n@qqoulm0K#hFlp>L?QN5RqGLZ!p2rpP^Dlg( zoQoA2li+*w4?rD|Tx=IUa7l7M4$HB4WGf zz>HpCG_X6!P4-?w$L9*`Rb*R#+_^Qew1Q7Za)3l)_tZJlxXmt-h^AtfZ}w$&$E)~t zC~{wE5fQ~u{||SV8v7irc!716PtL#H7bqZYI>=s;smR$d5zE7JC=ulXH@*eDfMwny zOIjQdD8Qslqe=7o=?{z%Gz-`)baO}`|1>#3c*`h8Ubz1a5U%)G@-x(xs g|Im651^RgT2mh*D-Pz^A&Hw-a07*qoM6N<$f^Cct00000 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/octillery.png b/graphics/object_events/pics/pokemon/followers/octillery.png new file mode 100644 index 0000000000000000000000000000000000000000..261f3a46af5582ab4df428f27959c6d84a9a1491 GIT binary patch literal 691 zcmV;k0!;mhP)FN3T*;%nE0RR910000000000000007)bf>00009 za7bBm000XU000XU0RWnu7ytkQDM>^@R7i>Kls}8xFdRTdu|B|cxwSQvgY37PLsEh# zU$LC4ryDF8JRXe&+1sJxEyZiGeV|WSDXFEO6<<1(c4@RE4@vJS{u6{Q<1#Me{~7VS zzbkyxJ^x|wyb!OIqG#p_ncG7Ct*}t>O`E+sPoBCDGk?IR!qN!$K)8MCo)zGEFzVuN z1!hBD5Y|@s==(30hu4C4-AxShA)g8(W%;uYXnO!3m<2Ik$4dEp$VzyJv5s!>w;*^n27s@5;{?p(lgu1BUC5D0it*tDwM3)fE? zD|~bh_bh-5xoLXsR)@SGMELfrYQNl0$db|uGnOm{aj|*mrGIKdJ{2PLVBU+3Tf!=8 zjDpByIf$!o3?4Y-6CsLdP1nL*5hfXt6=NVS{pz2y2dj6>r#ak zZg-Aza|tTPs2rL>3!QmRdrc?a?wHmj)d}2A;4k|0{V43Ri3@WNN5=~Rz_{CKv%Tku z)0Ly)+z0Njr4`m!*~C?9&g2+N%7&4;C&RD}{9=67+Vihm|Ngq^(;x6nD|Bv!<(N&J zVa}0b%;@}@0`PGdJma%B2l8QE1m^8m%F#a> ZKLHA#KTcAMl;8jW002ovPDHLkV1fZhF@pdA literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/phanpy.png b/graphics/object_events/pics/pokemon/followers/phanpy.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f9fb8f3bfdc2b059f5db81af0507ae2fc033bd GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsA!qF^W@D= zM#jL#jWZP$fByX0x$)vfLqnh{G*B1Dp9B=*EbxddW?o@Ehdg**1G^}Kmk&6)Yu z(dd7d4x86M_g8Nbm^1|hOuSEd&q!U^eX}mVC+7T_7Yc&LidQ01vu{px%e0H;6u$QF zm}r#T=cU{+rHKm9E+5HwcK@@>Vy??JWlJw!-IXJIf0s?e=I)!mHapt9)+hb?Yg)Ff z<+6Tq*{+N7$M$sDohyqz&e47NaJK>T3hPZLf}I!N`)>38F;AG_vjaN~@)?dhobjs+ zmbGi&)A?Cs$C)Xf0>A6-DIE#!J$+n#Dt)|c-p(6k%K5hY zL-&068};$io8XMMkLS)3N~!2Nu}tjOz5QJ4TJ^T=(@%ZjZTY+8xWw(svV}L)BpNRC pJi4v9B0>D>jgMc~EbaS$k^istmK4VlhBu%f_jL7hS?83{1OUv>$5j9T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pichu.png b/graphics/object_events/pics/pokemon/followers/pichu.png new file mode 100644 index 0000000000000000000000000000000000000000..67d6c4b6d79f1bd90c14f672cac2d3526952263c GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*f_D$GB7akVdX+Y zLqkSJ#>7a?gDV{m26n!D`Sa(^Oh-pYpjtR^WyvuDaySb-B8wRqxP?KOkzv*x2?hp6 zcTX3`5RcBcSN3}!b`W9zAYCPUr+LBb3;P{d+}qPGKK=7iNyWR>tTD&ww!>W3kNX9B z+~d>^>g=sQ=dJPO(+Ad`9Z#h>YCaX+KQPgyL(#d7N75)ooS}Nsf`2Kuo~s#UmA^{0 z{2E<)<=eenf#VB<9dg$wUn{t-w`3c)!FKnR5z?#UjMGI+qV6@ znSA6#$Zw-pRz?m-_+LC{K63h!=90Wgw^%J+KNq=wQFlq6kXXcmR|T;rEOZ65)7|bq z`Ns1(_~`F@-!hMR_Eo(t2{fO$KL5v^rz~HaK2{XZJ3B|RRQNvkf!7bR z+phl5apKOT=SGoT*VxjE8J{pt+854LXSh80m+{~0HOz5YSKqt!=}iI!x~Hq3%Q~lo FCIBEw%W41s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/piloswine.png b/graphics/object_events/pics/pokemon/followers/piloswine.png new file mode 100644 index 0000000000000000000000000000000000000000..00942dede2d2e0867ce1b4a9bba04c1ae38a6494 GIT binary patch literal 640 zcmV-`0)PF9P)4~A~>G_#yL6Ipz000000000000000->Jj<00009 za7bBm000XU000XU0RWnu7ytkP_DMuRR7i>K)V*%oFc1fD4&(#SP!~B;_SK@NYybaWTCa&RY=l{_l1*TntRGWO~JO~U8 zfp)@j!Z_v-$fKT3IWIRLTEVH&&4lp^^7JVhw+V!SRIkCn%MJ3V4OH%61U83qP1msx z3~hEq!@)K8U5>j_Ht;xVoIqfz-PNJnK)Ir;SauDDCbiuXfyVsh2L!HsU}#fyV{Tee zb}Gk>_9+A=85;Aa=lr-f8|nhR58X4UE2(u=iwWbz25v@u`&{KYHM@5H+I!y(lnDLv zS5vzYL*vA5iEA+2BK-Md#q`!s?7j63SabF5&(r;`IjrFQP4B(Gu>ikC|Hy`e_ zkovSmLnrG%DPIXBk+<-@s5Q_1~AqBXMtHxE0lG*_E*e`}@ptapsQK8ouH z=@tmLWaR<4K?@G;q;Bn;R&^S>O>_%)r1c48n{Iv*t)JFfdAax;Tb- zbiSRqG3&5_h->r53!!ndE{ZMtc5CT`vq3IvZ2t<1H*VS{G3k7s4(q2sM4Myvn`#;5AdPxo_97 z2?hPi(O(eHY1qAeT93M6ruBpi8Ap~R@V78_Z~G%&8!q~LVe8XN=NGU$oq44DU&HR+ zJyl&Dm29mG&WQ)Ot{EQK_2svJ@fB0eH%Gr60qUyw@N~oGFlEQ=n_sftF-P3EmG%lK zx>uTIjpe#+f0B)(E*?6#)!@y0C!3DQ|Dr(#D>F5&EsvNUbpF+%jKnqkPx@S&noO_n zXL}#EHh-7@#(xt}dwn|oPNdpG_%2aq-DX0~Kdr00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Kls||QK^VnX7|23wgbP?)Wp({*G{vzb z>;$)14#K$*B%F=yiN!&RfGk|}0^xG4jW%8(2SN%#A&syJT(P7Ov9yVL0d+bdr8BdC zX1>WKQ9-MGRes;gdvE^?YZ&WU&wBpXDFRiUT~}x9M2WFuO3jk|B|FPkZ?KGJrVdl(-V&M z!|Ag#ie;eA+z?jxY}KlRZnrP!xs_mt=HMx^xiQM2Di8TsyS( z4n-3vLct~Ltst)c01>wibrT%@1yXb<4#q4(9a@qi$o((gen{S%8ZB-@UXtPAoSf(6 zizrW?JbC_4+U>trS7~W?&h-YZ-xp^;R96^4##QJ1q?Xlh3Lzv`mxR9zQ1yurXSJ;U zwUl5<_}c&?PpV6z@B3NhMw~ukH7!&*coO2{E?ekHl?XWz+I!W>V31Uog(`;wDF^** z;j$oMW)0u^QvoaK!UfL-hez9e5Tu1hH}c-KJBqwSXgQ}3>XF!?E?n?@!2Rv(4h%>O zso4lG0gY}W1femtvEkRixiH~r_{)&vfRvC-H*5h?)76Bg-y-&0(1i(4JM2IkkP?zv zFSLGOQ^u|Oda}_>2&{gM-5}Nmq=dd@>2=G(`mvO85jL6$aYN=uUR**}LSVxmJ8>v{kH!nzM6p|hEigtiJ+C;8za9%DT zONq=H)q=LLVib}aaK4KhhP|Q-%!(z}DO>_%)r1c48n{Iv*t)JFfcy#ba4#v z=zKeMW1qC5fWyKYb(#W8eEd$`d|T`EiFuhrPVFiFHL50gom*}d&h#$awV$`bT&Jf{ zM01zgr;xgNAEhI17$$$;aoqOb{TKJ5EoA=f+NZp9O0-j*1mClM?hAjvU7q(nwX4Yc zguBG?=tJIn-xdG8;C;y<&U{5{jN7+IZ3cx01g@Qzm5S!l+}>hi@!Us)i!0G-@{K=Y zS(;qRPp3^-+z==p!zFw^t03!a`Q@Aq7LKQQ6}L-FIiM-6o%qO;@x)YFHd|36pkVuF zy$5yYmIrYL@8v(|Q@65w!{Ln;YCyNJDs5}or|Bd8Eu-z_mXZ>8mjjC!AGS^SI9>M9 za(PMZM4sA163ds~d-0d&Xz$`X0!IHnv^}3MZybJT%Ki_#5@n~GiM4y}R1M*efAHh$ zM%_JG4fnq*bhEWYJAM7cbNu=BwTv$J%UpbRA2~ef`t!fSBKew6r(LM2`1(QZligP4 zIf*AKb(MdYR+Svj_unx0zUcNApGwv4SsE-KZd+^;pXO~FK40FqP#5U^60^w6gV8&6 z8{E&WUpP_Ww4>`z#T1`gSqX)yv8A7tp4X(inA+(+oHpU8XqdTg)BF5QpROuDe{e$b zxWSWGMbY_}B8qpMjOonm000009 za7bBm000XU000XU0RWnu7ytkP=Sf6CR7i>Kl|66UFc5|X58NH20=l^poZUKzg11cF zTY*AHSr@VJY`{)_Ku~*5;g5gYqf}8x)-D_)*?iF8hZNt3q(v|YZgs0$-Rk1f`g#_+ zbozX5-d9Rr%c52VPxQHIQ&i=ZJfYtO3-j4jt=z`9@IbkCpDzsj@p6tY5i~1ijVE|} zILFOonBC|151KP_R< zY~2S685;&Bz)_Aeoyx>=0Z?0}#|Q$4NIu zm>t&})eGRr*t`lXkVc2#3FJ4FpRgC8VcD@5(Z7~$l-&bp*$Ps#qq0xSk#jRb13i^x zX&5aNNn|J4Wg3l;$daXvIGdUe@AWX`tSio1SCP6u!-Br(Df{XNI;QD4`N2Fa1Lt7q zK+Kuo%iY-NA4IHQz%Z=FEG@$6(7OPI>-(qe|NYv(B87j!eq{XtEUx^dMHPFP00000 LNkvXXu0mjf+2az> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/quilava.png b/graphics/object_events/pics/pokemon/followers/quilava.png new file mode 100644 index 0000000000000000000000000000000000000000..00fad810be39ed66a22f4e9724d20b2625fa3df9 GIT binary patch literal 1062 zcmV+>1ljwEP)G>HsNhxu8`O#syF);xF0RR91soTi100009 za7bBm000XU000XU0RWnu7ytkRoJmAMR7i>KmCbA0NEpUNU|=ywARpR8OGtFdp-T^a zo3KcmoF+x27!0vNZE#s|lfxDYX%D`YJ&a&jP@$KeOGQi9*`8d7P_cXIp%=G=+6J?r z;y5(@IOuQajAYM@#ikItJrs5@*pJ5Zd!BjcLz?z~`(B&=tqp4BZ*1UwwZZhv+@bw@jK^#avp}%7sC=Lj#2F54ob?xMMU~Y>sV2p#F1jfC!%WI`rsajIG zrX(&vebBAj5?7rDqH^vWGT@~(EP;A$$8nz4j!j$uSO%CFpx@ABdSilDR?EwQZ=9#$ z1^KYB0gK>VRTD3ROsr`ku=YS0c;gk%c1l_EYNcs|LJKPE@LcGf7Sz@udLa5a4-|u= z7QpUsEIgmO>FiNvP(`G|4NzGHR#YIkfm+l2_S`?k4f;Zw1ikZepetAfLemsGAmDVzDBLc=C4?5Uzu4_wz&1O?Lr1{HXyz zY;!3uL<2Z*MN{-Z(RzRh#-ud4OIXo)bF+XUEJ3%$4SsT~nPGj|Ve+DwfM(e2WZH_s z64OgUR|nK1u1EXh0cb!xOe-{7gV6b-o}LpYD^UTS-_N9+!OX`)fR7{XIQ_xjBeYG2 zA^>H2?`|gke0AmQ3l4mSOX&D_?eX1Y z{MdQfVEl+uD}6BPbQ-rI+M~Wa%I7=q^XoZjFw1pOmh32MN4xT}V+XA*51NsfryJX6 zqR3pxA|wZ9qhUrxOAOEslFsXcq15wS&nf-IWMr!ST+4pTEL!uXSsWW^GuC|3H0STg z0mdj9sqc^Xw~|pq0U8Pa$hL4tGaABRrZGEYP|Mn$3|ZJtEK3FCo5A|N@WRUXCu5X& g#M8`t3Gg4b&zrV|mCx|>K>z>%07*qoM6N<$f?`tg6951J literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/qwilfish.png b/graphics/object_events/pics/pokemon/followers/qwilfish.png new file mode 100644 index 0000000000000000000000000000000000000000..97f77749593a37487ac50f3b208af8ed134cecdf GIT binary patch literal 633 zcmV-<0*3vGP)K)iF!MKokJrgK~%HREjQc4@`wPqy#!S z7QrnIv=r(PQ$2?`Iq2Xbf>T#P&>tWj4K!4)lcJ0HQQoyp?=I$wgAPg`6#A9id%2g_ z3qs3S#xnj-;Fj)|_rnD`BP}ED-~4ca=96AvbN#OsSll8KP)Y)`zY%z-yQ|eB7C;!7 z{f(e>kqPh!jLuEq7xNjV08~z9-pCgTw~)!chqVpojc_6sM4rin3e&*gR>*ucVctAK zvA{BV(h;R6nsGbkyO9a=o+cD6v5a=7EpZEtZJ=PwM>e-|I1mW^Ela&a-L<$6FtRJf z_9s`%yPFwznd~u$1!@7^B_@_Ir_dziSI0w-%$`Z+?)YOq`gQvZpc?l~MiGr|nxH}x zo41Q~S`ixts#8|ZR+KiXCjjSXhfcA1LdHWapm>E(ggxp%rR-z!%i7H4vMk_+7taqD zmg^LoH$6&{q#_H{qA1EdV3#&8N3(>P581lx@e$k)V9zlbxhrkUn-38;4v(*99^9RX z?Kn+V9;znte}hW(#{O-i=a|gnU`Ia;U*58>tB;qAje7_;H$Bx_kXoZr3Cvzp0G+06 zoW9Gs&#V=ArF1tin;+-fdVypw@sO#H2 TR1qMv00000NkvXXu0mjf@!=D{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/raikou.png b/graphics/object_events/pics/pokemon/followers/raikou.png new file mode 100644 index 0000000000000000000000000000000000000000..9f092fbc5170a10abf0ac75d1cbc1f89d409b48a GIT binary patch literal 1010 zcmVFN3Dxj~^>xk*`BaXFD$K`A+5VVTLvBKjg@00009 za7bBm000XU000XU0RWnu7ytkRXh}ptR7i>K)<0<5N*Dm}!w@tW51m{S0>-5Xf|foF z3TQQWE7>x7Y~OaaQodML78QzuP!ZQ?FYg4JMO;kPUn+@(9ig>sCC+p`pL0R=8yWRQ6nAFe#B3X4k1GRp_Gm6 zmAyib_&ZTs?h`?sGmW@|sUab@ANq!DYlH_^U1F9ICr_t^0wqTwxNW92N6NdwB@f5q8nOJ4P$e6tg+C6o6FJ*b*@`%H9Yw?}qxuSQ zge==E*OaTNVP%I>wk6RmZNwGJ$g&ZiPgr(iECGn`)A0?3T25UTf7t*yqRcRYi7|B5 zMY`p(5rFRbkR3|Nbx}|W(O$?5gYOyO@S1}TOHP8O)9D{(xGn-AWTD8_=6u};sUvJ) z=f3E;AVQu`6Z+m)#PE7S=47#0Ra*zY>(Nuu$jjic==*p@XTE>u``#2)8>s|Tq7qzb zPWSJ+%COT>$)6!E__tuYg)8I6@4fau8}X8^P9OYNVx;XmWd6I5UBtXO@2=ZB)d)RR zCn!0@al((fuAh9!3KWe%aA2eH*_S||bYtt#1;ya$z0#aME;`tbx6b}~)9bzUPFL0D z=0kTf(S{3@Sfg}f>vv#2H^yttb>9WJ=>B#MiWGX?-oHU|HOuCf!1wz{T3TQUlzi;t zFDCZY|3RP4^@%= z^ZX$9t|_{qSW-Vcvfig&Q;M;7`k`_lnKa=Au5uJNlas;81g;rwD6(|_cOYg3BFeFM z&hABdWYRdVbQHI618_6CX1LL`CGcRqmwHVpCqC@M$ZVPC<|mvOTD0R+R)Cu|5!cGu zq<)rpG_xe-(oA=JJF`H%G?NAF9Ny08>(R8&6Vn-zY2!k|fqj{FMD2XRk-2Nzt?ZG0 zF`LwB0lJtbeKU?|mNdg2v}Rd>DB)O2&m2YVe8Kv|jQU^LL}6+@P5sFnE>~ zh!S!bvIMl9FBpv<7Ygj+d_iRoZ$Hujuhvx8*@Rs3s=g>8Vep_lfd;kCd07*qoM6N<$g6ZJo(f|Me literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/remoraid.png b/graphics/object_events/pics/pokemon/followers/remoraid.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cef60152392253ea0c3b164f8fa4b65c91e74d GIT binary patch literal 599 zcmV-d0;v6oP)FN1NNl5_#0m0Gf898ZjnaL?pfsw)K000000000000000`44|u00009 za7bBm000XU000XU0RWnu7ytkP%}GQ-R7i>Kld)^UKoo~>@whc0A=a%}5jr|`Y_UP= zA_bk3szK>mGRKw%#VJck+FfY3EE0MDT;pjj_iVikg--cR`R?A`cbDW5Ql?CqGG+2u z1zZ&7sR!tqD7jc*91YB|U=gbMuL2fDp^A$`btTgecvEq4R&`IsD**5mTo?wBD0olFi{6H$`WAfon-3P;{bG567KjQWC>X;(qh}hoC)_E#x@opt_(lpV5<*u zA?Jh8iKicsc(iI^&V*cA^EXT5G?Q7pT3WfVKTDFWwHH!IUl+i}?pTOlh!ux(E=>DQ^JIaf_ zFm8zxGG{T@jMq+6uy3b)e}nEYY9su?6kmXhrD@h;X=6Qf#EqYKjYb={Xal+Jeq-z- lXnL?;Ap{lvG_eFu~`ubX>p06At3+&00000e}i@500009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>Kl|66MKp4kwIEBG`zX3>mfzBST!L55+ z8X?rdMTr$Pjl={CqlpehUQm(v08NL|A*iOZdUzusg^WiP>2%+P=lmAiy@rX2K9M5- z?wg|0MWd7{Z!u=8a)VOg6DrizgM$ChKS#Ryh{V1Z`l111;#-_c2V_ zsu|YV3LG{=Z`SoT7zCLePvGx91~02-SYsscmBNQ4+qm_)*9;89a&F zW$aXy+wNyfGCj1vq#{&-+F#lxwg_SS7yi27CZjl{!U%H@Ig0$uGY2M=~FvG9HX)sR1Dp7yAVf5n5yT@*LS#yEkhM3WKqy z8E@rZn=ga@l!iOgOi&xezc;u)34hw1JcEGRzs(yR4MIw}uo3N0Rqyfu0000wae-k;*};J^AsOlE`H3Mh(W!x1NjU%j00000Jm73500009 za7bBm000XU000XU0RWnu7ytkP)=5M`R7i>Kl|M_vKp4hvNbS_&prHgb7_Hv0r^@E*2XN|LGK+# z86H*`&^wjA@|;ZYybw9Ei17et?sZk%W4VAF#{nNVw_yPjuX!?4@uS?%FB}`b&lh0< zR{>zH;)kccwC7TmHllWUx3CM?5QctB!R~MxV6%idUt$AcXtmVbfq(;Mfjh4HLx6zP zb}LS}w#5NjXANsGkwL`Ba0E_ZU1j4(PB8GtsUZwRJ$!GN@OI1VC;%d5iCQz_Y=B1f zErf_8q$yA1$<2L0!gPaor3NqJS*n@pJdgqe?gBdZi6NI*m;NISp2f3Nv!P#e7qzf0 zkhW68s3X41c8&>W{Y+lM3Q*5Qi&nTr+2n8gg2bMs6LdJ5!e2fsg@HX8;~(5wPR2fNqRninrxVt9_dv&{fgMe1 ui#`DZO9jWsHfGiU0000Kl)p>EKpe$`=aNlr1>Gc(2z5ysLQ}hG zaj2sl=qeH+V;qV&Nh#E=8VbF&6a~8#LC}BByQaAxUz<}92cd8K+`GJ&yUWEemRf45 zrT&iyS<~`wWnz4<<8OsrJr6O){URoPbuwg@H#m27Yy>pWEntFA)qKG7`KLN&1844H zMqRZV@=ODa&vneUBrRYBb`LTWJu;;gG9Brj^$VEoR!3c&!g;A22${Vy_-F(N0VoI- z6l?~8yv2~U1z~`Dr6b`$&IYNfJH>2N!p_K8%&6D#$}hHfJHYwi@NrtqE7#M##!dnI zu3dH}!i7vl_WcHVJrn~OlN`;H_p94jT0+M8F|Q{3PAmmNHVm&7oqV*$Jdk8u;{I_I zKgDDI9hn*De)BDf;<1Q>Om}4DTsEzW2+Wutb2@UOSoIm#=XEX1iL6~w5145$iAL>& z2cp`Hp{{jdrpnO-toMmsb0`sMwxc{vA6Rc3OuQanL3qb_ z!V(3SzF@rhW9CR<=dQo`TH?Rfm+}6*%W?2 g^VxoV(KCObPg+jBUN!N3*#H0l07*qoM6N<$f)1SlPyhe` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skarmory.png b/graphics/object_events/pics/pokemon/followers/skarmory.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3183449d7b086385b0af23057705716a57172b GIT binary patch literal 1071 zcmV+~1kn45P)KmcfeaHWY@9L6AN`>DI{C%{AUxm?304 zQ?fMn)o6m(W3o;WDtHsxBpA9&2sCun#eD$>leT)f%C?Rid&-@L(p|NfSc-K1|2s!H z9?SZF{Oz!vdrzSIwomUCVDT5f9yvzhUki+gMvmG20@+AlC^&Y^*7wG@f{~@6KOYkNmt_L_|gc1ESWkEh|06590ebIWhu>b|1GB^)-1I zCVfDp9LH85wI&wL7$fuof|@yEkV|&C#$bRNqVBnM%f{vG={E`KG9#PMwZloyl-X7=yFRaA!_t(%Rtio-G!;D2jt?FsDt@_Xci=!$YdBCb zpF_IKS5dbD=*m|cy@-7S?Gh~4ipVZ1mpI@!iNp{4TyLjK=ZuE}LS8u#l&o+XqCmXt zH36<>VWkx)Q3}p74pjUo2FG@$;zL5M7b z>9?*TGWU#ef)C5&;6|o%AQf-WUJ;q~jvG(wDuVN>AuN7MvotNA3dmuqhzLYuNpuR+ z=1thf5AGXju?MM+tut5pLP8vJ37qA!xXA`tNGxNCk1f*7_U>MPvEyj?(RnVE#K=hectE!&-^zXO4WXb@ri&VKufz3pyOufCb}Eo7pVtd?jT p;T?g282a)n{vV7x|CRg?$6p9`LNL3+1JnQj002ovPDHLkV1fs_>k0q> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skiploom.png b/graphics/object_events/pics/pokemon/followers/skiploom.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ac8a5d941a196aeea12d7c87a4b29d24574da8 GIT binary patch literal 581 zcmV-L0=oT)P)KlfO#CP!xybq@k10rEegP4mE4xE~R;d z&Z*GFL7IX~QD_S;5we72DQ?oCLMeokB~XW$^HAP|COP*uH5Ji8a<+Rv&iQ>Oe-x#z zy6URyZ)!gI-T7ww`u5vRRZ@hX8V}O}WoMK5kEJNzJifk6R|PvA4GdFmkV31Z1isNO zFWMwvbaSN{lAat|B_(iktZ610XmU7{0;EtimGY0|t}&YqEs`#6R1#{BxzzZsXu9Y8 ziSSf<$5kDSVGxr54o6~uWUOMGNMUpoKS6{5Nr1Z<7(g~kjMC6`cIojJE`?|v!}%#f zbP8KNUV}~oQ==p_H?}ccLa@NCb&zxEaL2t5L>IdGG`w>#EB z&JVcb-a8^=T{?|#&;z+0<$$?`@e#{2>Re9EbD zG6a44oOCFv&?6Wp7fM6=S1A-WDl^_I*|@44Ywt!h-k18y_@CD&qS`o; Ttp_yY00000NkvXXu0mjf7PIjP literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slowking.png b/graphics/object_events/pics/pokemon/followers/slowking.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b09b11f918d66fa981739858a4322b578d759f GIT binary patch literal 817 zcmV-11J3-3P)5fOP=5$Wmq>B(X7sjK)-h|_KokIAK`#(8cglD;Cg7!Dk+hSq z)>%n#sY9^5XmjO*R?x)(WhosJsKILps9U!diicpifg`^l!D|YkQ=vm}-64i{yZY?d zI$iFRp>%5B_TBltcRKu#4C8~Xrm+@XB1XRecs^4VgnFvbWbnKyCKqf9YctlYCkHYygal8F8PnlK9H3G8XR_SN9X&IQinL vX(U7S86~a(l$VZ_&&T^9Ik$?1zZt&)hAgR@|3CZZ00000NkvXXu0mjfo^*SI literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slugma.png b/graphics/object_events/pics/pokemon/followers/slugma.png new file mode 100644 index 0000000000000000000000000000000000000000..5a422f95c71fd89396ac11741aeba9a188c39805 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m!cH;6h7DPeu^9 zndo@XQ?pW1@a4r!pb|_F_*NhVD9Tyj5n0T@z%2~Ij105pNH8!kaeBHqhIn+ooqDin zwt+yK>BKn2x%0$ZiqAx}Jv))m`9tbpRgo^6+=01I&Z)55mlejG@nR{z6t`Ed`UgY3 zeNt<}o2cu%u5JCdvE;w#%M-`ndjAPssL?*(KK0V+KifaGt`@$}f5!h%rCt79ub+(j z45rQERCad^z4O^(*7Lcqz4sjG3|J5&?V0D;7nN*#`V{Yj$qext0=HY-;DP4bO=Bi4D+Yw zXV(_3dnWwQx9@h30snVyXLlFo&+qRGDT&zcj-6_>ebeFzZ$d66%Ly!uWO&or^8JsI z%yUoH{*tb(0&M%|RH`&BE)eP1aMH)OaUxNe$z|F$N0)U0F6Tt+Bwk)R(z4|epPSs4O4rYmrK0k$NlM?;n42z^ zKl{qh!`m#^o6Cf>I82k5yM3(f+)tb7Wwnjfo)1cV1JC{1+N787G;LYQpTBl%^^Jo6 oS-0Am&f1y&`iuAb%l}v3UlKd9O#Iq}EKvIKboFyt=akR{0G&q|)c^nh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/smeargle.png b/graphics/object_events/pics/pokemon/followers/smeargle.png new file mode 100644 index 0000000000000000000000000000000000000000..675fbced29cdf6f451d570b61c3c472ad3053000 GIT binary patch literal 694 zcmV;n0!jUeP)G^SCA-TDU000000000000000Ng<*D00009 za7bBm000XU000XU0RWnu7ytkQEJ;K`R7i>Kl+B77K@^1>gf5p68ORglZ>3DY7jUKn z+0M0tvvHwzhHQk4Ug_RUAcIZv07CYeYO7Z+oR-wfrK;?os&WiL2xQ@1^;doGIj739 z9p_Z1I@PKEpBm2wN3$D@jdwPye&6p6j%0T+&09`I|xy%J>O_QZygcyZ;{JG`G z-{a+vIV*R!$1*XQzh?c_E8JnbX|fE!MP)ldotsi{vwA}rtqd%diJdz838iVf(K1+^ z`9cZCwWh_5mb^86#=}a`W|??*@8(5>vmUuOZl$;xLU7_JL54_4hpHl>wQr*Kr{z4Yps_TO8*n-2wCr13xlYCcgE$@jzSp_|@y8 z!JTd?C=74Cw^hH3m-?)DYw|AQqN^_sz1Z0G&~pqX6H@iNUGu}Rzo5zzumbE);FFIB c7XD%V27bUjU}ofAy8r+H07*qoM6N<$f+O5CQvd(} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/smoochum.png b/graphics/object_events/pics/pokemon/followers/smoochum.png new file mode 100644 index 0000000000000000000000000000000000000000..973d42d240ddc2e6cd1fa8eed876542e0ede79c2 GIT binary patch literal 541 zcmV+&0^FN2|L20qM!I@zx;h|}nF;U5ZIRF3v7Hf>k00009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K(mzhaFcb#xNLbmQh?<=Vv7s_CphUQ& zDu{v9sADX^nIlE<1zL#%bYWm&>H#CaF7UjEech71`p z{ZJVYidQSx|H=5aRA$@Bnq+ z0wTg9ETDNN+H!AobjY5Mj#p`b8T3nqZj%$L{&darbFB*(%eT$cSl}2`BS5#en;GLq z;dV2%tP-Eom-Xy4LJd0I-Y%ysHWxTn@gL@|>r|j7x{-GKV6jSLV_17`dUyCuZ$5iW zXdTStv fyft(m(4Xc9hmOAh<5%6K00000NkvXXu0mjfA@KFu literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sneasel.png b/graphics/object_events/pics/pokemon/followers/sneasel.png new file mode 100644 index 0000000000000000000000000000000000000000..d512ecb6672123eeb838afd39a1731924bb02d8e GIT binary patch literal 741 zcmV`2hg|8Bux3F-fVp$?>s4IdO@Bk*S#p0~uLy#!yKs00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR9J=W)-j73K@|^onPSYER--{b6-KYY7r!8A(-9hIy285 zQzpg!tNYFD%$wPrT`!YKlO|1?G->{$IOm6L4dsU&CF>k=cNR7E++=UA%`MHb${8&sOZ6XA31a7iPuQC&2bsG0#)A`t#8+%hQQ2X0=Ef0{dmMtd1=Q99LEx>fn zp9rGeQ0#3g>`}~Y_J#m+?Y<#jJ03uBWU&u0YJ60KvEyZf2V{e88 zl^S}^>^QUd>TO~0NxuWgEeRk;$@bt4th9%Vy(=i;seT9ylm5j?Q+vkP zREFWnZoRlXmfFPFak}#U^2^BP`mos1zfGpIOi0;Ly@qN3+p*Lai@e*Eyno*07E`}d zAAitJvNW6xT0%(mTuq0IVOj0aVQ`F%AgvefK2E4lp1EoO{Y^@7-& zf>X+v)#Cfz(R(qqIUBH7a?N5s`f{k6y5rdnBPTRu#T0-Cfil^vhp%+S-ROtXQrux#{)Jti3QkJlLCp)%JqfU2=(WaEVK9 zbkk+V__k0^)dEY4YxB3K^lSgODC4}oF&zB00000NkvXXu0mjfGM8E7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/snubbull.png b/graphics/object_events/pics/pokemon/followers/snubbull.png new file mode 100644 index 0000000000000000000000000000000000000000..d220f10bcea63a2baacd4bed0eb16122116a92b2 GIT binary patch literal 701 zcmV;u0z&Kl)sDAKorLZ390T13uQqIiHjiD$zr`^ z$Kaakj=N&HX4NndlK;SJVLLmyU7Vz~+0x@K5N9oH4q@>RIP{Nk-u&2k$+;&8c6n7k zc{88yn?+$BZ)I$^>4^Yb*pl#z*o3Uc!c&8v`9{J~M&d z3$E(eZ1VaOz(uHdA1)IoRGfZ5i88>H4rnt8Et^f=SmW6?fO98oGfZ4x%8~2SlG;Gc z+kmI?bn=vTQ^+;zz?7dzc0$GC0zD!U9;Cc3`SRQ>qC&Hucp>9T zCsb@_GlC~YU6YF z>(cfK)vN>4FLE&wDz@K;HS*Q@LBWT+m}DTV$RF8%w`vF#FG;iF#j2QG>}EKEJ3xyw z`3iC*Ycs5`s1OwWbQy5wjM;t0UgH2@bAr8jEZ9TWYqMIP_vSBWPUu&_SI)?Kv)&9p zB49Jn-uF5EwsC9Qtc~j*zcx2KR`vLK5@AlFx6c~=K^R~T`lD^%9}OD+)?PFkVAePP ja_83mjpohO|FM1pxp_X$CKG?rnS*f|vq1j>4L1_U20dWx-!HEIk!3iNzApigXTv^jz00009 za7bBm000XU000XU0RWnu7ytkQ5lKWrR7i>KlQC=CKp2J(3>j1qHMk%$iV{qR61d<& zm=0+$qJ^wo9ny+o)c%JE4Idf&8w6(wbI78r6DX8IhS0f#CI_1mH0U??bpxXZ|7z95`_com z??2zoIsi=3ZbsdFdtaR&*#TG+K^?+b8RBm-2~f%vSz(=Mc^zc0^$$ITdUf z#hn~h0)hv8et7}#=zHErQCRRsVYYzc%y?lOuA@{eBqdu^@V$L%n)bUpDIl58-`cDY zU?dCcT!e(5efShlL?LxKlRyf*IW@sE&ntnXV zd=Y4AingK!bT=2pwZA@RxsZL+0;C>bpY6W?n7?0WE$o#llgG`=~F^M5DaamExv2g$Z00000n%a=!00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)jez5Ko|$`!;6oSB}2@OO{RQ-e1oS* zI2~#lxu%ybPG9rc(Nb;e%Q?qn1Slrwtbm`U*x*PmydXi0acfLnkm(mAh^t+e8 zPUkZw)lk>Z<|cdYo-S%0pm?_;`c*^6L6^s>?)_jB?7eP&iG+ ze5Rf#CWy(UC_|y;*(T-vsN^)9PeZ5aVsfqmvvb4)7A~gRl5IEd8q7Hz1&5tEby-Y4 z5Hi6$VBJuc)yuMvQ%>)1GT}7MiW^4g1?BUjoRy#;w-mkGaznHe(rg zfwtSWN;N{wdkioZ#Ayn*U*)pf65DOPc?5X+hI_aH*b=vk&5tk5{qLV{AD;U7{q~9D z9;Q<22Sayp*FNkF-n)H#t#^08ag#JjwNq-i_za#*)WJP|C$^7)K>$4-ZoxCQNHbll zKq)Jb-08!FJP7=#&+3OoFblO|`&zyR+HNM)#jJ{O#}$lo)I+u4{Z7`H+os)0M!54z z%A8|9+p9$FWZG^jUG26#u9mV+IqDa=O7#t~-2^U$`2exjO}AoQe{$j^(CDY!=vTAbOKUJl%-N16%6t2TogiF+ bf2sZevL=M$E(Wre00000NkvXXu0mjf*6Um3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/steelix.png b/graphics/object_events/pics/pokemon/followers/steelix.png new file mode 100644 index 0000000000000000000000000000000000000000..b46691e191966ca15f22b2cdcca9686d7aadc4d8 GIT binary patch literal 1628 zcmV-i2BZ0jP)G{FY;lVjMftjfQ0000000000000000000000000EGL6D1sM4hMGj3j~OA{(&B! zU57(9XkTNv?|*|rb8JI90MLc5|IPsJcw>i#6eMhW@T`v;&~UtC`6hQy09$hS#r_jO z!2qII7fypgGOU0AfPZ*^I{+R)JQ)}Y(nZB5zHr{N=E2U)^O`mPmO^y}*wQA-yDLD# z*k9~}#}HKruqOx{lyMAI&cKAB1%O?@dti^q4Fxd==<#QJPY$o{;D|pkrKcBYptjbA zXyJ1oOF+J}wWUWudKbk4jzPh(V_bAg!L6PEO#b`>vNlfu_oM@hZ3syZ#};?tjsnoZ zw*Vaicp9KU@1l!O_Z9#a5Yz=L%wDRI!5{WK+W=5s3gtg8=06=!0yUMgaPVH`~V_A1!uE z0JMEK6(*Z$+@!^RHKoSo{Qd%9=MS`fm$6npscj%eZufHFnjZ^#C`7JK<2rx z73dFa?y*knU~dfxU~B=41=tk}ATx}ESR2XnZvSArEoRo3R3%K1eo>$^`DXvR zK!DeFM~#bxeTM-1cf~zhXsVci0u3mg%QcsPqF@T^kH+9ZPUt=SN`YQPz)!y;z;6vz zNHK{WenEg=e})wc;M$OE=Je_^H8U5y<2$h`CV4O_Y3V}sMWNyV@{a(AkHwxW#l`+j z1MsGX6`_qN{0l!P}BF$&k9VT5b)?0@KC*H06rue*twT1 zfLP73S`k(JlVA`BwMy9#iWWNbfbP_ZSwvv3VpZU}xgzNKJk@5OMC-jSKswDX+8gH5QyTJy?8DZ{I$?gp%GsczpTlm3qJDE)*E0mF_fI zW-o&6MCWf^iEYeOmw%AMVx@vtM4`HT0Kj6d+^0)&c7quf8`@RMpW@tAiU&Z%_7;Fm z)%97xGUY^6NT45Rz$QjHw00t>JRmQlhj4k_p%;&5XaE5FB|k76HPWQI+_f&K@yefKGcP@e_47({(LDu~t%r$qNi79G@bNRKud_$jy^e|Co84DG|P#d09ab;lTj_00000000000$rvF00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Km9eVZFcgLlXVnyw2at796zVy2Eupl# zgSn-?OI{&hQplF2zGS{H(J6?U44(U5l^k0>N4}+(K$nuUefstPzibj2;6C@c&wn%G z4DIclMQJg+F-P@X-pV4U(v-W-`rAp~%D6wVu$a5GWvu`u=P)YbST{#v1^i%+lLEjT zV3CBtjt3WRWyhqD>Ml?QEBF{AY2npi^E0H$80dL$;q1z^km!p<%ajzPj%i_M5U28l zYZ(GPheA;6j!7Za(`91^t5-iRn>OVI&QRB<#oWpe=r|OrpWDnaD;#wfSdUisK=Wmt zlfu!ECZ7@-IJj`To@K8T_PP%YR{ubAUf3I+pO0v+N9+O}4=$V;g;Ajz599-LGrkl2 z%nSR#{FsB;$stfU9tuJ2C4Q+(R_M6bUEoWhcjJl0@`V=mhOa+zY=&2GIatR-A%M16 z6ui)}*k7MWywj=~^F3z`DeMBY%Vztf4exY3(i345an&!Iz zx8>K0+#t#`aa}q5cis8ve*MHRAN|A&y+f^5Y?EgtBPPi9KWzAcA2uz205_uA9ByV) zyk~(i`_WZV$y?bJk5K{VZmlfYV$AwbR)6HIWH&8fR!$0VXYHA=wRZOx-3Abbf5O_< zOulIs3;e#9csajS$2~g?2pcT`Ky-imQE%5(tWFmG;rs?i49^HxIE)wo0000KmCuXYMij>fg&cZF|AGDwd)iWmr9$bpV3pVh-7*ZibSW+-Ciql_!LYj&VpLB+8kpEuN;V)Nq29EV^+n#V?^7a|Z1@!W690ZsjpPkQ-WMx!`8}q&pb<04kDyiE z%L8eBk@rOj2TcppKxKkOky^!lsu&a)-bp`VFI9ezNd|D_m29wO$>4x56@vmJukzst z6O}2>9UDi_o?5wH!m_~~B}>`hjw$R_4&S#VgM@Q~R>NX}MIx0k7aMeFfr%ujQ%ofe zD~Go~d_-7HVNB{Nmz{}40&8;q4u+v1jLBVFQrNpbylq;HW{sUNB{W;oK85lpR?xP0 zGt4GL-qc$da9uy=EtLva|Ji;V3?tY)UqubT&)V!|+Z_=00Y znx0Y*j$a=iEv>9g3#>b^IyRU)37_k59~2C>eDAu_e1qcv4?p2MGX_k?$y;czpzWdY zMTIKI1|%*>7_7h!`YJIvdGRY}W~>jFUQ2mwZm%eL?fTU!s8*}@@qC1KG2#U3^=Z(K z5?+7-!zNyAc`^LrQ)U>@1q_b`gM+~+**3=dy!8Ba^JwXpFQQ$H7G`WfqTGPSH#SLF zpLf1A!n#ps26uBF8^F)D>(@4F{M0-i)zC?_i}isC<@yuUPER;^7#sMLlu_%|qwt0? zV>pNe|0XdA_J8Dmj@;Zp;l))6!yq)G@*rgxJhqk;XQ+Mo%eFeNb{sM1Zn8|dKxwilS002ov JPDHLkV1g!X|I7dY literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sunflora.png b/graphics/object_events/pics/pokemon/followers/sunflora.png new file mode 100644 index 0000000000000000000000000000000000000000..defe0b6fc0667dd1c198be03817daf978e9d8434 GIT binary patch literal 605 zcmV-j0;2tiP)A@j+(Q)CSDS=4=000000000000000Lbs=i00009 za7bBm000XU000XU0RWnu7ytkP(@8`@R7i>K)xT@PKokdXhd8X=zElR16O{Ej&=P27Q9pI60 zS)uvNX|kX+i9)3v*6;~uyGaL?hR_h2FVGu4^@q5mv_l_R!)!PGa!K4V^m<2cbQp*` zgnsFDRBkT59BBYB4|Zn3_#2x_yRVbacZFSg4 z>j=qp=1tv0)~>_{P7FAJog`Fi3#Y*3KDM5>4e4{F5!-|PwHmSI|3qx#*t%6MN}I`h rsJJ&^@4CxB9jt5cbDD=g{A+#z#jz7|-j>lY00000NkvXXu0mjfPRA9` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sunkern.png b/graphics/object_events/pics/pokemon/followers/sunkern.png new file mode 100644 index 0000000000000000000000000000000000000000..f19116651a5c58e4d3099676fba2e324f1e7cbb1 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toNk^X1E*k&cXo z2LnA53mF+1XJ&GKyjiGdXqmat^5#xM%|Jn*atK&Ze8vpO;wGbt-fH|MdX+E2^xf z-?=TPY-)^+svf5V{=50(mB{^u4?Dy7<>JKD4;z;-p9yoyym<0(wfyqcIgd-W|0s82 gDb^~Gds=@@JU?UI6S;YMJ3yi9>FVdQ&MBb@08R6k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swinub.png b/graphics/object_events/pics/pokemon/followers/swinub.png new file mode 100644 index 0000000000000000000000000000000000000000..5d02fb7d683ecad39cb349c50f284f4c08b08cd8 GIT binary patch literal 497 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*f=rKa_7vq29X&NUS2lVwGBUpGTnJQ!2Hf+wBY{Gk1s;*b3=G`DAk4@xYmNj117o_Ui(`mK z=i4hA^O_ArSOcbo#5u2O`Kjo5{fDQb{Gm&_DnhBe6BQQU4tc=;;?n-LjW;CN@2vDb zde<+fW+Su3xjB}_&(6&J-0x(u{gzo(W;JLD-w^d^wYZ(dTLpYz5)lszkT-`5(^iEx=eK2?Il_grY*Ezv*zXW53^;x z<{xnH;WEvN5~-N7E@oG}clz9`|2-T;g4QNHNWLNCxg_uS7LRF%Roh=Xik3}l<$K9B zH&DMQL-~9Dueb-!@gEYLW;^Y5D2_SAS|~lOy>Pqu4n~#-zQ3-Cee1t^V154cZyuX| zH(i<+_u#5PQU0Y+K_>~3oGTl{r>9oNoqjp@bn2pI-Fxio>veA~@!Z?&Q2p5>)FI%` zUXN*y+OA7m-l?1&^Ofn7II&fvaQj0abG7i_*B?L3R`Rd7GG}uS h@0s~$)?b|el%1isXSv?T$YxN~c)I$ztaD0e0styy)iMA8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/teddiursa.png b/graphics/object_events/pics/pokemon/followers/teddiursa.png new file mode 100644 index 0000000000000000000000000000000000000000..e43906549e80227c7ae4fb89d8960cbb888a1933 GIT binary patch literal 692 zcmV;l0!#ggP)7hB9VIk@1`N`4Y*~y6j0000000000+)A?(00009 za7bBm000XU000XU0RWnu7ytkQDoI2^R9J=Wl|OHrKp4iExcQ{Y;4urT#|kM)$4D8n zc8HV_Y6+8#Q&iufOfrZgm2Ivfs)dv_@Y~ma@*4cEvV|#V6{`n(A18D5R zZ%qc7+^`LPxH`AzA$HcuFo*8C?neXZ^_bR}8CXDBw?YfkSgIatyUvH%hI+-&y*fR1 z@eR=U3tWOgubs|Pab6oQ!%X0CeRJrh>vJOm3wW2|K%Kil_X71$*mmb1{TQ!M<)Z`4 zzhwowJ3W>PA$1R@1`d7S{}3Qk=jNFkn4F#iAW!FZRR9n3WSDJl?)wokmkoPetyco< zvEQ)t@6KUgAXDepxzbyBI5V*QM5`S|fhP@r@A!#wrusEYpHz?w^l)|lBasWJ5)&_W zlrkL1C@q4ndf|Yh_#7NZ`ow{Gs=TVQyArl{q#qEjWXW;`x)P~hu8RQlu* z1VbM_d7rzi_ea2-9A-+(OnhybR8{4nYI{~ycuOM_I#GO&PPz#GJXLn!`*hmhkqO`3 zbCru{6v&qWE{}Ms1fE2Z>PI1ZC1wjX>+@cZZ?t?=T3ELpnliF<*=pcXUw74OO=X6v af307m3NaIzB2SF~0000FN1-$?;K9Q2_w~Am}_}00009 za7bBm000XU000XU0RWnu7ytkPpGibPR7i>K(7#IpVHgMS8*bJ?g$6-zaB7M3AP~+A zZwQJ#a=cpF^nX_W|&mmK4J6n+gVPMI1%HjtZN$HdvSozFpmBfH9|4}W!(AM{wU*H~2cntd zE`K@(U8rKLb=*B|^BDK;i3{vD^MG&^9l(CpFs=gj-G#MkZ(#LkoB7BeUUg~sN!e8bK-1P$9Auosp00000NkvXXu0mjfzcKxM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/togetic.png b/graphics/object_events/pics/pokemon/followers/togetic.png new file mode 100644 index 0000000000000000000000000000000000000000..820d1ecbc1169087bc71e3126505b54e3f466ac4 GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*w{F6;>(vmH4P&Z zS3cC#)MR92ycrm|aN|v&5=`*DHA59B%30tMSEyR(pIAcc9P28UI~3YAetRqF7_+hM%BiPijK#Zu z7&PilpFA@*P+V20i+cvQ=|n%Z2|mwq!p=Q9Kf&g*1yIz~VP{fOQ$Cl0tgwgD)uWgB zJ6e*~Ja6cH+qGySQXW*etJqz+S_A0-v)%->{}tTD?0K`wQGCh zix)3M^rJ7ipSoQZYGix!?vpIb45JHdO4sw7j1pp-*DK~tTw!wDLQC&eBn8Ix@f{PnN9`bfN@ zM)h%DhtI|Qul!Z~Nh(qm)<@T@{Q5Tk+gtbBztU>kIL`lVP33S&7kTYf*E4OmZK>y? z6KlAn#9fwm`PWTQOXpM()O+BqGBHG_&cZ_Zxt?Q*khshIznA=dg*+#_sCU^Lul#Z8 bhxn~}%L7}~%VY&FfzqX?tDnm{r-UW|fMYpw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/totodile.png b/graphics/object_events/pics/pokemon/followers/totodile.png new file mode 100644 index 0000000000000000000000000000000000000000..7973715de3f3fe98bd5e35a2b1b93a1a4e697dd6 GIT binary patch literal 574 zcmV-E0>S->P)G^T7=|N$Md1)!3Avpj500000xI@)W00009 za7bBm000XU000XU0RWnu7ytkPv`IukR7i>K)W1r@KpY3~EXCVh1V`V%UnB8Kw}RG5 z2!YU!zJO!tloA4I;--V(7)#18bdVy{*gJ>EHE&crO_cS zlmT_~4zw(?z+}Wmk0} z#PW3489mT!xM;T9&!_M9ekUc)PcEbhG}ke{W9~ekP8*!!>F}g0in{CgBbv!OPq-uD z@oM$)A=kNIzkkQ~0NvnnThm;(;aliDEk#4ZEzThUe7-_?54hpGPCOUrKy0gS-V}OA zGf&(cl5so2QHfZ9FmU@nzB^pdd?FU8nsMhlSd;mk!> zxtHuz*j44)Cg;;;r^yCD`u3%pA_V2z$S#NH^{x$uWLZg%M5<&7+j_@OUp;xWaa?Iv zxx*HuG{tP=r3nc7fm$b#^bWj8o}F1A-?DZZEPX;_ov3xP=kNcPPmsXx6`}mWvH$=8 M07*qoM6N<$f)Yv%MF0Q* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/typhlosion.png b/graphics/object_events/pics/pokemon/followers/typhlosion.png new file mode 100644 index 0000000000000000000000000000000000000000..9a836bf5616f2628ed942402bb8231ba0364dab9 GIT binary patch literal 1101 zcmV-T1hV^yP)G?Tfc>w_dX<0eBF){hkVE_OCA+eVa00009 za7bBm000XU000XU0RWnu7ytkR!%0LzR7i>KmA{J{M-<101#Ppq7(uLHr8q546o^qX z_y`Jd5jJ9)gA2zVVcp1yGHkPj1kMzO5S-0s8&!dn2aeGl>^0III)OGR;v!949OMv! z;KB*y3WNTJ%-tecsG|zwf;nApri5|3=ux=j$;z=bvQVam}w=y#Kwy zu;Xt z&YpEdA}V>IDmYz!9{xTyc=7m9GXVbn*C8Q##;iZnus1wyqc-|E7CBq6oS8i&7vIE- z$Y5ru8C0_UBu;VHVA3N*Fd@B8zy#a-p2*p0!JjIDCB8`FB|cZYx@^Q(XvS~shFUDTHqiTxMn7xLwVjrQy*wYPg?it)mq+mIt zFp-97*-(sQk3}kKWEEU+!-W_+)61tlFC|)^bD|7vuXFSmp`$~uBU%!SMU#17&T#u$5Q=8Sm=ZoN2Iv4MKBV!=2i+F|+83-rOCc+nLzmP};D zc)0yxYIKltPD^h6eXx3t*wn+i$Ih1XRFHwRR+y|b9FhPGGSdmWrFDJi7e>XlB=Se)$=z~945!W;3Vxx zW*OS3(?N~OiY-d3^Z{%Rq@!C1o>b*}wPdvnuZQtxVKz3H{iYNHX9{6HsnZ9NnR-5f zZ{%{rG-G=0AN2?e9w`C0_GLof$?h6_Z$LDI0P>hgL1#AMd}CLx&olPB$aF<7GaK@~ z+WqX<;3nNS_!CHJAJ(S=D>*C@(x5WWikNO-E;zWnpN)L^gf+PA2bwF7DCL6E(Rl=m z#7GL3df6uCL#3^^vynxv@He!tOgiH$)(t~o<@rlnoct=y*Af2!;b-aM Trp3Uo00000NkvXXu0mjfUZNA- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tyranitar.png b/graphics/object_events/pics/pokemon/followers/tyranitar.png new file mode 100644 index 0000000000000000000000000000000000000000..ec13b289dcb6ba3b5f840f9af518fead6263369d GIT binary patch literal 940 zcmV;d15^BoP)L=X{qVy`LWq~0RaJFiNP^JK>z>%3@&9J00009 za7bBm000XU000XU0RWnu7ytkRB1uF+R7i>Kl`(JAKorLVF4k@yffe_wRH{Xi)FpRC!w^*&`CBB!mY7#Y@BS_Q}f~`9Fc6BiLq@Dp@f0j362+Uh6eIAmWS2y>U0Y;CrUFVE~&kGxSMSkiIcp6U9S4h*b*e zr2=1dvgo+%8dk_NYNkfA()&7M4VT`{g<*Mr zl)&WJS@U`fv$NNfzdbgF7)d|;_4839SP|qWWUlL+B{WQ^;Vhvy4TmyG;lT-y`gI~J zF4NJQm}^6IsPQD6oDzLExP&PNBe-DsU_l7e8$iq=vek1YClvg25lwlWn4DG$BW{abrN#9L3SB#(N!ey1cY^LNTa?%(QlAZe%G4+BLFiVV~!_Npc{lN8z4!15;6kMq> zZZfJU8^hwzk@CR$;C$=J)qyc|df)BuYa6v-J1oOqXWdG+>RrqKS^Ne`(xO~7a|7@I O0000; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tyrogue.png b/graphics/object_events/pics/pokemon/followers/tyrogue.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa25a19b8078015b238866860265f33536591e5 GIT binary patch literal 515 zcmV+e0{s1nP)G_Fa3CW?^ktr#0QGoye00000;7cV|00009 za7bBm000XU000XU0RWnu7ytkPc}YY;R7i>Kk1=b5Kp2J{4&s_6KOjpxWJ{ZbP7VeF zhnqG5>DawX>5@T$k}J9v`WL!qkbXGVF@u8;{4b3cXzn|6R)kLV*`9mv-tRk2>*(m{ z_(v>^_D+19$<7JA*6!;u5mVVYX6PGro`wEiFKo+b0_-jZM z9wyW@!TSkiKNa4==S{43+Xb*!mpy#70OrB~$vMG0#BZM3eaCTZh3g*=01IJT$xnxY zIcK%*I7&C2A{Q5yy@ce98REf$v8-{<819q(NH8mMTv+6{UelapXt+i!>}A1ye}D=n z{ej~(&Gp9_Zktqopl`=hRJa^ZS>t^3ywXI1<+VIO+gz=3VUnp{DCK*u;zIstls`Zz5!Mv@FAG^AfW&N002ovPDHLk FV1iQP;#&X! literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/umbreon.png b/graphics/object_events/pics/pokemon/followers/umbreon.png new file mode 100644 index 0000000000000000000000000000000000000000..d15f9abcfa342221af91ab49b19311861fd700e3 GIT binary patch literal 739 zcmV<90v!E`P)FN35u_+lTIYCKL0RaK|*;#3Ed5JjzDLFv^0000000000B*hr>00009 za7bBm000XU000XU0RWnu7ytkQSxH1eR7i>Kmc4GXao&vBsCodq-1w3_Op=3OFq1aU8dQL zXG~cFTpmqIKdG2Sb~G{Q%LFSdJ7a_vs+KnPto^&>G6l;srrZfCW?;29 zc$I>I9csB)3Cq{vW&K0O&cIr3V7-B^u&aCU-t<>S)^Hj!?WWuwWbCXh-8_(d0H25D z(9mxNfhSbpBxM2-Z&5GH38P~(uz?30x>7I*dTxS%Y@n(ddyqw9(|Rrl<5n_GP=9~x zR;U>TM{dXmK;GR~)q_3AXz=5dB!)b--k`mQHO8`35!3!(-k+rJ!WG%^Ds(8_8jy%e z8=e8F@u|TYn`7>8_y%`$^No1}nPvva^~g!#2Hg1Op1HvsenLAt%-hDSYjVd1j0uX; zOwGj^Y0jo*+7K4vV_{a8geCG{M6@6d})Z{F=A?v@z^MopH^Mo6SLc|q+(c=Nc#M+C$`$Ok>B9V%JSsUeeM^Y&%R!&n`9eqTO=@{mURY$b!x+$YAy+mgP99Y%CZ6t`?`*a mv2E}2gx!X1dtaOLnto*zDUw(Bz4v+v$h)4delF{r5}E+^&Ty3g literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownb.png b/graphics/object_events/pics/pokemon/followers/unownb.png new file mode 100644 index 0000000000000000000000000000000000000000..45d35e5d5b017259a647b1403867e31ec6820e21 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@bDl1aAs(G?r#SK*QV?*R zDQ(d9MalFXr?CD4@q)*H`xSb*XU2CqFWUX{<+IPTzZ(ZgHJyH1wDX^O-?upm&i7g8 zEwYUV(#)Se3!dG%l%er-Rp;TDb@KBWI`%OyDcb+E%#ksBe#euUOe{eYF9|S6cs%1a z5#VC{(ah--b^dttrl(59=?n)Btl96)dgM+J!+}>8{6(iWMjo)fv~vl=lB^ZF7Y>}g z-u{-=S|Q!Gk!>IM=Qk{O^i;y6J=dsT*tsyFd`0lRpbuY{PBj1P8{1yR$bDS3_K!ru QE>KW-y85}Sb4q9e0JeR9+yDRo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownc.png b/graphics/object_events/pics/pokemon/followers/unownc.png new file mode 100644 index 0000000000000000000000000000000000000000..857f2711ac157fe24e4918c9c0d11b6269178a2c GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@|DG<6As(G?r#SK*QV?*R zDg8nCQumb|>Z)-L`VWr%mOq$jI&J2{)>p?^CzpKudHDAh);X`Qt`1+nUze%wQ?_u# ztj5^=jrwW__Rlk$Z*rDRL*Zy-;_dXy#g})tOV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownd.png b/graphics/object_events/pics/pokemon/followers/unownd.png new file mode 100644 index 0000000000000000000000000000000000000000..cd97e890722b22f2ffd05f26c783c64da825fa85 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@8=fwXAs(G?r(EPctia>) zmUlx-gvv{Xz`O4RLr?uvHhJmZ!r$bx`d?vv`^nuA4V`Tu@K0^pgZl>}iWwriS_>lm zKN!ErcHq-lyNl%=k4D3hpJvQ9+k(X;7(4bcJ=xOvk*%WQ=C$I3f&mQim%Spr#desx zc+QVyWa!y`T*fHBad&!XtQC`hMEX`nwjaI>4BdQnd<+Wrm$ybSiiG;}*qu71?E0YY z?b(IV51wDx-2RZ0A)zprS77~G@+sGFozqQR)c0ZQrtJ)3FE{AA%zGF+C)!Es{hMd=m_#m>?kf4|t5q%fF3 z{1>9@@=l8(anaH9wyYX4@-`2CJ^0DB@2+bZb6T0G$-2$|Qn&v$>&V~;v}Kn; QGAJZGUHx3vIVCg!08!O|HUIzs literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownf.png b/graphics/object_events/pics/pokemon/followers/unownf.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ed82cea4b23f8c2128f8388e7fd31ef5267846 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@x1KJJAs(G?r^NC#D+sjQ zl(yjfsFeH5?~e2qaf8e~{{>g6d@{~xwfovwnUwJNSnA?qC8a>{xBbZ>dCtSCqKTG4 zhQFB=rp@dYTCn}GkeL>fgvC9%kSR=i>tF9#uX}ZqexuRed3=%Kngws!!a~1)e$Bvk zYRTkgxB1My8O02Y+Yc=1YjC@E_#5A)+UniRAJ1{_IL8xEntq^JQs9Ea-3fgP?0MyC zVa~O#49q*#*x$vrF6XTHA}FfQ7~snEMZknj;DQyGN8`QQ%NQKx6kM4Z>fc-pXHl5% u@bIrl!Lw|p9-jMqZrYstqhEh{-3tCtJ{4mJ%kW@ONO`*YxvXo( zD}N;DO20^9f6_AdPiJ5h!MnfuC^)%X7uV{lm8 zUv2S(A*Qzc|Bo}03<0aJFJS%bZ_N%#u28|bzf3W}n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownh.png b/graphics/object_events/pics/pokemon/followers/unownh.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4a8141b4f5d5a19b8d62b6ff4e759869f5b90f GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@Yo0ESAs(G?r+D)<8}PVH zmaYgnVym^}onV+ggZPVO-|d~|mI>Z$NEW-BD$xC8q4~qsAV-!z|&&pCzIepLhScci zRdWTo(x08W%^GI$L5Y1nXKQ`&!UXj_x!QiMhf>+5zjNT8XmIzca^RsumFr}{X6*@a z*c+m{WlwBEEBpMV$C+6-xtu!J|MYX2qt@%BPHRp4-TO)KgbJ S*)M+`6eOOmelF{r5}E*P*?%YB zeDMr=X8gdNm0{C|-%LFzaoc}++}n9#raQw+ZU^zy^EGTK>ogT6+|PM7tLdFg^gny9 hD(Q_+LvLRRxyqO*F84l9`?Lngqn@sQF6*2UngDL+aqj>C literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownj.png b/graphics/object_events/pics/pokemon/followers/unownj.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b89ef152cc7629445633b5a247e5c88ddd3215 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@ot`d^As(G?rx@}bR^V}U ze8sq-Wz%z>mAl*{_BvEI>g@b4ILqgXe8JtaulMcl@6oprXgdA0XlG1v;3=;v&nc_A zCoFo;n0f!1;s=K_zr*;|CT`uw%yYS@dj6yX#?OD3vvTO1KW@b$XK8%hhFPGNU4mQu zA?t_bObkg6|FdqGv?u1cwq^0NS<+kr5*^_WSp|x{8JU<>tNAwfzLz`3Ki%VWl|F+) tRq26{2JK8eP3CD$9=pQXed;G>uMls&FSmG$oLN4|*PgC^F6*2Ung9VsZLk0U literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownk.png b/graphics/object_events/pics/pokemon/followers/unownk.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf85a98010c7c8d3c16c188f60200978e1deb56 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@L!K^Vz4?;s2 z4r$)Yzap}X*U*@gi!1SoN40{mnnTP4?u`cGbq`sN>5E?%$+M|^#{b@-0Xyk^ZU%_tW~UXn|E~{_5yj_)78&qol`;+04I-dqyPW_ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownm.png b/graphics/object_events/pics/pokemon/followers/unownm.png new file mode 100644 index 0000000000000000000000000000000000000000..313e7d9743d0d1e6eb70e88d7552d848037f3e3e GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@)1EGlAs(G?r&#kHG7xaN zF2sJLbIlh^XMw#_Ma3JqFBJS&esDpc|6tiA#mZeLyYFelPn-t=^=Cb074}WFK6Iye z;p_*EE2s9)dbQ)ZQzIW&?$fW0J}Zn?ESOp?RCK=8?_-TdROM+0t(Kn8u5-n9#MVC4wB~J8{UahLrJ%?!#_r(s?tWh9{PX+sPo6qka-M6u10MCsi>B`U1qugG LS3j3^P6rOM{-w_7$X|EfA>51ux8pBsup~;kJ!5Jcb&9r*|`*>nLcW+c2jN%tzE_Q z==JOaiQ(TFV&?t%_p<+k>W%%(>|7!S3mBH37j|}MV6wft?qK$TJL&V|>R1%M={~TK zUA>Q~>-_Qy!VM1g@#j2Q)8@|%zAn#j;k=Ey=#O9q2Ez~k87wAQ$bL~4oWJu2i^Cgf z2lqK1tf!VfxFX)*uya}<^R9^a*ZE8g8b>#?l^EKx?PB_5v!>~4R>T@1hSjOn;xp}D Y@;Mw;)lRu&vk(*{p00i_>zopr0GP*n6aWAK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unowno.png b/graphics/object_events/pics/pokemon/followers/unowno.png new file mode 100644 index 0000000000000000000000000000000000000000..d25edf3962b200379f3c005d510fa693fc486f40 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@^PVn_As(G?ryS%xtia>? zk!@ScCXZG31jEEL#9u7^-5(IZ-{_x|vG`uWl;+BZwVf(udDqrNZch8V*5irD`&^IQ z%>`#TQ+NM6rSNCx@gG4pJFjnddUWTc#(VY!6C&dLrv<)q?5Nci*}f)R&1}a#vwQpw z3j=EIIA6Se=t!t(jc|igm(<~fAC@x+Bt7`aU?H?WuCHIE_-ZdV$Hx5DmrJu&#AT_v z05v5BRsPV?wG&XtoVZF}J6`oW+k5sMHk@ZJCVXmS2!EfyeCbK{w!1ou?;ZW5_G`b- RAwE!8c)I$ztaD0e0sw{lgPs5Y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownp.png b/graphics/object_events/pics/pokemon/followers/unownp.png new file mode 100644 index 0000000000000000000000000000000000000000..79bd00f6b4263e3ecc368de6b39e7342627a449a GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@b)GJcAs(G?rv!2}8wj}E zl}=H8qIB!O*LHSI(f9Q&X7X3xn6z#ED^#}6=-dZ3r6sRp^roLKjq^S7mdP;ox^Ws? z!hEs63t7@;PqVA>;ac_UX|_WZAOBPDgm0U3cBV2kek_tNZ?qJjXxh)<63=`raEpGU zJ+FcQ`+vCu+B=aM!J%tWeHG`CJ0=Yd&(hX$@i=@5RVdr=;h2mxNACIt hyMl@XpKk2@_LWIDQiiwtZGHsEtDdfYF6*2UngDXoYvKR^ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownq.png b/graphics/object_events/pics/pokemon/followers/unownq.png new file mode 100644 index 0000000000000000000000000000000000000000..b977aaf0b2a48fdf5acbe48b41c09dea88c7fc62 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@8=fwXAs(G?r<~;oeuZj-aP+v&Z@PBp&(GNRPpHkw9S?O zJsPx`Tp2=K3zVPzvT``txN`op>}66h|H0sJpP_2~x!H^kzn-wp_{sUIS=G?L=aBidBZtEK z4L5K#+)30ncM*`gbwfP(;_3GbSOmIvs(Xg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownquestion.png b/graphics/object_events/pics/pokemon/followers/unownquestion.png new file mode 100644 index 0000000000000000000000000000000000000000..93716026ac265cde20c7bf735b422615ab09d2b5 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@U7jwEAs(G?r)(5Ftia=% z$UNoq#mS!U|@7z$Bmy(k5r2ety3vQR$sWv$p zJ*gA9?SC(=;diN!d=jR3aqF#BT-RfS{;C}~wAD%P$V(RYiP5drjb?9!0)oEU<;u-q z3FznzRXpe0v{r~?WwPQEcU_peB|TLP1lXHYr-BZ uyKTGTjLv3PhdIvX(JbxWQqk*P3tHxzGpMR2trFD%dE3*~&t;ucLK6Vr6ml#8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownr.png b/graphics/object_events/pics/pokemon/followers/unownr.png new file mode 100644 index 0000000000000000000000000000000000000000..ee584667115aa095cec7f0eef3a09f2069aacef5 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@&7LlfAs(G?r#NyQG7xZ0 z&zsPAp*!Txbe=c|{R_R{?VCa;Slw6gDN#IBv+L*I4{@AJTqb&`2>pEQ@##H}^f#%1 zb=gJlg==`eNfpfMU%C5rrVoRI-t^CxSn_tSdRNV+@QrIix7cOg56X-Tfj{;#^r@U@ zf62M&m0ux;fXAY4%VOpuca<3wIz6O2tnbadC0oTT2lB6{tDnm{r-UW|s;qDz literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unowns.png b/graphics/object_events/pics/pokemon/followers/unowns.png new file mode 100644 index 0000000000000000000000000000000000000000..10bbc64fa82cc75e3d776e7cf6bfd9f1e27ea88e GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@51uZLAs(G?ryBA#8}PV3 zmKJEaVaXi&ony850`Y{0|J*fR2E37H^4nd~p?+rjJ@tvXb5;i~cI*AmTfZ<^d0yaV z2E*wNXR0q4*fUJpZz3Sd#>}Gj=gOo%?3Wn@J~JoWuFz5Xd(1qylaVPiLOfQr(J*$p zBDal!N5kKW>+(8{fzOYxljafdxLnK^`Cysx=XKG33=Xp@f_5_1r7}2}{JG1pZi#gM zPwh^t&+C$ptIEz`n)`f#RXAhv`63NthX-LQ{Hq#23aK1PVsKz@zIt%Zi-RVT50<>T zI^iAX(kPyS>lZrjN(bc>Z0Zy2*!i+PKv`OU{&vOtchXE|fdb3Z)z4*}Q$iB}@C=5S literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownt.png b/graphics/object_events/pics/pokemon/followers/unownt.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ac1b55a343909dae4bd733cde9d9e71dbc61d6 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@sh%#5As(G?r)=bHG2n4M z%Vy^EWrLGIZOc)nJ51L%{O4G%y;0~hW9O;$)xRdz2U)l{3a~f^IR7)4Wv;e0PC~zb@a#f*N@_AB$* zm^w3@v;`7&{r0aucJJyRr41p1M$B8~H7+#fO7Z;;WzEVH-?283PsCwq-FM|aktu(z z&P{Bpv|MnyXp`k9w%bq7$aQy|UBYB)&y? zku6}M&ZJf4+F@cDVlS5d?hkNYnlyoF+0?2}yZ6?7u|KJJPO>dg!i}-+!^N9t9_{}Q zBwg)T=G$a^{^$^G@p7YP&R>1z4>c#4QrNFN>tc+#7A??vL@w~zmg|;p3)335J@#9A zfVJ$4lK%;tm+JET1&X*?y}vd$@?2>_wScRK(8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unownx.png b/graphics/object_events/pics/pokemon/followers/unownx.png new file mode 100644 index 0000000000000000000000000000000000000000..301b9a22cb52707599761779e5ca9f102d9c1184 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@O`a}}As(G?CmV7dHsEo6 zD}Cc&%6Z8ktMG^~OmA5?efj6U!szC|8*WRYFShfX;(o8LR&*|DV}#DM|GX!k%16Cx zd~`=pPq9rk<7brZ&DqvY`)m7r&x*2Yl)SFv4?cJPkT6H#JI>F)U7Z&er0K;3HaN|< zG%r@(6T;x6^JgzZpUT_qA1BV4v-1Oo(;WXsj$~Wm;LpdDWQtuKyL`U3tNzrTU3p5B mRmJ?Z>!G8wijS&AtNmo!5v456vwL$l$h)4delF{r5}E)VJ8(w; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/unowny.png b/graphics/object_events/pics/pokemon/followers/unowny.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f2a702756f85306f9bd038929cc5c0da95b138 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@9iA?ZAs(G?r#SL88Hl+2 z&cEQ#QGKqVF!!>&{sQrW$A9}3)@_&^)Gk$CFC=z2`<{RY$HB)RD{TIIMd|O{5Yv#f zo}+z5VTaCqJHKmHt{R^|8(y9x;gC3ET5(R%?z|cn#c#6=?&oKQ?VqxEAKgB0{$7~HY+3mFxV`_j>F}-nNw;oYp6lh6yQ`8x%I4u6{1-oD!M<$5n^9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ursaring.png b/graphics/object_events/pics/pokemon/followers/ursaring.png new file mode 100644 index 0000000000000000000000000000000000000000..564c10a1769640b2d62cb0d66b8dab9dcf88e818 GIT binary patch literal 844 zcmV-S1GD^zP)Kl`)IkFc^jf^`P~j9W&*&+fFx_8bcZj zE|Bxkxntp=9NGE<3^v6OG?#0;b?y}R2nhdxj)#t*Yxw?4KgE`<2)j2GI^358@<{Ug zetIP^AhmQE_ON3_I-oRrMh*o#se%-{P8fKC!z)~t3 z;!mG1aX)>>KAY6UX7~2hD$=}RZn@1Qs0Au2u!hI{;=@SfkerzE9f(Y5Ox47$gP28 z$QtIk5ro1TaB(<;B5mhc9Epcs(B~l5sD_%N5u{*QHEpCSJ{T}-*l{yI5lmH%;6y}G z>KaVrMo=|^L2UWFHP8n=+^FToKsQVuOI7h+kUola;Tn*+fC<1o=teM@T0U(%XcDr5 zouMjP!3Umdd*uulTtm<1nxYzNTEV$xyCy*~hCh3YEI0FXr`NSsUCVSQqz2_~0XsZ7 z!3bu3#|Q4_V_4UCb+bXH@58e?k9&jnXA+OeHAq4XRpl3>%wiN|Y&Og}n`@SIt4TiJ zDwoYWv}E|r#+jv%ul|<) z#JE(ngQPGDrR-jki!mt*Q9ucJV`c5NP}t5p?7TVPfyuSKjKS!jhmgsgWl2t*QA%Nl z=@9ZL^7|;VKgj_6Z~sQq2!P!?6)gSuS-ndkwCa{UM|k_TQGc`iIl|jF?b~RckPXOR za8pAkmzNU)*O||MYj7>MB01sh1|{mjn-1&8T6qb=`cr{8R6H!;TmN0x2bVJ5&=Le6er?4qU!%otpxPl{VYdJvSP zo2W9t6I`pJ+e&E4+8a~X zk5;lk!LZB&KLmlH2S+Cb4B&K3hvQ2imC0kPxAmYyQ^aMrf0G*EDqjUVi}` zyhO=XA?D+?&RHpDm7XxRsJ!>|Jk)IY#XKCxV|Mw7(-;dO9Gnvp#*W04)|4X=_Pmz- znxZk5C!kF)r@x9BQXdc@U>rf3JLIFTBQqkQ%-Y1?R({`hs3g#m)o(aTM?)D8G!+wt vLJdb9fz-U@yRrffxZ!&nn(3LH()H~(jr_4F9}%+600000NkvXXu0mjf5l(O2 delta 784 zcmV+r1MmFi2KWY$b${+jL_t(YiS3p#Xxl&-M$Zrgw?*F4pXvg^*+o1lqYn=hg-lgx6##g_1%B2MSE0fC*2dftvOKT+e_E zdOhGwYB5#&!#cJR^VI0 zQ-*Cq7=JH4#>U36)6%0r#`!#7t8@P6M>Ai(&89Kv6oYQK-q^Ramf3-C6Oz*E3z_h*QDRq zN<kon;oba0^+s*(0 O00{s|MNUMnLSTYw%W$~> diff --git a/graphics/object_events/pics/pokemon/followers/wobbuffet.png b/graphics/object_events/pics/pokemon/followers/wobbuffet.png new file mode 100644 index 0000000000000000000000000000000000000000..b11911ceffc904eeb5a2c8156854daecddce872e GIT binary patch literal 551 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*l5|f&~o8HMMKAx zJ1<%W7BVt2N?H~cp8N<@f(a@ndv*gwISV`@iy0WWg+Z8+Vb&Z81_s8to-U3d9-VI| zZ=BR*Akb!9YnR$4-J_oR&Cx%Ef4|9<~Z zafLws-mll9^;c)EQa|(eaPgU0bFB9p2DI)Jla8w%`0v0Y*Kq(?HiW3 zuPgA~p*d>L6CIpqoPDmbUr3<-rc}f9vz>d)9@^z(6qPwC9_Tb&o;4-9IDxT!BEuTl zbyNG5Wjy+pN<96RwEnXVi@`g#eR|K5E-~CTu8g>S`M`(WPwwz~tP#y@C|vxdfcb~c z=IY7C_6!UujOp6^*=z6KV=mX)uxc~I?N+(I%pc75u^((0JoIA%8<_ z)@v)?jVzv)Gw8i&t6uu$51bJv_^t^9u(vpNs$-EVXBrhJvFVCQRBS*>Jt i1-C;SCEx15vKO!XFnizJIlvfWVDNPHb6Mw<&;$U>a_BVx literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wooper.png b/graphics/object_events/pics/pokemon/followers/wooper.png new file mode 100644 index 0000000000000000000000000000000000000000..db6f873b7e72dd5f5ac7c7eea4da4fc81f3b91e9 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsOVTZ@#Ig> zi6=J}UQE}#?x%o4oCO|{#S9GG!XV7ZFl&wk0|TRxr;B5V zN9Wrq8}phC1lr#6oSBn)HHn*Nqfz-OkCcn%C+38myQyFN&B{-%v6nnzIbFBUededvdW51kzR9?3{m#s8{>A>Oukzod_lGQxhrRoo_u^Db{p^3 zUi@?TQN?j=|3dkh*`h3BQO{N8e>C3fA7UVI$gU%1r$?<`lfylZS@+`=woLfH@BGW} dGj_cB*O#xD+-}OHlU)W1WlvW>mvv4FO#sWQy%_)i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/xatu.png b/graphics/object_events/pics/pokemon/followers/xatu.png new file mode 100644 index 0000000000000000000000000000000000000000..25b7621b4452c989a3e9e480c72b8fe89cdada29 GIT binary patch literal 740 zcmVQDLyg-gyxr0RaK&>G|17Sz%ED@zG(iDLJ{BF*#8oZ#THC00009 za7bBm000XU000XU0RWnu7ytkQT1iAfR7i>K)jeq2KokdXK?mPv4#!keJ7=pXH3`K9 zg9b09m?G-kOS%+yvIq!dV%2BI9^yc8hRiVn58Vvu91Jxb>VnjO)-G*B3fbK|=_EZ} ztdzJPlOJAw_jK>ClVvPP>sr^k{#z{;f8gxmGSL*xu2R_5ouod&H3vhDXRa`?J}^s7Lz)JJG4VJ&dI*VTGct$z}7tTVUmaG~p1gj9`)W1~FI`em#9*1f@OV46|k_(vi@FsshyurnB@o4z#kwMj7=96iMMK!9NXjy4as z2X4CeFKA6tj6NMbx%dVG1hcY?dC{q+yLn1WPBD7nJwAO00tEYO+Ve-+UhFMqa0z0M z1ooMuzNIM`{=tZ*RhSc6v6+gs*u~oQeqkQP(>ASc)_&8!)?Rk~zp7uU WCt5^VV}Q>90000G|17F#rGnNg%>Y00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kmd|SwK@`UqS!@G)S;%!EgnH^p40>r{ z(+=3nUWz?v#e>LNdJqq_wKQDB#Ew!d*089%&A07u@LZbv4AZ#rwRlJfo9Mv z^Sa3>AYvo>H9`}NBjoSbeImA>DIRu-9*8T}FkWW9FHt5cl4i}va$aL~G}?$0$$9>i z(N2#*0;F3YQ*5}MFhQ?@@urp2rT!^L;?HZO(!+-vghwz`4N)Q)209l& zIydI7kv10~w^cU_2?pRhQ2flLL#DU{$AjzGf`ta}#8HG0U>4sXG^*2rNZei->f#V+`0?Y$~e)cShaL*kbCF--Nm|xC4D{XB=L0C^jQP zye|<_6sOc(Y$<*p!#pEG%ncPkoM(#rj>{7R25ZyR;D?}8fAsLtUN!JroG7~Q6lv93 zQNkaN!iieUVTz4Nao>D4s~FMMLCvYI?|61~B?uT21shV8f;V4@68J>SVTuV;{4U%u z+%e(_%C@}~B}fuUYc<^H;^;0CiKyb_-P63P=2boNTd9c!@5$}3BuOGEwF_ArlrkNdyshU+xMD8IczeeIxOj%Y+!=<;2aJTKqi`SS9v` zOb{teg5vRn7tm>zBsyscA_++-w*IGAXoBbztDN&+%ztFR0B3juA7#~xB>(^b07*qo IM6N<$g4XHMdjJ3c literal 0 HcmV?d00001 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 3dd15a7d9..6c160d79c 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -391,8 +391,108 @@ #define OBJ_EVENT_GFX_DRAGONITE 387 #define OBJ_EVENT_GFX_MEWTWO 388 #define OBJ_EVENT_GFX_MEW_FOLLOWER 389 +#define OBJ_EVENT_GFX_CHIKORITA 390 +#define OBJ_EVENT_GFX_BAYLEEF 391 +#define OBJ_EVENT_GFX_MEGANIUM 392 +#define OBJ_EVENT_GFX_CYNDAQUIL 393 +#define OBJ_EVENT_GFX_QUILAVA 394 +#define OBJ_EVENT_GFX_TYPHLOSION 395 +#define OBJ_EVENT_GFX_TOTODILE 396 +#define OBJ_EVENT_GFX_CROCONAW 397 +#define OBJ_EVENT_GFX_FERALIGATR 398 +#define OBJ_EVENT_GFX_SENTRET 399 +#define OBJ_EVENT_GFX_FURRET 400 +#define OBJ_EVENT_GFX_HOOTHOOT 401 +#define OBJ_EVENT_GFX_NOCTOWL 402 +#define OBJ_EVENT_GFX_LEDYBA 403 +#define OBJ_EVENT_GFX_LEDIAN 404 +#define OBJ_EVENT_GFX_SPINARAK 405 +#define OBJ_EVENT_GFX_ARIADOS 406 +#define OBJ_EVENT_GFX_CROBAT 407 +#define OBJ_EVENT_GFX_CHINCHOU 408 +#define OBJ_EVENT_GFX_LANTURN 409 +#define OBJ_EVENT_GFX_PICHU 410 +#define OBJ_EVENT_GFX_CLEFFA 411 +#define OBJ_EVENT_GFX_IGGLYBUFF 412 +#define OBJ_EVENT_GFX_TOGEPI 413 +#define OBJ_EVENT_GFX_TOGETIC 414 +#define OBJ_EVENT_GFX_NATU 415 +#define OBJ_EVENT_GFX_XATU 416 +#define OBJ_EVENT_GFX_MAREEP 417 +#define OBJ_EVENT_GFX_FLAAFFY 418 +#define OBJ_EVENT_GFX_AMPHAROS 419 +#define OBJ_EVENT_GFX_BELLOSSOM 420 +#define OBJ_EVENT_GFX_MARILL 421 +#define OBJ_EVENT_GFX_AZUMARILL_FOLLOWER 422 +#define OBJ_EVENT_GFX_SUDOWOODO_FOLLOWER 423 +#define OBJ_EVENT_GFX_POLITOED 424 +#define OBJ_EVENT_GFX_HOPPIP 425 +#define OBJ_EVENT_GFX_SKIPLOOM 426 +#define OBJ_EVENT_GFX_JUMPLUFF 427 +#define OBJ_EVENT_GFX_AIPOM 428 +#define OBJ_EVENT_GFX_SUNKERN 429 +#define OBJ_EVENT_GFX_SUNFLORA 430 +#define OBJ_EVENT_GFX_YANMA 431 +#define OBJ_EVENT_GFX_WOOPER 432 +#define OBJ_EVENT_GFX_QUAGSIRE 433 +#define OBJ_EVENT_GFX_ESPEON 434 +#define OBJ_EVENT_GFX_UMBREON 435 +#define OBJ_EVENT_GFX_MURKROW 436 +#define OBJ_EVENT_GFX_SLOWKING 437 +#define OBJ_EVENT_GFX_MISDREAVUS 438 +#define OBJ_EVENT_GFX_UNOWN_A 439 +#define OBJ_EVENT_GFX_WOBBUFFET 440 +#define OBJ_EVENT_GFX_GIRAFARIG 441 +#define OBJ_EVENT_GFX_PINECO 442 +#define OBJ_EVENT_GFX_FORRETRESS 443 +#define OBJ_EVENT_GFX_DUNSPARCE 444 +#define OBJ_EVENT_GFX_GLIGAR 445 +#define OBJ_EVENT_GFX_STEELIX 446 +#define OBJ_EVENT_GFX_SNUBBULL 447 +#define OBJ_EVENT_GFX_GRANBULL 448 +#define OBJ_EVENT_GFX_QWILFISH 449 +#define OBJ_EVENT_GFX_SCIZOR 450 +#define OBJ_EVENT_GFX_SHUCKLE 451 +#define OBJ_EVENT_GFX_HERACROSS 452 +#define OBJ_EVENT_GFX_SNEASEL 453 +#define OBJ_EVENT_GFX_TEDDIURSA 454 +#define OBJ_EVENT_GFX_URSARING 455 +#define OBJ_EVENT_GFX_SLUGMA 456 +#define OBJ_EVENT_GFX_MAGCARGO 457 +#define OBJ_EVENT_GFX_SWINUB 458 +#define OBJ_EVENT_GFX_PILOSWINE 459 +#define OBJ_EVENT_GFX_CORSOLA 460 +#define OBJ_EVENT_GFX_REMORAID 461 +#define OBJ_EVENT_GFX_OCTILLERY 462 +#define OBJ_EVENT_GFX_DELIBIRD 463 +#define OBJ_EVENT_GFX_MANTINE 464 +#define OBJ_EVENT_GFX_SKARMORY 465 +#define OBJ_EVENT_GFX_HOUNDOUR 466 +#define OBJ_EVENT_GFX_HOUNDOOM 467 +#define OBJ_EVENT_GFX_KINGDRA 468 +#define OBJ_EVENT_GFX_PHANPY 469 +#define OBJ_EVENT_GFX_DONPHAN 470 +#define OBJ_EVENT_GFX_PORYGON2 471 +#define OBJ_EVENT_GFX_STANTLER 472 +#define OBJ_EVENT_GFX_SMEARGLE 473 +#define OBJ_EVENT_GFX_TYROGUE 474 +#define OBJ_EVENT_GFX_HITMONTOP 475 +#define OBJ_EVENT_GFX_SMOOCHUM 476 +#define OBJ_EVENT_GFX_ELEKID 477 +#define OBJ_EVENT_GFX_MAGBY 478 +#define OBJ_EVENT_GFX_MILTANK 479 +#define OBJ_EVENT_GFX_BLISSEY 480 +#define OBJ_EVENT_GFX_RAIKOU 481 +#define OBJ_EVENT_GFX_ENTEI 482 +#define OBJ_EVENT_GFX_SUICUNE 483 +#define OBJ_EVENT_GFX_LARVITAR 484 +#define OBJ_EVENT_GFX_PUPITAR 485 +#define OBJ_EVENT_GFX_TYRANITAR 486 +#define OBJ_EVENT_GFX_LUGIA_FOLLOWER 487 +#define OBJ_EVENT_GFX_HOOH_FOLLOWER 488 +#define OBJ_EVENT_GFX_CELEBI 489 -#define NUM_OBJ_EVENT_GFX 390 +#define NUM_OBJ_EVENT_GFX 490 // These are dynamic object gfx ids. diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 46e656c5a..58aa8be9c 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -467,7 +467,7 @@ $(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 - + $(OBJEVENTGFXDIR)/pokemon/followers/bulbasaur.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 @@ -921,6 +921,387 @@ $(OBJEVENTGFXDIR)/pokemon/followers/mewtwo.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/followers/mew.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(OBJEVENTGFXDIR)/pokemon/followers/chikorita.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bayleef.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/meganium.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cyndaquil.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/quilava.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/typhlosion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/totodile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/croconaw.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/feraligatr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sentret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/furret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hoothoot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/noctowl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ledyba.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ledian.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spinarak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ariados.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/crobat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chinchou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lanturn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pichu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cleffa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/igglybuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togepi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togetic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/natu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/xatu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mareep.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/flaaffy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ampharos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bellossom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/marill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/azumarill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sudowoodo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/politoed.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hoppip.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skiploom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/jumpluff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/aipom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sunkern.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sunflora.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/yanma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wooper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/quagsire.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/espeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/umbreon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/murkrow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slowking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/misdreavus.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowna.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownb.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownc.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownd.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowne.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowng.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownh.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowni.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownj.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownk.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownm.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownq.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowns.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownv.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownw.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownx.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unowny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unown!.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/unownquestion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wobbuffet.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/girafarig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pineco.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/forretress.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dunsparce.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gligar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/steelix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/snubbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/granbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/qwilfish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/scizor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shuckle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/heracross.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sneasel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/teddiursa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ursaring.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/slugma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magcargo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/swinub.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/piloswine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/corsola.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/remoraid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/octillery.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/delibird.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mantine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skarmory.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/houndour.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/houndoom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kingdra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/phanpy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/donphan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/porygon2.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/stantler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/smeargle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tyrogue.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hitmontop.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/smoochum.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/elekid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magby.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/miltank.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/blissey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/raikou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/entei.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/suicune.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/larvitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pupitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tyranitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lugia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/ho_oh.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/celebi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png @@ -1076,7 +1457,7 @@ $(FLDEFFGFXDIR)/sand_disguise_placeholder.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/sand_footprints.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 - + $(FLDEFFGFXDIR)/slither_tracks.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index bd5d1e848..b4c9ae66e 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -666,3 +666,231 @@ const u32 gObjectEventPic_Mewtwo[] = INCBIN_U32("graphics/object_events/pics/pok const u16 gObjectEventPal_Mewtwo[] = INCBIN_U16("graphics/object_events/palettes/followers/mewtwo.gbapal"); const u32 gObjectEventPic_Mew_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mew.4bpp"); const u16 gObjectEventPal_Mew[] = INCBIN_U16("graphics/object_events/palettes/followers/mew.gbapal"); +const u32 gObjectEventPic_Chikorita[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chikorita.4bpp"); +const u16 gObjectEventPal_Chikorita[] = INCBIN_U16("graphics/object_events/palettes/followers/chikorita.gbapal"); +const u32 gObjectEventPic_Bayleef[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bayleef.4bpp"); +const u16 gObjectEventPal_Bayleef[] = INCBIN_U16("graphics/object_events/palettes/followers/bayleef.gbapal"); +const u32 gObjectEventPic_Meganium[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/meganium.4bpp"); +const u16 gObjectEventPal_Meganium[] = INCBIN_U16("graphics/object_events/palettes/followers/meganium.gbapal"); +const u32 gObjectEventPic_Cyndaquil[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cyndaquil.4bpp"); +const u16 gObjectEventPal_Cyndaquil[] = INCBIN_U16("graphics/object_events/palettes/followers/cyndaquil.gbapal"); +const u32 gObjectEventPic_Quilava[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/quilava.4bpp"); +const u16 gObjectEventPal_Quilava[] = INCBIN_U16("graphics/object_events/palettes/followers/quilava.gbapal"); +const u32 gObjectEventPic_Typhlosion[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/typhlosion.4bpp"); +const u16 gObjectEventPal_Typhlosion[] = INCBIN_U16("graphics/object_events/palettes/followers/typhlosion.gbapal"); +const u32 gObjectEventPic_Totodile[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/totodile.4bpp"); +const u16 gObjectEventPal_Totodile[] = INCBIN_U16("graphics/object_events/palettes/followers/totodile.gbapal"); +const u32 gObjectEventPic_Croconaw[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/croconaw.4bpp"); +const u16 gObjectEventPal_Croconaw[] = INCBIN_U16("graphics/object_events/palettes/followers/croconaw.gbapal"); +const u32 gObjectEventPic_Feraligatr[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/feraligatr.4bpp"); +const u16 gObjectEventPal_Feraligatr[] = INCBIN_U16("graphics/object_events/palettes/followers/feraligatr.gbapal"); +const u32 gObjectEventPic_Sentret[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sentret.4bpp"); +const u16 gObjectEventPal_Sentret[] = INCBIN_U16("graphics/object_events/palettes/followers/sentret.gbapal"); +const u32 gObjectEventPic_Furret[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/furret.4bpp"); +const u16 gObjectEventPal_Furret[] = INCBIN_U16("graphics/object_events/palettes/followers/furret.gbapal"); +const u32 gObjectEventPic_Hoothoot[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hoothoot.4bpp"); +const u16 gObjectEventPal_Hoothoot[] = INCBIN_U16("graphics/object_events/palettes/followers/hoothoot.gbapal"); +const u32 gObjectEventPic_Noctowl[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/noctowl.4bpp"); +const u16 gObjectEventPal_Noctowl[] = INCBIN_U16("graphics/object_events/palettes/followers/noctowl.gbapal"); +const u32 gObjectEventPic_Ledyba[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ledyba.4bpp"); +const u16 gObjectEventPal_Ledyba[] = INCBIN_U16("graphics/object_events/palettes/followers/ledyba.gbapal"); +const u32 gObjectEventPic_Ledian[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ledian.4bpp"); +const u16 gObjectEventPal_Ledian[] = INCBIN_U16("graphics/object_events/palettes/followers/ledian.gbapal"); +const u32 gObjectEventPic_Spinarak[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/spinarak.4bpp"); +const u16 gObjectEventPal_Spinarak[] = INCBIN_U16("graphics/object_events/palettes/followers/spinarak.gbapal"); +const u32 gObjectEventPic_Ariados[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ariados.4bpp"); +const u16 gObjectEventPal_Ariados[] = INCBIN_U16("graphics/object_events/palettes/followers/ariados.gbapal"); +const u32 gObjectEventPic_Crobat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/crobat.4bpp"); +const u16 gObjectEventPal_Crobat[] = INCBIN_U16("graphics/object_events/palettes/followers/crobat.gbapal"); +const u32 gObjectEventPic_Chinchou[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chinchou.4bpp"); +const u16 gObjectEventPal_Chinchou[] = INCBIN_U16("graphics/object_events/palettes/followers/chinchou.gbapal"); +const u32 gObjectEventPic_Lanturn[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lanturn.4bpp"); +const u16 gObjectEventPal_Lanturn[] = INCBIN_U16("graphics/object_events/palettes/followers/lanturn.gbapal"); +const u32 gObjectEventPic_Pichu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pichu.4bpp"); +const u16 gObjectEventPal_Pichu[] = INCBIN_U16("graphics/object_events/palettes/followers/pichu.gbapal"); +const u32 gObjectEventPic_Cleffa[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cleffa.4bpp"); +const u16 gObjectEventPal_Cleffa[] = INCBIN_U16("graphics/object_events/palettes/followers/cleffa.gbapal"); +const u32 gObjectEventPic_Igglybuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/igglybuff.4bpp"); +const u16 gObjectEventPal_Igglybuff[] = INCBIN_U16("graphics/object_events/palettes/followers/igglybuff.gbapal"); +const u32 gObjectEventPic_Togepi[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togepi.4bpp"); +const u16 gObjectEventPal_Togepi[] = INCBIN_U16("graphics/object_events/palettes/followers/togepi.gbapal"); +const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togetic.4bpp"); +const u16 gObjectEventPal_Togetic[] = INCBIN_U16("graphics/object_events/palettes/followers/togetic.gbapal"); +const u32 gObjectEventPic_Natu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/natu.4bpp"); +const u16 gObjectEventPal_Natu[] = INCBIN_U16("graphics/object_events/palettes/followers/natu.gbapal"); +const u32 gObjectEventPic_Xatu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/xatu.4bpp"); +const u16 gObjectEventPal_Xatu[] = INCBIN_U16("graphics/object_events/palettes/followers/xatu.gbapal"); +const u32 gObjectEventPic_Mareep[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mareep.4bpp"); +const u16 gObjectEventPal_Mareep[] = INCBIN_U16("graphics/object_events/palettes/followers/mareep.gbapal"); +const u32 gObjectEventPic_Flaaffy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/flaaffy.4bpp"); +const u16 gObjectEventPal_Flaaffy[] = INCBIN_U16("graphics/object_events/palettes/followers/flaaffy.gbapal"); +const u32 gObjectEventPic_Ampharos[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ampharos.4bpp"); +const u16 gObjectEventPal_Ampharos[] = INCBIN_U16("graphics/object_events/palettes/followers/ampharos.gbapal"); +const u32 gObjectEventPic_Bellossom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bellossom.4bpp"); +const u16 gObjectEventPal_Bellossom[] = INCBIN_U16("graphics/object_events/palettes/followers/bellossom.gbapal"); +const u32 gObjectEventPic_Marill[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/marill.4bpp"); +const u16 gObjectEventPal_Marill[] = INCBIN_U16("graphics/object_events/palettes/followers/marill.gbapal"); +const u32 gObjectEventPic_Azumarill_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/azumarill.4bpp"); +const u16 gObjectEventPal_Azumarill[] = INCBIN_U16("graphics/object_events/palettes/followers/azumarill.gbapal"); +const u32 gObjectEventPic_Sudowoodo_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sudowoodo.4bpp"); +const u16 gObjectEventPal_Sudowoodo[] = INCBIN_U16("graphics/object_events/palettes/followers/sudowoodo.gbapal"); +const u32 gObjectEventPic_Politoed[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/politoed.4bpp"); +const u16 gObjectEventPal_Politoed[] = INCBIN_U16("graphics/object_events/palettes/followers/politoed.gbapal"); +const u32 gObjectEventPic_Hoppip[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hoppip.4bpp"); +const u16 gObjectEventPal_Hoppip[] = INCBIN_U16("graphics/object_events/palettes/followers/hoppip.gbapal"); +const u32 gObjectEventPic_Skiploom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skiploom.4bpp"); +const u16 gObjectEventPal_Skiploom[] = INCBIN_U16("graphics/object_events/palettes/followers/skiploom.gbapal"); +const u32 gObjectEventPic_Jumpluff[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/jumpluff.4bpp"); +const u16 gObjectEventPal_Jumpluff[] = INCBIN_U16("graphics/object_events/palettes/followers/jumpluff.gbapal"); +const u32 gObjectEventPic_Aipom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/aipom.4bpp"); +const u16 gObjectEventPal_Aipom[] = INCBIN_U16("graphics/object_events/palettes/followers/aipom.gbapal"); +const u32 gObjectEventPic_Sunkern[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sunkern.4bpp"); +const u16 gObjectEventPal_Sunkern[] = INCBIN_U16("graphics/object_events/palettes/followers/sunkern.gbapal"); +const u32 gObjectEventPic_Sunflora[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sunflora.4bpp"); +const u16 gObjectEventPal_Sunflora[] = INCBIN_U16("graphics/object_events/palettes/followers/sunflora.gbapal"); +const u32 gObjectEventPic_Yanma[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/yanma.4bpp"); +const u16 gObjectEventPal_Yanma[] = INCBIN_U16("graphics/object_events/palettes/followers/yanma.gbapal"); +const u32 gObjectEventPic_Wooper[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wooper.4bpp"); +const u16 gObjectEventPal_Wooper[] = INCBIN_U16("graphics/object_events/palettes/followers/wooper.gbapal"); +const u32 gObjectEventPic_Quagsire[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/quagsire.4bpp"); +const u16 gObjectEventPal_Quagsire[] = INCBIN_U16("graphics/object_events/palettes/followers/quagsire.gbapal"); +const u32 gObjectEventPic_Espeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/espeon.4bpp"); +const u16 gObjectEventPal_Espeon[] = INCBIN_U16("graphics/object_events/palettes/followers/espeon.gbapal"); +const u32 gObjectEventPic_Umbreon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/umbreon.4bpp"); +const u16 gObjectEventPal_Umbreon[] = INCBIN_U16("graphics/object_events/palettes/followers/umbreon.gbapal"); +const u32 gObjectEventPic_Murkrow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/murkrow.4bpp"); +const u16 gObjectEventPal_Murkrow[] = INCBIN_U16("graphics/object_events/palettes/followers/murkrow.gbapal"); +const u32 gObjectEventPic_Slowking[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slowking.4bpp"); +const u16 gObjectEventPal_Slowking[] = INCBIN_U16("graphics/object_events/palettes/followers/slowking.gbapal"); +const u32 gObjectEventPic_Misdreavus[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/misdreavus.4bpp"); +const u16 gObjectEventPal_Misdreavus[] = INCBIN_U16("graphics/object_events/palettes/followers/misdreavus.gbapal"); +const u32 gObjectEventPic_Unown_A[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowna.4bpp"); +const u16 gObjectEventPal_Unown[] = INCBIN_U16("graphics/object_events/palettes/followers/unown.gbapal"); +const u32 gObjectEventPic_Unown_B[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownb.4bpp"); +const u32 gObjectEventPic_Unown_C[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownc.4bpp"); +const u32 gObjectEventPic_Unown_D[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownd.4bpp"); +const u32 gObjectEventPic_Unown_E[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowne.4bpp"); +const u32 gObjectEventPic_Unown_F[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownf.4bpp"); +const u32 gObjectEventPic_Unown_G[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowng.4bpp"); +const u32 gObjectEventPic_Unown_H[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownh.4bpp"); +const u32 gObjectEventPic_Unown_I[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowni.4bpp"); +const u32 gObjectEventPic_Unown_J[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownj.4bpp"); +const u32 gObjectEventPic_Unown_K[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownk.4bpp"); +const u32 gObjectEventPic_Unown_L[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownl.4bpp"); +const u32 gObjectEventPic_Unown_M[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownm.4bpp"); +const u32 gObjectEventPic_Unown_N[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownn.4bpp"); +const u32 gObjectEventPic_Unown_O[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowno.4bpp"); +const u32 gObjectEventPic_Unown_P[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownp.4bpp"); +const u32 gObjectEventPic_Unown_Q[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownq.4bpp"); +const u32 gObjectEventPic_Unown_R[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownr.4bpp"); +const u32 gObjectEventPic_Unown_S[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowns.4bpp"); +const u32 gObjectEventPic_Unown_T[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownt.4bpp"); +const u32 gObjectEventPic_Unown_U[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownu.4bpp"); +const u32 gObjectEventPic_Unown_V[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownv.4bpp"); +const u32 gObjectEventPic_Unown_W[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownw.4bpp"); +const u32 gObjectEventPic_Unown_X[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownx.4bpp"); +const u32 gObjectEventPic_Unown_Y[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowny.4bpp"); +const u32 gObjectEventPic_Unown_Z[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownz.4bpp"); +const u32 gObjectEventPic_Unown_Exclamation[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unown!.4bpp"); +const u32 gObjectEventPic_Unown_Question[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownquestion.4bpp"); +const u32 gObjectEventPic_Wobbuffet[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wobbuffet.4bpp"); +const u16 gObjectEventPal_Wobbuffet[] = INCBIN_U16("graphics/object_events/palettes/followers/wobbuffet.gbapal"); +const u32 gObjectEventPic_Girafarig[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/girafarig.4bpp"); +const u16 gObjectEventPal_Girafarig[] = INCBIN_U16("graphics/object_events/palettes/followers/girafarig.gbapal"); +const u32 gObjectEventPic_Pineco[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pineco.4bpp"); +const u16 gObjectEventPal_Pineco[] = INCBIN_U16("graphics/object_events/palettes/followers/pineco.gbapal"); +const u32 gObjectEventPic_Forretress[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/forretress.4bpp"); +const u16 gObjectEventPal_Forretress[] = INCBIN_U16("graphics/object_events/palettes/followers/forretress.gbapal"); +const u32 gObjectEventPic_Dunsparce[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dunsparce.4bpp"); +const u16 gObjectEventPal_Dunsparce[] = INCBIN_U16("graphics/object_events/palettes/followers/dunsparce.gbapal"); +const u32 gObjectEventPic_Gligar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gligar.4bpp"); +const u16 gObjectEventPal_Gligar[] = INCBIN_U16("graphics/object_events/palettes/followers/gligar.gbapal"); +const u32 gObjectEventPic_Steelix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/steelix.4bpp"); +const u16 gObjectEventPal_Steelix[] = INCBIN_U16("graphics/object_events/palettes/followers/steelix.gbapal"); +const u32 gObjectEventPic_Snubbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/snubbull.4bpp"); +const u16 gObjectEventPal_Snubbull[] = INCBIN_U16("graphics/object_events/palettes/followers/snubbull.gbapal"); +const u32 gObjectEventPic_Granbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/granbull.4bpp"); +const u16 gObjectEventPal_Granbull[] = INCBIN_U16("graphics/object_events/palettes/followers/granbull.gbapal"); +const u32 gObjectEventPic_Qwilfish[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/qwilfish.4bpp"); +const u16 gObjectEventPal_Qwilfish[] = INCBIN_U16("graphics/object_events/palettes/followers/qwilfish.gbapal"); +const u32 gObjectEventPic_Scizor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/scizor.4bpp"); +const u16 gObjectEventPal_Scizor[] = INCBIN_U16("graphics/object_events/palettes/followers/scizor.gbapal"); +const u32 gObjectEventPic_Shuckle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shuckle.4bpp"); +const u16 gObjectEventPal_Shuckle[] = INCBIN_U16("graphics/object_events/palettes/followers/shuckle.gbapal"); +const u32 gObjectEventPic_Heracross[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/heracross.4bpp"); +const u16 gObjectEventPal_Heracross[] = INCBIN_U16("graphics/object_events/palettes/followers/heracross.gbapal"); +const u32 gObjectEventPic_Sneasel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sneasel.4bpp"); +const u16 gObjectEventPal_Sneasel[] = INCBIN_U16("graphics/object_events/palettes/followers/sneasel.gbapal"); +const u32 gObjectEventPic_Teddiursa[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/teddiursa.4bpp"); +const u16 gObjectEventPal_Teddiursa[] = INCBIN_U16("graphics/object_events/palettes/followers/teddiursa.gbapal"); +const u32 gObjectEventPic_Ursaring[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ursaring.4bpp"); +const u16 gObjectEventPal_Ursaring[] = INCBIN_U16("graphics/object_events/palettes/followers/ursaring.gbapal"); +const u32 gObjectEventPic_Slugma[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slugma.4bpp"); +const u16 gObjectEventPal_Slugma[] = INCBIN_U16("graphics/object_events/palettes/followers/slugma.gbapal"); +const u32 gObjectEventPic_Magcargo[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magcargo.4bpp"); +const u16 gObjectEventPal_Magcargo[] = INCBIN_U16("graphics/object_events/palettes/followers/magcargo.gbapal"); +const u32 gObjectEventPic_Swinub[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/swinub.4bpp"); +const u16 gObjectEventPal_Swinub[] = INCBIN_U16("graphics/object_events/palettes/followers/swinub.gbapal"); +const u32 gObjectEventPic_Piloswine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/piloswine.4bpp"); +const u16 gObjectEventPal_Piloswine[] = INCBIN_U16("graphics/object_events/palettes/followers/piloswine.gbapal"); +const u32 gObjectEventPic_Corsola[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/corsola.4bpp"); +const u16 gObjectEventPal_Corsola[] = INCBIN_U16("graphics/object_events/palettes/followers/corsola.gbapal"); +const u32 gObjectEventPic_Remoraid[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/remoraid.4bpp"); +const u16 gObjectEventPal_Remoraid[] = INCBIN_U16("graphics/object_events/palettes/followers/remoraid.gbapal"); +const u32 gObjectEventPic_Octillery[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/octillery.4bpp"); +const u16 gObjectEventPal_Octillery[] = INCBIN_U16("graphics/object_events/palettes/followers/octillery.gbapal"); +const u32 gObjectEventPic_Delibird[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/delibird.4bpp"); +const u16 gObjectEventPal_Delibird[] = INCBIN_U16("graphics/object_events/palettes/followers/delibird.gbapal"); +const u32 gObjectEventPic_Mantine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mantine.4bpp"); +const u16 gObjectEventPal_Mantine[] = INCBIN_U16("graphics/object_events/palettes/followers/mantine.gbapal"); +const u32 gObjectEventPic_Skarmory[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skarmory.4bpp"); +const u16 gObjectEventPal_Skarmory[] = INCBIN_U16("graphics/object_events/palettes/followers/skarmory.gbapal"); +const u32 gObjectEventPic_Houndour[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/houndour.4bpp"); +const u16 gObjectEventPal_Houndour[] = INCBIN_U16("graphics/object_events/palettes/followers/houndour.gbapal"); +const u32 gObjectEventPic_Houndoom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/houndoom.4bpp"); +const u16 gObjectEventPal_Houndoom[] = INCBIN_U16("graphics/object_events/palettes/followers/houndoom.gbapal"); +const u32 gObjectEventPic_Kingdra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kingdra.4bpp"); +const u16 gObjectEventPal_Kingdra[] = INCBIN_U16("graphics/object_events/palettes/followers/kingdra.gbapal"); +const u32 gObjectEventPic_Phanpy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/phanpy.4bpp"); +const u16 gObjectEventPal_Phanpy[] = INCBIN_U16("graphics/object_events/palettes/followers/phanpy.gbapal"); +const u32 gObjectEventPic_Donphan[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/donphan.4bpp"); +const u16 gObjectEventPal_Donphan[] = INCBIN_U16("graphics/object_events/palettes/followers/donphan.gbapal"); +const u32 gObjectEventPic_Porygon2[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/porygon2.4bpp"); +const u16 gObjectEventPal_Porygon2[] = INCBIN_U16("graphics/object_events/palettes/followers/porygon2.gbapal"); +const u32 gObjectEventPic_Stantler[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/stantler.4bpp"); +const u16 gObjectEventPal_Stantler[] = INCBIN_U16("graphics/object_events/palettes/followers/stantler.gbapal"); +const u32 gObjectEventPic_Smeargle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/smeargle.4bpp"); +const u16 gObjectEventPal_Smeargle[] = INCBIN_U16("graphics/object_events/palettes/followers/smeargle.gbapal"); +const u32 gObjectEventPic_Tyrogue[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tyrogue.4bpp"); +const u16 gObjectEventPal_Tyrogue[] = INCBIN_U16("graphics/object_events/palettes/followers/tyrogue.gbapal"); +const u32 gObjectEventPic_Hitmontop[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hitmontop.4bpp"); +const u16 gObjectEventPal_Hitmontop[] = INCBIN_U16("graphics/object_events/palettes/followers/hitmontop.gbapal"); +const u32 gObjectEventPic_Smoochum[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/smoochum.4bpp"); +const u16 gObjectEventPal_Smoochum[] = INCBIN_U16("graphics/object_events/palettes/followers/smoochum.gbapal"); +const u32 gObjectEventPic_Elekid[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/elekid.4bpp"); +const u16 gObjectEventPal_Elekid[] = INCBIN_U16("graphics/object_events/palettes/followers/elekid.gbapal"); +const u32 gObjectEventPic_Magby[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magby.4bpp"); +const u16 gObjectEventPal_Magby[] = INCBIN_U16("graphics/object_events/palettes/followers/magby.gbapal"); +const u32 gObjectEventPic_Miltank[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/miltank.4bpp"); +const u16 gObjectEventPal_Miltank[] = INCBIN_U16("graphics/object_events/palettes/followers/miltank.gbapal"); +const u32 gObjectEventPic_Blissey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/blissey.4bpp"); +const u16 gObjectEventPal_Blissey[] = INCBIN_U16("graphics/object_events/palettes/followers/blissey.gbapal"); +const u32 gObjectEventPic_Raikou[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/raikou.4bpp"); +const u16 gObjectEventPal_Raikou[] = INCBIN_U16("graphics/object_events/palettes/followers/raikou.gbapal"); +const u32 gObjectEventPic_Entei[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/entei.4bpp"); +const u16 gObjectEventPal_Entei[] = INCBIN_U16("graphics/object_events/palettes/followers/entei.gbapal"); +const u32 gObjectEventPic_Suicune[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/suicune.4bpp"); +const u16 gObjectEventPal_Suicune[] = INCBIN_U16("graphics/object_events/palettes/followers/suicune.gbapal"); +const u32 gObjectEventPic_Larvitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/larvitar.4bpp"); +const u16 gObjectEventPal_Larvitar[] = INCBIN_U16("graphics/object_events/palettes/followers/larvitar.gbapal"); +const u32 gObjectEventPic_Pupitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pupitar.4bpp"); +const u16 gObjectEventPal_Pupitar[] = INCBIN_U16("graphics/object_events/palettes/followers/pupitar.gbapal"); +const u32 gObjectEventPic_Tyranitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tyranitar.4bpp"); +const u16 gObjectEventPal_Tyranitar[] = INCBIN_U16("graphics/object_events/palettes/followers/tyranitar.gbapal"); +const u32 gObjectEventPic_Lugia_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lugia.4bpp"); +const u16 gObjectEventPal_Lugia_Follower[] = INCBIN_U16("graphics/object_events/palettes/followers/lugia.gbapal"); +const u32 gObjectEventPic_HoOh_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ho_oh.4bpp"); +const u16 gObjectEventPal_HoOh_Follower[] = INCBIN_U16("graphics/object_events/palettes/followers/ho_oh.gbapal"); +const u32 gObjectEventPic_Celebi[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/celebi.4bpp"); +const u16 gObjectEventPal_Celebi[] = INCBIN_U16("graphics/object_events/palettes/followers/celebi.gbapal"); + diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 40afed1cc..6006b6b88 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -395,3 +395,130 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIKORITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava = {0xFFFF, OBJ_EVENT_PAL_TAG_QUILAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quilava, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion = {0xFFFF, OBJ_EVENT_PAL_TAG_TYPHLOSION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Typhlosion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile = {0xFFFF, OBJ_EVENT_PAL_TAG_TOTODILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Totodile, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw = {0xFFFF, OBJ_EVENT_PAL_TAG_CROCONAW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croconaw, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr = {0xFFFF, OBJ_EVENT_PAL_TAG_FERALIGATR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feraligatr, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret = {0xFFFF, OBJ_EVENT_PAL_TAG_SENTRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sentret, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Furret, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot = {0xFFFF, OBJ_EVENT_PAL_TAG_HOOTHOOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoothoot, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl = {0xFFFF, OBJ_EVENT_PAL_TAG_NOCTOWL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Noctowl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDYBA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledyba, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledian, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINARAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinarak, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados = {0xFFFF, OBJ_EVENT_PAL_TAG_ARIADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ariados, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat = {0xFFFF, OBJ_EVENT_PAL_TAG_CROBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crobat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINCHOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chinchou, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn = {0xFFFF, OBJ_EVENT_PAL_TAG_LANTURN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lanturn, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, OBJ_EVENT_PAL_TAG_PICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pichu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_MARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip = {0xFFFF, OBJ_EVENT_PAL_TAG_HOPPIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoppip, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom = {0xFFFF, OBJ_EVENT_PAL_TAG_SKIPLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skiploom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff = {0xFFFF, OBJ_EVENT_PAL_TAG_JUMPLUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jumpluff, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aipom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_WOOPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_STEELIX, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor = {0xFFFF, OBJ_EVENT_PAL_TAG_SCIZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scizor, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUCKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuckle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFFF, OBJ_EVENT_PAL_TAG_HERACROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heracross, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_SLUGMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola = {0xFFFF, OBJ_EVENT_PAL_TAG_CORSOLA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corsola, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid = {0xFFFF, OBJ_EVENT_PAL_TAG_REMORAID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Remoraid, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFFF, OBJ_EVENT_PAL_TAG_OCTILLERY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Octillery, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan = {0xFFFF, OBJ_EVENT_PAL_TAG_DONPHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Donphan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler = {0xFFFF, OBJ_EVENT_PAL_TAG_STANTLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stantler, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle = {0xFFFF, OBJ_EVENT_PAL_TAG_SMEARGLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smeargle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue = {0xFFFF, OBJ_EVENT_PAL_TAG_TYROGUE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyrogue, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONTOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmontop, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum = {0xFFFF, OBJ_EVENT_PAL_TAG_SMOOCHUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smoochum, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Elekid, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magby, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank = {0xFFFF, OBJ_EVENT_PAL_TAG_MILTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Miltank, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey = {0xFFFF, OBJ_EVENT_PAL_TAG_BLISSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blissey, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, OBJ_EVENT_PAL_TAG_RAIKOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raikou, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_PUPITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, OBJ_EVENT_PAL_TAG_CELEBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Celebi, 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 8e052f870..6c10c03d9 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -395,6 +395,133 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi; const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { @@ -788,6 +915,106 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_DRAGONITE] = &gObjectEventGraphicsInfo_Dragonite, [OBJ_EVENT_GFX_MEWTWO] = &gObjectEventGraphicsInfo_Mewtwo, [OBJ_EVENT_GFX_MEW_FOLLOWER] = &gObjectEventGraphicsInfo_Mew_Follower, + [OBJ_EVENT_GFX_CHIKORITA] = &gObjectEventGraphicsInfo_Chikorita, + [OBJ_EVENT_GFX_BAYLEEF] = &gObjectEventGraphicsInfo_Bayleef, + [OBJ_EVENT_GFX_MEGANIUM] = &gObjectEventGraphicsInfo_Meganium, + [OBJ_EVENT_GFX_CYNDAQUIL] = &gObjectEventGraphicsInfo_Cyndaquil, + [OBJ_EVENT_GFX_QUILAVA] = &gObjectEventGraphicsInfo_Quilava, + [OBJ_EVENT_GFX_TYPHLOSION] = &gObjectEventGraphicsInfo_Typhlosion, + [OBJ_EVENT_GFX_TOTODILE] = &gObjectEventGraphicsInfo_Totodile, + [OBJ_EVENT_GFX_CROCONAW] = &gObjectEventGraphicsInfo_Croconaw, + [OBJ_EVENT_GFX_FERALIGATR] = &gObjectEventGraphicsInfo_Feraligatr, + [OBJ_EVENT_GFX_SENTRET] = &gObjectEventGraphicsInfo_Sentret, + [OBJ_EVENT_GFX_FURRET] = &gObjectEventGraphicsInfo_Furret, + [OBJ_EVENT_GFX_HOOTHOOT] = &gObjectEventGraphicsInfo_Hoothoot, + [OBJ_EVENT_GFX_NOCTOWL] = &gObjectEventGraphicsInfo_Noctowl, + [OBJ_EVENT_GFX_LEDYBA] = &gObjectEventGraphicsInfo_Ledyba, + [OBJ_EVENT_GFX_LEDIAN] = &gObjectEventGraphicsInfo_Ledian, + [OBJ_EVENT_GFX_SPINARAK] = &gObjectEventGraphicsInfo_Spinarak, + [OBJ_EVENT_GFX_ARIADOS] = &gObjectEventGraphicsInfo_Ariados, + [OBJ_EVENT_GFX_CROBAT] = &gObjectEventGraphicsInfo_Crobat, + [OBJ_EVENT_GFX_CHINCHOU] = &gObjectEventGraphicsInfo_Chinchou, + [OBJ_EVENT_GFX_LANTURN] = &gObjectEventGraphicsInfo_Lanturn, + [OBJ_EVENT_GFX_PICHU] = &gObjectEventGraphicsInfo_Pichu, + [OBJ_EVENT_GFX_CLEFFA] = &gObjectEventGraphicsInfo_Cleffa, + [OBJ_EVENT_GFX_IGGLYBUFF] = &gObjectEventGraphicsInfo_Igglybuff, + [OBJ_EVENT_GFX_TOGEPI] = &gObjectEventGraphicsInfo_Togepi, + [OBJ_EVENT_GFX_TOGETIC] = &gObjectEventGraphicsInfo_Togetic, + [OBJ_EVENT_GFX_NATU] = &gObjectEventGraphicsInfo_Natu, + [OBJ_EVENT_GFX_XATU] = &gObjectEventGraphicsInfo_Xatu, + [OBJ_EVENT_GFX_MAREEP] = &gObjectEventGraphicsInfo_Mareep, + [OBJ_EVENT_GFX_FLAAFFY] = &gObjectEventGraphicsInfo_Flaaffy, + [OBJ_EVENT_GFX_AMPHAROS] = &gObjectEventGraphicsInfo_Ampharos, + [OBJ_EVENT_GFX_BELLOSSOM] = &gObjectEventGraphicsInfo_Bellossom, + [OBJ_EVENT_GFX_MARILL] = &gObjectEventGraphicsInfo_Marill, + [OBJ_EVENT_GFX_AZUMARILL_FOLLOWER] = &gObjectEventGraphicsInfo_Azumarill_Follower, + [OBJ_EVENT_GFX_SUDOWOODO_FOLLOWER] = &gObjectEventGraphicsInfo_Sudowoodo_Follower, + [OBJ_EVENT_GFX_POLITOED] = &gObjectEventGraphicsInfo_Politoed, + [OBJ_EVENT_GFX_HOPPIP] = &gObjectEventGraphicsInfo_Hoppip, + [OBJ_EVENT_GFX_SKIPLOOM] = &gObjectEventGraphicsInfo_Skiploom, + [OBJ_EVENT_GFX_JUMPLUFF] = &gObjectEventGraphicsInfo_Jumpluff, + [OBJ_EVENT_GFX_AIPOM] = &gObjectEventGraphicsInfo_Aipom, + [OBJ_EVENT_GFX_SUNKERN] = &gObjectEventGraphicsInfo_Sunkern, + [OBJ_EVENT_GFX_SUNFLORA] = &gObjectEventGraphicsInfo_Sunflora, + [OBJ_EVENT_GFX_YANMA] = &gObjectEventGraphicsInfo_Yanma, + [OBJ_EVENT_GFX_WOOPER] = &gObjectEventGraphicsInfo_Wooper, + [OBJ_EVENT_GFX_QUAGSIRE] = &gObjectEventGraphicsInfo_Quagsire, + [OBJ_EVENT_GFX_ESPEON] = &gObjectEventGraphicsInfo_Espeon, + [OBJ_EVENT_GFX_UMBREON] = &gObjectEventGraphicsInfo_Umbreon, + [OBJ_EVENT_GFX_MURKROW] = &gObjectEventGraphicsInfo_Murkrow, + [OBJ_EVENT_GFX_SLOWKING] = &gObjectEventGraphicsInfo_Slowking, + [OBJ_EVENT_GFX_MISDREAVUS] = &gObjectEventGraphicsInfo_Misdreavus, + [OBJ_EVENT_GFX_UNOWN_A] = &gObjectEventGraphicsInfo_Unown_A, + [OBJ_EVENT_GFX_WOBBUFFET] = &gObjectEventGraphicsInfo_Wobbuffet, + [OBJ_EVENT_GFX_GIRAFARIG] = &gObjectEventGraphicsInfo_Girafarig, + [OBJ_EVENT_GFX_PINECO] = &gObjectEventGraphicsInfo_Pineco, + [OBJ_EVENT_GFX_FORRETRESS] = &gObjectEventGraphicsInfo_Forretress, + [OBJ_EVENT_GFX_DUNSPARCE] = &gObjectEventGraphicsInfo_Dunsparce, + [OBJ_EVENT_GFX_GLIGAR] = &gObjectEventGraphicsInfo_Gligar, + [OBJ_EVENT_GFX_STEELIX] = &gObjectEventGraphicsInfo_Steelix, + [OBJ_EVENT_GFX_SNUBBULL] = &gObjectEventGraphicsInfo_Snubbull, + [OBJ_EVENT_GFX_GRANBULL] = &gObjectEventGraphicsInfo_Granbull, + [OBJ_EVENT_GFX_QWILFISH] = &gObjectEventGraphicsInfo_Qwilfish, + [OBJ_EVENT_GFX_SCIZOR] = &gObjectEventGraphicsInfo_Scizor, + [OBJ_EVENT_GFX_SHUCKLE] = &gObjectEventGraphicsInfo_Shuckle, + [OBJ_EVENT_GFX_HERACROSS] = &gObjectEventGraphicsInfo_Heracross, + [OBJ_EVENT_GFX_SNEASEL] = &gObjectEventGraphicsInfo_Sneasel, + [OBJ_EVENT_GFX_TEDDIURSA] = &gObjectEventGraphicsInfo_Teddiursa, + [OBJ_EVENT_GFX_URSARING] = &gObjectEventGraphicsInfo_Ursaring, + [OBJ_EVENT_GFX_SLUGMA] = &gObjectEventGraphicsInfo_Slugma, + [OBJ_EVENT_GFX_MAGCARGO] = &gObjectEventGraphicsInfo_Magcargo, + [OBJ_EVENT_GFX_SWINUB] = &gObjectEventGraphicsInfo_Swinub, + [OBJ_EVENT_GFX_PILOSWINE] = &gObjectEventGraphicsInfo_Piloswine, + [OBJ_EVENT_GFX_CORSOLA] = &gObjectEventGraphicsInfo_Corsola, + [OBJ_EVENT_GFX_REMORAID] = &gObjectEventGraphicsInfo_Remoraid, + [OBJ_EVENT_GFX_OCTILLERY] = &gObjectEventGraphicsInfo_Octillery, + [OBJ_EVENT_GFX_DELIBIRD] = &gObjectEventGraphicsInfo_Delibird, + [OBJ_EVENT_GFX_MANTINE] = &gObjectEventGraphicsInfo_Mantine, + [OBJ_EVENT_GFX_SKARMORY] = &gObjectEventGraphicsInfo_Skarmory, + [OBJ_EVENT_GFX_HOUNDOUR] = &gObjectEventGraphicsInfo_Houndour, + [OBJ_EVENT_GFX_HOUNDOOM] = &gObjectEventGraphicsInfo_Houndoom, + [OBJ_EVENT_GFX_KINGDRA] = &gObjectEventGraphicsInfo_Kingdra, + [OBJ_EVENT_GFX_PHANPY] = &gObjectEventGraphicsInfo_Phanpy, + [OBJ_EVENT_GFX_DONPHAN] = &gObjectEventGraphicsInfo_Donphan, + [OBJ_EVENT_GFX_PORYGON2] = &gObjectEventGraphicsInfo_Porygon2, + [OBJ_EVENT_GFX_STANTLER] = &gObjectEventGraphicsInfo_Stantler, + [OBJ_EVENT_GFX_SMEARGLE] = &gObjectEventGraphicsInfo_Smeargle, + [OBJ_EVENT_GFX_TYROGUE] = &gObjectEventGraphicsInfo_Tyrogue, + [OBJ_EVENT_GFX_HITMONTOP] = &gObjectEventGraphicsInfo_Hitmontop, + [OBJ_EVENT_GFX_SMOOCHUM] = &gObjectEventGraphicsInfo_Smoochum, + [OBJ_EVENT_GFX_ELEKID] = &gObjectEventGraphicsInfo_Elekid, + [OBJ_EVENT_GFX_MAGBY] = &gObjectEventGraphicsInfo_Magby, + [OBJ_EVENT_GFX_MILTANK] = &gObjectEventGraphicsInfo_Miltank, + [OBJ_EVENT_GFX_BLISSEY] = &gObjectEventGraphicsInfo_Blissey, + [OBJ_EVENT_GFX_RAIKOU] = &gObjectEventGraphicsInfo_Raikou, + [OBJ_EVENT_GFX_ENTEI] = &gObjectEventGraphicsInfo_Entei, + [OBJ_EVENT_GFX_SUICUNE] = &gObjectEventGraphicsInfo_Suicune, + [OBJ_EVENT_GFX_LARVITAR] = &gObjectEventGraphicsInfo_Larvitar, + [OBJ_EVENT_GFX_PUPITAR] = &gObjectEventGraphicsInfo_Pupitar, + [OBJ_EVENT_GFX_TYRANITAR] = &gObjectEventGraphicsInfo_Tyranitar, + [OBJ_EVENT_GFX_LUGIA_FOLLOWER] = &gObjectEventGraphicsInfo_Lugia_Follower, + [OBJ_EVENT_GFX_HOOH_FOLLOWER] = &gObjectEventGraphicsInfo_HoOh_Follower, + [OBJ_EVENT_GFX_CELEBI] = &gObjectEventGraphicsInfo_Celebi, }; 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 1e9e539a3..2fa67b948 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -3541,3 +3541,1152 @@ const struct SpriteFrameImage gObjectEventPicTable_Mew_Follower[] = { overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 4), overworld_frame(gObjectEventPic_Mew_Follower, 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_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = { + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 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_Unown_A[] = { + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_B[] = { + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_C[] = { + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_D[] = { + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_E[] = { + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_F[] = { + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_G[] = { + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_H[] = { + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_I[] = { + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_J[] = { + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_K[] = { + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_L[] = { + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_M[] = { + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_N[] = { + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_O[] = { + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_P[] = { + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Q[] = { + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_R[] = { + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_S[] = { + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_T[] = { + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_U[] = { + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_V[] = { + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_W[] = { + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_X[] = { + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Y[] = { + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Z[] = { + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Exclamation[] = { + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Question[] = { + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 5), +}; + +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, 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), + 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), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 6), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 6), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 6), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 7), +}; + +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_Follower[] = { + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_HoOh_Follower[] = { + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 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), +}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 268de7a24..5a5033f33 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -146,7 +146,7 @@ static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); -static u8 FindObjectEventPaletteIndexByTag(u16); +static u16 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); @@ -596,6 +596,106 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_DRAGONITE 0x11B8 #define OBJ_EVENT_PAL_TAG_MEWTWO 0x11B9 #define OBJ_EVENT_PAL_TAG_MEW 0x11BA +#define OBJ_EVENT_PAL_TAG_CHIKORITA 0x11BB +#define OBJ_EVENT_PAL_TAG_BAYLEEF 0x11BC +#define OBJ_EVENT_PAL_TAG_MEGANIUM 0x11BD +#define OBJ_EVENT_PAL_TAG_CYNDAQUIL 0x11BE +#define OBJ_EVENT_PAL_TAG_QUILAVA 0x11BF +#define OBJ_EVENT_PAL_TAG_TYPHLOSION 0x11C0 +#define OBJ_EVENT_PAL_TAG_TOTODILE 0x11C1 +#define OBJ_EVENT_PAL_TAG_CROCONAW 0x11C2 +#define OBJ_EVENT_PAL_TAG_FERALIGATR 0x11C3 +#define OBJ_EVENT_PAL_TAG_SENTRET 0x11C4 +#define OBJ_EVENT_PAL_TAG_FURRET 0x11C5 +#define OBJ_EVENT_PAL_TAG_HOOTHOOT 0x11C6 +#define OBJ_EVENT_PAL_TAG_NOCTOWL 0x11C7 +#define OBJ_EVENT_PAL_TAG_LEDYBA 0x11C8 +#define OBJ_EVENT_PAL_TAG_LEDIAN 0x11C9 +#define OBJ_EVENT_PAL_TAG_SPINARAK 0x11CA +#define OBJ_EVENT_PAL_TAG_ARIADOS 0x11CB +#define OBJ_EVENT_PAL_TAG_CROBAT 0x11CC +#define OBJ_EVENT_PAL_TAG_CHINCHOU 0x11CD +#define OBJ_EVENT_PAL_TAG_LANTURN 0x11CE +#define OBJ_EVENT_PAL_TAG_PICHU 0x11CF +#define OBJ_EVENT_PAL_TAG_CLEFFA 0x11D0 +#define OBJ_EVENT_PAL_TAG_IGGLYBUFF 0x11D1 +#define OBJ_EVENT_PAL_TAG_TOGEPI 0x11D2 +#define OBJ_EVENT_PAL_TAG_TOGETIC 0x11D3 +#define OBJ_EVENT_PAL_TAG_NATU 0x11D4 +#define OBJ_EVENT_PAL_TAG_XATU 0x11D5 +#define OBJ_EVENT_PAL_TAG_MAREEP 0x11D6 +#define OBJ_EVENT_PAL_TAG_FLAAFFY 0x11D7 +#define OBJ_EVENT_PAL_TAG_AMPHAROS 0x11D8 +#define OBJ_EVENT_PAL_TAG_BELLOSSOM 0x11D9 +#define OBJ_EVENT_PAL_TAG_MARILL 0x11DA +#define OBJ_EVENT_PAL_TAG_AZUMARILL 0x11DB +#define OBJ_EVENT_PAL_TAG_SUDOWOODO 0x11DC +#define OBJ_EVENT_PAL_TAG_POLITOED 0x11DD +#define OBJ_EVENT_PAL_TAG_HOPPIP 0x11DE +#define OBJ_EVENT_PAL_TAG_SKIPLOOM 0x11DF +#define OBJ_EVENT_PAL_TAG_JUMPLUFF 0x11E0 +#define OBJ_EVENT_PAL_TAG_AIPOM 0x11E1 +#define OBJ_EVENT_PAL_TAG_SUNKERN 0x11E2 +#define OBJ_EVENT_PAL_TAG_SUNFLORA 0x11E3 +#define OBJ_EVENT_PAL_TAG_YANMA 0x11E4 +#define OBJ_EVENT_PAL_TAG_WOOPER 0x11E5 +#define OBJ_EVENT_PAL_TAG_QUAGSIRE 0x11E6 +#define OBJ_EVENT_PAL_TAG_ESPEON 0x11E7 +#define OBJ_EVENT_PAL_TAG_UMBREON 0x11E8 +#define OBJ_EVENT_PAL_TAG_MURKROW 0x11E9 +#define OBJ_EVENT_PAL_TAG_SLOWKING 0x11EA +#define OBJ_EVENT_PAL_TAG_MISDREAVUS 0x11EB +#define OBJ_EVENT_PAL_TAG_UNOWN 0x11EC +#define OBJ_EVENT_PAL_TAG_WOBBUFFET 0x11ED +#define OBJ_EVENT_PAL_TAG_GIRAFARIG 0x11EE +#define OBJ_EVENT_PAL_TAG_PINECO 0x11EF +#define OBJ_EVENT_PAL_TAG_FORRETRESS 0x11F0 +#define OBJ_EVENT_PAL_TAG_DUNSPARCE 0x11F1 +#define OBJ_EVENT_PAL_TAG_GLIGAR 0x11F2 +#define OBJ_EVENT_PAL_TAG_STEELIX 0x11F3 +#define OBJ_EVENT_PAL_TAG_SNUBBULL 0x11F4 +#define OBJ_EVENT_PAL_TAG_GRANBULL 0x11F5 +#define OBJ_EVENT_PAL_TAG_QWILFISH 0x11F6 +#define OBJ_EVENT_PAL_TAG_SCIZOR 0x11F7 +#define OBJ_EVENT_PAL_TAG_SHUCKLE 0x11F8 +#define OBJ_EVENT_PAL_TAG_HERACROSS 0x11F9 +#define OBJ_EVENT_PAL_TAG_SNEASEL 0x11FA +#define OBJ_EVENT_PAL_TAG_TEDDIURSA 0x11FB +#define OBJ_EVENT_PAL_TAG_URSARING 0x11FC +#define OBJ_EVENT_PAL_TAG_SLUGMA 0x11FD +#define OBJ_EVENT_PAL_TAG_MAGCARGO 0x11FE +#define OBJ_EVENT_PAL_TAG_SWINUB 0x10FF +#define OBJ_EVENT_PAL_TAG_PILOSWINE 0x10FE +#define OBJ_EVENT_PAL_TAG_CORSOLA 0x10FD +#define OBJ_EVENT_PAL_TAG_REMORAID 0x10FC +#define OBJ_EVENT_PAL_TAG_OCTILLERY 0x10FB +#define OBJ_EVENT_PAL_TAG_DELIBIRD 0x10FA +#define OBJ_EVENT_PAL_TAG_MANTINE 0x10F9 +#define OBJ_EVENT_PAL_TAG_SKARMORY 0x10F8 +#define OBJ_EVENT_PAL_TAG_HOUNDOUR 0x10F7 +#define OBJ_EVENT_PAL_TAG_HOUNDOOM 0x10F6 +#define OBJ_EVENT_PAL_TAG_KINGDRA 0x10F5 +#define OBJ_EVENT_PAL_TAG_PHANPY 0x10F4 +#define OBJ_EVENT_PAL_TAG_DONPHAN 0x10F3 +#define OBJ_EVENT_PAL_TAG_PORYGON2 0x10F2 +#define OBJ_EVENT_PAL_TAG_STANTLER 0x10F1 +#define OBJ_EVENT_PAL_TAG_SMEARGLE 0x10F0 +#define OBJ_EVENT_PAL_TAG_TYROGUE 0x10EF +#define OBJ_EVENT_PAL_TAG_HITMONTOP 0x10EE +#define OBJ_EVENT_PAL_TAG_SMOOCHUM 0x10ED +#define OBJ_EVENT_PAL_TAG_ELEKID 0x10EC +#define OBJ_EVENT_PAL_TAG_MAGBY 0x10EB +#define OBJ_EVENT_PAL_TAG_MILTANK 0x10EA +#define OBJ_EVENT_PAL_TAG_BLISSEY 0x10E9 +#define OBJ_EVENT_PAL_TAG_RAIKOU 0x10E8 +#define OBJ_EVENT_PAL_TAG_ENTEI 0x10E7 +#define OBJ_EVENT_PAL_TAG_SUICUNE 0x10E6 +#define OBJ_EVENT_PAL_TAG_LARVITAR 0x10E5 +#define OBJ_EVENT_PAL_TAG_PUPITAR 0x10E4 +#define OBJ_EVENT_PAL_TAG_TYRANITAR 0x10E3 +#define OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER 0x10E2 +#define OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER 0x10E1 +#define OBJ_EVENT_PAL_TAG_CELEBI 0x10E0 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -793,6 +893,106 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Dragonite, OBJ_EVENT_PAL_TAG_DRAGONITE}, {gObjectEventPal_Mewtwo, OBJ_EVENT_PAL_TAG_MEWTWO}, {gObjectEventPal_Mew, OBJ_EVENT_PAL_TAG_MEW}, + {gObjectEventPal_Chikorita, OBJ_EVENT_PAL_TAG_CHIKORITA}, + {gObjectEventPal_Bayleef, OBJ_EVENT_PAL_TAG_BAYLEEF}, + {gObjectEventPal_Meganium, OBJ_EVENT_PAL_TAG_MEGANIUM}, + {gObjectEventPal_Cyndaquil, OBJ_EVENT_PAL_TAG_CYNDAQUIL}, + {gObjectEventPal_Quilava, OBJ_EVENT_PAL_TAG_QUILAVA}, + {gObjectEventPal_Typhlosion, OBJ_EVENT_PAL_TAG_TYPHLOSION}, + {gObjectEventPal_Totodile, OBJ_EVENT_PAL_TAG_TOTODILE}, + {gObjectEventPal_Croconaw, OBJ_EVENT_PAL_TAG_CROCONAW}, + {gObjectEventPal_Feraligatr, OBJ_EVENT_PAL_TAG_FERALIGATR}, + {gObjectEventPal_Sentret, OBJ_EVENT_PAL_TAG_SENTRET}, + {gObjectEventPal_Furret, OBJ_EVENT_PAL_TAG_FURRET}, + {gObjectEventPal_Hoothoot, OBJ_EVENT_PAL_TAG_HOOTHOOT}, + {gObjectEventPal_Noctowl, OBJ_EVENT_PAL_TAG_NOCTOWL}, + {gObjectEventPal_Ledyba, OBJ_EVENT_PAL_TAG_LEDYBA}, + {gObjectEventPal_Ledian, OBJ_EVENT_PAL_TAG_LEDIAN}, + {gObjectEventPal_Spinarak, OBJ_EVENT_PAL_TAG_SPINARAK}, + {gObjectEventPal_Ariados, OBJ_EVENT_PAL_TAG_ARIADOS}, + {gObjectEventPal_Crobat, OBJ_EVENT_PAL_TAG_CROBAT}, + {gObjectEventPal_Chinchou, OBJ_EVENT_PAL_TAG_CHINCHOU}, + {gObjectEventPal_Lanturn, OBJ_EVENT_PAL_TAG_LANTURN}, + {gObjectEventPal_Pichu, OBJ_EVENT_PAL_TAG_PICHU}, + {gObjectEventPal_Cleffa, OBJ_EVENT_PAL_TAG_CLEFFA}, + {gObjectEventPal_Igglybuff, OBJ_EVENT_PAL_TAG_IGGLYBUFF}, + {gObjectEventPal_Togepi, OBJ_EVENT_PAL_TAG_TOGEPI}, + {gObjectEventPal_Togetic, OBJ_EVENT_PAL_TAG_TOGETIC}, + {gObjectEventPal_Natu, OBJ_EVENT_PAL_TAG_NATU}, + {gObjectEventPal_Xatu, OBJ_EVENT_PAL_TAG_XATU}, + {gObjectEventPal_Mareep, OBJ_EVENT_PAL_TAG_MAREEP}, + {gObjectEventPal_Flaaffy, OBJ_EVENT_PAL_TAG_FLAAFFY}, + {gObjectEventPal_Ampharos, OBJ_EVENT_PAL_TAG_AMPHAROS}, + {gObjectEventPal_Bellossom, OBJ_EVENT_PAL_TAG_BELLOSSOM}, + {gObjectEventPal_Marill, OBJ_EVENT_PAL_TAG_MARILL}, + {gObjectEventPal_Azumarill, OBJ_EVENT_PAL_TAG_AZUMARILL}, + {gObjectEventPal_Sudowoodo, OBJ_EVENT_PAL_TAG_SUDOWOODO}, + {gObjectEventPal_Politoed, OBJ_EVENT_PAL_TAG_POLITOED}, + {gObjectEventPal_Hoppip, OBJ_EVENT_PAL_TAG_HOPPIP}, + {gObjectEventPal_Skiploom, OBJ_EVENT_PAL_TAG_SKIPLOOM}, + {gObjectEventPal_Jumpluff, OBJ_EVENT_PAL_TAG_JUMPLUFF}, + {gObjectEventPal_Aipom, OBJ_EVENT_PAL_TAG_AIPOM}, + {gObjectEventPal_Sunkern, OBJ_EVENT_PAL_TAG_SUNKERN}, + {gObjectEventPal_Sunflora, OBJ_EVENT_PAL_TAG_SUNFLORA}, + {gObjectEventPal_Yanma, OBJ_EVENT_PAL_TAG_YANMA}, + {gObjectEventPal_Wooper, OBJ_EVENT_PAL_TAG_WOOPER}, + {gObjectEventPal_Quagsire, OBJ_EVENT_PAL_TAG_QUAGSIRE}, + {gObjectEventPal_Espeon, OBJ_EVENT_PAL_TAG_ESPEON}, + {gObjectEventPal_Umbreon, OBJ_EVENT_PAL_TAG_UMBREON}, + {gObjectEventPal_Murkrow, OBJ_EVENT_PAL_TAG_MURKROW}, + {gObjectEventPal_Slowking, OBJ_EVENT_PAL_TAG_SLOWKING}, + {gObjectEventPal_Misdreavus, OBJ_EVENT_PAL_TAG_MISDREAVUS}, + {gObjectEventPal_Unown, OBJ_EVENT_PAL_TAG_UNOWN}, + {gObjectEventPal_Wobbuffet, OBJ_EVENT_PAL_TAG_WOBBUFFET}, + {gObjectEventPal_Girafarig, OBJ_EVENT_PAL_TAG_GIRAFARIG}, + {gObjectEventPal_Pineco, OBJ_EVENT_PAL_TAG_PINECO}, + {gObjectEventPal_Forretress, OBJ_EVENT_PAL_TAG_FORRETRESS}, + {gObjectEventPal_Dunsparce, OBJ_EVENT_PAL_TAG_DUNSPARCE}, + {gObjectEventPal_Gligar, OBJ_EVENT_PAL_TAG_GLIGAR}, + {gObjectEventPal_Steelix, OBJ_EVENT_PAL_TAG_STEELIX}, + {gObjectEventPal_Snubbull, OBJ_EVENT_PAL_TAG_SNUBBULL}, + {gObjectEventPal_Granbull, OBJ_EVENT_PAL_TAG_GRANBULL}, + {gObjectEventPal_Qwilfish, OBJ_EVENT_PAL_TAG_QWILFISH}, + {gObjectEventPal_Scizor, OBJ_EVENT_PAL_TAG_SCIZOR}, + {gObjectEventPal_Shuckle, OBJ_EVENT_PAL_TAG_SHUCKLE}, + {gObjectEventPal_Heracross, OBJ_EVENT_PAL_TAG_HERACROSS}, + {gObjectEventPal_Sneasel, OBJ_EVENT_PAL_TAG_SNEASEL}, + {gObjectEventPal_Teddiursa, OBJ_EVENT_PAL_TAG_TEDDIURSA}, + {gObjectEventPal_Ursaring, OBJ_EVENT_PAL_TAG_URSARING}, + {gObjectEventPal_Slugma, OBJ_EVENT_PAL_TAG_SLUGMA}, + {gObjectEventPal_Magcargo, OBJ_EVENT_PAL_TAG_MAGCARGO}, + {gObjectEventPal_Swinub, OBJ_EVENT_PAL_TAG_SWINUB}, + {gObjectEventPal_Piloswine, OBJ_EVENT_PAL_TAG_PILOSWINE}, + {gObjectEventPal_Corsola, OBJ_EVENT_PAL_TAG_CORSOLA}, + {gObjectEventPal_Remoraid, OBJ_EVENT_PAL_TAG_REMORAID}, + {gObjectEventPal_Octillery, OBJ_EVENT_PAL_TAG_OCTILLERY}, + {gObjectEventPal_Delibird, OBJ_EVENT_PAL_TAG_DELIBIRD}, + {gObjectEventPal_Mantine, OBJ_EVENT_PAL_TAG_MANTINE}, + {gObjectEventPal_Skarmory, OBJ_EVENT_PAL_TAG_SKARMORY}, + {gObjectEventPal_Houndour, OBJ_EVENT_PAL_TAG_HOUNDOUR}, + {gObjectEventPal_Houndoom, OBJ_EVENT_PAL_TAG_HOUNDOOM}, + {gObjectEventPal_Kingdra, OBJ_EVENT_PAL_TAG_KINGDRA}, + {gObjectEventPal_Phanpy, OBJ_EVENT_PAL_TAG_PHANPY}, + {gObjectEventPal_Donphan, OBJ_EVENT_PAL_TAG_DONPHAN}, + {gObjectEventPal_Porygon2, OBJ_EVENT_PAL_TAG_PORYGON2}, + {gObjectEventPal_Stantler, OBJ_EVENT_PAL_TAG_STANTLER}, + {gObjectEventPal_Smeargle, OBJ_EVENT_PAL_TAG_SMEARGLE}, + {gObjectEventPal_Tyrogue, OBJ_EVENT_PAL_TAG_TYROGUE}, + {gObjectEventPal_Hitmontop, OBJ_EVENT_PAL_TAG_HITMONTOP}, + {gObjectEventPal_Smoochum, OBJ_EVENT_PAL_TAG_SMOOCHUM}, + {gObjectEventPal_Elekid, OBJ_EVENT_PAL_TAG_ELEKID}, + {gObjectEventPal_Magby, OBJ_EVENT_PAL_TAG_MAGBY}, + {gObjectEventPal_Miltank, OBJ_EVENT_PAL_TAG_MILTANK}, + {gObjectEventPal_Blissey, OBJ_EVENT_PAL_TAG_BLISSEY}, + {gObjectEventPal_Raikou, OBJ_EVENT_PAL_TAG_RAIKOU}, + {gObjectEventPal_Entei, OBJ_EVENT_PAL_TAG_ENTEI}, + {gObjectEventPal_Suicune, OBJ_EVENT_PAL_TAG_SUICUNE}, + {gObjectEventPal_Larvitar, OBJ_EVENT_PAL_TAG_LARVITAR}, + {gObjectEventPal_Pupitar, OBJ_EVENT_PAL_TAG_PUPITAR}, + {gObjectEventPal_Tyranitar, OBJ_EVENT_PAL_TAG_TYRANITAR}, + {gObjectEventPal_Lugia_Follower, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER}, + {gObjectEventPal_HoOh_Follower, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER}, + {gObjectEventPal_Celebi, OBJ_EVENT_PAL_TAG_CELEBI}, {}, }; @@ -2291,7 +2491,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -2306,9 +2506,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u8 FindObjectEventPaletteIndexByTag(u16 tag) +static u16 FindObjectEventPaletteIndexByTag(u16 tag) { - u8 i; + u16 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { From 5775ee101b3f4ade38e195afcb1ea73321b1e2f0 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 9 Feb 2022 16:50:12 -0800 Subject: [PATCH 15/71] Added Gen 3 Pokemon and other minor changes sprite.c: Animation changes when bouncing up instead of bouncing down. If-statement is slightly more efficient for when non-following object events go through it. ld_script.txt: Removed hard-coded memory locations due to overflow from added sprites and palettes. object_event_anims.h: Moved uniqueEast and Double animations to be closer to their respective tables. object_event_graphics_info.h: Made spaces between generations and gave a few really big Pokemon larger shadows. overworld.c: Removed unnecessary do-while loop. --- gflib/sprite.c | 22 +- .../palettes/followers/absol.pal | 19 + .../palettes/followers/aggron.pal | 19 + .../palettes/followers/altaria.pal | 19 + .../palettes/followers/anorith.pal | 19 + .../palettes/followers/armaldo.pal | 19 + .../object_events/palettes/followers/aron.pal | 19 + .../palettes/followers/azurill.pal | 19 + .../palettes/followers/bagon.pal | 19 + .../palettes/followers/baltoy.pal | 19 + .../palettes/followers/banette.pal | 19 + .../palettes/followers/barboach.pal | 19 + .../palettes/followers/beautifly.pal | 19 + .../palettes/followers/beldum.pal | 19 + .../palettes/followers/blaziken.pal | 19 + .../palettes/followers/breloom.pal | 19 + .../palettes/followers/cacnea.pal | 19 + .../palettes/followers/cacturne.pal | 19 + .../palettes/followers/camerupt.pal | 19 + .../palettes/followers/carvanha.pal | 19 + .../palettes/followers/cascoon.pal | 19 + .../palettes/followers/castform.pal | 19 + .../palettes/followers/chimecho.pal | 19 + .../palettes/followers/clamperl.pal | 19 + .../palettes/followers/claydol.pal | 19 + .../palettes/followers/combusken.pal | 19 + .../palettes/followers/corphish.pal | 19 + .../palettes/followers/cradily.pal | 19 + .../palettes/followers/crawdaunt.pal | 19 + .../palettes/followers/delcatty.pal | 19 + .../palettes/followers/deoxys.pal | 19 + .../palettes/followers/dusclops.pal | 19 + .../palettes/followers/duskull.pal | 19 + .../palettes/followers/dustox.pal | 19 + .../palettes/followers/electrike.pal | 19 + .../palettes/followers/exploud.pal | 19 + .../palettes/followers/feebas.pal | 19 + .../palettes/followers/flygon.pal | 19 + .../palettes/followers/gardevoir.pal | 19 + .../palettes/followers/glalie.pal | 19 + .../palettes/followers/gorebyss.pal | 19 + .../palettes/followers/groudon.pal | 19 + .../palettes/followers/grovyle.pal | 19 + .../palettes/followers/grumpig.pal | 19 + .../palettes/followers/gulpin.pal | 19 + .../palettes/followers/hariyama.pal | 19 + .../palettes/followers/huntail.pal | 19 + .../palettes/followers/illumise.pal | 19 + .../palettes/followers/jirachi.pal | 19 + .../palettes/followers/kecleon.pal | 19 + .../palettes/followers/kirlia.pal | 19 + .../palettes/followers/kyogre.pal | 19 + .../palettes/followers/lairon.pal | 19 + .../palettes/followers/latias.pal | 19 + .../palettes/followers/latios.pal | 19 + .../palettes/followers/lileep.pal | 19 + .../palettes/followers/linoone.pal | 19 + .../palettes/followers/lombre.pal | 19 + .../palettes/followers/lotad.pal | 19 + .../palettes/followers/loudred.pal | 19 + .../palettes/followers/ludicolo.pal | 19 + .../palettes/followers/lunatone.pal | 19 + .../palettes/followers/luvdisc.pal | 19 + .../palettes/followers/makuhita.pal | 19 + .../palettes/followers/manectric.pal | 19 + .../palettes/followers/marshtomp.pal | 19 + .../palettes/followers/masquerain.pal | 19 + .../palettes/followers/mawile.pal | 19 + .../palettes/followers/medicham.pal | 19 + .../palettes/followers/meditite.pal | 19 + .../palettes/followers/metagross.pal | 19 + .../palettes/followers/metang.pal | 19 + .../palettes/followers/mightyena.pal | 19 + .../palettes/followers/milotic.pal | 19 + .../palettes/followers/minun.pal | 19 + .../palettes/followers/mudkip.pal | 19 + .../palettes/followers/nincada.pal | 19 + .../palettes/followers/ninjask.pal | 19 + .../palettes/followers/nosepass.pal | 19 + .../palettes/followers/numel.pal | 19 + .../palettes/followers/nuzleaf.pal | 19 + .../palettes/followers/pelipper.pal | 19 + .../palettes/followers/plusle.pal | 19 + .../palettes/followers/poochyena.pal | 19 + .../palettes/followers/ralts.pal | 19 + .../palettes/followers/rayquaza.pal | 19 + .../palettes/followers/regice.pal | 19 + .../palettes/followers/regirock.pal | 19 + .../palettes/followers/registeel.pal | 19 + .../palettes/followers/relicanth.pal | 19 + .../palettes/followers/roselia.pal | 19 + .../palettes/followers/sableye.pal | 19 + .../palettes/followers/salamence.pal | 19 + .../palettes/followers/sceptile.pal | 19 + .../palettes/followers/sealeo.pal | 19 + .../palettes/followers/seedot.pal | 19 + .../palettes/followers/seviper.pal | 19 + .../palettes/followers/sharpedo.pal | 19 + .../palettes/followers/shedinja.pal | 19 + .../palettes/followers/shelgon.pal | 19 + .../palettes/followers/shiftry.pal | 19 + .../palettes/followers/shroomish.pal | 19 + .../palettes/followers/shuppet.pal | 19 + .../palettes/followers/silcoon.pal | 19 + .../palettes/followers/skitty.pal | 19 + .../palettes/followers/slaking.pal | 19 + .../palettes/followers/slakoth.pal | 19 + .../palettes/followers/snorunt.pal | 19 + .../palettes/followers/solrock.pal | 19 + .../palettes/followers/spheal.pal | 19 + .../palettes/followers/spinda.pal | 19 + .../palettes/followers/spoink.pal | 19 + .../palettes/followers/surskit.pal | 19 + .../palettes/followers/swablu.pal | 19 + .../palettes/followers/swalot.pal | 19 + .../palettes/followers/swampert.pal | 19 + .../palettes/followers/swellow.pal | 19 + .../palettes/followers/taillow.pal | 19 + .../palettes/followers/torchic.pal | 19 + .../palettes/followers/torkoal.pal | 19 + .../palettes/followers/trapinch.pal | 19 + .../palettes/followers/treecko.pal | 19 + .../palettes/followers/tropius.pal | 19 + .../palettes/followers/vibrava.pal | 19 + .../palettes/followers/vigoroth.pal | 19 + .../palettes/followers/volbeat.pal | 19 + .../palettes/followers/wailmer.pal | 19 + .../palettes/followers/wailord.pal | 19 + .../palettes/followers/walrein.pal | 19 + .../palettes/followers/whiscash.pal | 19 + .../palettes/followers/whismur.pal | 19 + .../palettes/followers/wingull.pal | 19 + .../palettes/followers/wurmple.pal | 19 + .../palettes/followers/wynaut.pal | 19 + .../palettes/followers/zangoose.pal | 19 + .../palettes/followers/zigzagoon.pal | 19 + .../pics/pokemon/followers/absol.png | Bin 0 -> 1043 bytes .../pics/pokemon/followers/aggron.png | Bin 0 -> 1225 bytes .../pics/pokemon/followers/altaria.png | Bin 0 -> 1180 bytes .../pics/pokemon/followers/anorith.png | Bin 0 -> 840 bytes .../pics/pokemon/followers/armaldo.png | Bin 0 -> 1003 bytes .../pics/pokemon/followers/aron.png | Bin 0 -> 457 bytes .../pics/pokemon/followers/azurill.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/bagon.png | Bin 0 -> 557 bytes .../pics/pokemon/followers/baltoy.png | Bin 0 -> 453 bytes .../pics/pokemon/followers/banette.png | Bin 0 -> 620 bytes .../pics/pokemon/followers/barboach.png | Bin 0 -> 558 bytes .../pics/pokemon/followers/beautifly.png | Bin 0 -> 952 bytes .../pics/pokemon/followers/beldum.png | Bin 0 -> 568 bytes .../pics/pokemon/followers/blaziken.png | Bin 0 -> 958 bytes .../pics/pokemon/followers/breloom.png | Bin 0 -> 659 bytes .../pics/pokemon/followers/cacnea.png | Bin 0 -> 606 bytes .../pics/pokemon/followers/cacturne.png | Bin 0 -> 572 bytes .../pics/pokemon/followers/camerupt.png | Bin 0 -> 971 bytes .../pics/pokemon/followers/carvanha.png | Bin 0 -> 768 bytes .../pics/pokemon/followers/cascoon.png | Bin 0 -> 428 bytes .../pics/pokemon/followers/castform.png | Bin 0 -> 403 bytes .../pics/pokemon/followers/chimecho.png | Bin 0 -> 412 bytes .../pics/pokemon/followers/clamperl.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/claydol.png | Bin 0 -> 628 bytes .../pics/pokemon/followers/combusken.png | Bin 0 -> 602 bytes .../pics/pokemon/followers/corphish.png | Bin 0 -> 889 bytes .../pics/pokemon/followers/cradily.png | Bin 0 -> 1085 bytes .../pics/pokemon/followers/crawdaunt.png | Bin 0 -> 959 bytes .../pics/pokemon/followers/delcatty.png | Bin 0 -> 761 bytes .../pics/pokemon/followers/deoxys_attack.png | Bin 0 -> 960 bytes .../pics/pokemon/followers/deoxys_defense.png | Bin 0 -> 869 bytes .../pics/pokemon/followers/deoxys_normal.png | Bin 0 -> 897 bytes .../pics/pokemon/followers/deoxys_speed.png | Bin 0 -> 898 bytes .../pics/pokemon/followers/dusclops.png | Bin 0 -> 915 bytes .../pics/pokemon/followers/duskull.png | Bin 0 -> 568 bytes .../pics/pokemon/followers/dustox.png | Bin 0 -> 872 bytes .../pics/pokemon/followers/electrike.png | Bin 0 -> 614 bytes .../pics/pokemon/followers/exploud.png | Bin 0 -> 1163 bytes .../pics/pokemon/followers/feebas.png | Bin 0 -> 588 bytes .../pics/pokemon/followers/flygon.png | Bin 0 -> 1067 bytes .../pics/pokemon/followers/gardevoir.png | Bin 0 -> 783 bytes .../pics/pokemon/followers/glalie.png | Bin 0 -> 598 bytes .../pics/pokemon/followers/gorebyss.png | Bin 0 -> 925 bytes .../pics/pokemon/followers/groudon.png | Bin 0 -> 1368 bytes .../pics/pokemon/followers/grovyle.png | Bin 0 -> 658 bytes .../pics/pokemon/followers/grumpig.png | Bin 0 -> 749 bytes .../pics/pokemon/followers/gulpin.png | Bin 0 -> 562 bytes .../pics/pokemon/followers/hariyama.png | Bin 0 -> 1187 bytes .../pics/pokemon/followers/huntail.png | Bin 0 -> 1060 bytes .../pics/pokemon/followers/illumise.png | Bin 0 -> 793 bytes .../pics/pokemon/followers/jirachi.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/kecleon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/kirlia.png | Bin 0 -> 548 bytes .../pics/pokemon/followers/kyogre.png | Bin 0 -> 1311 bytes .../pics/pokemon/followers/lairon.png | Bin 0 -> 867 bytes .../pics/pokemon/followers/latias.png | Bin 0 -> 1161 bytes .../pics/pokemon/followers/latios.png | Bin 0 -> 1219 bytes .../pics/pokemon/followers/lileep.png | Bin 0 -> 724 bytes .../pics/pokemon/followers/linoone.png | Bin 0 -> 651 bytes .../pics/pokemon/followers/lombre.png | Bin 0 -> 679 bytes .../pics/pokemon/followers/lotad.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/loudred.png | Bin 0 -> 831 bytes .../pics/pokemon/followers/ludicolo.png | Bin 0 -> 909 bytes .../pics/pokemon/followers/lunatone.png | Bin 0 -> 456 bytes .../pics/pokemon/followers/luvdisc.png | Bin 0 -> 419 bytes .../pics/pokemon/followers/makuhita.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/manectric.png | Bin 0 -> 798 bytes .../pics/pokemon/followers/marshtomp.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/masquerain.png | Bin 0 -> 968 bytes .../pics/pokemon/followers/mawile.png | Bin 0 -> 757 bytes .../pics/pokemon/followers/medicham.png | Bin 0 -> 673 bytes .../pics/pokemon/followers/meditite.png | Bin 0 -> 556 bytes .../pics/pokemon/followers/metagross.png | Bin 0 -> 969 bytes .../pics/pokemon/followers/metang.png | Bin 0 -> 979 bytes .../pics/pokemon/followers/mightyena.png | Bin 0 -> 803 bytes .../pics/pokemon/followers/milotic.png | Bin 0 -> 1050 bytes .../pics/pokemon/followers/minun.png | Bin 0 -> 483 bytes .../pics/pokemon/followers/mudkip.png | Bin 0 -> 461 bytes .../pics/pokemon/followers/nincada.png | Bin 0 -> 681 bytes .../pics/pokemon/followers/ninjask.png | Bin 0 -> 751 bytes .../pics/pokemon/followers/nosepass.png | Bin 0 -> 705 bytes .../pics/pokemon/followers/numel.png | Bin 0 -> 848 bytes .../pics/pokemon/followers/nuzleaf.png | Bin 0 -> 624 bytes .../pics/pokemon/followers/pelipper.png | Bin 0 -> 1014 bytes .../pics/pokemon/followers/plusle.png | Bin 0 -> 485 bytes .../pics/pokemon/followers/poochyena.png | Bin 0 -> 551 bytes .../pics/pokemon/followers/ralts.png | Bin 0 -> 476 bytes .../pics/pokemon/followers/rayquaza.png | Bin 0 -> 1648 bytes .../pics/pokemon/followers/regice.png | Bin 0 -> 850 bytes .../pics/pokemon/followers/regirock.png | Bin 0 -> 1074 bytes .../pics/pokemon/followers/registeel.png | Bin 0 -> 845 bytes .../pics/pokemon/followers/relicanth.png | Bin 0 -> 864 bytes .../pics/pokemon/followers/roselia.png | Bin 0 -> 623 bytes .../pics/pokemon/followers/sableye.png | Bin 0 -> 554 bytes .../pics/pokemon/followers/salamence.png | Bin 0 -> 1027 bytes .../pics/pokemon/followers/sceptile.png | Bin 0 -> 907 bytes .../pics/pokemon/followers/sealeo.png | Bin 0 -> 820 bytes .../pics/pokemon/followers/seedot.png | Bin 0 -> 442 bytes .../pics/pokemon/followers/seviper.png | Bin 0 -> 957 bytes .../pics/pokemon/followers/sharpedo.png | Bin 0 -> 746 bytes .../pics/pokemon/followers/shedinja.png | Bin 0 -> 693 bytes .../pics/pokemon/followers/shelgon.png | Bin 0 -> 596 bytes .../pics/pokemon/followers/shiftry.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/shroomish.png | Bin 0 -> 453 bytes .../pics/pokemon/followers/shuppet.png | Bin 0 -> 512 bytes .../pics/pokemon/followers/silcoon.png | Bin 0 -> 416 bytes .../pics/pokemon/followers/skitty.png | Bin 0 -> 531 bytes .../pics/pokemon/followers/slaking.png | Bin 0 -> 1015 bytes .../pics/pokemon/followers/slakoth.png | Bin 0 -> 652 bytes .../pics/pokemon/followers/snorunt.png | Bin 0 -> 481 bytes .../pics/pokemon/followers/solrock.png | Bin 0 -> 509 bytes .../pics/pokemon/followers/spheal.png | Bin 0 -> 582 bytes .../pics/pokemon/followers/spinda.png | Bin 0 -> 648 bytes .../pics/pokemon/followers/spoink.png | Bin 0 -> 500 bytes .../pics/pokemon/followers/surskit.png | Bin 0 -> 466 bytes .../pics/pokemon/followers/swablu.png | Bin 0 -> 723 bytes .../pics/pokemon/followers/swalot.png | Bin 0 -> 821 bytes .../pics/pokemon/followers/swampert.png | Bin 0 -> 894 bytes .../pics/pokemon/followers/swellow.png | Bin 0 -> 1050 bytes .../pics/pokemon/followers/taillow.png | Bin 0 -> 465 bytes .../pics/pokemon/followers/torchic.png | Bin 0 -> 460 bytes .../pics/pokemon/followers/torkoal.png | Bin 0 -> 731 bytes .../pics/pokemon/followers/trapinch.png | Bin 0 -> 461 bytes .../pics/pokemon/followers/treecko.png | Bin 0 -> 452 bytes .../pics/pokemon/followers/tropius.png | Bin 0 -> 1065 bytes .../pics/pokemon/followers/vibrava.png | Bin 0 -> 916 bytes .../pics/pokemon/followers/vigoroth.png | Bin 0 -> 759 bytes .../pics/pokemon/followers/volbeat.png | Bin 0 -> 932 bytes .../pics/pokemon/followers/wailmer.png | Bin 0 -> 718 bytes .../pics/pokemon/followers/wailord.png | Bin 0 -> 1151 bytes .../pics/pokemon/followers/walrein.png | Bin 0 -> 1049 bytes .../pics/pokemon/followers/whiscash.png | Bin 0 -> 787 bytes .../pics/pokemon/followers/whismur.png | Bin 0 -> 501 bytes .../pics/pokemon/followers/wingull.png | Bin 0 -> 652 bytes .../pics/pokemon/followers/wurmple.png | Bin 0 -> 642 bytes .../pics/pokemon/followers/wynaut.png | Bin 0 -> 564 bytes .../pics/pokemon/followers/zangoose.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/zigzagoon.png | Bin 0 -> 769 bytes include/constants/event_objects.h | 138 +- ld_script.txt | 7 +- spritesheet_rules.mk | 415 ++++++ src/data/object_events/object_event_anims.h | 334 +++-- .../object_events/object_event_graphics.h | 274 +++- .../object_event_graphics_info.h | 146 +- .../object_event_graphics_info_pointers.h | 273 ++++ .../object_events/object_event_pic_tables.h | 1246 +++++++++++++++++ src/event_object_movement.c | 270 ++++ src/overworld.c | 37 +- 284 files changed, 5585 insertions(+), 142 deletions(-) create mode 100644 graphics/object_events/palettes/followers/absol.pal create mode 100644 graphics/object_events/palettes/followers/aggron.pal create mode 100644 graphics/object_events/palettes/followers/altaria.pal create mode 100644 graphics/object_events/palettes/followers/anorith.pal create mode 100644 graphics/object_events/palettes/followers/armaldo.pal create mode 100644 graphics/object_events/palettes/followers/aron.pal create mode 100644 graphics/object_events/palettes/followers/azurill.pal create mode 100644 graphics/object_events/palettes/followers/bagon.pal create mode 100644 graphics/object_events/palettes/followers/baltoy.pal create mode 100644 graphics/object_events/palettes/followers/banette.pal create mode 100644 graphics/object_events/palettes/followers/barboach.pal create mode 100644 graphics/object_events/palettes/followers/beautifly.pal create mode 100644 graphics/object_events/palettes/followers/beldum.pal create mode 100644 graphics/object_events/palettes/followers/blaziken.pal create mode 100644 graphics/object_events/palettes/followers/breloom.pal create mode 100644 graphics/object_events/palettes/followers/cacnea.pal create mode 100644 graphics/object_events/palettes/followers/cacturne.pal create mode 100644 graphics/object_events/palettes/followers/camerupt.pal create mode 100644 graphics/object_events/palettes/followers/carvanha.pal create mode 100644 graphics/object_events/palettes/followers/cascoon.pal create mode 100644 graphics/object_events/palettes/followers/castform.pal create mode 100644 graphics/object_events/palettes/followers/chimecho.pal create mode 100644 graphics/object_events/palettes/followers/clamperl.pal create mode 100644 graphics/object_events/palettes/followers/claydol.pal create mode 100644 graphics/object_events/palettes/followers/combusken.pal create mode 100644 graphics/object_events/palettes/followers/corphish.pal create mode 100644 graphics/object_events/palettes/followers/cradily.pal create mode 100644 graphics/object_events/palettes/followers/crawdaunt.pal create mode 100644 graphics/object_events/palettes/followers/delcatty.pal create mode 100644 graphics/object_events/palettes/followers/deoxys.pal create mode 100644 graphics/object_events/palettes/followers/dusclops.pal create mode 100644 graphics/object_events/palettes/followers/duskull.pal create mode 100644 graphics/object_events/palettes/followers/dustox.pal create mode 100644 graphics/object_events/palettes/followers/electrike.pal create mode 100644 graphics/object_events/palettes/followers/exploud.pal create mode 100644 graphics/object_events/palettes/followers/feebas.pal create mode 100644 graphics/object_events/palettes/followers/flygon.pal create mode 100644 graphics/object_events/palettes/followers/gardevoir.pal create mode 100644 graphics/object_events/palettes/followers/glalie.pal create mode 100644 graphics/object_events/palettes/followers/gorebyss.pal create mode 100644 graphics/object_events/palettes/followers/groudon.pal create mode 100644 graphics/object_events/palettes/followers/grovyle.pal create mode 100644 graphics/object_events/palettes/followers/grumpig.pal create mode 100644 graphics/object_events/palettes/followers/gulpin.pal create mode 100644 graphics/object_events/palettes/followers/hariyama.pal create mode 100644 graphics/object_events/palettes/followers/huntail.pal create mode 100644 graphics/object_events/palettes/followers/illumise.pal create mode 100644 graphics/object_events/palettes/followers/jirachi.pal create mode 100644 graphics/object_events/palettes/followers/kecleon.pal create mode 100644 graphics/object_events/palettes/followers/kirlia.pal create mode 100644 graphics/object_events/palettes/followers/kyogre.pal create mode 100644 graphics/object_events/palettes/followers/lairon.pal create mode 100644 graphics/object_events/palettes/followers/latias.pal create mode 100644 graphics/object_events/palettes/followers/latios.pal create mode 100644 graphics/object_events/palettes/followers/lileep.pal create mode 100644 graphics/object_events/palettes/followers/linoone.pal create mode 100644 graphics/object_events/palettes/followers/lombre.pal create mode 100644 graphics/object_events/palettes/followers/lotad.pal create mode 100644 graphics/object_events/palettes/followers/loudred.pal create mode 100644 graphics/object_events/palettes/followers/ludicolo.pal create mode 100644 graphics/object_events/palettes/followers/lunatone.pal create mode 100644 graphics/object_events/palettes/followers/luvdisc.pal create mode 100644 graphics/object_events/palettes/followers/makuhita.pal create mode 100644 graphics/object_events/palettes/followers/manectric.pal create mode 100644 graphics/object_events/palettes/followers/marshtomp.pal create mode 100644 graphics/object_events/palettes/followers/masquerain.pal create mode 100644 graphics/object_events/palettes/followers/mawile.pal create mode 100644 graphics/object_events/palettes/followers/medicham.pal create mode 100644 graphics/object_events/palettes/followers/meditite.pal create mode 100644 graphics/object_events/palettes/followers/metagross.pal create mode 100644 graphics/object_events/palettes/followers/metang.pal create mode 100644 graphics/object_events/palettes/followers/mightyena.pal create mode 100644 graphics/object_events/palettes/followers/milotic.pal create mode 100644 graphics/object_events/palettes/followers/minun.pal create mode 100644 graphics/object_events/palettes/followers/mudkip.pal create mode 100644 graphics/object_events/palettes/followers/nincada.pal create mode 100644 graphics/object_events/palettes/followers/ninjask.pal create mode 100644 graphics/object_events/palettes/followers/nosepass.pal create mode 100644 graphics/object_events/palettes/followers/numel.pal create mode 100644 graphics/object_events/palettes/followers/nuzleaf.pal create mode 100644 graphics/object_events/palettes/followers/pelipper.pal create mode 100644 graphics/object_events/palettes/followers/plusle.pal create mode 100644 graphics/object_events/palettes/followers/poochyena.pal create mode 100644 graphics/object_events/palettes/followers/ralts.pal create mode 100644 graphics/object_events/palettes/followers/rayquaza.pal create mode 100644 graphics/object_events/palettes/followers/regice.pal create mode 100644 graphics/object_events/palettes/followers/regirock.pal create mode 100644 graphics/object_events/palettes/followers/registeel.pal create mode 100644 graphics/object_events/palettes/followers/relicanth.pal create mode 100644 graphics/object_events/palettes/followers/roselia.pal create mode 100644 graphics/object_events/palettes/followers/sableye.pal create mode 100644 graphics/object_events/palettes/followers/salamence.pal create mode 100644 graphics/object_events/palettes/followers/sceptile.pal create mode 100644 graphics/object_events/palettes/followers/sealeo.pal create mode 100644 graphics/object_events/palettes/followers/seedot.pal create mode 100644 graphics/object_events/palettes/followers/seviper.pal create mode 100644 graphics/object_events/palettes/followers/sharpedo.pal create mode 100644 graphics/object_events/palettes/followers/shedinja.pal create mode 100644 graphics/object_events/palettes/followers/shelgon.pal create mode 100644 graphics/object_events/palettes/followers/shiftry.pal create mode 100644 graphics/object_events/palettes/followers/shroomish.pal create mode 100644 graphics/object_events/palettes/followers/shuppet.pal create mode 100644 graphics/object_events/palettes/followers/silcoon.pal create mode 100644 graphics/object_events/palettes/followers/skitty.pal create mode 100644 graphics/object_events/palettes/followers/slaking.pal create mode 100644 graphics/object_events/palettes/followers/slakoth.pal create mode 100644 graphics/object_events/palettes/followers/snorunt.pal create mode 100644 graphics/object_events/palettes/followers/solrock.pal create mode 100644 graphics/object_events/palettes/followers/spheal.pal create mode 100644 graphics/object_events/palettes/followers/spinda.pal create mode 100644 graphics/object_events/palettes/followers/spoink.pal create mode 100644 graphics/object_events/palettes/followers/surskit.pal create mode 100644 graphics/object_events/palettes/followers/swablu.pal create mode 100644 graphics/object_events/palettes/followers/swalot.pal create mode 100644 graphics/object_events/palettes/followers/swampert.pal create mode 100644 graphics/object_events/palettes/followers/swellow.pal create mode 100644 graphics/object_events/palettes/followers/taillow.pal create mode 100644 graphics/object_events/palettes/followers/torchic.pal create mode 100644 graphics/object_events/palettes/followers/torkoal.pal create mode 100644 graphics/object_events/palettes/followers/trapinch.pal create mode 100644 graphics/object_events/palettes/followers/treecko.pal create mode 100644 graphics/object_events/palettes/followers/tropius.pal create mode 100644 graphics/object_events/palettes/followers/vibrava.pal create mode 100644 graphics/object_events/palettes/followers/vigoroth.pal create mode 100644 graphics/object_events/palettes/followers/volbeat.pal create mode 100644 graphics/object_events/palettes/followers/wailmer.pal create mode 100644 graphics/object_events/palettes/followers/wailord.pal create mode 100644 graphics/object_events/palettes/followers/walrein.pal create mode 100644 graphics/object_events/palettes/followers/whiscash.pal create mode 100644 graphics/object_events/palettes/followers/whismur.pal create mode 100644 graphics/object_events/palettes/followers/wingull.pal create mode 100644 graphics/object_events/palettes/followers/wurmple.pal create mode 100644 graphics/object_events/palettes/followers/wynaut.pal create mode 100644 graphics/object_events/palettes/followers/zangoose.pal create mode 100644 graphics/object_events/palettes/followers/zigzagoon.pal create mode 100644 graphics/object_events/pics/pokemon/followers/absol.png create mode 100644 graphics/object_events/pics/pokemon/followers/aggron.png create mode 100644 graphics/object_events/pics/pokemon/followers/altaria.png create mode 100644 graphics/object_events/pics/pokemon/followers/anorith.png create mode 100644 graphics/object_events/pics/pokemon/followers/armaldo.png create mode 100644 graphics/object_events/pics/pokemon/followers/aron.png create mode 100644 graphics/object_events/pics/pokemon/followers/azurill.png create mode 100644 graphics/object_events/pics/pokemon/followers/bagon.png create mode 100644 graphics/object_events/pics/pokemon/followers/baltoy.png create mode 100644 graphics/object_events/pics/pokemon/followers/banette.png create mode 100644 graphics/object_events/pics/pokemon/followers/barboach.png create mode 100644 graphics/object_events/pics/pokemon/followers/beautifly.png create mode 100644 graphics/object_events/pics/pokemon/followers/beldum.png create mode 100644 graphics/object_events/pics/pokemon/followers/blaziken.png create mode 100644 graphics/object_events/pics/pokemon/followers/breloom.png create mode 100644 graphics/object_events/pics/pokemon/followers/cacnea.png create mode 100644 graphics/object_events/pics/pokemon/followers/cacturne.png create mode 100644 graphics/object_events/pics/pokemon/followers/camerupt.png create mode 100644 graphics/object_events/pics/pokemon/followers/carvanha.png create mode 100644 graphics/object_events/pics/pokemon/followers/cascoon.png create mode 100644 graphics/object_events/pics/pokemon/followers/castform.png create mode 100644 graphics/object_events/pics/pokemon/followers/chimecho.png create mode 100644 graphics/object_events/pics/pokemon/followers/clamperl.png create mode 100644 graphics/object_events/pics/pokemon/followers/claydol.png create mode 100644 graphics/object_events/pics/pokemon/followers/combusken.png create mode 100644 graphics/object_events/pics/pokemon/followers/corphish.png create mode 100644 graphics/object_events/pics/pokemon/followers/cradily.png create mode 100644 graphics/object_events/pics/pokemon/followers/crawdaunt.png create mode 100644 graphics/object_events/pics/pokemon/followers/delcatty.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_attack.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_defense.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_normal.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_speed.png create mode 100644 graphics/object_events/pics/pokemon/followers/dusclops.png create mode 100644 graphics/object_events/pics/pokemon/followers/duskull.png create mode 100644 graphics/object_events/pics/pokemon/followers/dustox.png create mode 100644 graphics/object_events/pics/pokemon/followers/electrike.png create mode 100644 graphics/object_events/pics/pokemon/followers/exploud.png create mode 100644 graphics/object_events/pics/pokemon/followers/feebas.png create mode 100644 graphics/object_events/pics/pokemon/followers/flygon.png create mode 100644 graphics/object_events/pics/pokemon/followers/gardevoir.png create mode 100644 graphics/object_events/pics/pokemon/followers/glalie.png create mode 100644 graphics/object_events/pics/pokemon/followers/gorebyss.png create mode 100644 graphics/object_events/pics/pokemon/followers/groudon.png create mode 100644 graphics/object_events/pics/pokemon/followers/grovyle.png create mode 100644 graphics/object_events/pics/pokemon/followers/grumpig.png create mode 100644 graphics/object_events/pics/pokemon/followers/gulpin.png create mode 100644 graphics/object_events/pics/pokemon/followers/hariyama.png create mode 100644 graphics/object_events/pics/pokemon/followers/huntail.png create mode 100644 graphics/object_events/pics/pokemon/followers/illumise.png create mode 100644 graphics/object_events/pics/pokemon/followers/jirachi.png create mode 100644 graphics/object_events/pics/pokemon/followers/kecleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/kirlia.png create mode 100644 graphics/object_events/pics/pokemon/followers/kyogre.png create mode 100644 graphics/object_events/pics/pokemon/followers/lairon.png create mode 100644 graphics/object_events/pics/pokemon/followers/latias.png create mode 100644 graphics/object_events/pics/pokemon/followers/latios.png create mode 100644 graphics/object_events/pics/pokemon/followers/lileep.png create mode 100644 graphics/object_events/pics/pokemon/followers/linoone.png create mode 100644 graphics/object_events/pics/pokemon/followers/lombre.png create mode 100644 graphics/object_events/pics/pokemon/followers/lotad.png create mode 100644 graphics/object_events/pics/pokemon/followers/loudred.png create mode 100644 graphics/object_events/pics/pokemon/followers/ludicolo.png create mode 100644 graphics/object_events/pics/pokemon/followers/lunatone.png create mode 100644 graphics/object_events/pics/pokemon/followers/luvdisc.png create mode 100644 graphics/object_events/pics/pokemon/followers/makuhita.png create mode 100644 graphics/object_events/pics/pokemon/followers/manectric.png create mode 100644 graphics/object_events/pics/pokemon/followers/marshtomp.png create mode 100644 graphics/object_events/pics/pokemon/followers/masquerain.png create mode 100644 graphics/object_events/pics/pokemon/followers/mawile.png create mode 100644 graphics/object_events/pics/pokemon/followers/medicham.png create mode 100644 graphics/object_events/pics/pokemon/followers/meditite.png create mode 100644 graphics/object_events/pics/pokemon/followers/metagross.png create mode 100644 graphics/object_events/pics/pokemon/followers/metang.png create mode 100644 graphics/object_events/pics/pokemon/followers/mightyena.png create mode 100644 graphics/object_events/pics/pokemon/followers/milotic.png create mode 100644 graphics/object_events/pics/pokemon/followers/minun.png create mode 100644 graphics/object_events/pics/pokemon/followers/mudkip.png create mode 100644 graphics/object_events/pics/pokemon/followers/nincada.png create mode 100644 graphics/object_events/pics/pokemon/followers/ninjask.png create mode 100644 graphics/object_events/pics/pokemon/followers/nosepass.png create mode 100644 graphics/object_events/pics/pokemon/followers/numel.png create mode 100644 graphics/object_events/pics/pokemon/followers/nuzleaf.png create mode 100644 graphics/object_events/pics/pokemon/followers/pelipper.png create mode 100644 graphics/object_events/pics/pokemon/followers/plusle.png create mode 100644 graphics/object_events/pics/pokemon/followers/poochyena.png create mode 100644 graphics/object_events/pics/pokemon/followers/ralts.png create mode 100644 graphics/object_events/pics/pokemon/followers/rayquaza.png create mode 100644 graphics/object_events/pics/pokemon/followers/regice.png create mode 100644 graphics/object_events/pics/pokemon/followers/regirock.png create mode 100644 graphics/object_events/pics/pokemon/followers/registeel.png create mode 100644 graphics/object_events/pics/pokemon/followers/relicanth.png create mode 100644 graphics/object_events/pics/pokemon/followers/roselia.png create mode 100644 graphics/object_events/pics/pokemon/followers/sableye.png create mode 100644 graphics/object_events/pics/pokemon/followers/salamence.png create mode 100644 graphics/object_events/pics/pokemon/followers/sceptile.png create mode 100644 graphics/object_events/pics/pokemon/followers/sealeo.png create mode 100644 graphics/object_events/pics/pokemon/followers/seedot.png create mode 100644 graphics/object_events/pics/pokemon/followers/seviper.png create mode 100644 graphics/object_events/pics/pokemon/followers/sharpedo.png create mode 100644 graphics/object_events/pics/pokemon/followers/shedinja.png create mode 100644 graphics/object_events/pics/pokemon/followers/shelgon.png create mode 100644 graphics/object_events/pics/pokemon/followers/shiftry.png create mode 100644 graphics/object_events/pics/pokemon/followers/shroomish.png create mode 100644 graphics/object_events/pics/pokemon/followers/shuppet.png create mode 100644 graphics/object_events/pics/pokemon/followers/silcoon.png create mode 100644 graphics/object_events/pics/pokemon/followers/skitty.png create mode 100644 graphics/object_events/pics/pokemon/followers/slaking.png create mode 100644 graphics/object_events/pics/pokemon/followers/slakoth.png create mode 100644 graphics/object_events/pics/pokemon/followers/snorunt.png create mode 100644 graphics/object_events/pics/pokemon/followers/solrock.png create mode 100644 graphics/object_events/pics/pokemon/followers/spheal.png create mode 100644 graphics/object_events/pics/pokemon/followers/spinda.png create mode 100644 graphics/object_events/pics/pokemon/followers/spoink.png create mode 100644 graphics/object_events/pics/pokemon/followers/surskit.png create mode 100644 graphics/object_events/pics/pokemon/followers/swablu.png create mode 100644 graphics/object_events/pics/pokemon/followers/swalot.png create mode 100644 graphics/object_events/pics/pokemon/followers/swampert.png create mode 100644 graphics/object_events/pics/pokemon/followers/swellow.png create mode 100644 graphics/object_events/pics/pokemon/followers/taillow.png create mode 100644 graphics/object_events/pics/pokemon/followers/torchic.png create mode 100644 graphics/object_events/pics/pokemon/followers/torkoal.png create mode 100644 graphics/object_events/pics/pokemon/followers/trapinch.png create mode 100644 graphics/object_events/pics/pokemon/followers/treecko.png create mode 100644 graphics/object_events/pics/pokemon/followers/tropius.png create mode 100644 graphics/object_events/pics/pokemon/followers/vibrava.png create mode 100644 graphics/object_events/pics/pokemon/followers/vigoroth.png create mode 100644 graphics/object_events/pics/pokemon/followers/volbeat.png create mode 100644 graphics/object_events/pics/pokemon/followers/wailmer.png create mode 100644 graphics/object_events/pics/pokemon/followers/wailord.png create mode 100644 graphics/object_events/pics/pokemon/followers/walrein.png create mode 100644 graphics/object_events/pics/pokemon/followers/whiscash.png create mode 100644 graphics/object_events/pics/pokemon/followers/whismur.png create mode 100644 graphics/object_events/pics/pokemon/followers/wingull.png create mode 100644 graphics/object_events/pics/pokemon/followers/wurmple.png create mode 100644 graphics/object_events/pics/pokemon/followers/wynaut.png create mode 100644 graphics/object_events/pics/pokemon/followers/zangoose.png create mode 100644 graphics/object_events/pics/pokemon/followers/zigzagoon.png diff --git a/gflib/sprite.c b/gflib/sprite.c index 7b04658f4..a16249e6e 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1002,6 +1002,20 @@ bool8 IsFlyingPokemonGraphic(u16 graphicsId) case 487: case 488: case 489: + case 530: + case 532: + case 543: + case 547: + case 548: + case 550: + case 572: + case 596: + case 597: + case 624: + case 625: + case 642: + case 645: + case 646: return TRUE; default: return FALSE; @@ -1025,10 +1039,10 @@ void AnimCmd_frame(struct Sprite *sprite) sprite->animDelayCounter = duration; - if(gSaveBlock2Ptr->follower.inProgress && sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && sprite->y2 >= -1 + if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) { - if(sprite->animCmdIndex % 2 == 0) + if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; else sprite->y2 = -1; @@ -1068,10 +1082,10 @@ void AnimCmd_jump(struct Sprite *sprite) sprite->animDelayCounter = duration; - if(gSaveBlock2Ptr->follower.inProgress && sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && sprite->y2 >= -1 + if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) { - if(sprite->animCmdIndex % 2 == 0) + if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; else sprite->y2 = -1; diff --git a/graphics/object_events/palettes/followers/absol.pal b/graphics/object_events/palettes/followers/absol.pal new file mode 100644 index 000000000..4d7e076a8 --- /dev/null +++ b/graphics/object_events/palettes/followers/absol.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 129 161 +65 73 89 +177 185 201 +41 49 65 +97 105 129 +209 217 233 +1 1 1 +65 73 97 +129 33 33 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/aggron.pal b/graphics/object_events/palettes/followers/aggron.pal new file mode 100644 index 000000000..285abfd63 --- /dev/null +++ b/graphics/object_events/palettes/followers/aggron.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +73 65 81 +209 209 217 +1 1 1 +65 97 129 +105 145 201 +169 57 57 +49 41 57 +177 177 193 +209 89 89 +233 233 249 +145 145 153 +105 97 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/altaria.pal b/graphics/object_events/palettes/followers/altaria.pal new file mode 100644 index 000000000..ad098b4a4 --- /dev/null +++ b/graphics/object_events/palettes/followers/altaria.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 169 +97 193 233 +65 169 217 +73 81 105 +1 1 1 +209 225 233 +1 3 7 +113 129 145 +41 105 153 +169 177 193 +249 249 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/anorith.pal b/graphics/object_events/palettes/followers/anorith.pal new file mode 100644 index 000000000..34717ba7c --- /dev/null +++ b/graphics/object_events/palettes/followers/anorith.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 153 113 +65 65 73 +201 201 217 +73 113 57 +161 161 177 +137 25 57 +129 169 121 +233 233 249 +193 113 105 +49 41 49 +105 105 113 +169 65 81 +217 217 233 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/armaldo.pal b/graphics/object_events/palettes/followers/armaldo.pal new file mode 100644 index 000000000..9ca50cb6f --- /dev/null +++ b/graphics/object_events/palettes/followers/armaldo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 9 +17 65 97 +97 145 177 +193 65 105 +193 193 209 +49 49 49 +233 201 73 +57 105 145 +113 113 121 +1 1 1 +233 233 249 +161 41 81 +129 169 201 +81 81 81 +145 145 161 diff --git a/graphics/object_events/palettes/followers/aron.pal b/graphics/object_events/palettes/followers/aron.pal new file mode 100644 index 000000000..9e423f369 --- /dev/null +++ b/graphics/object_events/palettes/followers/aron.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 57 73 +233 233 249 +105 145 201 +89 89 89 +185 185 201 +65 97 129 +49 41 57 +161 161 177 +113 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/azurill.pal b/graphics/object_events/palettes/followers/azurill.pal new file mode 100644 index 000000000..bc1bf8496 --- /dev/null +++ b/graphics/object_events/palettes/followers/azurill.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 65 121 +169 209 241 +185 49 41 +73 137 193 +201 89 161 +49 57 65 +57 105 153 +113 177 241 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bagon.pal b/graphics/object_events/palettes/followers/bagon.pal new file mode 100644 index 000000000..cb37d7d6a --- /dev/null +++ b/graphics/object_events/palettes/followers/bagon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 17 +65 137 161 +201 201 201 +121 121 121 +185 185 185 +41 65 105 +233 233 249 +193 161 73 +1 1 1 +121 193 249 +105 169 225 +153 153 153 +73 81 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/baltoy.pal b/graphics/object_events/palettes/followers/baltoy.pal new file mode 100644 index 000000000..07e4664df --- /dev/null +++ b/graphics/object_events/palettes/followers/baltoy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 113 81 +177 161 97 +217 185 129 +89 81 65 +145 137 89 +1 1 1 +225 201 153 +185 81 41 +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/palettes/followers/banette.pal b/graphics/object_events/palettes/followers/banette.pal new file mode 100644 index 000000000..1573cfa1a --- /dev/null +++ b/graphics/object_events/palettes/followers/banette.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 97 25 +73 57 17 +97 105 129 +41 49 65 +97 17 17 +201 161 49 +1 1 1 +161 129 41 +193 57 57 +129 129 161 +65 73 97 +145 33 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/barboach.pal b/graphics/object_events/palettes/followers/barboach.pal new file mode 100644 index 000000000..ccc983a79 --- /dev/null +++ b/graphics/object_events/palettes/followers/barboach.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +233 233 249 +89 145 185 +49 65 81 +121 177 209 +89 97 113 +1 1 1 +153 161 177 +57 113 153 +185 185 201 +25 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beautifly.pal b/graphics/object_events/palettes/followers/beautifly.pal new file mode 100644 index 000000000..1f2c4405a --- /dev/null +++ b/graphics/object_events/palettes/followers/beautifly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 49 +97 97 105 +81 145 225 +41 41 49 +209 209 217 +185 49 73 +1 1 1 +217 89 97 +177 177 177 +249 217 105 +97 73 33 +49 97 153 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beldum.pal b/graphics/object_events/palettes/followers/beldum.pal new file mode 100644 index 000000000..2ed964eb8 --- /dev/null +++ b/graphics/object_events/palettes/followers/beldum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +65 65 65 +185 185 201 +177 57 57 +113 161 209 +17 73 105 +153 217 241 +137 41 41 +1 1 1 +41 41 49 +97 97 105 +233 233 249 +153 201 233 +145 145 161 +65 97 121 diff --git a/graphics/object_events/palettes/followers/blaziken.pal b/graphics/object_events/palettes/followers/blaziken.pal new file mode 100644 index 000000000..723203d09 --- /dev/null +++ b/graphics/object_events/palettes/followers/blaziken.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 169 17 +33 97 185 +1 1 1 +97 73 1 +169 25 25 +209 185 89 +241 225 153 +113 89 65 +177 129 81 +249 97 89 +241 233 225 +105 17 1 +233 49 41 +249 209 81 +185 169 161 diff --git a/graphics/object_events/palettes/followers/breloom.pal b/graphics/object_events/palettes/followers/breloom.pal new file mode 100644 index 000000000..811a70749 --- /dev/null +++ b/graphics/object_events/palettes/followers/breloom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 57 +49 81 33 +233 233 249 +129 193 89 +201 65 65 +97 33 33 +1 1 1 +73 113 49 +161 41 41 +129 105 57 +233 209 145 +105 169 65 +33 57 17 +209 185 113 +81 73 49 diff --git a/graphics/object_events/palettes/followers/cacnea.pal b/graphics/object_events/palettes/followers/cacnea.pal new file mode 100644 index 000000000..6787df531 --- /dev/null +++ b/graphics/object_events/palettes/followers/cacnea.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +217 225 225 +129 193 121 +41 65 41 +105 169 97 +57 97 57 +81 81 81 +201 153 57 +249 217 89 +249 249 249 +1 1 1 +89 81 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cacturne.pal b/graphics/object_events/palettes/followers/cacturne.pal new file mode 100644 index 000000000..09c80452f --- /dev/null +++ b/graphics/object_events/palettes/followers/cacturne.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +169 201 121 +41 65 41 +1 1 1 +129 169 65 +57 97 57 +249 217 89 +81 81 81 +105 169 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/camerupt.pal b/graphics/object_events/palettes/followers/camerupt.pal new file mode 100644 index 000000000..da482a575 --- /dev/null +++ b/graphics/object_events/palettes/followers/camerupt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 81 +201 73 25 +249 249 249 +73 65 49 +73 145 161 +89 97 97 +161 49 25 +1 1 1 +161 153 121 +217 105 49 +89 33 33 +129 113 81 +193 185 153 +49 57 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/carvanha.pal b/graphics/object_events/palettes/followers/carvanha.pal new file mode 100644 index 000000000..cb0714f8c --- /dev/null +++ b/graphics/object_events/palettes/followers/carvanha.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 9 +17 97 185 +49 121 233 +145 49 9 +1 1 1 +105 81 1 +241 193 17 +233 233 249 +169 177 185 +49 57 65 +201 57 33 +249 81 41 +249 217 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cascoon.pal b/graphics/object_events/palettes/followers/cascoon.pal new file mode 100644 index 000000000..b4d002949 --- /dev/null +++ b/graphics/object_events/palettes/followers/cascoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +81 65 121 +209 201 233 +129 33 57 +241 105 105 +161 153 201 +121 105 161 +233 233 249 +185 49 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/castform.pal b/graphics/object_events/palettes/followers/castform.pal new file mode 100644 index 000000000..057916921 --- /dev/null +++ b/graphics/object_events/palettes/followers/castform.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +193 193 209 +65 65 81 +1 1 1 +233 233 249 +97 97 113 +161 161 177 +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/graphics/object_events/palettes/followers/chimecho.pal b/graphics/object_events/palettes/followers/chimecho.pal new file mode 100644 index 000000000..cfbd41a93 --- /dev/null +++ b/graphics/object_events/palettes/followers/chimecho.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 57 +161 169 193 +193 57 57 +1 1 1 +121 129 153 +209 209 233 +89 97 121 +113 33 33 +249 217 89 +137 105 33 +233 233 249 +209 161 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clamperl.pal b/graphics/object_events/palettes/followers/clamperl.pal new file mode 100644 index 000000000..8ff612cf1 --- /dev/null +++ b/graphics/object_events/palettes/followers/clamperl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 169 +49 65 105 +1 1 1 +169 65 105 +137 161 209 +49 49 65 +73 97 137 +161 193 241 +233 121 161 +137 33 73 +201 89 129 +209 217 233 +97 105 129 +153 169 201 +0 0 0 diff --git a/graphics/object_events/palettes/followers/claydol.pal b/graphics/object_events/palettes/followers/claydol.pal new file mode 100644 index 000000000..2c319666c --- /dev/null +++ b/graphics/object_events/palettes/followers/claydol.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 25 +137 137 153 +57 49 41 +137 121 89 +193 73 121 +217 185 89 +233 233 249 +89 81 65 +137 41 65 +185 185 193 +233 137 113 +1 1 1 +113 89 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/combusken.pal b/graphics/object_events/palettes/followers/combusken.pal new file mode 100644 index 000000000..5658b6a62 --- /dev/null +++ b/graphics/object_events/palettes/followers/combusken.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +73 65 17 +169 161 201 +1 1 1 +161 81 17 +113 49 9 +185 161 89 +113 105 49 +233 233 249 +249 209 97 +201 105 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corphish.pal b/graphics/object_events/palettes/followers/corphish.pal new file mode 100644 index 000000000..4fe98b274 --- /dev/null +++ b/graphics/object_events/palettes/followers/corphish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 145 +89 81 65 +233 233 249 +177 177 193 +193 73 33 +161 153 129 +89 25 1 +121 113 97 +233 137 97 +217 105 65 +153 49 9 +1 1 1 +57 73 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cradily.pal b/graphics/object_events/palettes/followers/cradily.pal new file mode 100644 index 000000000..9b10b1bbe --- /dev/null +++ b/graphics/object_events/palettes/followers/cradily.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 129 89 +33 89 49 +241 185 1 +97 169 97 +49 41 49 +193 65 97 +241 209 97 +137 25 57 +209 105 137 +153 217 153 +161 49 89 +1 1 1 +129 113 65 +89 81 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/crawdaunt.pal b/graphics/object_events/palettes/followers/crawdaunt.pal new file mode 100644 index 000000000..cd8f78f0c --- /dev/null +++ b/graphics/object_events/palettes/followers/crawdaunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +49 57 73 +41 129 169 +201 81 65 +169 153 145 +113 89 25 +233 233 249 +169 169 185 +249 217 89 +89 41 9 +145 57 33 +249 105 97 +89 81 65 +57 145 201 +1 1 1 diff --git a/graphics/object_events/palettes/followers/delcatty.pal b/graphics/object_events/palettes/followers/delcatty.pal new file mode 100644 index 000000000..a31726030 --- /dev/null +++ b/graphics/object_events/palettes/followers/delcatty.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 73 +193 145 217 +65 49 105 +225 185 57 +153 105 201 +1 1 1 +81 73 57 +233 233 249 +233 209 129 +97 73 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/deoxys.pal b/graphics/object_events/palettes/followers/deoxys.pal new file mode 100644 index 000000000..a02008116 --- /dev/null +++ b/graphics/object_events/palettes/followers/deoxys.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 105 +121 65 129 +57 57 57 +161 177 129 +249 129 81 +225 73 65 +97 17 17 +81 89 97 +233 233 249 +1 1 1 +185 89 209 +65 169 153 +185 41 41 +33 73 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dusclops.pal b/graphics/object_events/palettes/followers/dusclops.pal new file mode 100644 index 000000000..30d44a7a9 --- /dev/null +++ b/graphics/object_events/palettes/followers/dusclops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +185 185 185 +73 65 49 +161 161 161 +209 97 97 +1 1 1 +225 217 217 +105 89 81 +145 33 33 +169 177 201 +233 233 249 +185 177 177 +65 65 65 +121 121 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/duskull.pal b/graphics/object_events/palettes/followers/duskull.pal new file mode 100644 index 000000000..5f79a1d4e --- /dev/null +++ b/graphics/object_events/palettes/followers/duskull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +73 65 49 +1 1 1 +193 57 57 +145 33 33 +217 113 113 +81 89 113 +201 185 185 +33 41 57 +225 217 217 +105 113 145 +57 65 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dustox.pal b/graphics/object_events/palettes/followers/dustox.pal new file mode 100644 index 000000000..72e80bb45 --- /dev/null +++ b/graphics/object_events/palettes/followers/dustox.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 57 +73 57 113 +161 145 217 +137 185 105 +57 57 57 +169 217 89 +185 49 73 +241 105 105 +121 97 169 +105 153 41 +65 89 33 +97 73 33 +241 217 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/electrike.pal b/graphics/object_events/palettes/followers/electrike.pal new file mode 100644 index 000000000..5d0115cfa --- /dev/null +++ b/graphics/object_events/palettes/followers/electrike.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 137 65 +233 233 249 +249 209 65 +129 169 97 +33 57 9 +153 201 97 +193 145 41 +1 1 1 +113 81 25 +177 225 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/exploud.pal b/graphics/object_events/palettes/followers/exploud.pal new file mode 100644 index 000000000..000d9c38f --- /dev/null +++ b/graphics/object_events/palettes/followers/exploud.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 49 +105 73 33 +137 129 185 +81 73 105 +41 49 65 +233 233 249 +105 97 153 +233 209 105 +1 1 1 +169 177 193 +113 33 49 +185 65 105 +177 169 225 +105 113 137 +137 41 65 diff --git a/graphics/object_events/palettes/followers/feebas.pal b/graphics/object_events/palettes/followers/feebas.pal new file mode 100644 index 000000000..f5ca9d67c --- /dev/null +++ b/graphics/object_events/palettes/followers/feebas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 73 +113 161 209 +73 57 33 +1 1 1 +49 81 113 +81 121 161 +233 233 249 +17 41 65 +193 65 105 +193 193 209 +169 153 89 +105 89 49 +201 185 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flygon.pal b/graphics/object_events/palettes/followers/flygon.pal new file mode 100644 index 000000000..3ed7c9537 --- /dev/null +++ b/graphics/object_events/palettes/followers/flygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +65 105 57 +185 193 209 +129 33 33 +161 193 97 +1 1 1 +249 129 153 +169 49 65 +249 249 249 +49 73 49 +193 217 153 +97 97 97 +209 65 89 +121 145 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gardevoir.pal b/graphics/object_events/palettes/followers/gardevoir.pal new file mode 100644 index 000000000..7fc27c511 --- /dev/null +++ b/graphics/object_events/palettes/followers/gardevoir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +129 129 145 +233 233 249 +241 105 105 +1 1 1 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +145 145 145 +0 0 0 diff --git a/graphics/object_events/palettes/followers/glalie.pal b/graphics/object_events/palettes/followers/glalie.pal new file mode 100644 index 000000000..8938d2810 --- /dev/null +++ b/graphics/object_events/palettes/followers/glalie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +1 1 1 +57 57 73 +153 161 177 +41 41 57 +41 129 193 +193 201 217 +81 81 97 +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/palettes/followers/gorebyss.pal b/graphics/object_events/palettes/followers/gorebyss.pal new file mode 100644 index 000000000..af3c25028 --- /dev/null +++ b/graphics/object_events/palettes/followers/gorebyss.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 137 +81 57 129 +209 217 233 +145 129 217 +121 105 185 +97 105 129 +49 49 65 +1 1 1 +153 169 201 +185 81 97 +201 89 113 +137 33 73 +169 153 241 +233 145 161 +233 233 249 diff --git a/graphics/object_events/palettes/followers/groudon.pal b/graphics/object_events/palettes/followers/groudon.pal new file mode 100644 index 000000000..28f20e54a --- /dev/null +++ b/graphics/object_events/palettes/followers/groudon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 129 145 +217 73 65 +145 153 177 +137 25 17 +57 65 81 +33 41 57 +209 193 49 +185 201 217 +1 1 1 +129 113 25 +97 105 121 +233 233 249 +89 17 9 +73 81 97 +177 33 33 diff --git a/graphics/object_events/palettes/followers/grovyle.pal b/graphics/object_events/palettes/followers/grovyle.pal new file mode 100644 index 000000000..d1df22d69 --- /dev/null +++ b/graphics/object_events/palettes/followers/grovyle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 121 65 +41 57 17 +1 1 1 +105 25 25 +97 153 73 +153 201 121 +153 41 41 +65 105 41 +249 217 89 +185 49 49 +113 153 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/grumpig.pal b/graphics/object_events/palettes/followers/grumpig.pal new file mode 100644 index 000000000..0563b27ca --- /dev/null +++ b/graphics/object_events/palettes/followers/grumpig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +121 65 145 +73 81 89 +153 89 185 +105 25 65 +185 73 129 +49 57 65 +193 193 193 +249 249 249 +113 121 121 +193 121 225 +145 49 97 +225 97 161 +81 41 105 +137 73 169 diff --git a/graphics/object_events/palettes/followers/gulpin.pal b/graphics/object_events/palettes/followers/gulpin.pal new file mode 100644 index 000000000..28cdbf17d --- /dev/null +++ b/graphics/object_events/palettes/followers/gulpin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 121 41 +57 97 17 +233 185 65 +57 73 81 +105 153 65 +1 1 1 +33 49 17 +169 129 57 +113 89 41 +137 193 113 +73 89 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hariyama.pal b/graphics/object_events/palettes/followers/hariyama.pal new file mode 100644 index 000000000..9ae8eaef4 --- /dev/null +++ b/graphics/object_events/palettes/followers/hariyama.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 33 +105 129 177 +25 41 89 +73 57 9 +217 185 65 +217 201 153 +185 153 105 +105 81 65 +233 233 249 +65 81 137 +185 89 17 +1 1 1 +97 33 9 +241 233 193 +209 129 57 diff --git a/graphics/object_events/palettes/followers/huntail.pal b/graphics/object_events/palettes/followers/huntail.pal new file mode 100644 index 000000000..f89eadd28 --- /dev/null +++ b/graphics/object_events/palettes/followers/huntail.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 81 49 +153 201 225 +49 49 65 +97 153 217 +49 97 137 +233 233 249 +121 185 217 +129 49 25 +185 65 113 +153 41 89 +217 113 73 +209 217 233 +177 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/illumise.pal b/graphics/object_events/palettes/followers/illumise.pal new file mode 100644 index 000000000..33284a660 --- /dev/null +++ b/graphics/object_events/palettes/followers/illumise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +201 121 201 +65 65 73 +161 193 233 +113 89 57 +89 161 233 +201 185 89 +49 65 105 +41 41 49 +169 169 201 +233 233 249 +105 105 113 +1 1 1 +209 177 233 +105 57 105 diff --git a/graphics/object_events/palettes/followers/jirachi.pal b/graphics/object_events/palettes/followers/jirachi.pal new file mode 100644 index 000000000..4611f22c6 --- /dev/null +++ b/graphics/object_events/palettes/followers/jirachi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 1 +89 161 145 +121 201 177 +73 65 17 +217 185 65 +177 185 185 +33 89 81 +1 1 1 +57 129 113 +209 209 225 +169 113 9 +249 217 89 +233 233 249 +81 105 105 +137 153 153 diff --git a/graphics/object_events/palettes/followers/kecleon.pal b/graphics/object_events/palettes/followers/kecleon.pal new file mode 100644 index 000000000..4adc1da0a --- /dev/null +++ b/graphics/object_events/palettes/followers/kecleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 129 41 +233 233 249 +145 193 89 +89 81 41 +1 1 1 +185 225 105 +33 57 17 +121 169 49 +153 41 65 +249 193 65 +129 113 65 +217 169 33 +249 225 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kirlia.pal b/graphics/object_events/palettes/followers/kirlia.pal new file mode 100644 index 000000000..5c4776a37 --- /dev/null +++ b/graphics/object_events/palettes/followers/kirlia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +233 233 249 +241 105 105 +1 1 1 +129 129 145 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kyogre.pal b/graphics/object_events/palettes/followers/kyogre.pal new file mode 100644 index 000000000..da6327faa --- /dev/null +++ b/graphics/object_events/palettes/followers/kyogre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 129 +129 113 25 +65 129 193 +153 25 25 +129 185 217 +57 57 57 +225 193 33 +97 161 193 +41 97 153 +1 1 1 +201 217 241 +201 41 41 +89 17 9 +25 57 89 +153 169 177 diff --git a/graphics/object_events/palettes/followers/lairon.pal b/graphics/object_events/palettes/followers/lairon.pal new file mode 100644 index 000000000..17ab0b537 --- /dev/null +++ b/graphics/object_events/palettes/followers/lairon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +185 185 201 +73 65 81 +1 1 1 +233 233 249 +65 97 129 +49 41 57 +105 145 201 +161 161 177 +209 209 225 +105 97 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latias.pal b/graphics/object_events/palettes/followers/latias.pal new file mode 100644 index 000000000..e65c159fc --- /dev/null +++ b/graphics/object_events/palettes/followers/latias.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 169 1 +65 129 169 +57 65 65 +185 201 209 +97 25 17 +1 1 1 +193 65 65 +33 41 41 +105 121 121 +233 233 249 +153 169 177 +233 89 89 +129 145 153 +145 41 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latios.pal b/graphics/object_events/palettes/followers/latios.pal new file mode 100644 index 000000000..a50cfc45c --- /dev/null +++ b/graphics/object_events/palettes/followers/latios.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +89 193 249 +57 65 65 +49 129 193 +129 33 33 +9 57 89 +1 1 1 +185 201 209 +33 113 169 +65 153 217 +33 41 41 +233 233 249 +153 169 177 +129 145 153 +193 33 33 diff --git a/graphics/object_events/palettes/followers/lileep.pal b/graphics/object_events/palettes/followers/lileep.pal new file mode 100644 index 000000000..80228afba --- /dev/null +++ b/graphics/object_events/palettes/followers/lileep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 57 +41 33 89 +137 97 177 +161 49 89 +113 89 49 +209 185 73 +89 17 41 +97 57 145 +209 105 137 +161 145 217 +1 1 1 +41 25 41 +81 57 81 +193 65 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/linoone.pal b/graphics/object_events/palettes/followers/linoone.pal new file mode 100644 index 000000000..f7daf07d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/linoone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 185 +81 73 65 +113 105 89 +169 185 209 +41 81 121 +1 1 1 +121 89 65 +105 105 121 +233 233 249 +65 41 17 +217 209 185 +185 177 169 +153 113 89 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lombre.pal b/graphics/object_events/palettes/followers/lombre.pal new file mode 100644 index 000000000..22a7e49bb --- /dev/null +++ b/graphics/object_events/palettes/followers/lombre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 3 +121 153 137 +41 81 33 +145 209 17 +233 233 249 +129 41 17 +105 153 65 +1 1 1 +233 89 65 +113 169 17 +73 113 65 +153 193 161 +169 49 25 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lotad.pal b/graphics/object_events/palettes/followers/lotad.pal new file mode 100644 index 000000000..d3457a4ec --- /dev/null +++ b/graphics/object_events/palettes/followers/lotad.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 25 +81 145 193 +33 57 17 +113 169 17 +41 97 137 +1 1 1 +41 97 65 +145 209 17 +233 233 249 +25 49 89 +233 185 65 +169 121 25 +97 65 9 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/loudred.pal b/graphics/object_events/palettes/followers/loudred.pal new file mode 100644 index 000000000..be3de9d8f --- /dev/null +++ b/graphics/object_events/palettes/followers/loudred.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 49 +105 73 33 +137 129 185 +81 73 105 +233 233 249 +105 97 153 +41 49 65 +233 209 105 +1 1 1 +169 177 193 +185 65 105 +137 41 65 +177 169 225 +105 113 137 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ludicolo.pal b/graphics/object_events/palettes/followers/ludicolo.pal new file mode 100644 index 000000000..87294c677 --- /dev/null +++ b/graphics/object_events/palettes/followers/ludicolo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 57 +161 161 161 +33 57 17 +121 177 33 +97 73 49 +1 1 1 +145 209 17 +137 105 81 +233 233 249 +209 129 9 +49 41 9 +137 65 1 +209 177 65 +233 201 121 +65 65 73 diff --git a/graphics/object_events/palettes/followers/lunatone.pal b/graphics/object_events/palettes/followers/lunatone.pal new file mode 100644 index 000000000..b3c10e691 --- /dev/null +++ b/graphics/object_events/palettes/followers/lunatone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +65 73 89 +177 161 73 +97 81 33 +161 49 113 +1 1 1 +33 41 49 +209 193 97 +209 73 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luvdisc.pal b/graphics/object_events/palettes/followers/luvdisc.pal new file mode 100644 index 000000000..4275e201b --- /dev/null +++ b/graphics/object_events/palettes/followers/luvdisc.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 129 153 +97 105 129 +249 193 185 +1 1 1 +49 49 65 +233 145 145 +209 97 137 +137 33 73 +233 233 249 +249 177 145 +161 49 97 +217 105 153 +233 153 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/makuhita.pal b/graphics/object_events/palettes/followers/makuhita.pal new file mode 100644 index 000000000..681982bc5 --- /dev/null +++ b/graphics/object_events/palettes/followers/makuhita.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 57 +73 57 9 +57 65 81 +137 41 65 +225 201 105 +185 65 105 +25 33 41 +1 1 1 +113 97 17 +81 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/manectric.pal b/graphics/object_events/palettes/followers/manectric.pal new file mode 100644 index 000000000..5d93d7697 --- /dev/null +++ b/graphics/object_events/palettes/followers/manectric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 33 +81 153 185 +97 73 49 +249 249 145 +193 57 57 +1 1 1 +129 185 217 +33 121 153 +161 217 249 +25 49 89 +225 193 73 +161 161 161 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/marshtomp.pal b/graphics/object_events/palettes/followers/marshtomp.pal new file mode 100644 index 000000000..828789299 --- /dev/null +++ b/graphics/object_events/palettes/followers/marshtomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +129 161 177 +73 57 17 +33 81 89 +65 129 129 +233 233 249 +89 185 177 +161 73 17 +1 1 1 +177 193 209 +193 89 17 +97 121 129 +49 81 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/masquerain.pal b/graphics/object_events/palettes/followers/masquerain.pal new file mode 100644 index 000000000..366b9fb54 --- /dev/null +++ b/graphics/object_events/palettes/followers/masquerain.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +81 81 89 +137 177 201 +65 81 113 +161 209 225 +137 33 89 +161 65 49 +217 105 121 +105 25 33 +225 161 185 +89 113 153 +233 233 249 +201 89 73 +177 217 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mawile.pal b/graphics/object_events/palettes/followers/mawile.pal new file mode 100644 index 000000000..6751c3e12 --- /dev/null +++ b/graphics/object_events/palettes/followers/mawile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 89 +81 73 57 +177 185 201 +249 217 129 +129 105 73 +193 57 57 +145 145 145 +41 41 41 +233 233 249 +1 1 1 +113 113 113 +73 73 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/medicham.pal b/graphics/object_events/palettes/followers/medicham.pal new file mode 100644 index 000000000..c0ba10536 --- /dev/null +++ b/graphics/object_events/palettes/followers/medicham.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +152 152 145 +113 81 17 +193 193 185 +57 57 65 +1 1 1 +185 81 105 +233 137 161 +233 233 249 +249 217 89 +113 113 97 +49 25 33 +193 161 17 +145 57 89 +201 97 129 diff --git a/graphics/object_events/palettes/followers/meditite.pal b/graphics/object_events/palettes/followers/meditite.pal new file mode 100644 index 000000000..5c7838281 --- /dev/null +++ b/graphics/object_events/palettes/followers/meditite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 153 +217 225 233 +57 57 65 +1 1 1 +65 105 153 +89 145 193 +81 81 89 +185 49 41 +177 185 201 +161 161 177 +41 65 97 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metagross.pal b/graphics/object_events/palettes/followers/metagross.pal new file mode 100644 index 000000000..f94f7a361 --- /dev/null +++ b/graphics/object_events/palettes/followers/metagross.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +193 193 193 +65 65 65 +105 145 209 +1 1 1 +153 217 241 +153 41 41 +145 145 161 +41 41 49 +65 97 121 +233 233 249 +145 193 233 +33 65 81 +153 153 161 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metang.pal b/graphics/object_events/palettes/followers/metang.pal new file mode 100644 index 000000000..819ca143b --- /dev/null +++ b/graphics/object_events/palettes/followers/metang.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +193 193 193 +65 65 65 +105 145 209 +233 233 249 +121 33 33 +1 1 1 +150 150 161 +41 41 49 +65 97 121 +145 193 233 +153 217 241 +255 255 255 +33 65 81 +153 41 41 diff --git a/graphics/object_events/palettes/followers/mightyena.pal b/graphics/object_events/palettes/followers/mightyena.pal new file mode 100644 index 000000000..38610816d --- /dev/null +++ b/graphics/object_events/palettes/followers/mightyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +1 1 1 +49 57 57 +145 153 161 +225 65 65 +177 185 193 +81 81 89 +129 33 33 +249 217 89 +129 121 137 +169 161 185 +65 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/milotic.pal b/graphics/object_events/palettes/followers/milotic.pal new file mode 100644 index 000000000..d012770f9 --- /dev/null +++ b/graphics/object_events/palettes/followers/milotic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 65 +33 57 89 +233 217 169 +241 105 113 +129 9 73 +81 129 169 +81 73 153 +185 49 81 +1 1 1 +113 161 209 +97 89 65 +249 241 217 +241 105 153 +57 89 129 +185 49 113 diff --git a/graphics/object_events/palettes/followers/minun.pal b/graphics/object_events/palettes/followers/minun.pal new file mode 100644 index 000000000..56f9b114c --- /dev/null +++ b/graphics/object_events/palettes/followers/minun.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 137 105 +249 225 137 +81 129 161 +113 89 49 +201 169 97 +233 233 249 +113 177 209 +49 81 121 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mudkip.pal b/graphics/object_events/palettes/followers/mudkip.pal new file mode 100644 index 000000000..ad2e4fc26 --- /dev/null +++ b/graphics/object_events/palettes/followers/mudkip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +73 57 17 +73 137 177 +41 73 121 +233 233 249 +65 65 81 +89 177 217 +1 1 1 +113 105 145 +161 73 17 +177 177 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nincada.pal b/graphics/object_events/palettes/followers/nincada.pal new file mode 100644 index 000000000..359d3480f --- /dev/null +++ b/graphics/object_events/palettes/followers/nincada.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 65 +33 73 25 +153 145 161 +97 89 113 +121 177 89 +49 41 65 +57 113 41 +233 233 249 +185 177 193 +97 89 65 +121 113 137 +1 1 1 +145 129 89 +65 57 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninjask.pal b/graphics/object_events/palettes/followers/ninjask.pal new file mode 100644 index 000000000..c1e058ac4 --- /dev/null +++ b/graphics/object_events/palettes/followers/ninjask.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 65 +201 201 201 +193 57 57 +233 193 49 +113 33 33 +233 233 249 +97 89 113 +1 1 1 +145 97 17 +57 49 73 +241 225 73 +217 217 225 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nosepass.pal b/graphics/object_events/palettes/followers/nosepass.pal new file mode 100644 index 000000000..391eef08c --- /dev/null +++ b/graphics/object_events/palettes/followers/nosepass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +17 33 73 +209 49 73 +113 25 41 +65 73 81 +81 129 185 +41 49 57 +41 57 97 +113 177 233 +65 89 137 +161 33 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/numel.pal b/graphics/object_events/palettes/followers/numel.pal new file mode 100644 index 000000000..ba92ab59c --- /dev/null +++ b/graphics/object_events/palettes/followers/numel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 49 +217 225 185 +137 201 65 +49 81 25 +73 121 33 +177 185 137 +89 73 57 +1 1 1 +249 249 249 +217 185 73 +241 217 89 +121 97 73 +185 145 57 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nuzleaf.pal b/graphics/object_events/palettes/followers/nuzleaf.pal new file mode 100644 index 000000000..ae9bbd957 --- /dev/null +++ b/graphics/object_events/palettes/followers/nuzleaf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 9 +89 73 9 +233 233 249 +1 1 1 +65 105 9 +33 57 9 +145 209 17 +97 65 33 +161 137 65 +161 113 49 +233 201 121 +73 49 25 +121 81 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pelipper.pal b/graphics/object_events/palettes/followers/pelipper.pal new file mode 100644 index 000000000..a1e730a7e --- /dev/null +++ b/graphics/object_events/palettes/followers/pelipper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +81 137 169 +105 81 17 +180 193 211 +201 177 57 +81 81 89 +105 161 217 +233 233 249 +145 145 145 +1 1 1 +65 105 145 +225 209 73 +137 105 25 +137 137 153 +49 73 113 diff --git a/graphics/object_events/palettes/followers/plusle.pal b/graphics/object_events/palettes/followers/plusle.pal new file mode 100644 index 000000000..f04c4f314 --- /dev/null +++ b/graphics/object_events/palettes/followers/plusle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 137 105 +113 89 49 +233 233 249 +249 225 137 +201 169 97 +185 73 89 +137 41 65 +1 1 1 +225 113 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poochyena.pal b/graphics/object_events/palettes/followers/poochyena.pal new file mode 100644 index 000000000..53d5307c0 --- /dev/null +++ b/graphics/object_events/palettes/followers/poochyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +49 57 57 +1 1 1 +193 57 57 +81 81 89 +185 185 185 +137 41 41 +145 145 145 +249 217 89 +65 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ralts.pal b/graphics/object_events/palettes/followers/ralts.pal new file mode 100644 index 000000000..5c4776a37 --- /dev/null +++ b/graphics/object_events/palettes/followers/ralts.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +233 233 249 +241 105 105 +1 1 1 +129 129 145 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rayquaza.pal b/graphics/object_events/palettes/followers/rayquaza.pal new file mode 100644 index 000000000..93c0e8a41 --- /dev/null +++ b/graphics/object_events/palettes/followers/rayquaza.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 81 +49 105 49 +153 169 177 +153 25 25 +121 185 113 +49 49 49 +241 201 49 +201 217 241 +153 225 145 +193 161 41 +145 121 25 +201 41 41 +17 65 25 +89 17 9 +1 1 1 diff --git a/graphics/object_events/palettes/followers/regice.pal b/graphics/object_events/palettes/followers/regice.pal new file mode 100644 index 000000000..ea013d68a --- /dev/null +++ b/graphics/object_events/palettes/followers/regice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 169 89 +97 145 185 +177 225 249 +233 233 137 +41 73 97 +217 201 113 +121 169 209 +1 1 1 +65 105 145 +145 185 225 +201 241 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/regirock.pal b/graphics/object_events/palettes/followers/regirock.pal new file mode 100644 index 000000000..bbbdd8d21 --- /dev/null +++ b/graphics/object_events/palettes/followers/regirock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 113 89 +1 1 1 +137 65 41 +161 145 129 +57 41 33 +201 185 169 +113 89 81 +217 113 73 +233 217 201 +177 89 57 +177 161 145 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/registeel.pal b/graphics/object_events/palettes/followers/registeel.pal new file mode 100644 index 000000000..f01e24f60 --- /dev/null +++ b/graphics/object_events/palettes/followers/registeel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +57 65 65 +185 201 209 +1 1 1 +193 57 57 +33 41 41 +129 145 153 +81 89 97 +209 105 105 +233 233 249 +153 169 177 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/relicanth.pal b/graphics/object_events/palettes/followers/relicanth.pal new file mode 100644 index 000000000..9caac6b77 --- /dev/null +++ b/graphics/object_events/palettes/followers/relicanth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 97 +97 65 57 +1 1 1 +177 41 81 +57 41 33 +121 89 73 +169 153 129 +193 177 153 +73 73 97 +217 201 169 +49 49 65 +73 49 41 +105 97 81 +137 121 105 +0 0 0 diff --git a/graphics/object_events/palettes/followers/roselia.pal b/graphics/object_events/palettes/followers/roselia.pal new file mode 100644 index 000000000..4a0189e95 --- /dev/null +++ b/graphics/object_events/palettes/followers/roselia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 17 +33 57 17 +81 145 209 +25 49 89 +41 97 137 +233 185 65 +1 1 1 +89 17 49 +201 65 113 +169 129 57 +57 97 17 +145 41 81 +161 201 145 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sableye.pal b/graphics/object_events/palettes/followers/sableye.pal new file mode 100644 index 000000000..beadb4681 --- /dev/null +++ b/graphics/object_events/palettes/followers/sableye.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 153 121 +65 49 105 +233 233 249 +81 121 185 +233 89 113 +49 81 137 +121 161 225 +193 57 57 +1 1 1 +121 97 177 +89 65 145 +145 129 217 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/salamence.pal b/graphics/object_events/palettes/followers/salamence.pal new file mode 100644 index 000000000..76afcbc8f --- /dev/null +++ b/graphics/object_events/palettes/followers/salamence.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +57 57 65 +81 185 201 +161 65 65 +1 1 1 +233 233 249 +193 81 97 +97 33 33 +129 129 145 +49 73 113 +161 161 177 +153 201 209 +217 89 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sceptile.pal b/graphics/object_events/palettes/followers/sceptile.pal new file mode 100644 index 000000000..806146f2d --- /dev/null +++ b/graphics/object_events/palettes/followers/sceptile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 49 +41 81 17 +161 209 105 +105 25 25 +1 1 1 +201 161 57 +121 105 25 +65 49 9 +129 177 73 +249 217 89 +153 41 41 +65 89 25 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sealeo.pal b/graphics/object_events/palettes/followers/sealeo.pal new file mode 100644 index 000000000..4efd9fd5a --- /dev/null +++ b/graphics/object_events/palettes/followers/sealeo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 153 +217 209 153 +81 81 57 +73 153 201 +49 65 105 +137 193 241 +185 169 113 +49 113 145 +209 217 233 +177 185 209 +121 113 81 +233 233 249 +81 81 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seedot.pal b/graphics/object_events/palettes/followers/seedot.pal new file mode 100644 index 000000000..7aff4c0af --- /dev/null +++ b/graphics/object_events/palettes/followers/seedot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 113 49 +73 49 25 +177 161 65 +65 57 57 +129 113 113 +89 73 9 +1 1 1 +97 89 81 +33 33 25 +233 201 121 +121 81 41 +65 65 73 +137 121 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seviper.pal b/graphics/object_events/palettes/followers/seviper.pal new file mode 100644 index 000000000..276c88dc2 --- /dev/null +++ b/graphics/object_events/palettes/followers/seviper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 113 25 +81 89 105 +33 41 57 +113 121 137 +217 169 73 +161 49 57 +249 217 89 +121 33 33 +169 113 241 +145 89 185 +1 1 1 +209 73 81 +57 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sharpedo.pal b/graphics/object_events/palettes/followers/sharpedo.pal new file mode 100644 index 000000000..5381c6030 --- /dev/null +++ b/graphics/object_events/palettes/followers/sharpedo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 49 +97 81 17 +89 145 193 +33 65 105 +1 1 1 +193 89 113 +57 65 73 +233 233 249 +129 137 145 +65 113 161 +113 25 49 +249 209 81 +161 169 177 +33 89 137 +73 81 89 diff --git a/graphics/object_events/palettes/followers/shedinja.pal b/graphics/object_events/palettes/followers/shedinja.pal new file mode 100644 index 000000000..05d9d168e --- /dev/null +++ b/graphics/object_events/palettes/followers/shedinja.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 65 +105 81 17 +153 145 161 +241 217 121 +97 89 113 +65 57 33 +201 177 105 +233 233 249 +121 105 65 +185 177 193 +121 113 137 +57 49 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shelgon.pal b/graphics/object_events/palettes/followers/shelgon.pal new file mode 100644 index 000000000..bea7288b0 --- /dev/null +++ b/graphics/object_events/palettes/followers/shelgon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +161 161 185 +65 65 81 +201 201 217 +209 177 97 +113 113 137 +129 41 41 +185 185 201 +233 233 249 +89 89 105 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shiftry.pal b/graphics/object_events/palettes/followers/shiftry.pal new file mode 100644 index 000000000..cea3ce83c --- /dev/null +++ b/graphics/object_events/palettes/followers/shiftry.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 137 9 +129 137 145 +97 65 33 +1 1 1 +137 97 41 +65 41 9 +145 209 17 +233 233 249 +161 177 185 +161 137 65 +81 81 89 +233 201 121 +33 57 9 +161 113 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shroomish.pal b/graphics/object_events/palettes/followers/shroomish.pal new file mode 100644 index 000000000..203fd57ea --- /dev/null +++ b/graphics/object_events/palettes/followers/shroomish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 105 73 +121 177 89 +225 201 145 +73 65 49 +81 137 65 +193 161 129 +49 89 41 +145 129 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shuppet.pal b/graphics/object_events/palettes/followers/shuppet.pal new file mode 100644 index 000000000..045c51318 --- /dev/null +++ b/graphics/object_events/palettes/followers/shuppet.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 49 +97 105 129 +1 1 1 +65 73 97 +81 129 201 +41 49 65 +129 129 161 +161 161 193 +49 81 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/silcoon.pal b/graphics/object_events/palettes/followers/silcoon.pal new file mode 100644 index 000000000..f256a8be4 --- /dev/null +++ b/graphics/object_events/palettes/followers/silcoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 137 +81 81 81 +185 185 169 +129 33 57 +1 1 1 +241 105 105 +225 225 209 +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/graphics/object_events/palettes/followers/skitty.pal b/graphics/object_events/palettes/followers/skitty.pal new file mode 100644 index 000000000..c43022e02 --- /dev/null +++ b/graphics/object_events/palettes/followers/skitty.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 161 73 +97 57 57 +249 225 129 +129 105 73 +249 137 153 +177 81 89 +57 57 89 +1 1 1 +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/palettes/followers/slaking.pal b/graphics/object_events/palettes/followers/slaking.pal new file mode 100644 index 000000000..40eca9702 --- /dev/null +++ b/graphics/object_events/palettes/followers/slaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 97 +97 73 73 +217 201 161 +1 1 1 +209 113 137 +129 105 89 +73 57 41 +145 137 153 +193 193 209 +233 233 249 +169 81 105 +121 57 73 +201 177 153 +169 129 105 +81 73 89 diff --git a/graphics/object_events/palettes/followers/slakoth.pal b/graphics/object_events/palettes/followers/slakoth.pal new file mode 100644 index 000000000..12c49947a --- /dev/null +++ b/graphics/object_events/palettes/followers/slakoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 89 +81 65 65 +185 177 193 +169 57 57 +1 1 1 +129 89 81 +145 137 153 +89 81 97 +233 233 249 +121 33 33 +209 89 89 +225 201 145 +185 153 113 +113 65 57 +113 97 89 diff --git a/graphics/object_events/palettes/followers/snorunt.pal b/graphics/object_events/palettes/followers/snorunt.pal new file mode 100644 index 000000000..283587f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 57 +89 65 57 +169 73 65 +41 129 193 +97 97 121 +33 33 41 +249 217 89 +145 105 57 +233 233 249 +169 169 185 +1 1 1 +241 105 89 +49 49 65 +65 65 81 +193 81 65 diff --git a/graphics/object_events/palettes/followers/solrock.pal b/graphics/object_events/palettes/followers/solrock.pal new file mode 100644 index 000000000..d2eccc967 --- /dev/null +++ b/graphics/object_events/palettes/followers/solrock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 105 41 +97 81 33 +177 161 73 +225 9 3 +217 137 57 +65 73 89 +1 1 1 +33 41 49 +209 193 97 +145 121 57 +145 73 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spheal.pal b/graphics/object_events/palettes/followers/spheal.pal new file mode 100644 index 000000000..637a19fa1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spheal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 113 +217 201 161 +81 81 57 +105 137 185 +49 65 105 +1 1 1 +209 217 233 +137 169 225 +81 97 145 +121 113 81 +177 185 209 +233 233 249 +81 81 105 +193 177 137 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinda.pal b/graphics/object_events/palettes/followers/spinda.pal new file mode 100644 index 000000000..97d7f9ff1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinda.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 113 +81 73 57 +145 65 65 +1 1 1 +129 105 89 +209 105 105 +217 193 169 +121 49 49 +177 81 81 +193 169 145 +57 65 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spoink.pal b/graphics/object_events/palettes/followers/spoink.pal new file mode 100644 index 000000000..652308e48 --- /dev/null +++ b/graphics/object_events/palettes/followers/spoink.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 137 +145 49 97 +49 57 65 +97 105 105 +249 249 249 +105 25 65 +1 1 1 +185 73 129 +225 97 161 +73 81 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/surskit.pal b/graphics/object_events/palettes/followers/surskit.pal new file mode 100644 index 000000000..40ff84b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/surskit.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 33 +105 81 17 +97 145 185 +185 169 49 +41 73 97 +145 41 41 +233 233 249 +1 1 1 +33 41 57 +193 57 57 +225 209 73 +73 105 137 +121 177 225 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swablu.pal b/graphics/object_events/palettes/followers/swablu.pal new file mode 100644 index 000000000..0af595d67 --- /dev/null +++ b/graphics/object_events/palettes/followers/swablu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 145 +225 225 233 +89 145 177 +73 81 105 +113 177 209 +65 113 153 +1 1 1 +249 249 249 +169 177 193 +49 81 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swalot.pal b/graphics/object_events/palettes/followers/swalot.pal new file mode 100644 index 000000000..ed14e5df2 --- /dev/null +++ b/graphics/object_events/palettes/followers/swalot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 57 +137 105 161 +65 41 97 +233 185 65 +57 73 81 +161 129 193 +97 73 121 +161 25 25 +1 1 1 +217 105 105 +185 145 217 +121 89 145 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swampert.pal b/graphics/object_events/palettes/followers/swampert.pal new file mode 100644 index 000000000..351f6cc11 --- /dev/null +++ b/graphics/object_events/palettes/followers/swampert.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +89 121 161 +161 73 17 +129 185 241 +49 57 81 +1 1 1 +97 161 209 +49 73 113 +89 105 129 +249 193 129 +201 201 225 +161 161 193 +193 89 17 +49 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swellow.pal b/graphics/object_events/palettes/followers/swellow.pal new file mode 100644 index 000000000..4a366df34 --- /dev/null +++ b/graphics/object_events/palettes/followers/swellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +89 81 17 +105 137 193 +49 73 113 +209 209 233 +17 49 73 +225 209 73 +65 65 65 +217 81 89 +185 185 193 +1 1 1 +73 105 153 +177 65 81 +105 33 65 +233 233 249 diff --git a/graphics/object_events/palettes/followers/taillow.pal b/graphics/object_events/palettes/followers/taillow.pal new file mode 100644 index 000000000..c01cf137c --- /dev/null +++ b/graphics/object_events/palettes/followers/taillow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +105 81 17 +105 137 193 +49 73 113 +225 209 73 +193 73 89 +17 49 73 +233 233 249 +121 121 129 +1 1 1 +145 49 81 +73 105 153 +169 169 177 +65 65 65 +241 105 105 diff --git a/graphics/object_events/palettes/followers/torchic.pal b/graphics/object_events/palettes/followers/torchic.pal new file mode 100644 index 000000000..a9c540b8d --- /dev/null +++ b/graphics/object_events/palettes/followers/torchic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +233 233 249 +1 1 1 +121 81 17 +161 145 81 +233 169 17 +249 209 97 +209 97 1 +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/palettes/followers/torkoal.pal b/graphics/object_events/palettes/followers/torkoal.pal new file mode 100644 index 000000000..fab0f050a --- /dev/null +++ b/graphics/object_events/palettes/followers/torkoal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 113 65 +145 97 57 +137 33 49 +121 129 129 +97 41 41 +1 1 1 +209 137 81 +89 97 105 +209 57 81 +185 185 185 +49 57 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/trapinch.pal b/graphics/object_events/palettes/followers/trapinch.pal new file mode 100644 index 000000000..410b897fd --- /dev/null +++ b/graphics/object_events/palettes/followers/trapinch.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 113 +169 89 73 +201 121 81 +41 41 41 +249 249 249 +1 1 1 +105 105 105 +121 121 121 +113 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/treecko.pal b/graphics/object_events/palettes/followers/treecko.pal new file mode 100644 index 000000000..e5b4b2e4c --- /dev/null +++ b/graphics/object_events/palettes/followers/treecko.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 169 33 +49 73 25 +249 217 89 +105 25 25 +57 137 105 +65 105 41 +185 49 49 +49 89 57 +1 1 1 +201 217 121 +145 33 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tropius.pal b/graphics/object_events/palettes/followers/tropius.pal new file mode 100644 index 000000000..af8de33ba --- /dev/null +++ b/graphics/object_events/palettes/followers/tropius.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 9 +161 161 161 +209 169 25 +25 57 33 +129 185 97 +65 145 73 +41 105 57 +65 49 1 +233 233 249 +249 209 33 +161 121 81 +121 97 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vibrava.pal b/graphics/object_events/palettes/followers/vibrava.pal new file mode 100644 index 000000000..4402c3530 --- /dev/null +++ b/graphics/object_events/palettes/followers/vibrava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 97 +217 225 185 +41 105 25 +185 193 209 +121 185 113 +73 73 73 +1 1 1 +57 57 57 +249 249 249 +105 105 105 +81 89 57 +97 161 97 +161 177 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vigoroth.pal b/graphics/object_events/palettes/followers/vigoroth.pal new file mode 100644 index 000000000..446f1e8d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/vigoroth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 129 121 +65 57 73 +97 89 105 +217 209 217 +97 49 49 +1 1 1 +169 57 57 +209 89 89 +105 25 25 +177 169 177 +233 233 249 +121 81 73 +145 105 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/volbeat.pal b/graphics/object_events/palettes/followers/volbeat.pal new file mode 100644 index 000000000..f78520d3b --- /dev/null +++ b/graphics/object_events/palettes/followers/volbeat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 57 +65 65 73 +177 177 193 +225 185 65 +209 73 81 +121 33 49 +105 105 113 +1 1 1 +233 233 249 +137 137 153 +41 41 49 +225 113 121 +177 57 65 +225 209 89 +97 81 49 diff --git a/graphics/object_events/palettes/followers/wailmer.pal b/graphics/object_events/palettes/followers/wailmer.pal new file mode 100644 index 000000000..4104dc7f0 --- /dev/null +++ b/graphics/object_events/palettes/followers/wailmer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 97 +65 73 81 +193 185 121 +65 129 193 +41 97 137 +33 65 97 +185 201 217 +105 161 225 +137 121 73 +81 65 33 +217 233 249 +137 153 169 +49 105 161 +1 1 1 +97 113 121 diff --git a/graphics/object_events/palettes/followers/wailord.pal b/graphics/object_events/palettes/followers/wailord.pal new file mode 100644 index 000000000..8168289fe --- /dev/null +++ b/graphics/object_events/palettes/followers/wailord.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 201 217 +33 65 105 +65 129 193 +57 73 81 +137 161 177 +217 233 249 +41 105 153 +105 161 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/walrein.pal b/graphics/object_events/palettes/followers/walrein.pal new file mode 100644 index 000000000..1543eafcf --- /dev/null +++ b/graphics/object_events/palettes/followers/walrein.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +129 137 153 +177 185 209 +81 81 57 +1 1 1 +105 161 217 +209 217 233 +49 65 105 +249 217 89 +137 185 249 +81 129 177 +81 81 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/whiscash.pal b/graphics/object_events/palettes/followers/whiscash.pal new file mode 100644 index 000000000..70c9415af --- /dev/null +++ b/graphics/object_events/palettes/followers/whiscash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +65 129 185 +25 33 105 +233 233 249 +177 161 73 +97 161 217 +33 97 161 +97 81 33 +1 1 1 +49 65 137 +209 193 97 +177 177 193 +105 129 193 +73 97 161 +9 5 9 diff --git a/graphics/object_events/palettes/followers/whismur.pal b/graphics/object_events/palettes/followers/whismur.pal new file mode 100644 index 000000000..f353acb32 --- /dev/null +++ b/graphics/object_events/palettes/followers/whismur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +209 121 169 +81 57 9 +225 209 73 +1 1 1 +65 73 89 +97 41 73 +193 169 49 +233 161 201 +161 89 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wingull.pal b/graphics/object_events/palettes/followers/wingull.pal new file mode 100644 index 000000000..676a03740 --- /dev/null +++ b/graphics/object_events/palettes/followers/wingull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +137 137 153 +161 201 225 +105 81 17 +177 185 201 +81 81 89 +225 209 73 +105 161 217 +1 1 1 +65 105 145 +233 233 249 +81 145 185 +49 73 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wurmple.pal b/graphics/object_events/palettes/followers/wurmple.pal new file mode 100644 index 000000000..a6f96b9dc --- /dev/null +++ b/graphics/object_events/palettes/followers/wurmple.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 57 +121 97 25 +137 137 145 +1 1 1 +81 81 81 +129 33 57 +169 169 177 +241 105 105 +241 217 105 +249 209 185 +185 49 73 +177 145 129 +113 89 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wynaut.pal b/graphics/object_events/palettes/followers/wynaut.pal new file mode 100644 index 000000000..b73b089b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/wynaut.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 153 +25 65 81 +193 57 57 +137 209 225 +49 105 121 +41 41 49 +105 177 193 +33 81 97 +1 1 1 +233 233 249 +113 33 33 +97 97 121 +65 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zangoose.pal b/graphics/object_events/palettes/followers/zangoose.pal new file mode 100644 index 000000000..2736e0cb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/zangoose.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +161 49 97 +41 49 65 +209 209 209 +225 113 129 +1 1 1 +161 49 57 +121 33 33 +73 81 97 +241 113 185 +233 233 249 +153 161 177 +209 73 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zigzagoon.pal b/graphics/object_events/palettes/followers/zigzagoon.pal new file mode 100644 index 000000000..a2d068ced --- /dev/null +++ b/graphics/object_events/palettes/followers/zigzagoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +89 73 33 +169 185 209 +1 1 1 +41 33 25 +65 73 81 +121 129 145 +153 97 57 +233 233 249 +217 209 153 +73 49 25 +201 177 121 +121 73 41 +153 137 89 +65 49 41 diff --git a/graphics/object_events/pics/pokemon/followers/absol.png b/graphics/object_events/pics/pokemon/followers/absol.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3440992f61b359c865660db231cb71b4d52d9a GIT binary patch literal 1043 zcmV+u1nm2XP)Y)&K}lhOAtCAM`2YX_000000000000000$Y)_000009 za7bBm000XU000XU0RWnu7ytkRiAh93R9J=W)nYtu|zSHF`&Rsc^CVmNxmmi zq6P3A&+!~Gtn|45TbFOh-;a-a7k7i>{+0-?j(Zo@h2Lma|LKYML0E&yiQmd|{nF~>6)Qx@7jI@2T$(c6unPCTyt#jZf0%O}`0O|WU@Xe0W zdP3d%u-Z{-Ho5TskO_YSv$5~BbQ~;Cd=qr485uV&4+~VL)&EH z2~jAQtoslFZd>7-OqK(F9n3lZ?odG80GlypH7u)xs)H)QYKs&j7Q4!0}qvix(Vx088^Pk zAuhRa37Pc@MQp@HqU#<9I<8(u4JMA{@5#MAYgjbB;Zok^q!B8`q_q>9RV+bD$&@2-!z*^r;Bj=yT0E;yKNy|O?)ICKT-6P&-jB<76SqvD`*U(K zzwZdM!*>tD8K1r({hrY>;idnAuicxUzbuS~Z2i~eGE2$?x?AqaT-;B%^KVq z<8#fGE7T0p?V!A4pO_Rm&4qYqvTVY$J*TwSWGh+m)#`U>GR#C;J4U6;0xZ^<$Y;OF zuzNH`kx{?N5Cwb{DNB}0D-&dbdS5F-OHfg4OVK}Rp%iGL@hliA1$%{{ldQ~u{}-NW zAnr$|)C058+fT}PXnA>ND<ZfL9$ zY7JDrK_|mngTh@xJ!%D!r!QG*K^Fd;rZs}vu>Wo;lVF2od~y5#<6qT;v5j}s8two9 N002ovPDHLkV1l-o>x}>a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/aggron.png b/graphics/object_events/pics/pokemon/followers/aggron.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72691c938b0970a63c2cda271aa9021bd53707 GIT binary patch literal 1225 zcmV;)1UCDLP)K*0FD^MjQulWHGQh%FyLW4nY->pBLl7 zRa%L_Pp^j@#{L6Uhc|bxTA=bSvt%p?2&^QcKPxrs{2M1Uo zB&zh*-jomczQ4O4XBdw9TD3KIrpxo!E3SK42jK`zg zMDD0*Me%nD#HXJ{?poL__60L8FffVCFu%}rpIhUZHFU>Z_M~ZC@^19Q$twPo4%0TP zLeMz|ZfIEU@S#Bm_8Q!=`-QF17Awlp0eR)E;#b7!_S)==^agvr+=_CC4Xf5yUmsHv zK~K}|7At2jGV;wTdQAp$LMTjWk+)dUx+1-G`1<@t+d1Zb%LsgLp|G^Y z9U)AQuA(`C)2sYG9}($+*r5pqp8ugA-;#ZS+Qo|OH@{jC2n-C37Gt2}f7{o;a{~Po zCrpNVAT0~Jz90mT#hCcQwI3VDd^REj!~ds8iT&7lApGoo8NpGvpZln56fO&@7C7n5 zvgnS&D!(5=APsJL)I-Z5CZTaknf=&#ps~XcbA5E5ukcR4E^Nqx8n8jOF!ZG`FNzi> z%gVHTn`oe3Q$|HJ09(2<**gymAdVa+&n2ExCM^qUx?@u7%pEZbq?ip%8gG;*T>;J* z^&(T0XCEflwbk92VWPuKMv7-*5@zOROnwn41lj%fvn(6XJWw-2voN-7TIMq`Suz5I z$QCJDm~LvTCKX1;m;!vm<7(FfcWD$1=5hg{E-likz+A_#FQWm4az_i@ zAe5C>{rJ)pnW3MQ4a9=zL3}Acj)BYvpD^~W_`vy+6|M^AffEC7SBD5I(lxM@Rd%ph zx`}1VmWJ^qnt&s3V<0{2cEOLga)*CjLhhv~iLI)3+sLuhqGSmCOmT(cL)01rs2dMcdc|K;ohu^>jVxdC+`6=^_NCMRd5tAfR@ zDL~rbzFzTH9at93f4ZtbJZ}tc7?WmfizZb;ISJ1leUjzHdO`5udLD=iQtJ+=1!z^U noC6PLHTe8cTR+@>_0jkjX0)b~Yg`BU00000NkvXXu0mjf2dPCC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/altaria.png b/graphics/object_events/pics/pokemon/followers/altaria.png new file mode 100644 index 0000000000000000000000000000000000000000..cf750e2ccbe4fd64ba35049a920362d61e8d4a21 GIT binary patch literal 1180 zcmV;N1Y`S&P)Y==aeEs*TUSxF;*^>w zins)=H)OMylx(_mIaSII#=cawR&DoWq~Kb~rC9@&djeF9H#s4ysEYqN-n@B^W4B$g zh%$%v)t#B|_cQN@B>i9E-*NwfA4 z{gM#jS~xxrmjDkp)Jfh-DdZFus{$D!PpLeph>Ac@h#VtvJhkN}PdHE%wJPNg_gDJ$ zP@qO@OpA#`iBwb%KJJlR!JOMM5nq$z6RTmj21@~TwR=VY(_$h~BIQ-9+}jrdk!urC z!HrOWJ0AUUcx29-G|zVm$e1SnmPLsq?H-rogFl)FIuSXB8ODxZPs2jQvva>G8`lK3 zKUb8$)`UQ0#{!}RtB%WJiwY6IfQVWEESDS~O+zQrG2xp(KULLgMquaVCwn_DY3)Rz zO#+1xl}H8mhr0K*YjXop1Q$fqfhcMU$FHa3IhT`m<~7(WWgeE?kF&*-ZtQS&MMUET zmAE6rs!wV`=n^3qO(c>7KtgiN1R^l`i2BchU)R$8<<8rF|NMfFLuN)6L^Pw40t8^G z{XQ6ga!=;~damwu9RTw(cKjk_0zd=JZI|x3tNpbRye*Z^A=FTS4R-N661|vF$y4?V zk1hMhB_ak9=t$&1WZ1FesWY2{ICIkX<;j#O5(Orej1z$? z%tt{^M1tJ$eV5@Fwm1iS>StfvxARt={>BFI-OnHz$N`%HCt@W{F_M$5jUzFVED?*7 z@;$7+>@Ee|i~6B;c1QqRfJb!Ij0KU1H^5DWi=OY-I>0v-i47D83^DVq1y z#^XLxw`fG@Fpi}|L3AmOY0iBGD)uCXNF(;K%V@WETX2fqKRTxI-Pg zJBdS*;|}p+>AlU3t%I6F7mHJNRAgK?bpo?S3_>zyiUbXlX9u|O>@WM urM%JMe-W)%;2$~s7a{Yf@h(H-KmP`r4elYu@&bea0000If1Ep>FN2wacMCrF==UWsXK)Xz)XU>pYUcSUjtE)XdQ9!h<6j5Q+% zMUWlJIs`#jF5;l#Bo_k_6&%8#2QRyO@DRutB}S#JN)J7*ARacsQE#)SInrNN>wN!) z<;|NnO-s`a#$bnj4~0+LJkR^SO#?uG`qQ8O{ON=Mi1zYd4;u{`z5M?dC?!_EXK@$gKZJ zL72HO$+S?!uFyhuQ4o2)l5Z8XyMpe7q?!f*d48nnmS>>u!c?J3}a+?}M% zSmy2obTxOpIwGPARc1w>OB!%(2cp_ALYoqD1JyL~tws~eW}y&^ct=_!E|MKqR;)b{_=yIB!3E+4#}883T=_^4a-R|EX1u5PyW6kF z>FKJ~-FBcUnV`)~HV^r#8c@biI9E6{7_K&pWcXI`U> z&5%CsEnkh_Cs#Cge~vG;q$>Lg*jatRx*8*qH7>HZDa z7g$`ghdEf2=snkIPQov(XOZKdZOG3m)kIcbq`ad`m&0qN=ap(#;;smW1MQIV0M@YGJV00009 za7bBm000XU000XU0RWnu7ytkRVM#Kl`&`(K@^6EEhG#!7a<9$E)$5$niFyZ zvYbRjtkc=0NC?CjBw#EOth~JSy5+~7)#kv1sl2A)97HA^;nuX85F*2N9!6f5= zT&jfm++He+Qn=4+X^ccdFv*zi-Kd1i%|aRnZz-kuU@wh{aC`I;jPSYX$CZQHMJtWV z?@N@jfcIyk!OPu(Nru>|P0loOJ8|ny6?nYE9y6(JIw?FE)?PeqbkvdzvGn8N?(Y84 zTne9F_P7v^xY?I+c(wIh{CXMJBf&CZxB8(H(t0C}uRR#2bmIPOUoL-XeBBUjuY9jP_!z4hx2Bu45H`~I_0ODFvkv<+4(OD_7UQBP zS;p({UNgUW_%emb%(BUtwQ{-LulY(=k;sfNb6F1V&j<}nj4@&sNo?>+@r2o)Qp3uT zoHhAMClJkVqJx0NnC&dM@PB6eGHgrp`Z{B4LuPC^EO{ZgtI%g;5N1pU_0fid9 ziS^G@)HySUkfT?SU^EcW#o^M%P+JfTBc6UAB?wp$fh9$PV5r$r2eux59v;u%z5sdZ zj>8EC17Z8~BblYD76e1Ze!*7>91KPoAJKx!P&1c$p*X*4-!35YtrD!ayp?VSBU`|} zWJa~1G*m47>AR|=-ntTGt5OgQI}G6qAPsA;)y;l{$uN}xhypnl8fKakH^;1OBOz`!jG!i)^F=14FwFxq>% zIEHw1zP++BtHnTqy+A+sWy%tc?MG!;&Yi7!`ryv4Z@RY{nxkKGZ)x41`|@1MyYi}a*>NXErgwMTLZ{^}xy#YR znh;&UGVyxe;_WKY-n)Yv_NZRWOsmpavNl6#`@|=6ymw2=R8CJ>KJ(?q4--XKvu_V% zf4gnt?5SIxwr)D`VZv$YFxBmO>>CAKGt9Nu-~9V~-XEO{wraP+eJvhuS>crg6pT=@ zPHlW==&52j^J8($1NGe(Cp`*(dfW7G>Gos4)+-$BebxQ)&xhJxL#sU+>to)Be4TLg s$!)$Z#tUA?R0{rH{#7{H`+odW<}1%KbW?B6nGFhWPgg&ebxsLQ08OXOUjP6A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/azurill.png b/graphics/object_events/pics/pokemon/followers/azurill.png new file mode 100644 index 0000000000000000000000000000000000000000..b38801275ded72d29f5ad7c2e125b2416e79e51c GIT binary patch literal 534 zcmV+x0_pvUP)Kl(9?1Fc`&?E^%xQ3c9tyz}@J0e@23z zQg;vBvfb(-ijF-fl3Ne|Pn$DM^7X8qgIiyr@JqvcywH4vOqw)l(xgdIod2&sts!S- zG?3<^0o`#Gt9h4bzr>YQ==dl5G z90RF!N&^s|zv41OCZV#y92>kj!wvbKD~(Ufvk*zAR@*JSGt5m0G_%@Tow%f&)h#rM zq2~QUgN%u6m{eb zv~MvX8-^I07*qoM6N<$f(9JtD*ylh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bagon.png b/graphics/object_events/pics/pokemon/followers/bagon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4964436c66f14e4bd88db4aa7c1fe90d57070e GIT binary patch literal 557 zcmV+|0@D47P)K)G=$qKo|yKCm}!IoM~{!1@OY3@EvDk+5ydABE@ z_kP?BW-@8gq)GFCvg7{FKW2gE$-TvPcZ%$JQZu?hH9~uzn)pCHsfP&FWugrlM=ec} zRg#mLK{yp+JFvgA^vqj_ax(XjAn>!W4EpPU2nx1$?*#FV6%L{OTUE)#)T()!fiHVn3vaTcsuAI{ju>V$5=6E_fZ~9 z7E7`aI#|0u*^4z-;iAlRJGLwQ{eg5A`;>62=;o+-(Ph8qOjqG*t%EV@+Y{xx#9pC6;=>HD|nkSe>N`I9&&GiCWku v=UV%eYRhVExB!PPgjbB6ul;(%@juHaWXKWf0;d;C00000NkvXXu0mjfjbHSK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/baltoy.png b/graphics/object_events/pics/pokemon/followers/baltoy.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c84e7772fdab389d2d15fb6e28a947bf6b6f92 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m$!raO1+nn>!mL z105%JMlv!oK0G;dXP_of2_`7pJf{pO%30tMS1Q?jOiZVW~mJIZOitE zW*Zni^ZQ*DYHYl0_SCm8#2wa%&2JHyDf!&#%C@k+NZEqtU#FTMns4;M;>^^VtIUS0 znLjs2-|s0?c2ds<+E!67ZOPLD^$Yz|T3)CNxg^eZaWxV4^~rX$TXy>i5RSc>omRp00i_>zopr0AZ}b6951J literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/banette.png b/graphics/object_events/pics/pokemon/followers/banette.png new file mode 100644 index 0000000000000000000000000000000000000000..9b91d3ddd4dc37a24825ae172670b122d356a040 GIT binary patch literal 620 zcmV-y0+aoTP)k7R7i>K)G=!tF%$>zg9tQa&j;v`I%^d$+$|<| zAUJ)3LY7SKctoN{e4Rqck~NSaTWmOZ&Qy!KiRLctm+DE5C7o(rhtjEjlYghv|H-nY zB-z)#_O-A7sBrZc{?p64_;}c}cEC+A7+Uu%7uBHWY25Us9~ioOy)FQXx*9McH0FE> zncqFMobo2I;*0OLv2xwhEt z835-*+3umuijNMs?$s%_@de1n!Qc}1r3B7svK*)2I z%a|!sl6Yqu`~LL)x<{cO~<0`-A5dZ;qdi;SHA%KAr(u|3OE}80000cahbWf$r(Xu000000000000000|03Hk00009 za7bBm000XU000XU0RWnu7ytkPq)9|UR7i>Kl(B2VKorJr2pl0(N{H>)|G+^grAx%1 z#nsYMoC@J=>5^bIq}_^>lORQGrgoBZu~=K;{d3h=%-z#Vq0*(~+kWqR@B4^`Ae1Rn zrcD1r>JPlLhT0^RcUEtj&P!<%#YXIRtcH0Z3-U@wRa(iX@L<8c?W{(&B@_T&sdP`9 zRtld|I+C#ZPCL8>d8KMNezww>QYv9}PDciIlY%9~e5E@c(~g|cmA+36z~8<`=}T@l zSX)arD=reGJdW8bU$6%_=jmNzJL5Uk&9jTO7c*BFi{z%YPah~7lLFVh=25%NdW-?*;!$+v9bBtX<G?rHNdN!Klrd}DKorLhBhX+loE8-XBEB|};{=!J|sXHi2!; zAMlhuLrj4ER_pRKJBYqx*#TfMNDB#ZcJNPnO#CP&lAVWQLA`U?1u~AF?|gNV!uOcC z&(aya$Mr5JHfci|lILZWl^+hvo2Ymh6+yOxicV6vq{P_^mi}Fji5KdS543DEtMof6 z%l-SqV%M_FJ~|?ClYdm~MnL_-ah$q^!=e-EO>~43ONCU=JB%2}P-DmvLSb*^0)1l( zVn+|`Pzf1E z1BYDqA)<{5J4Z2S7$RRZx=MTqL_N@d$n*-k%*9TAq>ffgDM@Xlmm$sIICdn`)sgSxu_&})Xs{V6@sM3rvOB&GHGleq03NrOKd-h&e1IG~ z68h5Kl{c=61#(^Y9}(X|{>Qatf-%0~_GyIehV8v;;|VL2V@D>}-D(Y2cZHs#j&7!i zA?C;qXn16Q~)DLZ7!0Da7s%w$wtDN{$a zEulx3H5NJuV@DG~EZ6uz$r4lN1(B&EJhvw|i5(F^4CXig@%hvdnbSZLN6E~Tcy9B5 aAHM}M{P)FN2I$?1`ip+RAJZw~ok00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)W1u^Koke?PJy_+p@Fz`bEu$yhi(p6 zager34>Hu^puxd^!09qreEuM!2%4q;g#SX34w;->lp;nV$TN)&ZM=6K+@#;_GraG+ zgX2o2S!S8#|3o(a=4r9~eWPu$Vf6F`;23T92S!g#hp1t)_b}j%YO<{8(Se#icm`Xk ze~@s-&%s1v(Rty6zd112YWs(hvF#tm*)kg$=LvkjzovN0w%8nhH{-U6-bl(0F#awq zM>o5Qce5o#v%wg#O8`wk#-oJuw^3cOw#r#y%hB5o2_?V~&Xm^qK)rgux?JO3_7Eo) zj5%E2OS&Bj#n0m@Iv=Q2SB@5HyxrrtkB;7_?|b!ZUpwAbTIaV)w{EYzl(jV!aepn* z`=lo*4d5d7l-A#c2rj0)%TmggtM_>iDrucA;)dS&fS29L^LRU1p>*}e9+4DqEPhU0 zbUsj#lyqF)&spEjliqd!NjQW6c9hn6f`pQx!Pi9eddV0OOCbdnWIRe2035~ploppi z49-4=kc^I&s&^)bk1uF&srdK&c64d<+;wF1-!nJG|2SVSaXJ7@4|%Wv0000KkS@G%NX%PYGF)8`cQMsw1>^uuQ00009 za7bBm000XU000XU0RWnu7ytkRG)Y83R7i>K)xB%mKo|$$gY)1ai?Q=>gmcf56~}H8 zvUUkVA%o~5@M)VcZ&e*SIko_H z4*;x87aI?*`!(Kj+I+*Xr`}&kH{fr1&MXg1hrL)?#-F`kk2eq=Z_aE(CQN?bp1;H+}!5w;hE8b`-v98KQ5YiKtv--S~u9cK6v3k%lB5eLK?RLhD|yA9T+o9YA|iX-5GM) zM!4MGyCPt}Y*nI24y+iyqYcQ%P4_yAL+taPh{pAg&kLG%9R;$6+^fgIKQ;?=HT4>wn*I;X zK4tT&8#P=#HY6<$#M2?wG_k?uC7o!R9tQG;+;n9n3Ov$19iN=|o=(X`_qM}^h%JSh$k8ZJtz&W3{>O?%T8-6l@aU*C1`QH!1^K|@raTxtMSOKW(2BX+Gq3Z=5( z5-C&!SJ&5YDO$f?Dy<>0<_35m+7NeGLy3k3iiE&fLqwyDS~Y&3J-`F!N^HnWyrw{t gQ|W8x2L56F22EVORTprSjsO4v07*qoM6N<$f(He{yZ`_I literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/breloom.png b/graphics/object_events/pics/pokemon/followers/breloom.png new file mode 100644 index 0000000000000000000000000000000000000000..a133c90b616b076699bd40813aba6978ffb57ea6 GIT binary patch literal 659 zcmV;E0&M+>P)K)3Iw4Q5*;GH|3@fZo0A1LAxCO2Tnh% zgIxZFLH3w4?4Un{9w#^BV61 z+~u4N16V5zFE~r(+YZ3$gL)}fPq86fKCBdY(Uru&C-nB`8 z*h?8VPLhjM7#?TbZ|)u+kIa;_XjuFG153=e;T@WeXdR3gW5XYBUK};wrksU$*y=SW zg0nQI;(2H2aL!&yGVv0Rw}Ez8k3XA^ah88Ly78|$UXl^-ST?58=3IO7RYtW|k25~e z_RH^Ghj;8ZEZ^pAbXWFn{jwa+xOBt!x9AO?`ThpI;Y!omi#QuwzW?ze|HX7;o=Ul0 z&sph8d6SeY_Q192{&?WV`F=O%4_mP t%vkJ?4X=a_#L$L@TdZm4=e7H1`3(ShrnOUQO&|aO002ovPDHLkV1j6YE&Bif literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/cacnea.png b/graphics/object_events/pics/pokemon/followers/cacnea.png new file mode 100644 index 0000000000000000000000000000000000000000..492c5dac8f40c75624bcc1d81266600f7260bd26 GIT binary patch literal 606 zcmV-k0-^nhP)KlQB<&Kpe#x*l3uv7)@AMP z;U-rgaUz1zG`2~wjBRu{oguqb%=r86OKg{!4xtkg_3U67J7K~{QLB(u?>v4TW??e3 zO&xfiH$Y2SeWi?xS#<$NO`$+yw&E@D`d|dh*nzq?0IOBV4uJRKW@jQZ73p4D;P>?Zre@(*fOC%O3B+$ZbooHDgV07*qoM6N<$f^?z|*Z=?k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/cacturne.png b/graphics/object_events/pics/pokemon/followers/cacturne.png new file mode 100644 index 0000000000000000000000000000000000000000..29d1250e13b43722fafc862cad217ba9993948ef GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*y!2mxbkGBrlTe! zBV*%AN6SRZpEn}|0|PTxCIVHVfm{23oCOMT7I;J!Gca%qgD@k*tT_@442+vRT^vI^ zI^SMBnAc<=!Tv$*Ew_oHignb-zQv`t*LoCMYu~-=G3(7f_ZxBzXJ&lZrfs$4ugGSP zvdBMv|9)Iv&+6HIVQpUN>i@wN6AF9uZpF=1W9~_>bIyoX;bD`=pJLBg5X^0PBtP1| zb({9BTy}};Gp9SSlLSnB*SFWAhHS3b+!nc3R%N%4+yqHWUSA{0`;t zV}7`9gW>f3=YpT=O3eD;IZ;ctl$r0@+pellkL%Q@eEa55m%$_p7U$BU~SdrcQS0d7kTh=v&y`E@QK_#g(@OHeb1Qve5k7gO0|t z8K)NQER%ZXebjB^^v#{W=SNsurrmvQ9r4q@;nPx)_2+E4WzTQ@@_FjxGv_-$^ea!{ zD0pz>%kQMLp00009 za7bBm000XU000XU0RWnu7ytkRK}keGR7i>Kl|O6SKp4hv=pZl{l%>I)a+F$F&^gc! zCCy+%vlQ|bf}s$I7ah_ft0p>2j)zjHO`V~kP;*%vw-8aSfhNQmng;3=t7Hm>5PycA zY@H-4l09@P^s!{?r$5j0>Xm#4z<>QK;^y#Q%TQp%v!@zm`(eK2 z3>vE<3t&7sP9J)PwBPPDPJ0-tcNu^iTwdb&C2TT7##deo#2RikYNp7JGgesuX@A{+ zuy$bWdI3}H8Z60tW=j-3!yCq4i_9E``4z!PVBo!p>a=U|V=1%d)ck$TNtt z2@kZgR_=+D9(geqG`l0uH%#bnH zgknER21(X!B?+4y1ob^pfg1QDJD~890huAC@ubAPm z_zJuG0z=6NGu<}yP+;X*O4oIhuByitLdbT%e8Wz9bHfj~-rNLs5a=2rd%6Hi3Ibi> zVbL58gG=h$*iP5C>w#f-j^pS|5e^&|un{U?W2yjG_3KSAqAPP4(X-Pdb_wTCJ>i;y tK-ch20ii%|SJ-BJc66Rj)Vu;_=?^M(N}disXx{(;002ovPDHLkV1nrxyF&l~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/carvanha.png b/graphics/object_events/pics/pokemon/followers/carvanha.png new file mode 100644 index 0000000000000000000000000000000000000000..ceba6596d6a9108f5513bc78538d8d8593a0442d GIT binary patch literal 768 zcmV+b1ONPqP)FN2YvAHohLCHBG`B5qP*&zS`00000zTbFg00009 za7bBm000XU000XU0RWnu7ytkQc1c7*R7i>K)IE>WFc=4L3)NXzFjCr~+~SgvrB*xK z)I%*Gx+G~F;8IJ;N$G-aC1Gy~Pbze}Q!+)jaRXzAlmYTxNSil1#XS}lR7)9t zar}Rtyf^?H#$g=B|1$=APr&?;`OZNb0f0JZ& zm)ZXzcAR-Q;0mC`WGhu_V9rhBoi4M#ZV7=~HzK~ModyaW)@(j88I~Ecd6Vi@VCMTH zE+68f345sRai8?NGMj9!60Hi%JZ@I)x)7gF*qH`qdJ&Mh4D1j>3Gd#76owk3lwhX_ zEd0K_+*q5P{=_EOUTq85vwNA9vS5ewZp8w(RRP>1q>G0|VD6KaTV8&orv0Qn9%Zl9 zNN8rZ$_x0IOyjOrte`&b{hD;OY(K%#Ca((2{k*yZK-(XW$#L(qn&m++H_AU$8e=>~ zXIh-kpU2pHWMVDZ&QD)=PP_DR8JPQ-=T;ToUM!xzSYDJJ=FWF~dWYBA6*9x(4iUXJ zP>4fgyP2IgUq4+U-zowN&#HU?7hk@8UtCITG<7Syi6h-c`8!gaFbM-Ydq*%_epnjG z+AbDv%vKIx0Gy74=%p^P?E)*hi37d-%77InQBc4L9VhgXqCn+~j{18$)q@y29OWCl(v{$v*(4DLn8U y|4jiH?xE5YCU?9&cZWgk5sE+jS~olXm*Y2NCiJz(&hha80000tpYZX`r{2yiuF)@f*Kk~~wIVF?<|%Q5n7ZV{cL|x;ct6Wm3xaeUs!(V?!pZ~FV&wmzs)&$rU|2?1}F?Y MUHx3vIVCg!0LJjV)&Kwi literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/castform.png b/graphics/object_events/pics/pokemon/followers/castform.png new file mode 100644 index 0000000000000000000000000000000000000000..33fbe7e48ff0859c6073f58d7a4483006e77fe80 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x1-O@!-LWj*fwh zjEpZ|{!C0PT)1!}P#!Cgp2znUD8X6a5n0T@z%2~Ij105pNH8!ka(cQrhIn+oJ-0FM zkbwYO!jg!)bCquNFIuxqWYeM>m5d!nV}cU$x}RLnf2H%S)B4i1m7naNey+EyHu3TV zf}Qb4p5^~Ndy`9+%XZIx)8BJ>E+l?6+2g*M>3m%D2jR!9;rbDWe2!kr%E-U4rqOIu z{e_1CTh0kPwMtFI`2zxb)}@XbB@CYlw=l%KGB{cVYbzS^XcYx5R~Cx36xI=MS#jqe_w g>HwpozvZ8EE1mS?+P>4_Ehq>*UHx3vIVCg!0MN;*n*aa+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chimecho.png b/graphics/object_events/pics/pokemon/followers/chimecho.png new file mode 100644 index 0000000000000000000000000000000000000000..336a5656d85458eed0ffa64ff822997281af7e49 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*tm0|<-(N*4_aC> zGBQ>+&b)Z>Wn^Myp`zl?n~|NFiZ5UOytptBs2l>C);xF&WN{XFL>4nJa0`PlBg3pY z5)2HCLY^*;As(H{2@Wfvkxt$q2Rb`UE@a+WQyM<;wb-j`E!eE<&;ewkx znjkxXRaUEN~%`A~+_W~Ql85lAy)n0uW*xL;XJWp3Ymvv4FO#sV5 Bs@wno literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/clamperl.png b/graphics/object_events/pics/pokemon/followers/clamperl.png new file mode 100644 index 0000000000000000000000000000000000000000..a5addc63ea08507a8247ed0f8f61e4b7878972ff GIT binary patch literal 566 zcmV-60?GY}P)Kls`+uKp2NZZ|im`(zUsYE>h|pr39R; zi{O$%=qfGT;1EcP+|sF2KY$3)O`%}h&Cy8yi-Ic5ag}g_wud*6r$|&V}*4j8$d7EF=MI4T}mP zPl?&J^Ld>ME%A|o&0P5vBq4aC!N_@42*0?tm9-ZQxKI~uC5w4+zbpg}rPOICguL$7 zTxK;@!a9O-1Bdpyf)G&7RN%Of4+TP)T`(6i;q|mGM7qd4^vu7ar%INDT1s~z^yXtp zU&e)Lzs|gP13>%!b+@79xRA4JKxoXy08GD;MZ)|{zanzDhWmH@8=~Zti#lyXn5&_8 z+AtSgmreg-Ul7V1X7Bdlevnf#z|gjI;Q<9Vf=n{JRPdJiJ?w} zL-si18RJRiWFmZqGKV+p1iis1uVk&9CuFzyJs(WQg^y+P6^^>P!J~NaE9^mC#UPlr zo`jmr(ISBvvW_uAO2)x+Y$7s8A;n*_{O8^DC;sDn0(7*Weg%>Jp#T5?07*qoM6N<$ Ef-*S=W&i*H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/claydol.png b/graphics/object_events/pics/pokemon/followers/claydol.png new file mode 100644 index 0000000000000000000000000000000000000000..45cb9b9f023554a5e38680f5b01940ac501cc6b3 GIT binary patch literal 628 zcmV-)0*n2LP)~jiFsMUNqO11S?THdSy4fWDM7ip!Rd){0RaJVSxEo@00000@ADTN00009 za7bBm000XU000XU0RWnu7ytkP>PbXFR7i>K)Uj*SP#g#FO4bZQQ7SmK2{lsBWF^)E6N0SjW^g zRINpHn^j6|9+FVHGc(kzwazJxNjV=mJ4%n~`;@4eq!)BME!Si7Y^GWM87kJk=lUkM zBa2KyoFvmw#rh}~f>BXoi=EFpaRTY&bz8;elWq!e(s^9GAGWw)54w{M9Qkb(oBkPe zx|5+N7a)rZ=C9EkzdHDJT5dT5 zEC4Gk=V9}e@SxXwXEAvr&K-xBeY3IFDEn6KSbpv9?z*ehdB`HHak5eFgxq?0!g}ld zS}!bn-A!G$GE8?FRGpmxfVzP}SZyJyJ3G_E1sv73i~V^1ffdJo O0000>G}E5VaaI`000000000000000A{dc%00009 za7bBm000XU000XU0RWnu7ytkP&`Cr=R7i>KkU?wWKp2LDq}~I%(4K;u?v#3y{(woG z#@0Pqv=&b-NP3s)er5ka&kO#6g%sI2?`{8FClhtP`6}5G>CN}#Gp~8xNj&e6Lk>CQ z!)flx|INew9-I*wWu0_%%jvFT*o;w4CO-_S$SeKhY&~gR{7xD9; zmDlCQgZp-r%>!yQ%j@#_?^%etcU)wsba*{(=%09;a{0hasTr@}iUFSpDVGl%t3M~a zf-47J$-wK5ftJc0A?1pJ`23fW$VItGBA$Y_L;}Of_8?)}w+d}WDl23Dw61^=`IQcp;byIH_+g};fA z3fyn>^-99ai?l*z__-f$`ZM?e&&&=OK3n%p4s&sDbxf!MX3vY3g56CcB$Ne<<(i}3 zfSodSWqZTPMad#s<`X0o*TV#}z7g+sCO2IxTz)S&6x&{m|NR|rgnH00U-w5@|MC{; zj^-B=%tkRulb&aVjb3^=cKVp~vF-hI{taK)&(g8;0y>Qz_c=Zgo)+RhirhZx*uEdR oHbD=JkcJLc^zL7G9eifq03tfj%7Nzl*#H0l07*qoM6N<$f&!`$ZvX%Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/corphish.png b/graphics/object_events/pics/pokemon/followers/corphish.png new file mode 100644 index 0000000000000000000000000000000000000000..00c485b72de420b9d940d09cc3d43596a2cb7cc2 GIT binary patch literal 889 zcmV-<1BU#GP)Kl|N70Kp2OwEUDCEL=1H30-+)cQoc!R zMJ1jX0%JsLndEL_2pw3e5}~6oA_Qcrl$yvMERb=MyARd(J)iAM#h;<=mUnTU+^n7AqGz34sb=FsuM({VmXm#Ycensj1U4drdK$R3elbp9QWD?F)%rE+jMr1pX&`}pA zY{3L0gg|<;)f|v+2RBO{$E717A|up+$T)x}c6k!n0mxBmZGj%{fWQNp5n>=RZR{Lj zL)CE?g%IaPh!?|+cPMOJggh;8AoA3;ZYW)AMT=rMIyXWL%=lNUh7IFkbs2;wZ!;kV zYF=Kw#dS_c7tN_#`hZ<=W8Z|k-QZRI$ML2SVxZ>A?Y3^CYTdgM;=<2_7^r!_rXPx_ zSeg+6GtsvLh}!skFTUUVMhJnLSuO8c@Ep;1j8F$6?`4CNZ}k}=@R-d85c;LwKdu)- zwV~O15}4yS&AkE_G@E07|KWZ{2>h^P9hnXYm)2HSq9?h+0^bjoBwIkJ!n;`Uy z_Y|17Qr~`W2@ij^wnIBWbJ4;ibDG>Q13560+4!2b!ducy8fFmKQ(jUq_J?fT`QVG)o7z_lU}gp*E3u_8cn;3N;MIjNr{rSKtf zxqIYVJ0MAL*E@)1xq}!u9a_Sn=SA!ZP8#b+PU04~h&ua;3#nFsjHyzj{2hnSz|s=J zQxjR^6gdx&e4!Rm>k$d=U}`yA3m+>xP$^|k(43FsRoVYCdaaK;|3m!-sM5b-YdCKy P00000NkvXXu0mjfFmQvd literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/cradily.png b/graphics/object_events/pics/pokemon/followers/cradily.png new file mode 100644 index 0000000000000000000000000000000000000000..e53d6af1c5ac4884544cc13360143cb5d559de99 GIT binary patch literal 1085 zcmV-D1j74?P)KmQQQrMjVF6J`_Q9=onK%szS1KVM%>! zpchlndde=ry(~3**c^HiGVv`71=EAF2QkJv2aEW!U=Yly6dD|)gXDF*@_Hx~dJPo% zMLN=Gq>;OFmO^hGZ17{vypJ`1elh_6w-0J+$lw3=`n_#E_p$D;_3ra!&M(%1p9=MZi02Z805rq3srAe>tli9u_uL`CYCxp!Q zXf^=*nNZ9zy_sUXzRDxY3<=R+o3Z#cph;N!)EP;;P+2D5b*(%g6J}R&ZDaO&cJK+# zdI;vg`jQ!5<%0br?5We21P)5RL-G5CD|bBqwby$wp7WJdu;5f!OZpPc4>aDrp7QIB z9|@yk51tGO@m{V>i?a}N-WbN;JFiOQf}bIvLU`ii#o70vg(dV6~wX@lZm0LA^G$J$4(C3u<$ z*MeDbT0~kae~73)=S)aXpSR&U(()T_u=%G`SkzNiiP^k|N+GZkVa`c=`&025P|jIG z)M5)fn*NzzUO?DV+~1@D7^ru5A;1zR3tUv=dh4%m76;({tRBKfI0~f8lmg{yAqjQ| zuyz=I_lMS~VwHyVP0*49LCY^aadro=S!g1pYt_uEQ*m%p?iQ8eLjq{Rw3@*e-3V$2 z5+hpTdjeDh^(I7N6$8M^`(t=e$!tL9xExSsz17qg%}NG!7Kfx&-DWo6_s`1#C1wX< z*_HoGZF3!IEj_GeHh|J{K$-vf$8n3(VP)8R_Zysj0d7*;!dB36VJ=`DtNUQ9(J8$pHZY2aQfn00009 za7bBm000XU000XU0RWnu7ytkRHAzH4R7i>KmOp3|K@`TfN^uaDYYxsPkVeoVMX(YC zVT!mH*&=L{5Y#51O?sPvt<`}DXOk3*$ZTYryJlbDnky_8lI9vAY$3L?kvkJ-62>=w z?sjg?CW2^{*ZpSZeczk6?{?2|ZsI2XTRgpn|5jjb_iDa2t`qp@2G81gCA+g*zwxyK zXt(u(Ziy;BDG8QYB{bXH;tGDZpVEa2o-5T>W*Kg$)2=U6volK5L0-Yn-_jYeGV5D4 zo1MIx-PJTr{mXf-xy2Lv0wvZ7ezU&oS947YdYAKDr?b$qiYc>BAV2FPuZo4krJ$8% zSdGh8y*?sVF=bW}EuNfwzq@xiyJ>Cl9#StZch!au!J7#P-q=jkCQ z_)v|YGE^+m6c3070BIGuWmXAnCnf&NqC&$;uok8v?@}5XL2ZZ(qx}KSOYO%Z0Q8IY zmRKdQ4=GupMTMHRU=2vbDIs2H1krFLIpSd}k;h*}0FhPiEIUq^dYm4RB(f@0%vJ|@ zQ#S(22!^KxrJ-gPL5%yKPNm?q>1CD)UEbSh1)v3$q2f_jRT!~EwWMVP(a>v@Mt;ct=$j1royh~h=Ux}<0q7P0EuS=(a>jNFdr~uRh#D@~>?|#1EO_wk-a1o) z(onO=mgN4ta0E~q@xB%u1{rYVe(qk#mJlKcO(1T7?z>#D*_jVS+*?}?`mq*7L&M`u z(^g>E5(eTz8}dXl*Q0noARbOd61Q*dO&5HN9VcVJgWd-3Ye6*BoQNZR00m<~8J$c9 zql#69ZaN_Tn8ulSez2co5gYFxUXd~BA+ZMoUjtaw~+OPRNrmk7Ar2`jjY$p3`-qhXN!CW h|0qQ1ze1U-;};O>yb~%NZIu83002ovPDHLkV1mtIvSFN3D(Scz}i2wiq0000000000000001)Odo00009 za7bBm000XU000XU0RWnu7ytkQZ%IT!R7i>K)jf}!Fc=4LOFkKixeDs)h|C-m+OnMz zL2m__fr*3QG?`MBChEti6y@YC>M5%3K4pOzFa(n2I#jx62|w)T|2Quw0KC;({XZoi zF7XxW*clMMay~T2nn>N(2KSy9z2YKK#jOF@6NpaN){tQkwZl3t8lb0YLO{Vfz=%(Q zdZP6jAkq%(x@<80RzS|$F)rUSigDEIatTiW{V4Q2nr4Hp{*F zhxx*f%l#rwxD-&>%x|c~>a~8_TR*CmIj;v4PKa+3p9&^M<>JJKMS-DOKybynfph{y z!w1{zZU!8m$VbKWkB0#t(!lxUkVx>|zBVMb{>;`l3SZ^E z69&kT1S8_h!(OtVEEzEL$2Mb+bs%>&j~^*qH3vMiuFcu~F4DDr8}{sxIorCsv@5&; z0LO@KC>#$ONX}xEztlzwbsK+kx3f_bSNNR+#L^@MEr2GNN{Zk-5JjyHDhY{_12S>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkRHc3Q5R7i>K);(+6Ko|$`rx_|ZNI_&M2-^_4bn4J0 zu4z6*hjSn_Lx!A+L7)z`z@U7PPA5Vmdf^Q1oFx=86c2$A2?Q5nIs^pvXXu^Ida)wA zl+vlaNx%E!=T5rQ$pHV`zth}5F=ESM-Le^bzwrJVqnp8U{hC$#fZg@()0IXyc&T9B z*@SLzyx#rQ{)CrDuRHqz#(V4CAFMLMm{beaEmwrX5aYfJj5XQtT@p8PS~zK z&${J^`{5DB*k*XY(Zu#5S#ac$L6c=cKUp4N$p9Q59KD@j2OrR86Neo2iA|g)qX{M= zDfeaFs>?helgXv?##&+F5Yi`(lQbEfUy^uOu29{ojh`M)&M)i^U12UFLWmHJK5Jdt z5h?_DSn}D;xm3)04=Z=dmgnCq!Kra#*fv-SEV;ApHFL{8dPi*~tp# z&I)F^AjFCDoE292*+nlpY}0apnjv7Og>Hi{;{=&jKxM%W)rPSunB{&%#3;{Asttk4 zH@FX*07krCIKCAq0P~b2hfLM;#^y+^}Zip0Z-f z3s<%kz)Ymm?Q|yY6attJwWH%ZSx|P(+dIDSb~}q4O?l=Z1)0MOE)vxGUKG@xR2~vU z;Sa`6?oY4ufQF;ZZBl%bbjdx&y(g%R7jwiq;f-{H`6)%^9b|@Lm194KVe+m!h+IQ>SFq_N zxl!!r`L5F|^3p1o&)iOVbxCXXg*=y2`Ett_OkE?9YIfgPuEzC z2Guiu+2dH>YsI`c7#D3uf#0pM?^54gWh2RM8!CSAzeOHwAzfon+FfO|{QY|1tgo`I ie&6-!KK$GD7u!$wbyi@K5&E?N0000>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ+et)0R7i>KmOpFUFc`*7mIDm|)8XKV3(eB4b6ff~ zbX}SuLwuz)kajqMK>Z+{bd;W{f)Bdi5=t`^w~!?QgAOtU4$hyU?<>pyRJ%i#`Mkkcg*)S92Hv>#y zJZ+`>jFrM1J(7c**uVk)jD~q*<};qDG*ohk=g3pu%Ou0GsndPNsmnQimC@<^$1vlf zekSWnO5;|5$58vQAj`f_=f4ISTN3y4`N1Wfo|?KRK0_^jinrN1I}#UifJ?)EKF^{! zHmv}Uq0*hW%GMV~?Bo!~Cp13o=ktr_;MWT97@B5`_;j#-kcx7)k7KCQe%|}`(X7 z>Q7RAlZ_igpJBm-ZEhYFnwJaGE9H3Mc%qGojLvJ_ajBC-Q4|GlHtaDhkO?b_TPE!S zVp^P+I&=&AR_S5Q_DF=8jY=Cs?lBthAh>avh82D(c496aC1IJ{C zcOb$_Uqq-wK&6LxmrH0!yXD}o+5tiGLGDMInTNp&=Ly>ej>#>abX7nAaE>F;3*3NZ z9HQYkZGUd#kaxc70-|86GDx>L!XCF v!%jz(Bpog%;X!#vhGY1DBL4i_^6%<5E!w$Fy}k|t00000NkvXXu0mjf^{0!* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_normal.png b/graphics/object_events/pics/pokemon/followers/deoxys_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..000d6ec5027b314ccda4155b783ccfbd6af8c5e0 GIT binary patch literal 897 zcmV-{1AhF8P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_en%SR7i>K)Ip2WKoke?!OOxs6oRlqa2NI@h#$ZO zzs6J$_t3*mBoe3xGZ2Uu!Ot;4oZz@AtXF&4gPwX>!2|+X+LKUdKZ7$#)6UE$^`f_Z z^zuuZ|Gdn+7NNVktAAAobie6%zyF&57SnyE`1!csG_qE=EGxu#IPUksImRC9Gn@~Z z9%frT@C##H^gEV38~6DW#=f3rTb7U=VW0IGxa3fvZi7Uizkp?VMVzU?;DzY6;JFIS z1?%+1cZ|udxm#ARbawu7h69XQmw}L6E=Y3HytwTzGd$D-Z6lO9M`Skp5jaPz%W&<~ zf!9unIt-VyVG-^EZ6h`F#b`FY@(S8*8dn4lgQ}f<(=fft!*DkNw(CkiKAhf9S)U;z zgaq0l>xSul9(&r*TCQ7;K0lkDim15 zN<0y_KMcz!lgbFRtrqYm&dG7w9z7+dffN;ui`*NV4w^H%x2(#N?b2+^xh7S)I9XPC zGbIPa&vc_qo@Z6W>lHPbDiZOs{RTsZRbU~~Hc&InH-YBV z*hVrb8zW=iEJJ|~WLI^d=C+JSJ1k57bEd4{5UEeEGb_-xdO{xXJ_~iF*XF(3{;%~1 XwVfML`xDa%00000NkvXXu0mjfWdfXl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_speed.png b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..01817fbe85f58bd1e5a6a37209e07716843346fb GIT binary patch literal 898 zcmV-|1AY97P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_(?=TR7i>K*1>AqFc=4LuR8>E2$VuMOq$E?gUyF! zeh;ru+N%SGLQnB1w3plhdx4!4%#uuv4co4{gt8rqD3q}n%skT5ptO00>62v1abtI^ z^fnO+KdJiuvMnnyjQ{O#+x!mSx7E+8eeVU_6;L;;eP;{zaHStSAZk{)c3}AaLAhB& z>0VOlYD$vns+t&0^bChXD)-SNtu#&Mdg_DSPgr=5FXMe_+;7j!aB&2mG*5}#0W7L!~+ z!F<9^(3ot5SLIHjt@g>({+Z@pnxc7&KE9Z|j&P}mP%mEXwbS<(>7m+Tw+xMtU;R%} zLb3`-T91dUAjypji-P9OMLbN^KTGS?u=#X@q-he&Jkg8#!r3I^e(!}T={C;fcqqIs z#-E2VSuFJRasSSpB#4@%OGwZoGqEqmXVNa8gxrL5d+=$9*MHzi%eR#THl+()5qy57 z1IFxN99hp=*ci@W20B;ffdjU_6ZPX0tLwK*-*iLBb68?-Gju zX%S%99d@=~s{n4a9I!cR4e|lfS->zIwZd2jWX=NM#j5Lj#C<)_1)#SvPc~T$hVPkZnXd0Q^Wl6Sye0wg25BpkOp#>S7!D9$r4$Zu=qI YA7AGx4^3@50RR9107*qoM6N<$f;Eq$>i_@% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dusclops.png b/graphics/object_events/pics/pokemon/followers/dusclops.png new file mode 100644 index 0000000000000000000000000000000000000000..472bffdaf7b8db85414f69c200f71f22618f497d GIT binary patch literal 915 zcmV;E18n?>P)n+aH79z500009 za7bBm000XU000XU0RWnu7ytkR2}wjjR7i>KmAz}*Kp2MwhQmt+V^A`<84k}T#b7V) z5`>o$?P(Xe39k#a4WSS%8ImRS&~(d?jvYI6=vpX*fU{`mhtW`af(D}@p!aX+d%BZs ztCj+V4u#yL=T7%~?n@`bxG(qR|0$(HE^ejb+`&ev?G$mpx%_&Tn}@|rJzS@V?`ST$ z6QhU?gIymMbEZdz+egd(ER(Y1IYm71me(Z1O>fzsWyA2j$(Ld_3wUkd4HsLpOf$A% zzx(&R-vxAxd^U`s#p^pxK99CJw{w}@)Dis!eTJp-8|PD}fH~*&TxJb!N8y4X!&EcH zPoHOgJ_i)o$mLNTMG(#XS*8xrudziHyYb&p!gAcd0Mt7J|m8)tE#4;8hECI~4M>Lq!OsL=j|n*krWb79;RQi!Q`2ObW`GImYg#c2o5-DAhiPo^Sf#k2?nKk9#v3> p#ed#n_^P@)+F7>!kBWa-egpmt_h;_i^!We)002ovPDHLkV1imhqi6sC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/duskull.png b/graphics/object_events/pics/pokemon/followers/duskull.png new file mode 100644 index 0000000000000000000000000000000000000000..faeed6a2041b9f132d0c5b061369decd89599b9b GIT binary patch literal 568 zcmV-80>}M{P)%tcq00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)iF=PKoke?YNuOeQCAm6;>BQ#U&6)2 zui(mXG`QeIaA{H!yl{((i4->n5?=>Q2U58YWob=&ee@bkoD6UKweQ~l+Ca}RcD1Wr z?P}{H99`h<-v)>U3Y66wDCBd2o6)o_0&s(RpRCYg5p2vi1Y1qKg=HwJLz})vln~n=xm6P zT2#8Fw*5z7z5H*2oerE{O|I2|qD^NEZN}TBjvsc!9G*QccCx@b8cul4)0zRiGuAHk zdF^<_ZkO3W?4)RiPaoP1olVA=wNwKX*SRfNcb+w4r|;x+;NMw#Ta3!4(#c%_&iYaxQn~Vua7H&PdJ?Tf9o68S_EKmK-I?p0000S-CMu@o8y!VX0}EDM48wVM!tJ*=Yd*0RR91`rn;t00009 za7bBm000XU000XU0RWnu7ytkQ-bqA3R7i>Kl|O6SKp4h_p;N+v_eL0Jawr{oQy};| zWXzIL1qZSk+@P_9Z0)9|WVFH=L?@N%f@sqr1d>4Z#>jDSk>tLgp{M&RsUgjf(4o1( z`0mmDp67jK-&xkvcpCrBfX6n-lgH(wQOy87upuIGZ6Ut>K`|DKj-vU!^^0VoZjjw+ zfG(4EYcjsCzSvAM5>#JvROwkg5o(Tc_tL&yXWiAhfF8rwjLfJZUL>e$SV@E+S-i4w zcj<=(Ac0Ef^VsOT4~>^g5RG~!GOK8T1lo`RRU!clw{Ip4(7XXB7C^1@dARk7>j~w$ zmHuj`Db%SEIc_AY1ZBMGQC;i3QNgiMw=)SI_N%Xd?smm_a6iOz)Fk zn)UpFG{D&V(APj!kuu~PL}CeqD6q%g!Pq9T0uHxv*YUMZ2>DWcaD5rCefRbW8A$_G zk$LG1C=yGc1^sX9-n;b^H<3LgWSGu~&Ita11cdZOMug98uk-nh`dO-qM%usvS0pyT zxxKOZJSziPVhLn=pTq!>Kj1oIJH5_62_#KbWd3+4@Jz`>mBS+kcnwDVu>lyI{QA&*qYFvU4L}XI-a@_ zR7Iu32tXtTwUpDJ$0xb25rB0oB1T7fjJs4HHjNkVj`zN$rm~{)6(kdzrsZ)824DfD zQ&ykZfv%U^rNa!(-Hs7uMJ=oJKwcy+?_h^p`80%U{7UB+E0q~a$~Rc8BK`oRaObt% ySZ?1X*G9D>G1{$L9xRP&;=ej14}B;9!|@xJmLpNQ;M8LP0000K)Uj{cKokb>w^(vUOBh||4lN@(H6f!V zx3MzWB4^QV2=YX-b|BfV!gd}T5<{CY3yS<#_Mi>iIX)99iqwH``<>74!!|a+A%`4t z$g6X-$8XNBMYI3=f}`nOqu&}w4Rjg|ju6n~eM!F2Jc;dwqdb?$*`g{fti(0Rjx~lWB2R8S|?OD;%3JiZ=d7khS_P`glR+()Ea%poqX3O6U zw*~1$x%KSSJ3$@O=7#t4Cf;{CaOnr=NK50ANz&C;2uSLMjt{Q!X3~0T*B_~i z)J|8>p4i`kFQXT_FE{8*>dWH}%wxH%p737z1JqU4tyyuFh5!Hn07*qoM6N<$f~o8j A8vpCtHc0RgG8!Eqrmxj|{Mso`mHiHRvexO^d400009 za7bBm000XU000XU0RWnu7ytkS0ZBwbR7i>K)<1~bRvZWLhq+KR$|cku098ZspB zzz9xokOzudEJFVshi=8MJT!Q4Lckshx|725BXy@v?U1cUaM})C4dto>W6Ill zlv|R$cX0hZ>G_||_ENf(KJf67rSJDiPm+z$|KmS046)e=mF$1y!%no(2-P~)M%U|` z>{Pl-fkh)5)w@>7+F+--!KHF{X~spPQrCjO`r~yrK8j$*{pLEC>K(CEP%s2KHPcxv zShmr%Yo=ZAtusC8RjLblMWfQKNn3`pyw;{`n$^4O%w+nY+ndJ~jY`&?)3&72ve)@G z{lcVdjo*^8ak6mDi$Zh7oV8 z15WYux)p8Pol|o1*tS;Lkn(qlUFHR__`yqUyl$c{|Y z(H35VYjcJ}zd0Pfd=#|2i7K4C!6LNf(5=5i3;3e3ntm399#&Jqydd$1Q{VY%w zPHjYLjbJk))DJ^L1wx^b8@^yF!gzB`2PqWn>Id=7aR|>cnHsi`?=DAweH$PZ2!%6e zUxKM11nzWIralJA9O^$0#`i23q%NJlS(GKt%k%N9`Fc3~>HHvCV}rm*$isaV2%k@s zpkn$p3nPI;iWVFJU;67?D{zgI9LLnUcP>7}fT1y*rU~$X}^T6U*Dn!>3 dR!06C<8PQTiEA)gQ8fSn002ovPDHLkV1g?WHNF4< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/feebas.png b/graphics/object_events/pics/pokemon/followers/feebas.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccd33d43bbf25720b745fc83d3e3ffb66bfe590 GIT binary patch literal 588 zcmV-S0<-;zP)K)G<%OKoke?iyTP@77~qvWy6FKA~6gO z6%Q;H5(f@DxR`)p&~Ly1#v@Ji3z+yN8W@PMn7SDTqJxR_yGTiC-<{!@98CJQAHDZ~ zcTEq3qKYc2sG|BurF3~);)3o5Z>qSEXbJ&JMq(O2=N^joYRlxkFAiu+Y+8Jv=w(A% z?%Y*&y~{0)d*~SpJ1nHLGUMs(+j^Jce4yttKNF9dLz!c)`?1z!RL{ad&scb+vB~2= z<{WWn@JRVuXsmucY=gk1m39~QBV+2mYZB**H5(2nrrp3sYWh9U!@#A>j2}>)xpPh8 zV?C3Ew(fc>aBaAocU%9)*d(ZLU% z!2outH&hz7C?;#E{y<~isf}$K1p2nP0sZ^&c-RL4p26L=5{w>!e-ma>dgKqR%ufwl z)q|_=yAJaaxlkv&^>E95&ke8#Trl%sy@ePf{=mv}=fqI+LEyq90v~c zjNuZU@eNiGfM3Z@-9aT_T0KCd%dJP1CrxV19~nB~6t3Y-PB@26^s6x0U`=Ks>_%w* a)A|9^c&DxN$UYtb0000L0Nf`IRF3vh-XOw00009 za7bBm000XU000XU0RWnu7ytkRp-DtRR7i>KltF9bMi_>NMd+a0m=cN$r53@59Qq4- zNQ$hQ7N6?Rg!RVAjxuq3Q;^z5dJxl zh5M?3mib~2N1yKgg5?oc5Bh;_d_B2D~i-B#|wE%^o5HyJ=7u&d^>6;kWuvePUh)kPR zxvvljLEp(gFe{iZE)25_7~}G>X+#4|DJ~JqJkRx8>7gJp(ko92`tFL- zu`qbs{{nnh8VZAy8Kly{Jj{vQjX{^vd2ZmZ=#?O9(S^Ga47&7}OklA8+meDCNJC-p z@>l!!z>^WLIMH{hpGpVo9-tTHT{=H$aD(=BmokK0@EUTxS3jrAd9N7rGTh}4)LlAK z;Y1Jx-Gy*49GCQnbC|W?Qh+N?)B>P4ULkla0=`xjNP*8L_MPnJ@_E(4M}3@$Lh_g3s`1 zf(VY8g1MT5+vt$~K6DqJJQKEM{vlEYWnyGbJG0wrGCj&1%@rJfe|q}k>8J_aEMgNJ zPUO7d`lw0g?QhAbgZCR<8s-Xo%e;+#E+`YDmmmAM_vP1-xM`*{39Y?9UOZHdN$84z zh!aIdcBnxbI1aAC3(Owsa9%Rl7DTZ&wx4}f9%@9$jI8p|BJnMWb_x=-voxZu8WEyy l$=?ZXl}4nOM)aSqKLO)QtuyVP^wR(U002ovPDHLkV1m|R@Sy+z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gardevoir.png b/graphics/object_events/pics/pokemon/followers/gardevoir.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fcb56e4d89a52257d64f86e47b5a80fb47aa4d GIT binary patch literal 783 zcmV+q1MvKbP)K*1>DjP#g#FCk5e=izPYuTn^I1pxLFd zld%ax*}D{S-EIS!UN*slg0=n?$yPRgDGH0wkrbg+5n4eQ3yARUqh~=7{|R5JP2YRu z)yb~=K@OiZ`F>v?X(&S1b3NB{*#Ynu`lC+;YY>TmPAQZ^X0$Z(=dFj_yyV$5hDYf|F7uh{y z?0h4pwb>3So^DCYW!~9Z%hz~u0blUi>(0DDaW?C_S>V0Bn#MeE)07M5c5SxVYSVdv z;%Q*i_Uz{KxTZ0tln{&NkDg>~pIw}uer)6yE1sT%SC)0V4O*AWgz%%#*diAW2C_J@ zhc&%#)b}Qj-T4W3>YN|y^4m={&m&}F-V#ojWI{|K@Bx`DK{b#$2=0qe1!8& zhqvQooD76JGJlyB;&D}cF(5oTSV79%Og4Hyg~#+qw9ykjHWD7#*Loa**p9}Piex^+ zD2T*!!;=HiI7-4O*4l|8Y02EnaszfwAgPLu1IgXK(FdIkXTL8l*>HNvP~IdQR*@qH zgmlwb4z(Eqr=@x$hH55*&L!bD zUT4F1Zc}T~_@C?ZG|zN@NB-mDAQeri|Mp)H3le{b^r@O;aWV72CN=~rXl|NMN<-Q~ZYjL9{_-ya(y zbm#4Iy8CsW%wLuZ_Lj|VsV2Jv?q9kdu;sg3d99LQGGnStHS;`0CK-cmzIj}+dMWkI z^Io&=yswjS{9fhvXBSe|aXsB0`fuBBYjgE``N9=9-|t~`juAiRnepk@geP+KaobvV z&33={Un@|q{98k}$^C{ELYbe0_UE)th+X*3O4~xN;D7b;wmD9nt|HQZHGix!dwjYq zsQmM-X9`Eya?Bo-F1TmmBE9(K9}cHauGTAeOP)@f^n9932}2;)#B`IX4AZv0$Xog@ zE$6AOaox_HyH2iZU@1y7i?`W5t#synr*{|FU`MyO`HmpKd*O6E#a( h<o3eNxl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gorebyss.png b/graphics/object_events/pics/pokemon/followers/gorebyss.png new file mode 100644 index 0000000000000000000000000000000000000000..08c8e2f5941ede9892cf821af0c3dc55d2e970d3 GIT binary patch literal 925 zcmV;O17iG%P)b0RaJ-smZxfVaZu>i6Kd;nepk7q3P-Qq(QsN00009 za7bBm000XU000XU0RWnu7ytkR6G=otR7i>4l|N`xK^(`=2kP;7gNF{mlt(F*g0{P> zVxV&&*hT0lPMIupda0$pCLyJp*d?9%e3oi)Xvme2S15+IW)Oug9RdzP zFpl_ZR~4dh0M&v2BS4Op@i{=8YYimWyHKD3@uR^6!6bjnXu@m2r~`4=L4%B9PZfkh zMW6vqEgK^vDpAYDpV&or<(^Ooav#tfQljQK){7*9_|OCPEFa) zeoTgC4<}!VUoiG2!P=gRaFE5nG|b{?^E%1az`{YkxzsOZw7R$ zG@}TU90~wX9B|Bfuz?*ntmRqmX*6-r7X0hq@`Yqc*sGWeCk27sq_iOgp)k(k3eg2s#vIu|J^q2m^J7s1QA5VwR6?|DW)IPAP?O!5A&)z;W-T7%8l(6($K6n-v90R-|Z>Uoo~`V0_+dNba@ z1!2SMvfx=Eko-uPrj`oi0xWX6nDdx8q#Hmej?G3&KsV1A`y-<QcTr?yzPUyxLs z2tWrfm)Xf8=s*z)0R&crfDjKpp)TRT{el#dOq#{G@yfov2s%)Nr2@jingntI3f8hx zaMJ4%A(%@9XH_BubD-pXJKF*RMOZ3W?Fs-2A;=c{yFy5|j&NLY=VXZxLLKY_0dCfz zKoOc72P-RC3ItXFa`o54HzZT0?rHSQG5fSsBrdHlgWmw*PWvMiKq2bq*B)6qda5Ds5C$VUn?fkmoK;KWMy-o(Mm4 zrt9YBDY!fNC^{C5iV!=P0s$AgBBw1Pvxe{8_g>50KANBM)jtS~)S(GWzGtOCUNp~0 z3OEqEuwJu}YukFN1d5eZ3AVX+}04FYAETx4dx22aH!csy@ zb8QE~9K^N|li;g9|h6XS0LF@v@|+24e7GG3t`R6?^KT z6ml?|1s%k6KBWE7%7Nx#uzs4I|9kW1%{&=~w$LpZ-YL7Vd_sOC6! z&eJ8uGApO8^GSB&a&SXo%bmg7uXX>+bvW@VI5vPs6%EBKvFmkYBGKCfUaK5u5Y zxnERHnUx*TESpTy%`14D04WIA#}%A7Jj0mNG+%F-)ru*Wf;bJUxrU(32!dM`98a<* z`%TpD`1ux;SnAz*{1k*czF*6I^;6T3H>hnKBd2qemAUQ!z)ta85Qg^`g%8c zNeaO-tDI+~J!O-{9<1_ROl8C=eptnaCnpEpl;L)slQPSQpTWH(IYAf23QGJ*>`TGO zc~HgX-rm7C7pO(^c*<-T1U`db?w$OAE+|u+7K{{I9?}s*Z&by2h_a~7Ba|PmGMgfq zX>_vZQ`A;Ri%tuM>afNT=#vXjrs`zDj#i{0rs;2>NP3CA=5>sR@=wfDJ6eL0^ECYf3PCemK|RO&)nj#7FTOn~vx84{i^KPci47bl`E0C2w{;FAfb0`bA121V$EE zX6;}*;2z$wQ6Ix}jZJUH@y>8K9Mq#(OWg73GVtq%;>9uMf$+$VPNP6ZJoArE(a3_! zOmxycuf^^GWcNwB&d3hF(0X(hi?Sh3kZO`d-C z(v?$U6T!yeul4%iLps(e>ZI=;*6Y^>Jp=`_e%B#D7>oN|vd*dwJqHOrgj9;w8P}yn z4OewRWcPgaB5x^C3~f)Ci=Z#7C_)80c_D6N*KY$TBxzbOUodi$p43y@uF4d8k{gLF z9hwRAeSjc{#2$;^Q?biAlSCiZnjifWXhB>spR);UM`Waa4S`@LQxwbq6e+6@Vpq0Z z;oz9El#+BuokVdC3oabU79l2iBK3I}tVLkX(gAxV4B4DZLC#$$nG_BZUo;=lgd)(E zMKA>gCkqF31|C1MKcl$=le=>^K__8fZ*2UH?DkX&wx=$XOp>wsa3G1u2#_lV%3=N} za+ENmFyBq0$47k%=MEMejT3cl5>RY1$Y1ETM-ql&033*by(NNm0n|*E9AL2;eDrF5 zgR*hLa;_c!KG1=V{hkzPL>)ELJp6Y@@>kwhTeH!SOc+y$Tm(c>U;tHh2~old2ffV>Su974eRQis z<_)K~$NLX;ncnRdZ?vC0E|ci~Kp@LsECswv$nv+A+219L(fP0N>i@EtD}GBurAhM- a!T$h3kvHA7q`~t50000!f literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grovyle.png b/graphics/object_events/pics/pokemon/followers/grovyle.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2a2df5867ab13609cd7c2cde3667b336c78cfc GIT binary patch literal 658 zcmV;D0&V??P)T5di@KX&D(|nMs++d6_9GL1`)Z*;%#qm000000000000000*`Kl|OIWFc8HZU5Ab~gzSM;xPuqUS1M|` zwPU7$&=;@)B7wJb@LE7X;5~qsj@>*)g@AxxuA~(4pDZCAviVK^>8SUPl6;&@&N}O? zv)(SmF&?kJMNkwt%vcn}^A8x%!yYS9o_hCq3`I=2mma4c)566bD}AJSN#h|-d0z5g zwyGFirkn=d`KnD<2xrnF}ECX0@N`KS?@_~gdj6=nqdY)WWrVhUS^xg zh0|TgjiC~`Ag39oEt{&(^IEU9h9PS)QEx?M1AK;QrVTeXz-6eL-^MWH*6>ho@7(~8 zVal{&WdmG(4Ks!zw}wxL`>z!YF=0{&X##v!h6fd9nhUw@=|za&WQ3*C0O#WAuytx7 zw^|92j4_kW27Ctg^6Z5N-0FI<{yD;UDxe!BfY+*MheODXLHYeteq}k*jP{Oa{Yc!| zqQC?wZr~?~*wE&SYm1f6VwnmTjbpN*BTSFbV-~VxXi0G}hH0zmW^GK0$ zna1{!02a(;ZSePa{9z3dzZ{P@SI&ZRMq`H~&4$t#rTb1{h8P|Qc@myr?kiDs4C}bE sK$hNj3E2Nk`zH|Kf7JcOA-=Ev0Vj#rZBkHlN&o-=07*qoM6N<$f*6A$8UO$Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grumpig.png b/graphics/object_events/pics/pokemon/followers/grumpig.png new file mode 100644 index 0000000000000000000000000000000000000000..8f757d50ce1e18020b957bd5f7f6967e467f46e5 GIT binary patch literal 749 zcmVKl+SC^U>t|@BBQs`mp5Iyv`wHWJ4(nQ z&_bZ>6%Ru3_d&YjJhx0K#Djl^Udxa{7=l>n;RU6L^`eIfyEzzCsHaMCW4Fe)NzMDs zyQO#$JoIxYecrrzK6#TjQIu6yS!I>~B%PM{y@b(%+bPVG0sk*yZ@)D;>G-V_Mt;QI z6z0BNE9sZGl& z7k*;;v;F|GSM2|70jjEXe@_Ty=E)XW{T4HpF;5zkt)6!vu0|m@lRQ6x@>|ktEMu0+ zYmaI@@>x7onWGb^{)9pS_0%M@UK($IU=#{vo+nfIUZ+36T?<(gtWqAqnUELrn_nrd z+u~%I=kYew%GC`Z2w9IGY9tiw!NRqj#!HHYOlF=dzI)^Ns8Nku^@#Uk;cM<|fcGHc zMIo-gpfk8j=ZqgD3)a63jaVo%^4(KPXLkIl*bTY5D9ozV34k!GZaok3$G1fRsu^dG zcV@aM2)Ss*Li3c~3AFesHFJ8O24qoaRHnWOgvNEf8?1jk1WVA&VEi)>!dl2s7@U1G z#eGF)=_rVg7fj;kheB8|s@-eDJS@n#LBX6kLKv|SI+bQwvjCS%cQ^kqHjC%lLm|ZY zeY=CV;XcZ^6U!cfT|`EfI{^i@-7FJOV3$kx?0CWBHgkw{j!ci<3+jd6*!jO|0PZc;rK{*A%LWD7PV4=ka#L-{ioeUe~fw}NP@Di5h f%Tq57{KNbPMl2mk75L+K00000NkvXXu0mjfY>H3T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gulpin.png b/graphics/object_events/pics/pokemon/followers/gulpin.png new file mode 100644 index 0000000000000000000000000000000000000000..320f5fce9bd70e5b7c1add8ba90ff7208b80d6dc GIT binary patch literal 562 zcmV-20?qx2P)IZ07znLz;o0UKlrd|QIFG<$CAg-Mx!(>r(Q^<@f&Y{k?Z2A*58PQl(1$ zC(&1%s^P`v>U*w|8^D2tOi%~C#V*6$6UWXExPgSM@gH=N`PjiO#xn!CKrw@_2u08i zK41R0qJ`lC!-w#mS9O~!$<54|$qQ~yHZ$U=wT>G$H-c_t^L(2Q5$}A%^Y#Xt?Ki}7 z0iL8hw0XC}EL6naXu!wTkzJNb`A+;Uu}~4uInTy>YXOI)d^xZ!<|Y69;UDIVif1R2 zXRx=MG0TldGB68^*lY5`fe&V9nTmA)zO?D`u?8{_!Xoxyd^miAo?(jBgBQtG=23p8t(6)U(*{Y zRvUTC006Gcx(=&A5JeM6eaTxh!=Nb^FxRSBgFm!ygux(t!tX8hqe0vG?rXiMd%30RaJFAqny6!O?*^a49=F00009 za7bBm000XU000XU0RWnu7ytkS8A(JzR7i>KmQQQrMi|Bgo5ND%gCIH8y=X5b_)u15 zX@v_l@v;l`MXPc^OY|i|=Gka>9l61-z!@ zn}k=E_%aL^^)2iIJi!Hnw{z~A?>VYE(xE|m5Hu)fOS<=S7^=;FrnkxW5%^erzOPSC zD7RBi19nBs;=bn_$?~AjcuJOp6ZS#4=uA$Rf}7k~j0$R9bZ(ESUo+(s8Zbm+;YCv{ zOd&Ne8GB?&Ig^uBB<{=046Jhw)x%Tq?E44ZTa75Tnkm<(SkL#2g)2Ivedm^Lg1=-h zAO=od)Dg%G=IcC-o$j{}$D_}W&JYm@GM?QHaKLjTJOzEw@7|hZ%5=#|&Tyiz+xV~L z9{Ov{$FYNcwDkUEs~!hQ$4zudxZ}*?D9H%CQe^-h9oYe$@f%~$OmgP=uVqoX>bg49 z=lwOt20=XePL__x!FfbFj6Vp^q8n_$`4CplEYNp4Z5HCBL-{M122u}wGJmE zz^;e6b$QtOCS@MIfzZ}YTa5}N6Fdlwa>Do_LW#hyTB8E=vX-7rp7AlOs=3vPClk#T zdr1VjAb#C``h%A84C|Z1Sks2Po|#zkQ)mXhwCE# zQ`HW{2gJaPk*%svQYHpU9vXsDqf6wGLilTDz+IG)D2fI9F-y@V_tln(`EulkGzSglg_VL+Co)E;6%v8dFj+y--8>HN*iXq0GS=3o?$wYHWr z#}(1Dp@N%Tb;OqH+3B&t*#H0lqw|Jz00009 za7bBm000XU000XU0RWnu7ytkRnn^@KR7i=%mQQOFK^Vq&JOsS$Y@DsZAnZbffC#cs zQre5)!Rw|>j8G)ovSGy@y;X!XBrLRuNwK)lPtcw`Xb*eZ1e*%gPv9k<{SeOV&g{-i z4N_EmFUfEIJnu8_%+9W+{l6%6{&j-ozb)8N8n)DiKTV)GE(ObfIm4E$=WjUobBNx^ zV^t>6RrpdxRLB08bDjUM*mYg(Q~4MEF7Kh_nDpani~k38yKV`6D*swg%_ur1ap-#P zl@fIOa*@=Eh>l5Iujv}h$rz8NlBk@{pE^>TQW429OHc%~EorjKWc=aAx1QJ#DHV|& zlR!c*SdR|!?BsMv%+_SV^Nzs4hSi~HsZx_I>b{@=`i_&^3pz4ufXoEVPKjGeeWE)Z zu_EvyL85=kd`F05wC*^VO{a%NWNMxyaJ@89>Ye@~PZKHvKHK#~*y5C%dhQstody#u zZ7oYoqH?5@1a~=uD4_|eVnrmuoafvzz%;T2-|T;CiJXomGm(*Su8uT`(^ZbghzaJL zDNx72Cwjh@sqKGj5$+C5yGy-CcdXL$0S)7qs{F42@+gE z{&v7w15PyRkU}MFet9J_HG$JH{Ytr)393vTk4>~4xJ(e4s6zO>#}kyDl>>4htI3e% zbD~D4VBYB57ZXt4Z0p={L%$EZ0OsR{gU zo?yE6YC34u-wkSP1+yOwycuz(QCgZ!XESrIuwDp`{BDr%85$fH@AMY2EJ%51Cl-Hf z%JGW_C{2(pVDT z1%0F6fVTR&vmt~=eIZMNRFgEgxdw!`C$1 ezY9h1D)AFyGD@?zGGAo?0000$w5I$p~2~KSvgsu>B+fSF+pi5DKV+3$?56&X=!l*0Rhpm>1jD>308gD00009 za7bBm000XU000XU0RWnu7ytkQk4Z#9R7i>K(?4h$Q5*;GTLf=7LU8DmH!JifsHdcf>I{Qtn686dqzi(i6D7 zj2J)y(S`}=z!?L91`SFe_m+?!<*e7Y@`uwtAJ~C#dj$ZQ0WMQ5h!ci9A2fjq0O6_w zNMY65LRgjO1-8uf=NaHGgmBdZcraHrz%>O_vjCW?JTK5(f88?};8k?=9>UF!BRS&( zhN~F&D!>CKJ8}UgumkUZAB@1&JrBtJAr%O>PRO+lxS(_9kzT*n>r(H;0_`2yf!;Tr zI9MGFqul}ppz~C6E0r4drhw{zzcMzUYyBF2gWRtuQZ~VN_Dh}yHrLncH+ZeY|$fN=S)&_p_iCNKY(2Jyi|`rX-*!G4IReLG#qF)(vVV7PJDH zi8VbUaMi@PNe8f?AoSySgN|T9K2R)ZJRlwlMS9JFGkq4E2^6^#nk_!?hW^cgx48ZS XMiabqCxuKq00000NkvXXu0mjfpmSQC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jirachi.png b/graphics/object_events/pics/pokemon/followers/jirachi.png new file mode 100644 index 0000000000000000000000000000000000000000..c47a1fe8983c4f610df0046db7bd50728a187055 GIT binary patch literal 627 zcmV-(0*w8MP)G@GK)Ip2WKo|z#90ts(P-rkve}F$@7bXx` zdkFZ!f;oC99!g!2-9itkv@jZ|SI^!(?4eYs$1N`S{eZoAa6u^wdoBnYXOd5JMyQ61x2@dzj66aeV1ALx1fG}{o(yDCjVdT%(9Li zLOctoT9kTsckAjYF4fwdB}Kg8rq9^m8|pZ{y8s9H+b*ZQN5eg<`0HEHY0_@)A0ZR N002ovPDHLkV1j8#D1rb0 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kecleon.png b/graphics/object_events/pics/pokemon/followers/kecleon.png new file mode 100644 index 0000000000000000000000000000000000000000..22540441b3f3b085f079afaffbfde5f773f368ad GIT binary patch literal 739 zcmV<90v!E`P)K)xnC|Ko|$`EF`3dUY14DJ^KVDwiT%m zSS@>qkPu^JHHTu?^GYk}b+KLJ(u?#FTtVy#g}P8$3Wdf?iKnQC;Jizdu_iNPhL%11 z9YTJ7$$!SlL>XpZ``XvO{r5(5^TwgL zxb%y|&&U9T8Rp>}yl9qyOEc@t^>fp4lFj}A{S49fyIxa*J2KIHQ@-GK5(06fE~lq=c1RNApy|wj4kV()3xG04}Ag8&F?F1blHx2 zq+#BmJOMWv@(`ipZTnSg>qpg#sQ(uF4xZP*m)t1TiJGK0f!RXg6nzh%k$taLU#fot z;egPaK35z6?yBOms7ZM9;c>6mOU3J^LnBMlsXWrU@qh;O_GVpZwbUnZ7-1OD>i7E= z-JDf1j5f`DUlh8?7T`ZV#vGO^=nnd7lxM~vYE?7p5@K01)TqxNpJ7+?siAO)zi2@q zga3Fa95$dFJXNf(wUGhqsUp_3>M6_&_IJ1~JkSvED+~eYb7Y*p8~3jwGj=j*^#{3n VKYW}c9-9CF002ovPDHLkV1iuIUVs1q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kirlia.png b/graphics/object_events/pics/pokemon/followers/kirlia.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce283aecfebd14af76b171b6fee2e56a9f3dcc3 GIT binary patch literal 548 zcmV+<0^9wGP)K&@oHHKo|z#lTZk_SW+Q_lT*e9PRQaA zdP9Z|U4$-KrHiA~rEtYqj~16so$I2VYH?{Zi8nYzaH(eLe=(P#$z6JZ26W0h1fE>J z_u~RUnKEU{{7)*ae1nTG_FT6Ly5fd>zhD6F*D4{EA6(Gxy1hNx99J7C1dz%<#C|OaBwmQPeP?!ADrkitTPTVLiEk;CR4|20q)xtek96qn}zJ zn8ia)8X$z_jtZ&7W-~x`Roj+{jt6RxQdq-svxO3y!Mlz6sRe@BjWy)i$ZP0wBTA9P zCbbYuFAy9LIEL*Qse+7=jU0(p=eq{=A0{}{`MKOC`Y%vv9`xK|1AIq mb&yGBC*I>+>{GM-f0the@D=KpbctjD0000pLLP)@x!E~6IpM(}VWGh(VVMB|0m<3%$tfvW5eXSNS(&M^)b@MR00009 za7bBm000XU000XU0RWnu7ytkSl}SWFR7i=nmceV=RvgFQDUb&hCn)js(WoKVULM4ruaw5wB$pd}u zp8j>R<0LQ?)wz?rK;DBue8xRYM3w~-zNd?N9QTYJCxHRy!JQy^8*aP^Z6mz#A`zJ| zj3b)>lI{?7cbE^PdwPQh@@P0V7*YVM8ynDfFTplo>$Q~+B;Ceey8g}Fa1tn1v$9va zr>osT5v4gkr7Z4(QMkCsr$Yn4?*2YL+KYjKJVWU+)NJTRDgh+EOa83&`weZN+QQ2Z z-LZksn0aZCGF@d2EBD|MP#?-B7 zGix|CyE%w~rQ@ACS?Z!@4E1n{q=2Sx(7DC_kBzrtp)`x!HU(pOh7+5KG6r=BrSMYdC=$(2R2tk{z)%4M(3JbvWULXKx56kX5GEVH==D~Jwz&oMGZ8oC(SatF$$1o{Q2?h0Ko-izP2 zw(XYCX`teE9p`6;qJ>YZSX!&!S4vv*R;~6-^#-lmXBb%^4SN{b&S4U`F`LyXAZc6l z^taE->XtYj+T0ckd&S=znE&*DSnSXHrDO9Xifn9%k?o&%AdtWwR1c0&yB*Y31$7D- zn4Iu0mQE{M+uNUr0TeQeJUSI8O9OGz-RBsYCbfr=(St*iNFeby&Mm1yl+-Dp=@rFT zz5BOqy!nM*^ z06f~jX*RXOEv0!&*Pp2_uq-#0CaQ6#dCz%=sufM?}VB zLoOoA1Bwe0%N8$*k1%0I3K0?;@;M;Hq3U6h}4VK1Tgbzmsd%{Y{!#z4d8!Ny5kS2e*ynl Vg>?uD8_ECx002ovPDHLkV1jM)UOfN+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lairon.png b/graphics/object_events/pics/pokemon/followers/lairon.png new file mode 100644 index 0000000000000000000000000000000000000000..a76983a3df798a43c098180af326947bc9a9a2e9 GIT binary patch literal 867 zcmV-p1DyPcP)G?rnfiWpLX_3jHp|R1?;b~!U000000000000000|DtjX00009 za7bBm000XU000XU0RWnu7ytkQ*-1n}R7i>K)4^-nP#g#F2MRfO+OTY}Q(qFKc#*t_ zw7IRx6CLa{=noS7Xx{Jp z%S!~{rC#d4slp!rb7{5RE`i^#v9x2y5 zrk>+)wivk2(@+EmuYMn#YLqHkU_3&SW!}J14Op!!OwTc!h4k!snr(?z>$Ic5fUhZM zm=|$w_-jM2oj5QtjvMx;h@LinBmsX|lKD#m4@t8s8|4i1vYl(%q1|g2XPdA#p1E3bB}fZl#(4WrRVVZ#kmqu5cyIkLSw;*G?X zcq8tXE&?s*p-jlDc{0F!<;!>gLW0Jk*)jsl>3H98>JdX$?5H6om{?}K=aR*R(?H@)oW8@>1~4NhcMOWy)vyu^a{7fHiqA94NaQ!xpQ1~73EF)=`22ji0l`5*At@KmceTqM-;{f%nmyBSZMx&9s@2dQLarhS0_|Eja`WQ>N*uX-FybRC%Ecy48msN-wMR zLCoLKnSDE>l`Q*^ODS}~i{EJX`+o0zyDK5||N1vq>s2pYxjs8yAy_-tM`yjdH(y=0 z-agjH`rURy{JGh8IDbGo{U`SF4Q2+mGD1cP=((HT)Za@8h7h*5;x zHeE)H`AKuQ&FO-{p*47`Fz95uC7f1TXh#&cQ+LA;DGn!HHyY8U#C5J#rGb@-pe~65 zL^Uak+83E2?udyp6e(-u8{K%5MItIjHX|+vxH;s!*_as=#70n+jRw{AdC^fniVbm| zo~n8(HhK5=8$tZd3I9&{bz}w&`7`24aYBF49G>kohrLr;W@Lzq zjFiL5V?rKZSNcUpmKX&4qRC$%l-%!>9pR}V9>aZs*`K^Ql*Nap}RpLVM zrn>gl%cQL$4-?SC6Cn0!S<9VBi1bX-GNWK!6FVMc6s1AjAtcMaC}mY*5UlfuA^C+6 zDG%h{GGf(Hrx!Jc=^%rS{4@sQJSsL=8i(HQS`g+DnJa)>75S|T%KPPgC4pF)5#gh2 zoIl;7W$hc{i5a1s5;B%>z9l|Tf{NJ9?|!8WJXeJvTjfZAI5REaqt~0mJ6qJ0GSv-h0!dmSt20P$=@ z0n20NRli&dVmlIaFOSu~UnG|hqX+7fp$BV>^%Nc0m-W5M-fY^@Y!df7{U_do7zUntqL42wH be|r4`Jxp}pI@Gz`00000NkvXXu0mjf?hhS- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/latios.png b/graphics/object_events/pics/pokemon/followers/latios.png new file mode 100644 index 0000000000000000000000000000000000000000..553453a311c6bc0c29278f45a134ce57487b425d GIT binary patch literal 1219 zcmV;!1U&nRP)At4DlSpfk7xyjKXaj8L>*&!(@>FN2Isj-2PnZY3;%%88&00009 za7bBm000XU000XU0RWnu7ytkSIY~r8R7i>Kmd|VBMij?Y0v?KwJ+!5#isJ2x9JaXZ zF0FkjhS206DD+}nP$~z?G#er-Nq5=)lGe_lEQ`dGZz9;%qzfseNgT76Yf65=fmj3Bnrqgw4lY=?lgLOoB+GZw8~ zO2@9!7sOJK`MECU`ADQrEQ!Me*nu4f%4G;HfaR!^CvM=x0(q2ryl`PCiBmzl<&Lpd zw4`4FBr()QzT=cBEi(g7->7HAg%U<3e$ivW3u<6RtOQ@8;~iFQK^25DVzC<5)ixJA zzV!KBqm&UhB8(m~hXrnMgXv$#8L<>x-=#aO+9Qw^X_h4RMLxP}?dtm2y-X%Fbzc%& zdXE|E%%SCZF4NZ|tcax`I$OM;u4bCh-A@g+CGm0EvzGg%uD{)Kla4vMfdw&&bhaq# z9~iy*?N7h`s?dzyx|R_SQ^D$)enHXaTKq6Ag5wFEzV({jlmHQqcd#BK~lz|{l4K`MPeoE=%>gEy_2Zg}RLHiRB z=h`%v36MdX4SS}UBW8kJpt1PJYxljc$tZ?yy2=}pcq!dh_Ooxk|LLPAc6!7e0{)O0fRsw{Bb_{WP8#zE& zfOzgo;!}X3*r>K$^}GiF{vi?1iVaD;Bo#itN67E5s%MlVhy&%g84?n&iu)O{Kav}N zq5O;YD?r#4Yk;sIR&N)l|Ge3|yOjwFVr5teEkgXbo~Dwx`)EbZ&~Cr-I=n~ZL6|09 zH}3xS+4Ja{n(lA|<)<}ci}8j%bs;4tM7?qrszbjf7kP$wUEc;c)-waq5>)^J2Ot1a zR}&KAcS%@PmJ}ZlILO_dCf1&?nWJYfYzeXh%XjRY0VghIEz!P! zH7ys@#9Hw{{J*dzwrS>m8>GZpOBjMS5tGC-!CJzI=l_J6OFR>k#Ipu=V44#xnVs>s h`u`ku^7o&NzW@Oraw$AK62brg002ovPDHLkV1fi=In@9F literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lileep.png b/graphics/object_events/pics/pokemon/followers/lileep.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2d81c1c2238bd65f306cf70d2ab2a7c8d513b4 GIT binary patch literal 724 zcmV;_0xSKAP)p)px;SuxSMNm&soVL6e}X^Ekc*#Q9oDH$nIIZ?quVE_OC@WVKz00009 za7bBm000XU000XU0RWnu7ytkQN=ZaPR7i>Kl+TOPKoo$7qKuH@VHZUA-yx_b+0sje2uS@9!>AgP zezROCXy3>YCxAi(jOjS+^WFR^F-+3t1W0I+56>kx%zFkx1g!d|rMpnTLfeyFlVxo{ zAyvnfi-APH&z=Aw23DudE!zhJqlOoGU7z_g01^s@TYGVD_kyp_6Bd9c)V<3sFaxT& ztsn8kcAI5F@5)+mw&BeeA|SQ);!nmH7%XivN)C^j=6qplSPOzc%=Q2w27XaTU-z@O zo$YuvO5$!-gM_5*tp>ran12Ueh=B*&NwP1)-^l8G+>AE|og4s!g62I_6h+P^34{gU zwdBF)7B~o0^IvYq*6Zw(AfaFk-qu%?L8Jqr^GAq)r>BfXQ#fRUwZ~Vdt!Or6EM&CS z5S0xf8!|7%zysZW)O9DkAO*M&@7SFg01F9;t~c)2jeN+w5Cf}+{+m@Bo#e>7soeHC z01%S&RLkOqns>V>7&`J!xM(iy^o9<%i1Xjhkg)Yd^9myZ|9&|CxA7CvLtVD}XPn>w0000G?q^5!unXxv{C4aalo0Q2+n{Pz%0X00009 za7bBm000XU000XU0RWnu7ytkQ0ZBwbR7i>K(m!w0Ko|z_(+xK;FfdeNGaf3$83}dB zLMD*-2(X%fE>az5LD)i0J_O&u%7|b>a;3iZ(n>J+I>68jZg)NgZ~oYKXW|Qz1yi2w z=fux*u|voqhaB?XLS4K2ho^S;A2_$WZ&-D1b?=0br#AO}N9?AA)aIZP#NxjgkXOFN zd>jXk#rp?jYrr%M9w%IMdw;^RGzMB`d6DEOm|7NFY-UY;Dy?ODw!lHU`)@%EH^*3X0e_Tn}RIglBPa zs_t)_P09p*c6fZlVVnTu%g8WXZ3fpjyej5rFSUY}J;+PA-ff0mS&9AIKFv{cgSbDN zeK>0N2wPh{Av{hF(QZ%SJ-|~u|F%!FDjXdpRdlb*`1%Tb!p%T!XLGpkALDmYV&7<| z*O@%1;D_gT*jpV3mY2>>v+(sY9!gBx+P{Lnc=+r1nKn2;59j0^uVzX3BNIwtgBLV5rI002ovPDHLkV1ggAA;|y$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lombre.png b/graphics/object_events/pics/pokemon/followers/lombre.png new file mode 100644 index 0000000000000000000000000000000000000000..72b9f1badf97c57e34cdac518cc63c439d359e6f GIT binary patch literal 679 zcmV;Y0$BZtP)G^>v5owu00RaK&SwV5B5lL}DnZco{F&O{=00000FWlrs00009 za7bBm000XU000XU0RWnu7ytkQ9Z5t%R7i>K)xT@oKokdXn?TXnbZLhyQb}!S2g3`N zKw||lWb4$SLnos^mvW|eG>hW1t!J$M0flBtp~kC+1U%JH@Ss1S{cn0_66McXPTppHZaq*D$6z95{=0fHMWdM(##2OZ!tWkEohOAbE6-F9B8)c`jIZR@5E zfM5`GD02ynK`M6o1bqg~cznxxLQndf!$45x!e>0-yFEbgeP0ZcyI$MtQ;Q_P;4~pU zn+h@ew%h5M0@-g+mqfIKp64+Ufb(u*6%gL3QzlZP1xZ* zwVmQ6w!LoquKt;qt15d<(t0=iqGg;%*?Pk9&^sPBX}g~1xs(soYY(z0Xj`ZM`q$4_ zNrhkJxkq{YW4L&_C<@wMZ|T$LE39%qUy>ewdGkD+7oE0s>do`mtu!KOr@Qpb6S1vx zbl7l@9@5VGo|h$*>j0iHc*|6EE!%5Z?{o4u*&#G~8Ne&brXL1p`fEwz-s?srwp0bA4m?#BM7{04GDHC(_+qNM-; N002ovPDHLkV1mG&KCu7* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lotad.png b/graphics/object_events/pics/pokemon/followers/lotad.png new file mode 100644 index 0000000000000000000000000000000000000000..3e81947f9a22996c3d5dbba6be90101e4afaf561 GIT binary patch literal 532 zcmV+v0_**WP)G>HkS?Re!sd*V;K?wi=00000K)W1u^Koke?K;iZy5IRR9IEJgCyBRuL zE?}pmF^{(BP=wI62qAO9-9?9tf>ZrBbP)d-Um{6*XJ2q}%a<&ld*s~@E-{Qgefsq2 z)29xD^69ehXfpr^m8xnSaV>*!ufrTenMEbqj=C`m0mXAX4oPz%ggYc0rMRDUyCL0% zG00**k4(7lu*oU23&C9znufZ|p)3}bDIn{xNqP*No1#5G-Q^3z6c5$gSRJ-VFTfQp zw-)sQ>Mmbc=PAHun^NX^nxL(tzQzON0=9KS-DM)4=lPb0v@;n{W|K?^FRy3+By1+kB^&;Cb%5GIdt9C*c3mFIG`;-1_@;t`M!T}?{#AaXG?jtJfVH*NNG=x zo4uUka?YEEx~t3|Y-bmC*v1fMdt8nTR?P&JXX*s-wSW5vX(!Tlg2Osm*1mb&IkK2F z#mY~Q$^;4As-GS@Ih+6z_4kEt>g;`1$W_~read83DE$qlZs@1SpX*o!wWR$_|25yC W9=K9&Fd`rT0000EyWp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/loudred.png b/graphics/object_events/pics/pokemon/followers/loudred.png new file mode 100644 index 0000000000000000000000000000000000000000..1354686f6d971fcd8c57dc361af5fe7458a0c4ad GIT binary patch literal 831 zcmV-F1Hk-=P)G^44nJFCtHc0RgG8!MQfp$O00009 za7bBm000XU000XU0RWnu7ytkQwMj%lR7i>K)K6;@K^O+`q3mUjK`e;9BpyofINPK_ z0t-6^SB;=}Xg!(kGIbS1DH!UXLMX_dBr)siAU&vvAD}`HvG+p7OL|$#9zFOioY~3j z?2fCT;4O0q`OO=iXS1^`0JAk)vo%}kGVq^0-B8o&0pdAdO-v9iy9@fCki$kT0{ z9K-;?WPDt1*m%ai8A-2MZg6!sE(Gc}_MbE{b}sZjmm6+2xEpAz+<=}Wg-h1W1Ct~! z6yyybZE!cpR=IJ!e~=H<4F_-cc9SF-jpc4;n)X?*H#^LBPtG%o!*0dcAv z20DO>LTNa$m`5gbTg=D@BG8gH5YOo(@xA74m8TnYVlYBUGC>0oXe+1B$*2iz6a+iS z5`iOA8gd(~td0HLA1ImyhKBnQq2&*r2<*ht#)vy=8t%#t3XlgyfpVRBIJtF9qcd5Y zZdPE@^|hOL?S>zwfp(Y~afgJG7DBDMPkA6Kl#V>+Hy2;UiK(twH~UY73I~ZcM$gCB zvN?8`Wnp!m_UP_p#G-_M~w|7GJpuAfjNjQ)_lHW>f_002ov JPDHLkV1gsgcTxZV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ludicolo.png b/graphics/object_events/pics/pokemon/followers/ludicolo.png new file mode 100644 index 0000000000000000000000000000000000000000..d31ae43665de8e6175e33364c1dbf8da45cb426c GIT binary patch literal 909 zcmV;819JR{P)aDd9fj3NihKd0g=%WiD^;k>G{!t2{9=Ni9rF;u|es{c|k!*y`g@;00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMJ;KorLX1}&K`YMr5U=+ZexiCPFL zgotG7D3e9Tj;trw#s<^k`vXc$mt^cz=$65BNC;#x&d{x;6iO=*FqcjafnY($429m= z`f+!OU1HiTZ}R8fyYH9xB>7HJ?&2=~QK&VwC~)z3I*au%2ZEf;bi-vs6gWSb&SHI| z76@`OE15>nC&OEObK zgtGlQAfzV@L9aB8x%x~FW$U#7A#L1}%ygxM^sWnC9c332hP=pfK4k-GE5~l_D2K*V zk(suXHFVdq^14$h&cL4I7?x!@hLIh~$xJt(GPHKKJlH_R8Q5#Jyo%M%mP(O<#B77P zfS0FC-2hEb3tEwiGyKi=zI}aQSlN4pFh-t zSkS|D#;}gZj+w?_uQ0eMqy`a3BLcj7W?RY3RnTpo6?M(rtONM5ATzW9f>-9fsKyP$ zK_Lv&5k(yB542WeNc_Ygz{>@W6{Tz%J|X#7kQus!*p9go6;ukNk)#hVJ^$6p1 zs1gHqLi$=BBom>AJX3>JTJC>eoW$LFKuGUcnZ)pH7}&K$kQxfCutTEP&mE<_qV@WS zJ5{07>x0IzBd}2;hx|VSH58b>c-q_ne-BZMa|bz1%o}{(5%L+-)p%mfN?7I;J!Gca%qgD@k*tT_@442*W3E{-7{ zoo_GMX15qf94O?Tbnak6taYgve__a!dG{A&H_eL`y|uZo-P}fg_eWOKmro^QUf2JA zdQf7~w9=B2k}v(6HviqWStl%g)$vOT_p+_ocjPbIwfrcD-wNjY89U`G-dSC?{l-$@ zEL*wnpc#*J)g7Y>t*-|<4c+4sHpE(fGWlDSa`!W{Kin4gZ@ z9HuXB!csp>9!@*y{QUY8UALGMygLsrsmat_dOG5J#O({)+;pC7{d8Q-^+uh^>$Y9X zceRz7CJ8p4m*0Kn+})*->s`KI`TDwUtsu90K;ITa!F6{g=+^hXTX~wlruayzlksFv z#q}wlufLG17TfNBre&r3tr<@aeh8d?{q?-?yBA#NUMQc;>N`2b_^NHFmidS4O;Wxr q$q&<3RmZLUHakQ#JbhLFhdRbezqZ@nyCyM#Lfq5U&t;ucLK6V-5yG7S literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/luvdisc.png b/graphics/object_events/pics/pokemon/followers/luvdisc.png new file mode 100644 index 0000000000000000000000000000000000000000..29d568c356207a27d410dc8591121e0b6b451d4d GIT binary patch literal 419 zcmV;U0bKrxP)G}Dwk)bhR*=d>SnV|px00000Jqvtp00009 za7bBm000XU000XU0RWnu7ytkP8A(JzR7i>KlcBD{FcgL-D*6DBCL|RkJOr8A$R%)t z#ehYkAR{Hg>;|$;TpVwJ-~|Xg1)^%0z6;O^dJcCLTdwQpzMk&?+b#1vhr{7;INs2> zhSLmAvA@{gt2^DZGss7-*SL%;`>)D3fic9cA5bc;>hz{^VFY5=gi1B4`m>CI0_3#| zLM4S6h`n~f&oeMGX4o}-F2^8%OAt8VGAeQ6^IXL55%z-bb$S2=>l79&SXAQ4tjWw1 zC$l#Dyg_fKlreAHFc5_ep+K~r5*1V@$$$Z&o6Nzn zw{|GJssIbE$}h;)bQ2{AId`ikdo1!tOH!mIGPV;aNGCsN(02#EM^YjulZ!68=%W9m z=?nZ;dBJ&>k+FQnvPUXAz+s`5_+d4glh!tLSq>OE(nH0MQpj)9X??4<$V zpy#rxg-F_9Bqzld_+ZK|s~Y=0WqCY`y^y5{WDst%(u_&PCpnRrA7@X#L%%$irTkDC zl2iNvWC3oDvYHIQVNYCEhEOn8mfjM+!?k%N-Mx->Bo4PK~^4)$4qmf{r+sEU&KvdqIs)E7f{|n)Vnz>)U3!FfULv9 z1a|z1c8T7S)BpiSTOGL9JXcr~VYutE569XFb<=0FjfEST#6!wWSX zTCZ!m>{sBh&?Dv7lu|H;jp2pfvj+f5Ga!o&uWmKpE5j88jP(D#;91VCbKv6!p6K7m z7(UXD(HwX`Q6DwE*ZiQlYcAn4CH5OKeIZ6AOBvMx8l&H_ZOaw~S}d>`G*^I72?^$$3MyZ&v8Jv9IT N002ovPDHLkV1mZ;4krKr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/manectric.png b/graphics/object_events/pics/pokemon/followers/manectric.png new file mode 100644 index 0000000000000000000000000000000000000000..effb66258998e83708d4ebed81f62d9f975a2a74 GIT binary patch literal 798 zcmV+(1L6FMP)eG+p`oGa>G?rHNdN!<289j<00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>KltF9aKorLZ0(0)^CiY8qiejZP-U}sD}D-f!KL_T@>%S>_g8y02634idSe@jPf)i|5@taA0gOGCn2pe{Mb&^jC2$9?u>C6(s zByStm;s{fV`&K%$#CDPl4RyY@j`7g|gV$riB!|Mfb%Yt?ij~sX;JJo~1;iPu#kkEx zI@ds0E2S~xxiS_ec_*xiRHmv1LO+e!t?lP=K!ORCn;f?Hfyu%h8DV8UPS)Nd@vk%`paTB!2Nw-X0BHGxoP=@DdLvv>^P|AwcD;lZzZ8y z)&sB`Z|Kd=BQ~$}w&_MpNT+BP5t0n>2OR*y`^o2=o*?VpPjKKW zUx2d}h%Y&}^Z?UkWZd+aAFI0RR9107*qoM6N<$g1)Y9r~m)} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/marshtomp.png b/graphics/object_events/pics/pokemon/followers/marshtomp.png new file mode 100644 index 0000000000000000000000000000000000000000..5b04823a6bf9749da2008436253bea1365825e2a GIT binary patch literal 552 zcmV+@0@wYCP)K(=ltpKoke?3|VgI5TuB!TcAUsU%(+D zWav;Zg!Eeo)l=wFs6%lHHbGC~uF{T9?bJM+FHk3+>jb(y8M#!W;v_wn&aWr=^BSzl(Pw+^Wi&&oK#`4a$M-cgzW-b z^6(ueVVc(Aot9QB^r6eSQ{WI9_VRAjkXxt%@2_rx|~^=kNXx z7LGSAFq?I?@$@<058^cTba5|`8MuM!i*Pc>b#PXn%&uzj3jG9P1x`hCaP6Xo78sox zZ#})m82K>PbiUzyoJ>wlqEb#_UlxM3{p< zZfJ&szK!-gi1Z_=o;b+rtUu~)(4Mm!9&E^epgM+)8w%SnrMqGTLaqlvBOfoOpVI4! qQ_1NXT~L@`Eb@d(pWa#c%X|TGaPn}mH|Ng)0000FN2&SxK?k=>Px#k%Pg&00009 za7bBm000XU000XU0RWnu7ytkRK1oDDR7i>Kl|5@4F&M`s@NyW+DSl~MzkGr&hYTg8 z1e-hPP%vaDX&@dv#CXWksd&hcLfZ@;Y?`0G;zmQKwx9FiaD|NlLYd^!N`<39c@>i<~ZDBWo}@&?fK9>1i1YhYBwKrgJN zh6z(2z`n|h@yu4xGBzsu+z`v)P-24Mts<1nNZIhbwDutfr^dF=08}{M^b3@a>u zUNBicTI`AnYWbee;N3>4F;qVoTX|Oi?rZ`{=n8m*k6!V7ann^X8r{#QZr-?P_Uc@) z5G}8(4iWOaRO4b^1$lP^+z}N}!T=#tNeI0>?{j3-{c%9^jZt@Ca)Z4>S)D-x%>(74Yc*y&>fKb!1Q##2$(plV{J4YL1oR-A95{3Cq>Wy5^f89MCu91~1Z%q{iLR26u2$`TutZj&;oK;g2 z4-X{@T}lXEsn1-eflrk9K+U0rv1MrsG-4JfS>m)j;+v0_LIH4Z4`au#4>+;5Kfb&l z53Bnw;1X+j)FGF*ZBr8K=J3ff#wYrfOQX$*rC_kLw7>s0)=`2kaa(S3Na$G?C#UJT z#7iISRqQtia$+gy;LP$qvQr+HL&D^8Dg>z{!4{racx^nN7-g`1;xlltOB_lmfz)az zB?Q2*+&vB4n8hh#|3v>6>GV5^Dm)v~fB)mfr!4D6uCG=Tx0daA0Nl8fn00000000004!rO600009 za7bBm000XU000XU0RWnu7ytkQYe_^wR7i>K)j@09Fcbh_v6INnrG+lbB_)Fp_5()N zON!YcJLOO){s}t|G~$a_T4HKl20iU0r}N_3x!YK|Y&*=T`cab_E3;fBY(3{)%;#sl zCo7Hwz&`e|kA3_{BxJi=iJoivpX$?sY;!B6TE(UTfWEiWVoX43vCS#vWxadT0M5`y zZ--?;?%z|-Y>24OYXzGI03(F*9hNW6mOSvxhRBU^Z2=$I7xfO`k!`M8mVB6-J+s{c zA+||241?b+K(4L&)6>XgHu{0<#ZxvBfgtObobTug$))+e3tC z{I@~fFmuJ{5TH?Ewv3jWB2;8?Znh}MC|zL>m<(rb`ibDot=6n*8H;I9r1@f+n?1Ah zl+xTOfyw@hps)yjv#JUWJ5dWP;|O0OMWy@KxU%FjZAOI{UhS{CH< z&tJ#S2mH=6dgd-8&L{m+HPGDiM?nGLFMdye$ugGnFSh-Cz|<=1hO`)3BI28Bk#+aR zx50`)zNEzHhbfb9w*9`fR1I{Cf~;#ug45}XLEp0)z1i| zy~=TM8V|Y$bCnY&(rPwIcObSt%rZnweh55rq605xssZde(P3G6Stj`0iOxN>pyGcd ztsZ_hi9{vHht&q(w2b7$vU(*cIF?QpHDbYpB{ezQ9h*a{XQ&D00000NkvXXu0mjfMOS0A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/medicham.png b/graphics/object_events/pics/pokemon/followers/medicham.png new file mode 100644 index 0000000000000000000000000000000000000000..25f063da4d1d4d58a9c2464eca29a022ef6d8dc2 GIT binary patch literal 673 zcmV;S0$%-zP)4~A~>G}EDS#fb;F&QDjp%IZeS;=96d^)GK00009 za7bBm000XU000XU0RWnu7ytkQ7fD1xR7i>K(=lt?KokdXE!LzhgLe~o@wYHnEnQ4- zyeNZeV!5f3ArzzzX~%MuLYCBDqI5C1L%kRZiiw3prVQOmkV|Xi&8R_Gm1Jn&J?k!A zIu!EXe(&u6J(((O}vTNrXluyQQ|~s`GqaAg4V&#CiJb)GJP%bQ}%Sr*&EW8 z*s;iRjINKjFIa|Re-l`7DRVt`o*)P&B2R-U*GjNT4cL#oS(u)OBFB`jc%IUPSs44? zg4~oc-zv01X$pUG*u~7t3KNfSe;q|@jum>Ib`5v|>pXq?JAD&62G9Q4SJGU(nv^=Y zOWhhM#4ZYNmuY%CH+a6B5kekcPD*{1`fIo`b{_fY_%1mzxmJ3+gs8{muDDv-17+An z_AkuCcP+jvHPTe2atGRlIRaX^&@CIq`g}HG7xrdb|76MBn&3jgIs4MG!N1He($!$#|C?6C00000NkvXX Hu0mjfuWC3d literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/meditite.png b/graphics/object_events/pics/pokemon/followers/meditite.png new file mode 100644 index 0000000000000000000000000000000000000000..69d936343b3f9a6b6dbddd085f29091480beb2ff GIT binary patch literal 556 zcmV+{0@MA8P)FN0Z0000000000XR79o00009 za7bBm000XU000XU0RWnu7ytkPqDe$SR7i>K(lJlMKo|z#COxN)HqnlrP0TqJaA{mx zazgM{aOsLHP8y71_7@Z{A@?sB3Jjf0_+j>r9$Zg*nCQU38^(Ln*khhBFx#|%?Q3V6#WU~JXyXFE8PGzPfyt%?>=5C~nP%~9ir|OA#swM(rjc@{ zTRejZUIg_vEnuT5WUg|inFsWWLgl@58yB#r5HhL`ubSuHX9&^jsLsX(nh+w!cGGq9 zv~OaT;$~E5;{qY?QwnwS#FVDRC#rKh^it+Ee|C5^nf25Gn#C*Q_49a*YaLUTvdRLA z8{_rFSN;LIH;vu%GvznUg`K%{)-4KWc)q(XT*Ci+@s)*ji^7;-5))YfM#7z8X(w@T zN{N$f?{8e*$M3z$pGG$?%m(?Qzm$dGQFyT(FzBvc-&S{WfRhLl=}teY^yw}Nogt-9 zC$iAO!eDzX&-KlfP@*Kpe#njD`*#4&tGQH8fzz59na% zgbF!ZG?=cXWbG7hO=yYT(BVJ|+^m0-qYDK01xY7{gV|hil*gwRsD}EToeVC^%Zp? z)O9t?bhSGPD97<4ANW@s>KeA#HOqq$w#qP9NJpXT>ahxlIWMWcqF&i?_d8G(2+kM8 z-(2@qOtD}rSzk#nM~>^dv+M+tRRJC$HgU<)u{dfo$#^Bbv~{+><94xpmyA%pFG1!n$il86NI6Hx48F;^5KRSpzcp?N=cJe&m^tKURh!U@ln(wg~Y|gp{7L(ChtPFyrm%n_p)J1WBq2 zLw~Z?JngA~+w4Klgk~|9CgWb`KJm5A1OW8lx}ebiO#>HRtP&Oq=D>! za*!Baa>IwKAedX)FbFOM=K{fC05qiwPIR6)kK-AGxhNPiLnn^pAZG{-16dj|4E=5( z-at3ePkKw?Z1gC+;cz>W+D01P1eN{RxDbzZP$G$RQzFjJKQwEMM90FK+e z8Yl|G^pfAprpamX@I@DKSA|d6B{Cnc4CG|NkLDQJEKmO*P1K@@-oau|9E3@u%HsE9z^ia zbLl`a6c3S5y!1CDA?2l0*h`UIZK>8+5Jv)wQ(Pz%ib?P)XnsT^fh{Qxcu{(DW_CB( zT^A7*y!0Ki`|VD?_jYFXB?w)`Ra`|B0JUH8Uq$XNg2C{#hVEta?-cM$&OK}o)`n}R zI}fv2k2eWXHs_^;{@}yxewuS7HdMlon>Vr#k`g>3Z`dcY*6)R!Pcg!U8vl zr4%DvZO^};wA`^CuV*qGkgiI|tpmv5+*0*A=?cMlqh!XX8KDM0*jm}S54*2xS&XkA z6e;b}vbDFU*Eh~sjmWhY=R34Ziq=gtKF!Lo;D6hzJo|oOWig=E{)n#Z(B<*-ni3wu zjA8qU9zT9|*;T?(G@~g-_~`iZX|?mUZzk1=b6yLfX?OQ3`(6RG@X(L(g-O7z%Y9DN z=82Xl!Aj`$`g@hb-g_f#N`K07tP=Ru+f+WSz8sfJ>q@vA=aES;qEf0!Cw`b9$x0}^ zqj!(`o-o4Zn6Z#qQ}M2B-74scyYn|4C7dhHn9T<@suj6LZrjnmOtKaV+h3H$K**>C z%rHQqTvI}83kvriQFSOP;hc!^8@;K3$pS6aOD_T;03_H538|A%h?lqfzGmy9UtiTi z;s{SA6kc5m^Mp^C+bY4vku9XZ37g@XZcdITaW+D5q*^f}#O_IB!&fXT%~RJ1JrIHk z*Wp^2C&h>bv2}&VBl$p_vsSbzk8FE9iLn-*3GpfvVz<|Dz6kMFHdv6L=;_CXTHXk; z?3T|APpGGtv2N34U%1ouiOHDSEXG=RrcOd3f>q(EHwxbo?rJR*nvsDJpOi(&f~tlG zb(<4+)}AqtiJtCR=Sm3?{>;2}J-4Ev3rq|1%sUUh+>*jkpUjrRpV|;^b2;(iy*(vV ztzrW}SK?Iku(S|C8=~#f)=%iTM8*;znAB~V`1wf+^;skc4oRVI9#LsQuL405LSWpE zXG{x!ij?rDz-pT(?x=okWvl))aJsaA`Iq5;#}Cg{Hrx3Ak1GHG002ovPDHLkV1iUg B%zpp? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mightyena.png b/graphics/object_events/pics/pokemon/followers/mightyena.png new file mode 100644 index 0000000000000000000000000000000000000000..324429876fe160c39a8bfe50fcdd21dd2012994e GIT binary patch literal 803 zcmV+;1Kj+HP)kiK(HvK{-(X00000000001Bbqs00009 za7bBm000XU000XU0RWnu7ytkQnMp)JR7i>KmcMS>Fc8KGYSm(8@G6N#S;&hb0woZ4 z>QnR$I-3MaAesXdeT8h!;6m*g%KSd^bUGTL z|MBkxCUr2tURIwf-=O63MGdI(^{@&I|K7kC)cm45&<-+Z}{5lRFhK2w+P^8FrP$N4r83>oE^3yGtg!qs|r1~)N&)&Ot0ex~z0 z%CG^LL6rAh`S^W|5#Ff%Ud{3-uea;nd>7+eSRTw05-=MIr`Ws$_%+Lr%fBt7Id6Np zMdO^V`&nzW`9mc-JX8wZ%>XuQG0YDcovQPdIzi){f+~z)q80N4{OZx$JbW?8w724%q~6F9Ck` zGRBChVj`So!s#R%rsJ+VTj}0N7&{y(As>D}{{V2YwFUtr-Yh1W(>t1CG9|-pQFTJ7 zQg4!tvdKte-b^y&BxF4x#AHHk3Juv43R6LZQjbLwvgw@_!157CxZy>{Ez2U4#NJQ1 zCaG7Ek26B&^y?R~vMC4{%ZxSU)EX>G!U}7MsueA1qskbg^JTT9?n4ySvT_VhGscRO zIODEiP1TSXBQ8ttkPn$oNptF!=?Q5T4(pugk8>z;ReNWmX8iHJo$%^Yp15ZmQNsJz zkr-}Vu1)i_GZJ3AXatel!f}Z_LoJXf_r9zX*YNEDUJGx)K_mD_c!qkn!2%NQv$^Kp hfP>G*a|?JP?g3LzRml>Qd^rFB002ovPDHLkV1kFjXEFc) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/milotic.png b/graphics/object_events/pics/pokemon/followers/milotic.png new file mode 100644 index 0000000000000000000000000000000000000000..724a2011f6794bf558e8684706bd150531913178 GIT binary patch literal 1050 zcmV+#1m*jQP)Kl|N_`Q5?q~M};04W%Yr*MeW@e;&gbI_PHuH8q#<3cTF4@Vme+!NakbN8n?;5ZEPc z5g^FD1m5}DeotH%+Y9D1PoNVpEGt_EW;6DDmR>`^M5=w_y*_3QJX$kNJu7p8ws3S= zDQ^`B`j4JA%@gz%0ahP^b+QsdCI3c6~`8bh1qX znebp+Xl9#0ytOoXhzlgbMg^fq4QIFVyq?R=;|I;RA(dm+z_tC=3lx3o1aiV51>c6U zG@6>{0*P?VK;e5G!432zYC#oi3nap|0F<`X z+oZ8DvKX`yI4RWH@Gxx2nmaW*V6mAKq72o2K3GfRl`c?_`jl$I}Kb` zyQ&ph)(2OxVywJtEU(+3rO%h*c3?8jgdCIiyt}anZA2nE5Z5_IRqhicPe~BoPfpyWg7-FCpF4LZ%%05O zMpgQ~q{2xiC`9X@0|v)yp$;K~$oFju0)y zh8IFiAQ}hTJ783`{`FXi3;rzgu;@b z@WQYp#;G7ZJ*ydz20B8Q!9oxrsLjl?fgplVy_wTkK4}erUR+FT5b^@A5Qq?k2Y}}O z5HCQyEpqwzn*j&Zo-Akq1A2v+C4L%uwnf9sWJdiZ`-J`jX`a(|^B>f24$!-P0(hwG U*KA1kG5`Po07*qoM6N<$f&*pNhX4Qo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/minun.png b/graphics/object_events/pics/pokemon/followers/minun.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7eb74fef5646b27f3dfb71484defb074670c25 GIT binary patch literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toJY^XJ3Pz{Z7z zk%lK%Ccb?6vvA`@!@x>LMn<42H1M;|KpQB;S>O>_%)r1c48n{Iv*t)JFfc}Xx;Tb- zbiTd3G4GIp09yio$p?<5%*yNwPx%OL5Y19CYI@bUwckN|XO8R&C-dN@75BGwN^a2K zyQ1sL!k~W#PfhPWUo^)cY^m2&t<|0CHb2Y!G6EL&OQ3+ znb%UgmA;q?Q@y4ApYFT(#6SpW~I+Q zFZadavfZ-3OoxIixRjQ+%tNIAgWkz)|AQYGxu1z=G-o*u<7NFnSJzqlTp3kG?rHQCYFs0RaJVX_28x5wWq+000000000000000=*}(L00009 za7bBm000XU000XU0RWnu7ytkPLrFwIR7i>K)WJ%_Fc=5$QN{?~+8vah>`r>MW$m$= zLIqzyZ-Th{NK1MwYiA?AfZ#=oFW|{-zMLj7O};fE9STDKr~L9y^YxTouS=IMUAp|E z^tUm~)e@Q~&f6RLOzEJv9#Hv#(n0^t0GzirDo7?*&>|5o!?tFGBytDM)Aw=gwKPg7 zt)%JDBA60N!tYGA=4q<^|?Gi zHjiUwG@F|HIzJ7)dFh&ujm9apt>=sTbqURb>{s7k?P+b8@w_^=nmt%dP4o6)u`Z#- zh0fvI(mBxDsH?kbR%<+YaYkp${Ii7?Uj&Su$UbH4NOr;8nbzgV9m}r|G!F(l=*A6Y zM*--W_th8C#Fc*-jjuM|3Y5bg_VfOuR8OFN2ovB6K(Z7q+U>FDRXDH3!%WbEta*M-lDfNm) z3RY>MlTfl&8gq$us6woj!zHD@#hbK*1{_5}>Ut`5NIAGmO6ngVTyb&`{2zRi=6&;~ zCWjzyd4|HLKfd2QPXV&YCYx-s$tId=<$V9s2wkY+K?Qm#{+kC7dgoY>aubZlf|O!E z&o6{@gDye3g=XJUG>g6Whr78wj0@a`af1TF>?0SrX<@ss;Gw2pO0)FFs@BKvq!cS7 z<-+8(9p!Hrkbaw-#JqKoVxjp|#)JFZhB4>KIaS;{qH&uBIKC#A@Tjm~rUjuzn{M>j zFXT3ixrVW&K5zD0kZe*=Zp=Q-zBFjyra^BTqG;UfLZWL}v{ZeYD~Ovsu{U>K;JFtS ztnJY+$Qt=mOL8mGIkkAP^!eeP9TO5A%$1XgIp3v$$P0X#9d**i7#pgY=(=(DwCp~* zS}X#y=)E-B#V8+nPaNmj8NCQBSHuTwfxJ=0;@;pU4p&e^57!qd?4SO6dtDudfxd5i zQ!rn!Tsf}eeTWLC#9vvVdYB*Mfr&<8ffjmQsMNgOvmdh~qq6>#cxSnKpcdFg{Xk9D zT0dFA;yZDN6>5jzT9%!E75=1c2Bw9sjozOq9gzkSFQ&>dw*U#;f-PVt0c87Tg(MKw z8|0AeqJe240yHJBw4N9iHn@BNvLRtup`YAo#XlrQ9{*KNL7A^8^AtCAM`C(ac0RaJ#VG%hoN%7%H+1cR$0000000000_|@*h00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Klrd}DKp2L<&9XOdO}hzVhv22538i!q z_29TmX$fRjK{1_-p_U05WH+(Ss)vLYYB`IYhFG~wp&4AXxkHW7kLum&?sN@R3hB_r z-*S5V-aW5mkN}pmoaHR%UV|}Pa(HyV{BH*|%c|40Y1Ptlc5xwcHW~YOsa=B>6kqC-Qh2dR-yN=*6Uf2z!uqrEtTv2zO2MsTBH<9j4^~{xK0Mw@kR9 z7HpWcsXv%XVZmCXOcp6@`zKu`FHjaa_+h2+4;eA#%^;RoPD#JK;%5xHKw3QRr8XOttJe-2N- zyG2u9=Q_qpAvv&MLQe>DUd$dO!t+E3n#Xv77-gJh@%URs2oKg`F4Yqu#zF|t z*MAN%{xU1ECmOWF8>4E@^jC4pSr$@ZY3m6--+C^DjVR_>T?%{UZI=rHIuW`oZwLJu z}em@isaWFB)fA zNQIsEz5L2i!xcYpb|4Yj`$9-&(xPmSVnUny!T8}sekx)a8vk@NO!K7332bz=4piKgG|1IvcwDtohotg4q hn1F`v;N|?^`31)AOLz^(^Jf46002ovPDHLkV1j5WRTKaK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/nosepass.png b/graphics/object_events/pics/pokemon/followers/nosepass.png new file mode 100644 index 0000000000000000000000000000000000000000..c407b389206da75b8c0f9e7a0b695b97b2bb3216 GIT binary patch literal 705 zcmV;y0zUnTP)7m000000000000000RdY%{00009 za7bBm000XU000XU0RWnu7ytkQH%UZ6R7i>KmA#MCFc`*@F5K9+CmpU?NGEg~>TOJ@ zNH?>xWpO^X4kQv&jRbOU3qw?AJBFzBN~hzW!>;3x1lkS=iJ|ZIdmra{9Lpa;aH&gO z>QetrF~(MZ!vKB1Az#(J-kjnc=i5`<@^Ns2&j)bMPw{%k5`V1`vrBZb(sGwWk7C@ zu3`X@dq){J`F`>4DQ~QyW_w{BmMFLTBJ8-+VV}ku*4jM=`*_Er);r2!^>DpdVDBJl zb^}~w%x)Vq2BMg8j<2>@7mh5&dw_VrohKOrH^ZasY@n3w*i nMmTtYhOKk@@B#b1@$c#vnAR%3PJjP`00000NkvXXu0mjf#RocE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/numel.png b/graphics/object_events/pics/pokemon/followers/numel.png new file mode 100644 index 0000000000000000000000000000000000000000..96307f1364bc85bcb91c0a7512767150efa575a5 GIT binary patch literal 848 zcmV-W1F!svP)K)jw<7KokJ*8v@qQ#e~q1cGA?Li@An| z8cHGl0wn}GcW_H-Af04n8-(-kBHQ1fi+v4bDj@RM}!N$*Z40G6?gW&9_B_)oL4{r6ZYmHuFj@?_0^ra^9BPNy2IY(rSe zwoT7Ljt;CWgZf0yry6X--5vNO(>&qTg#jscg9E*G?*!Bn}9l!ZB^>A;sEn-V~50|4Vqn{$%LxINAANdsRgn@%|)o2m^j%!X;PQ3i!4V8 zjfz}AGN>Fth!O=PYXfQzT)r+!>E=^ldk%Iye3)SXj`*Z+CZ1ZdK@AhT+nc-dWuclU z>|-1r`;cLv?eIy5&p@hk?~G3){B`y5HGGifuw?PX@f@f5aPHi~q6rYLt-`IiK+>j8 zY0$OL3Qu9dN->Yt9kWWQS-m|^Xv}?g(S#!yM%*LG4gK67xFZUCFq$>hVF9OG_5GUD z%`j;8U=hN2=}B(r=8$5O_KNiVdWyq@uJ8C4-lZs@7`!P$e*Gh{j3hU7e>lLl*DDq~ z>nRRf>Uu+?M%}o;%!@Zm>uh+C;(WR_{o7kiY)t9wT~r+v`1lKVfA&QJ)dBA0H*kKE z?vw9(WWum`*;Vr}Ph0x^Q(Lq^akx|D6MKVdWS}++cN6AHCc*p)4Y$7N`jsv2Sn;iT zbUUP$VLswD9%DR>Z((oL4akUy0`7BNf62sYHVGZ?ZmlSxnDZM3V2r1X@jr1zK*rO6 zd|o7+BK=;AT`mfYXBOL~-Nxlt#I~}`H*hv7m+SEejj`hw;;W#I**>zgcn?PiAgeA4 z0(){?E~CT~xS<2NK;@(@6+kHd>>vbgMxtPgR1m75#3}B2vPIFwi4jrC)U>IgrQg6m ajr|SB5)U{l>!t?)00006Gi9w-pG3m*9Nii9DQ7Hfb00000?=$W?00009 za7bBm000XU000XU0RWnu7ytkP=1D|BR7i>KlRrVoZJI@R8Hkvr(0d+{zvq7yF*zxT;K&vQ+y zY1`S(cK&gSS5j6;zwp0qNx670IznEnLi4sI<>KvKLpTmt*)Exj^M;(SPec*2s@-z* zvz>;Vo4co?0bpgjrC}2(SU@ zGsK8%j99qfXq;+#s{e33(xt zS1IceGYlm>!vs?=bA!wd?3sk@mE}z7ETEx;XN0^70f4z-l}wJxa;7w?eQYFrxsd0ZdMW%gt;A4| zIOiTwy+l7vCowd7obB{R&R8hC!kShigNNtbBjQ{EdS>X0dcnoQBQIEE7X;}2(!RSf z7u-k;a8?7lxp#)&p=!6+*KJYMJX`z>*a5iE^ve1=@c&`)hw}~Y+A^sEbtuUI0000< KMNUMnLSTZP%ok|@ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pelipper.png b/graphics/object_events/pics/pokemon/followers/pelipper.png new file mode 100644 index 0000000000000000000000000000000000000000..b4097c06c22ce1d3c7f574e5552d4a416d19180a GIT binary patch literal 1014 zcmVFN2Ak&yub0YPbz;n7KnX&H%$nK4OmFh2US00009 za7bBm000XU000XU0RWnu7ytkRY)M2xR7i>KmAz}*Kp4ga0T0SxMB`HY2Q<(Qi7}>- zt#EaO1{YIQN+-1#BRsTV0t(3>D8hL$#oaQ?wbPn&s5@jz29t(RC>jcd&_5sqkHG{S zl0iM)hb)2#5#+q$j)w0!^gFNXd}k59HN+m8=ngf#bxCD-V2 z`=k|AERbw1A#3IGCD-T^iHU&;pk0&(1M&8KEVl zjpt7g(ZurVhz`ij)OTm#Oc>PPeXG}a93Ko$WPTXg!T^N^cuYjMlPB)ltF-B+=k0a| zjutbhG~RoSx5i*4Vo`op0|gK zoJwwSB603ssQ?3j$8<$`7Qm!LCam2zMB=u1NgH}l_nhcKYU;)8UPc!N6GWsZK%)WT z+bOHi2!P0syb&fYA%4u6ff+SOG*fypqwC72i-{ytZJ6)|RL)EsC=u;1fR zJU&;g6s-xDpju}y%?Kw4=L3xu+m#G2NBi~I)Q)s2dYY{}; zz;sFoz(FP8dbUG}TJvGzXNahL`UW*X?Q{qLg(fxlA|lG1Na(c^ev;DKW#D>(5p;y?_v zK7X8^J284Vqb&5?lK+r3U_|VlPunMMj~cjbf0b`4B{If|^`fGLiOJr2V%kc~1T)?h?*x!cNiG0{g%=Y~?$VWBULtGl(eBjmH-N+y?PlKdL2@CJ-% ztYh|nBGh9BBylT?&%?*Sz~)yURmbDvZ%)K2s`EvhC{{wFwL=WPN>>yoy0q{_!^x6+ kcJB)L21>@)&$*fU1Ixed$&Iw|UjP6A07*qoM6N<$f~g|XfB*mh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/plusle.png b/graphics/object_events/pics/pokemon/followers/plusle.png new file mode 100644 index 0000000000000000000000000000000000000000..3609cf46f5b2f2c0a90365dc6271daed918d7e63 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toJYvoO-|<;$Nx zA9kKxnYhz4vQyKMk&*FXVI@!%8faVh>OD}1v%n*=n1O*?7=#%aX3ddcU|@{)ba4#v z=zM#{G5e5#2>XWsi6^UeJS=3J`FO1oVhNpJ?Gi&b-nD9 zpT|kI%Ch~HcdD=a(rS_`xjJ~c-(0Kzsxz(nL(kk`D=j(ub&hS^B}YS)X5DvnbB$ z^S$S0z~ovz`#U#B`9r%8Yo)fGe8;hHulAd@Ee=BO4#wRw%@M9Mme_v!&g4t#XVlwo zUinqD(SPzvfymCiY4IkS%gc@aZtA+R>|xRF_$fDDAJuO%`Y$jyBlT`iO;o7e%An)f zw`RB5Zm84mhP?qrho`Hb%Q~loCIH0L)xiJ& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/poochyena.png b/graphics/object_events/pics/pokemon/followers/poochyena.png new file mode 100644 index 0000000000000000000000000000000000000000..2c92a6b8f4cb1be745e76dc2b9fe5145832f5ec4 GIT binary patch literal 551 zcmV+?0@(eDP)JNR7i>K)Im$bFc=2lu(C^UacdB73cIHUO6foF zrYoECC}E-WEO^#o3B3t=uM9`&uQYAhmVENm0X|Y@%?lHf|p@@z$x53yE9F_Jg_6 z!l{F93z<@Z#9b(p4Pw8L?JYg-54cU#Uchn3h8gBsMN3YOM-JT=GUiU;I@T)Fn3wEv znfT>l5V}psD5D&AtW6O6lqt5W<$f5tFZ`szJIC$mLfcP{}}&cL!4gj5x~ zdVkNL`xS}%)L9{LTxY80h{Z0{Wmz^2;;!&Tgs+xI#@g9I4R&B#T$*RfS}$~4c#&Ms zZO@bB%(AB=>5Q);X*JBw7f#`ovHM3G&AI11w}OBPBjJum!Wti?_3S6+|&TrxRei!~%egK(JzTgV%)2;vj002ovPDHLkV1h|x_yYg{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ralts.png b/graphics/object_events/pics/pokemon/followers/ralts.png new file mode 100644 index 0000000000000000000000000000000000000000..f28f077b4ee2e8bbdb113ffc4c7a55cf30b4b0b2 GIT binary patch literal 476 zcmV<20VDp2P)K(6LIyKoADtfCK`m4&n=FbC4!6DJ--I z*&@ZY5)0Fx=L1*?K_xdN_Y^54UK+~-D^bB>+XI_>7n4epwH=a;ASE!s2(VYBQ^qJ=MYDD?d5 zjMDA`WR@cuEvO}PD73n!lDwX5YN}LD0|kgpLg2w9Ap% z1L8)vZqUy*84=HDOYE-)0pSO1Z^t8q_-%>J0!O&7$ugIHt^F0HLMj zchc!Bmic;_i=E7tT!~$0l|tD)qDbLk>t0KN8-`tfD$KjAJ0K~?Mc3sy>hCYwg}OQA zuBrTp7U)TVE(W|1;%*OFr%&^Y`{!Do?QzrUfie1^poOx21;Aab17vu?-{k`^)W0T_ S$`J?v0000*xp6TuG4aVU$=UIl;gP|iDUo>@$tfujK^a*Q2>}5C>lL=V00009 za7bBm000XU000XU0RWnu7ytkT=1D|BR7i<^md$G%M;eFg zzaW?$8sDsD#CCiNmK&#cFWx}{N8m+=-9xUyx%m)G29kimEaZ?Jg781!gVnKRVo`3b z84P>ysJlGse9`l!K6+*}BPERx^K`%Ud#b9dtD6vt88OG?$NVw9fOyvBO#l4}-*pH9 zASAz=&BRTA*owEw`TyUWi9Ua*|I3Wz*_k}BWykAe;k$o5Car5{3T*{l3>|WQ%?x2; zwk$KsD#03^;r^kiRCsXf>hAdLywFxWzZKqoJo5JV%!o8o$Y`y6tf%h;r@9+2Ma^X9 z&Po_=10Oxg*?L-opc>JmM?Zb(7?zwv&Q^Ox48fG)K98fO)E%OY&Kj+1Y1A!j}Lxnt>4?d)(AgPldkT*6%H+v zg)f$tbr->tX5miRJQNLY4?H0xqU2L9Q;rBmpwPf}p@dM^8z`M8a`Lnhw!*T!`Pg6YpcIxZ2q`DRecT+mC>w@0T?tPzi>q z@8{`}-ZN<9X&r#8)!E=_N+wJ}*2>cC6iD*X_4?84eax4_4J|CS@HMs!$E+TuBgADm z+Mt)nl$B7i3XHFS+8&@xODoVkQbvKo&Jm4<@Ba{t2F3NIu&#tO(!$X|3+v~uz+dYH zf0=mi$(s>mmPfFsgqn}N&bRHd;UMzlHx;Pa_cY6r@1{m@J>r8wQAZN7?XL`LVa4aX zX4@^?kq|Fsw4YqEY=xSSJJ-H#`GFCLC{`;tb_IzW>|>HD z) zT`pr-b?G~~Vl8z3Qz%w};5AV_vue?$NGdi$&6K?k`q;)dKV$jeL27uYxV-c!K7XzR z^qnHkW9YhZR|WQ5>Frm1GvSJLVA9M=As*W2(r_g-JL?ep!*H1+70)59xYbEewdr{o zQGq0{$I>M>u>9mw#c%$RDyA}yl7I?vV3&ktG7(ZIp#3~dnra{I^-|5F02V(4KclOw zN?-zOUEpyQm|?}prD9Tu{U?KgNG{qHG3K$5yvgWV5&J4nZf&9F;St0))V_)@kmpW`pb0<7T@Vxz!1|$l}O{%TT?sXcw{9P5^@V zG%u{MIQ*OMjs^3q>w(pxHh4vMENC#d36RF)8g@?FARv!#rx_q2g@d<&R zHre(>noW$ro9d-7`A#cEvf7JaZz`BFy}wx>sO^8!xMEIb1y_V<9G(=YN98Y*F$#eD zo?yXQELYSE5ca2OmS?^WzyC(Pq7yb2kl()NHxv}B->FJ3nNnzQ^ae1lH0RaI)X_1k+;mPs&000000000000000>|J~&00009 za7bBm000XU000XU0RWnu7ytkQ$Vo&&R7i>K*2_-YKokbx*;pE0V~|zHyD|c#=mWAG5?d!U=B;^k_gYw4Lje+a}FKC~(8ca^G zA|EE*&F;&TAD)8zPBt6I^@z*1IJ;`{$wHU=rtEHZzk`9y>nsb@tQIv&xe#Z~p1wQk zv+D+b;tLTQB61r{2n`(mB*Zy1SOb_I^=9C2w6@!6V_#D=8-yHn(#c}%2j!mEodrclxt9f6jFn~>Ky?hfQ;snZI}SZo znuT}^gA@Z}&nTZt<+x%DG=f`oK?Ew0covlQdv0Fv0{xH|Bm*4^gKuD)^foKdS_YyS zTUiA{G{*C1Ss<}Ox3C-f7!X=OZ!VOnKUACUlfuRSzRy(0voa42%%~UxeTbrH=I4O~ zmd>7Y%X5Rwf$RDCjV)cY4A^mr%prsoW1w1uY9HLyqVnbZ$vkag$CY;&+Jp6X8kq5H zDwf;wxAw5(YM`f9zgB=+0~f5pwx-x|HIP=%%}0Qb(^b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/regirock.png b/graphics/object_events/pics/pokemon/followers/regirock.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7985681f636f1c9bdb9ae8546f50b28beccc19 GIT binary patch literal 1074 zcmV-21kL-2P)Oqf*~zh4IkBOUVJRU10000000000ziMr400009 za7bBm000XU000XU0RWnu7ytkRs7XXYR7i>KmN9SJMi@Xp9AIeaLc%f!Eyt5-s+N|7 zNedKQq+T2p$sjRiwRDl{oDsA`EXd%HPRXJcSqcPbXm8e{c#ELa2)L0*fExT!{f?3- zQW4uUK)0M0zN7RW#XAB7_&h$3j~j&k0~3}%_^&KSHOvQc+!!r#wdeFx_+JB6`~hKj zHMM8-Qy73TJER$7p2@Qbg}Q%Ep*DV6$l|9W#+kRjH)>B;{x#koT~hL$@3&xo@*6GS z10jkSVAns-1=e_fG@|6K?@ysNnhQ3tV0--n2Kjf@Q6`XQ5>1{{^QHgt584=w!vgM4 zE{-=dj=z4*2l7m;C<yg-2&+XD|AZ9fh0u z;OB2_(b~uW-@kfwUdsg5n8dLiibuXL`mr5{1$;k_4>mIp;rspT(Kvnl))*RbsEZ%* z(_?W=3mEUldt`>p8Y`CPiFou?)f!u28pyMJW`?-ygx~}D^lapvh*jTj4_JW0`gFx? zF631!jx&KA1G&=bGxQx%n1Dom?o~d6EQzlusm+KWDsQ+pEAD zC&Ga9%geF(Ylf{nC&F$euq;YCqK&((=Rh6#YbOaN z!fu7tH43^S0}2IGvXcbSXlg^o(oHjLnwp2)PPc8(*(-DYt>u6&9>SLBVTp6=_70Ol zDXhPlPA;w-Fx&xKfRW1V2g@Ed2Y52|tbAZR0A-Abjb+M&HW6Hi1Iez5C#Xf zl;vV4WA~n-tL;o+ZNi~oc+7QBn117~<2vRkg~e7dT-I??p$s}5$8eW{reYYmfSiEr z(B*HXa4`&zE+*%r>ruCz3S|)4^x8|G>MH3bnondA7VjT=_6lk4r6f5_g-I~?_Ch<_ s03h>qJ&QTZ2ZtYbe!kj8`2UW-0mRGmqRg=|ga7~l07*qoM6N<$f)!`#hX4Qo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/registeel.png b/graphics/object_events/pics/pokemon/followers/registeel.png new file mode 100644 index 0000000000000000000000000000000000000000..ad188426fe12e4774614c328b06cdfe9c5df8dfe GIT binary patch literal 845 zcmV-T1G4;yP)K)W2)nKoke?BOKn(5sJZ+RpVq$FW9AC zBw0}e?i5P#Xgi7`(4@vhflhLSbNLUtXUk?Bf6i{roSdX4S0it!Z*0jW^uyboIWqtyMzm`9$7u92x{S{qc6j4a>5EER1(F5Tys~ z1MO~S!@8tbb~ZBaXrKpbumMd+eC`6QrJtn^2p%qxs7 z3W2VfHsB0b^j&&HhyV|0RTjXz<<^}Qg+MFW32%gkpB!os(irsZzFg*>vkB~9l=<0) zz@956fxHpEymyvSpc0Z-e128<+uykR8G_teqP(-Sw)stg?!uiV(XYF-OO$Tm_mTru_5Y$};< zM>ETuEzm?{~* zymR^+Cir!l7*FMwdSl-^AQi3=eOlOvW?2P8Aa3X#LqN6BSMcat;!Q(ILYUOQ!!tDr zc7ms!#5+M2_hn!Ug_Ky|@yd|MvU= X`Kgag_@>}l00000NkvXXu0mjf?s|W6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/relicanth.png b/graphics/object_events/pics/pokemon/followers/relicanth.png new file mode 100644 index 0000000000000000000000000000000000000000..10c4c9943484b306dc773121761a78465e2b0c6e GIT binary patch literal 864 zcmV-m1E2hfP)BX#fBK!WLX000009 za7bBm000XU000XU0RWnu7ytkQ)=5M`R7i>KmN9GFKorLhAKtP!E=~py^@+GkFee?A zOi=|{GL@1hO`V}FjSM0~D6}R~pkN3lwT9v^(7BMMS+lw}Xi}#ToT1HN(>M^~&rn&m z@AL$68pu+}0}Vgj-TyB=-Fqj5?&CiGqnK$z_U=|5qZ|dCNQ3cYWPX%y3`5D30m~LJ zEUm!#QNA&XvIPu^>Kz-X@_Qhts=cX#w>MC$&_DwQNqYxP;~OKfAXm$PwTrM}sbYgi zjxzHvOye0PO0p#ZR?W~j{%9x_G=*#a^`sWd2$7OpmH?{?Fes|f0CLgKr_wlyWrP+Q z2W1MGg;2{I?jst@tkFYwbFLT1{x=&Mpm;Wx4fi>XW1~|Yc&=5ZUWCJfN8d~o&-$|J zKBF<5ymn649k)$qvXDdFCUJIj_$wqBW&J{R7ikQ?J*&S+%{zIuW%+_t=lkK8 zkU+pzJL^}*79ieyH`&pDM5S=_t63>O+?JX`J((ldGclLHE{{A5IK%tVIevd9sgv!y%6ilXcs1UTy6=yM+qm z{D5*n+Ycc)8?eHkn57j`P|}neD$M7xVe#^-b6{=Ncg>MOl!pt_onzZRKA8w&X~ewp zFv}885rx6ha?6_-7OxzqMhbq?NDs0wknAh_Q@_Fm*@#8XYY4QiFjY5IvGMw@C#*U&8o#{B(xq=gf@|?dp|6Sra z$N7L&(VTEK-1_{`x`NlWHCJj$*c-poy7t=C3Dw(pQYtua7^mlk5M%)}p@Bg!9~y*D z3r1bZKf?KZrkgZJF+=>Tv7e6zf1ZZ29B@-e$S^|)!vh>CS*(YLb4}KS3sx9io5K1w q%n)`X>)|kB=$0|lj@+~)SrIYGL2;>pIXPhwkttE3$&mm600000=ql5R00009 za7bBm000XU000XU0RWnu7ytkPZKo|#bAp~d8^l69(A+WS4ATlMw zYpDx)fYjt6y2v6yPL#o&T4)}?2JKxfQ)=kpJq0hxlELU*a*ieW?(>~Nbm*f0_S0wG zUv~&u)7rFY)22I*?+YnBZ=`;hlAXrA?S@1C$g#_?eT^)+@3PcNV*B)3&R70+WMDEVZ+!}$oO|pX|hPf zAID44$L6W9F8fTW{taW%I^S{d%+XN_7ZNlg(gToO$2b0$yaCmx@0X+n-e&*+002ov JPDHLkV1n3+BYyw@ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sableye.png b/graphics/object_events/pics/pokemon/followers/sableye.png new file mode 100644 index 0000000000000000000000000000000000000000..97f7ccfc2d88b4fba2796be0c76c4eff16c74a6d GIT binary patch literal 554 zcmV+_0@eMAP)K)V*rMFcbw~qfK<{6BrGpu{#z*-=`#C zI)*+(CJ_p4WGyu`AX$?)J6neoJNKa~I}l5%6uJ~T_zVf3e~uK#+$fqdWy+K(|0dhZ z#_{kq3mKhELXL3l6uNFBMEcKwkr-SAo!f=3brniWVlH4C36yliT);9(_cb-@TeWy=^!Eu=BPo<4$z~#zNP9W)gH^C*pv4uKVD4 z-j?MnedS#@7P{_}$_1!HR>lGIQt84{QJ))t&yI|Ru7|>#)suRBPUC=?lnSJj)MpM0 zDU0#NcRduo&a-AY&*OlZZq#AaXMR{^Ql9^>AMS(jJ!@VbP{ z+S0aZYDR;mZ@jx_W}oZf*pY0iP1*)s?BBlfO8Cu0BCpNeI*x|XFx$q~sIXl} zY)5hBH>UiyFxwnQ{qRC^U75oSHS5Ciy9^scva$9HiL-#dr6Sggg*T-7^?BUp)-%Vg sJ5BqaKmQQQjNEpV4r31#d7ezGd?xA)!hp;Cx z7>dbpOvOS$Q+d)@>wJoAsgDYkiD>bm0Uyd<>`i$a3xV`t~F$*vq?Nndx(ESzGHHCD<*qiu%WBUMh2CuJLDsHg)Qf z9=+sdndz@Q6c?M--TCQ%{8gD%{L#RKhUtuQjM*Bn6C9C!)Z^SOG2WibtKsTw{*rTU zl~@gUp-*e$bP9P!!S1aZ(VHcY4RVZv&xFQq8T1l^9II0S18bX;XhsF@@nF6fZ&u;? zGPsTeip=>)V~puuVvu7(J#)0M$b<16T32w73lI;7tJffKOjZTslo}dq=zM38Wnzcn z08sGa9`5n(Oy3_q9qKUO3KSW`0ciA6gDlg3!;PU&$pep@UIk+Ze*};Gr|&@by-1+Q zrtg^m`*?DA1rPolGC)C-n{Lf3GojqAJI6LVb{yh$tJoqwKNp^f3tqv4)w=~8=vaqh zHMhisc8P5W#_+Oew~`5cJ6{H)xLjaybPPY-3hDj4Jp)B1L=q{b#&jtyYE?3E0u&4| zzZFaYVE&KLj6l`{Qs(IO20|D@=;R(I4v2+lSk?UE!vqF1+_;7ef(ll%GGHXn!AKN} zjDtc!$P6II@&H}JPw~O~!^bf<=GT0_6I6!C0b~qp z*8gC$o|#k}u=a$t`IhC)4QaI=(?k#rBfh!W=AaLaQC2WEd<)<2a@4nt7p+U<#7!1u z!t}!@dh+2RqlP;{Wtdju6Sq9R_I843=py4`NLTq17o^`z7p33S>18^@tWUO(u*7{q xc7n=~swykjgk(Ql@JCvd`BJ1E3ZFoqjZg1CM&9dp_FVt~002ovPDHLkV1nUvKmcMV)KorMM7AF>#OR-SIk~`NzHzp?! zsTg6m9bQ_ebJUfk0x|I~B$WrxC`Fb&EjsB z7yScw<+&V;S68Yy{#YBdxQx>;Xd8DkFQi-y?&d(LY81Y21S~_D z2LeoT-!U|-Gg$KxoPKAsGh3536B?1H^Orw2{+Si5nMP$krrPypx zaMkSV7E=`iW7r2)kkCZ4A5ThF8JwZu@!SY%L&Mp`td+wzjJ^6auN7M?E?~T17=;y# zGsDqjiFNicUzQ}xtYKyt^Ho)N&xi9owUWq?%q`=V3L#}Z$c&&iEExhN^+ZY)eghHC zRz?sFBg4Vi&O7%f(N{5wtOEy?)a(J)gmLauBd85a#$u#8UkG}crs>oQqM>0=F0Ejy z{10L@wgzD^Od7_6DdRmR<4O<>4Vx3oLlsztB9DzA8dhAU%&J;MiC8RHubS5E09eB! zBJz+umxJmE#4p2CSB!YrOfw;;m7s1aCZejj%8LYNjaM9uvz$2$v{-Jg`?(QBLt6AU z*F|2xvgiv~=EuGfM8lfxq(&(!a+y|h5@wusSF>#U6+3B&l(Rp!E>FN1VQE34I0RR91>(!B%00009 za7bBm000XU000XU0RWnu7ytkQs!2paR7i>Km9cBvKorJr(G+r!p+lAq!X^L6Q&EQq z4_46R$vHA*DtKy^o{XU2U4axbcIc88TF4r@x1g!Ku@{3S?52-2*U?_!`6HSzWo zR0We-#x%W^%@*Std|>PuN-U-v@Yq9A$I~ZgG7m3j-)33!G~Kzq z*-gtSv6up@d^id?1m>PU-lXXn49clnVaGhy?a}G@%XpklNj-NL2JJc?Pj+{%aV0~+ zCFfCW677zD^`Fg0<&;<)a-BHV24T##L5vIA^wl{E_F@#&takXZxq?WHZu|ZDv@i)B z!@1E$P>{xvF-$`I3iSMSOE&bt2qLQmp9d!33(B{yF@I;N^OVkVhS%F0mulR5hNFG3p~kA zN1y26_}g2l*LovZR~tUptPNGoyraYAJ0m1lh9z%xILODh7GLnPa z@-m%J8fKccp*mC|{Gf=J2314H_X7YqqDGKhp7_33{fiVrl>O?L=JHAeDYC`xKMg5Q y^6FpgWxz2!bo~Z}bmGeo2S1Gf00003K{+{radBBm2>}5CVOdcjAsOk(d3jMOK|x80c_{z@00000$^SVm00009 za7bBm000XU000XU0RWnu7ytkPFiAu~R7i>K(J@QIKor37;&R*=*Dm7XP@J9IP7JvA z=(!1gfkQ3VSjUtmTM$q5BVGoc4QsY0QqDPi z*|kS#NDW)pQM3v5)3S?C*D!R~JJvh>`s_99*^}Da5<|CN_5aS2&zpVc{G2?GpPn@q ku*R9p{&PczjSGL-H~Sd8>GSk`W&i*H07*qoM6N<$g5J!>m;e9( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seviper.png b/graphics/object_events/pics/pokemon/followers/seviper.png new file mode 100644 index 0000000000000000000000000000000000000000..e8282af5eb0578970e5e4e941e2100cbe6235273 GIT binary patch literal 957 zcmV;u148_XP)KmCs8XK@`Ua_7a$0)*pltJUChpje%@7 z#nLnf<46xZZK>qagY*yt=^@at2R(=dDb{2E0#88^HW9US+)FMMj2BaSaGn39Z#O^Y z&889rd-I+0-JSh>=FPq&ggn+`^~%UT1m)}9IluG(e7SaKHaOQ?xOYeJfIqjTUBWrf zx!%IPJIXK7Oa%#yEY8L(=Ow)7p^iosyl!4-$aTM>)r! zX4LJWjz$#?A2?l)2~{2v#5)=(;7~&7LX>k%N+l3OLff_pN%W`MufDi-L%Jz<4{@qSLUgw~NUx#CX1esb+- zPu5Dg%HNWKFaj>t%1<=`76MQgv{?anv=9;jY0QUj&8UUCu>YPgtg~vZoZRq~AQE~y zP~G19$b2Ow?XK6Qmrox91Zd#MOrVSs?g;cFb^$_y4Pn(k)? zL@L(+kvEfWiG}TVg;6~@n{+lV2Ed*$K)@5HqXegw^o*VBKb+@p+;*I!;<6_5agp9&rV1_Jp=E{*fIhACvjIZ4s*QbL$1Kd>BI zkVqJnf4f`13KY=41)&D)tRO#S>=@-8DvGi(_97KI6RYA_O3Sevj}DgjY`e}7(4XI} zw=`g5WxSyBbq41hIPDH&Rwp{O#40f|(i*dztZEVn`|6FrTfN?{XFLo%HajRw*)cl< zL4q_He6eLwMoYH97sjcAnhSdUd>;WJGn{Er0utT#WBDh{fK+2(?8|O>if|)4cnpg- zM;HKyD(zU-?jK3mzv8`uFN1_iIG8Zp>Y{8`O#6Ksj(qhiAhme*5qyi00009 za7bBm000XU000XU0RWnu7ytkQU`a$lR7i>K)iI0IKoke?@kp?+IJU6RR_tt!w`qp3 zEM$T>g#?ly<~TcRudxv<_X8Zb99v2H&B+#W*lca1m6K$5FEdGI zIZnHK-ETJezn4iiA>^iR>Yr7x#aqf6noTUn>}}-*W?#2~1%c6o*pAs-w$MYfw>L1` zq8Tw+uJ{hSiW?0?U@{?GI5;%en>(|*wT2;L5F1Qv7!1HMIGu}`P#TJQLm3$Rq}wC` zN`VHQw%obM`<)GaikYZQteaS25eQM2i3g4ka5*w_=YHN_+j1xho^5{CO&Iq8QUK0| zttOUiAOJSIu6pMIMMOr|SESowxRimi_%dTn7Z*@nfw!JX^`jZcKu*_>zV1*?TLpS@ z>Y(9OpwJp@ypzw$qbc4cZ6-EPQ|2l-p7T>Mjy5IOOh( zdP~2}76%S+0o0?c#fcn-$>LcRsJo~)JauzGe%NN)>qCOYNMRrRrjw7r*->ubbPyb ztsD@?fx&kC0tTA}i}{MHu2bdxEl*KMZXX-{d;CZF3hTadpzhtVt?apOS%>6Wj)}U5 cy8mDO1xET)n@>z2S^xk507*qoM6N<$g3OFq#{d8T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shedinja.png b/graphics/object_events/pics/pokemon/followers/shedinja.png new file mode 100644 index 0000000000000000000000000000000000000000..34c74185d9305b143c13dfc8afd561abc42cb15f GIT binary patch literal 693 zcmV;m0!safP)FN1-X+gQM!Fh3sIWb8A0RaF200000K(!Yz_Fcb%H;Ul*M4>m`$)L;vNmKq9O zO1A`+Oo7ri*A6$dOW=kMF)nZNR0{bE0vQ5@ETz-IjhQ-h%V3)jb8zo}shnSDDRRgk zkT;loZ29~2nSdOTCN(Xm_=ln(`9PKzS#*uO2gEyvBfC~y!0twGs#7G z)k}oOI%$pbZUIGSX|~0q9tmXEeZFc!Y|)EFEE3VHbLXmu!mTkEtev~veV}e)QO1P~ z>@rGCCNvQ1YE$1}D;A>bGRWy>KHc&T3@MX=G=Ru#5aMlLzGk!~TY=m#z_x*AIdKjw z5^*Qy5!M*Q&EliXGnt9D14H1j{ZHvG-zf4nz_3%G*%kuaEIvV!o6JN@@JOytcMVjR z6=VplB+GoWZN3SF&}1f_4|%ek&fs;R`^Z}_a>qA2fCRq(lNay}wz|0BI1IwwC)Hf; z$O*m7K`-#kM!srge~V{Dm>O)iLh4O2$Jriv4vyQ_ccd6s%6T04 bT*vA^P;yOVVc|Su00000NkvXXu0mjfCg?&Y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shelgon.png b/graphics/object_events/pics/pokemon/followers/shelgon.png new file mode 100644 index 0000000000000000000000000000000000000000..5d959acdadeef4b37483645686ce427e556b07a0 GIT binary patch literal 596 zcmV-a0;~OrP)iGe98xw*;d>G@e%X#oKN000000000000000Z_Pnp00009 za7bBm000XU000XU0RWnu7ytkP%1J~)R7i>K)z50%KoACSgKpJZY)UBPqGUp#@hx6N z zWtaab9=yUH1Z3E>&E0je)yo^Vz4zGLY^1i)366`u_3;^FvyCCOiT^fM@xeAH=(PVG z5zp6;Ol@tPs1Y0v2t!%38;t@baNd15xG)>D@^ z@N5#|yyrA#lL=;NtNq0E;muXOfVh0)Xl~v(5r=~x%m3a zZ8@BcTwZ`Fgl;{A($M(&YCV$Ur;P$@UHsX6)jeW+tM!7JHrBJ|=e+|EY!((k{xi1B ieeIEFN2QvALm%K~Ygz>B)H^ISHY0F#rGn-7?X?00009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>KmA`M=Koo#)uvkzA6x5ByLRF(o5iYX> zXJd;RDZ(UEDIk9%@5>-^fjnpZBK#L-EVreO3{)Rr=cLzAQ znJRV2lMw#6_r7;OY=h8aJjP@EH*x&{KOFh1Y(7QE0L*nWczsh(|Iw{|r(I zxeyCTF@&Uyq8TfhOyaoM&UxZvn-IR-dmR0g%&3{ge{V1)&n5=(#Auo$;W*0o$60J7 zLNTdLp2F4C^TcSHA5f?`MbzqLgkIyIXU~NYSbuKKWSKW;92Lu&z3AX_ zB7}yF3nyGCLzH0x(JT*(FB!)T;nmc}zn#L23xQk5hb39wXWVcXeY;XuI!+>lhKv`( zO<{2!v2|N=)*GT;-NE(Uk`VTls(x@VlQCoK*6knnDyLi+HB8uL!lEgUMtfz4RY1UsNDfFs>^S7rF@}F2ppXBU8NVq9>Emav;V#6>Bl9 zt%O>;)o{yrl@I?AU1%c;;;UYDH3PWou+&}UW0MA|DzNVCxEQa5QoVuK9^|+J-3w_w mBb_hd^$M(}1nKmD8GiuxGpc)naq$oU0000Z@NWCW^018WqHUj_e$1S7M9G@owf{8N0IPZrHtR+n)=q zU%oA~^2~WD|IO^Bi`QK&OA4RGt+9FO^4l&=4&lqncsnDyYi<>NFD|gVMn+0X-}v6k zMf>#%!!OtH-l@2yu_OG&(*}K4&e)RH#=TGyWKU->6F>fR5rx2Gfg-WV! k`|a(_?T_`={Ez?1q;zffVWYHtMxfyKboFyt=akR{0Li4o2LJ#7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shuppet.png b/graphics/object_events/pics/pokemon/followers/shuppet.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e30755ae08ae9b8dea4f9c4e18d66434ef6517 GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m!cGVPa+@BO{}u zXJTOENlin?#>RyU7alYWoC#Eg288a<<^~FJ7I;J!Gca%qgD@k*tT_@442)%-E{-7{ zoo}aH%xhKm_ZFLP4Jo2CcBt;Y{b%P# zYxO$z&aMk{EQ_E0S^VIBfuM=AS)};o7~g`TkJXB|dDouyoOj2eJacc{iDTDKn$JjR zdCGZILMwFFu?fCELgVh=wy-xSU79iHW3Y1hnVGU1)|z^G9bMG3ZPxj>7R5`SytOcK z-sZHj`<2LZx0f3V@4Y^KJ5iu5CtqM$Mb~DNLmdAz7=&*fe`K?@ac`8_A?XL3_b$B8 zdC_^wH}U(` z#gAU>t4!79dsD2?Xr({*%hs?#Q2A4 w$72D-3xeT6Rqc~n{y*3M_ujcH^WWj03{LWk+!k<0O$5c1r>mdKI;Vst075_7oB#j- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/silcoon.png b/graphics/object_events/pics/pokemon/followers/silcoon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab4c7665e4392085c397cb99a52f474fd2ebbaa GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x1n1U|{eUf0jb z)h>`c7|K|L9IdAXM@-Xu%x9y)!O#8aJ*Y5s%EA#N9>*JogH}96& reb!O>YU0A>dgab%ll)`<-TuQMv97=WrqAzNpz!o`^>bP0l+XkK@M*O) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skitty.png b/graphics/object_events/pics/pokemon/followers/skitty.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3a386fc339917144e8806224d5159e9bae8791 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m!ZFXQHL$&xehT znVvs8XKoCPw6u(5WMl*?!2}1dEB6CMISV`@iy0WWg+Z8+Vb&Z81_s7XPZ!4!kIuIj zZ1WEp2(UevJXKL!XqALwtHy4}BpwBU;#u60-A_#RH>8!Eo?c%jyFk@UW=q!Yr>;&_ zMISB88A@MWSsDEN{i8b{^M(BmP1sicBR%)ja`tbHUUT+6{^DsY=)rI`T8M3$$Kttf zKXvad^O&V7v9jDp>Cl7jO%E$qZ~N-PqnymzHuHeX{{m0RK=Tqc#l!;F4Z<^DJ#9(s zXA0C&N%VJNJg|hj<)Cfv9HF+qUgl@wo|aZiRCcC(e10rvdVGzHr8>_$uH++3>!S3} zxGPG|3rqSft<7-5PyO=CnQdQ>ePur>x9oatJ*(C1I+^d<;vsjnrNtg7KYVZ{dYQWg-KKW(mj5XDu<5j;keyjf@xEzWwrei)nDOze z!r4s^HmCg-Sbntqtn|K8#)>}&&u=Qe`YrKE;AX@9iRz*|H!8jT;hkl3dY(3K?sWE9 zUXuP(Zf#lh^_c75wL$4;^SKmc47+Kp2OQa*$Ej4TKCPB!qy64z0Qd zY^wMRoc;kVGy!qiLK2L$l@1{!Swg{s&x>g=AwFm`btvuHu|w;033w|ubWj}d5W6(# zE8XeqDy2i04t=r3J-W;Dd+#Jn5c*&LNZlZ$3~%ATuF25(B=esdkh}SC^K|?wHG}iiIttvAxdPdl{#Ue%y5StEwFYn zqf(PKa!HJ8#s(-+*Ow& z-AL>Rn^m>DTxlgSI&g(A;+YGB{mBfa)m62tKCI^w7*ogB@!zW`S5;L#XLZXzA&H^J zi(L?&WrqojDHuC66cA=t*lCbW6wk2!q?+pWK4(hpcvdRZt>)ucuHH|nvy|2cUVy|P ztmK#PW$xXtXgsv$vk)@c0bi$i8prt4-Q~bAeMb78ec*2Irz+9)R=dR$bSL-4|yhF$izQw6RC&jR;tc z@)Rj-xI&`y0G$Ztfy$1yTOdwxq0At(bqcRteWT9<3Le`zAtb~(@gN|==;~@jh`Hno zflXp8nSMaQHnh3cbdmV4A?J<08-Qv=R49NmZ%9#KoSz{?{QM}20doO^km&1|x)}tJ z8ZZelu`H`Vid^W7EX(xg;Shd(ew3%8?+|aD)qE+()kt@`_6LGen z8&06N-Yl3#Q8x_##n%nu@EQt)aNU~s65SE@1Gz9y){BCjVJHycvl-pFEPBFfz6RfI zuK}UPn#X+P2RgzWno6a;2DVc(2nB%%r_(up5tW}`biYxdT)|yeh_p}xpb7=@sbJn+ lfaQOUZmIaST5MZ#{Q_{ucuNtrxC#IO002ovPDHLkV1imp*2n+= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slakoth.png b/graphics/object_events/pics/pokemon/followers/slakoth.png new file mode 100644 index 0000000000000000000000000000000000000000..c116006819e1d275ed05b1b9568efbeed17f78d8 GIT binary patch literal 652 zcmV;70(1R|P)>G^pfA<Klrd}EFc^k~Ky$Id+qri!WIG2s^dDpk z1ou)wOXA#?De2a^h2wrgmky;%hqlluU3xUoQf`ti*lD1HzXU>3D7lziAlrd!=@LtK zm6I-Air-0(r0;$8N!SQgs#K{`rT<45;~V)_-N~|ZowF>PTKAiN<0igM*awKU3J(B0 zeSO5fT$J)(wCBgR4Nif?6|4o$B}o#Ma^6lb0tN?8Ci&q^GSB85+_^) z&e?2Z^Q+Y`GG^(J!;`)Wm}Y5skg`F#U&?q*ocMtXkldQU>OpUr!+;I910zer=dR^PilcF)f4GP^t4mANDdi9xO8vbeU+KZ<G`Rtxd8zI@o8BxF+o8=QNd9`p!(g>00009 za7bBm000XU000XU0RWnu7ytkPS4l)cR7i>K(=kiKKoke?;?U)$=i)(y)GYl%P7Zzn zhZ2_?dP_E;gS+5&xT00zpdbzzjGJ`P=+>oJ=u|;Vyj+Ily>I~o4nqE!e(&YpO9JV1 z+O%oYrp-T!-*4_6ANQzjO`JCOK;Z4vSq?YFuA8F5RNH^));cha-3y8B!yyv6C_o7%ac;<4L zT@Tj)rR~J_!1?y#G7Xi}p?M~7c)BzLc`=aME)A!P_-3V)d& XgP7%C()Kr00000000000000099UkG00009 za7bBm000XU000XU0RWnu7ytkPb4f%&R7i>K)IDp$Ko|$`G)o4jJCI0S5?eW=TRRl} z76z{U8mA(MaT4s%(OV>r=@7I_D~MFTT=Oz`KIViTol5>g;K$uPPcAQK7-h0Y%>uaKPGjXTb-<00wf0WTaMDi zMJ^)6uFPj-D*d_8*`7B67PmpH_5cf{^3h($ay9650ke*sy}_?|8!2rbhrP422sjVt zOxtb39eE5oZyV{`0#5`w58Tvm3=W11m${lBY<1T~T5ekr00000NkvXXu0mjf5+T!+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/spheal.png b/graphics/object_events/pics/pokemon/followers/spheal.png new file mode 100644 index 0000000000000000000000000000000000000000..94699cc83b064e6bf21207507a19cbd77c69b41c GIT binary patch literal 582 zcmV-M0=fN(P)FN1VQE9=ki2wiq!z}%v00009 za7bBm000XU000XU0RWnu7ytkPyh%hsR7i>Klrd|ySt~iqNrBphM}}FJiYsKSS>&Cb=A*gB_dy_IvN$|9`n$qG`2i z)v8tNzo_9HXDm_r2Oh4gZZh+E4}hM`6o83tGILFVYounr1Oi9F4Gz9AEHjp3G>nvN z058N#1$z*9&@J6$#?p%Wt-w*S(Zj%UO_e=}1F*$_Dq|^K&~sEgPMM4jGCvVNAZ1f# zRD|;oJgIp6fX6BXh>V7z6c9=QZffW|N`6C34zm}3`h*ZCzc@0dJG$Z5=2O_A#4dT{ zCqnW7{VU_$em9K!kwHE#GiuhI#xc7dDOmqbaLM~F=d+BP*^v<9_7gIE-jB6I*JDyspI5*9$$QXKIa^08wvoX!rT{$ofAP~RoG%#mlYtEvO6ff1-G|h>?sUc6e5)2vV zj`)ZSmf`{r1B(-7tqEm9o4vFqtok=%mSu^Cnr>NIbwcb)fercBM&-f@ssFTT(A U#au7kdH?_b07*qoM6N<$f`u&xK)G=$@Koke?!?}P~2|FFS$i{6zQwyTd zO|~ym>@Ic5l59!Ex$Tx<{J>K}LqT+m3YA77*Z4XWx|Dpm=tLu(PP!HXU5elKySw*) zk~oCWwzjpcZT%;ukv|*Ze1SL*^~dLzl|0#KM6(5r+A0sgM5qOAl|S3XtVSdE`W-@_ z4t)~N$L&YwgRrgintQ2m z%SuOQV!q_8@Z$u)`r#<88vtEh;eAL_qu8sPH%!+6%Z~FP<277-H(r-vlJl3EPym>l zYG;JB*}DMex|I}Rvh#*-bOwtLrqT=+Ghog3_{*>|P&;)-rpow)MG;#$jot+^jyL7Smz~$dousL+_JD0-)^0XVe}(btve=W& zOCzsVCqJEX0do_f$zm)SJ-g?Q&3%8Kq+u)!ubKDLaM&OFMWE(#(_-Sz%P-T;aa0&b z+&8}m;#<8hJY3EB&_LI}mVuaZm;YQG1)Ztj?0n{8;8k!_xiqqQ!d?`;5d)q?(WxUk z-kgdJd-0|`AB1O>PZB&GN}mX!?h!FXx5$A}c>*h`xN9Zl`~zd?h@09_`cv?LzpdbE i1{S|^t+}4|59mL9#$;qZo5J>I z>Qvh+m!_^=xbVWk^6FhbWW1Sfe{SQEGDH~ z<_?E+{sR}I3%0P4L(cewJVoKZ?)M`)Z-pi;GG|!et(3`ozX?K1)%cNC@v{%gMsJCx__HNBi j&b?{Jw732@ub+|M_@${_&!%KIC~7=i{an^LB{Ts5?3Ke7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/surskit.png b/graphics/object_events/pics/pokemon/followers/surskit.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebf3a22e0a2f65277a5cb901a5af3842c7fcff2 GIT binary patch literal 466 zcmV;@0WJQCP)F6XU=)mkQ7{S+fQcf$0-7v39|*b| zDByGKK$S%2gB;Y|L;+u82deexe4u(2X%QuSd~FeF-29-88=V4>WYPIR(B!gvi&Fz0 z{_c&tH{s&5T1#&cHbqFH^MPQ-S)hw`PfWng*Y@?s$&a}t?c!vEa56fdfq^r^_L7p) zU5iLOd|ll9*t<$f%Ek!)q4OCSCU6+vy?ghv1q0McoKQX|QSzLy&&jc(+1U65%)3DU zg82;a7z2W-5n0Ao8KDz!^MP7AaPr%7&Kzw;G7iW;iOgr<3}E2s=wM)oB#+NIHKL<6 z65(KUK2U@*dMcQN*^bF)K!g@7m7p0!Kz;&>Af_%lSU^(%01Kh7oBB&;<^TWy07*qo IM6N<$f^^iydjJ3c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swablu.png b/graphics/object_events/pics/pokemon/followers/swablu.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5359aac7bf38656fe5474a6d59ba5fd6e1eb2d GIT binary patch literal 723 zcmV;^0xbQBP)c>n+a0000000000000001xyu<00009 za7bBm000XU000XU0RWnu7ytkQNl8ROR7i>KmBEYJKorJD$QsB=DW$fzwovFfyDRJ| zyUsRxEH>N4Q;W0lXe-1!^%8M?v<2qqlhIa)cj_hL zdS3M>Kd*{mts#kak_3c)wHtISO&j3Jpkad z;?xXoF%hmKR>lr=f}r1J?@NJ{pbp|Q;LGM98$#xfnSTaZtTtH8c5?l;dEIBHVm=As z2POh>h8d?F*L69GC-n4^={=!y;&)6+rQz3?*aF<|-01##>bXCv2bhma-ObwbXg z=!-Uxi8Oth>$*r(5c?CiSWoVvbC3G^Pk}uJeEl{NvFvrI>v|$ad^%d68FmK!wkjoJ zoOhA68UNl~GJ!C^^xp&1zg0Rh=*X}OWvd0CMF00000000006rU?900009 za7bBm000XU000XU0RWnu7ytkQt4TybR7i>Kmc5GGKoo@yDi)Oqd4kDeVNhXYuratv zioAhv`N!`amFfD+{d<+=t4YAN|daEs~Hb8LWXb=jwd- z$|}@q{a^pg>h-#R*@E;j&ExTT3~~(1zP>%u}-j#xW1haZ1DBKH7{RP0r$uH zksjFKYk{_?zN_ThGwnzVZ1D9!>AtUwAS;eP&ILC3df+E6ztalfAOjv&X9631EzqW1 zQ<{~4o$RP6(E~60df*kEA&$~c3FyO>|D%Y!HNd z=nZq5ZGwPBaiL|A&3<3oY=ysy%~-3Z|K|D${_2Xvqm10^00000NkvXXu0mjf9-w!& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swampert.png b/graphics/object_events/pics/pokemon/followers/swampert.png new file mode 100644 index 0000000000000000000000000000000000000000..11de991d473dc1225b6c8a272651a61476108192 GIT binary patch literal 894 zcmV-^1A+XBP)K*1u}oKmZ1CQCi{2U_4}Mpx2;yXagaI z%yADpT>>4uDXKZy;0Tfyou^>jAgf?H6;Ul-GW8LPGi5M@2n~G#Cjq4b_nx75(#iT` zDMLz!LT)hr`SX2epU<)d;bAN zm~}9r1!1Zn?M}F$obO+TYqLT!%Qqe6ppX>06D}y{yVV$vZF+3x?kv}=aBm75?w(L& z(W9Pv`4(Zv{|b9DEp+qD`feK*Y*@`Nk%ys4Y*v`e6Mjq!A#AcjXO?3+Zf;+Hhi^`s zH-(0DOIihPHS88EEIaeyaAr*hSvgc-eIKvRii{zhQs7qO6vEe}PYZ*Cn>BsMmCX+; zA93|?bG67ABa92Iz!1$R8n4hplT9~uBIA?Lu1<_|(YkM2j1X0@-FCm(p8-oW?in-f#W#m;2EEA1w!vcdtL{}wy%JfJpTIA=ZhS$O9WZrwd$d)2rX8V@C^AandJi#*4{hawf%vp-0RHd#ko3^4}MA{>JxjqARK^=MZYkp^^q*b zzoQ7z{{<%KFLEF+=SrNbhBz2Vi#m~BN>dN83Ckm0cxNus)ssK-h^5)TGXHA)0o8~| U6m+8J@Bjb+07*qoM6N<$f?zq9c>n+a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swellow.png b/graphics/object_events/pics/pokemon/followers/swellow.png new file mode 100644 index 0000000000000000000000000000000000000000..2412333810765a4996c967fd52c17d411fd2ab82 GIT binary patch literal 1050 zcmV+#1m*jQP)KmOX3RKp4l560{sO^dn>}p-^~?AxH&- z6fbtRcqttOG8!tU(50ncAcS_zEPaVXrY^<#0?E*OkDN3l zOQD54#BjMgKmY&lx#uoH=q~Q!KZ#TJshs@l0#eUpHRc#e&!;5dnz7{Z9 zOGB2w=v0-0>Qb)Wf|V*aXc- zlaRU^Mh9*ziISB<*-in#QDQ?bAczvE#l~?b48V@10Nb2LV)Lm^nk)lR$+`z?wjjdQ zHdS-O3?NqmX$H0+VigjE(s2{O^Td{iOrRDHSx@29V_g+>=XqfmPKo>yrqJ7R)PY)b8w62M-O~cKBnXC&k=_h~ zC;|Bu={P-H^P1f8hgbGFr4x?_=}CcRnof^WeF}rN%ZVUaS<|K=&+|-o49hNv5?M9r zI7-`XDjeenxF`ztv1gK)u@A=rX*U~RsyVXXr@~R;Ry&Ls0sk-I6Z88 zp>&K#Q_6xwAyvK9rRmw?(s`er=T+p5Nvw?DqN1t+s zRjH+WwUe#BfBkagPL##xyOOA{eow$={tMCnA_2)bQK9v@}M|WZ< zh#CeUE4tuBSyo0c0Maq9dSNEeW}hQ8bxEt^{pt7dz|k)Q5=7cy0e7oJbdd=Srh)%(9xdjS=~%oUc!dae0ClR^4oN zaq2iGF+r}rYe*28OHeH;c|82g+S3SdqPcvV8|z=^XUyBw&8li@0ra^^B2^*Bsn32P zJUeMQrbe6y%}3?ur3p*Du0i>IR|1kqM!=3{#IlWI*8gf<5TP4G{C&Wtz4>t#S2kgo z6i950@kBotlIUgynIO6t2lmxFN1-d4T}|0g*9LNokp>sj)#pLGfv6o=Lkz00009 za7bBm000XU000XU0RWnu7ytkPM@d9MR7i>K)G8C99-O79b8Vx5{Sh? zC@v08?hX}cpn*W~8(6=?m0AkV*0FRD92^SaX3^poXum>-^Ugq_Ge+Tv3)cQTQ9vZHrdpE(;SYiv&CX|Xf>nVG>5NQXAnyn zaf?+$%9Yq`h+S-Wmhy>PtX_#AT#;rCyV!8sxN38Yg$m(7E~0V`yV&qH8h>z$EdzRu zvA$n^SL|ZybZ2*Jv+9==n!UcyZLX=14rZC?8@o;G zbPm9r__)W7`aT#2DA!fhc;I;l@XsRPXu*SD)Yq!u{a-!-N_^W}H$MPG00000NkvXX Hu0mjf&WX?i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/torchic.png b/graphics/object_events/pics/pokemon/followers/torchic.png new file mode 100644 index 0000000000000000000000000000000000000000..afaeba264d1fe60bf56af75d139229f40c0c77b6 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!Zzg@a4;&jEszx zfr1Ms2EJS=`14}o#Y9G+5=`)D%0D-tC})93WHAE+w=f7ZGR&GI!N9=i-_7Rnk#d}%?NcQQ2D}Jwt2yAQ{OELlZv~O>$QL9cRTi5Q}cw@ ziSA#yx+C&$%RQy+eEXH__p;uYa$84f-OeZP81GN!R`V&;{qWzyAnN`3-4cPi9|{#7 z+uU~dJ#~1($@9A_&i+_iec*FpLgq1}{@J!t&Hpm`Uam8FS9pIp7qzfEnL+w{$+}wt2Pm-36!nW+7%THoHAq9>R22+2>CE*UeiG sxVF~*^82yiyY^4FzmA4){vEDixapYp@bJ$@c~HQ6y85}Sb4q9e0C%Oy<^TWy literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/torkoal.png b/graphics/object_events/pics/pokemon/followers/torkoal.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5835f1fd392c88798902aac49a81bd7533777f GIT binary patch literal 731 zcmV<10wn#3P)IZ?T}xiL9G000000000000000OgZzd00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>K)je<8Ko|$`N2+Y8@`NSK9IKFlrBXUj zW#ojAyiinNbq$<}JW(mR4-nV7$RkS_6RA@dT8wk)eYu`pY>In!hIZsZviw8#|K98~ zz^P7ks#E>9QbyJO=lpZhtn$mny-k%JLO$CSemTDvTbl}hFwL_;nekj4v_p@IPUNEq zh2>U>sGAZiWNCvI6a3d#Z!f>Nz1z z)j|kyTjn(If+4@Zy)1L(8mT&2np4EZ&z3o<>B?f1cUN|aE7!HABWlfW+f(jaxZwd96ZD=YHFh(Ko7onYgt zLp$`YvynIn?1y6IiAOED;q^VTIO?xKW_38OwF0(XvD@1A2$Fsdg1g2jooOM8)2}2oA}|mH!=?wlW9j&8EcrOVz`irKcsalKOq;;r^nl>K7~2X|oX#jR*h$ N002ovPDHLkV1kIuOdkLM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/trapinch.png b/graphics/object_events/pics/pokemon/followers/trapinch.png new file mode 100644 index 0000000000000000000000000000000000000000..4a27dff4060a3695d7a84ea5c14b364ffc5a4b34 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!XZ};mSzQla+y* znwmd<{$yli%*@QJtgI|FGz6+b1J-c|Hvxq>3p^r=85p>QL70(Y)*J~221aL37sn8f z&bN~ty$>6R9B*!S>ffl|@4aBg<7t5}b8q;4c*oxH^2D{(O;_~|%I4^X{L1xRyv6fc zNfU?MFYB+zPygP}?#Va<41TzqoGrXkFFnDz;%H19_ui6M>C6lt(gY4&c*xr_apUZ# z>C7tsVybN3ye&U)X4bo|?rn(=%luL=H}O`f_OsnOwXNQCg~PKlt->FRMKg9MUC!H* z;`cm)ZBgR+6ouYd>(X{7%{^imyME3&L#G=O7plL>shAwPyLfYKVZY`16Q^F<%{-sP z#Ad60n%yhlyGl-Yg{f2G+p_uWKaAwd_(M4#{hht}Z*@+ml-VO|q4?b~CsGaGuD@D# zv|Zr#&H#g@4Y$8m>Rg}g>=`Vic8F=P4*hU%B)&_^>psi`QHvd r^8KwF%4~5k*?v9u=LQ|gyY;8kpWQDIv={ur4+?fqS3j3^P6R0{{o0t2#u9L@rd$YKTtZeb8+WSBKaf`Nh2 z%G1R$#G~`=m5q7L1_EpkI?gT*6tDI&3R#pN@GNhxamjisgYZ+@Eoa+89^T8euciX;1LCH|``KRlauc9v=OwLkOUn4c`$DETAxiW#TYW!-JhPGv7HldgI* zZPv%VANU+Y8{Per6Nkm!2T<=TKCVz3yT;Gmn?z0q$%z9y!b9=l+^@%Oi62 zhOKY2nf;>bd#g0oe0;^La7`v!ZbRnpnkWxjn=^vNqT8OCF-q5*vFz!-qUR&l+Hvz+ zYfhK8xUVIjLYZenw^ovxNk>EEs@#V^J_qr;?>peSy2Cz>&oO)sv&^y3tnClq{diZK z{OU$S>@>5dOD5csef{~RWRlqOpq4Xzdn|qLEi2nu-}?5-&7WsK^PRAIk$-zP`<{JW phu_$xZvM?*x6dwncKr4F8Tu_%=aO6vq`W}k?CI*~vd$@?2>|#8xQ_q; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tropius.png b/graphics/object_events/pics/pokemon/followers/tropius.png new file mode 100644 index 0000000000000000000000000000000000000000..d052138683fe802e4d6bb8ae6a85fd337cec5f61 GIT binary patch literal 1065 zcmV+^1lIeBP)G}E5A)$Fud0|Nb0RaF200000rKGab00009 za7bBm000XU000XU0RWnu7ytkRpGibPR7i>KmOpRfHWKS_;mq$+{?RMTse3ov zRNy$+`ia!@JS1Py_PkH+Q~TdEKm0iUp#Jb8{1|pO)qi76=@hR?i0qSN{m0lT=EqSB z2180O%2qHUSB?iHZHELCN|SQ`>=O>$1N-ue76IXPm9IG)k{SP`!5*h<~z_CLsI5BIUI6)s6GKbJ6R%}D*iYuE~KOZ}; zDE(G12&G_?jUEozcjyGEsS4@@2Nlba^Q$)T_3z)@w274=5_Xr>i7upyjp%0Yd|0nElB3g*|peSOoQL4a%nn8Xkl zMFnl70GMMAr7e<-!g;YB)XWwga=-xE83gM5qt#CJa{b@IHzlL5KK283vGAs|O)hIz~H-e#|Mn_`-AYq)28 ziwLm0UrtW{e$K%;5M+W&<_tu6lmm75rILT7nTSVMPuP_yA@T0ybXyT(>z)8|Yp5DQ zbQ3uqkH{^4c6wIsZb4+btuO*#>^U=rRVJeJ{$-SkQCwO>WM`;gT9Kk4aShHvAuHU& zU%e^u(_a?k~MXc9*pwvNa6A#0B?hcNLHU9ZF9Cq=HJ-<4jz(?D_0R zfLA=kK*-KeiEIQ#0oh0>XQ-#9*?e_JHs=75piAV4L&|2CE&JcEqIB~*#NI>piPA+; zthS1{1rTcCSagN$MY`$<2z+-9vxv=FgW!6#Sj%}gI+)AFdULbqh15rbEYUEK`lyiW zl5~;0S}y0?8nDnbujjYGmYtwdk7s+qv!zmfL%EQ0Cwsh=a=mAFOR4$m?niTH_)#o7 zK@WePY%^2u8_MnDa<}fy$nc@Ti>>$hi)DA~exWaa=rXGQSbSt}s0IHWpl67;dNOu& jaQHXlJ?#Sl-q-#CS{jm_jR6va00000NkvXXu0mjf_{{CB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/vibrava.png b/graphics/object_events/pics/pokemon/followers/vibrava.png new file mode 100644 index 0000000000000000000000000000000000000000..466a1de0d12adac8e3064c07a2c40443da7bb5da GIT binary patch literal 916 zcmV;F18e+=P)KmA`A-KorNXi!R`$Uc3Yky(L5Isn7=6 zu5IbA3?_rXaDvc+V$-|yVnZN9I8PZH@1x+Ry<}bWcpIA zR-9C3D1hFSP9*s9ODc$mifhJVm>G=6XN5^+h5}rPsv{N*Qb9bl)d8>=+S!!-bFVO| z%us-kg+wPK%eRu5 zjiK%VaF)N4gLysV=?ZZ60hq>y&G{xFkC-q8#7spXd(V=Lw8Pi%gk>8~UEq|&u998C z)oI%^hOA3iV)&pL64GK~r#}-;$_*iVPt6u0%Zb`9?Xn_6dj+%0)z9E6ITzZHuZ-d5 z$cGJCzGKwgb25GdS??JG7xi`9;cABMgZA!62+`}! zM;v-eB!Xo|9_n=$Jr8-63{B=RpImq}YO}~tGm8!595BLgP1c~y`c~I3{4Vkgy4b0$ zk!!_$tUogm!-I4J^H|~ARAw|7-^SSLbSTalMr>sV2Ya|Mzszt4-^!if{ltiA*_d;m qK)IpEZKokJrNlBXUFPcg=k;cTZ4F|Zv zlLK828skZm3bmV*y$Z`85V&nT2%C+Uw&|fq7@O#LbK^z57(AFw|BD?eo!M@Oc=5(N zG<<#SdymO<5IV#m4snQokBj{-qkTTkW%EWzx<6O;dhu55i;{PHwww`??doFg+NRhV zAuEyPHv?kx)pDk{)?_)mYMMf~NfNri%h?b^mb+{Eg7I-Sy~3u@KnsGv%Q;!;0oNdB z8qLLQI$4XY8-(C?vCFd&XgXWrg$}n- zYQF#df$eIG|6J88k7(DLcowGV#pE3yksqxK7r$Ht3$LZ?eo?3a^A z*Ij_#57RP>yq&lgO%}sVB(M~EIF5~myUSNohuc*+efI%;9Zq_G3sQT)Or!qb+2hx* zehvhdLM=M`ezOXdBFl~EUs^aBxee~l8ZgsnuHf<#w6(xeU_?<&u%i_E$@*!FwBV%G zb$8Zqg_#z_-{SbQ5#^jURE_A9eS>!!L#m`!Q_6NjBP}c2x3XO$SiQBcEfT1zLpnl3 zL?Qx0S2Y|EfTL_60+xZ9lY*UwXOV|Hmr`>Dll1~%+cb5SS1Vv8Uv@TdA9r;AXhAaR z*aL_Ekb=5x5oYkZej{LZsJXMrZ(9WFSv|*Z>jr<(TtlhrD(HwieosUX>_vFB0U pM0bL3Xcy&e{G_F?nJFnT;cKlTS$7P#D193X?z%(#tFxSoa)TvByqio+JRiM4}z>BI=VBfaPmLn16ks2skCrQmHmZgzm!U0 z+V=`AAdR0~1j{_yaSMgZb-_5Ez~{2RP*F+=!-y*i?Y9UmATx2JfHRZ5jDUOkVAU`R zP-r9MLYYHRG}0m9FSLNn#Fs+-;;=fvoDs$+x_*r1HbQV=@ZK)5J|_L=b?wE!>3+kWT!1 z~UfXygCXu!w10SIaBolLJXe(h%JFA|dofm4haK|6W;gYiOHS1i%CSVQEkB%;`tvChU7P?oHgO9tz zFygN7w}nv(oSS8V>s`6UtUzoH@A|yN0(lAI z`7=fUN-u)Jl)FbB+d_9op#NKU=(L9dT7`hmVyOlA<@aesW^$lLFosN}RS3XR6t6sD za*yx|kk_Lve88K>tuwh-=K)W2)nKoke?x734&gV3Rn!G(5gr)qMC z;^8>FSaU`X;u1>gzrr?}0O9pog-5f5hVw8Y2woAZ$?|w-ZQK2q{ z4t`$rIZp5UbVvr+)vk86tN*8@?EZx%7W~Gz634^t)<*St29?$;JS|-pL10!xaYV$6Ls9@Q`z_#w^8kP;|koyv` zvVm@)WgFVUhDB1~wY#(porMob`-0PRCxXYRqCjs7Og0)Shzb)33}B07qaj&ud1C`= z>G1f6-f<`6r4DqCC=hc((=Nmt71Wa49QVU&ak0@5-RtW__hH<=J(uXi&y&mqezRUu zAdC3-_qyRMp|=KB9p@Fj>a4L^T1xj%uWL{F?a`iS>tLS@~YEBlWMaM!L0eI z%50=3R^F$3So`?{=yT1o?Op$fRGYrt=>HGv7a}GC3ahe5NB{r;07*qoM6N<$g8w&M A5dZ)H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wailord.png b/graphics/object_events/pics/pokemon/followers/wailord.png new file mode 100644 index 0000000000000000000000000000000000000000..a27912ba77b83afc272e69b47633439704dea31f GIT binary patch literal 1151 zcmV-_1c3XAP)G8cr4sZp^A0RKEAblhsNl6X@A0Hnd zA0HndA0HndA0HndA0Ho||9j-OpJDvFCyIk0PKWbANO?ltfaAv|1S#R&a4sT%lrZG@ z(GgDo*OUOwMRZe^FK$DQzd@wdWQo(<`dP!F{4Fxw4CeyMD&Xj1j=x3X=_Ve`jo{y9 z`6tx?lD|RZ_IY_hEu$o_E5uzR96vrn>*uA`?ny{&n>BXZ zG`@Eensb5|Ck+={mte(FK@m4RMjK%L{!+_$rx@@Hh~RkB@F~*8 ztl+reXbFXOll!Vp^JQHqT|thIHSC{NKqGgEt{eV@6&X`P)g0MzbdFq>RS!R?)2sQ` zbaMjPt9X>cey4;85frlF=vzq$-{M+@NPbyAXF&e&Ucps%{*)Y^$MIUQ+9`2C(Qvec zxgO>wxqZ^J!wYaVhkO~O;y{DrR-mi}OH3eq*XAK|M%2_eR$=unQgf^a#LeEXa=h+t zmmCk{wqV>746`;*`VHV#p{PB{krqZ!?-9FP>&@$U2xBW~YrKT>{uqd)&9lB?Em)Tb zCOB^I1K1(~2SFM@bCFd0WIa!yFK8>E;YbaP(_(+|BEpv0HpfP&E7++KjtfYPVD-lI z0vRG0wK=v*eV9C$+O)_0Cv29-4aYX}j-b|xY(S3()jqac=TqdZD{OOYnTaQlpRC}A zJ5(?T8jjJCxolhTb4QTlbrW|J9eo($c<{sM@yU$s-RvWZ8UEAiutK_m96uN%X9Fl6 z2zBh59&5b7N>y{iqpo8pi|iKma&W5NEC;s8F1ky#r^{}!Z}doiC0&+ z3j}hN)@F8x4U7GEDVZhWq&+W|^00!;NIo^dOK3;Ed zYgm6Bw&+rWZ$*seBlTnFeN2qM(c5XpcBYV@xSX`5#bys(1Flu)uvZHNh z)5xWrJAy+yFPj*T#C1u=d!fmd(3TJ6b-*bX{Vs7JB>nENiEjgd1(ZF|Gcj2tP6(-X zMYeKoCZl%OAytKa-M}f|G6;*gv)gxUG8);tahCw;4;H!Az^KSU3c=PpIOW?k?20o1 zz5NahM!2&Z|Mq?K%XfoC$8BIVB2FlL;=@7>><68D#}QN2Et`z64U6C7Bzv)g+->5n z1FFJ)BYT5;5<10PcWg3hPYU>ZmCWv8xZN}`Ca^E!HZYpx1tB&e11&T;A9n#F76J4J zb_1gc^rUVMThzo?7yWKgkUr5Zo19zYo4YNY+}sUDb^{}P=k(^#n};{*36rlbNI4Wf z8lgtUxn*5FW3MhoBin6YDkiRE zV9hEJV;KAuGRA^T3XeEtY6ef<0fFaF^#ly|=rwySd=G3YXXNvmWuP!}4wpj6xe^|j z%c{!#4h%-uOc);+o7RDv^-F2}3YS4DeNuSf?m#v0=||DgpFioBWO5ZC zO9h}-syTRbxDi+OObJ_@v024&yx)=dvv)$i5AZdw-THa4x)!c79T3m-Oe4nDLdP>D zMDdCRe#ZHdsuB4j0fb)*y;O6s+zaD}k0U#<^A8F={7#c{gwqGh~4hREZyY2;-(;O%=CQ%YT|g~B6Q zeCqX79GoeowNMAvjOc9Y9{(qTuU8b+4;&ghD9oaip3rIFk>lT0|E*2~zgGVM+f#Xh Txw)FN2gp-Ew(*&$(}VNoFg0Rb^ViP6Dfv9ZBvfx$^(p$P>E>K1Ky00009 za7bBm000XU000XU0RWnu7ytkQiAh93R7i>Kl|PFbK^TYMumpB050c`z(jwuSC~TVB z;woDq&4CcOB87)lO3NrjFsb%b*6c#u!v$d%+%8qP50K_QKxA$7;37C222Lz;X4aV< z$2kol!OoX0d}hbzH~*Lg*wwCfwX3aFV%x&b#sBH%xAXZ%VHE&%JOH)y&%$Xkm3)4? zL8$JPP^%MIP}=|NfNAnj5CYT)Ck+O&u&ja|cDmmU^%0wbS_Mng$s7sI8W%>KG9Avc zumY${IP~B#3n;^fyfC~6ED1>=$8`7@WMKuAaoFyLgE&CdG_z0;CLpmajLJ4`o+k^{ zS2hmYzxpF1M>|*{p5+Ch%w+FSaCh%5c5@xe!m^F=h&<6UEO&h@aJsSQvAnIHTS7N@NL04d^kE89>pgP-8<>v>;-aGP;a} zBiCa>naK*k@j{5xkXyq5x=V$Ang-~eALV(J(d)~QkncMzAm&=i-~qVT>-B{IkpbKz zD%37$fSa~`GDL&2dA*pP@3*ON$;m@@N|bT-`sK zxa#{8D&#zk1JslE8GL#=%v5q~ITG4|zjBPNz>D*oH^U6RIr(TesgSc(jJqgL8)Q<$ z#uLU>#{2OE0NweWncx>WVZLnKRNMm(Q6cB$b)mPu-D5nvve_mojO$!z=1B=lw8GQ+ zRrx?~{fLDNb_w%xwdq^SIr|xJqV7_TPYpmbU&x;c0V_P2o!i*5_-n!zX%M=TyNC>_ z##`Jpbj}8`_v}0xDrIM{P9X0w?o2{0%yT`lPJMy+{zS||zovd);^2VYs zPlKy+9p0}izgcps{TgM(%G}k>Sz+@sbtgI936G8soPI)h}U}&Y3q9C#(VCvN698E3l<#`$ezB| z>ZpuE<%(seJ2iQo10SZXzgcWC^>EBeb%UCm0GF2<#j|tt=i3YIX7;)r{dC$4y?TR) z?VFbz+Pv|Gh0l@aaka~qolfJeWma6XKhQSM;O+gB5&zQ#za84z_e%1X`$Hx0Rcg2k?HCAQIWYZNpS!G00000*~8Q@00009 za7bBm000XU000XU0RWnu7ytkQ0!c(cR7i>KRJ%$8K@^=r7DlkMvlEP{KOkCZA@~6s z2sTT=g>`=t1IB}6(UoP4FQ562$?33b127YBouCtcRO8%uFOyDMW?< zvFqdGvti6nlt$9Q$RcQRO z5~|9r41DaC_4;Iap6_AfWYxTe?nD$=PdY{zFjTj;11m+DdX!iPkzdK`O*r1EAdgz_ zqb8CP(y{#-cxO#wZ!O0PjkP874Um~#xT_iY;zUCni?$@UwH!;#z2L)}UH=$-GVVk} z9gDWSfaO>TeAW*8cD==Uwp0@#Ck`CPgywby$8*riwpVk~c*Rg|w<8iS5GMR;+ mZ*U!t1LcK`{uXXz{~6y*oDw%N&apZG0000*IjO0!@o8!C*=hOFxw$b(v5|psSy2E000000Qm~iT00009 za7bBm000XU000XU0RWnu7ytkP_(?=TR7i>K)W1t3K@QwbjUQI66*(*p^1AQ7 zxAWPV3}I|ggBsMJ{-5ICy?|HzNAR-+?7p493|QIm$|-&OYu>@r7htT>gw>Ddtzo|P z7VtK~7_vYI8ja@1;O78`{Iv1Z0v(WE)5sL$kqO9mfW0|yHwBci1)8ivK`y)~5J^u6 zt%WHvR;dN&HS*8~WdwkvPr=N74w^yI%kNBsdIK!sMTI=HL8%bwO9nVM3Yq|XI5Iw_ zTh)WdhrblCK&}yuBctF{cfrYCFC)8NW}E{2`lQuP0e{E{C7mar1F(ldCfDmVU|YxF zgaJ6!yE}R>ZIElwbO#j7wzg~N*MIiD=i%u0Vd%37^1H{tFR|dKfUW|)PIhE~i^r84 ztoKipw|4(v=ugp0!hCmSxx7m9D@d|451R%UXScuN(inzezVD068&s-p0BYg(N|FUt z4AShL&*aa@4xBiL$$rWbaV;4aJ|c$3Ux8Y?Z7T{`Ag|;`=$X24?(cwQuQq}pOvaz? zB}z$;oDCJ8JF_X7%?GDs1B}O+fKR1TiNx%4yHF_5`S@OnYB4SIqH!s#%tfa|yID~+ cU;oZ}0iPAdj@!J-b^rhX07*qoM6N<$f=4(cumAu6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wynaut.png b/graphics/object_events/pics/pokemon/followers/wynaut.png new file mode 100644 index 0000000000000000000000000000000000000000..e90e1c8111dfd469092533b3878a0f4d1737f002 GIT binary patch literal 564 zcmV-40?Yl0P)CRu00009 za7bBm000XU000XU0RWnu7ytkPs!2paR7i>K)jdnYKo|$`GoWzeMQqKMRElPF(8cvc z+-xP-+w4>vBdteAh3-jcEQjl~<}|SyEhtZHZYWIYrOgN(ay1b6FNaqIo+lQg?1sm_*;reP z?y{UQolGpoZO(~r_MFl#%+g&277g6DxFGk;UQilDAWL^y+d=x@M>23m(IJ zHCMAvdYn(|-IIZPW@Dl*Mt2n`8>Y3!ZgFIBkQlwyX)C+aT{W~gAHo35Ua=~Yn(b)E zr@L%m!_h-4PwJeqM?&^<&uAHVul)g_Wd-c|c=sfC>zpz{h=3CSJMB^I!U;524KHVJ z?=V2OBZOaL=d|S!@Kow<43Is3HkgHuZ}!252Oq-9JGXEG$Ik~d1_M+hlt&SR9ne_x zi3b8p|9q-@5K$y-#v>qLPPD82kvCkRFM1btLoP;OYRlw-xq71&OgGZ-kk zIm2tORQ1Z*`17ke{&fd$mOn5m*5eyX|HS?Ii}?!*io~P~+-9x-0000Kl+Q~WK@`WQ1h&aBLA^w?7+eC2IrdUY4@tI)jD-e5YH&|2RYCH<^v&+h{)q0e zm*P7t`+4)``<;0+yM#Q%Lp;QP5;2)SKSXl8$)83fyNPJ740!T}M)B4SJ`%l1CM|z4 z_wwc<*6tqAC@#0~wK^Bc@#~xL24Ispi`_bIEA`&Y`^5eP|(wk)>LGM}XdOw=$ z(|2vN7|923&O(Z_j6GqCe@1qBjfjE|gUiH4ateZXP}E_jwnY^BKSZ?D9LbS1=Camy2fDh;!A zVgtTfe8l}OJocxP)A&YVG)gCAnH@Z=@y zZ!1(7YR@_Ec?FuTGE-yed2dN7W5sH3NbQa+nNUbv!n)yhXo;DHgwZ|o4Ycf+KKrc7 z?(|Wvg#1+)5~7y?QY@X9Jwt#@t~W~Av-{gPsaZ~6sXQ=tI#_EsA9#FPFCd%3FkY`0 zMvHhg#=hYM*<9apmJF5-#|%oMA+SC{7KX0i+j_11qUj`B%bUo1!jK#+?@Uk+mS1~@ z$P5&x{=Icv0&JSldv8rt9S!|MM!~gutv2qsJyAL%&Yt0sVhvRWP;PpLHotPQ(YhMx z-Ug5_rkeq_1?y`7KNQh2*=El$CU=Jbkk81Tp=Gm!tBsa|O_~U~)yBo|od9#eof?2e zsYpt&Jetd(dbl8L(_GP$~Gs-AH#dEmYsBv_1b!I~7uEr!wSj mNLm!!!!s$3hK6SFAID!ZVv;30jR~j#0000G|2wnMpAj$+3BPNhz6$SwS%=G*%Q800009 za7bBm000XU000XU0RWnu7ytkQcS%G+R7i>K)W3_`U>FDR7s*Xd0f&G~2se3$W0yjS z_8o$W(&eQTIXd)j=pPWs@PZuu3vLmooP)Lzgx5Goh9eh*f(OMI3gYJBR_Ib_)ckmJ z=gWc6rTBIFBu}2_O?(poPC4b2|0j|tWtfv#l}D!3Zf96(vnr2EuGBR}il*BZS+z$c z@0r~mMc4Ft?CK+82VOuA2V+*!l9(|ykgKl8WO^<$%we)^NU(g^ zfDFlfI3U@Fk&}VIDv+W;Dk{rF(RD#E2*Xe(qczN%@qoRlfuOHfc)lPMS?2IA@?oES z=L=e3sB`x`<76PotBmbGcs+dRT#TWO9q-8kCb zd87}8)(FqXft<1JCKp`bUkH7~Us;B$T6wwbqzhQJH|0`e?+O~?*61#5Xk{G@+@{>T zLFi_%WI1om-CFH7{Zv@pPRCSxQNw0yNWANKe&WE2>jC%RBjjJnOdAW+?fyu8?R8Br z^6UjX6hYR>4TtYs9sT)follower.objId]; + if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) { // Sets the follower's graphic data to the proper following Pokemon graphic data @@ -3260,28 +3261,24 @@ void UpdateFollowerPokemonGraphic(void) // Specifically for Pokemon Center, if lead Pokemon is revived, deletes old follower and creates new one if(gSpecialVar_Unused_0x8014 == 1) { - // Loop allows for creation of variables not at top of function - do - { - u8 newSpriteId; - struct ObjectEventTemplate clone; - struct ObjectEvent backupFollower = *follower; - backupFollower.graphicsId = gSaveBlock2Ptr->follower.graphicsId; - DestroySprite(&gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId]); - RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + u8 newSpriteId; + struct ObjectEventTemplate clone; + struct ObjectEvent backupFollower = *follower; + backupFollower.graphicsId = gSaveBlock2Ptr->follower.graphicsId; + DestroySprite(&gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId]); + RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); - clone.graphicsId = gSaveBlock2Ptr->follower.graphicsId;; - gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); + clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); + clone.graphicsId = gSaveBlock2Ptr->follower.graphicsId;; + gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); - follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - newSpriteId = follower->spriteId; - *follower = backupFollower; - follower->spriteId = newSpriteId; - MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); - ObjectEventTurn(follower, follower->facingDirection); - gSpecialVar_Unused_0x8014 = 0; - } while(FALSE); + follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + newSpriteId = follower->spriteId; + *follower = backupFollower; + follower->spriteId = newSpriteId; + MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); + ObjectEventTurn(follower, follower->facingDirection); + gSpecialVar_Unused_0x8014 = 0; } } } From bce0fcc081f93adee8f581576bbf499b8f949eab Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 9 Feb 2022 16:54:03 -0800 Subject: [PATCH 16/71] Allowed each Unown shape to appear in overworld and added constants for other Deoxys forms Still have yet to figure out how to check for which form a given Deoxys is in. Thus, all Deoxys will appear as Normal form, regardless of their actual form. --- include/constants/event_objects.h | 34 ++++++++++++++++++- .../object_event_graphics_info_pointers.h | 30 ++++++++++++++++ src/overworld.c | 10 ++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index de7d7b1ec..13299e012 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -628,7 +628,39 @@ #define OBJ_EVENT_GFX_DEOXYS_NORMAL 648 #define OBJ_EVENT_GFX_CHIMECHO 649 -#define NUM_OBJ_EVENT_GFX 650 +// Other forms +#define OBJ_EVENT_GFX_DEOXYS_ATTACK 650 +#define OBJ_EVENT_GFX_DEOXYS_DEFENSE 651 +#define OBJ_EVENT_GFX_DEOXYS_SPEED 652 +#define OBJ_EVENT_GFX_UNOWN_B 653 +#define OBJ_EVENT_GFX_UNOWN_C 654 +#define OBJ_EVENT_GFX_UNOWN_D 655 +#define OBJ_EVENT_GFX_UNOWN_E 656 +#define OBJ_EVENT_GFX_UNOWN_F 657 +#define OBJ_EVENT_GFX_UNOWN_G 658 +#define OBJ_EVENT_GFX_UNOWN_H 659 +#define OBJ_EVENT_GFX_UNOWN_I 660 +#define OBJ_EVENT_GFX_UNOWN_J 661 +#define OBJ_EVENT_GFX_UNOWN_K 662 +#define OBJ_EVENT_GFX_UNOWN_L 663 +#define OBJ_EVENT_GFX_UNOWN_M 664 +#define OBJ_EVENT_GFX_UNOWN_N 665 +#define OBJ_EVENT_GFX_UNOWN_O 666 +#define OBJ_EVENT_GFX_UNOWN_P 667 +#define OBJ_EVENT_GFX_UNOWN_Q 668 +#define OBJ_EVENT_GFX_UNOWN_R 669 +#define OBJ_EVENT_GFX_UNOWN_S 670 +#define OBJ_EVENT_GFX_UNOWN_T 671 +#define OBJ_EVENT_GFX_UNOWN_U 672 +#define OBJ_EVENT_GFX_UNOWN_V 673 +#define OBJ_EVENT_GFX_UNOWN_W 674 +#define OBJ_EVENT_GFX_UNOWN_X 675 +#define OBJ_EVENT_GFX_UNOWN_Y 676 +#define OBJ_EVENT_GFX_UNOWN_Z 677 +#define OBJ_EVENT_GFX_UNOWN_EXCLAMATION 678 +#define OBJ_EVENT_GFX_UNOWN_QUESTION 679 + +#define NUM_OBJ_EVENT_GFX 680 // These are dynamic object gfx ids. 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 ba89de67a..2fb2550de 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -1103,6 +1103,33 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_SLOWKING] = &gObjectEventGraphicsInfo_Slowking, [OBJ_EVENT_GFX_MISDREAVUS] = &gObjectEventGraphicsInfo_Misdreavus, [OBJ_EVENT_GFX_UNOWN_A] = &gObjectEventGraphicsInfo_Unown_A, + [OBJ_EVENT_GFX_UNOWN_B] = &gObjectEventGraphicsInfo_Unown_B, + [OBJ_EVENT_GFX_UNOWN_C] = &gObjectEventGraphicsInfo_Unown_C, + [OBJ_EVENT_GFX_UNOWN_D] = &gObjectEventGraphicsInfo_Unown_D, + [OBJ_EVENT_GFX_UNOWN_E] = &gObjectEventGraphicsInfo_Unown_E, + [OBJ_EVENT_GFX_UNOWN_F] = &gObjectEventGraphicsInfo_Unown_F, + [OBJ_EVENT_GFX_UNOWN_G] = &gObjectEventGraphicsInfo_Unown_G, + [OBJ_EVENT_GFX_UNOWN_H] = &gObjectEventGraphicsInfo_Unown_H, + [OBJ_EVENT_GFX_UNOWN_I] = &gObjectEventGraphicsInfo_Unown_I, + [OBJ_EVENT_GFX_UNOWN_J] = &gObjectEventGraphicsInfo_Unown_J, + [OBJ_EVENT_GFX_UNOWN_K] = &gObjectEventGraphicsInfo_Unown_K, + [OBJ_EVENT_GFX_UNOWN_L] = &gObjectEventGraphicsInfo_Unown_L, + [OBJ_EVENT_GFX_UNOWN_M] = &gObjectEventGraphicsInfo_Unown_M, + [OBJ_EVENT_GFX_UNOWN_N] = &gObjectEventGraphicsInfo_Unown_N, + [OBJ_EVENT_GFX_UNOWN_O] = &gObjectEventGraphicsInfo_Unown_O, + [OBJ_EVENT_GFX_UNOWN_P] = &gObjectEventGraphicsInfo_Unown_P, + [OBJ_EVENT_GFX_UNOWN_Q] = &gObjectEventGraphicsInfo_Unown_Q, + [OBJ_EVENT_GFX_UNOWN_R] = &gObjectEventGraphicsInfo_Unown_R, + [OBJ_EVENT_GFX_UNOWN_S] = &gObjectEventGraphicsInfo_Unown_S, + [OBJ_EVENT_GFX_UNOWN_T] = &gObjectEventGraphicsInfo_Unown_T, + [OBJ_EVENT_GFX_UNOWN_U] = &gObjectEventGraphicsInfo_Unown_U, + [OBJ_EVENT_GFX_UNOWN_V] = &gObjectEventGraphicsInfo_Unown_V, + [OBJ_EVENT_GFX_UNOWN_W] = &gObjectEventGraphicsInfo_Unown_W, + [OBJ_EVENT_GFX_UNOWN_X] = &gObjectEventGraphicsInfo_Unown_X, + [OBJ_EVENT_GFX_UNOWN_Y] = &gObjectEventGraphicsInfo_Unown_Y, + [OBJ_EVENT_GFX_UNOWN_Z] = &gObjectEventGraphicsInfo_Unown_Z, + [OBJ_EVENT_GFX_UNOWN_EXCLAMATION] = &gObjectEventGraphicsInfo_Unown_Exclamation, + [OBJ_EVENT_GFX_UNOWN_QUESTION] = &gObjectEventGraphicsInfo_Unown_Question, [OBJ_EVENT_GFX_WOBBUFFET] = &gObjectEventGraphicsInfo_Wobbuffet, [OBJ_EVENT_GFX_GIRAFARIG] = &gObjectEventGraphicsInfo_Girafarig, [OBJ_EVENT_GFX_PINECO] = &gObjectEventGraphicsInfo_Pineco, @@ -1288,6 +1315,9 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER] = &gObjectEventGraphicsInfo_Rayquaza_Follower, [OBJ_EVENT_GFX_JIRACHI] = &gObjectEventGraphicsInfo_Jirachi, [OBJ_EVENT_GFX_DEOXYS_NORMAL] = &gObjectEventGraphicsInfo_Deoxys_Normal, + [OBJ_EVENT_GFX_DEOXYS_ATTACK] = &gObjectEventGraphicsInfo_Deoxys_Attack, + [OBJ_EVENT_GFX_DEOXYS_DEFENSE] = &gObjectEventGraphicsInfo_Deoxys_Defense, + [OBJ_EVENT_GFX_DEOXYS_SPEED] = &gObjectEventGraphicsInfo_Deoxys_Speed, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/overworld.c b/src/overworld.c index b6726f9d5..773478e10 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -39,6 +39,7 @@ #include "new_game.h" #include "palette.h" #include "play_time.h" +#include "pokemon.h" #include "random.h" #include "roamer.h" #include "rotating_gate.h" @@ -3248,6 +3249,15 @@ void UpdateFollowerPokemonGraphic(void) // If so, the following Pokemon needs to change. u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + + // If the lead Pokemon is Unown, use the correct sprite + if (leadMonGraphicId == 439) + { + u8 unownLetter = GET_UNOWN_LETTER(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_PERSONALITY)); + + if (unownLetter) + leadMonGraphicId = 652 + unownLetter; + } if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) { From ecfef6c5e210c6665a2c3c6ea4a2fcb4b714c5ff Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Thu, 10 Feb 2022 15:35:15 -0800 Subject: [PATCH 17/71] Reduced number of palettes --- .../object_events/palettes/followers/abra.pal | 19 - .../palettes/followers/absol.pal | 4 +- .../palettes/followers/aerodactyl.pal | 8 +- .../palettes/followers/alakazam.pal | 19 - .../palettes/followers/altaria.pal | 12 +- .../palettes/followers/arbok.pal | 8 +- .../palettes/followers/arcanine.pal | 6 +- .../object_events/palettes/followers/aron.pal | 19 - .../palettes/followers/azumarill.pal | 6 +- .../palettes/followers/azurill.pal | 10 +- .../palettes/followers/baltoy.pal | 14 +- .../palettes/followers/banette.pal | 6 +- .../palettes/followers/beedrill.pal | 8 +- .../palettes/followers/bellsprout.pal | 19 - .../palettes/followers/bulbasaur1.pal | 8 +- .../palettes/followers/cacnea.pal | 4 +- .../palettes/followers/cacturne.pal | 19 - .../palettes/followers/cascoon.pal | 8 +- .../palettes/followers/castform.pal | 19 - .../palettes/followers/chansey.pal | 12 +- .../palettes/followers/chikorita.pal | 19 - .../palettes/followers/clefairy.pal | 19 - .../palettes/followers/cleffa.pal | 10 +- .../palettes/followers/combusken.pal | 8 +- .../palettes/followers/cubone.pal | 8 +- .../palettes/followers/dewgong.pal | 19 - .../palettes/followers/ditto.pal | 19 - .../palettes/followers/doduo.pal | 14 +- .../palettes/followers/drowzee.pal | 19 - .../palettes/followers/electabuzz.pal | 19 - .../palettes/followers/electrode.pal | 19 - .../palettes/followers/elekid.pal | 8 +- .../palettes/followers/exeggcute.pal | 12 +- .../palettes/followers/furret.pal | 14 +- .../palettes/followers/geodude.pal | 19 - .../palettes/followers/gloom.pal | 4 +- .../palettes/followers/golbat.pal | 2 +- .../palettes/followers/graveler.pal | 2 +- .../palettes/followers/grimer.pal | 19 - .../palettes/followers/growlithe.pal | 19 - .../palettes/followers/houndoom.pal | 2 +- .../palettes/followers/houndour.pal | 19 - .../palettes/followers/hypno.pal | 4 +- .../palettes/followers/kadabra.pal | 2 +- .../palettes/followers/kakuna.pal | 19 - .../palettes/followers/kingler.pal | 6 +- .../palettes/followers/kirlia.pal | 19 - .../palettes/followers/koffing.pal | 2 +- .../palettes/followers/krabby.pal | 19 - .../palettes/followers/lairon.pal | 6 +- .../palettes/followers/larvitar.pal | 6 +- .../palettes/followers/loudred.pal | 19 - .../palettes/followers/lunatone.pal | 19 - .../palettes/followers/magneton.pal | 19 - .../palettes/followers/marill.pal | 19 - .../palettes/followers/marowak.pal | 19 - .../palettes/followers/metagross.pal | 19 - .../palettes/followers/metapod.pal | 19 - .../palettes/followers/minun.pal | 6 +- .../object_events/palettes/followers/muk.pal | 12 +- .../palettes/followers/nidoran_m.pal | 6 +- .../palettes/followers/nidorino.pal | 19 - .../palettes/followers/oddish.pal | 19 - .../object_events/palettes/followers/onix.pal | 19 - .../palettes/followers/paras.pal | 4 +- .../palettes/followers/parasect.pal | 19 - .../palettes/followers/pinsir.pal | 8 +- .../palettes/followers/plusle.pal | 19 - .../palettes/followers/poliwhirl.pal | 2 +- .../palettes/followers/poliwrath.pal | 19 - .../palettes/followers/ponyta.pal | 6 +- .../palettes/followers/psyduck.pal | 19 - .../palettes/followers/pupitar.pal | 19 - .../palettes/followers/quagsire.pal | 6 +- .../palettes/followers/ralts.pal | 19 - .../palettes/followers/rapidash.pal | 19 - .../palettes/followers/rhyhorn.pal | 19 - .../palettes/followers/shuppet.pal | 19 - .../palettes/followers/silcoon.pal | 19 - .../palettes/followers/skitty.pal | 19 - .../palettes/followers/slugma.pal | 19 - .../palettes/followers/solrock.pal | 4 +- .../palettes/followers/starmie.pal | 8 +- .../palettes/followers/staryu.pal | 19 - .../palettes/followers/steelix.pal | 19 - .../palettes/followers/swablu.pal | 19 - .../palettes/followers/togetic.pal | 19 - .../palettes/followers/torchic.pal | 19 - .../palettes/followers/unown.pal | 19 - .../palettes/followers/vileplume.pal | 19 - .../palettes/followers/voltorb.pal | 6 +- .../palettes/followers/weedle.pal | 2 +- .../palettes/followers/weezing.pal | 19 - .../palettes/followers/wigglytuff.pal | 8 +- .../palettes/followers/wobbuffet.pal | 14 +- .../palettes/followers/wooper.pal | 19 - .../palettes/followers/zubat.pal | 19 - graphics/object_events/palettes/ss_tidal.pal | 4 +- .../palettes/submarine_shadow.pal | 19 - graphics/object_events/pics/misc/ss_tidal.png | Bin 693 -> 693 bytes .../pics/misc/submarine_shadow.png | Bin 243 -> 243 bytes .../pics/pokemon/followers/abra.png | Bin 547 -> 554 bytes .../pics/pokemon/followers/absol.png | Bin 1043 -> 1043 bytes .../pics/pokemon/followers/aerodactyl.png | Bin 1037 -> 1037 bytes .../pics/pokemon/followers/alakazam.png | Bin 799 -> 808 bytes .../pics/pokemon/followers/altaria.png | Bin 1180 -> 1150 bytes .../pics/pokemon/followers/arbok.png | Bin 707 -> 707 bytes .../pics/pokemon/followers/arcanine.png | Bin 1005 -> 1005 bytes .../pics/pokemon/followers/aron.png | Bin 457 -> 463 bytes .../pics/pokemon/followers/azumarill.png | Bin 725 -> 725 bytes .../pics/pokemon/followers/azurill.png | Bin 534 -> 534 bytes .../pics/pokemon/followers/baltoy.png | Bin 453 -> 453 bytes .../pics/pokemon/followers/banette.png | Bin 620 -> 620 bytes .../pics/pokemon/followers/beedrill.png | Bin 861 -> 861 bytes .../pics/pokemon/followers/bellsprout.png | Bin 436 -> 440 bytes .../pics/pokemon/followers/bulbasaur.png | Bin 552 -> 552 bytes .../pics/pokemon/followers/cacnea.png | Bin 606 -> 606 bytes .../pics/pokemon/followers/cacturne.png | Bin 572 -> 582 bytes .../pics/pokemon/followers/cascoon.png | Bin 428 -> 428 bytes .../pics/pokemon/followers/castform.png | Bin 403 -> 405 bytes .../pics/pokemon/followers/chansey.png | Bin 558 -> 558 bytes .../pics/pokemon/followers/chikorita.png | Bin 479 -> 481 bytes .../pics/pokemon/followers/clefairy.png | Bin 508 -> 512 bytes .../pics/pokemon/followers/cleffa.png | Bin 449 -> 449 bytes .../pics/pokemon/followers/combusken.png | Bin 602 -> 602 bytes .../pics/pokemon/followers/cubone.png | Bin 751 -> 751 bytes .../pics/pokemon/followers/dewgong.png | Bin 800 -> 806 bytes .../pics/pokemon/followers/ditto.png | Bin 436 -> 437 bytes .../pics/pokemon/followers/doduo.png | Bin 575 -> 575 bytes .../pics/pokemon/followers/drowzee.png | Bin 574 -> 582 bytes .../pics/pokemon/followers/electabuzz.png | Bin 692 -> 699 bytes .../pics/pokemon/followers/electrode.png | Bin 529 -> 535 bytes .../pics/pokemon/followers/elekid.png | Bin 558 -> 558 bytes .../pics/pokemon/followers/exeggcute.png | Bin 875 -> 875 bytes .../pics/pokemon/followers/furret.png | Bin 791 -> 791 bytes .../pics/pokemon/followers/geodude.png | Bin 426 -> 429 bytes .../pics/pokemon/followers/gloom.png | Bin 534 -> 534 bytes .../pics/pokemon/followers/golbat.png | Bin 844 -> 844 bytes .../pics/pokemon/followers/graveler.png | Bin 687 -> 687 bytes .../pics/pokemon/followers/grimer.png | Bin 593 -> 596 bytes .../pics/pokemon/followers/growlithe.png | Bin 652 -> 652 bytes .../pics/pokemon/followers/houndoom.png | Bin 758 -> 758 bytes .../pics/pokemon/followers/houndour.png | Bin 597 -> 598 bytes .../pics/pokemon/followers/hypno.png | Bin 684 -> 684 bytes .../pics/pokemon/followers/kadabra.png | Bin 766 -> 766 bytes .../pics/pokemon/followers/kakuna.png | Bin 474 -> 479 bytes .../pics/pokemon/followers/kingler.png | Bin 1156 -> 1156 bytes .../pics/pokemon/followers/kirlia.png | Bin 548 -> 551 bytes .../pics/pokemon/followers/koffing.png | Bin 644 -> 644 bytes .../pics/pokemon/followers/lairon.png | Bin 867 -> 867 bytes .../pics/pokemon/followers/larvitar.png | Bin 479 -> 479 bytes .../pics/pokemon/followers/loudred.png | Bin 831 -> 831 bytes .../pics/pokemon/followers/lunatone.png | Bin 456 -> 461 bytes .../pics/pokemon/followers/marill.png | Bin 574 -> 581 bytes .../pics/pokemon/followers/marowak.png | Bin 855 -> 861 bytes .../pics/pokemon/followers/metagross.png | Bin 969 -> 964 bytes .../pics/pokemon/followers/metapod.png | Bin 454 -> 456 bytes .../pics/pokemon/followers/minun.png | Bin 483 -> 483 bytes .../pics/pokemon/followers/muk.png | Bin 728 -> 728 bytes .../pics/pokemon/followers/nidoran_m.png | Bin 525 -> 525 bytes .../pics/pokemon/followers/nidorino.png | Bin 692 -> 702 bytes .../pics/pokemon/followers/oddish.png | Bin 408 -> 412 bytes .../pics/pokemon/followers/onix.png | Bin 1023 -> 1035 bytes .../pics/pokemon/followers/paras.png | Bin 625 -> 625 bytes .../pics/pokemon/followers/parasect.png | Bin 782 -> 778 bytes .../pics/pokemon/followers/pinsir.png | Bin 788 -> 788 bytes .../pics/pokemon/followers/plusle.png | Bin 485 -> 489 bytes .../pics/pokemon/followers/poliwhirl.png | Bin 569 -> 569 bytes .../pics/pokemon/followers/poliwrath.png | Bin 741 -> 747 bytes .../pics/pokemon/followers/ponyta.png | Bin 679 -> 679 bytes .../pics/pokemon/followers/psyduck.png | Bin 516 -> 527 bytes .../pics/pokemon/followers/pupitar.png | Bin 623 -> 629 bytes .../pics/pokemon/followers/quagsire.png | Bin 625 -> 625 bytes .../pics/pokemon/followers/ralts.png | Bin 476 -> 476 bytes .../pics/pokemon/followers/rapidash.png | Bin 917 -> 922 bytes .../pics/pokemon/followers/rhyhorn.png | Bin 628 -> 635 bytes .../pics/pokemon/followers/shuppet.png | Bin 512 -> 522 bytes .../pics/pokemon/followers/silcoon.png | Bin 416 -> 421 bytes .../pics/pokemon/followers/skitty.png | Bin 531 -> 536 bytes .../pics/pokemon/followers/slugma.png | Bin 659 -> 666 bytes .../pics/pokemon/followers/solrock.png | Bin 509 -> 509 bytes .../pics/pokemon/followers/starmie.png | Bin 703 -> 703 bytes .../pics/pokemon/followers/staryu.png | Bin 504 -> 512 bytes .../pics/pokemon/followers/steelix.png | Bin 1628 -> 1629 bytes .../pics/pokemon/followers/swablu.png | Bin 723 -> 713 bytes .../pics/pokemon/followers/togetic.png | Bin 747 -> 753 bytes .../pics/pokemon/followers/torchic.png | Bin 460 -> 465 bytes .../pics/pokemon/followers/unown!.png | Bin 279 -> 282 bytes .../pics/pokemon/followers/unowna.png | Bin 316 -> 319 bytes .../pics/pokemon/followers/unownb.png | Bin 344 -> 347 bytes .../pics/pokemon/followers/unownc.png | Bin 393 -> 396 bytes .../pics/pokemon/followers/unownd.png | Bin 354 -> 357 bytes .../pics/pokemon/followers/unowne.png | Bin 343 -> 347 bytes .../pics/pokemon/followers/unownf.png | Bin 375 -> 378 bytes .../pics/pokemon/followers/unowng.png | Bin 354 -> 357 bytes .../pics/pokemon/followers/unownh.png | Bin 352 -> 355 bytes .../pics/pokemon/followers/unowni.png | Bin 310 -> 313 bytes .../pics/pokemon/followers/unownj.png | Bin 323 -> 327 bytes .../pics/pokemon/followers/unownk.png | Bin 332 -> 336 bytes .../pics/pokemon/followers/unownl.png | Bin 326 -> 329 bytes .../pics/pokemon/followers/unownm.png | Bin 341 -> 345 bytes .../pics/pokemon/followers/unownn.png | Bin 352 -> 357 bytes .../pics/pokemon/followers/unowno.png | Bin 345 -> 349 bytes .../pics/pokemon/followers/unownp.png | Bin 312 -> 317 bytes .../pics/pokemon/followers/unownq.png | Bin 354 -> 358 bytes .../pics/pokemon/followers/unownquestion.png | Bin 324 -> 329 bytes .../pics/pokemon/followers/unownr.png | Bin 317 -> 320 bytes .../pics/pokemon/followers/unowns.png | Bin 378 -> 382 bytes .../pics/pokemon/followers/unownt.png | Bin 287 -> 291 bytes .../pics/pokemon/followers/unownu.png | Bin 321 -> 324 bytes .../pics/pokemon/followers/unownv.png | Bin 307 -> 312 bytes .../pics/pokemon/followers/unownw.png | Bin 315 -> 318 bytes .../pics/pokemon/followers/unownx.png | Bin 316 -> 320 bytes .../pics/pokemon/followers/unowny.png | Bin 322 -> 327 bytes .../pics/pokemon/followers/unownz.png | Bin 361 -> 365 bytes .../pics/pokemon/followers/vileplume.png | Bin 665 -> 672 bytes .../pics/pokemon/followers/voltorb.png | Bin 349 -> 349 bytes .../pics/pokemon/followers/weedle.png | Bin 547 -> 547 bytes .../pics/pokemon/followers/weezing.png | Bin 1158 -> 1162 bytes .../pics/pokemon/followers/wigglytuff.png | Bin 602 -> 602 bytes .../pics/pokemon/followers/wobbuffet.png | Bin 551 -> 551 bytes .../pics/pokemon/followers/wooper.png | Bin 444 -> 446 bytes .../pics/pokemon/followers/zubat.png | Bin 642 -> 644 bytes .../object_events/object_event_graphics.h | 53 -- .../object_event_graphics_info.h | 160 ++-- src/event_object_movement.c | 800 ++++++++---------- 226 files changed, 587 insertions(+), 1753 deletions(-) delete mode 100644 graphics/object_events/palettes/followers/abra.pal delete mode 100644 graphics/object_events/palettes/followers/alakazam.pal delete mode 100644 graphics/object_events/palettes/followers/aron.pal delete mode 100644 graphics/object_events/palettes/followers/bellsprout.pal delete mode 100644 graphics/object_events/palettes/followers/cacturne.pal delete mode 100644 graphics/object_events/palettes/followers/castform.pal delete mode 100644 graphics/object_events/palettes/followers/chikorita.pal delete mode 100644 graphics/object_events/palettes/followers/clefairy.pal delete mode 100644 graphics/object_events/palettes/followers/dewgong.pal delete mode 100644 graphics/object_events/palettes/followers/ditto.pal delete mode 100644 graphics/object_events/palettes/followers/drowzee.pal delete mode 100644 graphics/object_events/palettes/followers/electabuzz.pal delete mode 100644 graphics/object_events/palettes/followers/electrode.pal delete mode 100644 graphics/object_events/palettes/followers/geodude.pal delete mode 100644 graphics/object_events/palettes/followers/grimer.pal delete mode 100644 graphics/object_events/palettes/followers/growlithe.pal delete mode 100644 graphics/object_events/palettes/followers/houndour.pal delete mode 100644 graphics/object_events/palettes/followers/kakuna.pal delete mode 100644 graphics/object_events/palettes/followers/kirlia.pal delete mode 100644 graphics/object_events/palettes/followers/krabby.pal delete mode 100644 graphics/object_events/palettes/followers/loudred.pal delete mode 100644 graphics/object_events/palettes/followers/lunatone.pal delete mode 100644 graphics/object_events/palettes/followers/magneton.pal delete mode 100644 graphics/object_events/palettes/followers/marill.pal delete mode 100644 graphics/object_events/palettes/followers/marowak.pal delete mode 100644 graphics/object_events/palettes/followers/metagross.pal delete mode 100644 graphics/object_events/palettes/followers/metapod.pal delete mode 100644 graphics/object_events/palettes/followers/nidorino.pal delete mode 100644 graphics/object_events/palettes/followers/oddish.pal delete mode 100644 graphics/object_events/palettes/followers/onix.pal delete mode 100644 graphics/object_events/palettes/followers/parasect.pal delete mode 100644 graphics/object_events/palettes/followers/plusle.pal delete mode 100644 graphics/object_events/palettes/followers/poliwrath.pal delete mode 100644 graphics/object_events/palettes/followers/psyduck.pal delete mode 100644 graphics/object_events/palettes/followers/pupitar.pal delete mode 100644 graphics/object_events/palettes/followers/ralts.pal delete mode 100644 graphics/object_events/palettes/followers/rapidash.pal delete mode 100644 graphics/object_events/palettes/followers/rhyhorn.pal delete mode 100644 graphics/object_events/palettes/followers/shuppet.pal delete mode 100644 graphics/object_events/palettes/followers/silcoon.pal delete mode 100644 graphics/object_events/palettes/followers/skitty.pal delete mode 100644 graphics/object_events/palettes/followers/slugma.pal delete mode 100644 graphics/object_events/palettes/followers/staryu.pal delete mode 100644 graphics/object_events/palettes/followers/steelix.pal delete mode 100644 graphics/object_events/palettes/followers/swablu.pal delete mode 100644 graphics/object_events/palettes/followers/togetic.pal delete mode 100644 graphics/object_events/palettes/followers/torchic.pal delete mode 100644 graphics/object_events/palettes/followers/unown.pal delete mode 100644 graphics/object_events/palettes/followers/vileplume.pal delete mode 100644 graphics/object_events/palettes/followers/weezing.pal delete mode 100644 graphics/object_events/palettes/followers/wooper.pal delete mode 100644 graphics/object_events/palettes/followers/zubat.pal delete mode 100644 graphics/object_events/palettes/submarine_shadow.pal diff --git a/graphics/object_events/palettes/followers/abra.pal b/graphics/object_events/palettes/followers/abra.pal deleted file mode 100644 index dd409648b..000000000 --- a/graphics/object_events/palettes/followers/abra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -1 1 1 -73 57 25 -145 121 97 -249 217 97 -121 97 57 -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/graphics/object_events/palettes/followers/absol.pal b/graphics/object_events/palettes/followers/absol.pal index 4d7e076a8..ece8b1c3e 100644 --- a/graphics/object_events/palettes/followers/absol.pal +++ b/graphics/object_events/palettes/followers/absol.pal @@ -12,8 +12,8 @@ JASC-PAL 65 73 97 129 33 33 233 233 249 -0 0 0 -0 0 0 +185 185 185 +97 105 145 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/aerodactyl.pal b/graphics/object_events/palettes/followers/aerodactyl.pal index 57c8403dd..36ee48913 100644 --- a/graphics/object_events/palettes/followers/aerodactyl.pal +++ b/graphics/object_events/palettes/followers/aerodactyl.pal @@ -12,8 +12,8 @@ JASC-PAL 233 233 249 129 89 129 185 137 193 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +105 137 49 +225 225 225 +161 217 73 +57 73 25 0 0 0 diff --git a/graphics/object_events/palettes/followers/alakazam.pal b/graphics/object_events/palettes/followers/alakazam.pal deleted file mode 100644 index ba8f7100d..000000000 --- a/graphics/object_events/palettes/followers/alakazam.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 169 49 -177 177 185 -105 81 57 -1 1 1 -249 241 193 -145 121 57 -73 57 25 -249 217 97 -233 233 249 -145 121 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/altaria.pal b/graphics/object_events/palettes/followers/altaria.pal index ad098b4a4..e6335124b 100644 --- a/graphics/object_events/palettes/followers/altaria.pal +++ b/graphics/object_events/palettes/followers/altaria.pal @@ -6,14 +6,14 @@ JASC-PAL 97 193 233 65 169 217 73 81 105 -1 1 1 209 225 233 -1 3 7 +1 2 5 113 129 145 41 105 153 169 177 193 249 249 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +225 225 233 +89 145 177 +113 177 209 +65 113 153 +49 81 121 diff --git a/graphics/object_events/palettes/followers/arbok.pal b/graphics/object_events/palettes/followers/arbok.pal index a2c93dc60..3b8525b57 100644 --- a/graphics/object_events/palettes/followers/arbok.pal +++ b/graphics/object_events/palettes/followers/arbok.pal @@ -10,10 +10,10 @@ JASC-PAL 1 1 1 65 65 65 233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +145 121 177 +185 145 225 +113 81 145 +225 177 241 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/arcanine.pal b/graphics/object_events/palettes/followers/arcanine.pal index 5707ca4a6..d2b3a0236 100644 --- a/graphics/object_events/palettes/followers/arcanine.pal +++ b/graphics/object_events/palettes/followers/arcanine.pal @@ -14,6 +14,6 @@ JASC-PAL 249 105 49 121 89 57 49 49 49 -0 0 0 -0 0 0 -0 0 0 +233 121 73 +137 89 41 +201 153 81 diff --git a/graphics/object_events/palettes/followers/aron.pal b/graphics/object_events/palettes/followers/aron.pal deleted file mode 100644 index 9e423f369..000000000 --- a/graphics/object_events/palettes/followers/aron.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 57 73 -233 233 249 -105 145 201 -89 89 89 -185 185 201 -65 97 129 -49 41 57 -161 161 177 -113 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/azumarill.pal b/graphics/object_events/palettes/followers/azumarill.pal index 8efd7cab0..6e4c1f918 100644 --- a/graphics/object_events/palettes/followers/azumarill.pal +++ b/graphics/object_events/palettes/followers/azumarill.pal @@ -14,6 +14,6 @@ JASC-PAL 129 161 201 1 1 1 209 209 225 -0 0 0 -0 0 0 -0 0 0 +169 185 209 +137 161 185 +33 57 105 diff --git a/graphics/object_events/palettes/followers/azurill.pal b/graphics/object_events/palettes/followers/azurill.pal index bc1bf8496..c97f6620f 100644 --- a/graphics/object_events/palettes/followers/azurill.pal +++ b/graphics/object_events/palettes/followers/azurill.pal @@ -12,8 +12,8 @@ JASC-PAL 57 105 153 113 177 241 233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +129 129 145 +193 193 209 +65 65 81 +97 97 113 +161 161 177 diff --git a/graphics/object_events/palettes/followers/baltoy.pal b/graphics/object_events/palettes/followers/baltoy.pal index 07e4664df..d903bb8ba 100644 --- a/graphics/object_events/palettes/followers/baltoy.pal +++ b/graphics/object_events/palettes/followers/baltoy.pal @@ -10,10 +10,10 @@ JASC-PAL 1 1 1 225 201 153 185 81 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +201 145 17 +161 57 25 +73 1 1 +217 97 65 +193 73 41 +121 25 17 +233 209 105 diff --git a/graphics/object_events/palettes/followers/banette.pal b/graphics/object_events/palettes/followers/banette.pal index 1573cfa1a..5324e0358 100644 --- a/graphics/object_events/palettes/followers/banette.pal +++ b/graphics/object_events/palettes/followers/banette.pal @@ -14,6 +14,6 @@ JASC-PAL 129 129 161 65 73 97 145 33 33 -0 0 0 -0 0 0 -0 0 0 +81 129 201 +161 161 193 +49 81 153 diff --git a/graphics/object_events/palettes/followers/beedrill.pal b/graphics/object_events/palettes/followers/beedrill.pal index e4cedddf9..3888be488 100644 --- a/graphics/object_events/palettes/followers/beedrill.pal +++ b/graphics/object_events/palettes/followers/beedrill.pal @@ -11,9 +11,9 @@ JASC-PAL 233 233 249 81 81 81 1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +129 129 129 +81 73 73 +49 49 49 +105 97 97 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/bellsprout.pal b/graphics/object_events/palettes/followers/bellsprout.pal deleted file mode 100644 index 4084780e4..000000000 --- a/graphics/object_events/palettes/followers/bellsprout.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 153 57 -1 1 1 -81 65 49 -241 121 161 -137 217 81 -169 65 113 -121 9 5 -185 161 49 -241 225 73 -65 89 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bulbasaur1.pal b/graphics/object_events/palettes/followers/bulbasaur1.pal index 96cbecffe..574f338df 100644 --- a/graphics/object_events/palettes/followers/bulbasaur1.pal +++ b/graphics/object_events/palettes/followers/bulbasaur1.pal @@ -13,7 +13,7 @@ JASC-PAL 1 1 1 185 49 25 65 97 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +145 145 145 +137 33 57 +113 113 113 +177 177 177 diff --git a/graphics/object_events/palettes/followers/cacnea.pal b/graphics/object_events/palettes/followers/cacnea.pal index 6787df531..37da24383 100644 --- a/graphics/object_events/palettes/followers/cacnea.pal +++ b/graphics/object_events/palettes/followers/cacnea.pal @@ -14,6 +14,6 @@ JASC-PAL 249 249 249 1 1 1 89 81 49 -0 0 0 -0 0 0 +169 201 121 +129 169 65 0 0 0 diff --git a/graphics/object_events/palettes/followers/cacturne.pal b/graphics/object_events/palettes/followers/cacturne.pal deleted file mode 100644 index 09c80452f..000000000 --- a/graphics/object_events/palettes/followers/cacturne.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 65 -169 201 121 -41 65 41 -1 1 1 -129 169 65 -57 97 57 -249 217 89 -81 81 81 -105 169 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cascoon.pal b/graphics/object_events/palettes/followers/cascoon.pal index b4d002949..68d6587a8 100644 --- a/graphics/object_events/palettes/followers/cascoon.pal +++ b/graphics/object_events/palettes/followers/cascoon.pal @@ -11,9 +11,9 @@ JASC-PAL 121 105 161 233 233 249 185 49 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +129 129 137 +81 81 81 +185 185 169 +225 225 209 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/castform.pal b/graphics/object_events/palettes/followers/castform.pal deleted file mode 100644 index 057916921..000000000 --- a/graphics/object_events/palettes/followers/castform.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 145 -193 193 209 -65 65 81 -1 1 1 -233 233 249 -97 97 113 -161 161 177 -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/graphics/object_events/palettes/followers/chansey.pal b/graphics/object_events/palettes/followers/chansey.pal index 72f30866b..b8f10da5f 100644 --- a/graphics/object_events/palettes/followers/chansey.pal +++ b/graphics/object_events/palettes/followers/chansey.pal @@ -10,10 +10,10 @@ JASC-PAL 233 233 249 169 185 209 225 97 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +169 145 65 +241 233 185 +233 185 65 +201 185 137 +105 97 65 +249 217 105 0 0 0 diff --git a/graphics/object_events/palettes/followers/chikorita.pal b/graphics/object_events/palettes/followers/chikorita.pal deleted file mode 100644 index 6f6efef17..000000000 --- a/graphics/object_events/palettes/followers/chikorita.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 145 41 -169 185 209 -145 193 65 -57 105 17 -1 1 1 -169 41 41 -113 177 81 -233 233 249 -193 217 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/clefairy.pal b/graphics/object_events/palettes/followers/clefairy.pal deleted file mode 100644 index e207e246c..000000000 --- a/graphics/object_events/palettes/followers/clefairy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -97 57 65 -233 233 249 -121 89 57 -169 169 169 -161 81 97 -185 105 129 -241 153 169 -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/palettes/followers/cleffa.pal b/graphics/object_events/palettes/followers/cleffa.pal index 249bd5c9d..c77ddde7a 100644 --- a/graphics/object_events/palettes/followers/cleffa.pal +++ b/graphics/object_events/palettes/followers/cleffa.pal @@ -12,8 +12,8 @@ JASC-PAL 1 1 1 153 89 97 97 49 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +113 129 185 +177 185 217 +49 49 81 +225 225 241 +73 81 121 diff --git a/graphics/object_events/palettes/followers/combusken.pal b/graphics/object_events/palettes/followers/combusken.pal index 5658b6a62..f7982b18f 100644 --- a/graphics/object_events/palettes/followers/combusken.pal +++ b/graphics/object_events/palettes/followers/combusken.pal @@ -13,7 +13,7 @@ JASC-PAL 233 233 249 249 209 97 201 105 17 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +121 81 17 +161 145 81 +233 169 17 +209 97 1 diff --git a/graphics/object_events/palettes/followers/cubone.pal b/graphics/object_events/palettes/followers/cubone.pal index 19517af25..719548eab 100644 --- a/graphics/object_events/palettes/followers/cubone.pal +++ b/graphics/object_events/palettes/followers/cubone.pal @@ -13,7 +13,7 @@ JASC-PAL 73 73 73 209 177 145 233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +169 129 73 +201 153 81 +225 193 145 +193 161 105 diff --git a/graphics/object_events/palettes/followers/dewgong.pal b/graphics/object_events/palettes/followers/dewgong.pal deleted file mode 100644 index 0897c29ff..000000000 --- a/graphics/object_events/palettes/followers/dewgong.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 129 185 -177 185 217 -49 49 81 -225 225 241 -1 1 1 -73 81 121 -233 233 249 -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/graphics/object_events/palettes/followers/ditto.pal b/graphics/object_events/palettes/followers/ditto.pal deleted file mode 100644 index c366583be..000000000 --- a/graphics/object_events/palettes/followers/ditto.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 177 -185 145 225 -113 81 145 -65 65 65 -1 1 1 -225 177 241 -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/graphics/object_events/palettes/followers/doduo.pal b/graphics/object_events/palettes/followers/doduo.pal index eea5b6958..a2c6db86f 100644 --- a/graphics/object_events/palettes/followers/doduo.pal +++ b/graphics/object_events/palettes/followers/doduo.pal @@ -10,10 +10,10 @@ JASC-PAL 225 177 105 185 129 73 105 73 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +57 113 65 +17 161 49 +33 73 41 +113 1 1 +65 113 153 +41 73 73 +137 193 129 diff --git a/graphics/object_events/palettes/followers/drowzee.pal b/graphics/object_events/palettes/followers/drowzee.pal deleted file mode 100644 index d19de6d0d..000000000 --- a/graphics/object_events/palettes/followers/drowzee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -81 65 49 -233 233 249 -105 81 121 -1 1 1 -121 105 33 -49 49 49 -233 201 81 -89 81 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/electabuzz.pal b/graphics/object_events/palettes/followers/electabuzz.pal deleted file mode 100644 index 9c31f633c..000000000 --- a/graphics/object_events/palettes/followers/electabuzz.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 17 -145 145 145 -65 57 33 -233 233 249 -73 81 81 -241 209 1 -1 1 1 -49 49 49 -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/palettes/followers/electrode.pal b/graphics/object_events/palettes/followers/electrode.pal deleted file mode 100644 index 335df9141..000000000 --- a/graphics/object_events/palettes/followers/electrode.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -185 185 193 -105 105 105 -201 33 33 -217 217 217 -49 49 49 -161 161 161 -233 233 249 -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/palettes/followers/elekid.pal b/graphics/object_events/palettes/followers/elekid.pal index b3d6b954a..f012682dd 100644 --- a/graphics/object_events/palettes/followers/elekid.pal +++ b/graphics/object_events/palettes/followers/elekid.pal @@ -9,10 +9,10 @@ JASC-PAL 249 217 97 57 65 73 233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +185 153 41 +73 57 25 +145 121 97 +121 97 57 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/exeggcute.pal b/graphics/object_events/palettes/followers/exeggcute.pal index 665e1c152..904253fe5 100644 --- a/graphics/object_events/palettes/followers/exeggcute.pal +++ b/graphics/object_events/palettes/followers/exeggcute.pal @@ -10,10 +10,10 @@ JASC-PAL 161 97 105 1 1 1 233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +89 121 145 +161 185 201 +49 65 81 +193 209 225 +193 57 57 +129 153 169 0 0 0 diff --git a/graphics/object_events/palettes/followers/furret.pal b/graphics/object_events/palettes/followers/furret.pal index 923ed8670..b060290e2 100644 --- a/graphics/object_events/palettes/followers/furret.pal +++ b/graphics/object_events/palettes/followers/furret.pal @@ -10,10 +10,10 @@ JASC-PAL 209 177 113 153 113 65 89 57 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +209 161 73 +97 57 57 +249 225 129 +129 105 73 +249 137 153 +177 81 89 +57 57 89 diff --git a/graphics/object_events/palettes/followers/geodude.pal b/graphics/object_events/palettes/followers/geodude.pal deleted file mode 100644 index ef0621ad0..000000000 --- a/graphics/object_events/palettes/followers/geodude.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 169 129 -121 113 97 -233 233 249 -65 49 33 -1 1 1 -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/graphics/object_events/palettes/followers/gloom.pal b/graphics/object_events/palettes/followers/gloom.pal index 638da245d..3bc035c4b 100644 --- a/graphics/object_events/palettes/followers/gloom.pal +++ b/graphics/object_events/palettes/followers/gloom.pal @@ -14,6 +14,6 @@ JASC-PAL 121 33 17 169 169 169 33 57 105 -0 0 0 -0 0 0 +217 185 145 +249 137 73 0 0 0 diff --git a/graphics/object_events/palettes/followers/golbat.pal b/graphics/object_events/palettes/followers/golbat.pal index 7d30f2f34..b174b8804 100644 --- a/graphics/object_events/palettes/followers/golbat.pal +++ b/graphics/object_events/palettes/followers/golbat.pal @@ -13,7 +13,7 @@ JASC-PAL 137 97 185 185 185 193 57 57 81 -0 0 0 +161 129 177 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/graveler.pal b/graphics/object_events/palettes/followers/graveler.pal index b4d24683f..1d6be14ad 100644 --- a/graphics/object_events/palettes/followers/graveler.pal +++ b/graphics/object_events/palettes/followers/graveler.pal @@ -11,7 +11,7 @@ JASC-PAL 57 49 49 177 81 105 1 1 1 -0 0 0 +65 49 33 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/grimer.pal b/graphics/object_events/palettes/followers/grimer.pal deleted file mode 100644 index fef0c2dba..000000000 --- a/graphics/object_events/palettes/followers/grimer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 57 65 -233 233 249 -105 81 121 -177 145 185 -129 105 137 -201 177 217 -121 97 153 -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/palettes/followers/growlithe.pal b/graphics/object_events/palettes/followers/growlithe.pal deleted file mode 100644 index cc0737467..000000000 --- a/graphics/object_events/palettes/followers/growlithe.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 121 73 -73 49 25 -177 177 209 -89 89 89 -1 1 1 -145 73 33 -137 89 41 -201 153 81 -233 233 249 -225 193 145 -185 81 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/houndoom.pal b/graphics/object_events/palettes/followers/houndoom.pal index e3f59cb81..a0eda915c 100644 --- a/graphics/object_events/palettes/followers/houndoom.pal +++ b/graphics/object_events/palettes/followers/houndoom.pal @@ -16,4 +16,4 @@ JASC-PAL 137 97 65 57 57 65 105 113 113 -0 0 0 +177 185 193 diff --git a/graphics/object_events/palettes/followers/houndour.pal b/graphics/object_events/palettes/followers/houndour.pal deleted file mode 100644 index f13881bf3..000000000 --- a/graphics/object_events/palettes/followers/houndour.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 97 -81 81 89 -225 185 161 -41 41 49 -137 129 145 -113 97 121 -233 233 249 -73 57 81 -1 1 1 -169 161 185 -137 97 65 -177 185 193 -57 57 65 -105 113 113 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hypno.pal b/graphics/object_events/palettes/followers/hypno.pal index 1edc1ee50..a6220a8e4 100644 --- a/graphics/object_events/palettes/followers/hypno.pal +++ b/graphics/object_events/palettes/followers/hypno.pal @@ -12,8 +12,8 @@ JASC-PAL 201 201 209 105 81 121 49 49 49 -0 0 0 -0 0 0 +81 65 49 +89 81 73 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/kadabra.pal b/graphics/object_events/palettes/followers/kadabra.pal index 1e20369be..0730ab262 100644 --- a/graphics/object_events/palettes/followers/kadabra.pal +++ b/graphics/object_events/palettes/followers/kadabra.pal @@ -15,5 +15,5 @@ JASC-PAL 233 97 121 233 233 249 145 121 97 -0 0 0 +105 81 57 0 0 0 diff --git a/graphics/object_events/palettes/followers/kakuna.pal b/graphics/object_events/palettes/followers/kakuna.pal deleted file mode 100644 index 4dd491adc..000000000 --- a/graphics/object_events/palettes/followers/kakuna.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 65 -97 73 41 -233 233 249 -249 209 65 -145 113 33 -1 1 1 -65 65 65 -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/graphics/object_events/palettes/followers/kingler.pal b/graphics/object_events/palettes/followers/kingler.pal index bc35398e4..fb56c4f8d 100644 --- a/graphics/object_events/palettes/followers/kingler.pal +++ b/graphics/object_events/palettes/followers/kingler.pal @@ -11,9 +11,9 @@ JASC-PAL 233 233 249 217 105 49 225 193 153 -0 0 0 -0 0 0 -0 0 0 +81 57 49 +201 97 33 +193 169 129 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/kirlia.pal b/graphics/object_events/palettes/followers/kirlia.pal deleted file mode 100644 index 5c4776a37..000000000 --- a/graphics/object_events/palettes/followers/kirlia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 57 -169 169 177 -17 65 33 -73 177 89 -129 33 57 -233 233 249 -241 105 105 -1 1 1 -129 129 145 -201 201 217 -73 73 81 -105 201 129 -185 49 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/koffing.pal b/graphics/object_events/palettes/followers/koffing.pal index e33a361cc..2b3eeef8c 100644 --- a/graphics/object_events/palettes/followers/koffing.pal +++ b/graphics/object_events/palettes/followers/koffing.pal @@ -14,6 +14,6 @@ JASC-PAL 169 169 209 105 57 65 201 185 121 -0 0 0 +161 161 129 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/krabby.pal b/graphics/object_events/palettes/followers/krabby.pal deleted file mode 100644 index 6a430a736..000000000 --- a/graphics/object_events/palettes/followers/krabby.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 81 -201 201 209 -81 57 49 -1 1 1 -201 97 33 -233 233 249 -169 65 57 -193 169 129 -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/palettes/followers/lairon.pal b/graphics/object_events/palettes/followers/lairon.pal index 17ab0b537..78533be4a 100644 --- a/graphics/object_events/palettes/followers/lairon.pal +++ b/graphics/object_events/palettes/followers/lairon.pal @@ -13,7 +13,7 @@ JASC-PAL 161 161 177 209 209 225 105 97 113 -0 0 0 -0 0 0 -0 0 0 +65 57 73 +89 89 89 +113 105 121 0 0 0 diff --git a/graphics/object_events/palettes/followers/larvitar.pal b/graphics/object_events/palettes/followers/larvitar.pal index e7a518194..fe5185282 100644 --- a/graphics/object_events/palettes/followers/larvitar.pal +++ b/graphics/object_events/palettes/followers/larvitar.pal @@ -12,8 +12,8 @@ JASC-PAL 73 89 41 233 233 249 121 33 33 -0 0 0 -0 0 0 -0 0 0 +33 57 73 +121 161 177 +137 193 201 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/loudred.pal b/graphics/object_events/palettes/followers/loudred.pal deleted file mode 100644 index be3de9d8f..000000000 --- a/graphics/object_events/palettes/followers/loudred.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 49 -105 73 33 -137 129 185 -81 73 105 -233 233 249 -105 97 153 -41 49 65 -233 209 105 -1 1 1 -169 177 193 -185 65 105 -137 41 65 -177 169 225 -105 113 137 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lunatone.pal b/graphics/object_events/palettes/followers/lunatone.pal deleted file mode 100644 index b3c10e691..000000000 --- a/graphics/object_events/palettes/followers/lunatone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 57 -65 73 89 -177 161 73 -97 81 33 -161 49 113 -1 1 1 -33 41 49 -209 193 97 -209 73 145 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magneton.pal b/graphics/object_events/palettes/followers/magneton.pal deleted file mode 100644 index 041b62f37..000000000 --- a/graphics/object_events/palettes/followers/magneton.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 145 -193 209 217 -81 81 81 -73 137 233 -233 65 65 -153 169 185 -57 57 57 -1 1 1 -113 113 121 -233 233 249 -177 177 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/marill.pal b/graphics/object_events/palettes/followers/marill.pal deleted file mode 100644 index 87cd5612b..000000000 --- a/graphics/object_events/palettes/followers/marill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -233 233 249 -57 113 161 -73 145 201 -49 57 65 -169 185 209 -185 49 41 -137 161 185 -113 177 241 -33 57 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/marowak.pal b/graphics/object_events/palettes/followers/marowak.pal deleted file mode 100644 index 2f8424f47..000000000 --- a/graphics/object_events/palettes/followers/marowak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 73 -193 193 193 -1 1 1 -129 129 129 -73 49 49 -217 225 225 -201 153 81 -225 193 145 -193 161 105 -73 73 73 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/metagross.pal b/graphics/object_events/palettes/followers/metagross.pal deleted file mode 100644 index f94f7a361..000000000 --- a/graphics/object_events/palettes/followers/metagross.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 129 169 -193 193 193 -65 65 65 -105 145 209 -1 1 1 -153 217 241 -153 41 41 -145 145 161 -41 41 49 -65 97 121 -233 233 249 -145 193 233 -33 65 81 -153 153 161 -0 0 0 diff --git a/graphics/object_events/palettes/followers/metapod.pal b/graphics/object_events/palettes/followers/metapod.pal deleted file mode 100644 index c070c1405..000000000 --- a/graphics/object_events/palettes/followers/metapod.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 49 -225 225 225 -161 217 73 -57 73 25 -1 1 1 -233 233 249 -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/graphics/object_events/palettes/followers/minun.pal b/graphics/object_events/palettes/followers/minun.pal index 56f9b114c..5ba06582d 100644 --- a/graphics/object_events/palettes/followers/minun.pal +++ b/graphics/object_events/palettes/followers/minun.pal @@ -11,9 +11,9 @@ JASC-PAL 113 177 209 49 81 121 1 1 1 -0 0 0 -0 0 0 -0 0 0 +185 73 89 +137 41 65 +225 113 121 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/muk.pal b/graphics/object_events/palettes/followers/muk.pal index 25c53904a..e7027b663 100644 --- a/graphics/object_events/palettes/followers/muk.pal +++ b/graphics/object_events/palettes/followers/muk.pal @@ -11,9 +11,9 @@ JASC-PAL 97 73 105 201 177 217 121 97 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +129 145 145 +41 49 89 +97 169 225 +41 41 41 +217 81 89 +161 177 217 diff --git a/graphics/object_events/palettes/followers/nidoran_m.pal b/graphics/object_events/palettes/followers/nidoran_m.pal index 91d4ac518..8752b5761 100644 --- a/graphics/object_events/palettes/followers/nidoran_m.pal +++ b/graphics/object_events/palettes/followers/nidoran_m.pal @@ -13,7 +13,7 @@ JASC-PAL 49 113 105 177 113 209 161 161 161 -0 0 0 -0 0 0 -0 0 0 +177 121 201 +177 177 193 +73 57 81 0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorino.pal b/graphics/object_events/palettes/followers/nidorino.pal deleted file mode 100644 index 571d26a69..000000000 --- a/graphics/object_events/palettes/followers/nidorino.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 169 153 -233 233 249 -49 113 105 -177 121 201 -185 25 9 -177 177 193 -73 57 81 -1 1 1 -137 97 153 -217 153 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/oddish.pal b/graphics/object_events/palettes/followers/oddish.pal deleted file mode 100644 index a707d037a..000000000 --- a/graphics/object_events/palettes/followers/oddish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 113 65 -17 161 49 -33 73 41 -1 1 1 -113 1 1 -65 113 153 -41 73 73 -137 193 129 -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/palettes/followers/onix.pal b/graphics/object_events/palettes/followers/onix.pal deleted file mode 100644 index 41933ba53..000000000 --- a/graphics/object_events/palettes/followers/onix.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 129 -193 193 193 -81 73 73 -1 1 1 -49 49 49 -145 145 145 -233 233 249 -105 97 97 -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/palettes/followers/paras.pal b/graphics/object_events/palettes/followers/paras.pal index e2285d9db..2511bcc80 100644 --- a/graphics/object_events/palettes/followers/paras.pal +++ b/graphics/object_events/palettes/followers/paras.pal @@ -12,8 +12,8 @@ JASC-PAL 233 233 249 169 49 73 217 97 113 -0 0 0 -0 0 0 +225 161 33 +233 201 89 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/parasect.pal b/graphics/object_events/palettes/followers/parasect.pal deleted file mode 100644 index b07e4319f..000000000 --- a/graphics/object_events/palettes/followers/parasect.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 33 -169 81 17 -169 169 169 -97 41 25 -233 201 89 -217 97 113 -249 113 25 -233 233 249 -1 1 1 -169 49 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pinsir.pal b/graphics/object_events/palettes/followers/pinsir.pal index bb6f6e121..ef5f5f77a 100644 --- a/graphics/object_events/palettes/followers/pinsir.pal +++ b/graphics/object_events/palettes/followers/pinsir.pal @@ -12,8 +12,8 @@ JASC-PAL 97 81 57 233 233 249 105 105 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +185 137 17 +65 57 33 +73 81 81 +241 209 1 0 0 0 diff --git a/graphics/object_events/palettes/followers/plusle.pal b/graphics/object_events/palettes/followers/plusle.pal deleted file mode 100644 index f04c4f314..000000000 --- a/graphics/object_events/palettes/followers/plusle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 137 105 -113 89 49 -233 233 249 -249 225 137 -201 169 97 -185 73 89 -137 41 65 -1 1 1 -225 113 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwhirl.pal b/graphics/object_events/palettes/followers/poliwhirl.pal index 71d107bee..8f5e148e7 100644 --- a/graphics/object_events/palettes/followers/poliwhirl.pal +++ b/graphics/object_events/palettes/followers/poliwhirl.pal @@ -12,7 +12,7 @@ JASC-PAL 73 97 185 177 177 209 89 89 89 -0 0 0 +201 201 201 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwrath.pal b/graphics/object_events/palettes/followers/poliwrath.pal deleted file mode 100644 index 0937b8faa..000000000 --- a/graphics/object_events/palettes/followers/poliwrath.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -201 201 201 -73 97 185 -49 49 49 -121 129 233 -33 41 57 -161 161 161 -233 233 249 -177 177 209 -89 89 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ponyta.pal b/graphics/object_events/palettes/followers/ponyta.pal index 90cf88072..d8c952683 100644 --- a/graphics/object_events/palettes/followers/ponyta.pal +++ b/graphics/object_events/palettes/followers/ponyta.pal @@ -14,6 +14,6 @@ JASC-PAL 153 57 81 1 1 1 73 57 41 -0 0 0 -0 0 0 -0 0 0 +249 81 33 +113 97 65 +185 201 121 diff --git a/graphics/object_events/palettes/followers/psyduck.pal b/graphics/object_events/palettes/followers/psyduck.pal deleted file mode 100644 index 4990fa0d6..000000000 --- a/graphics/object_events/palettes/followers/psyduck.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 65 -241 233 185 -233 185 65 -201 185 137 -105 97 65 -1 1 1 -233 233 249 -249 217 105 -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/palettes/followers/pupitar.pal b/graphics/object_events/palettes/followers/pupitar.pal deleted file mode 100644 index 5ea18eb79..000000000 --- a/graphics/object_events/palettes/followers/pupitar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 41 41 -161 185 201 -185 49 49 -33 57 73 -233 233 249 -121 161 177 -137 193 201 -57 65 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/quagsire.pal b/graphics/object_events/palettes/followers/quagsire.pal index 5309d8c04..3eec2ddf4 100644 --- a/graphics/object_events/palettes/followers/quagsire.pal +++ b/graphics/object_events/palettes/followers/quagsire.pal @@ -11,9 +11,9 @@ JASC-PAL 145 89 185 177 113 209 57 89 81 -0 0 0 -0 0 0 -0 0 0 +145 201 249 +97 41 97 +233 233 249 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/ralts.pal b/graphics/object_events/palettes/followers/ralts.pal deleted file mode 100644 index 5c4776a37..000000000 --- a/graphics/object_events/palettes/followers/ralts.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 57 -169 169 177 -17 65 33 -73 177 89 -129 33 57 -233 233 249 -241 105 105 -1 1 1 -129 129 145 -201 201 217 -73 73 81 -105 201 129 -185 49 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rapidash.pal b/graphics/object_events/palettes/followers/rapidash.pal deleted file mode 100644 index aa197a10a..000000000 --- a/graphics/object_events/palettes/followers/rapidash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 161 25 -73 57 41 -241 225 169 -81 97 129 -185 169 113 -249 81 33 -113 97 65 -185 201 121 -161 49 9 -233 233 249 -153 57 81 -1 1 1 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyhorn.pal b/graphics/object_events/palettes/followers/rhyhorn.pal deleted file mode 100644 index 67ea3d889..000000000 --- a/graphics/object_events/palettes/followers/rhyhorn.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 145 -201 201 201 -65 65 65 -1 1 1 -137 33 57 -233 233 249 -113 113 113 -177 177 177 -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/palettes/followers/shuppet.pal b/graphics/object_events/palettes/followers/shuppet.pal deleted file mode 100644 index 045c51318..000000000 --- a/graphics/object_events/palettes/followers/shuppet.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 49 -97 105 129 -1 1 1 -65 73 97 -81 129 201 -41 49 65 -129 129 161 -161 161 193 -49 81 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/silcoon.pal b/graphics/object_events/palettes/followers/silcoon.pal deleted file mode 100644 index f256a8be4..000000000 --- a/graphics/object_events/palettes/followers/silcoon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 137 -81 81 81 -185 185 169 -129 33 57 -1 1 1 -241 105 105 -225 225 209 -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/graphics/object_events/palettes/followers/skitty.pal b/graphics/object_events/palettes/followers/skitty.pal deleted file mode 100644 index c43022e02..000000000 --- a/graphics/object_events/palettes/followers/skitty.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 161 73 -97 57 57 -249 225 129 -129 105 73 -249 137 153 -177 81 89 -57 57 89 -1 1 1 -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/palettes/followers/slugma.pal b/graphics/object_events/palettes/followers/slugma.pal deleted file mode 100644 index 8697071e3..000000000 --- a/graphics/object_events/palettes/followers/slugma.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 145 17 -161 57 25 -73 1 1 -1 1 1 -217 97 65 -193 73 41 -121 25 17 -233 209 105 -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/palettes/followers/solrock.pal b/graphics/object_events/palettes/followers/solrock.pal index d2eccc967..07fb924c7 100644 --- a/graphics/object_events/palettes/followers/solrock.pal +++ b/graphics/object_events/palettes/followers/solrock.pal @@ -13,7 +13,7 @@ JASC-PAL 209 193 97 145 121 57 145 73 33 -0 0 0 -0 0 0 +161 49 113 +209 73 145 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/starmie.pal b/graphics/object_events/palettes/followers/starmie.pal index 1dba44dc5..44225b531 100644 --- a/graphics/object_events/palettes/followers/starmie.pal +++ b/graphics/object_events/palettes/followers/starmie.pal @@ -13,7 +13,7 @@ JASC-PAL 241 89 73 89 89 193 185 41 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +169 121 33 +121 81 9 +225 97 73 +89 73 41 diff --git a/graphics/object_events/palettes/followers/staryu.pal b/graphics/object_events/palettes/followers/staryu.pal deleted file mode 100644 index 47f9daf31..000000000 --- a/graphics/object_events/palettes/followers/staryu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 121 33 -57 49 17 -177 145 25 -105 25 25 -121 81 9 -1 1 1 -225 97 73 -233 177 33 -185 41 41 -89 73 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/steelix.pal b/graphics/object_events/palettes/followers/steelix.pal deleted file mode 100644 index cac012566..000000000 --- a/graphics/object_events/palettes/followers/steelix.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 121 145 -161 185 201 -49 65 81 -1 1 1 -233 233 249 -193 209 225 -193 57 57 -129 153 169 -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/palettes/followers/swablu.pal b/graphics/object_events/palettes/followers/swablu.pal deleted file mode 100644 index 0af595d67..000000000 --- a/graphics/object_events/palettes/followers/swablu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 129 145 -225 225 233 -89 145 177 -73 81 105 -113 177 209 -65 113 153 -1 1 1 -249 249 249 -169 177 193 -49 81 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/togetic.pal b/graphics/object_events/palettes/followers/togetic.pal deleted file mode 100644 index bf8df7baf..000000000 --- a/graphics/object_events/palettes/followers/togetic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 145 145 -233 233 249 -41 49 89 -97 169 225 -41 41 41 -1 1 1 -217 81 89 -161 177 217 -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/palettes/followers/torchic.pal b/graphics/object_events/palettes/followers/torchic.pal deleted file mode 100644 index a9c540b8d..000000000 --- a/graphics/object_events/palettes/followers/torchic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -233 233 249 -1 1 1 -121 81 17 -161 145 81 -233 169 17 -249 209 97 -209 97 1 -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/palettes/followers/unown.pal b/graphics/object_events/palettes/followers/unown.pal deleted file mode 100644 index d729ca129..000000000 --- a/graphics/object_events/palettes/followers/unown.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 73 89 -233 233 249 -41 49 65 -185 185 185 -97 105 145 -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/graphics/object_events/palettes/followers/vileplume.pal b/graphics/object_events/palettes/followers/vileplume.pal deleted file mode 100644 index 503e1333c..000000000 --- a/graphics/object_events/palettes/followers/vileplume.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 153 -169 81 17 -1 1 1 -33 57 105 -217 97 113 -169 49 73 -121 33 17 -217 185 145 -249 137 73 -49 81 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/voltorb.pal b/graphics/object_events/palettes/followers/voltorb.pal index e5c53dd09..f4f84dd99 100644 --- a/graphics/object_events/palettes/followers/voltorb.pal +++ b/graphics/object_events/palettes/followers/voltorb.pal @@ -11,9 +11,9 @@ JASC-PAL 241 113 113 201 33 33 233 233 249 -0 0 0 -0 0 0 -0 0 0 +185 185 193 +105 105 105 +217 217 217 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/weedle.pal b/graphics/object_events/palettes/followers/weedle.pal index d78ce1a02..1092aef54 100644 --- a/graphics/object_events/palettes/followers/weedle.pal +++ b/graphics/object_events/palettes/followers/weedle.pal @@ -13,7 +13,7 @@ JASC-PAL 233 233 249 1 1 1 65 65 65 -0 0 0 +145 113 33 0 0 0 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/weezing.pal b/graphics/object_events/palettes/followers/weezing.pal deleted file mode 100644 index 84a071158..000000000 --- a/graphics/object_events/palettes/followers/weezing.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 41 -137 129 209 -89 81 121 -57 41 57 -161 161 129 -233 233 249 -129 73 81 -1 1 1 -121 105 193 -169 169 209 -105 57 65 -201 185 121 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wigglytuff.pal b/graphics/object_events/palettes/followers/wigglytuff.pal index 4c86b3af9..87de7d93d 100644 --- a/graphics/object_events/palettes/followers/wigglytuff.pal +++ b/graphics/object_events/palettes/followers/wigglytuff.pal @@ -11,9 +11,9 @@ JASC-PAL 57 97 201 113 185 249 81 81 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +97 57 65 +121 89 57 +169 169 169 +161 81 97 0 0 0 0 0 0 diff --git a/graphics/object_events/palettes/followers/wobbuffet.pal b/graphics/object_events/palettes/followers/wobbuffet.pal index 94c8adeb8..a5cedfd43 100644 --- a/graphics/object_events/palettes/followers/wobbuffet.pal +++ b/graphics/object_events/palettes/followers/wobbuffet.pal @@ -10,10 +10,10 @@ JASC-PAL 1 1 1 25 57 113 113 201 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +65 145 41 +145 193 65 +57 105 17 +169 41 41 +113 177 81 +233 233 249 +193 217 113 diff --git a/graphics/object_events/palettes/followers/wooper.pal b/graphics/object_events/palettes/followers/wooper.pal deleted file mode 100644 index b0ebb5db6..000000000 --- a/graphics/object_events/palettes/followers/wooper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 65 121 -145 201 249 -73 145 201 -177 113 209 -97 41 97 -57 113 161 -233 233 249 -113 177 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/zubat.pal b/graphics/object_events/palettes/followers/zubat.pal deleted file mode 100644 index 548a44a6a..000000000 --- a/graphics/object_events/palettes/followers/zubat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 121 -1 1 1 -97 65 129 -137 97 185 -81 185 177 -17 57 65 -161 129 177 -185 185 193 -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/palettes/ss_tidal.pal b/graphics/object_events/palettes/ss_tidal.pal index 5e68e105d..05eef587a 100644 --- a/graphics/object_events/palettes/ss_tidal.pal +++ b/graphics/object_events/palettes/ss_tidal.pal @@ -14,6 +14,6 @@ JASC-PAL 0 0 0 197 148 0 246 213 24 -0 0 0 -0 0 0 +255 255 255 +74 180 230 74 106 139 diff --git a/graphics/object_events/palettes/submarine_shadow.pal b/graphics/object_events/palettes/submarine_shadow.pal deleted file mode 100644 index fe4c1c112..000000000 --- a/graphics/object_events/palettes/submarine_shadow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 123 197 -255 255 255 -222 230 238 -189 205 230 -156 164 189 -139 139 156 -98 98 123 -65 74 106 -197 98 98 -172 65 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -74 180 230 diff --git a/graphics/object_events/pics/misc/ss_tidal.png b/graphics/object_events/pics/misc/ss_tidal.png index 44510d25ae5a3a036d872c917be2ae5998243a95..d4918e06ca8fc3867dfb091aab1b90648fd390be 100644 GIT binary patch delta 24 gcmdnWx|MZ80Pp|*|Gl<6^UCTzApF*bq;0F^KcA^-pY delta 24 ccmdnWx|MZ8051a=cx83Bzd5*lV{8Ny09P9a^Z)<= diff --git a/graphics/object_events/pics/misc/submarine_shadow.png b/graphics/object_events/pics/misc/submarine_shadow.png index d43bc98dc1a1e2fe0bd7f82c38749a33f6d5b86f..847a353dbb5ae0c41a9db5393820e1f66449c817 100644 GIT binary patch delta 35 tcmV+;0Nnrc0rLTnECTNKkuDq)#gqW{)foT(|4OvxN@|P3P8bl8U6wof5s?4@ delta 35 icmey&_?dBn4%7et6ZK?-8IXY2mS@(EPpv1$P6GhK3<{S3 diff --git a/graphics/object_events/pics/pokemon/followers/abra.png b/graphics/object_events/pics/pokemon/followers/abra.png index 0526af89a2e9d7ceefbb6512bce714edad0e057c..127d6fc2c6226e4ea3d48c68b0354b6d9af193df 100644 GIT binary patch delta 500 zcmVFN2onJGy*8IgHmd0{yK00000 z000000002G`s8|%T^N6$NklfbHu9A>u_4!L-NH zLwl7yl)l`?R?S4wx_j7@|H+Re|DPF?Ft%&gu3i5m^MQXa4nV-@(i@!cY{5qsMq(Nb z+vIgx1$6F&XA3qkW{BCLrw|WWLfoc2Td;vGBIf;u?Psb;0TX|oE!e=U?zkM%5jAPa zlxGVzuooEG&jSgc@?R?8nzW(D2vIRH|nygkl(W(kR_Oq z)EQg1(XbOprJ?V$s9!xF1A6u^8+4(;3d>M}V{xxSINgSL0BG5H?BJVOL;j(-114X$ z6*ggXa?GD`7{`C@$knqog~N`8cboaM0eNm$7_Jv$$e_Jm+OZ;IXKUiuaZ`BD1?Y35 zf)#G>#E_ZX@*^*YmZ)>9-O+z@@gV*tmARIOa*^}zBaVi)y+wG$c-SJhvnyS>dS9H= z0%{#5D6?{jo5H?Dv8$PD%Tl@NI&%I!d+(`e6o591%r!V@CCM?3xK?89Nt63e@02?S qI~i6uVh{-LeIbX|UE&4awXPorM(K@X3<1jk0000N<#G~`=6yHhB z3IeT~HjELwrj?bf6|!}x<6E#yKOw8=zcP=SR`0Z9GmoyR(caH=Z*g?PM(1`u* zu=MHDWo`QJOxaA*HYDDgVZT9Iz~sh+E3DGnPi_#`&{U8*r5$fOpNXwZU;4|!i)^c1 z8dKj#sTAz$`N(i#W7ew&vm^cfEi7lv*{3JHX7Z1enf8}ee0O(tr!RNzuD7i|m;3Cz zOvu$-gFEMrOmHl>E)RCSbw=#S`sX$!^SA{<^%nEKTX$qa=KT+c&mWt1VwLc>7yB)1 z1nOh8<5!qPr~d!lH+f-Z{){_@vfEFbed8pu?VkAWEe$~`ysH$VAKRGZ2WDkIJG5a^ z*{+VY{|}t2e)Uwy;YH{(rk0Q=Gmgc080Nq7e7D>G{hVrcV@WfMG=a#&aZfJX^4@c( becM;&V;_sx&lSC#0E$LWS3j3^P6pF6W4AE_0G0a*l>h($ delta 30 ZcmbQtF_~k6moNh=IFX(xxiNMdGXP8M1(W~) diff --git a/graphics/object_events/pics/pokemon/followers/aerodactyl.png b/graphics/object_events/pics/pokemon/followers/aerodactyl.png index 1ef02c1774be6839196fa9a70c46e7944504166f..54d73ad71dc0aec1353a4ef154e7dbae15dfb811 100644 GIT binary patch delta 30 mcmeC>=;fH;C7ju5`0(Mwg*QDdJtY|!7(Oie#=kLk12X`?hYXYe delta 30 ZcmeC>=;fH;CCq>d_K9W1ZH(Q(3;;=t1$6)b diff --git a/graphics/object_events/pics/pokemon/followers/alakazam.png b/graphics/object_events/pics/pokemon/followers/alakazam.png index 065a7fe79e478fbbe5140c273a60dab3d8ca771c..ac1d8a91c1563e0114d599b2343fc782c075536a 100644 GIT binary patch delta 726 zcmV;{0xA8U2B-#*FD_w8F|o0^k$E}6DM0}N0a;mD`SHO?IT`ucVd-Ic>FN2Ad0}Z$ zIRF3vwi3ANkzE*no=HSOR7i>Kl|gFbFcd(w5@;!=7!u|Z10ky}W=IJ%r?5y6{kR}{XSfzR)%dJ^tS{v{5a*as%``pD#rj#Uoq~Oa^*j0^II=_xM0#sERnfX5K49SdHbSg^1O zEbk5H>XpHkr8<;_)lTz5MVih9@|*Ed=(GM`3zSdpA|#BE>@8>YK_N7MPm-!C%jD3}sx%y#pBYp7aOGSK zJ|huuK__=qa8?VmhU=0ET#c)$+CwH&0JYpR9dh~b>&>ay=PCa!0~Rp(V1y#D%!hSF zFyg8T#X$%Og=W}kEO^cr$`SfJ-Tu5!%A}m%;958hEypH7hy+ebu2Lh!L!x+6hC9yFD|jMxoJ^30RaK|@xhUKIY~Jg`PpIV>G_d)VE_OC0000000000 z00000JA1Z%kzE*nl}SWFR7i>KmA`A_Fcg3_2sG<3O>R60h0ZnvGFh=Mjx!hT#=8)j zjy5rs=@#e@b!^DcJ%NJ$%6qb+Sk@)=Ew}Xz3ST6B?>$G65&DeJ_>6xF(fatC5h8he zhsRxls$Nc>&oM%Um%!sLLG|2>rx=k7uK|y{1VrYC;WVRvqK7bd8}PVGKx7X#eZce= zo<2A}k2?jZT65la9(kKd^|YAE7@gxzfo3Vsb0y`ibPD#lQvl~lLWna=G&t@0+$li% zaY6LXa4mGI@mc#=U&?hL&M~2yX?~ik^{ZSv1^W!^_w-H57dp#NGZF>uuW7F-z-1z@ zUMY>82HFgNanI;R$}1YYpJt-oDa5_XPjU4%0|=T1Jcd~9S@8D4f|*TVd1$y)?+muw zt3z2>?KRI-s)^lzk2fXz3S^uvEDsP`sB#e*@Ef@7cA+$`AFpQ$)(9tS?GMt*98B_Xr<6I0rBN1>xZ=a~( ztQHmx*Ci9U8dqUBgiNLYYPn}RPwtTdA9tq-+ zayi?7;W4Ci4TvAVgtrk0E(eYf#@0NO`2rghG_5Fm!n3ye00000NkvXXu0mjf DeveO{ diff --git a/graphics/object_events/pics/pokemon/followers/altaria.png b/graphics/object_events/pics/pokemon/followers/altaria.png index cf750e2ccbe4fd64ba35049a920362d61e8d4a21..7d57e815c0eecb80f36a73c51b66298a89c6c99a 100644 GIT binary patch delta 1090 zcmV-I1iky53H}I>I3>~H=>Y--ael%Uk3D%5d~r2!$xO=dv|J*fy4MY$R9m?2NH8Pjr4 zEFhYYPFC0&@~th*Fw(842}Asq+1Xi&T-phmBIz9LH9a%$^Ui)K%KsJ1uiU@6y!^@n zmo{Bh#y^zHEA4J(2JLBEFW|9 zR_}B>Pe10UPQ2UhUQVPPRkT>w?45t+W__CHCk0eY6Mw6sL{TP_ zc5(1$Sz?o;&~ej(_Fd!76lw2&*6p~jUdnag7|zj z&$yg&nwfCWstIVntv4^n1>yRR9L+aW63raXT$o83kwb9$=txZf9TG7U$iaW*Bl6!Q zf9}Zr)zN$3zrNw)P#MUE9IdIO0SS19?}Gy<_bLOhH8UQE0Pbx;e4a7^pn+<~t;bQd zzcqvRt=2W977DPzZr-7z^EH*cV!!a%vVYv7#UuwC9fgoPK|#C<*BOX2r~KMpteAo( z=A<%0SnL8LM1ldhnS+iJmr8%;rNABLqab%gf}HqC#OyeMI0pyDk3T;NG*29SYyhu+ z2hl)H*bKNMR?-(Ex!B)36C4hkfWn0e#K=<;kq+yLe$dT#8KAQBd_B@~Ws#j$*0#65rG4IN8G8O~C4 zG)t!?al!`tqPUCffMIpuuq{EX zunWRi^XEo~Co{s;a0ZZ0R|R260yZbar{QGm`&vgl4Y;l7sAxyTP!Nk_TV3v#p-81a#KM2sR2eCd0o<0RsndfsrX`nW?eC`T6+(00000000000002am=PY4 zT^D}@5=lfsR7i=vl+SPDR1n9FaFm2wh>Es*TUSxF;*^>wins)=H)OMylx(_mIaSII z#=cawR&DoWq~Kb~rC9@&djeF9H#s4ysEYqN-n@B^W4B$gh%$%v)t#B|_cQN@B>i9E z-*Nwua~Q*$Eh8aa-O23cQH-G1Rlf!AN`UL;aWI850?NBH`ISg z-byLt6c(!j86r=qJgA6@Ku?GqBXK;n}?;3K777h*|(FmmD8WLnqQP;hR4{Rn=-nVCUs0dpj>_?L?tX0)-KkNCo$Yy7#qf za|2NX7ev&7C~6AFuczZVmy>qpHP|a<9+upXv&EBc>~MBPMB@dOxFf@=PilWb=n^3q zO(c>7KtgiN1R^l`i2BchU)R$8<<8rF|NMfFLuN)6L^Pw40t8^G{XQ6ga!=;~damwu z9RTw(cKjk_0zd=JZI|x3tNpbRye*Z^A=FTS4R-N661|vF$y4?Vk1hMhB_ak9=t$&1 zWZ1FesWY2{ICIkX<;j#Oqo&LrK@ZHZK8pr{g0ViT5O)-*_t&Jlwk}MI6lkz>RzU(dq+>835 zb#_PqT!2S()r$n^12*8t@m*vW1cHHj#s#=T9lJY;Lz3eT@nY${ z&5f;tnnM?hWoSsGHKi5Dple(4;qRc==#jd~lbOS5djt>;r?Eqa1a$5YpN6mYpTEji z#M6M=ibTm>LdP&re~N#@WMrM%JMe-W)% m;2$~s7a{Yf@h(H-KmP`r4elYu@&bea00000eIZ0Vr zS#fE300005Qb&rBT^K<{Nkl04^_$ndxz9KNL1@qs=M-YBy^2Leo4PGrZK>8bFZht-|isDpOh z+sz|?+2*0L!0?#M7hZ~2w}S-ZFt(dVxBU8j$9@**o|5j$KAv$MmJzd?M>jmBow7jp z6p>QGX8f3hnA3bzQ4)`_(#2H3eCi>00000NkvWtM6N<$f?OfF5dZ)H delta 402 zcmV;D0d4-z1IYuBEHMEA0YN!Q>FN1tk;z$ES-H8%L1BS0DLJ8`v2kg60000000000 z000000000d+A{x1`9_AT0g zgInnfw1vJv4up17;W+OpYqh;5G4Y1dPWey%{P6!}P=mn7$H&LV=O2UU?|im@wWIR} zw-LsAnc>f@L2Sva!RbW=d8o`x51}A9nehq$TwWS8)5FrHFRXvvM!QW6(r(o1g{H?s z0RryaMpc$=q}>RN1z=ln1d-QnqqihmOS@Bmyd}|TW_m27t!NUrk>s39yBQpLmt?1z z>9O#U6{`ogQ3vg|v742&<%P1q@Q}+JRwcJ?2eA-EXg4db+5P*T{4CHtCfZj`IODXa zN@6!FuUI5IWr0@iF-asbnelU6;3vD$lHyn8+co`lx5oOfAi<65i|PFEeT^|XyeO|+ w?^N}W#pK%#v@@XTTzL`ur}YzKOW$AR1JvedEoIr9n*aa+07*qoM6N<$f-pVBqW}N^ diff --git a/graphics/object_events/pics/pokemon/followers/azumarill.png b/graphics/object_events/pics/pokemon/followers/azumarill.png index 4bbc660ed3b2ba4f853b0a5551642d95754aee79..2852aca5b39ad8005b2e36bbbe0808b29e487448 100644 GIT binary patch delta 24 gcmcc0dX;rT0Po737dsd3RJ6=Ir){}sV{8Qz0F8AD@c;k- delta 24 Zcmcc0dX;rT051a!gdTG`xG}bZ2>?rk21oz^ diff --git a/graphics/object_events/pics/pokemon/followers/azurill.png b/graphics/object_events/pics/pokemon/followers/azurill.png index b38801275ded72d29f5ad7c2e125b2416e79e51c..e77fda7e851a42edb3fe721ce45e33dd42c071ce 100644 GIT binary patch delta 30 mcmbQnGL2<|mvCd_#DfPfIywd>CKfJSxbbf0zT%CsI~f7bBo06T delta 30 ZcmbQnGL2<|moNh=&{)Kow=s4nBLGMA1uFmm diff --git a/graphics/object_events/pics/pokemon/followers/baltoy.png b/graphics/object_events/pics/pokemon/followers/baltoy.png index a6c84e7772fdab389d2d15fb6e28a947bf6b6f92..acad0a1c4fe329b071b33cfb5202c5715eeced89 100644 GIT binary patch delta 36 scmX@ge3W^Di{#0Pf(tDrJsBBqCORJU)U1>ge0eeRk;%!tjjO9$%P9K8V1f3=uJPmF_xbR0Ex&7ZvX%Q delta 24 ZcmaFE@`hzX051a!yqy!VVPh;m697_i27Ukl diff --git a/graphics/object_events/pics/pokemon/followers/beedrill.png b/graphics/object_events/pics/pokemon/followers/beedrill.png index ac46df2e137b4e8fdd88e131e33dbc3960804944..d2f4c9b535660ae0093cb89dd18149b1c5642fd9 100644 GIT binary patch delta 32 kcmcc1c9(5}yI5mmW1y#}p`l@BVj=?=IP%5*T^P#@0Ik^xf&c&j delta 32 Ycmcc1c9(5}yBGro;AP=*To}s?094Qf5dZ)H diff --git a/graphics/object_events/pics/pokemon/followers/bellsprout.png b/graphics/object_events/pics/pokemon/followers/bellsprout.png index 20838a022d81b571c37942325630a3bd86caeac8..c61f4a5f31e71eb5b3e1b9f4ed5173d759e5d500 100644 GIT binary patch delta 382 zcmV-^0fGLs1Goc_FD~(Up;19GiP=#B0RgE&ad`;^xrsT!!NKY2`5_@8L0KvB;Yqon zF@a$zwfKy0kzE*nE=fc|R7i>Kl(A03Fc5}MI(f?ysZYRAR!b3MnA+V?S)J(6ffrz4 z>$8D?EgNFIEU07s3^jk{YlkB4K_jTvyUJbiS-aCdAkE>+C+=W)Qr{@@Mg?zp|*tC+)vWjecl z@NO^gc4{TII(v&aAPl?Kemm}V!>YpUb)D>0<@e(baFf40=PK2+#pxzG_ cSen1(3u6=CcEK4M*#H0l07*qoM6N<$fOV delta 378 zcmV-=0fqj!1GEE>FD?NA0Z~CQ@p++%*-@!Mad`;^xuG%f;YmSRDF6Tf0000000000 z00000gOEk$kzE*nDoI2^R7i>Kl)p~HFc61NzAamZ?#4xG*(|b<9hJRO-=N|J80cIU zcZDUl@kcCqN}R}|@i}q85fVc_DN;UPeD|}50L;wH%={a$C?@$RC6S)uV;~W|Bs;Rx zaGyE=OaC<78*c1|N+){h4-b6mfWp3aBXe(AUlFZk#7{(jrr&YnH{|X%7^=Jmfm`}r zG!3hBjk{YlkB4K_jTvyUIX!p7aCfY3?_|u?({aGX{@@Mg?zp_)%b3HGWjech@NO^g zc4{qFDtnJOAPl=wemm}V!>-2cbDQjS?f2sjaFKt!ym#iS(?A) Y3qO;YVX_P9OaK4?07*qoM6N<$f*F;u^#A|> diff --git a/graphics/object_events/pics/pokemon/followers/bulbasaur.png b/graphics/object_events/pics/pokemon/followers/bulbasaur.png index 637615bd8cc0fc9a6ca7434f6d365149205d98d6..09599242521ad445c59a519b971f3068d18daf7f 100644 GIT binary patch delta 27 jcmZ3%vVvuTufW8K6FU_x3kwT3Zrmtd?dQKS_B0~^nS~2W delta 27 ZcmZ3%vVvuTuK)uQaPwAV*%*785dcDJ1l9lm diff --git a/graphics/object_events/pics/pokemon/followers/cacnea.png b/graphics/object_events/pics/pokemon/followers/cacnea.png index 492c5dac8f40c75624bcc1d81266600f7260bd26..58559c41bf333d1bc7c9aedc9d0e58e8c9e4bd72 100644 GIT binary patch delta 24 gcmcb|a*t&~0Po6^m5nPM85kID|BOx97|X~60D=7pt^fc4 delta 24 Zcmcb|a*t&~051a!uuNI{bz>|e697wi1@!;` diff --git a/graphics/object_events/pics/pokemon/followers/cacturne.png b/graphics/object_events/pics/pokemon/followers/cacturne.png index 29d1250e13b43722fafc862cad217ba9993948ef..4005166681b39a2457958f9bc07b40b1a9543e4a 100644 GIT binary patch delta 525 zcmV+o0`mR51jYoAFD}{P;eo+z>%+xcB&kzE*nyh%hsR7i>K)iG+rFcb!04catms25+x0XLi-lTWE`Ph+dHFp zfbrOG2yKf5;Q-^g@+SapY9WXCW$LHUc14rv0OPdqQfOO$Me;1K_dOL}3XPCTlXNPt zb(~O~0aLwTL!)HZZFLL)SuQJN%_is%~WX=*Qpm>*MUTO<>d(jd!v9CVt5 zlTjdqI;Fr($tTrSr%a+RCG>(n|e?*{D`{EmB`9Yv-cS@P72+;)>~e_ z_SxiR-D$jkrQy~|q3y2VjE3A@VPhtLo#)D1Ff?JCI#;GT4>*{$E9%Hk=N(tZI}4$S zu6S+OsUcx|>#ChV*PGf@bvp>Ny?5(VL-XXF4SZXHpQzZxe7$TN61}%Nuei`_y;`;n zvCgfX9G}M?TxoC^jdZm%PQ!Ai^eXaly>b5&YbVE4y7D$9*2;eaRPH4Ia-Lb3XlbOM zZygtYPPqR$Lb1CejtzOs8`9*yB{GZh~iFq%xA+WKt P00000NkvXXu0mjf*e?7A delta 515 zcmV+e0{s2P1iS>0FD|Lcc_~3D0RaJlsX;kmIr-UHQBhH8sbK&B000000000000000 z00000+Q0bCkzE*nvPnciR7i>K)xmCpFc=5$ChZF}AtXCm@s6W)+pS1(J1gDYNSf@v zN7x>K%$V@DD>|h86thTnS^Q4^_|vZiNsG{}Zgs2wQ+SYZj4s++sdjhdA*;g@lt4igj8MCTY0UMiki|%q3!*5 zc0e7->zvfKq0q1l?!s-o1y*Ep?f`_q`sPYP{|l!j6omgNP9y(YnK8XBXHDR5Kr zc}nSnl)YB#kd}RxSr8f(cPVgFkBSB_aleH!W!`K4zUJCVp_|A0O!JRR)@fe!8n0-u za#CpfRR~Uh1L3Z)F_*v2Q{^ofn(#@HDjjtL4(9EOdh+9bCzST~LTJJwQD}Z_Nci3? zYA0aDq|i~(4#Irz<@nf8-+Oz5SViC!Ws^jV=WRp6_Ez1BGd5F& zfz4>jqPcb&=1av!v6r)n`=3}lIcDAKJ6QQofbykE6tB)b3mwn3^z)VD%+HDNk0X=_ zaN^j8#62S{ya}^2xicXFU;UX2rza3>cribTPw)S;`UX7=r=p~-gRuYr002ovPDHLk FV1i%z_>%wt diff --git a/graphics/object_events/pics/pokemon/followers/cascoon.png b/graphics/object_events/pics/pokemon/followers/cascoon.png index fbe9c76e019420e5e2339ca67d1d2adc311cc028..b2fa8c1a2383d8239c44f48908a1a1337c1a79d6 100644 GIT binary patch delta 33 mcmZ3(yoPy#yI5mmXJBC9&YdeCKD@{P28tnKuQtZ|GXenL;|xmx delta 33 ZcmZ3(yoPy#yBGroDEjh*VPmX6BLG@Y1@r&_ diff --git a/graphics/object_events/pics/pokemon/followers/castform.png b/graphics/object_events/pics/pokemon/followers/castform.png index 33fbe7e48ff0859c6073f58d7a4483006e77fe80..9d473a1168b35983cc87356e8a348ccc0042df1c 100644 GIT binary patch delta 350 zcmV-k0iphr1C;}iEHMEA0U<$osnPMdF)2xj!O2;nF*!jwX_;}c@#*RLfq{|1!O=lM zQDI?mp`o$eX})ujT^N50NklhLFO2vu}#a*Eg zu~Gu+T#!kf#XfOI`Y~00r#yZyXOBiHDJdx_e-|@SlZai4(%nHmC#1^4>}y`mUTs1%-|Guon3$E{s*XG$r?xtsN5yI z0IE8)Pt*NS+n>4UK3&jZ`@CsbOf2o@4B!YCi%EO|vd^m2I=8eN*M)Gd^JpQq&x6wC zma%woZc12`EB6t0$Ud1q?H?J7wK1=R#s29t>X7>=^E~D(-*=>?nZ_Nm&$c~U&g+>W wowdj4#n}C!-S8rA7%Les!yc5(^8UxU0_F+gyi%CuEC2ui07*qoM6N<$f)os_hX4Qo delta 348 zcmbQrJehfdj$vct#DfPfIywe2GBUn=`7<%GaN)v@3^;)FJif0JV`()reDeQDatPxeng*IQPb zczFWB&iEtG^8cQ_$tBBWyJx@Y@3}k|62F@4ao@~zJ}&x$@Z;8S{fI+8N3UgN3R zXtt^T!oz?qYl<%=F+Jb#`i;}~dV2>(<7*C44)5#^b1UdO{ho4{zxCJL)$cB|%5FQq zx%Fq*MLl~4nTJ{Xdi5Q?MVel_)>Za$m%zGQS=}SwDlcq{G!_efeyqiHbJ6q-&fiYH z`MD!mM=WTcfY|ZB)mIe1U;I>f_~xE{6U~Zb%1_w6{zgp00i_>zopr0Q1?RIRF3v diff --git a/graphics/object_events/pics/pokemon/followers/chansey.png b/graphics/object_events/pics/pokemon/followers/chansey.png index 006c1e1c914ff50f33c694d31eefda533fc6ec1e..60b0babe58a668f7f02abfacdf83fae02fb4bb2a 100644 GIT binary patch delta 36 ucmV+<0Nekr1g->-L>Z}(LGkIi>A6A4xru3ELHXHf0000^TI&_DUC{wZVG$ev delta 36 ZcmZ3-vW{hfizEX!@Z^K4`^MOdi~wU{266xZ diff --git a/graphics/object_events/pics/pokemon/followers/chikorita.png b/graphics/object_events/pics/pokemon/followers/chikorita.png index e654b62065e5a80b431d35b0c5fa323f0d3a5cfe..d3f52de0b1f6dff6bb8de995ee591a96161b5a1a 100644 GIT binary patch delta 426 zcmV;b0agCr1K|UZEHOEOp*f+!Au&OzxzRaMaRC7V898xr$?-vvDUrcJIcX88DJgNW zQR(UV!P#-3go=rgT^N5?Nkl4udJ{q}>8nb!OG#hyxH))+zN+J=^)VTB9oyVm<8OhDc%6VAe0E2s#o#;pwrIiCAP`JrTOh|dxv0CflCjUyniQ}Hmy+UPZ zuH#6pVVY?2V0ahewIP@YPuc=BQ9Hf| za;uD=%nyO&9k-G{FgaR2}S0000000000 z000000000iRz+lyT^N5=Nklk_|5pwwYG;4O_b31{Z5pt#5lm20jmdbr8I5^(0Yr*o%58QR;} zRcjb0n%o=Sg*deY69HK)V*$lFcbw~du8%vU?5rW;DJ6BL^^}pzEhx*2h@e7 zi{GHioaZS7HJDpFojO$FWXb2BdofBZ#GXBS_U!pb8P30WcwnivliX7>*z+SxKqZ_F z@-T*5ndcBWz>-Q?QUNpxJLFFk6yu)Pd$`u&c}!Rwd=6B9KI#l;$*;%bz7_m{vlbW= z7UVI-Q_Rkq#*b@3?pq3DVPRCtvX~1tQ9I+Dr=S7z@UZGXWSq&nD4OSP8 z*%ahn3U+vZMboR4Gu;8DKF6HHI_O|8^D_97qdf+%h*|VSYnocbEb)f6UQf%t4C-F% zzDjy3XxgfdT58woumSUuQfpnSv?W1P!g;OhJp6?*-*Oy?!s{{XsC*9#es<;NexdF@ xFE1U*P4i3l<2sGpuY!_bL;PR$bKp<&1;cH+xcKi5#wq{+002ovPDHLkV1ivF-6sG5 delta 451 zcmV;!0X+VI1pEV#FD_v@LFwuFd09EBsi~n+VYz96@tLUr00000000000000000000 z000007KO@K)J<-KFc1Y`+b3X9BUlEi3SR?>Mc0*bhipNW?5&-) zyki%F8qCB_S6x)%Ws}c8GZ-ZnV$YsEd-nXJ)W=_3Kd{WUliX7j{PB?`kR_~Y`P7D6 zndcB`z*Cm8q!MrmYZUJk6yu)PchIB8N1L#C>I$ImqE^6vNZooo?rXtUXzzhGVL=_H zbQH7p)^+V#ko%g_dU)6@Wm(PzUDVoY-BHkhd3hqB)fSq&gU*kE<(?4}_1 zQn11oT$81LtV{*u<`{DUuVI3{%*)_sf$hSvu%4EC88nSCO`r5s z(2o5OwKRG(VFTtRxiMzQ(v}262^WJIitrc4e9fUI3a>|1QT`GZe5>-!{X*4kUY;tF to93tL?mCU!uY!_bL;PQLKk%pd2FiuCb3CBLGsy1*QN1 diff --git a/graphics/object_events/pics/pokemon/followers/combusken.png b/graphics/object_events/pics/pokemon/followers/combusken.png index 04d67e650a9a661ae698fc0efa4f1a61a794eee1..161b3c541edf147e818d62cfede97c8a70281f6a 100644 GIT binary patch delta 27 jcmcb`a*JhxuRvv>;KGT4FINg)Ok|8{-f(bZ>|aIzqE8Gu delta 27 Zcmcb`a*JhxuK)uQP?DHfx-s@IBLGiE1@-^{ diff --git a/graphics/object_events/pics/pokemon/followers/cubone.png b/graphics/object_events/pics/pokemon/followers/cubone.png index 00a47c888a3ee791db39c2f8bc450323e8a2e3a9..8cd726d62509a4aae7afed711dc6cf33599b34d3 100644 GIT binary patch delta 27 lcmV+$0ObGg1@8rrO%SPpNy(W};lYu?p=sjiJpr*@k^;dQ4Ws}7 delta 27 ZcmaFQ`kr-yuK)uQ$o;VD=Em4bOaNW62Uq|A diff --git a/graphics/object_events/pics/pokemon/followers/dewgong.png b/graphics/object_events/pics/pokemon/followers/dewgong.png index 5ad0a155eacf1b645aed3bf4c245dd88aa39ca81..64a8502a1ac9580e6158e5251817d786c5d81763 100644 GIT binary patch delta 740 zcmVFN2YacNO0A@RAv*;!!$0Rfp=VPP>rae=w9x!Ex> zQQ_h7Nl|$cHp_;QT^N6yNklO=?mJINAfEguM z|3Jh2w(1bT%z-zB(`U2~>s_EjgGTpT{*BDqUKHBa_(gvj3f3^(5sKc?9M&1{9FTBx z%v^6Xhc&lo%}&TGUIVU#v;@<3NeW@$(ax56L>-()%Yp}y4d)>2^DdtyUY2>~y7j^z z>k>V-D3Mv1PZ*48!ilZaIp8S>yDWVAd4~R1=K4i?VV7Tk7YS;?j!STD5x@+P1N3(< zY;%Baff|3a8M`P{>FNtD&#)lycZh>72v3<+3}AtQD3ttm=+>XA6d=&LD0J~$o6!Nf z#lpgYG}ik#KtQK_L68ODBY`gl1;!b~Kmm${p=KWlUE8-DxT_>MKf^r-9Ev~^B%xvf zmzb`;?SrsS4664!=oK&W0sLRM0J>{oNlq!y3m1PcbXh=iqY_;dR0vHFo(^h?{ZEne zQ*f|Uq~rqVy;ic#ei}dmFC@X71(eEy=15cYD4}wyMN9sNv2OI54lXsG6qeUvjk$<|+KU_6HSJ WBE=Bw-A^9?0000l$;qd_h0ZCDL>FN0Z00000000000000000000 z000000001hS7z^#T^N6sNklE?A`98eYF3j8B?Gz`*-%MvG8kr-vD9DfB{|w zh`;dLO{3Zhg|g$TF8jM&Kb8NwX5U+t0bs{V+3N!R(><<#U($cLxO17;b^y5*3I~_2 z5Y~XUzsEH~FbW+Pnt6LvTq&$O`*@nRB_g8T-(lJ@@Sg{a0n8leTXiM;ZWo8gl?M`T z_kGL4f0iLNY+Ys!ye$N^5emhFZZHc402To$@RqQm1wfo`3$Ixtg!K{z!cobb0&fW` zO9ps5zzmYBf1!Wjep_`2VCKM^!s!>fkh57Q7ePa0tRa@A5(7 zWf@nl8!!C4F43n3B{B>16N52LII)#F2RsB}n}rWw572*q%UnN8FKqJ*@GL+~)K|w+3>G_d)vAL1qaZ!=svGD)^ z000000001gUprorT^N5WNklOBNZi7zsb4k{CO=iy|#QkDtwtoXc#}A z&jRDu8o+k-h1+2|eV0iCXW@E#bvLPtPcT2?^Sk;U-A zK)J-k0NV_%7eZZLe#7* cn*D2i1Bnp__!j6&6951J07*qoM6N<$f??mK1^@s6 delta 381 zcmdnWyoGs!j^V`0jXNhkEDW6J=;+AE$oO#MM+V&B={5gb6JsUnwLD!MLp(a)2A}S0 zHsE=4u%@0Sid63~wGr|zXJlF|?D)kb;N8QU zUwZr9Pb|8(@gnp|vd$@?2>?GJstEu9 diff --git a/graphics/object_events/pics/pokemon/followers/doduo.png b/graphics/object_events/pics/pokemon/followers/doduo.png index ff0fff119b857a2952fddf73773163c5abcf68bf..68663e4d22b1813cad6a4b805e2289450aa1ca6d 100644 GIT binary patch delta 36 scmdnbvY%ywi=<_tqu@eAMNiE_Mn=cNnVO!Sod+8;X2n0>82gA30NY{>QUCw| delta 36 ZcmdnbvY%ywizEX!p!c-TXk+XnMgU|v1~>o! diff --git a/graphics/object_events/pics/pokemon/followers/drowzee.png b/graphics/object_events/pics/pokemon/followers/drowzee.png index 983693dcd5603f665dfe04d6dbc1153be493dbc1..1e73cbebbe5f91ec5b5d340720b09a569281c7c8 100644 GIT binary patch delta 525 zcmV+o0`mR71jYoAFD|L6sd;H3IWZ{#0Ridh`RU0~$;r`aQF$>jF;PJ=Sy4#<00000 z00000r(8CzkzE*nyh%hsR7i>Kl(BAuFc5|#RV-n$D(WFTM5`#u(3il9TvR1XAAteg zkmu;otsS~CfTD;Y6GN7WhpNxC`0Qdbb*cE3 z(#KcrPs?(QX8{O+2ofJ(IluvcJrX;Ym7YQA)yv}t2mvyGxi!r$qXZg8eom2d4_6o_ z%uZZJ)!4B2^XLKA0Q@aAhAwwQp-LZ*9w5+Rbsz6?Ujw>hn?sJ6m4p2K<=kl|3sp6q zsj;%e%M4rCFsG1N^SP`W?o!6`m&C`1&al6FR)FB}#L0Xv>ygDRz(Z8}xT=&RTPy}S z&Flpt=KV#u=?w1&1JYc| z8mit*FGVoSltb@hJsmG;HIhHHPyRxqUZ=T8W2?i`=zTGyor30duT0^i>dJ#SSP)%kDx0 z<^@ehyTW2^D5WH&Kp_p>U4B0&flYjt)K02`<*yoMzhoPZKDWXL3xB9Ddbl0Kq6(|d P00000NkvXXu0mjfYbo!N delta 517 zcmV+g0{Z>N1il22FD_9*G3n{~X;FCr0ReewAu%yA>B&)9QAq#*000000000000000 z00000K0h|HkzE*nv`IukR7i>Klre9EFc5_i63y&ZRAz%niCFs|+8w8LM7Fk4qKxg( zfzgqWZe@rf{%w7x#b<)a)TPQ(mhZ^D=esxr!BtmXb=AMoJe}ll5lWe^QXgNmpYPHs z4k8c$F%&+&aDXKMdna~7)_MW0CofMQAOuiyWt)eL5@;BI`?*A}J)B{f=*K%_RE`Y? zKTjTD55ONwYdGX?C{*g>$pb_tEbrro+}D8a*yWHTs&tfpzFZHQ$wGCFD?OGfyv(qL zjdKagnQzFZ;jUz?ekgpr>=L852&z#IRWHYk32Y8E9A7`0%WVg4YTq<{g$oO#r z;w@uqd$Y2Cj;$dx8fU@xaNu@}8-1Mr~}FvChrLth06R@{J!v}{f^U{=v|w5uF8 zhEhsWiZs%|&FTC(32c(1q;^sl9Dm&qoXItueC~vg7XDD*=P39x?)kYV00000NkvXX Hu0mjfUqt8< diff --git a/graphics/object_events/pics/pokemon/followers/electabuzz.png b/graphics/object_events/pics/pokemon/followers/electabuzz.png index 6a24e3dcb746972d617019c386ecb189591dee4b..0baa0f144e8eeea6ba62f6cecd2657b1e8afab31 100644 GIT binary patch delta 646 zcmV;10(t$k1-k{1EHRmZVNpRb!NJjaX;A?I0WmQ#k&%&MQ90@9`Dtlsxrq@$IUz|= zQSs3M000250(Vl8T^N5cNklvOdO){~MJ-a_EoSVJi4p~YdJ&6KvD$ZwSSx>%tq`Jt^&(C#7wPXw z%vvPNN(CA9xQIB8drYb-^9vL+ss+VC)yp^o2n=J!MZp02ce%}@=2?T1-loTl5-LB# zDR)JT*%;3A7dS&%l~=Qv$3>}MPs8`z6)|ROILqQ4n{NMNMiG!d-(NxA=Ij1w9-Rk|?c4W!}exzzmBRY81Y8z)cz>)Pk9QxPB=d>&J<{f?)Tp?-}GUnh`khBk;BwuWcD z$Lt5qY+=dU@V56D)s+qHxLZ?;TzYFP8rk@95s{IRK{+Am>G?@fQSs3M0RaIqF);uD000000000000000 z000000000iTR)wVT^N5VNkl#4P0!pGnL*22nD`YB+x`;^c4;_)KEfL53ma zFet=%#IcT;WZ8fV6tjsEI0arT;{hNrjM;1oI?%tvZ64z~Yv2MMddwymZ}zZj<|4*y z4X^VT*h8A7lUdB;ruf&l?sqd6F=l6YmD!6K&gU1i2?FB#%M*y3oQ;0@RX*<sQL zm`(KR8@$8QJZFEopC%O5OLC--Y+olS8l3zCn+NKs;<_-Ycjzsz#mtoEfo^!M{C05i zn00LV52}<*Tj3L0-gQO5t$Qr84s_Mf9QTHpbRlueA*u!%S!XlS-0$U zrTXB~#BARDbqn2P>lO^HW#0=lv#q|jNFUkh4?EGyBB_7;y?NLjPMA$|B(!U}?q1G7 zSoZBw^IMe#`p8Zvkb|ts_dmV}Fm#y56moN+y*Jd|*z)uM$+;^7-Lf;>>obm^7%xh6&-LOAr(hcIGvk{*_z?mW*7wE;Wuk(Z%m&j0>TSJdG z_*BcFs3${3>G`?2!D(q}+1c3u00000 z00000fA|{|kzE*njY&j7R7i>K(XnoWFc1b{GqB?=;;FK*B)kk8;th~kG9aNVYqzW* zLGPjJ^VtLrh!mnORlI#??*HpXsn7YG&-pheOp@~(PLgC1C#}M?EW7hzCqr4y6Q%9< z^Nkm6^2&Llv{ETe%Bnl&5J@HaK4~*)EBbyI&xd>&s1K`u+QmszC3PbD&KI4c39JzP z1Eo!+U#KUWUumdjesUkSbd4pt2N`q0IQ@@OztBxKXW=LJp_M6c45saOK45Lm+w^7Zn5`=iRw@7+*x?A#o;h&SF}Ogu z**Ixh0Q^CJyd(I4wRvOHG2C69FId_v6hN~dfF{~=OAFhM;R|dVWUgRob4~y;z-^jr zn9rt9^d%jxUztWZPx9=D1E(hEKxsS53mW*zYYvK>B6D9a%?o^@Lyr62$_Gl@HzS&9 zw(sS}(m~(M>sO}HsldL;qJ7)EJ!_k%r#NZ1kwu3ktwo+RZD<|6VXc>W(tmk=0d_xm U=6Nv}+W-In07*qoM6N<$g8LWbUH||9 delta 472 zcmV;}0Vn>K1d#-gFD|*c!D(q}$sr-x+1W8MF`=QM>FN0Z00000000000000000000 z00000SQC6xkzE*nheK(Lt_)Fc1ddvSAIx3pfwBfo~7t1egJqMk6;N>9Or} zT7&^i#JtUm-F;K$|7}$2d%ov;{>=&d{_=tQzMsWOtMIOMbJ^{_)5A1T+I~OXc+)0N zPZOn;y3<4t%|3@n(&+o7%_JM>`>ww1^0lKr9C8;YO_kJtiRe4u^c_v$fao76Z7Tgj zKHB_C-7xWs`!J(x)aV{$%mx0zROuF)(dNwj;y$!81@1v)TloA_GW_KQ?sP_c8pSxP-R0%4^Buz?NM5N(+QSDkU_c6W}yU{odMEl%NZ@KJAogtZBV#^xy?BMBml>8vSL1~KG2tR zxPD<8RXnMRJr11GiUXzXs48jTC+|5ZD~haqy)-ZIiFP?@TPq(ZZQqP&rp31B8*>M3 zI;~%rMu!sHw1~EC^R^t@ym*Y0b{j>s+p)-#rj0lsjy`Z4&-0}J@;m_GQ8gJP@Mn_% O0000XCmk)gTCF+owm(c!^4If0p}00022ZTbzdT@C{`3J<{m delta 36 YcmaFO_L^;iizEY9FzdY6##laP0BxiNq5uE@ diff --git a/graphics/object_events/pics/pokemon/followers/furret.png b/graphics/object_events/pics/pokemon/followers/furret.png index 1475187e966c0c022f14faa4d8d624abec653cee..a2445adde8a7c14af6358499860066301d347a7d 100644 GIT binary patch delta 36 scmbQvHl1yPi{!L>dVk~3>QSE&a%AJ)$!a@WU{K5{Uhyy<4LDY zi|<@$Y?{n6yS0-$vAyGYk~8<^YXRX*dxbp$>ihJY+7-Eo}Nyp19%Gg#8i{-DUrp@&tBI z;N2Va*TsxmSlmf2D)WpJ4|jV>M9K}f*i#2HR-DiL;cz)Wd80w0Ski|-K^NP^CeFfBU_(^Q!X4Uk|;Nm3~_VU-kd@Y5$_9{m;3l#;pI+ SDq+wM3PVpyoz~(j^WOgjg^IoFJJz2G*o0{WMse#o=Ajjniwllui)w87~;|Sc8cSqW(5J) z$P5b|cQk}X|dbg#wLGGMQ&m7Lwth%N87}f ztzEd1B~5+80=In}^@1g0=ei#h30sM+Qsj1@Td~&Kfa7R|>3OCY7B_iL;mcZUUVUWd z>~1?__Kx+`Jl_7&gE|KapD8D9U0AWzK=kb+QFq<4g%7Hh{%Uj*Q`2j)*=_^7`fMnnx$~OHVC+cAL}uJ*n! diff --git a/graphics/object_events/pics/pokemon/followers/grimer.png b/graphics/object_events/pics/pokemon/followers/grimer.png index b9c9c3e56023447c100e70647ec5b7b3f8075bc4..be245e18543f11cd5ec1de35d063db80a4aeae5f 100644 GIT binary patch delta 536 zcmV+z0_XkF1k?nOGAn6OdFko-v5~ofX^CM;Y00tKd10A>k&!7eSz)Q+DJd!0QCXp} z*xnNf|IYaTy&)4nY%fl+0SL!CC=3NAqUjB}8|wnm z)FveXfX1Em3PXWR;85+X;ciR|ff5a{8uMJQUr44#1$F^!cY@u?38anp-4tGI3&e}S z_Nle{gIoo|?Hh4uWM$9Og&m_39eCULdCXd9D~ z06^=`dWE4tCUB^6)^Inbg+Pf0Sc7@4*DoYfs{;D~_IZTQqZ3FQZ~G~{*cOO;f$ei^ z^$YvJub%gtcK^_`8%SDWpE;Qo*J|ayz$+xB6e#V-^ss@$Q_m)_>M(l4Op$B8eZ=?s zvD=tJe`h=Vwxz&rX&K*f`)zp^>p*)#RKEgbvU?*At*q^Ny0B+dq62sD>y9}{&MmXt z1e%v+3t8t<8s>ahz`a8C02Ku$?=Kx!IF(vXGab0BI#z_NPGl8d!b;}d`}s^4mlU{K zR2@tFAT6hLrt<1%^QWYe8Z<{QH?UjfvJ3QCU!Sb}*|WR}^A!Rev9?@Wj_Pt3;{vw8 zV+vGe{8rAx9Id2Qkkc%7ykn;SMY+p(evYGX^}}G;lYu)Q5i`w8L_d^Sy@>D0Ridh`T1!vd09CzF)`_R zNr_o0$(d2{r}yNMT_JzJYuqpt$Gr&je{>EV9;R7>A=u!>5NeBfX>Q5TrDLJl46$2v zI6U_MDt6Ax8?$CObKuQA|9;Y0Njr4A@8pl3^nFiHk}d13v(7r}uf>EmAa4GR-%<$b z0s*#KfEL&JEiv7%)(pbdHuK5u*Al3PIv)*<%*3VYrE#wf$ishYoVBemFbg43{52j8 zo6Ey1Eb;vw7l_FkGjJMOvCiY@bq)<_GW)3T7JF4|%$zo( z-P3t2*nNbQCg^yXwk-q1;#0N8tlby#W_dwhm0fx)?UKM5APU$CBPMN2_5Fh9vs%%B&anJM;EX-?wV7GsnTdwn1auXD}Z|10~9lC>C z!m_r5U75`>oqNT{v`%K`Tg=<-Hj`v8G;$*(W}VW{QpVIElkz*6!(Abif0Yzsw&eGT71IR#UQ+CbG(H)Vr*Wx#sp;3| c|1bRkqXiN_UR(_&#{d8T07*qoM6N<$f_>5^VE_OC delta 590 zcmV-U0HiK$V+Kw4)E>{AYNjIRZcrLc^rLCF<%q@pz#)t@|KuYDxs@q z^4M^9iy1A@^C@lX)&Tx{Z;6@O`*MA{MkWu660Cy8$~@~0+jx;TcOJ;Fn%gt^DA`~Y zNjqnqE4r34h-iOc_6+dgA?`-UnW;bb>z{kSj&1DlZc_!MC*CzhIfOY}xDPGjbT1~} zk#uK!-=B&r&&Cc*5G!&vSQa70^{j@1 zDSm(SU8Sb-6KlK7vtIx=bQ5)UBKI(7dI(O;3&eW0nU{aueWNor5}WRrQ%Q$Fh& z0Ue1(T?E9eSN2KDfEpxHekD1)6GD5dq!6WC8$Df(Q@* delta 18 acmeyy`i*r$7&`+4gU8DM*EYt^WC8$01_x6B diff --git a/graphics/object_events/pics/pokemon/followers/houndour.png b/graphics/object_events/pics/pokemon/followers/houndour.png index f98ea24755bc31465f61522b23dc8661baba947b..b01cd6e58b3b8c6cf310559dd3f975c44c4a7806 100644 GIT binary patch delta 526 zcmV+p0`dLT1l9zQJ|9UrQIQ!b>FN0a0RgF@xrt#xIXOXTadEM^!BtU=CXrnjf6Pfl zK~zYI?bN?Z!$1@V@EZz+KnL+ZIJ#J|P#n6J;$oduP@ILjbZUtm{3irSU9PD==&Q*p z*3Ge0P*H?J9J+{=-rr!-h?RZ_due^%zf zv}&H-WfDlu9A*H^2(67t6{-`afAQfNR|2X1a=otQya}xh=}H$5z)oAI%8sdn@+Owm znm%Zq%1bG;EZ*Idg9@N9>e-GyO{+Q4d)|O_x8BF6qYiKA`GIG8v$B-qQoQTEzB@&M z)M4Q3?dkQi-pmHDMZ7PIN76$*>M(Grd243%W^iNmMZ7z!T`3#z)1?kKf3*JI_$ZgO zW*Y!KL~LWR;7aqdRT1$H1KXX|HhKosshq!Kd_rtk2m+7uLgO&7xL;5Ps7@_!UF_lk ziXkuiO*hAM4gzzJ3!{}N&D--r5#6s)U!(ixE~>V1GqygZ0>osGQe3u z1It{Fc_~^>9Rywt&v%eFWUqz}8t8DpzZW^<_wDG!Ya9RvIvi{=U{f$hIe}p6KmfH5 zfch^x%sAi1%WIh5frdaA{C^1@IHwEAN;uH Q#Q*>R07*qoM6N<$f_=*QWdHyG delta 525 zcmV+o0`mRV1l0tPJ|F4n`AIoZ0RaK2p}C1+L9w~PIXOXTad7|u08#`{50PCMf6GZk zK~zYI?bE+c!ax)U@EaKDz(D*DE+z&ONDK=jAtnZQjhMKLvq^=?36MCP^#?pmyDE%s zg!n(8(L{ziuqYEHp_akHxInA$IQVw#od zQ0rJmO1a9y-8wlc0t%y^?dYp+HYa*78xU{Ry7+X|!3!NP@Jer1kaC<4cdgTPrYMj) z2z={R?_cz07Jwzf-Oim$7xk!vz_n(tzN$BaJF_doeVJ`Z*?@VMI@r+Ge`n*Pkk^`R z19T9vjg<{Y*4ve$2zL;8ahbh9-+(%n@^*|*hz&_U@Hith4gzzB8_EFHvGv`XeLO%h zWMsGLq?pcrVCpG3N~4?Xo1=kzlzP_M;NDL=UIbFl9`)gIgzWa=0j;pO>srbHJB7AM~1065U*V37ekg4xOm1XBkBsC@v` ze=RZNdJiu@#rz30l>eOl8n~qI->XCswOyewc!3rTT+)Z%%ME&$|E<0O8?)>1#C4?U@LD409okh5<{n?u3zZ3XCncivWd{JoCC4YJ@lbD0>G!=&a+nm zP@Sx`jveB_TxeOQgS8%C@LW4zu}uh!dCn~7z+5OsV#h!Th|W6C3J@4W689XKpTi4> zmR8@uRNmedfCg+jOyVv6TSw^6JCaGf)6Jp45NW>P2}nxZ!_RpDbNFFZ`r&+3mq_XaZbf2(&5gtCdq SDl7m10000^_!mb`?v9vo_OQ|8PuvH} zZN%0wE;Fr6(Kz!gV#cOpotKx)++Dw8$8NsF#B0fk5AL2+TwrH7pOv9;s+}rBN#cXz z_gRa-{y6CWxRkB2O=+RXPL`y^9g?w?3=RGJ=ZbGaKy=axF83!N+1~qp zSS#U_F#lfU6QLPgS0@KNmtd@2@W7RksajlhFUzvmCk`!qbkuyq+U3)EE;zOK?zt(y zH$AxZ#d6-5P@x8g+l8B_|C?I*tv34P^X}PO_w#I=$GAZ9&e~hXA3nd?SRni1+DcOf zz2b*!+vgv%f5W?~AoW^wMd;JtQSucxvh6c%{@jT^apC`3JI0x}v+rEnc=0tTJNR7i>K&@oHHKo|z#Na%35SW<_8lUue1&LM+C=q-T`T^u@OaqBNA9UO%^6s{Pl z*Wyw^uv0D4p_#;6ga|H0GxWch%V6&=UZ4S;@(zI~$@hNTXqi^Z7;+0FvjnI~BZRQpNg-9(Zbrzh z8b4*S(}5bK6xOiXY@xz-^y;D^w?HyGv4H{?1r1YeL@83(rVfJq0?FxsXStq##T8_X zT;wSXyw4gmw|6d^y@KSzKJ5jL+R#Og%A?Wtu)moN;PL$oa|Icbs;M-16bof1aWFaW zU{Y6mIeVBZ9R?oZ>twT~-SMcG=kw{bqcZ4{iC88&4Ve&}K&@oHHKo|z#lTZk_SW+Q_lT*e9PRQaAdP9Z|U4$-KrHiA~rEtYqj~16s zo$I2VYH?{Zi8nYzaH(eLe=(P#$z6JZ26W0h1fE>J_u~RUnKEU{{7)*ae1nTG_FT6L zy5fd>zhD6F*D4{EA6(Gxy1hNxi*~n|?awAHS#3r>6OfL`|4>*SH7^#APjFF8T ziB;#j2KD5hi)ODNxiZf?o+UT5ktOqBkX&|`*#I6s&Ty(AV^YCQ?vblmtP0) V73!CCiDUo(002ovPDHLkV1jj!;`aam diff --git a/graphics/object_events/pics/pokemon/followers/koffing.png b/graphics/object_events/pics/pokemon/followers/koffing.png index 7d6b5f5a3e0aed4df6014a88b225c1463e50b8d9..62a0d5e6592a6a2bd6e4c0e2bdce0f4aed2b8d17 100644 GIT binary patch delta 24 ccmZo+ZDE}dz`Jl^BLf)B(zVIj7^}_%093{XX8-^I delta 24 ZcmZo+ZDE}dz{>ywiY03%Zj4oD0suM!1qlEE diff --git a/graphics/object_events/pics/pokemon/followers/lairon.png b/graphics/object_events/pics/pokemon/followers/lairon.png index a76983a3df798a43c098180af326947bc9a9a2e9..3445498f290d6607524bf72cc2afb9fa1aa1e910 100644 GIT binary patch delta 27 icmaFN_LyyguYjYaXJlk#VP+)*0|RT2d)LNTHf8{SJqREG delta 27 ZcmaFN_LyyguK)uQ_`j%#XJafIGXPh41@-^{ diff --git a/graphics/object_events/pics/pokemon/followers/larvitar.png b/graphics/object_events/pics/pokemon/followers/larvitar.png index 6a12f6d7b0adae0b363d471572959d05ef0c81e0..3ead6cf48e7cae8d19a4ff748e3852625cb4f018 100644 GIT binary patch delta 30 icmcc5e4lxOm$0IxXXV0;od-`cfI;`U=bRg3n-~GG0t*cQ delta 30 Zcmcc5e4lxOmoNh=@Gv$%zA?6m5dc`A1-t+N diff --git a/graphics/object_events/pics/pokemon/followers/loudred.png b/graphics/object_events/pics/pokemon/followers/loudred.png index 1354686f6d971fcd8c57dc361af5fe7458a0c4ad..986e9117f9a1620cd24cafcb7a36d07f434a5c38 100644 GIT binary patch delta 751 zcmV}8HYun0m)q=$mH*)$CpSlGq5V*Eo1QqhXyq4i|DTgDL)N)PTy60^Dv*n^6G zk(yhIhxD@0y$XJV9*R1%liArFS3$vB<`D9mH$2Z~XITJdYqn-@zkT<-!&E3GO<#yuHK|WA7?7!XLOOj+bmb;m0+Go95 z=`!0rInOK(yB&}AbAh^n9YZ?}bO9BG(r{ui4^8N`nGpdZ(2_O~&*>)d)7B%EryGBC zV=zQXGC_S2Xe+1B$*=`%6a>4-5`jZg8gd(~tmBZ}A1ImyhKBbEp`{PL2<*nv#*jN| z8Q$_P3Xl&)fpU|1FnM@Lqcd5YZdPE@t&IoH#(ff|fp(Y~afg`VHbU(tp*)ZkN=H8P zn~SgG#8g+ToBbz@2Z24gv=jMhplyFjV?RBU4#s#nXtGZp$O<#N{ECC6*h5ivs=C>7 zqrv)4HMkc=z9^KY;#ZV41dpF%+;K&rw9DtP7MRomGj45lWb;zxQI@zyhY%PlkxW*b;ZK@0z5rZG4G_F7R zu_|<&2#2AY&7F{07FHIs^A}8HYEQq}%9!l{z+oVAP3p)l^ji7jFJ(=z@brnP@80w!wD9D~9G3)9eJ*bEu zph6F^_d>->dRfXIJ@_r0*~#qej;o;HEprI@%^RL)v$HG!vo%|@HCyR2@Si>1P}_g& zHn9qMxcAv20DO>LTNa$m`5gbTg=D@BG8gH5YOo(@xA74m8X9j zbYd_Y!n1L$P$4gQyOv`tgMaw+#e{K1%`(E5uxP|o(Sy3(#D88 zY8vj!4hoP5MS*gic{sUsOrtYdoNiWN()G2Qc@waJN$}+<=910cB;DB za-!jCzY<)JB2N@bQ}HXx8iG5|328f`P}<>hSPe|-4zobr>E8OMT5a*Y55=w{oy|$Q zEfzu`a}ilPD`I2jlVuTXUS6$Udk18E7KbU#7*KB1#{;Q-MZh+0(F0jz=iSn zOC?uOGz+YB=L-eOb7v0;iPWJoyLpSi7f0i7eRajc`2sRMQZa9*o)#>;a}iN5Xy!Vq z7hl-W|6Zw_{&D}o)Z4=94BGxi&&SuYId+(3VRfG6VHH?CMG)}{1>3}bS)-SI8L)NN zVJ4~&_UP_p#G h-_M~w|7GJpuAfjNjQ)_lHW>f_002ovPDHLkV1mNOWnKUP diff --git a/graphics/object_events/pics/pokemon/followers/lunatone.png b/graphics/object_events/pics/pokemon/followers/lunatone.png index 52b88e3266302bb3151be15c576a118881d8f287..b897b6e66c79362655276be50c3b54022d1fe382 100644 GIT binary patch delta 406 zcmV;H0crlo1I+`FEHSxhDPd6|v7t%f2?N=QIYCKT0RaIaDKXK(VUc+`kx3z;F>%pJ zkpKVy0001UbuFurT^N5uNkl5dr5WsQ7;;K)9%+SCX1_V!3b+TZfvNA+n zLQ%6M(`7UR#ZS`5s`*fWYkUK1`ENf?oGgRmY;A3A{i9sI-Y)0fa<+7zA9-u-1^}1Y z6nl7>z@BuJT5a}0+e|a;zGr|N>7-39cA;C?3diChzlGYPoV0(D#colX(_HUI#vWe? z!1pMdSFDyTTva>`vAek1E03@baJ8E0DAnO~C)i!PxA4^?oSTKhVwQcETI>55yRWQt zc_b{&wTj1Pd0hTf(?aZ_bEVHm!ZLwWJa)!+=R-AJ3HH$G<8nF@mUXl^(#%XYW}&+O zHP}OkPxumqvrt-dn^|tIWcJr!_dUtmJ7uPpN1B-hQTI`&Z;U)XZQ_P>s9$WB+7H9o z6niM+g0$3DGpSTOn_`boi}hwjA(pe^&;BiYzcrJ>bBex0QUCw|07*qoM6N<$g1Owp A1ONa4 delta 401 zcmV;C0dD@y1IPoAEHROJIYCKTv7t#}Q6Zr*aRC7VAt^D@!C}!!kpKVy0000000000 z000000000Gaj=<@T^N5pNkl`2e@yhx~Ihm zPN)OlXt^JF?mE*w_5^T49eKXNHVhkj+%kA7^}vZSM_ypCT{(a9H2rd9-SY!Eq%mgs zh|$7>o`vgB_fW=8EJmCH^hOgJ_%z{`$wTMY9rOR0NSliIHMl9sD z^2a7c*nTwYhPtP^hITb#5rNMiyUfnrrCF~;_tf?4eytG;Cs2;GF%hoZkS%|W?y1WU zd~?KQLNk*|A+J?r^VjGedlt7(%!H{&+L+|Q@KKl7>z-HL&_$ilcasH8lVmg1Jyj|< v@YjMGO$1}%W~zH$t@fK#6<24fkMMp0c}|AgOS+N*00000NkvXXu0mjf7P`9K diff --git a/graphics/object_events/pics/pokemon/followers/marill.png b/graphics/object_events/pics/pokemon/followers/marill.png index 8b7bd99a521ec303edbe9cb8401e2caee884c2bf..93a409288b6a91c39465661e825f52cbf64ea155 100644 GIT binary patch delta 527 zcmV+q0`UF51jPi9EHR0piMh$)IdP#$k;ySRLFwuFak25aF)1N2X@Q~10RaKg(c!7N z(TSnCAvtNzD>=N8T^N76Nkl#CO-5c)S^luzPoH*WlDeFVKw${$ zlpC6_l3%XP_?0vyR&~X3O=8bW>;Uw!-=D0K=F}LX`hioN%-)NaJX#E&J3>-kD=j|H zsvnB0ty`$J_m*L5F$lE#@hWT}J&%W*RS0cWKPu?^j?_s|+1c-I{Z{x-eF4fkGT~Xw RwBY~%002ovPDHLkV1ha&0e%1g delta 520 zcmV+j0{8vJ1il22EHMEA0qN=aIdP#$k;ySRL8-aXxiKk;p}BFf@gX^B0000000000 z000000000<(j6g@T^N6~Nkl7xV6os!u-dc%ghz{O&R#t za?MJ|t<3<4%~=*@7dR8Ei$7Y1Z3Y;zf-mNG^MS7}Mq%K*lQw^g2eyo{*PY+VOsa!N z1smEUx7jvqt_Z*^-(|_!%&>h56p8*hU{X44nvnFf@4#Zr*wzh@Y`j#BF4&$XP)!Sm zP18*+3{Seb1Z*?^{h0AaTsmyLbZwqzQ2`av0g{<&5{88PpZ4@n@x97r z<0aKl@lntc>DPZ+OHNdiFboOzk7WSPr)48KRDpFC5kgA5pbjHu{cj-LPbPW%<^?)X z@(e_iHsqSA)A5sF$tn~hBvEz6NktORTiF5VeX}`QCC#ZZMAb7nn!P)3^<+#je69&edCj-@Jga^v3C3kZ_L4IeyyY*Y)KlKF{TkMC*We#fq0000< KMNUMnLSTZzmGA!m diff --git a/graphics/object_events/pics/pokemon/followers/marowak.png b/graphics/object_events/pics/pokemon/followers/marowak.png index d2ba55d34fda924afeb40bca99daeba9bc5fdaa5..7087ed04e37536321c68418ccd316273a2f0f3fa 100644 GIT binary patch delta 808 zcmV+@1K0f52HggbEij2$!NI`+0Rf3&8QJ0Cp`oEkF)@LGfk{b8(Xo-~>G`RFNy(W} z;lYu?p=sjiJpqwj7=P1AL_t(oh3%BjYuhjs#|=Js{x=j%9oQjAgsfoy6A6Np{u8BU z=unT2lt4x=CB;zxJMqB`)LnYmB|h&`a@}Q+J;_+V8kemMcFFf(_&iDPef4C?^Nu>| zsH2YhH+uK^bzXU|ad{V(C4Aq?poLTL?|3}K2$5*i%QN6p+JDPlSt2W;%TRD=`E?l6 zh|*{}dMlTd#%6k#K@Sl!&h>C83zVAWj)#ZY|3Ia>f-XzR9nm@I;UX3ksjj)arc;EBu39W} zP0_&0ZE))f=6_o*Z7$BCYqwMza2W|jhZzb^R|x4V;&3aB;)U53n~U?0lwRpkm$58} z?hZ13xVc)QSRIhdQelju+ibNS9cF);(b?rpH_YX=sCR#ueT=T)+NqYi+y>)_o?jx; z!~Qy^bE|;O9uW`IM2|~W=ZT@0M7P}KHiI}B(#Ppnw0~R-Yc(23epEREUJ=4Ir;^ot ze>@`>=5`&H$_OQW>^EDyTqH&T$<32y4pI#BC9C;a(p&^)@^ou4Y{APL(^TMn+G_UM z2`<)&SpazQUULog>c`CCZamo4%~P&>E_jk#XOOV;`?ntkXN~5Npd4CS>w@e=v{)Z< zlXJp(K7Z)mM%;2|DA+%zPuwuDPn(3>26);K;|P)p@Mo8w4*0j-P8Ae}1nYkS!}^4? zsJj<_%blTM_X}5*&K~S=#SIoKc(uXCpl29+g7{|wSj6|<=Rlr8MF2a z0lU5z8Dkg3 mn$N6@Z{6@ifj^t`U-TP@c$`jRRvjDw0000G=Qv00000 z000000075a8{v^%7=O)4L_t(oh3(Y6Yui8+0C0h-McY}3gl@ek8a!EdwFQ}qYdkbd z6mcyfn{94LCKHP03z;Y9x!HwH1HW%I#MCMHcb*Ih#xx!EdI`SZz4n?0TYm{%L&2fduVcbf&eO%{ zt!_9^%=E4yo>P9e>$MO0I6r%O2X|lIoGWZZn9Jp?%KZ4J0rPcjqR$T>V@_cO>w%`?&*;L?tTWkC5oYecwEC3#V z(2k*Ad{R2@t_PdAdMNbFg~x?;1{ur0pZ+jhR@x!O1&lP-1=+b6u|DLgKop_ktot^S z)?Guv_J1*dKt==GyvmT>0Lm+B96=TVe|7o!89Lo;R6)^@u>MaFcs@fc?cNK&b=Od^ z`AMQkXAd?cLWac?C>jvsje|0@Zj|e?>kBEkZW8-m@L(0jntI%3C#88x(|GJwf zL(abtX4c#pLn%x)0lL|4uT{_WcmOW+9(+`;BWDzcx`AjN6}q7UF=p)-7VP?7P@u9g z&5B0%=nrDXO5Ko08Dj%uh;)o%t09JBI#LZ0cfT(dpvl4Ll?C^+@p6q_QR{wYz4+D} gerVy(?)fkA8^MPubP=#toB#j-07*qoM6N<$g5GP9x&QzG diff --git a/graphics/object_events/pics/pokemon/followers/metagross.png b/graphics/object_events/pics/pokemon/followers/metagross.png index 0d1f5e872807cce5416422580b2a52212b88b1bd..49df7af8d45c7c636bc95861f17636127629265d 100644 GIT binary patch delta 901 zcmV;01A6?)2gC=EI3?-n`FSBB0RaJ)mZ2#rF+pK@k-_Pi+42AX{~BjE9K{bjh%SbMfaw_o4Fo3{4W_d}OV!OK6n_iZ%cW9qpiAPV zG@+q(hK2)y$T=7c1%p+x23&mzYf|fg){?2c)9G|dqNXmiTW*l``@ehd>1-K*$Mv}W z$%+?6({jA3{>K$AiUP~}inbe?cy4sxtl;e1j5Bw_*bq!nW zn&rU=TVn*?O(SRA#fWW17I+P=8j3+7lpa%megb?#xA&kZC95Q(ZHVA2zu3w%f~J)?il z-kdreSx}o^1ak_7niyB*X2$)HhfgM6z6CtIiEcE)I?@xJq`sUY}0YQ?g!Z2vBHBb5~;4Zt+HKAF|rFN_D zd(a!D1*JCIzzatCf{hO^TKx+3*{OdtpGsDN=33J=m7cOF*s0-L1v~tR5M>3-fbrY* z$tK3M+5;e(C{6==&@>DeMpDn1>x~w6W*%hiy(F*kiah}@NK_yK_XiuT{ts-509SGr zNL|A)X(V;YiQcH~JBSygKWgLoBrT}Q0vDg%tgoNl*aopJ%|nJKI4kUhh`oOny3z%U z!fx$nS|DEhE-SDpq+U8m4EkW}xF6bUgjyO!P03lH9zv++b-`Q*-Azm=>ez?_|66*9 zc!&}?NDSW(ZSU|?2Zq?vunsGNRp4?Q$IG$O1t&Vt)(;3_1(1UXgdT)Y4idw+1B`bM zF5~4(OZz;IuXj1WQ-R==(sO@J=@w^@==?kCgs_)F8psYP2Z`YgH+;PI{h6hWeE(8# zE)WcdKvTNlMCXaKIG!??iGmR`^x{Yka)!__kfjmB(C-KGoq3&eqO%*j>iZD`B*r8$ zXmX$o?8tBkz!0*pq$sdh=LKsFN2A!RaAEQJI;c0000x#y`4| zT^N5qNkl;Xn%HuossOCX=D=U=*+h4K-1>jQt;ar_^L_W;)7dfr z59?w5lNB$Drsa55{f{eL6a|*`6?Gxxo`Qeh=IhI-IFKw>)O9t?bhSGPD97<4ANW@s z>KeA#HOqq$w#qP9NJpXT>ahxlIWMWcqF&i?_d8G(2+kM8-(2@qOtD}rSzk#nM~>^d zv+M+tRRJC$HgU<)u{dfo$#^Bbv~{+><94xpP@*%s4xNWEptBUOzu_D%7vyw4m-!ZAwX{Dhr&T zb$;ZTk3Uw1B493A2DS+COoWu4ve4`OUNGbB>6>3?1_Vi}3PXRg);#U0fZOar&xB?% zmnP$0;6s0y7L+Dz11}in3%1`sANPMMG+?LF0xDSrnrltZRC>yy;G%|a6kPBlLX;IS z1IBMBryCg4Y6pO5syGeoK+`Zh7)d>2t~bWmnfs8ncapruXZ8fVAW?w`-0g3Vd#|x6 z0zAoCAoUExq>mXi`{-}*-)3l%}3p{*su)cnBU>n4?G#?qh;H-bJ6C(Cn z=t>tX3fr|eX@Pk0+pNH*koxH$G3fox<6da55o&1^H6>?(dI+JO*9CJOw4Y)^QOiag z_}|h;#7C6KL1OrRX#0nsS}??xhILpGtOA##I9`sFE;!MFwth_rD}WqCAoL-Ga*!B) zTw}aHRtP&Oq=D>!a*!Baa>IwKAedX) zFbFOM=K{fC05qiwPIR6)kK-AGxhNPiLnn^pAZG{-16dj|4E=5(-at3ePk zKw?Z1gC+;cz>W+D01P1eN{RxDbzZP$G$RQzFjJKQwEMM90FK+e8Yo%{{EZI4qaz3{ z37H`qD1(M4@7VTJY!wF<>ugfnIJP8YhHRh=>>bW7MS;aSf95Y(fi$Q=X1KfXDmu%u gZtTOiKL79f1<@On@ImkB{r~^~07*qoM6N<$f{G^?Kfw_snX^Ao6;o+g# zNjXUw0002+qV^AwT^N5pNkl&j*|Y6#lH)p5^##jerwBdA5_l zz?>@%q&uxo1GafYYNBv4f!6nhSqE4HVa0`$iPC;*Kp-H<$1Z=I)ymde10rLpyTBYM zjvzc=rb@Kl8{QG4SlN1nr4GFW%I{^pH+%rSiH~FLm&7l3<(R!xu^l!_XbAl8ul>CdBTA(qx!)XPm`H36xJIW`;_#6 zhdmR32;7|2dTUifjxD|WPJJZCj)Mf%_pNjF;=49#?!?y#G~`=CGWfz z10J>qI)@lz)c3Z(E{UH~!oSMm;GO?`Pfe9?t0pd4)$LXBo%7FaPK)xZq2aM#>rYMJ zRxkS?`1W&VKPIF4D>>(jYPPu@=$vnJ+jBv>pJ?@^x!0C6-nLOP4YZi;@cQ?mHOy-o zH#|CX&?VE}^nkFylH_#1toqc~YZ)gRUYVQ7C*m$JPd`{S>OJrKj=(iJcMk`($1y$q zzUiLyy@t3W$2Y#4cErCtrT^oyyvr5&3@II@yA4Go_~w56s!8^5q_m!yU)zqwa#S5SEGyi=ac9nzs%+=3VBOt< zZC%TM_VX$gY>i9j)!F#;=cV>p`*(aXD%fi2kbSszQKaV%X+@Wh-yWTOwmUED_RXm& jk4#oB-(3IXe{3!D1Jj_Bt0I$(K>_XQ>gTe~DWM4f5>&KP diff --git a/graphics/object_events/pics/pokemon/followers/minun.png b/graphics/object_events/pics/pokemon/followers/minun.png index 8a7eb74fef5646b27f3dfb71484defb074670c25..406825363509c4670545c06dca7bc0f3f24b6a46 100644 GIT binary patch delta 33 icmaFN{Fr%yyVy?8$WBeihlQ04FrZ=US+Oy;jS&F3$O(=B delta 33 ZcmaFN{Fr%yyBGro_*rM5y)m|p5ddZy1|a|d diff --git a/graphics/object_events/pics/pokemon/followers/muk.png b/graphics/object_events/pics/pokemon/followers/muk.png index 6fc05c292a88f27e9fbf216f570af253a0f74033..907d25c14c426a84bad38cda3044bee8cbd7187b 100644 GIT binary patch delta 33 pcmcb?dV_U>yIAAIiJFFyi7Ov!YHHpLj9j?!W`Yi@)yCLrCIIPA4QK!W delta 33 Zcmcb?dV_U>yBGroDARa4V`FSJ698kb22KC~ diff --git a/graphics/object_events/pics/pokemon/followers/nidoran_m.png b/graphics/object_events/pics/pokemon/followers/nidoran_m.png index 939cdafa3e870359d207a615b26fe931114d7fdf..67c1fd7062016184ef82a1bd3e36044650c51dba 100644 GIT binary patch delta 27 jcmeBW>1CPVE3mQh1CPVE5LvR?nF%dwJ~-BBLGP;295v# diff --git a/graphics/object_events/pics/pokemon/followers/nidorino.png b/graphics/object_events/pics/pokemon/followers/nidorino.png index ee64197051ec1f52b3a041fe34920531bd6c1fdf..02861fdc66dda599d351adf41e624d9f9f4621d5 100644 GIT binary patch delta 646 zcmV;10(t$k1-=E4FD{8;nZZG6>FN2|nen+92>}5CQ87_5acQw}(V?NCv3bd{vB60> zQ2+n{>L{`xkzE*nG)Y83R7i>K)G>?OFcbh_ZQ2Ysm5e7aCJ_8D(k@+UcohNT-{1yR zap3cR=#asGCp66>JRBUiWC()8i{szWXFIlJV>d(TP{<2}e2Vm*^(>o^d)(t5_xO+E ze8Yd0KvLr5gwlA%H=|zQj}q7xBF2RHJ>#2!Q!D>GNMM_P3W#)20mx|+;+&nz-tx$F z1F0%=vEegT0Ppw-kJBcOPBpU=L^#wLqr zoGA4UrBZXQwpfpwd}EWRMFbFS7V(U!%7Y+MT}Q^QI4m=6?)ccaVBume3NCnKH=DP&%U`XxQ}T+rSRM}rQPhYF)l@Y z)41-2bn8n$#W@54jvPHL{vD>PD{Ns`T`o!l&+Us1@ zYzi`+M|-<~Wf6W?dgTVnC%t{PU+wJzr#Bb8%Jeub&?i%n`AqxvF-_5|EkM&3?+`J+ zD}ZKA+e6gxx**=}hwomrNl2MDe79hyrDWZXiszqRRlM}qQ=~Xx*sb`J<6v3be4840nm!AUt$0RaJtVVT*P@c;k-0000000000 z00000TK)G?2nFcbh_Z+Jar=?`e7DqF>tv2sO{-;v?&rVJ?H zo2ZT+#M>#6z-(2hFz;9P0l_v1nxX1YDKAo#&#~Xb&rS%r$35&bvK*D@aT-1yi zzze?0^|Xn@6E3ZUW7E?r_9`aaeA*<&i~uEzX3TSyrm0CdHhFa`jEfu1IA-hxe8%P+ z9I>7<`Nk%%iwdB+ETS1x=GAq@`i_hpC^)$)(&@&=1&acE`u;)tq4CL>dAOrN0m}}k zi|ej*!m%-b`1hiK;yuw*Iv@2prOlb9W=Sg0;nhBfFAH~-^s~ptIE2liDc%q9&Idik z+1539W`S)QgLqiDitVS}&KJ-4h|h2R(4n*55#i^mD$iyIapUeHVm^SMF2ttZz+H%s zcq^8sMV;-0cx}&<7SLYVu;0+wT~+mIt-gI$b0)EW&wR#1{XK8&w*_eG!xALGwI!YF z0_+x1)rPqx>u$hKSTde#%hp{%zy7tXp@9CU+Zc+v9{iLU9!wcOYVTT`f|7gH#x7u4 zls_0h7d6X>b|yFHja^{(SU?__9w#AsX9~(p^31-b30igqX!4YAE1C5L(DJygdR`Yq z$4z8I4-m9TNM%0!Z^2HdsqA+YzJ1Mu@JT;UnBah6zv54}9)4<&HXrRdI54^7U&L?1 Wd~RSvL054A0000 zVuVf_`E9@~v@4prWZdYG5hXRp8S?oIW}#hiaa;VI5c>UG&v+~x19zr@H zg}erR$}fy{O#4jiq?j-6yTC)RZ0sX~Cb_KUvhe!Zt_zc^)q55+srt|2e&>z+Xhyrx z?%21sr4bvub-#i~lg+x_j%J}W{OeZbhxKJce_ zRQ9T$%?>$Is$VHJrsM0HddTGGVSgzCe{)r;bJP;!XDwLMYqmZ(0||(J5?y)dezJ9@NEl9`&F0nmT3O6 zt$m&($-{KwBnbSpU)a{*dn5G2G5xaRO0T1)863Fja6{~D((gsORwvhVN{Z-8tW`}JwJ8@-)3%T{UZHhVF>K5@>|`L=H~O9Wy*d|z???CdGcCW^u4nqjZk$3D?) z34bRTc)4x5_C2=R-0SY2-hNxxH*4DC^o<*4cij))9Gg@BCi(vAmbJIDd~cNOe=VQ3 z`NqB#TkHI0eEEIXFzHd+{;v~iKQ8eSys^a7|rZFN1VQBeT_0fB*mQAtTLF)?Xj zVE_OC0000%4qg3`T^N6XNkl-!A`hGh4XCd@|`Qd-pu6T%) zaVQ|xQDdxQL;Umzi2Fcdod3}OrwP{2sJ|!vQvj}?c??ip77~9-b8`RJi!eFXvEh1n z{){KB7g-8p_}qBl&j6!g?bC506Zr(kt9WM&%Zeb7C36YqBt3!b2YokWt~+M$R4%-> z2~2$*`|K441WTq2yh;){1F@bB-8z))lU`Zr*JaHZyBy!d00SQ^n=;lpWd_VZtRD=! zEKOiS&E9oB)4C5SS`julnDX#tivn7;9(P zIYWFk=~WvDFs8n=5HJSr6_xVocVSGkYwyjm_J-xj={#jX+f_1Lt5(mNY;9n!Xw4`S zMjNrcH^$l-^4uAgEMX1M@0=S`oZW~BD^A8TjGykT>-2L)(J#m<0> zh}eB@Ehc{luDU_-_G?bKY20eiVKi)*za8-MI}POv5x>@fY^;|`%8c4@v$=l0FFcl7^8Bzg8;HW_610{ zb20{yyHRB`ZYtuA7FpPXGy`v0a<`uyiM_?n%P&~rrR5xs4-p$EZkZEc!E2<5KS_++ zDVu<|erH}C=2m+G3Fj{maO__Z26IAMBTlIDXW3R`xj0+4-iHT%xk-ChG7QUO)OuB99%7{<%j&*BjC3=RCN#E1iag2y|Kj%-qYYCVn!NMo00000NkvXX Hu0mjfVRzEq delta 973 zcmV;;12X)J2>%C=EHQzBfx*GSQAtSw0Rb^FF_Dpx>FN1tVPOCO000000000000000 z00000000286lOn>T^N6LNklHEiieS|2^@a0#NbFLIAHDpHS+f{l35Y#i4%=1NX!0XBL$7q)DKM z&XoiH3@`;2t{lZ87B6tUoYh*(Ci9FYURpTE$q`gP=zE~F(~@5LcIjq=TOQ|I?B>Lm%Wtow0k21G~Q)1SL{0~HQ0erKLplIlF;r00H~DL zZA!)r7;WF&f#`peHouU)-LOzEfr2g_YZ}KiQHzccrLnwn2e=vS8__q7slmyQxSh*G zZ3CNSdPiwPlWSuEv80{ir}f|&3sA%jC1gck=h0BxKxqMgHuTr;?kOWFJ8b~F!82w6 zrk`{QZ0`L$XcuVDu6X&L{2mK;mdhECdB)t)zU_azXgz;)b6}`#U~L1@sFP7?2++DX zr4TR~_l`>O@(0nnTBrBnP`kj=9)qz5+QKfPSj1K9yRrCWx5W>uSyky`DS-}?Z zIVTW+uQ~AnyFLK;1~v!R%ojG}eXR!ooQM`Mx#EAah5)?T^%*EPdomf3y-`Iq9V%>J zEqpaE(gM6yiS=el#O4+|U%p_6r<5_cz6cv5yH(DBD=Q+7-J2wt*|HgUn|EgUb{REq zAZF|d0(Sj#gutHQRFh+rXNyLr<6;z6N2NLE3lOzO%*)G@1yo0VmLvs$!;Wk+4vry8 z`zL>fYX=~j57KFKY=&V0nnNs}hYnmV?d4s3ZCqT04%@uwGvKh4t!mJcxeFBhBqOHyqgK?(5&rhDi`pq+3L#>tfJ6%H{KW)-2806`})6@Ek1s?za diff --git a/graphics/object_events/pics/pokemon/followers/parasect.png b/graphics/object_events/pics/pokemon/followers/parasect.png index 5227485611cf99f2fc778a519cc700e32605733e..f30a299ca2de1a6cae511e7304dae37870662c02 100644 GIT binary patch delta 724 zcmV;_0xSKF28srdE-xvmQ4y)Bsc~^}VJR5_0Rj1O8R_ZysWC~}VR7N1A?e9k00000 z0000008*n6t&v?Ae}G9uK~zYI?UhY#+b|G?xe*T{K=J{M7CnZcLUfI81QsG;WGBGn z0dfWlVB8Cs@iqY*=K^tas1AQbTZAMpitaosedNr0Ga~^)=pOgDhmWKzC;6XarT2>| zz7b`)m}HbZX}z7`8xoM-%Z}NeoVOEvLt>@-1ILWe&vXAMf94w!w+-Or@Ua-@X^G?w z(ys=J*{%F~=`q_9{W8YM?{hypVuV+pT7T+28DZlXN%VMS+UaksKk(W%thK6!*{$r{ zm$-0k)BkL{?3fYW!NAaw-nD}aB_~tz{89}uR<51B&yLxgyc;?FsoFt?1GCgIUY}r{ z2M|0u|Cmj_fAu_k>|O^MJs376erJ7N?_4`ae;czoaviBtHNrbL^mCB7=CyhGG1Dre@m5J6j95Wacw4SqHU!*9kU_s=@Fr|*sf08M6dfThE_7WX)bN`*xEgTSk z3A{4>Z98^?--;h!XAN}*ROZ0JFlp?Bim|0PB#!H115`c|E*YcD%axBz3dZU@Opt(J znPy}uy#bfR@T_r7;0;L$W2_K#;|y72IWL95Igt$&WY(={&Sg$gMnxC_1W~!bOX&oY zz^(*me@vth`K%Vskmr^~o!geV1o@hGf<(%iG&PphwE;x1#EtzrIs;U3m@v&2+zH~0 zSB9bI%GXzjizJjwfsETS7&t*h!-0Fc%*ZSI2curFqK>&QpioZ*4hFLv@f?NgAjksa zLBmUeyAKIQ8Vh{cNM*$@dgyX@9kJnf0_&&18uLiS|A@cT$@1GmrErJ<0000B(8yVR89!8R_Zy0RaK2F-ZUb0000000000 z000000OtW`7m-~Ue}qXyK~zYI?Ug-?<1i40Rk%?Z*j?C^#t>ZZ6?a|EXUHkt6-lw( z7EzJX1cd7S174j$D4ij<5dF#Cj%=Tn^y23Xk)^s><%m{toe-4jgz9Dhj08VzV%W1wY zkvu{A#XvE;m0vDBW?MoZra1Yt9cD+2@One(hVID(8^=guz-!aaaAU)PkG5e-bv@2* zW!s@d&y7w0b?UNXM!1E6p(EO!M;S_HrsVCR9%HOsJA0oUvpIP*a&)85qYMXTsZ)HM z!8&&!ICuUrf17;kxqEG&M;Uz>HYI*%Lq4{yow>h_*&Ml!^sJuX)(!m@Brf@=Kg}DV zy1R`SJ_(}qOly5s{;dTrJHtmi(!8xl7|%8AgzmdH7BfOcR;r`cN{GxErowVlrps<; z(9w3UpV0^>A9HQu>>G|53<}Y_sNY{0FRWle*uk(6e~!^gX+3+|>vQ8JI+o`C2Wif5 zK>Q`}+Vpqo*a?0uetuh2!Wjsb0|&#TvJ+~hR^E^}Zi)j?`A#HLN+>T^zAMI+YVt5a z0)l0lkrnd>k`cp;$~A!xBqd6zf{TMQRF&nt&!l}o&0 zPB01Ve@bwscnXm(8tx2bZkac^ZCNsqZ)7J(7;8w?U{+rmKmjIy@>V8RR5!m;!P0_p|F!C;XinWJzW z1XW->YS<^Z`;cIyF~|KzYAfFBq5keNV#DbK9yLsX=ZT8{5q|;D>7sbJ2(XF(0000< KMNUMnLSTZ3FHoug diff --git a/graphics/object_events/pics/pokemon/followers/pinsir.png b/graphics/object_events/pics/pokemon/followers/pinsir.png index fe630135f34fa0d160566ce1dee599f1e8f9569f..07d7e354a4247f34a91dedceb6426de6d7c02827 100644 GIT binary patch delta 30 mcmbQjHid11m+;O`K}SnP&%nTs7a18C7}hhD2W^bq&IACNw+a6M delta 30 ZcmbQjHid11moNh=_?`5;bYtvxCIC_#2BH7} diff --git a/graphics/object_events/pics/pokemon/followers/plusle.png b/graphics/object_events/pics/pokemon/followers/plusle.png index 3609cf46f5b2f2c0a90365dc6271daed918d7e63..393b67173b0649b282db3c70ffb169e6ac8584db 100644 GIT binary patch delta 431 zcmV;g0Z{(s1L*^hFE07viBW-}aal3RsbT5q`Ejw)F;RH|0Rg#5S&1n@;cK)3I*CFc1b{4|MPdq66JH5u~6#L_uaqnTqOxwNKim~zbs4Leu>isr_oUYb)yGahf;hR7^2dm$2kv!neg#Fn&PY^>cB&Di4T zgAbpI^lApaj0p>niLn}DXIpA{;6aD>^#gPz;l>ntCO?&*ohJf-o~q_6fY$A0w*}`J zr4!(;n$zpnKszWD8g`z=34D83*mDVK)In>)Fcb&yP#EN@xZ!aIo&5m&0_v-D#|;CX2Ufj_ zFkEkGnXX=kZ06gpjR%wGUKxcQ2K^sGe|hwUG;JBHQ>RXyI{zh^I*(P%*amfU&Gn)f zmq*gC#TZl0`$g7bm*!gM-s@vUGak*|hR7_|YawF2qWvs?#FBKjn_IiNG-JC%2qAnb z(z7XqG9oNM#@cF#U2LfpKmcvp*N-reguMw2wK*~{}7#MW!;Q?T2(%& zQpaoBn}$EP8)6qpeD}rTS;uLZ^iloYswYk5JagVq_zW0VcqaROo#VIO{*nKAz5!lL VuR+IkR_p)(002ovPDHLkV1jJt%)9^q diff --git a/graphics/object_events/pics/pokemon/followers/poliwhirl.png b/graphics/object_events/pics/pokemon/followers/poliwhirl.png index 5b9a3f1fde67aceea73cb9fd806d4b7585b6fc24..d98396f8131170e09a152c0fe6165ecc67b15966 100644 GIT binary patch delta 30 ccmdnVvXfKlsk*tKoG~ZaH!UjL{{!T#j!Rvb`wYwb5*ccEV)L8 zSZr&2;D9T^$!u#Pf?Wo?h_5>?iHm%>%&vCzvXpQ|Qh8(-znPu?JoK=vvz_g1XZt@E zhJR)-yW)Em+mr>RV1?yzE<_=vhAC_2DP^moVwEk6Qy;E>yzKMXj;Ro%(b9ddYPvT4i^?$W$7CA!S{g}-wA6$dav*zHk=lq?6yY>1uCp&di%dNpV3lEFW)iXjS})y!ZQ^X+mIIJahSmAY9lc_7nmxo-hJ-O3 zp28lOo|$PLkJ_aM7#Y9_H>6i;;B~(P&&^60!74+-H60Q88|wmN&F_`q1-a9LW3qHC z>uTOMtR{N-b_e}1&j?EPX_ObZnqS96S|`#gm>E`of;Xi5Diw?tGl-+bOy882Y5*nu zj%W>BqX*n;4Wj&2M$4b#bN}IiZ0_|6+L~9tW~za%rxb;Q9hra~%`Mdc+9#XniR1MCR`1Y{f9yTq#g07cxpajw4jtfu}!Z8_M$`dt_bqNKIBntwsk0jfevPrVt z50mwJN7XS}e%BnB1|~vUl;s#sCqlz-(ejuJqT$!&vHW%C;qZ`r;elC!;Vh1&p4Y_4 z71%AvAs4%)0W1z5|8Roy6BwB1&jA-$S|JYRWpP{NN9!F3Tc=iVBDW@P=W$%kKXLp+ Z`wd$yO}US~*$n^y002ovPDHLkV1jrBMwtKr delta 685 zcmV;e0#g0!1?2^hFD}W+$w^_kF)=ZDf$1SBIiaDU>FN2gvC&ysSpWb40000000000 z000007y7BokzE*nTS-JgR7i>Kl)I1GKoEz$(#f?KCnmWrQ4+4T_DmgJno#DJwNNUf z4elW)L3=#JiVmH13S|@uxW6*9>s`OF6J3#1jG_2uc7F5l!?MnHwzHk>|5zOVnZfLe z?^$d!8kK?-md80Eg_Ig*w3$bYc8iKtwk*y@7fgmeq-RyZvQ7mFGgGL&`e zdBozF1W`e)%yMT0j?*A)K^ zf@bMu9#J@4SZI}{Yp?;|S7Cf7tOeP%!i&IgT7c2p1uGP&u$t-3d-V_NITNHGC4VxQ z-sM-T+rtWfc4`Ex3=>n6kQLB+=?-iYr?aITKzui>&R-r_i?UJn5LX!z`fzvzd!Tw| zs<}T{mKva94kO%%MX7<;n-x4aU19{Q3<>vaAmp#F3-mRAQGyrZP7C(M#IdZ_Y-w0c z^y2dY`k}57lpHcYFVLFZ2SVD)*DDwsR)RNT{W2AQ^rvHpqv=@Rl(uRBC7Ts#&po3D zylBt;{8dJi59G(@=}A0X>lG|Dci)ax18Y|)5(hgn0Xv%8ssXf59{ekj7uYA;E8!Nt z71-gs<8F6+XzLZM-IOCGh^BX(fFdD|$#7F1s)?*iD9{mE5O~`W*~XL&lij|TY`>|F z(d3izO3om>$0eoi{&uRD)>$K;VmW(9_`IF@>D6C;mcuONp! z?3D(vIDGu$AA6A4xru3E zLHXHf0000^TI&^&T^N6bNkld1kGWDX#4cfy@g1Bz#|h2JF#qYPqCE0urWm(!egfpUT^=}x)Z z@Sf<+&D%69*iy-H<|+)N>^D^UaM+a7tdyyg9A$pea)kmZ_eu_0@8b)sK;!(Xw~r6# z&MEg_bkbUH(P(*Y2ETzsfqc)sf2;NGqZ(={d!;1=uF;iv9*&usMhJ_1&%Mv|I&*F~ z9pyft$n-8lfpve!Ibs-_!i=-XOz=i1`>xhFTcf}N*q|$NFc-BQe9vb;HP+yVmDYIT z&NU!01k#6<&~Q|2usGe0wYY_A6A4xru3EK>+~)>FN3T*=Ya(000000000000000 z000000001xfyr@^T^N6QNkliw~5QSOrZXw(`R+1fA(7936xzsT;l;Zw? z4DDX2{o6fkrJS#jR8*b9oA~^E?~HYhqD6}qExIDHzwo8aptv&g`O;>$B!rpG01r5g zGN@6N&gz*Q0|?xmaIaQ@>Y1$JyFg)-LG1R(lhx6vOm#5O1Va( z<+vLB3KA{y9ee*t%FTN=?4|6~77(~aSK@g1%~n;`YUDfiK9k$dnBngz`+&5Qn+^r$ zJtv4^Y*IDOwo`w>8=>sFYGrhe0#jgxuE@Y#Az51oZ@vEHR0(X*oejp}EN+DJikpdATt$0RaI?St;r1`FSBBAvsBTp|Od< z$p8QV0001s&gTh{T^N7sNkl656(Fgih@Fz&?Gj$g<6WjNVz5CC}7kDm%_xe8k}15-8364PLOg#$SnpX zaLUF?n0QhEa%G1>Plb$fL&)L054fB2sZ_#L?}IawU+Nv~aV(w*<(5!^h%KRS3e$!? znqfLE9o-QTuxNikxFKZxagX@vW5!AtL!U6lX{k4QH$!pbC^v+RzdYdi!{^MEFy$}2 zZdk{qjm4o-ZVA=PH#mNMZ40j&;Ljb%q5Ju)t6UO zTuaI=A)QTDTJTnG3*eFSYiK0Ma!^rj2pN;M8dzLeSKYkGIo}ykjZaIsC1i1h)lHM& z`g+Xxw_oen>5xOZZcP*N{W%((#x0qKQR3VBk%G1#xF7uls1ZQ_ptx~ O002ovPDBK*LSTXnzZB>I delta 569 zcmV-90>=II1n&fpEHMEA0U;?Vp}EPqF)<-IN$KhNd7-h1!O1y6NdN!<0000000000 z000000002PH3bEcT^N7mNkl1ExT1eaa84 zB{Xh{wAyi*OL4lt4R|*!jBykxx+d~eexC6gSlBUR_qfMB{@>`{TR0s4y1pZ&lv_f6 z7!Kx-3()=c)1LQbigHWHM;OOj!b`pGbN$du(m-A}sD)fc_TqnrFmb>T*3TUpTM8++ zggiLsOehKpVM3GG{1$2{3M1u~kfVT67hDPx&uVaL&3DsmusA`=4I#G}l)xz)D`DbE z0mzjd20axr$_*ih^Df|i&ZkldQ@sz)On#|%u*0!r$Lw}f;y zS!uyrxh;T4&aa`7Aj?5Txglgs+G=2NWnFdiBIkT(L^VDw;g*oa6;?M*g70s#^3@~f z;K&)rFy!iTTW``>bGXS|i7F{Za!W5?_W!{2AB?=m?;F1W6D7+3|Fsf;00000NkvXX Hu0mjf&GiP; diff --git a/graphics/object_events/pics/pokemon/followers/quagsire.png b/graphics/object_events/pics/pokemon/followers/quagsire.png index 8ae6c54806f33d8211aea7e4d17b4ce72e3e12b3..7a848da87fe6c5aea39111be455e6ce9d7e50404 100644 GIT binary patch delta 33 icmey!@{whNyV%5&KNB?*U%vdw00YL3Iw2clMVJ8OwF>zF delta 33 Zcmey!@{whNyBGroSargA-o{uFCID+R22TJ0 diff --git a/graphics/object_events/pics/pokemon/followers/ralts.png b/graphics/object_events/pics/pokemon/followers/ralts.png index f28f077b4ee2e8bbdb113ffc4c7a55cf30b4b0b2..94cd696d3a4f1b4b9940b7009e902944e326f49a 100644 GIT binary patch delta 389 zcmV;00eb%21Kb0UJ0gLBk?HCA@o8xR0RhR$*-1%JX~}`PF-eh;kpKVyU;N!_kzFZ& zqzI`F;tObXq)AK~L5q-W0@n%=%xegDzJQGoRLD(oRSG4S#`drhwGg(w!oqhkSvARy z?0Q5jg#6u?pPkvPq6`@_WXOF<~tCp(U~g3dHJ>BJxL^@XC_<`BCKg`7wQo z-kJ+xvusVGg)em|^!(z4((VFemIE4pEvO}PD73n!ly0w^4x7cU20mE*tW^V_g4d?Q zX5YN}K+wJ0!O&7$w_Ii}2G0HLMjSJLS$micm-i=E7tT!~$0l|tFQM3KVX#=VvTHw?R2{#2N^ zS$9BEj*G6#Q`Fy_wF`A~%H5{&JzAhA1-dcdg~0taWSu_EGw#i`Jlo->)dRmh8d@mp jR{-3Nb$|>n_`AFVdH%;nDw zX5YN}LD0|kgpLg2w9Ap%1L8)vZqUy*84=HDOYE-)0pSO1Z^t8q_-%>J0!O&7$ugIHt^F0HLMjchc!Bmic;_i=E7tT!~$0l|tD)qDbLk>t0KN8-`t2e=5wo ztUDkn$3@rWIqL5(+J(9~<*upxh!*Hcfi4ET5aMnRS*K6)jQi(Wp6zkd>VYx(prD1a jeg(i?tOI0t!QbTrFx0;$l*$nZ00000NkvXXu0mjfU(dW0 diff --git a/graphics/object_events/pics/pokemon/followers/rapidash.png b/graphics/object_events/pics/pokemon/followers/rapidash.png index 974d681994545f4500a922cb7dc5cde93a9b6138..728113713dd2b743c159b2ea60a468e5731e2a37 100644 GIT binary patch delta 868 zcmV-q1DpJn2bu?vFD_9zA@Sjp)m>R>G_#CQ2_w~NjWL`Q6X_* zLAl9!En%XXkzE*n5J^NqR7i>Kl|O6SKp4hvJkVj#W(fKe?;sHyeF2+(84VJ|H4^S{ zgXN_|yJzdNl3?2Grh<`fW^E`L=NxDJ%$(O`zxf8<7p>a}EvN z7xRRMdW4tZeLi1yG8qOmpAWkjvx}VexkJHBGDIlyqS#q>GJ!A%XTuJ@!S{nq=)#gE z!=kROba%Rc>E_hZDRgmkySMY4Z+gj@()QQqhr^dmH*YPLnO(fH59e#)$ZD<(adWi? zj$;dkDo2oHAa3Dc%~^9!&)0Q}RDu;(hBRmm4gk-hfx^)sh$Msfgd5xeK zT5`~?EBXZHM^QjwV&ySE}-5yTGIIsFmpm7vJY4xuyxhy+2Ew^pdH zME2N;d*sM;;9x%G`B6~idXf(<*KAO&wG2Pjw!Fma!Y09ngJ&w*j9 zhxLbHay4y_1kwF8xio*af;6(-sVxM!Dj4E_Ho(@sO>QEOwQZkH*us3`UzlJ&LF8RK zAECtxy$$t;KdY?ORir+Z_3Am{Tb56 zLV)=QX*_`TUjMKoW{QDK3(sd4#HA#q_rxygBKmAz}*Kp4iwE#^Rr7J(sy8{woTn_q+w@#Lk8CkxdG zvZ%uuL6%~YEcqjJc9FTcbm*M1ixbrj2K`ahhkakI5(*hQ^vw|ebh_tx?n8Hm@xT6+ z!c1kBzO}xkC^Fi8+W?rT2AQQ9(5~Wut-p295@Sp2Ppw3MZMW4CYp-kLEjz^e2om)L zs%C5T_8Cee77{`x{;VapJb|)>}O6q$O*(HpIuL9S8zX zGSoSTB7u#>qn%(gxO~_(Tcj4Oxi(~!8!Q0sWCM-!5zQ5Y{fRI*2Y`KAsW*ZZ?^wl@ zk1PKM?pIkrW8{;)SmTnjYq92z3lJIg?ym(U=3761XW*}71C3Gem`r7ZD|>Zh6TUBC z#Ei5&4HA{bw{`A=@AZU$&M0JE#UP?5N6uj%fJfM;%&G-t<}2^y0J$WnbKlRbt;|t; z5*|2r16a7Xgd7BQZbmt({&;_#4QEGUC4j`+o8k_@_g5K7(m(J)Ft}0;6h^_G*vgk& z@nMdC%))S>s;JrfIyW7l$YFS7ylhw!EYE^fJ2!$ZYvaR{cgGVDTQ!R*LEx4j)>H%t zDi#JEa3KKqeJb9sm4N$TiU>e?)0TRx`D1af?!`98P zc%JbkG1z=oJh`8_Aj`dQ=1BpbONKoU&=1dliqkxb`L=ha@!Gu=Hw>Lm4fH`e{?=my z&En$&Y^}X20B^=+fM-u!;_>Hss-vXGoJb*c2sE2x{5J5jT<|I`+=%orK pz8Ij~`O?3-ij7RK*J}Y@s9)$7P^*dL*GK>W002ovPDHLkV1j(`osa+k diff --git a/graphics/object_events/pics/pokemon/followers/rhyhorn.png b/graphics/object_events/pics/pokemon/followers/rhyhorn.png index 78faf7323823f376cb0a990a415d7689934d3f33..0a2c6a992c7b440bb3c22944f4226a8e494cf929 100644 GIT binary patch delta 582 zcmV-M0=fP41p5S#EHPoJ5y{EPK|w)5nNevG8EMgZiQysX>G=Tx0l6_5L18hGk&%fZ zIdO4uv9YlidrnW0T^N7yNkl%U$8wfXs7aIrFPRM5HpOTI-%J`Z>O;QMLlJN;=|zk^0{A_3wPem+XRn;J zue_6FTEF9g%U*vpqiT%T)0SQWDdg5nfvWWyBIh0o`0WA)x6UH{%mc1z&$wwDvS~0KL~#QNS^Eo!E7) z_8Xanw2{{{o1D!&9cqVC!s*skCu3b5-Jz?UjjV26)PZ$&4M+e`lc)qZvv58KCbp%( zZCPQRxCeHv{Q$+Y>lVt6x_}Ncak@DYc3{RS+RgS1tuNkEG91B+LPM U7-Dum000UA07*qoM6N<$f{tn+F8}}l delta 575 zcmV-F0>J(I1oQ-uEHROhk;%!)K|w(Q0Rf32IqB*7adC06v9SOE000000000000000 z000000001k|9Rt)T^N7rNkl3< zWkvahBTlj0@}rW_5M*I1lnOWesAA5GT4JDI=Z--noC*sUQ=y4b-a#EF3i^ z8RtLf&fl<5yP^y^A@kPuZcTR{A%`+-8wgB`2P~bS*`dKGT528woNhGz&DeHOk!UgL|+D6NPJP_K+JwmT`d6$*V!v4?JFE4n%3{Q zhiXvis8i$hw55NSKn%GxQ=o3WW(i^(2Sx$t^E3fy0MS#>HRG`rg1xS^C~Te~keScZ z1o|h2(N!{vAXznz2?_Ox3%Ai`2HIR?Sd~WT6-GWv)F$LtTEsiyG|XtR`^W-O4`Wl znN7}To({DmDfx8ks*|ywwTM_oY2xjNk(DLXLZ6zyhvhSnGFM$hl;{4P7-pY-qR1G~?^w)5vC<^TWy N07*qoM6LruV1mIc6)OM$ diff --git a/graphics/object_events/pics/pokemon/followers/shuppet.png b/graphics/object_events/pics/pokemon/followers/shuppet.png index e4e30755ae08ae9b8dea4f9c4e18d66434ef6517..fb9f6d56806f767fd620ccfe0eb6baefbfbbadb6 100644 GIT binary patch delta 468 zcmV;_0W1E11d0TZEHQau8A&-2VQGOWF+pJw5y_!30RaJ_fhoZ`Ie~$pK}lheAt6zL z$)TaaF;STijc3J?T^N6WNkl*Y`zZbII(7vAJ$qkg(!s~@>d?kN_2}YP7QH-HcwQCI7gj|34<-LgWgHRWV#u-2M zd@Y>W0oz)yI9DRdXr=jFj5AS+-%dj_WGm#lsE%>&m5vzajlR4c24Tqd24;%KICCS6 z@Q(%vrhOvLQybW*MbEqeKHD3%YsR(^G`n~Wcju12p=ZRznFbGki4M6V4K&14J1WPG{KMP2`p~5NXBXTeiS_qDW zYAo*#Ogi5OlA<6Oz%PJ14p9mvbtScTC`tH#{^I{Ww3-;^Kb#L+aR5*MUEE&)0000< KMNUMnLSTZ|A=9k@ delta 458 zcmV;*0X6=L1b_sPEHTNUF=1(e0RaI)Nnufe$tf{Gfq|i+p}{dxnE(I)0000000000 z000000000I-zc#5+$!U+Fp02A8B;yks1 zy;?TH8{o6Oq2CG7LzI)1&{>W%Klhc$24ToHua9ZIDB}FgSJ^hgNxrBKo1qu7O~=!$ z8;0VIVfWRe;^=?Ad1WmQ>~kQ2Ixn5+mOIanDKjg|=%r3mS~&eQO|yHSPyqKsHyjSA z^>T!unK@5HbAUmJ5^Vr}KL$>zcO;ln8vI#+>J7C{K_8KW3DZJwBt&C(cVNEpeLx8c zf&u&jxZ@BZ&=FTsdWVvP|K~6M??Z}d{=@kILLZ_=pbHLKkpKVy07*qoM6N<$f~2d` AivR!s diff --git a/graphics/object_events/pics/pokemon/followers/silcoon.png b/graphics/object_events/pics/pokemon/followers/silcoon.png index 9ab4c7665e4392085c397cb99a52f474fd2ebbaa..595d02ea6e2c7badd6df2e90f7551ca5bc20964c 100644 GIT binary patch delta 366 zcmV-!0g?Wo1Em9yEHMEA0Z~DD(aGt7Avy7BX`z|Pd1;~P>G`=aNr8chQBhI3xvAmd z(EtDd0000XR2J%yT^N5GNklZrE5Cu@X4NZK29ETgYi*q;E4wh)rM7T&n z!_E{g(%AFwk{J+q7R3f3rHS^tdb9gSU{2>Fh#>le1R6}S#%r7uTrXD=r~I0t9&_3S&MKW|;a zovZK_;9h_1cD8*3f9Jtlyjd3tMV5X?Rp(W7II<<%?m%^3dW-X?em4Dd@7~fot8+c0 zTX|&5`ol)A&v!Cin49ufuZx|*U5?#mqm5>>&{LPYp=PnCF8^(Q00^vW)pHCP^Z)<= M07*qoM6N<$g7yWm;s5{u delta 361 zcmZ3=ynuOvj$vbCXJBC9&Yde86)hPV89!!bK74qQ0S7ShRZyE4D^V}z>EamT(fRhG zVScj%59}pB%HGZ^mK!g9|DN5fV0VS3<;v1s(_enRyIEmP zm?jwf*YLmnHf`f_z1te>tIjgNZ}@EMKULSVC9tx2Px-Url!u?sY*K3$UGjmgxA(@O zqic$+l^-pIrTSR3ma(gTsyAnQSf}DZ;!#0X+xAZm3jEl^}2D- w-J5sI>^|!#eKm36a=mirvq}E3|8Df79ppEl~J*y85}Sb4q9e0QH2d`~Uy| diff --git a/graphics/object_events/pics/pokemon/followers/skitty.png b/graphics/object_events/pics/pokemon/followers/skitty.png index 7e3a386fc339917144e8806224d5159e9bae8791..becb58b41ea5fc3cb5d0001aca47378c20ee0200 100644 GIT binary patch delta 482 zcmV<80UiF61egSnEHMEA0dY|=>FN1FAqnx(q0zB%nQ=i`IT_KRNntrT`Qd?qX-WBs znXyq>IXPKtHP4qH5C-7Mb;)7(*!uOGJqn?iqp1cwuR?m% zppa{tiFmBADgFW5jURQhI@;3qmRAs-Om>nPM1VSV>eQ+8cX99dw~68?q8;qNS)cOp zf_=b*tLWqBa4IXPJY0RaF2000000000000000 z000000002N*CUUST^N6fNkleQ)I=kMa&@oy7O!jQIi_-Ad(rw8_d zN}Rsq^hq-jNC4Ga5(bt?qn+*Yi@kP8nk5*icT6I};ES^1d8>c6^+XIKV+Dqpz(oIW zNf}W$bS5ETa7C~and;?)VUGe)EF@u1L;=903xvTvjhqsO{Yp2?UgdRr7eWnCoXBb5k{4X4R`o(@UqK65&9dOLX8RDQ#fQxszI6e3{K3z%bJg}?^=;^ky^(nVD6k>p${*B~`L@>Of&a<}gjKbh T;282C00000NkvXXu0mjfP=(mr diff --git a/graphics/object_events/pics/pokemon/followers/slugma.png b/graphics/object_events/pics/pokemon/followers/slugma.png index 5a422f95c71fd89396ac11741aeba9a188c39805..9e3c55bfd766472476c4caaf009ea9a6884ce8ad 100644 GIT binary patch delta 613 zcmV-r0-F7k1)2qrEHT+}QL&+6*|~vPQ9+T3Spfk7;mMh~Q7Orh5urI5NdW=bVL`!3 zDR~(Y>CtK8G|6s}T^N55NklJpggT@oDdDp@QeC^|jS~3<=Xq^^#xQo%O*h^2kCOeD2cti>uldgc zc`^L_kqWN+zsU!#&;Duf;tZVkm)2RSAK(KsEg4sO1k~k|$jpDd-?_Zp3!DHs>V?u| z2_lpdt687A0b&y11398nNIdKia|q^qUR|1}fL2ZdT%f|T{~!TsL<@61ttBnE$YbRM zPJ!zA7na@VS&F?#=^QUmVo7LOq0n0+A1Iaw{dicADK?1PV8&-`8q0RXeymXk4={X)A%8I%2fqm7{ zc~IB;)q;AyUkym!ym#eh42WKq52-Vn4}f?58Wfg^u_$4#gz0#p`2Qx8CjA`Cwcvw%QIvk+e}w z^YaQ?Z`UbntO@2l%eGD6{9)T%&Km)#K_JJE$ZTU{r@x4_U0m@!Byp;iQXlqb1wG!l zE>z+0`)esuUiB>X-zoH|k<9HagHOFr|4+XG{UmkcAsCQx00000NkvXXu0mjf17;-` delta 606 zcmV-k0-^ny1(OAkEHTNE5urI5NdW-?0Rh=zLBUBWc^MJu(P;nx000000000000000 z000000000{?GR*H7ld=nScc}vV2St|!FqBn z1|Gnj{{2l*0uhzbpI9U$j9wV{8gbSho3)X z(#!m}@`bAt-w(`B!g)S#ol5xuzA%=W2_r{ARowG9n&+MCOT2%;iBOonz1`x8(nK#cJCS!VnhuflNZu!E#>*zeFtNmh4 zS?m{sQZ(;fu^a>P=gqBhuI3ZrO^(})Fc0?&Lq|jd^Y7mhA{0NnU6nGovZIjfRMBG| z5TRKB?1_Z;{4yNpNd=E|inS01znpm_f}?O0h_J~_O@x2O0!YdLq$xar9}P)ZE(3Ti zXo4>kpdrlYu#ZAALN{<_Gibk1AqjOEHSZ>89_mDIWZAw85xOj=>Y)&F)2amu_5tUNm*IJxhW~Bc_DdG z3E^Q$SxG658BR@+T^N6MNklkD& z$P$~Q&SKi+1d!^RMeZs&FC|FM3#&l_SWI$&L@z*Y^C$}@qJj+{XXK%9(wk$*^{I^V#>U#BXzoy(LbnjnQx!r*mD-aex#LD;y zvAZ1BH{1Ny?lkb!xw1G^wYgj5e!)8M4vprf-J|Y0OU?N#Rf8#7kf_GNIW)wl$<;I= zzPVsGrq5r-hI&+xI5>1XG+NL;k7u*-!+)4BGwL@|ZxRl85dZ)H07*qoM6N<$g6DPM A4gdfE delta 450 zcmV;z0X_bJ1o#7xEHSBhAvrM-v5^^R85wy|2>}5C;bBSXu_3uBDOpJ=0000000000 z000000001mC$G4XT^N6ENklC)>F;4PsPfNbH6g+Rqk|j(2Q3#*!5Y58w^N`IpWx2J5 z{riFd6(E1N+N(eDLtvL<_aQ9cb1j0*x^?XS`Iv#?Gc5oW04{%^r2q!tm$}PvXEkl| z0#KNTMeZsY3nWO!e5XMII7}*l+$=zD^CW$tVqXj&XXK%9((7Z$%&&^wy)vjON>=eu zJT_ypoj2{9eZ|Z_AG<%2N{`1h&YT7rw3j~Z^_UJsdh-8Vz*srO#{Qv*} diff --git a/graphics/object_events/pics/pokemon/followers/steelix.png b/graphics/object_events/pics/pokemon/followers/steelix.png index b46691e191966ca15f22b2cdcca9686d7aadc4d8..f79a7d193a6d90d78a387ed2e126c7e00a505f2e 100644 GIT binary patch delta 1583 zcmV+~2GIH34BZTnEHTk}Y3Z@KSxG_Zu{rV4*`Z-+0RaK&>G@fCk)gTCF+owm(c!^4 zIf0p}00022ZTbz7T^N7UNkl13tSXqj$#U?4xn?ie`>&CPz z_@>AdbaiY`eN7L&3$z42Lx=Wm5_D%Iv_*;*(0GkqEQiv3L(UI5n@uvwB$G@s$t06Z zGRY*9OftzNlT0$nB$G_?&%|zLGill3>rl}7uZr}}+T61iHhzC;E8qQ_CjB)*0AmIL z7H0Kb0ff4J8Buq)FDH%ni5ZeSe69w#T343<-D+CDA{Y;N9 zZ^OPCv@bCOE*euv&Z$oa09xPn-x)xiM^00QkcLJOJC_3|7C3joLd_{eUN5e2yd=<#z{lf%0QIO7Kv^z<4H%&oOP zSoqS%0+6q>ws8nZucF+**=snrjElw;)b1I;lrLW(V)K6tuqGW?AH2_cIH$M@4-`P| zT?)`5fTICw^e(#ivThlGVFdxExB;Ba=4BWpN7LT`E{1%6godMmn5odhmo5^xeOi1y z<~iJEG{A8KSNpgi9acbqOR(>Zze#{%gK*Fv3mQNoK!ek}06^@r3ZvKKcnIYsWq^eZ zhN$satm%Is98nP7o6QZN@GsXW_2~I4fbsMTtnDpP5{hYK-wZQ$k^c~sHiIst+ z)y8a&Ir;oih0?4vGHwpqJib(rbEE4c9HCkmCW#0HI2#0D5^Y*7iU2@w@#Jv-%e}>J z34pe5RADw>ghkq%b_;TaR_iN(T|LtFVH(i=rOFM;Ljw+*gy4|_7t zeXBsfV7|sWafFj4n+;)X4Vw+v9Sa~TjDuy&9th%4CQ5Go;Bcsy)|f(POptz6pfmaW z^sz>OkM>B7%Z+`D0H?S0nk_U@NI;$j6iSsjmwJCv3l(}GZ}oqLd5FYb#cI!WbG6S`t0M0kl2D%AWwCJn zbYUE@b4zqk%D3||hKN#QCob%l7QD{R#aM6{zWS4X^XC3NH1q<({re9e^t%&xpui}N z@-`>S>{YOxXx-S6*oI7X{ev8qJMEn&3f1)m02XuQso0XU6U?yK(C!L;7nds1JOF

xoO` zTvLt7xWs0K1QdZlq5br173_~Om&`2l^r~Sm9mL(t;=5f&c1m9WtSwbg5RQvuui`BS zh+9A@bbzF1S1RlQJX6J-d!+Ii<6?iYziTuOM=l>cwa-o71`xKR@{8bm8nDt0nzxlD zJzLtP_j!h?j+iaNzob?XW1oOM=5dS>JAAn~FY->QrsEP(>dcx2#P!2OfyX{>c9}XI z&tyx?Mh~M0Dy=JK36d7Ko*s(v+jE?@I;*H7MG#pojNMAh0OAHyQKZ;(1lu8x+e2s&C8tLVB( zk)HjNsUINiowgwGu{*T0Nzk2<(-tXOK(kpS2#3^sL(UI5nT#^ZD5H!r$|$3ZGRi2U zj55k7ql_}jD5H$>&%`b#6Jgom%TUz$uZjrXS{+ym%P_N9IRAf}CjB)*0AmILre^+K z0i?VBGUC?PUrx#prt`pBC;|fNzyp4^;cqK6P}>GL6D1sM4hMGj3j~OA{(&B!U57(9 zXkTNv?|*|rb8JI90MLc5|IPsJcw>i#6eMhW@T`v;&~UtC`6hQy09$hS#r_jO!2qII z7fypgGOU0AfPa5@fI9#lKs*^33erWzC%$mrv*y9h%=4Nx|CT~^1=!Li%DXE-!q{Kz zgU1k62(Tvz9F%bkRnEYKp#^|lzk6Vh$PEQC2k7xKv$ds1KzbL&0**n!v143xOTn$408IY;1F|+x0QY~S1B-14Ne{;scj1l#(80F= z9Rhe7pg`}Ui%<6*12C*0!K7D!qggx;gJx&?E5ON+->=YcG!QctTKL>W5|2-ZpT|6h z$BYKpE#P7w7o@`q2ylw_9r14xAYC9F^t+S>5C~A>^m7CtPFaT08*n^^@{BUT!U99o z1T5Ah-z|Ry8G>0{0n+e%kJ^BqzW|s(f56(aLieaLSgM~Bw#=q@K4;-f_H%M>U}lvu zi=8Idzp0R$xkARpR+)$A3Swhav4b6CQ^OR2XnZvSArEoRo3R3%K1eo>$^`DXvR zK!DeFM~#bxeTM-1cf~zhXsVci0u3mg%QcsPqF@T^kH+9ZPUt=SN`YQPz)!y;z;6vz zNHKqj9ezQ8Uw?)b3*g$2Z07XpGBq<7yyH8uDkga_DrxCL^+loL0P>FjhmXacEXBqC zO#|?zh810@W1>l1o#o7^Ep2cvo3RAKW=e+yy-?Hl&d&-=p%C!s7VuELX8=AV8`!y* zEPz94r=*!zQz!7?$(V9`=u$bv+^|-oHadId{A%SKE8yK-avSK`RbK=zvnI#7^Ri& zG+AaZg6%}-Z(WIP%v6_uki%l7f>%VLx_kh@Vy@h$OLBID85SGbRmz{@+*OJPK*WFc z7JyCF^;y6&xsp0`-JS2J_A^ryQm=jn$ZZZUUGnV z1e`+$2zqwr;u*j@Rn56axR5X|mWO|Jsc^XRdhpi1F}jN&Y)2KQ(f2f9rb;w#DRO$Y zu(J?!f~k&}E#rR)f&K@yenv$hWjV+;iUF?b><2-?s2X2%4hVrzzn4@nX>?R!VrS&$D6L`%!68T z@6WRBH>OfI0EEgs#u0mhupY--aej5ig}I$ zJ`u!o$hDu;rDI!1Viq?6_}S1{FoxyK;j{WHNkBL_P|T3{EvS8oxKmfXxf)nH64L@A zZ75(WFEkdU%h!KskU%OIfQ!UK?FVmedB2_)dZVc$@fe^`&&iqcof z8WZ69CeWIKr9=9Y6uy<=l&_AnchIT?d1Mja=+oHGBJrD!$cs@ zaO1)+%TkcIQZIz*KduUwy_F;95suX?D3DeDr_r7%b3$rYg}w5)6QqyK=W0 z7EB|_M42WY^2g{YyNh=>D_oH8-vV=;-Nh&Wk^i9vGEt;j%IGc#{4Lerr;$t~nHBN= zQ{;S^U|9J$b;UnEJT~v0$V6^4VACLKS|`FpaYLMW&Dppt*Ab+-ah;I!IKDClDv_a2 z15=lY8e&*)QW~lkpS#TXoZ=1q`C}qN9X~R4GZ81g+xjcZ&Z0k5twfyDvvo6(Af_+) ucYz44M1+L4ZYO%0_{G&q^bab0=DFYFHDu>CzZTO#S&^|xQE73p(Lr&U0RaK|`T41_!7)*J0000000000 z0000000005OcjlhT^N5!Nklh;FlLqqAv#>b|k}m9D*_k&pW+t)Pr4)MbA-L~-GvE7tQCUI`b*Muf z>c1&xMehGbH>+M9J?YOc}H|xU|n4{ciE5tkX5^;UB1?GR~lhIa)cj_hLdS3M> zKd*{mts#knS9g4Ltzhv*OeY zZZQ$ABUZ)^bb_GYW$#OYl%NjcGvLeSAR9vFkC}f4S*$i#%yx49wt3xWr(!+{;RhxH zafTVE9oKa^i6`{*lIcC6bK-YQN~Ph~m)HW_st7cT-?V>wul-XBOEj=DnP@2pdO+Qw zJ3Q{DR3V8(u_ErW$LLGDi$~v&aY3^A6sTtpFJ5$R*dKBr5{0t0s58v-^~j>~!dxU0 z%#wKXEwW!tFsyi-s-ln2Z?vzLNaPiR`)U4dwdw2-6Ga7a>=$Pv*KLQ8CE9gD&ZFpy zHjs%leVStHx=2(I`xCcVPwt{~kNWygfjtF${WcM?>~*N?dLl-AI$EC@b_V^nDkWl^ zcc!i<;>6Aa{#_tKDG?#1#Ac%X#1F1gqJL21{YS8V0ae!c`-D9Y?EnA(07*qoM6N<$ Ef?;$xasU7T diff --git a/graphics/object_events/pics/pokemon/followers/togetic.png b/graphics/object_events/pics/pokemon/followers/togetic.png index 820d1ecbc1169087bc71e3126505b54e3f466ac4..c51ec204fdca78f46ff7cb96927170da905fa908 100644 GIT binary patch delta 701 zcmV;u0z&=k1@Q%tEHMEA0YN!IX;FFU>G`pdxq)ekVM%GpvDtZHnSqg!DKS}Lso^Op zDcMn3p|ROuECo7|T^N67NklC8E5XbFV2olH^NIdFT>cwlzD`=|g>Ybd}zPq$3SvvI$2Hi<_|DSZSqv+ed?W;^*GTHvRJVBLT zkRRSDP@GSoeS1a_SF9nma=G2Y(r!OYpv&EQWB1fWiG<<;mO_6`q?0uy>m{3&v-k@n zFEmbxgklX)?wOe2TLG-b1d>Q~@$>^Cp&08qU}C$XXrzE3QZ9uQn)ivM;$p*c9TS8C zB!M7`3~W|pqZyG@T!dV*jSMPsqf-)LfrKt%L{jk#i-YXRu4+yaa3Yipkdpb7NGhJq z0Av?MRRT#ystSLiNISlW5*-weS0M)Qxe}LIU&A#$7eRyyfYxV3onqxj-f89Y9T}rp zJ9BP66jin(Du?b?7W-b&VIVp>I>oz|^pWzm-Iq*HcDugW4VnzJfyninpbS{o;A@Cm zBr44@j*82+U`Lo1tWk}J*0nC{cfIl%5-l>H_X#1x2grZ1ZhdQpO+>}TFga`pEHh7! za1km(34U@I#}1y?H~1O_gti<6#2%Keg{+S&hY3j!n76v|o)n17!oia(|Mre~N0d(b zxXB)BsNlAb&kjU=92NV9pRp7iVbbD z2e|vmuUdcn3Qx~u+!2u}`mO#!??H@218=98HMRbI&%XU=bKgwJP!i#}zp@O0=!{}r z$&b-)x}Yve6q$WN*1XX@Pet4%q zaXx|e?HNH_v4+&j<#qvcyZA7HE|-&;T~QY$5{e6$3pJ5WCXjzj=4@8Z;?Iyg(>Ns( ziZwvFVq$`C3NRfLNFvq6(+`M*Vyx$YiS3G_kphB9xfD`p-Y1fZiy6yxOb`l?1cE3s zFq@K%W<*kP5pu~kGN{OnPDz9X61s>HNyQs14zee^syRu(iBK{?O6F4{sd%#ikX;m2 z2_zY*Du^QO_#%HwbWl8Ag&4r+N?c}r4cGKs1Q99#TAvYhij^OEca_hVWQ=C*#<}fK zRN0QG9J*Us?0ZFrf#~Sy6faxSN6OoFRWd!<-Q;RHXfn_SBG+$%GGJYUuOV)cs5Hko zDlXfC9bsCqMl~K<*Sf6V^~z^Rw9kCrCxi?iAji7!tr>qd5fvB1t~uQM&HqCVQx% zg1bJxIS}=6RO}m)PnjAlJ%cD(+(Z43Olbnq)2QHYUBj>4I5rJl-=SVmY-p1`!2M5t z)#4X;d?kA0j)+XrZ}ks)4`L)5css?csrBt|_U%X8`euEG2+#e6We7xP6zfWUjF!7S zbxESgtO^uRkCw3hX(f|Me07*qoM6N<$f-JE!9{>OV diff --git a/graphics/object_events/pics/pokemon/followers/torchic.png b/graphics/object_events/pics/pokemon/followers/torchic.png index afaeba264d1fe60bf56af75d139229f40c0c77b6..e56e3f05e837dc3a2d69153c9bf93de21a1b1b2a 100644 GIT binary patch delta 407 zcmV;I0cifr1JMJJFD^+z5vifc0RaJ_Q4w)53Av$JacME>>G}E5VaaI`c~KFekx}WX z5z%1*T!XN|kzE*nM@d9MR7i>K(>-d#Fcb%H4I0%!kg=s#aX^!4@!5QYf~SYwT)_rU zMrz3_l1`mM7el5lYSaX(Cq;5gDHP)W_RIUS!69VMoH=tYC`_g}RhMmg`jDZ$PAY}^YBH`~w#pmGg=&|q&9W&r3Fo*;Myy4%8Q z%COc|)JnsfyG`jw_ul8gu-1LTo#HoL8!_u%&{t&b?I+!}w*Z@Rn?=MOm)t$zdvd{q zDXszh)T@}VX z?)x+VE17a$BUK%@N5Ti^M02w5qyzFz0?(2=-YxTvsC&x8+VBx%$i6vOU6%m;4F*SEZxptS%1002ovPDHLkV1hgf B!BGGJ delta 402 zcmcb}e1>^~zTV51KN%SrD+2`=P7HjxQt;=+#EXfH4A{V>A*$s@ia)198|vWmTg{e+thc9!ldHv+q zb)x%MuI`BZ+j37SJKuig`n{|-rrg$1TDSAbJI4Eyxz&6MbwB*KFo=48ez!!R?uSB! z$2Pa!eNP>paPs`_inBk~Rv-9Wn2>qQsDHMtRP(=#zL)Dv-WA?o&UoYG6!w+BX0#f< zi`15_C~7R_R#+?+6#k+q-8x{#_uVa>54vq$Eq!;v>AqQr*^A9?kCulp-BtFvQ~!1I t)&s7swZHs+EcmYd)9tUL;hTSlYZz`i<~=<8vr!%t(4MY-F6*2UngIN2z^?!R diff --git a/graphics/object_events/pics/pokemon/followers/unown!.png b/graphics/object_events/pics/pokemon/followers/unown!.png index b78e0db9e81227a81be98d16b4d6135d6d6ac718..ba968eccf54ef3b31e2c9f5894d7bfdbe95643fa 100644 GIT binary patch delta 226 zcmV<803H9A0-6GlEHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N6mNkl>Yq$qTsjP~!S& z)3o9u`P*xL^0qo>u~;mY?=p4Fv0L25$He+Mc9DyZp|KQt1$eNBSC}FHM9?ZptP#X~ z@i1!yDQ6a$mO3j06A}4gj&Kn9S(s_|62BK5rRnStE$#d6+eVW=Uez cZ)&OL20o=+>zS{7nE(I)07*qoM6N<$f*~tqnE(I) delta 223 zcmbQmG@WUJjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?UQZXt5RcBcQx5Vr zDDb!@HYfFTzhG)P##+Lt|Hi)Q<1gl=343PzyS;dSt@)hI5jtY0%RkB%zY#0{Sg80{ zX7`Ds$5(DN`O5Vnf&aXL^S{mop_3w%Iesomyv8wYj%Uif*J}hS()td|JW%+wd4h#& z=Y8&T%3goM9y}{mo;dUM8bM{2K9e(2j+<3BzB1n$Qp~*Zg8W+n$8=AS!#!R7T-G@y GGywolds@B# diff --git a/graphics/object_events/pics/pokemon/followers/unowna.png b/graphics/object_events/pics/pokemon/followers/unowna.png index a16556c5ee26758a4979daeed6ae6835de691ef6..de577e3db18d2fc10c29679ad25aecb4f68a5e33 100644 GIT binary patch delta 263 zcmV+i0r>vB0>1)~EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N70Nkla-OZ8<;_L?InT1MZcbkgO}zyS?C~>Y>}vqL zU+T_11q@u)yPoE9?JFQ)E|2G>3EXlKIdVq<19OpLya5gs5Rgj?e=ndXnb%wUN%mai z$U#8%6<`AFlmT+?DPSNJr-deW6lCmc)Vm5481|lm?Zz1PuHQ7&)CZXeX`{F^YVH64 N002ovPDHLkV1gWHbF=^e delta 260 zcmdnbw1;Vejv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?O`a}}As(G?rx@}b zRuEu$$i98r(|!vt`NC7|llYgM{6Ak{_oh77bBk>B9V%JSsUeQu8zp3lBss+(jRZd)WUp_X+9gLP`doN6u!j)R#CPs*|a rP5ZiziLq_(@`T-nZF^sv^O}BT6e*Hd_r3Re3CMSzu6{1-oD!M<#Nuc! diff --git a/graphics/object_events/pics/pokemon/followers/unownb.png b/graphics/object_events/pics/pokemon/followers/unownb.png index 45d35e5d5b017259a647b1403867e31ec6820e21..bfcf2163a62a819f25753b3f61896909a55531b5 100644 GIT binary patch delta 291 zcmV+;0o?xB0^0(REHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7SNklu)-Bs273ncjctJE-(N9002ovPDHLkV1gdmdE)>8 delta 288 zcmcc3bc1Pvjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?bDl1aAs(G?r#SK* zQV?*RDQ(d9MalFXr?CD4@q)*H`xSb*XU2CqFWUX{<+IPTzZ(ZgHJyH1wDX^O-?upm z&i7g8EwYUV(#)Se3!dG%l%er-Rp;TDb@KBWI`%OyDcb+E%#ksBe#euUOe{eYF9|S6 zcs%1a5#VC{(ah--b^dsC%BH7E#pw(O4y@Vl&3fcc5W|627W_r0Hbx$>zO-`*!;-8O zx)%l@o%#mIeJ Vwf2uh!Y+`{Jzf1=);T3K0RZ74cgX+% diff --git a/graphics/object_events/pics/pokemon/followers/unownc.png b/graphics/object_events/pics/pokemon/followers/unownc.png index 857f2711ac157fe24e4918c9c0d11b6269178a2c..8adcabb3a73ffab7e468eb838da85452f99fcfa2 100644 GIT binary patch delta 342 zcmV-c0jd6p1B?TZEHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^D}=0!c(cR7i>Klrav&APhy>d@&@XsE1)d`b&<}DeBm%7wFPM z)k&)c+a!>7>42pSpKsnL3E*6>UcGw#Z4vO3Uz@^|bka^0u&H5PM1jQH;_PH%IJSj`1nZywYEUeaJ_|0 zOCbB+`*0{g0cr3b#^0000007*qoM6N<$g5s@_YXATM delta 339 zcmeBS?qr^zW5~$J=;#^w^5suWL&u#vcP3^|WWWsqejZ#sF;={u;lHPgV~9uR+bNEG zhZF={XG(t%zSMnXhq`K}yBtEl(@;1XnRq+>a`ENeZ8@5%xs7`s9KV|$#T2=D|GpsS z2BxOAk8d*nvI(8=mb}C&Z(pym;F=i6ti0s1^We=cWQAe5J_lIJCOUj?e>=I;(oS_ XDo0d%^LQk0f&$Ca)z4*}Q$iB}lp%9VwNJcJq!bq7mkxDJxHV~hicLx z!XJW6t8V=5WAc71z(hksLqkJ<6Kn8qV5~WSti?jOtS9&x^fe#{)>d5ucLo$d;(VI{ z9@{Aki~vMm0dm^Zcmq7VZtJ<=2q=KBWu>eo3)~x`B#*8D0LF3WeGZwoz}>TmOdSCT zjI-DP1NqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?8=fwXAs(G?r(EPc ztia>)mUlx-gvv{Xz`O4RLr?uvHhJmZ!r$bx`d?vv`^nuA4V`Tu@K0^pgZl>}iWwri zS_>lmKN!ErcHq-lyNl%=k4D3hpJvQ9+k(X;7(4bcJ=xOvk*%WQ=C$I3f&mQim%Spr z#desxc+QVyWa!y`Tqe&bzj1eZXsi{JfJFLMMz$Zm3=G|Tb$kp8_m{UuF^Yux^Vpp_ zrR@5k?(Nxy(GQ+q*xde*lOdrnmseo@TIB}}Vw)F+nw=9@czdy7vCA%Nfe$|dlYdk$ cdwF5&y@i|P*UCR+*$)Z>Pgg&ebxsLQ0MLDSHvj+t diff --git a/graphics/object_events/pics/pokemon/followers/unowne.png b/graphics/object_events/pics/pokemon/followers/unowne.png index 06af0bc4fb8859727f9e23a15b9e483589611518..078033eb9221fbd40becd0bdb1309fdce0d28824 100644 GIT binary patch delta 291 zcmV+;0o?xA0^0(REHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7SNklc0u-(f9&mf`Vg=vs pBEJDQhYBj!S^KiveVg`dqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?vz{)FAs(G?ryS%x zWWeM4m^VxF)m+IawiO1=3If0T83dbd?9VJv-SPAL6PvGp-9je?sR(tt{F8Wg(3?}? zoUh_d$=5S>@+sGFozqQR)c0ZQrtJ)3FE{AA%zGF+C)!Es{hMd=m_#m>?kf4|t5q%< zq4@N1u=#cllJAoU-k`{{nOJMKxyPUM+uA|b#Qy)FH z^=WW)U;G!M>+(*EA#u^s^R}!SG4eJKem(ffwePNL8FN~hsL8s`|5CUAHtWrK%J`2- UA+%+eK{CkWp00i_>zopr0E4}FApigX diff --git a/graphics/object_events/pics/pokemon/followers/unownf.png b/graphics/object_events/pics/pokemon/followers/unownf.png index f5ed82cea4b23f8c2128f8388e7fd31ef5267846..2be9dbd7f237c4b56faa422362fdc2f4c71afe2a 100644 GIT binary patch delta 323 zcmV-J0lfbA0{Q}wEHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7xNkl|5JcVW#a6P!X(%jB!*NnYDO076M8ly1 zmhfi`!A_OJQ+e#=4eJ#c)7910)%72e3x6bxmsEu1M8)h6fLLZON`T%@OW3FgVBmCr zP*Do>{;l)Ac2vv01j_JyS!7+Mz_lAVRo&080~jcS4i*}H4m5wF%>e}50+Tud8d(q9 zJ4pB4{RYH4C*V3WK-HcB4`x6>1GQs1f*iQrnK%vg6#)$7njE-y6`m&G(MMFg1V9xD z&_mD|KtN|HAO(8wngRrQfD{b?{IN%05rBLGh4)jynXd^jGJf-B^EmUr{7t)}J}_f; V3%p)9)Bpeg07(Z$PDHLkV1jsfiX8v| delta 320 zcmeyx^qpyfjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?x1KJJAs(G?r^NC# zD+sjQl(yjfsFeH5?~e2qaf8e~{{>g6d@{~xwfovwnUwJNSnA?qC8a>{xBbZ>dCtSC zqKTG4hQFB=rp@dYTCn}GkeL>fgvC9%kSR=i>tF9#uX}ZqexuRed3=%Kngws!!a~1) ze$BvkYRTkgxB1My8O03sjN1<^>1%MicK93LrP}J<%pcEj?l{L2P?~9VwRAi9)`q8d~?d0o3&VSf2<$psp=W`vrig z8$faQO#4It0>z(8rhO^^fOWog1FKzr3jm-__eVJ709<`D`}lFp830fxn}QC&Qvm?P z!2bhaBxSxHk3`^JFlPWjaZ5qt%?`c;5OoVEC3St><}m>X#BHi|#=rz1Kp}6pfNcX6 zfdAub-D{vm^sT9qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?8=fwXAs(G?r#SK* zGT>o(D}N;DO20^9f6_AdPiJ5h!MnfuC^)%X7u zV{lm8Uv2S(A*Qzc|Bo}040!>ouPJ<_~Ac;gy%f{|Y;MkH zaJkFmr578&z0!w)sc`nIxrPRe904b8>n7ZGV14laN7Q$z6@sl97?o(KE48QSs%=pF4N%Ow63f00TPi zx2{i&m8iez>EamT(fM|YE!SZKp4PoTlbRe}B$}|uO}VpNz$)z&>#i>WQ*R&i@Jva4 z@l4$4M*NR?pPx^u0)cAK9CuAW|IaaSu}JmO(X;oY{Xxq@8kiyThfW(~8rsKGv$v$ei>VS@Ue z_0oQ=hf>+5zjNT8xWVR%a^RsunJZ+#hV2P)*c+m{WlwBEEBpMV$C+6-xtyD9$S5sx XcJ~7LGyDQRAkTTa`njxgN@xNAvxa!d delta 296 zcmaFN^nhuCjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?Yo0ESAs(G?r+D)< z8}PVHmaYgnVym^}onV+ggZPVO-|d~|mI>Z$NEW-BD$xC8q4~qsAV-!z|&&pCzIepL zhScciRdWTo(x08W&6*Qt@j;1wK4)uv@xlc4J-OO`t%p+CroVIGo@j9Qs&e3=LzU}f zz=rJ!ao8K8x@AvnLM!|HrN^0BH@TcT*Z=f$nWNV0;_YnH*|}2u&fmIw<>|z`Tb|p< Xf7DY~KG`pS9TWndu6{1-oD!Muq# zmC-|=RYD-ePB$9q4ccOzGnq^#)9>U5a^5Yz<>4CjIq%XJ59iLKd9;AQ5x*d#F9Fi) z8P&O_fWURT#bz#-u>t^nxId;U@W@5v%oPO$`XC|m8StY509i%&eE~+YY}fio-nqz` zCjjXSK$m37dqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?HJ&bxAs(G?r&#kH zG7xZiD}5tyO1H|Q{ymSF3K*r{)wei^{yaI~l%q3gxpeYBeDMr=X8gdNm0{C|-%LV1DRJ9>dEDE1Vx~L8OKu18)bo=$8Kp%T6UF7;=V_nT P0Qtbv)z4*}Q$iB}KTup% diff --git a/graphics/object_events/pics/pokemon/followers/unownj.png b/graphics/object_events/pics/pokemon/followers/unownj.png index f9b89ef152cc7629445633b5a247e5c88ddd3215..d83ec466878654277fc668f2696a57e600cdcff0 100644 GIT binary patch delta 271 zcmV+q0r39A0>=W7EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N78Nklm~*`C8}IEe) VS5MTD0_gw%002ovPDHLkV1mJ4d4B)^ delta 267 zcmX@kbeL&^jv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?ot`d^As(G?rx@}b zR^V}Ue8sq-Wz%z>mAl*{_BvEI>g@b4ILqgXe8JtaulMcl@6oprXgdA0XlG1v;3=;v z&nc_ACoFo;n0f!1;s=K_zr*;|CT`uw%yYS@dj6yX#?OD3vvTO1KW@b$XK8%hhFPGN zU4mQuA?t_bObkg6|FdqGw8uZ@xVB~Svsuzy0umkJ4_O6@y&0L9Rjc_n_r8}q#y{QT ybd^4XLRIO3kOu8cJx%6mO&+_#*?sCKX0H%$y)U-v&-D0g?g~#$^q2OSoOg9O*170O4eBcWw&PhKO8<1qFrBlI1;+2@@bL z$c0##3%_sz+q6gk0000bcShyjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?L!K^Vz z4?;s24r$)Yzap}X*U*@giz_1WiAS}9u$n{61n!Ln;&l&Mj_HeE7s<1!e8&IYq2uwc z3E!sAJzf1= J);T3K0RWzDYJmU% diff --git a/graphics/object_events/pics/pokemon/followers/unownl.png b/graphics/object_events/pics/pokemon/followers/unownl.png index 08e4736c7496d665131a3b170fc08a017f67d4c6..b251060902103c79701596eb357578e3743d2638 100644 GIT binary patch delta 273 zcmV+s0q*|B0?7i9EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7ANklqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?J)SO(As(G?CmV7d zHV|MboxuLWVaIoAnM=~LKOH_Xn*aMREMyv%XQ}CR=U!M`*cpjNrw<@Wt~$(69BaG BXj=dP diff --git a/graphics/object_events/pics/pokemon/followers/unownm.png b/graphics/object_events/pics/pokemon/followers/unownm.png index 313e7d9743d0d1e6eb70e88d7552d848037f3e3e..80b421e4bf6771d5cb7453303015b162cb496f7c 100644 GIT binary patch delta 289 zcmV++0p9-A0@(tPEHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7QNkl{M8ci{7WzSk zuqiw=Ktdj@4uFK*f8CNeU$<|`!bNn?014AWm5@EuOvt=Fz`~>gy_PlJ9!Q6<{*XSW njv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?)1EGlAs(G?r&#kH zG7xaNF2sJLbIlh^XMw#_Ma3JqFBJS&esDpc|6tiA#mZeLyYFelPn-t=^=Cb074}WF zK6Iye;p_*EE2s9)dbQ)ZQzIW&?$fW0J}Zn?ESOp?RCK=8?_-TdROM+0t(Kn8u5-n9 z#MmdKI;Vst09zbAE_w*UP=L8l6JtjJ0!ePyKpHUh$(NTO0f>DIIL)W3uYlR-L+Eh{Kp+k0i&ufkXJ+5^ z2LPmj2d@Hu3IHGm{vQBG66d3SB-v*!z5o#W2G9w6QGxkVuu&-8 zmqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?Yo0ESAs(G?ryS%x zWWeJ(nfH;_E7>rOM{-w_7$X|EfA>51ux8pBsup~;kJ!5Jcb&9r*|`*>nLcW+c2jN% ztzE_Q==JOaiQ(TFV&?t%_p<+k>W%%(>|7!S3mBH37j|}MV6wft?qK$TJL&V|>R1%M z={~TKUA>Q~>-_Qy!VM1g@j2%_S<~jv48AVUaN)d-y6BH!1_r|q{~0VMS;&4-7M#EH z2aCfSX$SW?9;~O9KDZ*@;IMOAAoH$>_}BSN3>rr_vy~Xyvh8B}WV5E}YF5M=A%@kd d)#5YlUh+8{Rn<y7W*5 zbqIVCLmPFoqYUPS_a&0pIV&qGE33a1iJao24Y}%c&dVC~>GjCi#hqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?^PVn_As(G?ryS%x ztia>?k!@ScCXZG31jEEL#9u7^-5(IZ-{_x|vG`uWl;+BZwVf(udDqrNZch8V*5irD z`&^IQ%>`#TQ+NM6rSNCx@gG4pJFjnddUWTc#(VY!6C&dLrv<)q?5Nci*}f)R&1}a# zvwQpw3j=EIIA6Se=t!t(jc{s%QWngx&U=0237vh(X|s$$eg%JUOQg(JKKBq9X6b2E+%|xWC(wszkKOQ_O`n^i|-x% Wr1opS&mlgL*F9bRT-G@yGywpzPJ534 diff --git a/graphics/object_events/pics/pokemon/followers/unownp.png b/graphics/object_events/pics/pokemon/followers/unownp.png index 79bd00f6b4263e3ecc368de6b39e7342627a449a..e0ec06ad8d244f57c9646650834e471726b8864d 100644 GIT binary patch delta 261 zcmV+g0s8*90=)u|EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N6}NklZe<*?3rez2plY**#`5KVs z>8X4P%>Kb!ZW%yeyx+!MV9uF&%_9KO*MM;yzXwV1O0H9{au^`yEw>CH zkRt1!UIH;U4IogYnX7^T5PcPh9W1;t#|A>%E1(Y?9qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?b)GJcAs(G?rv!2} z8wj}El}=H8qIB!O*LHSI(f9Q&X7X3xn6z#ED^#}6=-dZ3r6sRp^roLKjq^S7mdP;o zx^Ws?!hEs63t7@;PqVA>;ac_UX|_WZAOBPDgm0U3cBV2kek_tNZ?qJjXxh)<63=`r zaEpGUJ+FcQ`+vCu+BxPSj0|$901(cT{TBe(D?oIE z4*>KHp!e#$1puUvUVw$4p?Ny080E`{Cazh5;p$&a86}qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?8=fwXAs(G?r<~;oeuZj-aP+v&Z@PBp&(GNRPpHk zw9S?OJsPx`Tp2=K3zVPzvT``txN`opwyc4@+Wm3 fssEe){qZh_Hy*NIi{v>xL1EzO>gTe~DWM4fmSKW< diff --git a/graphics/object_events/pics/pokemon/followers/unownquestion.png b/graphics/object_events/pics/pokemon/followers/unownquestion.png index 93716026ac265cde20c7bf735b422615ab09d2b5..afbba73b0b55275cf3b9846117b48067dba35bb3 100644 GIT binary patch delta 273 zcmV+s0q*|90?7i9EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7ANkl*}oo#7~Qt8gdKrdv9T(|xk*)Uw4|{`z-39@Y!PJm z40lXdnGFI@M6sLkuW#G}exfOAd|vQ;MUBr2-2AvFm5F4w2$*8(W{co(Nn^`(JtF4~ XLELN0@Cepg00000NkvXXu0mjf(D{3! delta 268 zcmX@fbcAVwjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?U7jwEAs(G?r)(5F ztia=%$UNoq#mS!U|@7z$Bmy(k5r2ety3vQR$ zsWv$pJ*gA9?SC(=;diN!d=jR3aqF#BT-RfS{;C}~wAD%P$V(RYiP5drjb?9!0)oEU z<;u-q3FznzRXpe0v{A>0EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N71Nklc5AOwoLllWbB9T9iX8+ExVXp!8x@Px2!^dE+0q5nEySp651OVi8 zzD!Nvwu{KV7XV_f069rA-2gul01$=W3*bn~a@3xni0l-H0D(-TGMO_sK-@h70FtV< zfw<$HsokMBAhCA#ZR9}#0v}HUNcS=H_R6}WzOk!Efij9g(Lt}lWB O0000qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?&7LlfAs(G?r#NyQ zG7xZ0&zsPAp*!Txbe=c|{R_R{?VCa;Slw6gDN#IBv+L*I4{@AJTqb&`2>pEQ@##H} z^f#%1b=gJlg==`eNfpfMU%C5rrVoRI-t^CxSn_tSdRNV+@QrIix7cOg56X-Tfj{;# z^r@U@f62M&m0ux;fXAY4OV48FBX^Y<6goYmJFM@`yd_)3EaaVj-%U%<#DhKkOr>mdKI;Vst0C16KyZ`_I diff --git a/graphics/object_events/pics/pokemon/followers/unowns.png b/graphics/object_events/pics/pokemon/followers/unowns.png index 10bbc64fa82cc75e3d776e7cf6bfd9f1e27ea88e..286e583cf468263077002366de2b5ab1f6150be3 100644 GIT binary patch delta 327 zcmV-N0l5D90{#M!EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7#Nkl4Z8m^#Uv$ zs-#1)e+Za%=@3ttZ@o_<+c;OFMvWT(8}US^PCTP#0b(wJm=B;~z5}FqY9J~M1_;df zxh2I9CIArg9bn%@EF%3TcKsCt1X8oix=I35y39=xxMPq3hw*=*KUe~j&bLiB7$A_^ z>FJBWRcGc+x10cg)N-qG1^mhYfN1!;0bEHK@8v5=I`gJu$7LOu16^dVI#&Tx&$7Q} zfWWm#9#jL?+K+^3~<-bf!!N&+2CLuBM@`b|DZ-O ZUO|#=V^O8_#sCWd002ovPDHLkV1hQojJ5y( delta 323 zcmeyz^owbNjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?51uZLAs(G?ryBA# z8}PV3mKJEaVaXi&ony850`Y{0|J*fR2E37H^4nd~p?+rjJ@tvXb5;i~cI*AmTfZ<^ zd0yaV2E*wNXR0q4*fUJpZz3Sd#>}Gj=gOo%?3Wn@J~JoWuFz5Xd(1qylaVPiLOfQr z(J*$pBDal!N5kKW>+(8{^?}ciuao8x@VH#e7x`eB@#l5Xehdz?DuQ-0)ul2xnEbiR zux^QT{!i^rtIz9_kE_bgV4C}UfmJwT^7$eSV}}P}D*US&KMJWFNn&tdZ@zkP&WnR4 zk`I==x;o(<=h7&ig6kJL?@9;d6m04f?AZCTK0sMofBtsG`*+ezW`V-Slik(NWt~$( F69D5ce(V4M diff --git a/graphics/object_events/pics/pokemon/followers/unownt.png b/graphics/object_events/pics/pokemon/followers/unownt.png index e3ac1b55a343909dae4bd733cde9d9e71dbc61d6..cdeea26dd15ef104f02e86711edd072b4aad0d1f 100644 GIT binary patch delta 235 zcmbQww3umvj$vivLPyWYjXO_j8agIsHeS5>l97?o(KE48QSs%=pF4N%Ow63f00TPi zx2{i&m8hTT>EamT(fM|YAy3u^ZztqoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?sh%#5As(G?r)=bH zG2n4M%Vy^EWrLGIZOc)nJ51L%{O4G%y;0~hW9O;$)xRdz2U)l{3a~f^IR7)4Wv;e0 zPC~zb@a#lE4EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N75Nkl9={!c{dMDL|nlO>rpvsQ`pn_h##>Uk>almw3&l*M zS<71?a{Pq1X9$H7%PPu^{qrvaZrXP75P(R(>< S^h~z^0000qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>??Vc`jtcN$w+%7d>75T-G@yGywn@CT=?b diff --git a/graphics/object_events/pics/pokemon/followers/unownv.png b/graphics/object_events/pics/pokemon/followers/unownv.png index b3a740d58c1cb3411a8e4e31e2b08576ca218833..081d2cbbd84bc733482a3b0bb22379e6a4b1db77 100644 GIT binary patch delta 256 zcmV+b0ssE90=NQ@EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N6^NklhR4Vn?DhJ!6{-nMc2o#Z-tw4bJ?mz8?dsp*|z)}&# z4Ag$0KnJ#IDC}1isJUIBwnjNn09E?kk2q3L_HCRa1_-%@Z$-ft|xXG(dI~jAn`Cq3f>;_IQZG64BY@e`d}vs)%gzq0000qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?m7Xq+As(G?r#Nyk z8S=PZmR50|*?s20ErWyHFIexK`P;vsRGC-pSQoeA{JgmO-}Vaw8bY+Ddi~vc>f*N@ z_AB$*m^w3@v;`7&{r0aucJJyRr41p1M$B8~H7+#fO7Z;;WzEVH-?283PsCwq-FM|a zktu(z&P{Bpv|MnyXp`k9Hv8L8&&YLmoL$0XYR{CK+`nJ{$48cc>7ub>8!dwz4q2R; i*tEUfhOe$n)7d;jSLJq)+=1;NPkFlfxvXl97?o(KE48QSs%=pF4N%Ow63f00TPi zx2{i&m8jq1>EamT(fM|YA=hC89@o7ulbD=OB>EU;oGi3z?VDTFsAn6JE1nf85S_Ph z^1W}L&i?mnvq+a{OOz1(anL=TJNm~xASwP&z^Uxgv&W2)7B2%uy#AkNu#w+$K%IU4 zSyAS?+xbVh3@g9b9N&7ju-BM*#~uDPtbLPyANa&`ezRBIr;iR=M_NU#PMrI^?8DxO zVxiVc-if;k&)*iGAzx6qziplJyxnOHv-AyK&T4$PaNg>FuE#X>nf|6~hR<#Wd&kq& K&t;ucLK6Te<#mbx delta 259 zcmdnTw3}&yjv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?jh-%!As(G?ryS%x ztia>?ku6}M&ZJf4+F@cDVlS5d?hkNYnlyoF+0?2}yZ6?7u|KJJPO>dg!i}-+!^N9t z9_{}QBwg)T=G$a^{^$^G@p7YP&R>1z4>c#4QrNFN>tc+#7A??vL@w~zmg|;p3)335 zJ@#9AfVJ$4lK%;tm+JET?gfgui!L}8%?xjSe{@p&vJGEjPME)|{LA#2S#MqV{nACn q*LhlAar^8_OQ=}!d{zC#!c*Mc3d$D`We7KbJm=}^=d#Wzp$PzZJZ{kd diff --git a/graphics/object_events/pics/pokemon/followers/unownx.png b/graphics/object_events/pics/pokemon/followers/unownx.png index 301b9a22cb52707599761779e5ca9f102d9c1184..e368a92313afe824337308e1a32c7ea0c53db504 100644 GIT binary patch delta 264 zcmV+j0r&pA0>A>0EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N71Nkl9D7i)lfxz@ICK$ZrIGsYrPQ5^u z9;(V@`(qoCZbct5C@;L9n8-Pc#bU8o{x>X_ziGJ#igQP}#vIqEp1t}BPAC}~|Z00Ff6tLW^7YP?@&J~+%ndA$%N>vA-AOZ#e O0000qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?O`a}}As(G?CmV7d zHsEo6D}Cc&%6Z8ktMG^~OmA5?efj6U!szC|8*WRYFShfX;(o8LR&*|DV}#DM|GX!k z%16Cxd~`=pPq9rk<7brZ&DqvY`)m7r&x*2Yl)SFv4?cJPkT6H#JI>F)U7Z&er0K;3 zHaN|egrB diff --git a/graphics/object_events/pics/pokemon/followers/unowny.png b/graphics/object_events/pics/pokemon/followers/unowny.png index c9f2a702756f85306f9bd038929cc5c0da95b138..7646ae83e12f58508ef73b4e6dd804fd81ba39fd 100644 GIT binary patch delta 271 zcmV+q0r3990>=W7EHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N78NklFMd|`B&n4$%*9x6njB9n%ihBpFd8PdO;||^D)qz z7(ii|m#bB|o;N;$5PM0OZuht=T)C=loESi%Bu!b*giQk=#KBYF2jG=V%VqzSyt(SJ zZvevJ8nd1Wkuw7*#6wl?AjD2RMXgf<-wxF}Ga&Bmof&Y;?;h&ZKoD#0#NV{1k{1~> VX+H~ye24%5002ovPDHLkV1k>rdaM8d delta 266 zcmX@kbckt!jv*r>qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?9iA?ZAs(G?r#SL8 z8Hl+2&cEQ#QGKqVF!!>&{sQrW$A9}3)@_&^)Gk$CFC=z2`<{RY$HB)RD{TIIMd|O{ z5Yv#fo}+z5VTaCqJHKmHt{R^|8(y9x;gC3ET5(R%?z|cn#c#6=?&oKQ?cE2>ESoykO&=>J`Dvj!EU}|CY^ji`$l?T+Cxwc^>3PPgg&ebxsLQ04!c;1poj5 diff --git a/graphics/object_events/pics/pokemon/followers/unownz.png b/graphics/object_events/pics/pokemon/followers/unownz.png index fcc02602d70614846fb407ef51f6e121dbee18bc..4eddb404134d0820b0c751a5f2f4d7d0035f3894 100644 GIT binary patch delta 280 zcmV+z0q6ed0__5jEHQb3p+QMmvAM}9F+pKzfzjFN0RaI)NnwE@A?fM)xw*MvX^{W` z000000000iN7~nsT^N7kNklX&0H}4Y!Hl|mvUcLUdEKjW#=G2X=+d#`h1^Dh5lAd8VsEfc0H040_ z6#*q+)faYvwWy0grm1EJm)WWS0P^+_S^%Top6P=o0D<#zbB9B~{f9;x&jkR``t>ff z0PdQIlCKE(0DAI53*c7)0K~xG10>Ld<$8Q1(WmTE;Il7{0RWl+4_5$VB8PJU*1;rj e;4_mm0U{I+m|=OO0ZV590000qoZf!%a=bj4IOvx+?kj;kpVXd_<3;k#8`>?`<^b2As(G?ryS%x ztia=%*u2AOXL?)6Ugb496Z8UBp8BV3@`dT2>VqxEAKgB0{$7~HY+3mFxV`_j>F}-< zTXdy&^=$|5VAdb+W=xVxG+)tufZOD$!xvFT)r70!+nTqo=yrItFwJ`Y%~cExm%fQa zF)Y3(_p(`yq49Ce=k^1C+r{kT&apCFX#1_Th2h<-nUmLZ{9s_?bK-sw&d6}&z#2{wC{Gwbl$g$ zx`NS&pUU(tyrqimactKO#q_rNs@rNirVF3LpY$0GJwwEA)j7vg+O*elvms0F!?^4c z^vyjfsh~XgY-oQ@@8ySIJ|Q-?u-JK>l@q%8r4@gZfolsupQ+S^ZjN1qjB3I?h4@=36WEy!uk&V zXL9IC!7wi?$ok2c-H_n`bL;_XbPpr*-4F+BZZPl<;}7Czq&NTMDnbAN002ovPDHLk FV1n1qJ4pZl delta 612 zcmV-q0-ODy1(^kqEHOcGnW<3`0RaIaIceEpaj7v$c_9(mxsmyaNik7z0000000000 z000000001Cs;@4QT^N54NklnsLe_bvA~}%lgtWCO0%HJvjVqSV$`!(xiTyZ#O;3+gTw?ee)UIrhe?bW z>H0RSgopflm2bfxXPzLn6c_kB#vBT)e&H*$$u=w39_7LN(+OC7PxpPRXe#KB@Ru@v z^KPkPdmWqWfnt1Heb!^OIiQ9Q-f#N#hde{XAJw72ecX)K;wB-9?!2Jv1p3T#DXE~` zrEJKY_LX{{z9D}$QJZVQ4AT_S40C^!*#qL8caQOE=o*C83Otn=_fc~Wno6|I{iAuR4-R^ z^T+v=nFAj(W6nm6WZ4yH_)#MOoB&q(e8X*mvmjh|$u@s0f#aNf;;fG}e7qcT&PO4{ zS@Wjh_Pir*#QVEZz~Z`t8$n*(!e&{s?traHPb^lK_+!JD58V~QH3Stu^$RdATvyDs zpcB^I#e0GSUW(29WT-7&u{K#5&>4T4IVmn+iaCTUGnua-?7bnfCu4Z{EDg00Z?uq(v6SG6DeDvI|N8 delta 32 Ycmcc1beCy@yBGroc>CqSyM?ig0A_#(S^xk5 diff --git a/graphics/object_events/pics/pokemon/followers/weedle.png b/graphics/object_events/pics/pokemon/followers/weedle.png index d070e8189ea8c5bdd8401a4f321f2bfbb7bb7a8c..21621084df336990abe14b4185135aba7bf207cc 100644 GIT binary patch delta 27 ccmZ3?vY2IpufW7YMFtpdM~@&GB)2$66g zaUEAMICr=zKmecHAc?KU>iGgG@-CU>evrFdJ1MTX;?{tr-*R^5zcVZCh>-8&+Z=KH z^79~GeC>#~|NiuHfVe+>z1YD*M0~OZ^p1akSX;`G{HFk4j{JEGl9PyNKT3Mr=xlhN zn7o|10%s%X=T%gBi(N|*%+VG&{-wZv+_%h#_^*%4% z)l`6HjJG-zQ*DNY1EXIDoFy=@^EMR_PggXYf$*E0Y$hRa)=iv`EF8=#I6Iz!CvQ_8 zd{#Btr70Yg*C~@to5GsZ#@^<^{Z(zsH3*onnyKo2o2wNf{)9#R4M4?G2Az+aG|hMg za8OPi#tKIb@Inhj{T2@v75duA{m6gaTO5|S*^Yf=7rdBr2qIw9rkPaivWS-Gk~q1 zF(3mW3UV)p3^)h;YysW+IO4!_xNI|!M`XsZN@2(EK>2f7?C26}zJw2jmm_v4dA@;? z)?Owx&GSu;=Z0^69A)`s*1&rsz+tQjH#d8@W?#gq_J68f6 zZqnB`S@&S{xr_lBXYK8E+WCLExp;d6x9{)h*3UxH=70gu^%tVeAKLCW;Kw^1&}FO{ zW((dm*3ZT&nXwZw^%z4CGN0ABzE}Nl3i1rci;#bdoKShF@V2s; zygA+g<+X|DG70I1!|n0+=XiJj0G}SmjB8eH5neaZGS3*L@(AGdXEAAx_dG9|S+7~Q zRdFQn@u<%raXH+5{^xJHH;sd4buo+k?uu5F)`i5817%Nf?3K4*q1mioT#1QwLG(?n zc~n4u*qeKMVOVvh!qI=#ut2p`num)vc@p-p*X@O%Ypow%g}D+i*hyABp-N2PbeC?gV&{ zN2aN@1gPpvypWjy?Ra!BYpi`gEX-Wu=+*1pUpax(6MEb57atz{PkY1e18W=q0>6EC UCJ9C@MF0Q*07*qoM6N<$f)Pq0&Hw-a delta 1098 zcmV-Q1hxB$35E%fI3=N>f$8b_fk{yT0Reew!KtayX*og3xp@Ep000000001UA#i4q zT^D}?{7FPXR9J=Wm%nf0HWbGxK!b)1)~-p;a9U0EU}h2`4KZ%+&^gQH`UiCAV${Y# z!fm22(7PK86v$;Q+9qD&U4K*`#UBzWCU?UP9m)W)Kh)!UU%p41&xHIx{+lC?Uw$6M zi|-xL_TQgg4iNXJ?-x5*h=@C;i2wSy%-qg%Btd;aa4u!sRSqRI57Hkz*zzVJ8x3~@pMJQ83@10$z~D)XWhj4$il&_g0tfpc=9&o!Dm&I zU7Er{d7U!Zv?;7fZR~9x++WqET!VlKtC_0ax4Bv&;!jw_-vCrBWzhM!Nz;s100-sN zVXSb}057ya)Nk=%QK7G$+>hM7#bJMmo9);qcEO7|hadtrZJJ5NE{k|63LZD)@(>Tw zu7SeOmn(GH!CUCAi#dlJQx3T8l%Ed*9LAKaggG@Ea+!onfHqxrZ0qN;#emQNU}-%p z-oOR}LQZ^4c4*&WP`x3SNyxZJ+nVKmE|CD({qb?_V-fHG%n~r=;ZT%31K5B183Qs9 zq9FHj$bfUe&lb?Fk0TB|hs!ntc|>Lms}y$p4wOHa#f~nq=1cfccsXK+lII&JY3*fF z(>&kgcy9RC$5EDFW(~YI0vyJgK+f9pveg0{j_B*(;o_RDRXmq5;;uZ$ymKYM;U;~3 zlXVY9pUW7Kan{~mr=6dhi?@F_aQps_Zv8AIZ4MalTz?_j{Gsjs0DipF0bRzLVYc91 zll|l8-vpxG)z;5LQcIjD*()DM5AX%>Q^(ipsly~%G732NdHW30;}`rJ?Hv|5qoU$e z<^;b=Esh@V#OH#pwLgc&ay)eK>3;hRzxny^Uw-}Tp&-w2ya>6-36+0`3U4cm$(!R1 zP+psOE|ZXMINTope2#bb5AgYM%(!ON7U6XhE%S^~DvtnOe-@MGc+c~anf01=TNOtF zACLMB5|_i>#~**9d(${*Ru{9l@2+S?XPxz_sORhTOQgPmm66RN}nPIu|{I!2<^WPmDUrcJIcX88DJgNWQR(UV!P#-3go=r=UCIF#I}q6b delta 36 ZcmZ3^vYcgtizEX!P%+uFdt>Y=MgU!^1^fU2 diff --git a/graphics/object_events/pics/pokemon/followers/wooper.png b/graphics/object_events/pics/pokemon/followers/wooper.png index db6f873b7e72dd5f5ac7c7eea4da4fc81f3b91e9..192b64f0bb0d56232b2f139f1b1573436378a022 100644 GIT binary patch delta 391 zcmV;20eJqr1HJ>0EHOE8p&>zeNs-ARF*$Lu@c{t=ky*L1anU(hQIW~{VJTth>G=Qv z000000000pK`c~}T^N5fNkl|C|IFej3IqayK;R!iT<*8_+O-qlQr9fw zJ|Lc70h(ogYp9Q3`V*JJ4wQ~WL+50K= zR?)&%r9TIxQX@-se;__Rkn#86SLU)Mg_)E&>yN~mzb7pjh%`r?x2{sIGg2rL&HMWY lgfHa3&qc$siO25m_y#UYkuG;|0yF>s002ovPDHLkV1m}8xfB2Z delta 389 zcmV;00eb$v1H1!}EHMEA0U<$ok;(ZG^T7@c;k-0000000000 z000000002y@<+;%T^N5dNklIWYIUsoL0@y zF{l#iBXp##Q0{FDj)d(iC>2sW`J4Fe?EefxW-JnkL?V%Y1Yo(}T5D@NgrzP>kNN=r zyhluz`K`5<40nj_GGCD%b;}leKKuYAf%Cp4J?aC;=L_O{m5hJ>GI;0w8aVCtxg^6q z?@11a5>cK`$I)BF%yVfsO?!61uJZ>Fw_X=>ADS_<9J&zo8$QYZU|*TIVF6@iVGznp?Ea2#A!CO%3M^}O00000NkvXXu0mjf#L~4g diff --git a/graphics/object_events/pics/pokemon/followers/zubat.png b/graphics/object_events/pics/pokemon/followers/zubat.png index b744d060ef9e3fcb520e7a2348b1254b876680bd..4460bc24244e2b90234eb2aa3fd00a65b21b1d25 100644 GIT binary patch delta 591 zcmV-V0FN178Cg-eu|aWp5jjBt0Rf3&xw*N)IXO|Gfw2Gp z000000001;@eP}iT^N7*NklSJx(#@ur3hHc!i!+A zE4nOPxP5~@W+ngVCw9oa&{fF<92CpvJ7+8@j6LgF&wAEs8TFqJfSE7z@JN88 zGO9k@mrMl#%LU+(0LRjO;{Du^cMMUoLp&`6KAphp-#Y^Ce&v4wa^2A2SVv6PK9LY%B2-j`E(2ER5_MRWljChK64R!q+hqhhO>{1UhqmyE zMC^K9(kZMBFuFRBL^5V}+zJue3B`T^s9%6iu!--qb&1YVAFwe^UB|6DW(*QJ@OBwCh8Ix zK(>F<(?OGDJODbk-kN-?!SU(@Set5Q$IA*pB?GW;?p;pHHr+{4GAs}%)0CIiCuj6-e7~}%uJA?awBdO!=x&Zt@C4vLs$14HM d{rENY4gC{UydpbujC}wA002ovPDHLkV1j%e1tI_d delta 589 zcmV-T0w_dVL^e3VYyMcu@N~zp@FfvxxoMc000000000000000 z000000000;aw1`oT^N7(NkleVO}iO68S_g-OJh*!PpRj+zj-u~kY;OEO<;XSSeo&h9TZ@bIq zNDc&QHv-Q9lG^ag&zFXxW5~#wXukpc41nL?KLLd2MHEnv4Gn*eU1kP>bpRoMoQO;k zfZGVj3S~irhsTKq$4uZG(Y6;=6i9$hjfslnLtE{>N60+tOxzlCo-4P@MA01E-BL==#U-Qxh!*?gUt zVu4_eM**>jFp;^y67W=jIUWR-d?63xKRXPTfbpBL6LVeMaedebd_ghbAn@hI1m=GH bH}wb2(RUGLkVDjA00000NkvXXu0mjfP0at^ diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index abdfdca3a..e2d64ca19 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -238,7 +238,6 @@ const u32 gObjectEventPic_PushableBoulder[] = INCBIN_U32("graphics/object_events const u32 gObjectEventPic_MrBrineysBoat[] = INCBIN_U32("graphics/object_events/pics/misc/mr_brineys_boat.4bpp"); const u32 gObjectEventPic_Fossil[] = INCBIN_U32("graphics/object_events/pics/misc/fossil.4bpp"); const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events/pics/misc/submarine_shadow.4bpp"); -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"); @@ -385,13 +384,11 @@ const u16 gObjectEventPal_Blastoise[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Caterpie[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/caterpie.4bpp"); const u16 gObjectEventPal_Caterpie[] = INCBIN_U16("graphics/object_events/palettes/followers/caterpie.gbapal"); const u32 gObjectEventPic_Metapod[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/metapod.4bpp"); -const u16 gObjectEventPal_Metapod[] = INCBIN_U16("graphics/object_events/palettes/followers/metapod.gbapal"); const u32 gObjectEventPic_Butterfree[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/butterfree.4bpp"); const u16 gObjectEventPal_Butterfree[] = INCBIN_U16("graphics/object_events/palettes/followers/butterfree.gbapal"); const u32 gObjectEventPic_Weedle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weedle.4bpp"); const u16 gObjectEventPal_Weedle[] = INCBIN_U16("graphics/object_events/palettes/followers/weedle.gbapal"); const u32 gObjectEventPic_Kakuna[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kakuna.4bpp"); -const u16 gObjectEventPal_Kakuna[] = INCBIN_U16("graphics/object_events/palettes/followers/kakuna.gbapal"); const u32 gObjectEventPic_Beedrill[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/beedrill.4bpp"); const u16 gObjectEventPal_Beedrill[] = INCBIN_U16("graphics/object_events/palettes/followers/beedrill.gbapal"); const u32 gObjectEventPic_Pidgey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pidgey.4bpp"); @@ -429,11 +426,9 @@ const u16 gObjectEventPal_Nidoqueen[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Nidoran_M[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoran_m.4bpp"); const u16 gObjectEventPal_Nidoran_M[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoran_m.gbapal"); const u32 gObjectEventPic_Nidorino[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidorino.4bpp"); -const u16 gObjectEventPal_Nidorino[] = INCBIN_U16("graphics/object_events/palettes/followers/nidorino.gbapal"); const u32 gObjectEventPic_Nidoking[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nidoking.4bpp"); const u16 gObjectEventPal_Nidoking[] = INCBIN_U16("graphics/object_events/palettes/followers/nidoking.gbapal"); const u32 gObjectEventPic_Clefairy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/clefairy.4bpp"); -const u16 gObjectEventPal_Clefairy[] = INCBIN_U16("graphics/object_events/palettes/followers/clefairy.gbapal"); const u32 gObjectEventPic_Clefable[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/clefable.4bpp"); const u16 gObjectEventPal_Clefable[] = INCBIN_U16("graphics/object_events/palettes/followers/clefable.gbapal"); const u32 gObjectEventPic_Vulpix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vulpix.4bpp"); @@ -445,19 +440,15 @@ const u16 gObjectEventPal_Jigglypuff[] = INCBIN_U16("graphics/object_events/pale const u32 gObjectEventPic_Wigglytuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wigglytuff.4bpp"); const u16 gObjectEventPal_Wigglytuff[] = INCBIN_U16("graphics/object_events/palettes/followers/wigglytuff.gbapal"); const u32 gObjectEventPic_Zubat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/zubat.4bpp"); -const u16 gObjectEventPal_Zubat[] = INCBIN_U16("graphics/object_events/palettes/followers/zubat.gbapal"); const u32 gObjectEventPic_Golbat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golbat.4bpp"); const u16 gObjectEventPal_Golbat[] = INCBIN_U16("graphics/object_events/palettes/followers/golbat.gbapal"); const u32 gObjectEventPic_Oddish[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/oddish.4bpp"); -const u16 gObjectEventPal_Oddish[] = INCBIN_U16("graphics/object_events/palettes/followers/oddish.gbapal"); const u32 gObjectEventPic_Gloom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gloom.4bpp"); const u16 gObjectEventPal_Gloom[] = INCBIN_U16("graphics/object_events/palettes/followers/gloom.gbapal"); const u32 gObjectEventPic_Vileplume[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vileplume.4bpp"); -const u16 gObjectEventPal_Vileplume[] = INCBIN_U16("graphics/object_events/palettes/followers/vileplume.gbapal"); const u32 gObjectEventPic_Paras[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/paras.4bpp"); const u16 gObjectEventPal_Paras[] = INCBIN_U16("graphics/object_events/palettes/followers/paras.gbapal"); const u32 gObjectEventPic_Parasect[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/parasect.4bpp"); -const u16 gObjectEventPal_Parasect[] = INCBIN_U16("graphics/object_events/palettes/followers/parasect.gbapal"); const u32 gObjectEventPic_Venonat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/venonat.4bpp"); const u16 gObjectEventPal_Venonat[] = INCBIN_U16("graphics/object_events/palettes/followers/venonat.gbapal"); const u32 gObjectEventPic_Venomoth[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/venomoth.4bpp"); @@ -471,7 +462,6 @@ const u16 gObjectEventPal_Meowth[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Persian[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/persian.4bpp"); const u16 gObjectEventPal_Persian[] = INCBIN_U16("graphics/object_events/palettes/followers/persian.gbapal"); const u32 gObjectEventPic_Psyduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/psyduck.4bpp"); -const u16 gObjectEventPal_Psyduck[] = INCBIN_U16("graphics/object_events/palettes/followers/psyduck.gbapal"); const u32 gObjectEventPic_Golduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golduck.4bpp"); const u16 gObjectEventPal_Golduck[] = INCBIN_U16("graphics/object_events/palettes/followers/golduck.gbapal"); const u32 gObjectEventPic_Mankey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mankey.4bpp"); @@ -479,7 +469,6 @@ const u16 gObjectEventPal_Mankey[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Primeape[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/primeape.4bpp"); const u16 gObjectEventPal_Primeape[] = INCBIN_U16("graphics/object_events/palettes/followers/primeape.gbapal"); const u32 gObjectEventPic_Growlithe[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/growlithe.4bpp"); -const u16 gObjectEventPal_Growlithe[] = INCBIN_U16("graphics/object_events/palettes/followers/growlithe.gbapal"); const u32 gObjectEventPic_Arcanine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/arcanine.4bpp"); const u16 gObjectEventPal_Arcanine[] = INCBIN_U16("graphics/object_events/palettes/followers/arcanine.gbapal"); const u32 gObjectEventPic_Poliwag[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwag.4bpp"); @@ -487,13 +476,10 @@ const u16 gObjectEventPal_Poliwag[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Poliwhirl[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwhirl.4bpp"); const u16 gObjectEventPal_Poliwhirl[] = INCBIN_U16("graphics/object_events/palettes/followers/poliwhirl.gbapal"); const u32 gObjectEventPic_Poliwrath[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/poliwrath.4bpp"); -const u16 gObjectEventPal_Poliwrath[] = INCBIN_U16("graphics/object_events/palettes/followers/poliwrath.gbapal"); const u32 gObjectEventPic_Abra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/abra.4bpp"); -const u16 gObjectEventPal_Abra[] = INCBIN_U16("graphics/object_events/palettes/followers/abra.gbapal"); const u32 gObjectEventPic_Kadabra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kadabra.4bpp"); const u16 gObjectEventPal_Kadabra[] = INCBIN_U16("graphics/object_events/palettes/followers/kadabra.gbapal"); const u32 gObjectEventPic_Alakazam[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/alakazam.4bpp"); -const u16 gObjectEventPal_Alakazam[] = INCBIN_U16("graphics/object_events/palettes/followers/alakazam.gbapal"); const u32 gObjectEventPic_Machop[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machop.4bpp"); const u16 gObjectEventPal_Machop[] = INCBIN_U16("graphics/object_events/palettes/followers/machop.gbapal"); const u32 gObjectEventPic_Machoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machoke.4bpp"); @@ -501,7 +487,6 @@ const u16 gObjectEventPal_Machoke[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Machamp[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/machamp.4bpp"); const u16 gObjectEventPal_Machamp[] = INCBIN_U16("graphics/object_events/palettes/followers/machamp.gbapal"); const u32 gObjectEventPic_Bellsprout[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bellsprout.4bpp"); -const u16 gObjectEventPal_Bellsprout[] = INCBIN_U16("graphics/object_events/palettes/followers/bellsprout.gbapal"); const u32 gObjectEventPic_Weepinbell[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weepinbell.4bpp"); const u16 gObjectEventPal_Weepinbell[] = INCBIN_U16("graphics/object_events/palettes/followers/weepinbell.gbapal"); const u32 gObjectEventPic_Victreebel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/victreebel.4bpp"); @@ -511,7 +496,6 @@ const u16 gObjectEventPal_Tentacool[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Tentacruel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tentacruel.4bpp"); const u16 gObjectEventPal_Tentacruel[] = INCBIN_U16("graphics/object_events/palettes/followers/tentacruel.gbapal"); const u32 gObjectEventPic_Geodude[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/geodude.4bpp"); -const u16 gObjectEventPal_Geodude[] = INCBIN_U16("graphics/object_events/palettes/followers/geodude.gbapal"); const u32 gObjectEventPic_Graveler[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/graveler.4bpp"); const u16 gObjectEventPal_Graveler[] = INCBIN_U16("graphics/object_events/palettes/followers/graveler.gbapal"); const u32 gObjectEventPic_Golem[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/golem.4bpp"); @@ -519,7 +503,6 @@ const u16 gObjectEventPal_Golem[] = INCBIN_U16("graphics/object_events/palettes/ const u32 gObjectEventPic_Ponyta[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ponyta.4bpp"); const u16 gObjectEventPal_Ponyta[] = INCBIN_U16("graphics/object_events/palettes/followers/ponyta.gbapal"); const u32 gObjectEventPic_Rapidash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rapidash.4bpp"); -const u16 gObjectEventPal_Rapidash[] = INCBIN_U16("graphics/object_events/palettes/followers/rapidash.gbapal"); const u32 gObjectEventPic_Slowpoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slowpoke.4bpp"); const u16 gObjectEventPal_Slowpoke[] = INCBIN_U16("graphics/object_events/palettes/followers/slowpoke.gbapal"); const u32 gObjectEventPic_Slowbro[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slowbro.4bpp"); @@ -527,7 +510,6 @@ const u16 gObjectEventPal_Slowbro[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Magnemite[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magnemite.4bpp"); const u16 gObjectEventPal_Magnemite[] = INCBIN_U16("graphics/object_events/palettes/followers/magnemite.gbapal"); const u32 gObjectEventPic_Magneton[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magneton.4bpp"); -const u16 gObjectEventPal_Magneton[] = INCBIN_U16("graphics/object_events/palettes/followers/magneton.gbapal"); const u32 gObjectEventPic_Farfetchd[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/farfetchd.4bpp"); const u16 gObjectEventPal_Farfetchd[] = INCBIN_U16("graphics/object_events/palettes/followers/farfetchd.gbapal"); const u32 gObjectEventPic_Doduo[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/doduo.4bpp"); @@ -537,9 +519,7 @@ const u16 gObjectEventPal_Dodrio[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Seel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seel.4bpp"); const u16 gObjectEventPal_Seel[] = INCBIN_U16("graphics/object_events/palettes/followers/seel.gbapal"); const u32 gObjectEventPic_Dewgong[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dewgong.4bpp"); -const u16 gObjectEventPal_Dewgong[] = INCBIN_U16("graphics/object_events/palettes/followers/dewgong.gbapal"); const u32 gObjectEventPic_Grimer[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/grimer.4bpp"); -const u16 gObjectEventPal_Grimer[] = INCBIN_U16("graphics/object_events/palettes/followers/grimer.gbapal"); const u32 gObjectEventPic_Muk[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/muk.4bpp"); const u16 gObjectEventPal_Muk[] = INCBIN_U16("graphics/object_events/palettes/followers/muk.gbapal"); const u32 gObjectEventPic_Shellder[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shellder.4bpp"); @@ -553,19 +533,15 @@ const u16 gObjectEventPal_Haunter[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Gengar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gengar.4bpp"); const u16 gObjectEventPal_Gengar[] = INCBIN_U16("graphics/object_events/palettes/followers/gengar.gbapal"); const u32 gObjectEventPic_Onix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/onix.4bpp"); -const u16 gObjectEventPal_Onix[] = INCBIN_U16("graphics/object_events/palettes/followers/onix.gbapal"); const u32 gObjectEventPic_Drowzee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/drowzee.4bpp"); -const u16 gObjectEventPal_Drowzee[] = INCBIN_U16("graphics/object_events/palettes/followers/drowzee.gbapal"); const u32 gObjectEventPic_Hypno[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hypno.4bpp"); const u16 gObjectEventPal_Hypno[] = INCBIN_U16("graphics/object_events/palettes/followers/hypno.gbapal"); const u32 gObjectEventPic_Krabby[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/krabby.4bpp"); -const u16 gObjectEventPal_Krabby[] = INCBIN_U16("graphics/object_events/palettes/followers/krabby.gbapal"); const u32 gObjectEventPic_Kingler[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kingler.4bpp"); const u16 gObjectEventPal_Kingler[] = INCBIN_U16("graphics/object_events/palettes/followers/kingler.gbapal"); const u32 gObjectEventPic_Voltorb[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/voltorb.4bpp"); const u16 gObjectEventPal_Voltorb[] = INCBIN_U16("graphics/object_events/palettes/followers/voltorb.gbapal"); const u32 gObjectEventPic_Electrode[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electrode.4bpp"); -const u16 gObjectEventPal_Electrode[] = INCBIN_U16("graphics/object_events/palettes/followers/electrode.gbapal"); const u32 gObjectEventPic_Exeggcute[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/exeggcute.4bpp"); const u16 gObjectEventPal_Exeggcute[] = INCBIN_U16("graphics/object_events/palettes/followers/exeggcute.gbapal"); const u32 gObjectEventPic_Exeggutor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/exeggutor.4bpp"); @@ -573,7 +549,6 @@ const u16 gObjectEventPal_Exeggutor[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Cubone[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cubone.4bpp"); const u16 gObjectEventPal_Cubone[] = INCBIN_U16("graphics/object_events/palettes/followers/cubone.gbapal"); const u32 gObjectEventPic_Marowak[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/marowak.4bpp"); -const u16 gObjectEventPal_Marowak[] = INCBIN_U16("graphics/object_events/palettes/followers/marowak.gbapal"); const u32 gObjectEventPic_Hitmonlee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hitmonlee.4bpp"); const u16 gObjectEventPal_Hitmonlee[] = INCBIN_U16("graphics/object_events/palettes/followers/hitmonlee.gbapal"); const u32 gObjectEventPic_Hitmonchan[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hitmonchan.4bpp"); @@ -583,9 +558,7 @@ const u16 gObjectEventPal_Lickitung[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Koffing[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/koffing.4bpp"); const u16 gObjectEventPal_Koffing[] = INCBIN_U16("graphics/object_events/palettes/followers/koffing.gbapal"); const u32 gObjectEventPic_Weezing[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weezing.4bpp"); -const u16 gObjectEventPal_Weezing[] = INCBIN_U16("graphics/object_events/palettes/followers/weezing.gbapal"); const u32 gObjectEventPic_Rhyhorn[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhyhorn.4bpp"); -const u16 gObjectEventPal_Rhyhorn[] = INCBIN_U16("graphics/object_events/palettes/followers/rhyhorn.gbapal"); const u32 gObjectEventPic_Rhydon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhydon.4bpp"); const u16 gObjectEventPal_Rhydon[] = INCBIN_U16("graphics/object_events/palettes/followers/rhydon.gbapal"); const u32 gObjectEventPic_Chansey[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chansey.4bpp"); @@ -603,7 +576,6 @@ const u16 gObjectEventPal_Goldeen[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Seaking[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seaking.4bpp"); const u16 gObjectEventPal_Seaking[] = INCBIN_U16("graphics/object_events/palettes/followers/seaking.gbapal"); const u32 gObjectEventPic_Staryu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/staryu.4bpp"); -const u16 gObjectEventPal_Staryu[] = INCBIN_U16("graphics/object_events/palettes/followers/staryu.gbapal"); const u32 gObjectEventPic_Starmie[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/starmie.4bpp"); const u16 gObjectEventPal_Starmie[] = INCBIN_U16("graphics/object_events/palettes/followers/starmie.gbapal"); const u32 gObjectEventPic_Mr_Mime[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mr_mime.4bpp"); @@ -613,7 +585,6 @@ const u16 gObjectEventPal_Scyther[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Jynx[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/jynx.4bpp"); const u16 gObjectEventPal_Jynx[] = INCBIN_U16("graphics/object_events/palettes/followers/jynx.gbapal"); const u32 gObjectEventPic_Electabuzz[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electabuzz.4bpp"); -const u16 gObjectEventPal_Electabuzz[] = INCBIN_U16("graphics/object_events/palettes/followers/electabuzz.gbapal"); const u32 gObjectEventPic_Magmar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magmar.4bpp"); const u16 gObjectEventPal_Magmar[] = INCBIN_U16("graphics/object_events/palettes/followers/magmar.gbapal"); const u32 gObjectEventPic_Pinsir[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pinsir.4bpp"); @@ -627,7 +598,6 @@ const u16 gObjectEventPal_Gyarados[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Lapras[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lapras.4bpp"); const u16 gObjectEventPal_Lapras[] = INCBIN_U16("graphics/object_events/palettes/followers/lapras.gbapal"); const u32 gObjectEventPic_Ditto[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ditto.4bpp"); -const u16 gObjectEventPal_Ditto[] = INCBIN_U16("graphics/object_events/palettes/followers/ditto.gbapal"); const u32 gObjectEventPic_Eevee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/eevee.4bpp"); const u16 gObjectEventPal_Eevee[] = INCBIN_U16("graphics/object_events/palettes/followers/eevee.gbapal"); const u32 gObjectEventPic_Vaporeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vaporeon.4bpp"); @@ -667,7 +637,6 @@ const u16 gObjectEventPal_Mewtwo[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Mew_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mew.4bpp"); const u16 gObjectEventPal_Mew[] = INCBIN_U16("graphics/object_events/palettes/followers/mew.gbapal"); const u32 gObjectEventPic_Chikorita[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chikorita.4bpp"); -const u16 gObjectEventPal_Chikorita[] = INCBIN_U16("graphics/object_events/palettes/followers/chikorita.gbapal"); const u32 gObjectEventPic_Bayleef[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bayleef.4bpp"); const u16 gObjectEventPal_Bayleef[] = INCBIN_U16("graphics/object_events/palettes/followers/bayleef.gbapal"); const u32 gObjectEventPic_Meganium[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/meganium.4bpp"); @@ -715,7 +684,6 @@ const u16 gObjectEventPal_Igglybuff[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Togepi[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togepi.4bpp"); const u16 gObjectEventPal_Togepi[] = INCBIN_U16("graphics/object_events/palettes/followers/togepi.gbapal"); const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togetic.4bpp"); -const u16 gObjectEventPal_Togetic[] = INCBIN_U16("graphics/object_events/palettes/followers/togetic.gbapal"); const u32 gObjectEventPic_Natu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/natu.4bpp"); const u16 gObjectEventPal_Natu[] = INCBIN_U16("graphics/object_events/palettes/followers/natu.gbapal"); const u32 gObjectEventPic_Xatu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/xatu.4bpp"); @@ -729,7 +697,6 @@ const u16 gObjectEventPal_Ampharos[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Bellossom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bellossom.4bpp"); const u16 gObjectEventPal_Bellossom[] = INCBIN_U16("graphics/object_events/palettes/followers/bellossom.gbapal"); const u32 gObjectEventPic_Marill[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/marill.4bpp"); -const u16 gObjectEventPal_Marill[] = INCBIN_U16("graphics/object_events/palettes/followers/marill.gbapal"); const u32 gObjectEventPic_Azumarill_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/azumarill.4bpp"); const u16 gObjectEventPal_Azumarill[] = INCBIN_U16("graphics/object_events/palettes/followers/azumarill.gbapal"); const u32 gObjectEventPic_Sudowoodo_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sudowoodo.4bpp"); @@ -751,7 +718,6 @@ const u16 gObjectEventPal_Sunflora[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Yanma[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/yanma.4bpp"); const u16 gObjectEventPal_Yanma[] = INCBIN_U16("graphics/object_events/palettes/followers/yanma.gbapal"); const u32 gObjectEventPic_Wooper[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wooper.4bpp"); -const u16 gObjectEventPal_Wooper[] = INCBIN_U16("graphics/object_events/palettes/followers/wooper.gbapal"); const u32 gObjectEventPic_Quagsire[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/quagsire.4bpp"); const u16 gObjectEventPal_Quagsire[] = INCBIN_U16("graphics/object_events/palettes/followers/quagsire.gbapal"); const u32 gObjectEventPic_Espeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/espeon.4bpp"); @@ -765,7 +731,6 @@ const u16 gObjectEventPal_Slowking[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Misdreavus[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/misdreavus.4bpp"); const u16 gObjectEventPal_Misdreavus[] = INCBIN_U16("graphics/object_events/palettes/followers/misdreavus.gbapal"); const u32 gObjectEventPic_Unown_A[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unowna.4bpp"); -const u16 gObjectEventPal_Unown[] = INCBIN_U16("graphics/object_events/palettes/followers/unown.gbapal"); const u32 gObjectEventPic_Unown_B[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownb.4bpp"); const u32 gObjectEventPic_Unown_C[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownc.4bpp"); const u32 gObjectEventPic_Unown_D[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/unownd.4bpp"); @@ -806,7 +771,6 @@ const u16 gObjectEventPal_Dunsparce[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Gligar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gligar.4bpp"); const u16 gObjectEventPal_Gligar[] = INCBIN_U16("graphics/object_events/palettes/followers/gligar.gbapal"); const u32 gObjectEventPic_Steelix[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/steelix.4bpp"); -const u16 gObjectEventPal_Steelix[] = INCBIN_U16("graphics/object_events/palettes/followers/steelix.gbapal"); const u32 gObjectEventPic_Snubbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/snubbull.4bpp"); const u16 gObjectEventPal_Snubbull[] = INCBIN_U16("graphics/object_events/palettes/followers/snubbull.gbapal"); const u32 gObjectEventPic_Granbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/granbull.4bpp"); @@ -826,7 +790,6 @@ const u16 gObjectEventPal_Teddiursa[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Ursaring[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ursaring.4bpp"); const u16 gObjectEventPal_Ursaring[] = INCBIN_U16("graphics/object_events/palettes/followers/ursaring.gbapal"); const u32 gObjectEventPic_Slugma[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/slugma.4bpp"); -const u16 gObjectEventPal_Slugma[] = INCBIN_U16("graphics/object_events/palettes/followers/slugma.gbapal"); const u32 gObjectEventPic_Magcargo[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magcargo.4bpp"); const u16 gObjectEventPal_Magcargo[] = INCBIN_U16("graphics/object_events/palettes/followers/magcargo.gbapal"); const u32 gObjectEventPic_Swinub[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/swinub.4bpp"); @@ -846,7 +809,6 @@ const u16 gObjectEventPal_Mantine[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Skarmory[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skarmory.4bpp"); const u16 gObjectEventPal_Skarmory[] = INCBIN_U16("graphics/object_events/palettes/followers/skarmory.gbapal"); const u32 gObjectEventPic_Houndour[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/houndour.4bpp"); -const u16 gObjectEventPal_Houndour[] = INCBIN_U16("graphics/object_events/palettes/followers/houndour.gbapal"); const u32 gObjectEventPic_Houndoom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/houndoom.4bpp"); const u16 gObjectEventPal_Houndoom[] = INCBIN_U16("graphics/object_events/palettes/followers/houndoom.gbapal"); const u32 gObjectEventPic_Kingdra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kingdra.4bpp"); @@ -884,7 +846,6 @@ const u16 gObjectEventPal_Suicune[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Larvitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/larvitar.4bpp"); const u16 gObjectEventPal_Larvitar[] = INCBIN_U16("graphics/object_events/palettes/followers/larvitar.gbapal"); const u32 gObjectEventPic_Pupitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pupitar.4bpp"); -const u16 gObjectEventPal_Pupitar[] = INCBIN_U16("graphics/object_events/palettes/followers/pupitar.gbapal"); const u32 gObjectEventPic_Tyranitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tyranitar.4bpp"); const u16 gObjectEventPal_Tyranitar[] = INCBIN_U16("graphics/object_events/palettes/followers/tyranitar.gbapal"); const u32 gObjectEventPic_Lugia_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lugia.4bpp"); @@ -900,7 +861,6 @@ const u16 gObjectEventPal_Grovyle[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Sceptile[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sceptile.4bpp"); const u16 gObjectEventPal_Sceptile[] = INCBIN_U16("graphics/object_events/palettes/followers/sceptile.gbapal"); const u32 gObjectEventPic_Torchic[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/torchic.4bpp"); -const u16 gObjectEventPal_Torchic[] = INCBIN_U16("graphics/object_events/palettes/followers/torchic.gbapal"); const u32 gObjectEventPic_Combusken[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/combusken.4bpp"); const u16 gObjectEventPal_Combusken[] = INCBIN_U16("graphics/object_events/palettes/followers/combusken.gbapal"); const u32 gObjectEventPic_Blaziken[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/blaziken.4bpp"); @@ -922,7 +882,6 @@ const u16 gObjectEventPal_Linoone[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Wurmple[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wurmple.4bpp"); const u16 gObjectEventPal_Wurmple[] = INCBIN_U16("graphics/object_events/palettes/followers/wurmple.gbapal"); const u32 gObjectEventPic_Silcoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/silcoon.4bpp"); -const u16 gObjectEventPal_Silcoon[] = INCBIN_U16("graphics/object_events/palettes/followers/silcoon.gbapal"); const u32 gObjectEventPic_Beautifly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/beautifly.4bpp"); const u16 gObjectEventPal_Beautifly[] = INCBIN_U16("graphics/object_events/palettes/followers/beautifly.gbapal"); const u32 gObjectEventPic_Cascoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cascoon.4bpp"); @@ -950,9 +909,7 @@ const u16 gObjectEventPal_Wingull[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Pelipper[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pelipper.4bpp"); const u16 gObjectEventPal_Pelipper[] = INCBIN_U16("graphics/object_events/palettes/followers/pelipper.gbapal"); const u32 gObjectEventPic_Ralts[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ralts.4bpp"); -const u16 gObjectEventPal_Ralts[] = INCBIN_U16("graphics/object_events/palettes/followers/ralts.gbapal"); const u32 gObjectEventPic_Kirlia_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kirlia.4bpp"); -const u16 gObjectEventPal_Kirlia[] = INCBIN_U16("graphics/object_events/palettes/followers/kirlia.gbapal"); const u32 gObjectEventPic_Gardevoir[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gardevoir.4bpp"); const u16 gObjectEventPal_Gardevoir[] = INCBIN_U16("graphics/object_events/palettes/followers/gardevoir.gbapal"); const u32 gObjectEventPic_Surskit[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/surskit.4bpp"); @@ -978,7 +935,6 @@ const u16 gObjectEventPal_Shedinja[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Whismur[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/whismur.4bpp"); const u16 gObjectEventPal_Whismur[] = INCBIN_U16("graphics/object_events/palettes/followers/whismur.gbapal"); const u32 gObjectEventPic_Loudred[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/loudred.4bpp"); -const u16 gObjectEventPal_Loudred[] = INCBIN_U16("graphics/object_events/palettes/followers/loudred.gbapal"); const u32 gObjectEventPic_Exploud[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/exploud.4bpp"); const u16 gObjectEventPal_Exploud[] = INCBIN_U16("graphics/object_events/palettes/followers/exploud.gbapal"); const u32 gObjectEventPic_Makuhita[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/makuhita.4bpp"); @@ -990,7 +946,6 @@ const u16 gObjectEventPal_Azurill_Follower[] = INCBIN_U16("graphics/object_event const u32 gObjectEventPic_Nosepass[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/nosepass.4bpp"); const u16 gObjectEventPal_Nosepass[] = INCBIN_U16("graphics/object_events/palettes/followers/nosepass.gbapal"); const u32 gObjectEventPic_Skitty_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skitty.4bpp"); -const u16 gObjectEventPal_Skitty_Follower[] = INCBIN_U16("graphics/object_events/palettes/followers/skitty.gbapal"); const u32 gObjectEventPic_Delcatty[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/delcatty.4bpp"); const u16 gObjectEventPal_Delcatty[] = INCBIN_U16("graphics/object_events/palettes/followers/delcatty.gbapal"); const u32 gObjectEventPic_Sableye[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sableye.4bpp"); @@ -998,7 +953,6 @@ const u16 gObjectEventPal_Sableye[] = INCBIN_U16("graphics/object_events/palette const u32 gObjectEventPic_Mawile[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mawile.4bpp"); const u16 gObjectEventPal_Mawile[] = INCBIN_U16("graphics/object_events/palettes/followers/mawile.gbapal"); const u32 gObjectEventPic_Aron[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/aron.4bpp"); -const u16 gObjectEventPal_Aron[] = INCBIN_U16("graphics/object_events/palettes/followers/aron.gbapal"); const u32 gObjectEventPic_Lairon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lairon.4bpp"); const u16 gObjectEventPal_Lairon[] = INCBIN_U16("graphics/object_events/palettes/followers/lairon.gbapal"); const u32 gObjectEventPic_Aggron[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/aggron.4bpp"); @@ -1012,7 +966,6 @@ const u16 gObjectEventPal_Electrike[] = INCBIN_U16("graphics/object_events/palet const u32 gObjectEventPic_Manectric[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/manectric.4bpp"); const u16 gObjectEventPal_Manectric[] = INCBIN_U16("graphics/object_events/palettes/followers/manectric.gbapal"); const u32 gObjectEventPic_Plusle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/plusle.4bpp"); -const u16 gObjectEventPal_Plusle[] = INCBIN_U16("graphics/object_events/palettes/followers/plusle.gbapal"); const u32 gObjectEventPic_Minun[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/minun.4bpp"); const u16 gObjectEventPal_Minun[] = INCBIN_U16("graphics/object_events/palettes/followers/minun.gbapal"); const u32 gObjectEventPic_Volbeat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/volbeat.4bpp"); @@ -1054,9 +1007,7 @@ const u16 gObjectEventPal_Flygon[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Cacnea[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cacnea.4bpp"); const u16 gObjectEventPal_Cacnea[] = INCBIN_U16("graphics/object_events/palettes/followers/cacnea.gbapal"); const u32 gObjectEventPic_Cacturne[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cacturne.4bpp"); -const u16 gObjectEventPal_Cacturne[] = INCBIN_U16("graphics/object_events/palettes/followers/cacturne.gbapal"); const u32 gObjectEventPic_Swablu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/swablu.4bpp"); -const u16 gObjectEventPal_Swablu[] = INCBIN_U16("graphics/object_events/palettes/followers/swablu.gbapal"); const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/altaria.4bpp"); const u16 gObjectEventPal_Altaria[] = INCBIN_U16("graphics/object_events/palettes/followers/altaria.gbapal"); const u32 gObjectEventPic_Zangoose[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/zangoose.4bpp"); @@ -1064,7 +1015,6 @@ const u16 gObjectEventPal_Zangoose[] = INCBIN_U16("graphics/object_events/palett const u32 gObjectEventPic_Seviper[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/seviper.4bpp"); const u16 gObjectEventPal_Seviper[] = INCBIN_U16("graphics/object_events/palettes/followers/seviper.gbapal"); const u32 gObjectEventPic_Lunatone[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lunatone.4bpp"); -const u16 gObjectEventPal_Lunatone[] = INCBIN_U16("graphics/object_events/palettes/followers/lunatone.gbapal"); const u32 gObjectEventPic_Solrock[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/solrock.4bpp"); const u16 gObjectEventPal_Solrock[] = INCBIN_U16("graphics/object_events/palettes/followers/solrock.gbapal"); const u32 gObjectEventPic_Barboach[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/barboach.4bpp"); @@ -1092,11 +1042,9 @@ const u16 gObjectEventPal_Feebas[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Milotic[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/milotic.4bpp"); const u16 gObjectEventPal_Milotic[] = INCBIN_U16("graphics/object_events/palettes/followers/milotic.gbapal"); const u32 gObjectEventPic_Castform[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/castform.4bpp"); -const u16 gObjectEventPal_Castform[] = INCBIN_U16("graphics/object_events/palettes/followers/castform.gbapal"); const u32 gObjectEventPic_Kecleon_Follower[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kecleon.4bpp"); const u16 gObjectEventPal_Kecleon[] = INCBIN_U16("graphics/object_events/palettes/followers/kecleon.gbapal"); const u32 gObjectEventPic_Shuppet[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shuppet.4bpp"); -const u16 gObjectEventPal_Shuppet[] = INCBIN_U16("graphics/object_events/palettes/followers/shuppet.gbapal"); const u32 gObjectEventPic_Banette[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/banette.4bpp"); const u16 gObjectEventPal_Banette[] = INCBIN_U16("graphics/object_events/palettes/followers/banette.gbapal"); const u32 gObjectEventPic_Duskull[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/duskull.4bpp"); @@ -1142,7 +1090,6 @@ const u16 gObjectEventPal_Beldum[] = INCBIN_U16("graphics/object_events/palettes const u32 gObjectEventPic_Metang[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/metang.4bpp"); const u16 gObjectEventPal_Metang[] = INCBIN_U16("graphics/object_events/palettes/followers/metang.gbapal"); const u32 gObjectEventPic_Metagross[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/metagross.4bpp"); -const u16 gObjectEventPal_Metagross[] = INCBIN_U16("graphics/object_events/palettes/followers/metagross.gbapal"); const u32 gObjectEventPic_Regirock[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regirock.4bpp"); const u16 gObjectEventPal_Regirock[] = INCBIN_U16("graphics/object_events/palettes/followers/regirock.gbapal"); const u32 gObjectEventPic_Regice[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regice.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 8ee03030a..eba944bcb 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -140,7 +140,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = { const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Fishing, sPicTable_MayFishing, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {TAG_NONE, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_96x40, sAnimTable_Standard, sPicTable_SSTidal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {TAG_NONE, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_88x32, sAnimTable_Standard, sPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {TAG_NONE, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_88x32, sAnimTable_Standard, sPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PichuDoll, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PikachuDoll, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MarillDoll, gDummySpriteAffineAnimTable}; @@ -254,10 +254,10 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; @@ -276,85 +276,85 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFAIRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_ODDISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_VILEPLUME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_PSYDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_GROWLITHE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWRATH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_ALAKAZAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLSPROUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_RAPIDASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_DROWZEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_MAROWAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYHORN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, gDummySpriteAffineAnimTable}; @@ -363,19 +363,19 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARYU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTABUZZ, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, gDummySpriteAffineAnimTable}; @@ -396,7 +396,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIKORITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, gDummySpriteAffineAnimTable}; @@ -420,14 +420,14 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, O const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_MARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, gDummySpriteAffineAnimTable}; @@ -438,48 +438,48 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, O const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_WOOPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_STEELIX, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, gDummySpriteAffineAnimTable}; @@ -489,7 +489,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_SLUGMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, gDummySpriteAffineAnimTable}; @@ -499,7 +499,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, gDummySpriteAffineAnimTable}; @@ -518,7 +518,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_PUPITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, gDummySpriteAffineAnimTable}; @@ -527,7 +527,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Treecko = {0xFFFF, OBJ_EVENT_PAL_TAG_TREECKO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Treecko, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grovyle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROVYLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grovyle, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sceptile = {0xFFFF, OBJ_EVENT_PAL_TAG_SCEPTILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sceptile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_TORCHIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combusken = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combusken, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blaziken = {0xFFFF, OBJ_EVENT_PAL_TAG_BLAZIKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blaziken, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mudkip = {0xFFFF, OBJ_EVENT_PAL_TAG_MUDKIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mudkip, gDummySpriteAffineAnimTable}; @@ -538,7 +538,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mightyena = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zigzagoon_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Linoone = {0xFFFF, OBJ_EVENT_PAL_TAG_LINOONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Linoone, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wurmple = {0xFFFF, OBJ_EVENT_PAL_TAG_WURMPLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wurmple, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_SILCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beautifly = {0xFFFF, OBJ_EVENT_PAL_TAG_BEAUTIFLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beautifly, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cascoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cascoon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dustox = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSTOX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dustox, gDummySpriteAffineAnimTable}; @@ -552,8 +552,8 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Taillow = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swellow = {0xFFFF, OBJ_EVENT_PAL_TAG_SWELLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swellow, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_WINGULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wingull_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pelipper = {0xFFFF, OBJ_EVENT_PAL_TAG_PELIPPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pelipper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_RALTS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KIRLIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gardevoir = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gardevoir, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Surskit = {0xFFFF, OBJ_EVENT_PAL_TAG_SURSKIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Surskit, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Masquerain = {0xFFFF, OBJ_EVENT_PAL_TAG_MASQUERAIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Masquerain, gDummySpriteAffineAnimTable}; @@ -566,24 +566,24 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nincada = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninjask = {0xFFFF, OBJ_EVENT_PAL_TAG_NINJASK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninjask, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shedinja = {0xFFFF, OBJ_EVENT_PAL_TAG_SHEDINJA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shedinja, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whismur = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISMUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whismur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_LOUDRED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exploud = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exploud, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Makuhita = {0xFFFF, OBJ_EVENT_PAL_TAG_MAKUHITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Makuhita, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hariyama = {0xFFFF, OBJ_EVENT_PAL_TAG_HARIYAMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hariyama, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azurill_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nosepass = {0xFFFF, OBJ_EVENT_PAL_TAG_NOSEPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nosepass, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SKITTY_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delcatty = {0xFFFF, OBJ_EVENT_PAL_TAG_DELCATTY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delcatty, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sableye = {0xFFFF, OBJ_EVENT_PAL_TAG_SABLEYE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sableye, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mawile = {0xFFFF, OBJ_EVENT_PAL_TAG_MAWILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mawile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_ARON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lairon = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lairon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aggron = {0xFFFF, OBJ_EVENT_PAL_TAG_AGGRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aggron, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meditite = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDITITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meditite, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Medicham = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDICHAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Medicham, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrike = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRIKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrike, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manectric = {0xFFFF, OBJ_EVENT_PAL_TAG_MANECTRIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manectric, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_PLUSLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Minun = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Minun, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Volbeat = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLBEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Volbeat, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Illumise = {0xFFFF, OBJ_EVENT_PAL_TAG_ILLUMISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Illumise, gDummySpriteAffineAnimTable}; @@ -604,12 +604,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trapinch = {0xFFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vibrava = {0xFFFF, OBJ_EVENT_PAL_TAG_VIBRAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vibrava, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flygon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flygon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacnea = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacnea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACTURNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_SWABLU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zangoose = {0xFFFF, OBJ_EVENT_PAL_TAG_ZANGOOSE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zangoose, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seviper = {0xFFFF, OBJ_EVENT_PAL_TAG_SEVIPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seviper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_LUNATONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Solrock = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Solrock, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Barboach = {0xFFFF, OBJ_EVENT_PAL_TAG_BARBOACH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Barboach, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whiscash = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISCASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whiscash, gDummySpriteAffineAnimTable}; @@ -623,9 +623,9 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anorith = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Armaldo = {0xFFFF, OBJ_EVENT_PAL_TAG_ARMALDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Armaldo, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feebas = {0xFFFF, OBJ_EVENT_PAL_TAG_FEEBAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feebas, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Milotic = {0xFFFF, OBJ_EVENT_PAL_TAG_MILOTIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Milotic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KECLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kecleon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUPPET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Banette = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Banette, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Duskull = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Duskull, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSCLOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusclops_Follower, gDummySpriteAffineAnimTable}; @@ -648,7 +648,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shelgon = {0xFFFF, const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Salamence = {0xFFFF, OBJ_EVENT_PAL_TAG_SALAMENCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Salamence, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beldum = {0xFFFF, OBJ_EVENT_PAL_TAG_BELDUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beldum, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metang = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metang, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METAGROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regirock, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGICE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regice, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGISTEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Registeel, gDummySpriteAffineAnimTable}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f219634e1..001e6ab79 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -436,401 +436,348 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_GROUDON 0x1118 #define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119 #define OBJ_EVENT_PAL_TAG_UNUSED 0x111A -#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B -#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C -#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D -#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E -#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F -#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120 -#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_BULBASAUR 0x1124 -#define OBJ_EVENT_PAL_TAG_IVYSAUR 0x1125 -#define OBJ_EVENT_PAL_TAG_VENUSAUR 0x1126 -#define OBJ_EVENT_PAL_TAG_CHARMANDER 0x1127 -#define OBJ_EVENT_PAL_TAG_CHARMELEON 0x1128 -#define OBJ_EVENT_PAL_TAG_CHARIZARD 0x1129 -#define OBJ_EVENT_PAL_TAG_SQUIRTLE 0x112A -#define OBJ_EVENT_PAL_TAG_WARTORTLE 0x112B -#define OBJ_EVENT_PAL_TAG_BLASTOISE 0x112C -#define OBJ_EVENT_PAL_TAG_CATERPIE 0x112D -#define OBJ_EVENT_PAL_TAG_METAPOD 0x112E -#define OBJ_EVENT_PAL_TAG_BUTTERFREE 0x112F -#define OBJ_EVENT_PAL_TAG_WEEDLE 0x1130 -#define OBJ_EVENT_PAL_TAG_KAKUNA 0x1131 -#define OBJ_EVENT_PAL_TAG_BEEDRILL 0x1132 -#define OBJ_EVENT_PAL_TAG_PIDGEY 0x1133 -#define OBJ_EVENT_PAL_TAG_PIDGEOTTO 0x1134 -#define OBJ_EVENT_PAL_TAG_PIDGEOT 0x1135 -#define OBJ_EVENT_PAL_TAG_RATTATA 0x1136 -#define OBJ_EVENT_PAL_TAG_RATICATE 0x1137 -#define OBJ_EVENT_PAL_TAG_SPEAROW 0x1138 -#define OBJ_EVENT_PAL_TAG_FEAROW 0x1139 -#define OBJ_EVENT_PAL_TAG_EKANS 0x113A -#define OBJ_EVENT_PAL_TAG_ARBOK 0x113B -#define OBJ_EVENT_PAL_TAG_PIKACHU 0x113C -#define OBJ_EVENT_PAL_TAG_RAICHU 0x113D -#define OBJ_EVENT_PAL_TAG_SANDSHREW 0x113E -#define OBJ_EVENT_PAL_TAG_SANDSLASH 0x113F -#define OBJ_EVENT_PAL_TAG_NIDORAN_F 0x1140 -#define OBJ_EVENT_PAL_TAG_NIDORINA 0x1141 -#define OBJ_EVENT_PAL_TAG_NIDOQUEEN 0x1142 -#define OBJ_EVENT_PAL_TAG_NIDORAN_M 0x1143 -#define OBJ_EVENT_PAL_TAG_NIDORINO 0x1144 -#define OBJ_EVENT_PAL_TAG_NIDOKING 0x1145 -#define OBJ_EVENT_PAL_TAG_CLEFAIRY 0x1146 -#define OBJ_EVENT_PAL_TAG_CLEFABLE 0x1147 -#define OBJ_EVENT_PAL_TAG_VULPIX 0x1148 -#define OBJ_EVENT_PAL_TAG_NINETALES 0x1149 -#define OBJ_EVENT_PAL_TAG_JIGGLYPUFF 0x114A -#define OBJ_EVENT_PAL_TAG_WIGGLYTUFF 0x114B -#define OBJ_EVENT_PAL_TAG_ZUBAT 0x114C -#define OBJ_EVENT_PAL_TAG_GOLBAT 0x114D -#define OBJ_EVENT_PAL_TAG_ODDISH 0x114E -#define OBJ_EVENT_PAL_TAG_GLOOM 0x114F -#define OBJ_EVENT_PAL_TAG_VILEPLUME 0x1150 -#define OBJ_EVENT_PAL_TAG_PARAS 0x1151 -#define OBJ_EVENT_PAL_TAG_PARASECT 0x1152 -#define OBJ_EVENT_PAL_TAG_VENONAT 0x1153 -#define OBJ_EVENT_PAL_TAG_VENOMOTH 0x1154 -#define OBJ_EVENT_PAL_TAG_DIGLETT 0x1155 -#define OBJ_EVENT_PAL_TAG_DUGTRIO 0x1156 -#define OBJ_EVENT_PAL_TAG_MEOWTH 0x1157 -#define OBJ_EVENT_PAL_TAG_PERSIAN 0x1158 -#define OBJ_EVENT_PAL_TAG_PSYDUCK 0x1159 -#define OBJ_EVENT_PAL_TAG_GOLDUCK 0x115A -#define OBJ_EVENT_PAL_TAG_MANKEY 0x115B -#define OBJ_EVENT_PAL_TAG_PRIMEAPE 0x115C -#define OBJ_EVENT_PAL_TAG_GROWLITHE 0x115D -#define OBJ_EVENT_PAL_TAG_ARCANINE 0x115E -#define OBJ_EVENT_PAL_TAG_POLIWAG 0x115F -#define OBJ_EVENT_PAL_TAG_POLIWHIRL 0x1160 -#define OBJ_EVENT_PAL_TAG_POLIWRATH 0x1161 -#define OBJ_EVENT_PAL_TAG_ABRA 0x1162 -#define OBJ_EVENT_PAL_TAG_KADABRA 0x1163 -#define OBJ_EVENT_PAL_TAG_ALAKAZAM 0x1164 -#define OBJ_EVENT_PAL_TAG_MACHOP 0x1165 -#define OBJ_EVENT_PAL_TAG_MACHOKE 0x1166 -#define OBJ_EVENT_PAL_TAG_MACHAMP 0x1167 -#define OBJ_EVENT_PAL_TAG_BELLSPROUT 0x1168 -#define OBJ_EVENT_PAL_TAG_WEEPINBELL 0x1169 -#define OBJ_EVENT_PAL_TAG_VICTREEBEL 0x116A -#define OBJ_EVENT_PAL_TAG_TENTACOOL 0x116B -#define OBJ_EVENT_PAL_TAG_TENTACRUEL 0x116C -#define OBJ_EVENT_PAL_TAG_GEODUDE 0x116D -#define OBJ_EVENT_PAL_TAG_GRAVELER 0x116E -#define OBJ_EVENT_PAL_TAG_GOLEM 0x116F -#define OBJ_EVENT_PAL_TAG_PONYTA 0x1170 -#define OBJ_EVENT_PAL_TAG_RAPIDASH 0x1171 -#define OBJ_EVENT_PAL_TAG_SLOWPOKE 0x1172 -#define OBJ_EVENT_PAL_TAG_SLOWBRO 0x1173 -#define OBJ_EVENT_PAL_TAG_MAGNEMITE 0x1174 -#define OBJ_EVENT_PAL_TAG_MAGNETON 0x1175 -#define OBJ_EVENT_PAL_TAG_FARFETCHD 0x1176 -#define OBJ_EVENT_PAL_TAG_DODUO 0x1177 -#define OBJ_EVENT_PAL_TAG_DODRIO 0x1178 -#define OBJ_EVENT_PAL_TAG_SEEL 0x1179 -#define OBJ_EVENT_PAL_TAG_DEWGONG 0x117A -#define OBJ_EVENT_PAL_TAG_GRIMER 0x117B -#define OBJ_EVENT_PAL_TAG_MUK 0x117C -#define OBJ_EVENT_PAL_TAG_SHELLDER 0x117D -#define OBJ_EVENT_PAL_TAG_CLOYSTER 0x117E -#define OBJ_EVENT_PAL_TAG_GASTLY 0x117F -#define OBJ_EVENT_PAL_TAG_HAUNTER 0x1180 -#define OBJ_EVENT_PAL_TAG_GENGAR 0x1181 -#define OBJ_EVENT_PAL_TAG_ONIX 0x1182 -#define OBJ_EVENT_PAL_TAG_DROWZEE 0x1183 -#define OBJ_EVENT_PAL_TAG_HYPNO 0x1184 -#define OBJ_EVENT_PAL_TAG_KRABBY 0x1185 -#define OBJ_EVENT_PAL_TAG_KINGLER 0x1186 -#define OBJ_EVENT_PAL_TAG_VOLTORB 0x1187 -#define OBJ_EVENT_PAL_TAG_ELECTRODE 0x1188 -#define OBJ_EVENT_PAL_TAG_EXEGGCUTE 0x1189 -#define OBJ_EVENT_PAL_TAG_EXEGGUTOR 0x118A -#define OBJ_EVENT_PAL_TAG_CUBONE 0x118B -#define OBJ_EVENT_PAL_TAG_MAROWAK 0x118C -#define OBJ_EVENT_PAL_TAG_HITMONLEE 0x118D -#define OBJ_EVENT_PAL_TAG_HITMONCHAN 0x118E -#define OBJ_EVENT_PAL_TAG_LICKITUNG 0x118F -#define OBJ_EVENT_PAL_TAG_KOFFING 0x1190 -#define OBJ_EVENT_PAL_TAG_WEEZING 0x1191 -#define OBJ_EVENT_PAL_TAG_RHYHORN 0x1192 -#define OBJ_EVENT_PAL_TAG_RHYDON 0x1193 -#define OBJ_EVENT_PAL_TAG_CHANSEY 0x1194 -#define OBJ_EVENT_PAL_TAG_TANGELA 0x1195 -#define OBJ_EVENT_PAL_TAG_KANGASKHAN 0x1196 -#define OBJ_EVENT_PAL_TAG_HORSEA 0x1197 -#define OBJ_EVENT_PAL_TAG_SEADRA 0x1198 -#define OBJ_EVENT_PAL_TAG_GOLDEEN 0x1199 -#define OBJ_EVENT_PAL_TAG_SEAKING 0x119A -#define OBJ_EVENT_PAL_TAG_STARYU 0x119B -#define OBJ_EVENT_PAL_TAG_STARMIE 0x119C -#define OBJ_EVENT_PAL_TAG_MR_MIME 0x119D -#define OBJ_EVENT_PAL_TAG_SCYTHER 0x119E -#define OBJ_EVENT_PAL_TAG_JYNX 0x119F -#define OBJ_EVENT_PAL_TAG_ELECTABUZZ 0x11A0 -#define OBJ_EVENT_PAL_TAG_MAGMAR 0x11A1 -#define OBJ_EVENT_PAL_TAG_PINSIR 0x11A2 -#define OBJ_EVENT_PAL_TAG_TAUROS 0x11A3 -#define OBJ_EVENT_PAL_TAG_MAGIKARP 0x11A4 -#define OBJ_EVENT_PAL_TAG_GYARADOS 0x11A5 -#define OBJ_EVENT_PAL_TAG_LAPRAS 0x11A6 -#define OBJ_EVENT_PAL_TAG_DITTO 0x11A7 -#define OBJ_EVENT_PAL_TAG_EEVEE 0x11A8 -#define OBJ_EVENT_PAL_TAG_VAPOREON 0x11A9 -#define OBJ_EVENT_PAL_TAG_JOLTEON 0x11AA -#define OBJ_EVENT_PAL_TAG_FLAREON 0x11AB -#define OBJ_EVENT_PAL_TAG_PORYGON 0x11AC -#define OBJ_EVENT_PAL_TAG_OMANYTE 0x11AD -#define OBJ_EVENT_PAL_TAG_OMASTAR 0x11AE -#define OBJ_EVENT_PAL_TAG_KABUTO 0x11AF -#define OBJ_EVENT_PAL_TAG_KABUTOPS 0x11B0 -#define OBJ_EVENT_PAL_TAG_AERODACTYL 0x11B1 -#define OBJ_EVENT_PAL_TAG_SNORLAX 0x11B2 -#define OBJ_EVENT_PAL_TAG_ARTICUNO 0x11B3 -#define OBJ_EVENT_PAL_TAG_ZAPDOS 0x11B4 -#define OBJ_EVENT_PAL_TAG_MOLTRES 0x11B5 -#define OBJ_EVENT_PAL_TAG_DRATINI 0x11B6 -#define OBJ_EVENT_PAL_TAG_DRAGONAIR 0x11B7 -#define OBJ_EVENT_PAL_TAG_DRAGONITE 0x11B8 -#define OBJ_EVENT_PAL_TAG_MEWTWO 0x11B9 -#define OBJ_EVENT_PAL_TAG_MEW 0x11BA -#define OBJ_EVENT_PAL_TAG_CHIKORITA 0x11BB -#define OBJ_EVENT_PAL_TAG_BAYLEEF 0x11BC -#define OBJ_EVENT_PAL_TAG_MEGANIUM 0x11BD -#define OBJ_EVENT_PAL_TAG_CYNDAQUIL 0x11BE -#define OBJ_EVENT_PAL_TAG_QUILAVA 0x11BF -#define OBJ_EVENT_PAL_TAG_TYPHLOSION 0x11C0 -#define OBJ_EVENT_PAL_TAG_TOTODILE 0x11C1 -#define OBJ_EVENT_PAL_TAG_CROCONAW 0x11C2 -#define OBJ_EVENT_PAL_TAG_FERALIGATR 0x11C3 -#define OBJ_EVENT_PAL_TAG_SENTRET 0x11C4 -#define OBJ_EVENT_PAL_TAG_FURRET 0x11C5 -#define OBJ_EVENT_PAL_TAG_HOOTHOOT 0x11C6 -#define OBJ_EVENT_PAL_TAG_NOCTOWL 0x11C7 -#define OBJ_EVENT_PAL_TAG_LEDYBA 0x11C8 -#define OBJ_EVENT_PAL_TAG_LEDIAN 0x11C9 -#define OBJ_EVENT_PAL_TAG_SPINARAK 0x11CA -#define OBJ_EVENT_PAL_TAG_ARIADOS 0x11CB -#define OBJ_EVENT_PAL_TAG_CROBAT 0x11CC -#define OBJ_EVENT_PAL_TAG_CHINCHOU 0x11CD -#define OBJ_EVENT_PAL_TAG_LANTURN 0x11CE -#define OBJ_EVENT_PAL_TAG_PICHU 0x11CF -#define OBJ_EVENT_PAL_TAG_CLEFFA 0x11D0 -#define OBJ_EVENT_PAL_TAG_IGGLYBUFF 0x11D1 -#define OBJ_EVENT_PAL_TAG_TOGEPI 0x11D2 -#define OBJ_EVENT_PAL_TAG_TOGETIC 0x11D3 -#define OBJ_EVENT_PAL_TAG_NATU 0x11D4 -#define OBJ_EVENT_PAL_TAG_XATU 0x11D5 -#define OBJ_EVENT_PAL_TAG_MAREEP 0x11D6 -#define OBJ_EVENT_PAL_TAG_FLAAFFY 0x11D7 -#define OBJ_EVENT_PAL_TAG_AMPHAROS 0x11D8 -#define OBJ_EVENT_PAL_TAG_BELLOSSOM 0x11D9 -#define OBJ_EVENT_PAL_TAG_MARILL 0x11DA -#define OBJ_EVENT_PAL_TAG_AZUMARILL 0x11DB -#define OBJ_EVENT_PAL_TAG_SUDOWOODO 0x11DC -#define OBJ_EVENT_PAL_TAG_POLITOED 0x11DD -#define OBJ_EVENT_PAL_TAG_HOPPIP 0x11DE -#define OBJ_EVENT_PAL_TAG_SKIPLOOM 0x11DF -#define OBJ_EVENT_PAL_TAG_JUMPLUFF 0x11E0 -#define OBJ_EVENT_PAL_TAG_AIPOM 0x11E1 -#define OBJ_EVENT_PAL_TAG_SUNKERN 0x11E2 -#define OBJ_EVENT_PAL_TAG_SUNFLORA 0x11E3 -#define OBJ_EVENT_PAL_TAG_YANMA 0x11E4 -#define OBJ_EVENT_PAL_TAG_WOOPER 0x11E5 -#define OBJ_EVENT_PAL_TAG_QUAGSIRE 0x11E6 -#define OBJ_EVENT_PAL_TAG_ESPEON 0x11E7 -#define OBJ_EVENT_PAL_TAG_UMBREON 0x11E8 -#define OBJ_EVENT_PAL_TAG_MURKROW 0x11E9 -#define OBJ_EVENT_PAL_TAG_SLOWKING 0x11EA -#define OBJ_EVENT_PAL_TAG_MISDREAVUS 0x11EB -#define OBJ_EVENT_PAL_TAG_UNOWN 0x11EC -#define OBJ_EVENT_PAL_TAG_WOBBUFFET 0x11ED -#define OBJ_EVENT_PAL_TAG_GIRAFARIG 0x11EE -#define OBJ_EVENT_PAL_TAG_PINECO 0x11EF -#define OBJ_EVENT_PAL_TAG_FORRETRESS 0x11F0 -#define OBJ_EVENT_PAL_TAG_DUNSPARCE 0x11F1 -#define OBJ_EVENT_PAL_TAG_GLIGAR 0x11F2 -#define OBJ_EVENT_PAL_TAG_STEELIX 0x11F3 -#define OBJ_EVENT_PAL_TAG_SNUBBULL 0x11F4 -#define OBJ_EVENT_PAL_TAG_GRANBULL 0x11F5 -#define OBJ_EVENT_PAL_TAG_QWILFISH 0x11F6 -#define OBJ_EVENT_PAL_TAG_SCIZOR 0x11F7 -#define OBJ_EVENT_PAL_TAG_SHUCKLE 0x11F8 -#define OBJ_EVENT_PAL_TAG_HERACROSS 0x11F9 -#define OBJ_EVENT_PAL_TAG_SNEASEL 0x11FA -#define OBJ_EVENT_PAL_TAG_TEDDIURSA 0x11FB -#define OBJ_EVENT_PAL_TAG_URSARING 0x11FC -#define OBJ_EVENT_PAL_TAG_SLUGMA 0x11FD -#define OBJ_EVENT_PAL_TAG_MAGCARGO 0x11FE -#define OBJ_EVENT_PAL_TAG_SWINUB 0x10FF -#define OBJ_EVENT_PAL_TAG_PILOSWINE 0x10FE -#define OBJ_EVENT_PAL_TAG_CORSOLA 0x10FD -#define OBJ_EVENT_PAL_TAG_REMORAID 0x10FC -#define OBJ_EVENT_PAL_TAG_OCTILLERY 0x10FB -#define OBJ_EVENT_PAL_TAG_DELIBIRD 0x10FA -#define OBJ_EVENT_PAL_TAG_MANTINE 0x10F9 -#define OBJ_EVENT_PAL_TAG_SKARMORY 0x10F8 -#define OBJ_EVENT_PAL_TAG_HOUNDOUR 0x10F7 -#define OBJ_EVENT_PAL_TAG_HOUNDOOM 0x10F6 -#define OBJ_EVENT_PAL_TAG_KINGDRA 0x10F5 -#define OBJ_EVENT_PAL_TAG_PHANPY 0x10F4 -#define OBJ_EVENT_PAL_TAG_DONPHAN 0x10F3 -#define OBJ_EVENT_PAL_TAG_PORYGON2 0x10F2 -#define OBJ_EVENT_PAL_TAG_STANTLER 0x10F1 -#define OBJ_EVENT_PAL_TAG_SMEARGLE 0x10F0 -#define OBJ_EVENT_PAL_TAG_TYROGUE 0x10EF -#define OBJ_EVENT_PAL_TAG_HITMONTOP 0x10EE -#define OBJ_EVENT_PAL_TAG_SMOOCHUM 0x10ED -#define OBJ_EVENT_PAL_TAG_ELEKID 0x10EC -#define OBJ_EVENT_PAL_TAG_MAGBY 0x10EB -#define OBJ_EVENT_PAL_TAG_MILTANK 0x10EA -#define OBJ_EVENT_PAL_TAG_BLISSEY 0x10E9 -#define OBJ_EVENT_PAL_TAG_RAIKOU 0x10E8 -#define OBJ_EVENT_PAL_TAG_ENTEI 0x10E7 -#define OBJ_EVENT_PAL_TAG_SUICUNE 0x10E6 -#define OBJ_EVENT_PAL_TAG_LARVITAR 0x10E5 -#define OBJ_EVENT_PAL_TAG_PUPITAR 0x10E4 -#define OBJ_EVENT_PAL_TAG_TYRANITAR 0x10E3 -#define OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER 0x10E2 -#define OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER 0x10E1 -#define OBJ_EVENT_PAL_TAG_CELEBI 0x10E0 -#define OBJ_EVENT_PAL_TAG_TREECKO 0x10DF -#define OBJ_EVENT_PAL_TAG_GROVYLE 0x10DE -#define OBJ_EVENT_PAL_TAG_SCEPTILE 0x10DD -#define OBJ_EVENT_PAL_TAG_TORCHIC 0x10DC -#define OBJ_EVENT_PAL_TAG_COMBUSKEN 0x10DB -#define OBJ_EVENT_PAL_TAG_BLAZIKEN 0x10DA -#define OBJ_EVENT_PAL_TAG_MUDKIP 0x10D9 -#define OBJ_EVENT_PAL_TAG_MARSHTOMP 0x10D8 -#define OBJ_EVENT_PAL_TAG_SWAMPERT 0x10D7 -#define OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER 0x10D6 -#define OBJ_EVENT_PAL_TAG_MIGHTYENA 0x10D5 -#define OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER 0x10D4 -#define OBJ_EVENT_PAL_TAG_LINOONE 0x10D3 -#define OBJ_EVENT_PAL_TAG_WURMPLE 0x10D2 -#define OBJ_EVENT_PAL_TAG_SILCOON 0x10D1 -#define OBJ_EVENT_PAL_TAG_BEAUTIFLY 0x10D0 -#define OBJ_EVENT_PAL_TAG_CASCOON 0x10CF -#define OBJ_EVENT_PAL_TAG_DUSTOX 0x10CE -#define OBJ_EVENT_PAL_TAG_LOTAD 0x10CD -#define OBJ_EVENT_PAL_TAG_LOMBRE 0x10CC -#define OBJ_EVENT_PAL_TAG_LUDICOLO 0x10CB -#define OBJ_EVENT_PAL_TAG_SEEDOT 0x10CA -#define OBJ_EVENT_PAL_TAG_NUZLEAF 0x10C9 -#define OBJ_EVENT_PAL_TAG_SHIFTRY 0x10C8 -#define OBJ_EVENT_PAL_TAG_TAILLOW 0x10C7 -#define OBJ_EVENT_PAL_TAG_SWELLOW 0x10C6 -#define OBJ_EVENT_PAL_TAG_WINGULL 0x10C5 -#define OBJ_EVENT_PAL_TAG_PELIPPER 0x10C4 -#define OBJ_EVENT_PAL_TAG_RALTS 0x10C3 -#define OBJ_EVENT_PAL_TAG_KIRLIA 0x10C2 -#define OBJ_EVENT_PAL_TAG_GARDEVOIR 0x10C1 -#define OBJ_EVENT_PAL_TAG_SURSKIT 0x10C0 -#define OBJ_EVENT_PAL_TAG_MASQUERAIN 0x10BF -#define OBJ_EVENT_PAL_TAG_SHROOMISH 0x10BE -#define OBJ_EVENT_PAL_TAG_BRELOOM 0x10BD -#define OBJ_EVENT_PAL_TAG_SLAKOTH 0x10BC -#define OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER 0x10BB -#define OBJ_EVENT_PAL_TAG_SLAKING 0x10BA -#define OBJ_EVENT_PAL_TAG_NINCADA 0x10B9 -#define OBJ_EVENT_PAL_TAG_NINJASK 0x10B8 -#define OBJ_EVENT_PAL_TAG_SHEDINJA 0x10B7 -#define OBJ_EVENT_PAL_TAG_WHISMUR 0x10B6 -#define OBJ_EVENT_PAL_TAG_LOUDRED 0x10B5 -#define OBJ_EVENT_PAL_TAG_EXPLOUD 0x10B4 -#define OBJ_EVENT_PAL_TAG_MAKUHITA 0x10B3 -#define OBJ_EVENT_PAL_TAG_HARIYAMA 0x10B2 -#define OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER 0x10B1 -#define OBJ_EVENT_PAL_TAG_NOSEPASS 0x10B0 -#define OBJ_EVENT_PAL_TAG_SKITTY_FOLLOWER 0x10AF -#define OBJ_EVENT_PAL_TAG_DELCATTY 0x10AE -#define OBJ_EVENT_PAL_TAG_SABLEYE 0x10AD -#define OBJ_EVENT_PAL_TAG_MAWILE 0x10AC -#define OBJ_EVENT_PAL_TAG_ARON 0x10AB -#define OBJ_EVENT_PAL_TAG_LAIRON 0x10AA -#define OBJ_EVENT_PAL_TAG_AGGRON 0x10A9 -#define OBJ_EVENT_PAL_TAG_MEDITITE 0x10A8 -#define OBJ_EVENT_PAL_TAG_MEDICHAM 0x10A7 -#define OBJ_EVENT_PAL_TAG_ELECTRIKE 0x10A6 -#define OBJ_EVENT_PAL_TAG_MANECTRIC 0x10A5 -#define OBJ_EVENT_PAL_TAG_PLUSLE 0x10A4 -#define OBJ_EVENT_PAL_TAG_MINUN 0x10A3 -#define OBJ_EVENT_PAL_TAG_VOLBEAT 0x10A2 -#define OBJ_EVENT_PAL_TAG_ILLUMISE 0x10A1 -#define OBJ_EVENT_PAL_TAG_ROSELIA 0x10A0 -#define OBJ_EVENT_PAL_TAG_GULPIN 0x109F -#define OBJ_EVENT_PAL_TAG_SWALOT 0x109E -#define OBJ_EVENT_PAL_TAG_CARVANHA 0x109D -#define OBJ_EVENT_PAL_TAG_SHARPEDO 0x109C -#define OBJ_EVENT_PAL_TAG_WAILMER 0x109B -#define OBJ_EVENT_PAL_TAG_WAILORD 0x109A -#define OBJ_EVENT_PAL_TAG_NUMEL 0x1099 -#define OBJ_EVENT_PAL_TAG_CAMERUPT 0x1098 -#define OBJ_EVENT_PAL_TAG_TORKOAL 0x1097 -#define OBJ_EVENT_PAL_TAG_SPOINK 0x1096 -#define OBJ_EVENT_PAL_TAG_GRUMPIG 0x1095 -#define OBJ_EVENT_PAL_TAG_SPINDA 0x1094 -#define OBJ_EVENT_PAL_TAG_TRAPINCH 0x1093 -#define OBJ_EVENT_PAL_TAG_VIBRAVA 0x1092 -#define OBJ_EVENT_PAL_TAG_FLYGON 0x1091 -#define OBJ_EVENT_PAL_TAG_CACNEA 0x1090 -#define OBJ_EVENT_PAL_TAG_CACTURNE 0x108F -#define OBJ_EVENT_PAL_TAG_SWABLU 0x108E -#define OBJ_EVENT_PAL_TAG_ALTARIA 0x108D -#define OBJ_EVENT_PAL_TAG_ZANGOOSE 0x108C -#define OBJ_EVENT_PAL_TAG_SEVIPER 0x108B -#define OBJ_EVENT_PAL_TAG_LUNATONE 0x108A -#define OBJ_EVENT_PAL_TAG_SOLROCK 0x1089 -#define OBJ_EVENT_PAL_TAG_BARBOACH 0x1088 -#define OBJ_EVENT_PAL_TAG_WHISCASH 0x1087 -#define OBJ_EVENT_PAL_TAG_CORPHISH 0x1086 -#define OBJ_EVENT_PAL_TAG_CRAWDAUNT 0x1085 -#define OBJ_EVENT_PAL_TAG_BALTOY 0x1084 -#define OBJ_EVENT_PAL_TAG_CLAYDOL 0x1083 -#define OBJ_EVENT_PAL_TAG_LILEEP 0x1082 -#define OBJ_EVENT_PAL_TAG_CRADILY 0x1081 -#define OBJ_EVENT_PAL_TAG_ANORITH 0x1080 -#define OBJ_EVENT_PAL_TAG_ARMALDO 0x107F -#define OBJ_EVENT_PAL_TAG_FEEBAS 0x107E -#define OBJ_EVENT_PAL_TAG_MILOTIC 0x107D -#define OBJ_EVENT_PAL_TAG_CASTFORM 0x107C -#define OBJ_EVENT_PAL_TAG_KECLEON 0x107B -#define OBJ_EVENT_PAL_TAG_SHUPPET 0x107A -#define OBJ_EVENT_PAL_TAG_BANETTE 0x1079 -#define OBJ_EVENT_PAL_TAG_DUSKULL 0x1078 -#define OBJ_EVENT_PAL_TAG_DUSCLOPS 0x1077 -#define OBJ_EVENT_PAL_TAG_TROPIUS 0x1076 -#define OBJ_EVENT_PAL_TAG_CHIMECHO 0x1075 -#define OBJ_EVENT_PAL_TAG_ABSOL 0x1074 -#define OBJ_EVENT_PAL_TAG_WYNAUT 0x1073 -#define OBJ_EVENT_PAL_TAG_SNORUNT 0x1072 -#define OBJ_EVENT_PAL_TAG_GLALIE 0x1071 -#define OBJ_EVENT_PAL_TAG_SPHEAL 0x1070 -#define OBJ_EVENT_PAL_TAG_SEALEO 0x106F -#define OBJ_EVENT_PAL_TAG_WALREIN 0x106E -#define OBJ_EVENT_PAL_TAG_CLAMPERL 0x106D -#define OBJ_EVENT_PAL_TAG_HUNTAIL 0x106C -#define OBJ_EVENT_PAL_TAG_GOREBYSS 0x106B -#define OBJ_EVENT_PAL_TAG_RELICANTH 0x106A -#define OBJ_EVENT_PAL_TAG_LUVDISC 0x1069 -#define OBJ_EVENT_PAL_TAG_BAGON 0x1068 -#define OBJ_EVENT_PAL_TAG_SHELGON 0x1067 -#define OBJ_EVENT_PAL_TAG_SALAMENCE 0x1066 -#define OBJ_EVENT_PAL_TAG_BELDUM 0x1065 -#define OBJ_EVENT_PAL_TAG_METANG 0x1064 -#define OBJ_EVENT_PAL_TAG_METAGROSS 0x1063 -#define OBJ_EVENT_PAL_TAG_REGIROCK 0x1062 -#define OBJ_EVENT_PAL_TAG_REGICE 0x1061 -#define OBJ_EVENT_PAL_TAG_REGISTEEL 0x1060 -#define OBJ_EVENT_PAL_TAG_LATIAS 0x105F -#define OBJ_EVENT_PAL_TAG_LATIOS 0x105E -#define OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER 0x105D -#define OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER 0x105C -#define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x105B -#define OBJ_EVENT_PAL_TAG_JIRACHI 0x105A -#define OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER 0x1059 +#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111B +#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111C +#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111D +#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111E +#define OBJ_EVENT_PAL_TAG_HO_OH 0x111F +#define OBJ_EVENT_PAL_TAG_LUGIA 0x1120 +#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1121 +#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1122 +#define OBJ_EVENT_PAL_TAG_BULBASAUR 0x1123 +#define OBJ_EVENT_PAL_TAG_IVYSAUR 0x1124 +#define OBJ_EVENT_PAL_TAG_VENUSAUR 0x1125 +#define OBJ_EVENT_PAL_TAG_CHARMANDER 0x1126 +#define OBJ_EVENT_PAL_TAG_CHARMELEON 0x1127 +#define OBJ_EVENT_PAL_TAG_CHARIZARD 0x1128 +#define OBJ_EVENT_PAL_TAG_SQUIRTLE 0x1129 +#define OBJ_EVENT_PAL_TAG_WARTORTLE 0x112A +#define OBJ_EVENT_PAL_TAG_BLASTOISE 0x112B +#define OBJ_EVENT_PAL_TAG_CATERPIE 0x112C +#define OBJ_EVENT_PAL_TAG_BUTTERFREE 0x112D +#define OBJ_EVENT_PAL_TAG_WEEDLE 0x112E +#define OBJ_EVENT_PAL_TAG_BEEDRILL 0x112F +#define OBJ_EVENT_PAL_TAG_PIDGEY 0x1130 +#define OBJ_EVENT_PAL_TAG_PIDGEOTTO 0x1131 +#define OBJ_EVENT_PAL_TAG_PIDGEOT 0x1132 +#define OBJ_EVENT_PAL_TAG_RATTATA 0x1133 +#define OBJ_EVENT_PAL_TAG_RATICATE 0x1134 +#define OBJ_EVENT_PAL_TAG_SPEAROW 0x1135 +#define OBJ_EVENT_PAL_TAG_FEAROW 0x1136 +#define OBJ_EVENT_PAL_TAG_EKANS 0x1137 +#define OBJ_EVENT_PAL_TAG_ARBOK 0x1138 +#define OBJ_EVENT_PAL_TAG_PIKACHU 0x1139 +#define OBJ_EVENT_PAL_TAG_RAICHU 0x113A +#define OBJ_EVENT_PAL_TAG_SANDSHREW 0x113B +#define OBJ_EVENT_PAL_TAG_SANDSLASH 0x113C +#define OBJ_EVENT_PAL_TAG_NIDORAN_F 0x113D +#define OBJ_EVENT_PAL_TAG_NIDORINA 0x113E +#define OBJ_EVENT_PAL_TAG_NIDOQUEEN 0x113F +#define OBJ_EVENT_PAL_TAG_NIDORAN_M 0x1140 +#define OBJ_EVENT_PAL_TAG_NIDOKING 0x1141 +#define OBJ_EVENT_PAL_TAG_CLEFABLE 0x1142 +#define OBJ_EVENT_PAL_TAG_VULPIX 0x1143 +#define OBJ_EVENT_PAL_TAG_NINETALES 0x1144 +#define OBJ_EVENT_PAL_TAG_JIGGLYPUFF 0x1145 +#define OBJ_EVENT_PAL_TAG_WIGGLYTUFF 0x1146 +#define OBJ_EVENT_PAL_TAG_GOLBAT 0x1147 +#define OBJ_EVENT_PAL_TAG_GLOOM 0x1148 +#define OBJ_EVENT_PAL_TAG_PARAS 0x1149 +#define OBJ_EVENT_PAL_TAG_VENONAT 0x114A +#define OBJ_EVENT_PAL_TAG_VENOMOTH 0x114B +#define OBJ_EVENT_PAL_TAG_DIGLETT 0x114C +#define OBJ_EVENT_PAL_TAG_DUGTRIO 0x114D +#define OBJ_EVENT_PAL_TAG_MEOWTH 0x114E +#define OBJ_EVENT_PAL_TAG_PERSIAN 0x114F +#define OBJ_EVENT_PAL_TAG_GOLDUCK 0x1150 +#define OBJ_EVENT_PAL_TAG_MANKEY 0x1151 +#define OBJ_EVENT_PAL_TAG_PRIMEAPE 0x1152 +#define OBJ_EVENT_PAL_TAG_ARCANINE 0x1153 +#define OBJ_EVENT_PAL_TAG_POLIWAG 0x1154 +#define OBJ_EVENT_PAL_TAG_POLIWHIRL 0x1155 +#define OBJ_EVENT_PAL_TAG_KADABRA 0x1156 +#define OBJ_EVENT_PAL_TAG_MACHOP 0x1157 +#define OBJ_EVENT_PAL_TAG_MACHOKE 0x1158 +#define OBJ_EVENT_PAL_TAG_MACHAMP 0x1159 +#define OBJ_EVENT_PAL_TAG_WEEPINBELL 0x115A +#define OBJ_EVENT_PAL_TAG_VICTREEBEL 0x115B +#define OBJ_EVENT_PAL_TAG_TENTACOOL 0x115C +#define OBJ_EVENT_PAL_TAG_TENTACRUEL 0x115D +#define OBJ_EVENT_PAL_TAG_GRAVELER 0x115E +#define OBJ_EVENT_PAL_TAG_GOLEM 0x115F +#define OBJ_EVENT_PAL_TAG_PONYTA 0x1160 +#define OBJ_EVENT_PAL_TAG_SLOWPOKE 0x1161 +#define OBJ_EVENT_PAL_TAG_SLOWBRO 0x1162 +#define OBJ_EVENT_PAL_TAG_MAGNEMITE 0x1163 +#define OBJ_EVENT_PAL_TAG_FARFETCHD 0x1164 +#define OBJ_EVENT_PAL_TAG_DODUO 0x1165 +#define OBJ_EVENT_PAL_TAG_DODRIO 0x1166 +#define OBJ_EVENT_PAL_TAG_SEEL 0x1167 +#define OBJ_EVENT_PAL_TAG_MUK 0x1168 +#define OBJ_EVENT_PAL_TAG_SHELLDER 0x1169 +#define OBJ_EVENT_PAL_TAG_CLOYSTER 0x116A +#define OBJ_EVENT_PAL_TAG_GASTLY 0x116B +#define OBJ_EVENT_PAL_TAG_HAUNTER 0x116C +#define OBJ_EVENT_PAL_TAG_GENGAR 0x116D +#define OBJ_EVENT_PAL_TAG_HYPNO 0x116E +#define OBJ_EVENT_PAL_TAG_KINGLER 0x116F +#define OBJ_EVENT_PAL_TAG_VOLTORB 0x1170 +#define OBJ_EVENT_PAL_TAG_EXEGGCUTE 0x1171 +#define OBJ_EVENT_PAL_TAG_EXEGGUTOR 0x1172 +#define OBJ_EVENT_PAL_TAG_CUBONE 0x1173 +#define OBJ_EVENT_PAL_TAG_HITMONLEE 0x1174 +#define OBJ_EVENT_PAL_TAG_HITMONCHAN 0x1175 +#define OBJ_EVENT_PAL_TAG_LICKITUNG 0x1176 +#define OBJ_EVENT_PAL_TAG_KOFFING 0x1177 +#define OBJ_EVENT_PAL_TAG_RHYDON 0x1178 +#define OBJ_EVENT_PAL_TAG_CHANSEY 0x1179 +#define OBJ_EVENT_PAL_TAG_TANGELA 0x117A +#define OBJ_EVENT_PAL_TAG_KANGASKHAN 0x117B +#define OBJ_EVENT_PAL_TAG_HORSEA 0x117C +#define OBJ_EVENT_PAL_TAG_SEADRA 0x117D +#define OBJ_EVENT_PAL_TAG_GOLDEEN 0x117E +#define OBJ_EVENT_PAL_TAG_SEAKING 0x117F +#define OBJ_EVENT_PAL_TAG_STARMIE 0x1180 +#define OBJ_EVENT_PAL_TAG_MR_MIME 0x1181 +#define OBJ_EVENT_PAL_TAG_SCYTHER 0x1182 +#define OBJ_EVENT_PAL_TAG_JYNX 0x1183 +#define OBJ_EVENT_PAL_TAG_MAGMAR 0x1184 +#define OBJ_EVENT_PAL_TAG_PINSIR 0x1185 +#define OBJ_EVENT_PAL_TAG_TAUROS 0x1186 +#define OBJ_EVENT_PAL_TAG_MAGIKARP 0x1187 +#define OBJ_EVENT_PAL_TAG_GYARADOS 0x1188 +#define OBJ_EVENT_PAL_TAG_LAPRAS 0x1189 +#define OBJ_EVENT_PAL_TAG_EEVEE 0x118A +#define OBJ_EVENT_PAL_TAG_VAPOREON 0x118B +#define OBJ_EVENT_PAL_TAG_JOLTEON 0x118C +#define OBJ_EVENT_PAL_TAG_FLAREON 0x118D +#define OBJ_EVENT_PAL_TAG_PORYGON 0x118E +#define OBJ_EVENT_PAL_TAG_OMANYTE 0x118F +#define OBJ_EVENT_PAL_TAG_OMASTAR 0x1190 +#define OBJ_EVENT_PAL_TAG_KABUTO 0x1191 +#define OBJ_EVENT_PAL_TAG_KABUTOPS 0x1192 +#define OBJ_EVENT_PAL_TAG_AERODACTYL 0x1193 +#define OBJ_EVENT_PAL_TAG_SNORLAX 0x1194 +#define OBJ_EVENT_PAL_TAG_ARTICUNO 0x1195 +#define OBJ_EVENT_PAL_TAG_ZAPDOS 0x1196 +#define OBJ_EVENT_PAL_TAG_MOLTRES 0x1197 +#define OBJ_EVENT_PAL_TAG_DRATINI 0x1198 +#define OBJ_EVENT_PAL_TAG_DRAGONAIR 0x1199 +#define OBJ_EVENT_PAL_TAG_DRAGONITE 0x119A +#define OBJ_EVENT_PAL_TAG_MEWTWO 0x119B +#define OBJ_EVENT_PAL_TAG_MEW 0x119C +#define OBJ_EVENT_PAL_TAG_BAYLEEF 0x119D +#define OBJ_EVENT_PAL_TAG_MEGANIUM 0x119E +#define OBJ_EVENT_PAL_TAG_CYNDAQUIL 0x119F +#define OBJ_EVENT_PAL_TAG_QUILAVA 0x11A0 +#define OBJ_EVENT_PAL_TAG_TYPHLOSION 0x11A1 +#define OBJ_EVENT_PAL_TAG_TOTODILE 0x11A2 +#define OBJ_EVENT_PAL_TAG_CROCONAW 0x11A3 +#define OBJ_EVENT_PAL_TAG_FERALIGATR 0x11A4 +#define OBJ_EVENT_PAL_TAG_SENTRET 0x11A5 +#define OBJ_EVENT_PAL_TAG_FURRET 0x11A6 +#define OBJ_EVENT_PAL_TAG_HOOTHOOT 0x11A7 +#define OBJ_EVENT_PAL_TAG_NOCTOWL 0x11A8 +#define OBJ_EVENT_PAL_TAG_LEDYBA 0x11A9 +#define OBJ_EVENT_PAL_TAG_LEDIAN 0x11AA +#define OBJ_EVENT_PAL_TAG_SPINARAK 0x11AB +#define OBJ_EVENT_PAL_TAG_ARIADOS 0x11AC +#define OBJ_EVENT_PAL_TAG_CROBAT 0x11AD +#define OBJ_EVENT_PAL_TAG_CHINCHOU 0x11AE +#define OBJ_EVENT_PAL_TAG_LANTURN 0x11AF +#define OBJ_EVENT_PAL_TAG_PICHU 0x11B0 +#define OBJ_EVENT_PAL_TAG_CLEFFA 0x11B1 +#define OBJ_EVENT_PAL_TAG_IGGLYBUFF 0x11B2 +#define OBJ_EVENT_PAL_TAG_TOGEPI 0x11B3 +#define OBJ_EVENT_PAL_TAG_NATU 0x11B4 +#define OBJ_EVENT_PAL_TAG_XATU 0x11B5 +#define OBJ_EVENT_PAL_TAG_MAREEP 0x11B6 +#define OBJ_EVENT_PAL_TAG_FLAAFFY 0x11B7 +#define OBJ_EVENT_PAL_TAG_AMPHAROS 0x11B8 +#define OBJ_EVENT_PAL_TAG_BELLOSSOM 0x11B9 +#define OBJ_EVENT_PAL_TAG_AZUMARILL 0x11BA +#define OBJ_EVENT_PAL_TAG_SUDOWOODO 0x11BB +#define OBJ_EVENT_PAL_TAG_POLITOED 0x11BC +#define OBJ_EVENT_PAL_TAG_HOPPIP 0x11BD +#define OBJ_EVENT_PAL_TAG_SKIPLOOM 0x11BE +#define OBJ_EVENT_PAL_TAG_JUMPLUFF 0x11BF +#define OBJ_EVENT_PAL_TAG_AIPOM 0x11C0 +#define OBJ_EVENT_PAL_TAG_SUNKERN 0x11C1 +#define OBJ_EVENT_PAL_TAG_SUNFLORA 0x11C2 +#define OBJ_EVENT_PAL_TAG_YANMA 0x11C3 +#define OBJ_EVENT_PAL_TAG_QUAGSIRE 0x11C4 +#define OBJ_EVENT_PAL_TAG_ESPEON 0x11C5 +#define OBJ_EVENT_PAL_TAG_UMBREON 0x11C6 +#define OBJ_EVENT_PAL_TAG_MURKROW 0x11C7 +#define OBJ_EVENT_PAL_TAG_SLOWKING 0x11C8 +#define OBJ_EVENT_PAL_TAG_MISDREAVUS 0x11C9 +#define OBJ_EVENT_PAL_TAG_WOBBUFFET 0x11CA +#define OBJ_EVENT_PAL_TAG_GIRAFARIG 0x11CB +#define OBJ_EVENT_PAL_TAG_PINECO 0x11CC +#define OBJ_EVENT_PAL_TAG_FORRETRESS 0x11CD +#define OBJ_EVENT_PAL_TAG_DUNSPARCE 0x11CE +#define OBJ_EVENT_PAL_TAG_GLIGAR 0x11CF +#define OBJ_EVENT_PAL_TAG_SNUBBULL 0x11D0 +#define OBJ_EVENT_PAL_TAG_GRANBULL 0x11D1 +#define OBJ_EVENT_PAL_TAG_QWILFISH 0x11D2 +#define OBJ_EVENT_PAL_TAG_SCIZOR 0x11D3 +#define OBJ_EVENT_PAL_TAG_SHUCKLE 0x11D4 +#define OBJ_EVENT_PAL_TAG_HERACROSS 0x11D5 +#define OBJ_EVENT_PAL_TAG_SNEASEL 0x11D6 +#define OBJ_EVENT_PAL_TAG_TEDDIURSA 0x11D7 +#define OBJ_EVENT_PAL_TAG_URSARING 0x11D8 +#define OBJ_EVENT_PAL_TAG_MAGCARGO 0x11D9 +#define OBJ_EVENT_PAL_TAG_SWINUB 0x11DA +#define OBJ_EVENT_PAL_TAG_PILOSWINE 0x11DB +#define OBJ_EVENT_PAL_TAG_CORSOLA 0x11DC +#define OBJ_EVENT_PAL_TAG_REMORAID 0x11DD +#define OBJ_EVENT_PAL_TAG_OCTILLERY 0x11DE +#define OBJ_EVENT_PAL_TAG_DELIBIRD 0x11DF +#define OBJ_EVENT_PAL_TAG_MANTINE 0x11E0 +#define OBJ_EVENT_PAL_TAG_SKARMORY 0x11E1 +#define OBJ_EVENT_PAL_TAG_HOUNDOOM 0x11E2 +#define OBJ_EVENT_PAL_TAG_KINGDRA 0x11E3 +#define OBJ_EVENT_PAL_TAG_PHANPY 0x11E4 +#define OBJ_EVENT_PAL_TAG_DONPHAN 0x11E5 +#define OBJ_EVENT_PAL_TAG_PORYGON2 0x11E6 +#define OBJ_EVENT_PAL_TAG_STANTLER 0x11E7 +#define OBJ_EVENT_PAL_TAG_SMEARGLE 0x11E8 +#define OBJ_EVENT_PAL_TAG_TYROGUE 0x11E9 +#define OBJ_EVENT_PAL_TAG_HITMONTOP 0x11EA +#define OBJ_EVENT_PAL_TAG_SMOOCHUM 0x11EB +#define OBJ_EVENT_PAL_TAG_ELEKID 0x11EC +#define OBJ_EVENT_PAL_TAG_MAGBY 0x11ED +#define OBJ_EVENT_PAL_TAG_MILTANK 0x11EE +#define OBJ_EVENT_PAL_TAG_BLISSEY 0x11EF +#define OBJ_EVENT_PAL_TAG_RAIKOU 0x11F0 +#define OBJ_EVENT_PAL_TAG_ENTEI 0x11F1 +#define OBJ_EVENT_PAL_TAG_SUICUNE 0x11F2 +#define OBJ_EVENT_PAL_TAG_LARVITAR 0x11F3 +#define OBJ_EVENT_PAL_TAG_TYRANITAR 0x11F4 +#define OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER 0x11F5 +#define OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER 0x11F6 +#define OBJ_EVENT_PAL_TAG_CELEBI 0x11F7 +#define OBJ_EVENT_PAL_TAG_TREECKO 0x11F8 +#define OBJ_EVENT_PAL_TAG_GROVYLE 0x11F9 +#define OBJ_EVENT_PAL_TAG_SCEPTILE 0x11FA +#define OBJ_EVENT_PAL_TAG_COMBUSKEN 0x11FB +#define OBJ_EVENT_PAL_TAG_BLAZIKEN 0x11FC +#define OBJ_EVENT_PAL_TAG_MUDKIP 0x11FD +#define OBJ_EVENT_PAL_TAG_MARSHTOMP 0x11FE +#define OBJ_EVENT_PAL_TAG_SWAMPERT 0x10FF +#define OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER 0x10FE +#define OBJ_EVENT_PAL_TAG_MIGHTYENA 0x10FD +#define OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER 0x10FC +#define OBJ_EVENT_PAL_TAG_LINOONE 0x10FB +#define OBJ_EVENT_PAL_TAG_WURMPLE 0x10FA +#define OBJ_EVENT_PAL_TAG_BEAUTIFLY 0x10F9 +#define OBJ_EVENT_PAL_TAG_CASCOON 0x10F8 +#define OBJ_EVENT_PAL_TAG_DUSTOX 0x10F7 +#define OBJ_EVENT_PAL_TAG_LOTAD 0x10F6 +#define OBJ_EVENT_PAL_TAG_LOMBRE 0x10F5 +#define OBJ_EVENT_PAL_TAG_LUDICOLO 0x10F4 +#define OBJ_EVENT_PAL_TAG_SEEDOT 0x10F3 +#define OBJ_EVENT_PAL_TAG_NUZLEAF 0x10F2 +#define OBJ_EVENT_PAL_TAG_SHIFTRY 0x10F1 +#define OBJ_EVENT_PAL_TAG_TAILLOW 0x10F0 +#define OBJ_EVENT_PAL_TAG_SWELLOW 0x10EF +#define OBJ_EVENT_PAL_TAG_WINGULL 0x10EE +#define OBJ_EVENT_PAL_TAG_PELIPPER 0x10ED +#define OBJ_EVENT_PAL_TAG_GARDEVOIR 0x10EC +#define OBJ_EVENT_PAL_TAG_SURSKIT 0x10EB +#define OBJ_EVENT_PAL_TAG_MASQUERAIN 0x10EA +#define OBJ_EVENT_PAL_TAG_SHROOMISH 0x10E9 +#define OBJ_EVENT_PAL_TAG_BRELOOM 0x10E8 +#define OBJ_EVENT_PAL_TAG_SLAKOTH 0x10E7 +#define OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER 0x10E6 +#define OBJ_EVENT_PAL_TAG_SLAKING 0x10E5 +#define OBJ_EVENT_PAL_TAG_NINCADA 0x10E4 +#define OBJ_EVENT_PAL_TAG_NINJASK 0x10E3 +#define OBJ_EVENT_PAL_TAG_SHEDINJA 0x10E2 +#define OBJ_EVENT_PAL_TAG_WHISMUR 0x10E1 +#define OBJ_EVENT_PAL_TAG_EXPLOUD 0x10E0 +#define OBJ_EVENT_PAL_TAG_MAKUHITA 0x10DF +#define OBJ_EVENT_PAL_TAG_HARIYAMA 0x10DE +#define OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER 0x10DD +#define OBJ_EVENT_PAL_TAG_NOSEPASS 0x10DC +#define OBJ_EVENT_PAL_TAG_DELCATTY 0x10DB +#define OBJ_EVENT_PAL_TAG_SABLEYE 0x10DA +#define OBJ_EVENT_PAL_TAG_MAWILE 0x10D9 +#define OBJ_EVENT_PAL_TAG_LAIRON 0x10D8 +#define OBJ_EVENT_PAL_TAG_AGGRON 0x10D7 +#define OBJ_EVENT_PAL_TAG_MEDITITE 0x10D6 +#define OBJ_EVENT_PAL_TAG_MEDICHAM 0x10D5 +#define OBJ_EVENT_PAL_TAG_ELECTRIKE 0x10D4 +#define OBJ_EVENT_PAL_TAG_MANECTRIC 0x10D3 +#define OBJ_EVENT_PAL_TAG_MINUN 0x10D2 +#define OBJ_EVENT_PAL_TAG_VOLBEAT 0x10D1 +#define OBJ_EVENT_PAL_TAG_ILLUMISE 0x10D0 +#define OBJ_EVENT_PAL_TAG_ROSELIA 0x10CF +#define OBJ_EVENT_PAL_TAG_GULPIN 0x10CE +#define OBJ_EVENT_PAL_TAG_SWALOT 0x10CD +#define OBJ_EVENT_PAL_TAG_CARVANHA 0x10CC +#define OBJ_EVENT_PAL_TAG_SHARPEDO 0x10CB +#define OBJ_EVENT_PAL_TAG_WAILMER 0x10CA +#define OBJ_EVENT_PAL_TAG_WAILORD 0x10C9 +#define OBJ_EVENT_PAL_TAG_NUMEL 0x10C8 +#define OBJ_EVENT_PAL_TAG_CAMERUPT 0x10C7 +#define OBJ_EVENT_PAL_TAG_TORKOAL 0x10C6 +#define OBJ_EVENT_PAL_TAG_SPOINK 0x10C5 +#define OBJ_EVENT_PAL_TAG_GRUMPIG 0x10C4 +#define OBJ_EVENT_PAL_TAG_SPINDA 0x10C3 +#define OBJ_EVENT_PAL_TAG_TRAPINCH 0x10C2 +#define OBJ_EVENT_PAL_TAG_VIBRAVA 0x10C1 +#define OBJ_EVENT_PAL_TAG_FLYGON 0x10C0 +#define OBJ_EVENT_PAL_TAG_CACNEA 0x10BF +#define OBJ_EVENT_PAL_TAG_ALTARIA 0x10BE +#define OBJ_EVENT_PAL_TAG_ZANGOOSE 0x10BD +#define OBJ_EVENT_PAL_TAG_SEVIPER 0x10BC +#define OBJ_EVENT_PAL_TAG_SOLROCK 0x10BB +#define OBJ_EVENT_PAL_TAG_BARBOACH 0x10BA +#define OBJ_EVENT_PAL_TAG_WHISCASH 0x10B9 +#define OBJ_EVENT_PAL_TAG_CORPHISH 0x10B8 +#define OBJ_EVENT_PAL_TAG_CRAWDAUNT 0x10B7 +#define OBJ_EVENT_PAL_TAG_BALTOY 0x10B6 +#define OBJ_EVENT_PAL_TAG_CLAYDOL 0x10B5 +#define OBJ_EVENT_PAL_TAG_LILEEP 0x10B4 +#define OBJ_EVENT_PAL_TAG_CRADILY 0x10B3 +#define OBJ_EVENT_PAL_TAG_ANORITH 0x10B2 +#define OBJ_EVENT_PAL_TAG_ARMALDO 0x10B1 +#define OBJ_EVENT_PAL_TAG_FEEBAS 0x10B0 +#define OBJ_EVENT_PAL_TAG_MILOTIC 0x10AF +#define OBJ_EVENT_PAL_TAG_KECLEON 0x10AE +#define OBJ_EVENT_PAL_TAG_BANETTE 0x10AD +#define OBJ_EVENT_PAL_TAG_DUSKULL 0x10AC +#define OBJ_EVENT_PAL_TAG_DUSCLOPS 0x10AB +#define OBJ_EVENT_PAL_TAG_TROPIUS 0x10AA +#define OBJ_EVENT_PAL_TAG_CHIMECHO 0x10A9 +#define OBJ_EVENT_PAL_TAG_ABSOL 0x10A8 +#define OBJ_EVENT_PAL_TAG_WYNAUT 0x10A7 +#define OBJ_EVENT_PAL_TAG_SNORUNT 0x10A6 +#define OBJ_EVENT_PAL_TAG_GLALIE 0x10A5 +#define OBJ_EVENT_PAL_TAG_SPHEAL 0x10A4 +#define OBJ_EVENT_PAL_TAG_SEALEO 0x10A3 +#define OBJ_EVENT_PAL_TAG_WALREIN 0x10A2 +#define OBJ_EVENT_PAL_TAG_CLAMPERL 0x10A1 +#define OBJ_EVENT_PAL_TAG_HUNTAIL 0x10A0 +#define OBJ_EVENT_PAL_TAG_GOREBYSS 0x109F +#define OBJ_EVENT_PAL_TAG_RELICANTH 0x109E +#define OBJ_EVENT_PAL_TAG_LUVDISC 0x109D +#define OBJ_EVENT_PAL_TAG_BAGON 0x109C +#define OBJ_EVENT_PAL_TAG_SHELGON 0x109B +#define OBJ_EVENT_PAL_TAG_SALAMENCE 0x109A +#define OBJ_EVENT_PAL_TAG_BELDUM 0x1099 +#define OBJ_EVENT_PAL_TAG_METANG 0x1098 +#define OBJ_EVENT_PAL_TAG_REGIROCK 0x1097 +#define OBJ_EVENT_PAL_TAG_REGICE 0x1096 +#define OBJ_EVENT_PAL_TAG_REGISTEEL 0x1095 +#define OBJ_EVENT_PAL_TAG_LATIAS 0x1094 +#define OBJ_EVENT_PAL_TAG_LATIOS 0x1093 +#define OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER 0x1092 +#define OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER 0x1091 +#define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x1090 +#define OBJ_EVENT_PAL_TAG_JIRACHI 0x108F +#define OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER 0x108E #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -868,7 +815,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_KyogreReflection, OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION}, {gObjectEventPal_Groudon, OBJ_EVENT_PAL_TAG_GROUDON}, {gObjectEventPal_GroudonReflection, OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION}, - {gObjectEventPal_SubmarineShadow, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW}, {gObjectEventPal_Poochyena, OBJ_EVENT_PAL_TAG_POOCHYENA}, {gObjectEventPal_RedLeaf, OBJ_EVENT_PAL_TAG_RED_LEAF}, {gObjectEventPal_Deoxys, OBJ_EVENT_PAL_TAG_DEOXYS}, @@ -887,10 +833,8 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Wartortle, OBJ_EVENT_PAL_TAG_WARTORTLE}, {gObjectEventPal_Blastoise, OBJ_EVENT_PAL_TAG_BLASTOISE}, {gObjectEventPal_Caterpie, OBJ_EVENT_PAL_TAG_CATERPIE}, - {gObjectEventPal_Metapod, OBJ_EVENT_PAL_TAG_METAPOD}, {gObjectEventPal_Butterfree, OBJ_EVENT_PAL_TAG_BUTTERFREE}, {gObjectEventPal_Weedle, OBJ_EVENT_PAL_TAG_WEEDLE}, - {gObjectEventPal_Kakuna, OBJ_EVENT_PAL_TAG_KAKUNA}, {gObjectEventPal_Beedrill, OBJ_EVENT_PAL_TAG_BEEDRILL}, {gObjectEventPal_Pidgey, OBJ_EVENT_PAL_TAG_PIDGEY}, {gObjectEventPal_Pidgeotto, OBJ_EVENT_PAL_TAG_PIDGEOTTO}, @@ -909,85 +853,61 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Nidorina, OBJ_EVENT_PAL_TAG_NIDORINA}, {gObjectEventPal_Nidoqueen, OBJ_EVENT_PAL_TAG_NIDOQUEEN}, {gObjectEventPal_Nidoran_M, OBJ_EVENT_PAL_TAG_NIDORAN_M}, - {gObjectEventPal_Nidorino, OBJ_EVENT_PAL_TAG_NIDORINO}, {gObjectEventPal_Nidoking, OBJ_EVENT_PAL_TAG_NIDOKING}, - {gObjectEventPal_Clefairy, OBJ_EVENT_PAL_TAG_CLEFAIRY}, {gObjectEventPal_Clefable, OBJ_EVENT_PAL_TAG_CLEFABLE}, {gObjectEventPal_Vulpix, OBJ_EVENT_PAL_TAG_VULPIX}, {gObjectEventPal_Ninetales, OBJ_EVENT_PAL_TAG_NINETALES}, {gObjectEventPal_Jigglypuff, OBJ_EVENT_PAL_TAG_JIGGLYPUFF}, {gObjectEventPal_Wigglytuff, OBJ_EVENT_PAL_TAG_WIGGLYTUFF}, - {gObjectEventPal_Zubat, OBJ_EVENT_PAL_TAG_ZUBAT}, {gObjectEventPal_Golbat, OBJ_EVENT_PAL_TAG_GOLBAT}, - {gObjectEventPal_Oddish, OBJ_EVENT_PAL_TAG_ODDISH}, {gObjectEventPal_Gloom, OBJ_EVENT_PAL_TAG_GLOOM}, - {gObjectEventPal_Vileplume, OBJ_EVENT_PAL_TAG_VILEPLUME}, {gObjectEventPal_Paras, OBJ_EVENT_PAL_TAG_PARAS}, - {gObjectEventPal_Parasect, OBJ_EVENT_PAL_TAG_PARASECT}, {gObjectEventPal_Venonat, OBJ_EVENT_PAL_TAG_VENONAT}, {gObjectEventPal_Venomoth, OBJ_EVENT_PAL_TAG_VENOMOTH}, {gObjectEventPal_Diglett, OBJ_EVENT_PAL_TAG_DIGLETT}, {gObjectEventPal_Dugtrio, OBJ_EVENT_PAL_TAG_DUGTRIO}, {gObjectEventPal_Meowth, OBJ_EVENT_PAL_TAG_MEOWTH}, {gObjectEventPal_Persian, OBJ_EVENT_PAL_TAG_PERSIAN}, - {gObjectEventPal_Psyduck, OBJ_EVENT_PAL_TAG_PSYDUCK}, {gObjectEventPal_Golduck, OBJ_EVENT_PAL_TAG_GOLDUCK}, {gObjectEventPal_Mankey, OBJ_EVENT_PAL_TAG_MANKEY}, {gObjectEventPal_Primeape, OBJ_EVENT_PAL_TAG_PRIMEAPE}, - {gObjectEventPal_Growlithe, OBJ_EVENT_PAL_TAG_GROWLITHE}, {gObjectEventPal_Arcanine, OBJ_EVENT_PAL_TAG_ARCANINE}, {gObjectEventPal_Poliwag, OBJ_EVENT_PAL_TAG_POLIWAG}, {gObjectEventPal_Poliwhirl, OBJ_EVENT_PAL_TAG_POLIWHIRL}, - {gObjectEventPal_Poliwrath, OBJ_EVENT_PAL_TAG_POLIWRATH}, - {gObjectEventPal_Abra, OBJ_EVENT_PAL_TAG_ABRA}, {gObjectEventPal_Kadabra, OBJ_EVENT_PAL_TAG_KADABRA}, - {gObjectEventPal_Alakazam, OBJ_EVENT_PAL_TAG_ALAKAZAM}, {gObjectEventPal_Machop, OBJ_EVENT_PAL_TAG_MACHOP}, {gObjectEventPal_Machoke, OBJ_EVENT_PAL_TAG_MACHOKE}, {gObjectEventPal_Machamp, OBJ_EVENT_PAL_TAG_MACHAMP}, - {gObjectEventPal_Bellsprout, OBJ_EVENT_PAL_TAG_BELLSPROUT}, {gObjectEventPal_Weepinbell, OBJ_EVENT_PAL_TAG_WEEPINBELL}, {gObjectEventPal_Victreebel, OBJ_EVENT_PAL_TAG_VICTREEBEL}, {gObjectEventPal_Tentacool, OBJ_EVENT_PAL_TAG_TENTACOOL}, {gObjectEventPal_Tentacruel, OBJ_EVENT_PAL_TAG_TENTACRUEL}, - {gObjectEventPal_Geodude, OBJ_EVENT_PAL_TAG_GEODUDE}, {gObjectEventPal_Graveler, OBJ_EVENT_PAL_TAG_GRAVELER}, {gObjectEventPal_Golem, OBJ_EVENT_PAL_TAG_GOLEM}, {gObjectEventPal_Ponyta, OBJ_EVENT_PAL_TAG_PONYTA}, - {gObjectEventPal_Rapidash, OBJ_EVENT_PAL_TAG_RAPIDASH}, {gObjectEventPal_Slowpoke, OBJ_EVENT_PAL_TAG_SLOWPOKE}, {gObjectEventPal_Slowbro, OBJ_EVENT_PAL_TAG_SLOWBRO}, {gObjectEventPal_Magnemite, OBJ_EVENT_PAL_TAG_MAGNEMITE}, - {gObjectEventPal_Magneton, OBJ_EVENT_PAL_TAG_MAGNETON}, {gObjectEventPal_Farfetchd, OBJ_EVENT_PAL_TAG_FARFETCHD}, {gObjectEventPal_Doduo, OBJ_EVENT_PAL_TAG_DODUO}, {gObjectEventPal_Dodrio, OBJ_EVENT_PAL_TAG_DODRIO}, {gObjectEventPal_Seel, OBJ_EVENT_PAL_TAG_SEEL}, - {gObjectEventPal_Dewgong, OBJ_EVENT_PAL_TAG_DEWGONG}, - {gObjectEventPal_Grimer, OBJ_EVENT_PAL_TAG_GRIMER}, {gObjectEventPal_Muk, OBJ_EVENT_PAL_TAG_MUK}, {gObjectEventPal_Shellder, OBJ_EVENT_PAL_TAG_SHELLDER}, {gObjectEventPal_Cloyster, OBJ_EVENT_PAL_TAG_CLOYSTER}, {gObjectEventPal_Gastly, OBJ_EVENT_PAL_TAG_GASTLY}, {gObjectEventPal_Haunter, OBJ_EVENT_PAL_TAG_HAUNTER}, {gObjectEventPal_Gengar, OBJ_EVENT_PAL_TAG_GENGAR}, - {gObjectEventPal_Onix, OBJ_EVENT_PAL_TAG_ONIX}, - {gObjectEventPal_Drowzee, OBJ_EVENT_PAL_TAG_DROWZEE}, {gObjectEventPal_Hypno, OBJ_EVENT_PAL_TAG_HYPNO}, - {gObjectEventPal_Krabby, OBJ_EVENT_PAL_TAG_KRABBY}, {gObjectEventPal_Kingler, OBJ_EVENT_PAL_TAG_KINGLER}, {gObjectEventPal_Voltorb, OBJ_EVENT_PAL_TAG_VOLTORB}, - {gObjectEventPal_Electrode, OBJ_EVENT_PAL_TAG_ELECTRODE}, {gObjectEventPal_Exeggcute, OBJ_EVENT_PAL_TAG_EXEGGCUTE}, {gObjectEventPal_Exeggutor, OBJ_EVENT_PAL_TAG_EXEGGUTOR}, {gObjectEventPal_Cubone, OBJ_EVENT_PAL_TAG_CUBONE}, - {gObjectEventPal_Marowak, OBJ_EVENT_PAL_TAG_MAROWAK}, {gObjectEventPal_Hitmonlee, OBJ_EVENT_PAL_TAG_HITMONLEE}, {gObjectEventPal_Hitmonchan, OBJ_EVENT_PAL_TAG_HITMONCHAN}, {gObjectEventPal_Lickitung, OBJ_EVENT_PAL_TAG_LICKITUNG}, {gObjectEventPal_Koffing, OBJ_EVENT_PAL_TAG_KOFFING}, - {gObjectEventPal_Weezing, OBJ_EVENT_PAL_TAG_WEEZING}, - {gObjectEventPal_Rhyhorn, OBJ_EVENT_PAL_TAG_RHYHORN}, {gObjectEventPal_Rhydon, OBJ_EVENT_PAL_TAG_RHYDON}, {gObjectEventPal_Chansey, OBJ_EVENT_PAL_TAG_CHANSEY}, {gObjectEventPal_Tangela, OBJ_EVENT_PAL_TAG_TANGELA}, @@ -996,19 +916,16 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Seadra, OBJ_EVENT_PAL_TAG_SEADRA}, {gObjectEventPal_Goldeen, OBJ_EVENT_PAL_TAG_GOLDEEN}, {gObjectEventPal_Seaking, OBJ_EVENT_PAL_TAG_SEAKING}, - {gObjectEventPal_Staryu, OBJ_EVENT_PAL_TAG_STARYU}, {gObjectEventPal_Starmie, OBJ_EVENT_PAL_TAG_STARMIE}, {gObjectEventPal_Mr_Mime, OBJ_EVENT_PAL_TAG_MR_MIME}, {gObjectEventPal_Scyther, OBJ_EVENT_PAL_TAG_SCYTHER}, {gObjectEventPal_Jynx, OBJ_EVENT_PAL_TAG_JYNX}, - {gObjectEventPal_Electabuzz, OBJ_EVENT_PAL_TAG_ELECTABUZZ}, {gObjectEventPal_Magmar, OBJ_EVENT_PAL_TAG_MAGMAR}, {gObjectEventPal_Pinsir, OBJ_EVENT_PAL_TAG_PINSIR}, {gObjectEventPal_Tauros, OBJ_EVENT_PAL_TAG_TAUROS}, {gObjectEventPal_Magikarp, OBJ_EVENT_PAL_TAG_MAGIKARP}, {gObjectEventPal_Gyarados, OBJ_EVENT_PAL_TAG_GYARADOS}, {gObjectEventPal_Lapras, OBJ_EVENT_PAL_TAG_LAPRAS}, - {gObjectEventPal_Ditto, OBJ_EVENT_PAL_TAG_DITTO}, {gObjectEventPal_Eevee, OBJ_EVENT_PAL_TAG_EEVEE}, {gObjectEventPal_Vaporeon, OBJ_EVENT_PAL_TAG_VAPOREON}, {gObjectEventPal_Jolteon, OBJ_EVENT_PAL_TAG_JOLTEON}, @@ -1028,7 +945,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Dragonite, OBJ_EVENT_PAL_TAG_DRAGONITE}, {gObjectEventPal_Mewtwo, OBJ_EVENT_PAL_TAG_MEWTWO}, {gObjectEventPal_Mew, OBJ_EVENT_PAL_TAG_MEW}, - {gObjectEventPal_Chikorita, OBJ_EVENT_PAL_TAG_CHIKORITA}, {gObjectEventPal_Bayleef, OBJ_EVENT_PAL_TAG_BAYLEEF}, {gObjectEventPal_Meganium, OBJ_EVENT_PAL_TAG_MEGANIUM}, {gObjectEventPal_Cyndaquil, OBJ_EVENT_PAL_TAG_CYNDAQUIL}, @@ -1052,14 +968,12 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Cleffa, OBJ_EVENT_PAL_TAG_CLEFFA}, {gObjectEventPal_Igglybuff, OBJ_EVENT_PAL_TAG_IGGLYBUFF}, {gObjectEventPal_Togepi, OBJ_EVENT_PAL_TAG_TOGEPI}, - {gObjectEventPal_Togetic, OBJ_EVENT_PAL_TAG_TOGETIC}, {gObjectEventPal_Natu, OBJ_EVENT_PAL_TAG_NATU}, {gObjectEventPal_Xatu, OBJ_EVENT_PAL_TAG_XATU}, {gObjectEventPal_Mareep, OBJ_EVENT_PAL_TAG_MAREEP}, {gObjectEventPal_Flaaffy, OBJ_EVENT_PAL_TAG_FLAAFFY}, {gObjectEventPal_Ampharos, OBJ_EVENT_PAL_TAG_AMPHAROS}, {gObjectEventPal_Bellossom, OBJ_EVENT_PAL_TAG_BELLOSSOM}, - {gObjectEventPal_Marill, OBJ_EVENT_PAL_TAG_MARILL}, {gObjectEventPal_Azumarill, OBJ_EVENT_PAL_TAG_AZUMARILL}, {gObjectEventPal_Sudowoodo, OBJ_EVENT_PAL_TAG_SUDOWOODO}, {gObjectEventPal_Politoed, OBJ_EVENT_PAL_TAG_POLITOED}, @@ -1070,21 +984,18 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Sunkern, OBJ_EVENT_PAL_TAG_SUNKERN}, {gObjectEventPal_Sunflora, OBJ_EVENT_PAL_TAG_SUNFLORA}, {gObjectEventPal_Yanma, OBJ_EVENT_PAL_TAG_YANMA}, - {gObjectEventPal_Wooper, OBJ_EVENT_PAL_TAG_WOOPER}, {gObjectEventPal_Quagsire, OBJ_EVENT_PAL_TAG_QUAGSIRE}, {gObjectEventPal_Espeon, OBJ_EVENT_PAL_TAG_ESPEON}, {gObjectEventPal_Umbreon, OBJ_EVENT_PAL_TAG_UMBREON}, {gObjectEventPal_Murkrow, OBJ_EVENT_PAL_TAG_MURKROW}, {gObjectEventPal_Slowking, OBJ_EVENT_PAL_TAG_SLOWKING}, {gObjectEventPal_Misdreavus, OBJ_EVENT_PAL_TAG_MISDREAVUS}, - {gObjectEventPal_Unown, OBJ_EVENT_PAL_TAG_UNOWN}, {gObjectEventPal_Wobbuffet, OBJ_EVENT_PAL_TAG_WOBBUFFET}, {gObjectEventPal_Girafarig, OBJ_EVENT_PAL_TAG_GIRAFARIG}, {gObjectEventPal_Pineco, OBJ_EVENT_PAL_TAG_PINECO}, {gObjectEventPal_Forretress, OBJ_EVENT_PAL_TAG_FORRETRESS}, {gObjectEventPal_Dunsparce, OBJ_EVENT_PAL_TAG_DUNSPARCE}, {gObjectEventPal_Gligar, OBJ_EVENT_PAL_TAG_GLIGAR}, - {gObjectEventPal_Steelix, OBJ_EVENT_PAL_TAG_STEELIX}, {gObjectEventPal_Snubbull, OBJ_EVENT_PAL_TAG_SNUBBULL}, {gObjectEventPal_Granbull, OBJ_EVENT_PAL_TAG_GRANBULL}, {gObjectEventPal_Qwilfish, OBJ_EVENT_PAL_TAG_QWILFISH}, @@ -1094,7 +1005,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Sneasel, OBJ_EVENT_PAL_TAG_SNEASEL}, {gObjectEventPal_Teddiursa, OBJ_EVENT_PAL_TAG_TEDDIURSA}, {gObjectEventPal_Ursaring, OBJ_EVENT_PAL_TAG_URSARING}, - {gObjectEventPal_Slugma, OBJ_EVENT_PAL_TAG_SLUGMA}, {gObjectEventPal_Magcargo, OBJ_EVENT_PAL_TAG_MAGCARGO}, {gObjectEventPal_Swinub, OBJ_EVENT_PAL_TAG_SWINUB}, {gObjectEventPal_Piloswine, OBJ_EVENT_PAL_TAG_PILOSWINE}, @@ -1104,7 +1014,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Delibird, OBJ_EVENT_PAL_TAG_DELIBIRD}, {gObjectEventPal_Mantine, OBJ_EVENT_PAL_TAG_MANTINE}, {gObjectEventPal_Skarmory, OBJ_EVENT_PAL_TAG_SKARMORY}, - {gObjectEventPal_Houndour, OBJ_EVENT_PAL_TAG_HOUNDOUR}, {gObjectEventPal_Houndoom, OBJ_EVENT_PAL_TAG_HOUNDOOM}, {gObjectEventPal_Kingdra, OBJ_EVENT_PAL_TAG_KINGDRA}, {gObjectEventPal_Phanpy, OBJ_EVENT_PAL_TAG_PHANPY}, @@ -1123,7 +1032,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Entei, OBJ_EVENT_PAL_TAG_ENTEI}, {gObjectEventPal_Suicune, OBJ_EVENT_PAL_TAG_SUICUNE}, {gObjectEventPal_Larvitar, OBJ_EVENT_PAL_TAG_LARVITAR}, - {gObjectEventPal_Pupitar, OBJ_EVENT_PAL_TAG_PUPITAR}, {gObjectEventPal_Tyranitar, OBJ_EVENT_PAL_TAG_TYRANITAR}, {gObjectEventPal_Lugia_Follower, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER}, {gObjectEventPal_HoOh_Follower, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER}, @@ -1131,7 +1039,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Treecko, OBJ_EVENT_PAL_TAG_TREECKO}, {gObjectEventPal_Grovyle, OBJ_EVENT_PAL_TAG_GROVYLE}, {gObjectEventPal_Sceptile, OBJ_EVENT_PAL_TAG_SCEPTILE}, - {gObjectEventPal_Torchic, OBJ_EVENT_PAL_TAG_TORCHIC}, {gObjectEventPal_Combusken, OBJ_EVENT_PAL_TAG_COMBUSKEN}, {gObjectEventPal_Blaziken, OBJ_EVENT_PAL_TAG_BLAZIKEN}, {gObjectEventPal_Mudkip, OBJ_EVENT_PAL_TAG_MUDKIP}, @@ -1142,7 +1049,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Zigzagoon_Follower, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER}, {gObjectEventPal_Linoone, OBJ_EVENT_PAL_TAG_LINOONE}, {gObjectEventPal_Wurmple, OBJ_EVENT_PAL_TAG_WURMPLE}, - {gObjectEventPal_Silcoon, OBJ_EVENT_PAL_TAG_SILCOON}, {gObjectEventPal_Beautifly, OBJ_EVENT_PAL_TAG_BEAUTIFLY}, {gObjectEventPal_Cascoon, OBJ_EVENT_PAL_TAG_CASCOON}, {gObjectEventPal_Dustox, OBJ_EVENT_PAL_TAG_DUSTOX}, @@ -1156,8 +1062,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Swellow, OBJ_EVENT_PAL_TAG_SWELLOW}, {gObjectEventPal_Wingull, OBJ_EVENT_PAL_TAG_WINGULL}, {gObjectEventPal_Pelipper, OBJ_EVENT_PAL_TAG_PELIPPER}, - {gObjectEventPal_Ralts, OBJ_EVENT_PAL_TAG_RALTS}, - {gObjectEventPal_Kirlia, OBJ_EVENT_PAL_TAG_KIRLIA}, {gObjectEventPal_Gardevoir, OBJ_EVENT_PAL_TAG_GARDEVOIR}, {gObjectEventPal_Surskit, OBJ_EVENT_PAL_TAG_SURSKIT}, {gObjectEventPal_Masquerain, OBJ_EVENT_PAL_TAG_MASQUERAIN}, @@ -1170,24 +1074,20 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Ninjask, OBJ_EVENT_PAL_TAG_NINJASK}, {gObjectEventPal_Shedinja, OBJ_EVENT_PAL_TAG_SHEDINJA}, {gObjectEventPal_Whismur, OBJ_EVENT_PAL_TAG_WHISMUR}, - {gObjectEventPal_Loudred, OBJ_EVENT_PAL_TAG_LOUDRED}, {gObjectEventPal_Exploud, OBJ_EVENT_PAL_TAG_EXPLOUD}, {gObjectEventPal_Makuhita, OBJ_EVENT_PAL_TAG_MAKUHITA}, {gObjectEventPal_Hariyama, OBJ_EVENT_PAL_TAG_HARIYAMA}, {gObjectEventPal_Azurill_Follower, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER}, {gObjectEventPal_Nosepass, OBJ_EVENT_PAL_TAG_NOSEPASS}, - {gObjectEventPal_Skitty_Follower, OBJ_EVENT_PAL_TAG_SKITTY_FOLLOWER}, {gObjectEventPal_Delcatty, OBJ_EVENT_PAL_TAG_DELCATTY}, {gObjectEventPal_Sableye, OBJ_EVENT_PAL_TAG_SABLEYE}, {gObjectEventPal_Mawile, OBJ_EVENT_PAL_TAG_MAWILE}, - {gObjectEventPal_Aron, OBJ_EVENT_PAL_TAG_ARON}, {gObjectEventPal_Lairon, OBJ_EVENT_PAL_TAG_LAIRON}, {gObjectEventPal_Aggron, OBJ_EVENT_PAL_TAG_AGGRON}, {gObjectEventPal_Meditite, OBJ_EVENT_PAL_TAG_MEDITITE}, {gObjectEventPal_Medicham, OBJ_EVENT_PAL_TAG_MEDICHAM}, {gObjectEventPal_Electrike, OBJ_EVENT_PAL_TAG_ELECTRIKE}, {gObjectEventPal_Manectric, OBJ_EVENT_PAL_TAG_MANECTRIC}, - {gObjectEventPal_Plusle, OBJ_EVENT_PAL_TAG_PLUSLE}, {gObjectEventPal_Minun, OBJ_EVENT_PAL_TAG_MINUN}, {gObjectEventPal_Volbeat, OBJ_EVENT_PAL_TAG_VOLBEAT}, {gObjectEventPal_Illumise, OBJ_EVENT_PAL_TAG_ILLUMISE}, @@ -1208,12 +1108,9 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Vibrava, OBJ_EVENT_PAL_TAG_VIBRAVA}, {gObjectEventPal_Flygon, OBJ_EVENT_PAL_TAG_FLYGON}, {gObjectEventPal_Cacnea, OBJ_EVENT_PAL_TAG_CACNEA}, - {gObjectEventPal_Cacturne, OBJ_EVENT_PAL_TAG_CACTURNE}, - {gObjectEventPal_Swablu, OBJ_EVENT_PAL_TAG_SWABLU}, {gObjectEventPal_Altaria, OBJ_EVENT_PAL_TAG_ALTARIA}, {gObjectEventPal_Zangoose, OBJ_EVENT_PAL_TAG_ZANGOOSE}, {gObjectEventPal_Seviper, OBJ_EVENT_PAL_TAG_SEVIPER}, - {gObjectEventPal_Lunatone, OBJ_EVENT_PAL_TAG_LUNATONE}, {gObjectEventPal_Solrock, OBJ_EVENT_PAL_TAG_SOLROCK}, {gObjectEventPal_Barboach, OBJ_EVENT_PAL_TAG_BARBOACH}, {gObjectEventPal_Whiscash, OBJ_EVENT_PAL_TAG_WHISCASH}, @@ -1227,9 +1124,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Armaldo, OBJ_EVENT_PAL_TAG_ARMALDO}, {gObjectEventPal_Feebas, OBJ_EVENT_PAL_TAG_FEEBAS}, {gObjectEventPal_Milotic, OBJ_EVENT_PAL_TAG_MILOTIC}, - {gObjectEventPal_Castform, OBJ_EVENT_PAL_TAG_CASTFORM}, {gObjectEventPal_Kecleon, OBJ_EVENT_PAL_TAG_KECLEON}, - {gObjectEventPal_Shuppet, OBJ_EVENT_PAL_TAG_SHUPPET}, {gObjectEventPal_Banette, OBJ_EVENT_PAL_TAG_BANETTE}, {gObjectEventPal_Duskull, OBJ_EVENT_PAL_TAG_DUSKULL}, {gObjectEventPal_Dusclops, OBJ_EVENT_PAL_TAG_DUSCLOPS}, @@ -1252,7 +1147,6 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Salamence, OBJ_EVENT_PAL_TAG_SALAMENCE}, {gObjectEventPal_Beldum, OBJ_EVENT_PAL_TAG_BELDUM}, {gObjectEventPal_Metang, OBJ_EVENT_PAL_TAG_METANG}, - {gObjectEventPal_Metagross, OBJ_EVENT_PAL_TAG_METAGROSS}, {gObjectEventPal_Regirock, OBJ_EVENT_PAL_TAG_REGIROCK}, {gObjectEventPal_Regice, OBJ_EVENT_PAL_TAG_REGICE}, {gObjectEventPal_Registeel, OBJ_EVENT_PAL_TAG_REGISTEEL}, @@ -1337,10 +1231,10 @@ static const u16 sReflectionPaletteTags_SSTidal[] = { }; static const u16 sReflectionPaletteTags_SubmarineShadow[] = { - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, }; static const u16 sReflectionPaletteTags_Kyogre[] = { @@ -1383,7 +1277,7 @@ static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = { {OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre}, {OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon}, {OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3}, - {OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, sReflectionPaletteTags_SubmarineShadow}, + {OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SubmarineShadow}, {OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf}, {OBJ_EVENT_PAL_TAG_NONE, NULL}, }; From 005059dfed4b58ffc9030669e51ef21a4c1ed114 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Fri, 11 Feb 2022 10:51:47 -0800 Subject: [PATCH 18/71] Squashed commit of the following: commit fabad022015fe260e9e21cbffee87c1f1ae3649a Merge: 087244104 eb07617a2 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Thu Feb 10 16:03:45 2022 -0800 Merge branch 'pret:master' into master commit eb07617a2007edcd775ea4f1ee508bc1d76a9d7b Merge: 7d2344c07 a86a27918 Author: GriffinR Date: Wed Feb 9 08:34:10 2022 -0500 Merge pull request #1623 from kiliwily/master Update money.c commit a86a279184ce1013ca0b41a079419192ac07e736 Author: kiliwily <69381603+kiliwily@users.noreply.github.com> Date: Sun Feb 6 16:25:56 2022 +0100 Update money.c commit 7d2344c07bea9a46993a92d4611fba80545acdd2 Merge: f494238a9 dc7d86f02 Author: GriffinR Date: Wed Feb 2 22:09:36 2022 -0500 Merge pull request #1616 from GriffinRichards/missing-req Add missing :req, remove old macros commit f494238a9d1f8f486891845a43983e187dbeadf0 Merge: e30b16f0f 1ff0b0efa Author: GriffinR Date: Sun Jan 30 23:00:05 2022 -0500 Merge pull request #1621 from GriffinRichards/constants-collision Add missing collision constant usage commit 1ff0b0efa96180a774273a4c222a805237e6e7c6 Author: GriffinR Date: Sat Jan 29 21:13:46 2022 -0500 Add missing collision constant usage commit e30b16f0fd1c5e7b81e5ca62064869fa036e5a58 Author: GriffinR Date: Wed Jan 26 21:50:15 2022 -0500 Fix Swap_HandleQuitSwappingResposne typo commit 2efbd5f549bd03cfdaea2c84d48d5fb706034464 Merge: 4188dd405 3d0326106 Author: GriffinR Date: Wed Jan 26 17:51:56 2022 -0500 Merge pull request #1608 from GriffinRichards/fix-fieldmap Fix some incorrect fieldmap names commit 4188dd405c07943da9fb6d5c048d5845a94e0669 Merge: 9f2b6ab2f 6470b0d00 Author: GriffinR Date: Wed Jan 26 17:44:26 2022 -0500 Merge pull request #1620 from LOuroboros/gBallSpriteTemplates Used ball constants in gBallSpriteTemplates commit 6470b0d0044c0db27f53a10dede99db7bf51a9fd Author: LOuroboros Date: Wed Jan 26 18:36:21 2022 -0300 Used ball constants in gBallSpriteTemplates commit dc7d86f026c01682bd024fabb0ce206eacb81c35 Author: GriffinR Date: Sun Jan 23 19:26:22 2022 -0500 Add new macro comments commit 2495d1813239cd8d888c160b08c23500ba4759a7 Author: GriffinR Date: Sun Jan 23 18:51:56 2022 -0500 Add missing :req, remove old macros commit 9f2b6ab2f2b7d5937342cef3166a652d882f1d94 Merge: 79dfac92c 2cc301603 Author: GriffinR Date: Sat Jan 22 21:41:37 2022 -0500 Merge pull request #1613 from Kurausukun/m4asymbols Move M4A Track Definitions commit 2cc301603e47ece925deeceaf3c363b7250781ce Author: Kurausukun Date: Sat Jan 22 21:30:39 2022 -0500 lmao whitespace commit 0872441048b8243ad61c25826bf28d0bf315728b Merge: 3c46f3194 79dfac92c Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sat Jan 22 18:28:09 2022 -0800 Merge branch 'pret:master' into master commit 3b756bfb3dd23bbdb2fb74606c0b064e92002a45 Author: Kurausukun Date: Sat Jan 22 20:38:41 2022 -0500 fix compilation on modern commit 317e302147672d97bfcfa73efeb8372d797cee95 Author: Kurausukun Date: Sat Jan 22 19:43:11 2022 -0500 fix inconsistent indentation commit 04013fbdf2e3d06ba27ec25111c54798d92bc31d Author: Kurausukun Date: Sat Jan 22 19:41:31 2022 -0500 forgot we could do this commit a83e41b2ccf87fe8b396280b34f71328b191a861 Author: Kurausukun Date: Sat Jan 22 19:37:46 2022 -0500 move m4a track definitions commit 3d0326106ed683911da66eee1bf94becadc7a2db Author: GriffinR Date: Fri Jan 21 12:48:19 2022 -0500 Z coord / height -> elevation commit 79dfac92c9bdd7ea25e31f152c01041eb1ad25b4 Merge: 874317268 30d970441 Author: GriffinR Date: Fri Jan 21 09:55:43 2022 -0500 Merge pull request #1604 from GriffinRichards/clean-spinda Document Spinda spot algorithm commit fb81d9ad4a19b7d653e44787e5647bda794757fd Author: GriffinR Date: Thu Jan 20 23:26:39 2022 -0500 Correct map data comment commit 874317268616ce045afcfcfc8ecafe6480081398 Merge: 062cdbe01 7d75e1631 Author: GriffinR Date: Thu Jan 20 12:11:27 2022 -0500 Merge pull request #1612 from AsparagusEduardo/pret_misc Small documentation and cleanup commit 7d75e16312381074fe4e31cf28f2e5b405a9bc59 Author: Eduardo Quezada D'Ottone Date: Thu Jan 20 12:25:48 2022 -0300 Small documentation and cleanup commit 062cdbe01cbbce5845daba7d1b880c716f3beff8 Merge: a7e6045d7 bd43b905b Author: GriffinR Date: Thu Jan 20 08:53:44 2022 -0500 Merge pull request #1599 from GriffinRichards/fix-tilemaps Break up graphics/interface and graphics/misc commit a7e6045d71d2d21c4fa5a494d112c6b38226eaec Merge: 69759b2d1 f899a02ac Author: GriffinR Date: Wed Jan 19 22:17:37 2022 -0500 Merge pull request #1597 from GriffinRichards/misc-cleanup Miscellaneous fixes commit c4f33f2b2bbddaafff817721d9266273ee619162 Author: GriffinR Date: Wed Jan 19 12:54:55 2022 -0500 TRAVERSABLE->UNUSED, rename MB_SECRET_BASE_OBSTACLE commit e682c12519377741bc55fa55c6b9deb963614ed6 Author: GriffinR Date: Wed Jan 19 12:39:11 2022 -0500 sTileBitAttributes to sparse array, rename MB_UNNUSED_CAVE commit e3b49604d4d8981c9fa599cbc23874ac61036c9e Author: GriffinR Date: Wed Jan 19 10:59:37 2022 -0500 Use metatile layer constants in shop commit 8200fda14e5cddabcd2a4aaddf4f558cfbf898fb Author: GriffinR Date: Wed Jan 19 10:56:54 2022 -0500 Fix decorations metatile attribute names commit a8b466dc80eb22146c6bc517d44fdc133a646555 Author: GriffinR Date: Wed Jan 19 10:15:32 2022 -0500 Disambiguate fieldmap names commit f127e64a3ca2899510622f012bc3823da2c5cd23 Author: GriffinR Date: Wed Jan 19 09:37:12 2022 -0500 Name overworld tilemaps for their bg, add layer type constants commit 30d970441839e8b2473f6962ab9b70f4f8422507 Author: GriffinR Date: Mon Jan 17 17:27:17 2022 -0500 Specify unsigned in spot comment commit 313f14ed63f52b6b4371cabe858c5cde5705cc0f Author: GriffinR Date: Mon Jan 17 17:00:18 2022 -0500 Add Spinda spot color constants commit 177863da4728237c8fef4e6b69417d91d1b003cd Author: GriffinR Date: Mon Jan 17 16:04:02 2022 -0500 Fix typo commit 225147a94f8baf30c6e7db7084c5b8663d52ca3c Author: GriffinR Date: Mon Jan 17 13:19:52 2022 -0500 Document Spinda spot algorithm commit 69759b2d128ea27f3bc9ebdb7e58ea3698d0a491 Merge: 14a11899c 8b920691e Author: GriffinR Date: Sun Jan 16 17:44:58 2022 -0500 Merge pull request #1601 from GriffinRichards/fix-decor-flag Fix FLAG_DECORATION_0 name commit 14a11899cfcc8a053b6fed45356b524097c8aa70 Merge: dad413276 a4d31da92 Author: GriffinR Date: Sun Jan 16 17:37:26 2022 -0500 Merge pull request #1603 from LOuroboros/patch-2 Updated the value of MAX_MAP_DATA_SIZE commit a4d31da9233f238be28c397d7f83c2028bcdffb7 Author: LOuroboros Date: Sun Jan 16 19:22:28 2022 -0300 Updated the value of MAX_MAP_DATA_SIZE commit dad4132762e56eadfa0fe5d7c243587def429f38 Merge: 60162a98b 429d53b95 Author: GriffinR Date: Sun Jan 16 14:03:20 2022 -0500 Merge pull request #1596 from GriffinRichards/player-avatar-arr-const Add missing array constants in field_player_avatar commit 60162a98b9251fda33f4a84912e75ea7dd309eac Merge: 755d9143a 6d6ff9126 Author: GriffinR Date: Sun Jan 16 13:55:16 2022 -0500 Merge pull request #1602 from GriffinRichards/charmap-quote Allow right single quotation mark in charmap commit 6d6ff9126854d5439fb859a74fbe8db4e4d0f96e Author: GriffinR Date: Sun Jan 16 10:29:15 2022 -0500 Allow right single quotation mark in charmap commit 755d9143a6c727d64f4a31418d4c4fdb1a47e110 Merge: 9ded1eb14 fd7457b05 Author: GriffinR Date: Sat Jan 15 12:20:22 2022 -0500 Merge pull request #1600 from GriffinRichards/remove-berry-fix Remove berry fix commit bd43b905b7ce5489224d3a2144504df6f7687f1f Author: GriffinR Date: Fri Jan 14 12:39:00 2022 -0500 Apply palettes to some field effect pngs commit 4dec9b83a3a0b424284dae02506d159931cc1408 Author: GriffinR Date: Fri Jan 14 12:29:30 2022 -0500 Move more graphics out of misc commit 9ded1eb14e4ce38724fccf4f9304913e8f3f4969 Merge: fa2d25d36 1a33187ba Author: GriffinR Date: Fri Jan 14 09:12:05 2022 -0500 Merge pull request #1598 from atasro2/master Give sensical names to Unused_AdjustBgMosaic commit 1a33187badc9e5530f75be99957bfea9daf3f2ff Author: MCboy <16516292+atasro2@users.noreply.github.com> Date: Fri Jan 14 13:48:46 2022 +0330 Move enum to bg.h commit 998900bd1b8394edaeafe7c32debcda62cf06561 Author: MCboy <16516292+atasro2@users.noreply.github.com> Date: Fri Jan 14 13:37:27 2022 +0330 Give sensical names to Unused_AdjustBgMosaic commit fd7457b05a1b109ae42cb4a956266b6acebb5644 Author: GriffinR Date: Thu Jan 13 15:26:20 2022 -0500 Remove berry fix commit f899a02ac642e66ab9b6baa28903921863529171 Author: GriffinR Date: Wed Jan 12 18:34:21 2022 -0500 Use MON_GIVEN_TO_ constants for givemon commit 01af8e877f039a0e1427de5e52442602446719cc Author: GriffinR Date: Tue Jan 11 14:18:22 2022 -0500 Move starter choose out of interface/misc commit 694aa3c65dd4d926616dcab414e8c1647f357c54 Author: GriffinR Date: Tue Jan 11 11:59:24 2022 -0500 Move balls, shop, link, map popups, and bag out of interface commit fa2d25d3665fd499efdc439a79ac05f647a3e5c2 Merge: 4024b3f1b ca9bc34be Author: GriffinR Date: Tue Jan 11 12:26:02 2022 -0500 Merge pull request #1594 from GriffinRichards/pokestorage-clean Misc pokemon_storage_system cleanup commit d782d3544dd3c43ac2034df4a9a445d7ccda1982 Author: GriffinR Date: Tue Jan 11 11:46:58 2022 -0500 Move pokeblock graphics out of interface commit 565dd243098013c8665bc7f95106e2b5657e4e82 Author: GriffinR Date: Tue Jan 11 11:37:13 2022 -0500 Move party menu graphics out of interface commit 7103839a615463eeadeb671ad75436dd2e4a52e3 Author: GriffinR Date: Tue Jan 11 11:14:59 2022 -0500 Move summary screen graphics out of interface, fix some names commit fde18b47746b577c4d2037ab065ce66062da2a67 Author: GriffinR Date: Tue Jan 11 10:42:00 2022 -0500 Fix berry crusher graphics name commit 0a78cb5c9edf7d6b39297a5b4c874d59c6a69b39 Author: GriffinR Date: Tue Jan 11 10:04:47 2022 -0500 Fix some battle dome graphics names commit 49418f8c017bf012e738527c14b3a92edec54d3e Author: GriffinR Date: Tue Jan 11 02:19:20 2022 -0500 Add missing commas commit 3a6c633905c3fddb893aa6484a2cce4f0135ca26 Author: GriffinR Date: Tue Jan 11 02:16:25 2022 -0500 Add seteventmon commit 110fbc559cc658179e127117c68d9eea9474a61a Author: GriffinR Date: Tue Jan 11 02:08:14 2022 -0500 Make item optional for givemon and setwildbattle commit 4024b3f1b3a9d51e42fc8a49cf361bd22484c82f Merge: ded202136 d4111d552 Author: GriffinR Date: Mon Jan 10 14:56:26 2022 -0500 Merge pull request #1590 from GriffinRichards/dex-enum Convert pokedex defines to enums commit 3c46f3194eaf4235ad5cfaa53966559a84214c41 Merge: 4375a8014 ded202136 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sun Jan 9 13:54:52 2022 -0800 Merge branch 'pret:master' into master commit 429d53b95c6e7555931486fd2f713d9182a7f150 Author: GriffinR Date: Sun Jan 9 11:12:35 2022 -0500 Use runningState directly in CheckMovementInputNotOnBike commit 8b920691e6a7ac3b14cd553cc3020ded2f1ca4d9 Author: GriffinR Date: Sun Jan 9 01:31:42 2022 -0500 Fix FLAG_DECORATION_0 name commit 4375a8014263138684e797894d9fb72d9103a129 Merge: a499e8dc7 30dbf3f85 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sat Jan 8 21:47:19 2022 -0800 Merge branch 'pret:master' into master commit 8f1a760937a7ac10da18b1bdb980cb7687e1789e Author: GriffinR Date: Sat Jan 8 23:53:55 2022 -0500 Add missing array constants in field_player_avatar commit ca9bc34bea71d12e335e2a009580b3a8b4d01e65 Author: GriffinR Date: Fri Jan 7 17:26:23 2022 -0500 Clean up pokemon_storage_system graphics commit 5cbe572607dbed0dfd4937fa05e115da99ef9e69 Author: GriffinR Date: Fri Jan 7 17:02:12 2022 -0500 Add window constants in pokemon_storage_system commit d4111d55208d0f6ded77352859f6460a0c41e7e5 Author: GriffinR Date: Wed Jan 5 14:50:19 2022 -0500 Add comment about pokedex reordering commit 5d033c2e4d5001c65e85fdcf5c780e5b88307063 Author: GriffinR Date: Wed Jan 5 12:18:49 2022 -0500 Convert pokedex defines to enums commit ce55e58ad83e57b7e1fde7eeb3c3c94365fe0f12 Author: GriffinR Date: Tue Jan 4 10:09:42 2022 -0500 Misc cleanup --- .gitignore | 1 + Makefile | 16 +- asm/macros.inc | 129 -- asm/macros/asm.inc | 4 +- asm/macros/event.inc | 17 +- asm/macros/field_effect_script.inc | 16 +- asm/macros/function.inc | 10 +- asm/macros/m4a.inc | 10 +- asm/macros/map.inc | 106 +- asm/macros/pokemon_data.inc | 56 - asm/macros/window.inc | 35 - berry_fix/Makefile | 203 ---- berry_fix/asm/berry_fix_header.inc | 35 - berry_fix/asm/loader.s | 119 -- berry_fix/charmap.txt | 1067 ----------------- berry_fix/data/data.s | 4 - berry_fix/ld_script.sed | 14 - berry_fix/ld_script.txt | 31 - berry_fix/payload/Makefile | 209 ---- berry_fix/payload/asm/crt0.s | 82 -- berry_fix/payload/asm/libagbsyscall.s | 46 - berry_fix/payload/asm/macros/function.inc | 29 - berry_fix/payload/charmap.txt | 1067 ----------------- berry_fix/payload/common_syms/agb_flash.txt | 10 - berry_fix/payload/common_syms/main.txt | 9 - berry_fix/payload/common_syms/rtc.txt | 2 - berry_fix/payload/constants/gba_constants.inc | 490 -------- berry_fix/payload/graphics/debug_digits.png | Bin 166 -> 0 bytes berry_fix/payload/graphics/msg_box.png | Bin 2631 -> 0 bytes berry_fix/payload/graphics/msg_box.tilemap | Bin 8192 -> 0 bytes .../payload/include/constants/game_stat.h | 56 - berry_fix/payload/include/constants/vars.h | 196 --- berry_fix/payload/include/flash.h | 55 - berry_fix/payload/include/gba/defines.h | 87 -- .../payload/include/gba/flash_internal.h | 85 -- berry_fix/payload/include/gba/gba.h | 12 - berry_fix/payload/include/gba/io_reg.h | 770 ------------ berry_fix/payload/include/gba/isagbprint.h | 50 - berry_fix/payload/include/gba/m4a_internal.h | 467 -------- berry_fix/payload/include/gba/macro.h | 247 ---- berry_fix/payload/include/gba/multiboot.h | 55 - berry_fix/payload/include/gba/syscall.h | 57 - berry_fix/payload/include/gba/types.h | 146 --- berry_fix/payload/include/global.berry.h | 62 - berry_fix/payload/include/global.fieldmap.h | 310 ----- berry_fix/payload/include/global.h | 876 -------------- berry_fix/payload/include/main.h | 45 - berry_fix/payload/include/pokemon.h | 154 --- berry_fix/payload/include/rtc.h | 15 - berry_fix/payload/include/siirtc.h | 54 - berry_fix/payload/ld_script.sed | 14 - berry_fix/payload/ld_script.txt | 107 -- berry_fix/payload/rom.sha1 | 1 - berry_fix/payload/src/agb_flash.c | 296 ----- berry_fix/payload/src/agb_flash_1m.c | 86 -- berry_fix/payload/src/agb_flash_le.c | 31 - berry_fix/payload/src/agb_flash_mx.c | 193 --- berry_fix/payload/src/flash.c | 752 ------------ berry_fix/payload/src/main.c | 289 ----- berry_fix/payload/src/rtc.c | 346 ------ berry_fix/payload/src/siirtc.c | 432 ------- berry_fix/payload/sym_bss.txt | 5 - berry_fix/payload/sym_common.txt | 29 - berry_fix/payload/sym_ewram.txt | 3 - berry_fix/rom.sha1 | 1 - charmap.txt | 1 + common_syms/overworld.txt | 6 +- data/ereader_link_data.s | 6 - data/map_events.s | 1 + data/maps.s | 1 + data/maps/AncientTomb/scripts.inc | 2 +- data/maps/AquaHideout_B1F/scripts.inc | 4 +- .../scripts.inc | 2 +- .../scripts.inc | 2 +- .../BattleFrontier_OutsideEast/scripts.inc | 2 +- data/maps/BirthIsland_Exterior/scripts.inc | 5 +- data/maps/DesertRuins/scripts.inc | 2 +- data/maps/FarawayIsland_Interior/scripts.inc | 5 +- data/maps/IslandCave/scripts.inc | 2 +- data/maps/LavaridgeTown_Gym_1F/scripts.inc | 4 +- .../scripts.inc | 2 +- .../scripts.inc | 18 +- data/maps/MarineCave_End/scripts.inc | 2 +- .../MossdeepCity_StevensHouse/scripts.inc | 6 +- data/maps/MtPyre_3F/scripts.inc | 2 +- data/maps/NavelRock_Bottom/scripts.inc | 5 +- data/maps/NavelRock_Top/scripts.inc | 5 +- data/maps/NewMauville_Inside/scripts.inc | 6 +- .../Route119_WeatherInstitute_2F/scripts.inc | 4 +- data/maps/Route120/scripts.inc | 2 +- .../RustboroCity_DevonCorp_2F/scripts.inc | 12 +- data/maps/SecretBase_BlueCave1/map.json | 2 +- data/maps/SecretBase_BlueCave2/map.json | 2 +- data/maps/SecretBase_BlueCave3/map.json | 2 +- data/maps/SecretBase_BlueCave4/map.json | 2 +- data/maps/SecretBase_BrownCave1/map.json | 2 +- data/maps/SecretBase_BrownCave2/map.json | 2 +- data/maps/SecretBase_BrownCave3/map.json | 2 +- data/maps/SecretBase_BrownCave4/map.json | 2 +- data/maps/SecretBase_RedCave1/map.json | 2 +- data/maps/SecretBase_RedCave2/map.json | 2 +- data/maps/SecretBase_RedCave3/map.json | 2 +- data/maps/SecretBase_RedCave4/map.json | 2 +- data/maps/SecretBase_Shrub1/map.json | 2 +- data/maps/SecretBase_Shrub2/map.json | 2 +- data/maps/SecretBase_Shrub3/map.json | 2 +- data/maps/SecretBase_Shrub4/map.json | 2 +- data/maps/SecretBase_Tree1/map.json | 2 +- data/maps/SecretBase_Tree2/map.json | 2 +- data/maps/SecretBase_Tree3/map.json | 2 +- data/maps/SecretBase_Tree4/map.json | 2 +- data/maps/SecretBase_YellowCave1/map.json | 2 +- data/maps/SecretBase_YellowCave2/map.json | 2 +- data/maps/SecretBase_YellowCave3/map.json | 2 +- data/maps/SecretBase_YellowCave4/map.json | 2 +- data/maps/SkyPillar_Top/scripts.inc | 2 +- data/maps/SouthernIsland_Interior/scripts.inc | 12 +- data/maps/TerraCave_End/scripts.inc | 2 +- data/mb_berry_fix.gba | Bin 0 -> 15348 bytes ...{pokemon_colosseum.mb => mb_colosseum.gba} | Bin .../{ereader_link_data.bin => mb_ereader.gba} | Bin data/multiboot_berry_glitch_fix.s | 2 +- data/multiboot_ereader.s | 6 + data/multiboot_pokemon_colosseum.s | 2 +- data/script_cmd_table.inc | 12 +- data/scripts/kecleon.inc | 2 +- data/scripts/secret_base.inc | 6 +- gflib/bg.c | 70 +- gflib/bg.h | 11 + graphics/{misc => bag}/bag.pal | 0 graphics/{misc => bag}/bag_female.png | Bin graphics/{misc => bag}/bag_male.png | Bin graphics/{interface => bag}/bag_pyramid.pal | 0 graphics/{interface => bag}/bag_pyramid.png | Bin graphics/{interface => bag}/berry_tag.bin | Bin .../{interface => bag}/berry_tag_screen.pal | 0 .../{interface => bag}/berry_tag_title.bin | Bin graphics/{interface => bag}/check_berry.pal | 0 graphics/{interface => bag}/check_berry.png | Bin .../{interface => bag}/check_berry_circle.png | Bin graphics/{interface => bag}/hm.png | Bin .../bag_screen_tilemap.bin => bag/menu.bin} | Bin .../bag_screen.png => bag/menu.png} | Bin .../menu_female.pal} | 0 .../bag_screen_male.pal => bag/menu_male.pal} | 0 .../menu_pyramid.bin} | Bin .../menu_pyramid.pal} | 0 .../bag_spinner.png => bag/rotating_ball.png} | Bin graphics/{interface => bag}/select_button.png | Bin graphics/{interface/ball => balls}/dive.png | Bin graphics/{interface/ball => balls}/great.png | Bin graphics/{interface/ball => balls}/luxury.png | Bin graphics/{interface/ball => balls}/master.png | Bin graphics/{interface/ball => balls}/nest.png | Bin graphics/{interface/ball => balls}/net.png | Bin .../ball_open.png => balls/open.png} | Bin graphics/{interface/ball => balls}/poke.png | Bin .../{interface/ball => balls}/premier.png | Bin graphics/{interface/ball => balls}/repeat.png | Bin graphics/{interface/ball => balls}/safari.png | Bin graphics/{interface/ball => balls}/timer.png | Bin graphics/{interface/ball => balls}/ultra.png | Bin ...ney_line_mask_map.bin => tourney_tree.bin} | Bin .../{tourney_bg.png => tourney_tree.png} | Bin .../hpbar_anim_unused.png} | Bin .../hpbar_unused.png} | Bin .../numbers1.png | Bin .../numbers2.png | Bin .../text_pp.pal | 0 .../{crusher.bin => text_windows.bin} | 0 .../unused_beauty.png} | Bin .../black.pal} | 0 .../enter.pal} | 0 .../exit.pal} | 0 .../tilemap.bin} | Bin .../tiles.png} | Bin .../white.pal} | 0 .../put_away_cursor.png} | Bin .../diploma_hoenn.pal => diploma/hoenn.pal} | 0 .../national.pal} | 0 .../diploma_map.bin => diploma/tilemap.bin} | Bin .../{misc/diploma.png => diploma/tiles.png} | Bin .../palettes/deoxys_rock_1.pal} | 0 .../palettes/deoxys_rock_10.pal} | 0 .../palettes/deoxys_rock_11.pal} | 0 .../palettes/deoxys_rock_2.pal} | 0 .../palettes/deoxys_rock_3.pal} | 0 .../palettes/deoxys_rock_4.pal} | 0 .../palettes/deoxys_rock_5.pal} | 0 .../palettes/deoxys_rock_6.pal} | 0 .../palettes/deoxys_rock_7.pal} | 0 .../palettes/deoxys_rock_8.pal} | 0 .../palettes/deoxys_rock_9.pal} | 0 .../pics/deoxys_rock_fragment_bottom_left.png | Bin 0 -> 155 bytes .../deoxys_rock_fragment_bottom_right.png | Bin 0 -> 146 bytes .../pics/deoxys_rock_fragment_top_left.png | Bin 0 -> 157 bytes .../pics/deoxys_rock_fragment_top_right.png | Bin 0 -> 157 bytes .../pics/emotion_exclamation.png | Bin 0 -> 166 bytes graphics/field_effects/pics/emotion_heart.png | Bin 0 -> 183 bytes .../field_effects/pics/emotion_question.png | Bin 0 -> 175 bytes .../pics/field_move_streaks.bin} | Bin .../pics}/field_move_streaks.png | Bin .../pics/field_move_streaks_indoors.bin} | Bin .../pics/field_move_streaks_indoors.png} | Bin .../field_effects/pics/hof_monitor_big.png | Bin 0 -> 189 bytes .../field_effects/pics/hof_monitor_small.png | Bin 0 -> 236 bytes graphics/field_effects/pics/pokeball_glow.png | Bin 0 -> 155 bytes .../pics}/pokecenter_monitor/0.png | Bin .../pics}/pokecenter_monitor/1.png | Bin .../pics}/spotlight.png | Bin graphics/{misc => interface}/main_menu_bg.pal | 0 .../{misc => interface}/main_menu_text.pal | 0 graphics/{misc => interface}/mon_markings.png | Bin .../{misc => interface}/mon_markings_menu.png | Bin .../option_menu_equals_sign.png | Bin .../{misc => interface}/option_menu_text.pal | 0 .../interface/{bag_swap.png => swap_line.png} | Bin .../{minigame_countdown => link}/321start.png | Bin .../321start_static.png | Bin .../{interface => link}/comm_error_bg.png | Bin .../test_digits.png} | Bin .../wireless_display.bin} | Bin .../wireless_display.png} | Bin .../wireless_icon.png} | Bin .../wireless_info_screen.bin | Bin .../wireless_info_screen.pal | 0 .../wireless_info_screen.png | Bin graphics/{interface => }/map_popup/brick.png | Bin .../map_popup/brick_outline.png | Bin graphics/{interface => }/map_popup/marble.png | Bin .../map_popup/marble_outline.png | Bin graphics/{interface => }/map_popup/stone.png | Bin graphics/{interface => }/map_popup/stone2.png | Bin .../map_popup/stone2_outline.png | Bin .../map_popup/stone_outline.png | Bin .../{interface => }/map_popup/underwater.pal | 0 .../{interface => }/map_popup/underwater.png | Bin .../map_popup/underwater_outline.png | Bin graphics/{interface => }/map_popup/wood.png | Bin .../map_popup/wood_outline.png | Bin .../misc/deoxys_rock_fragment_bottom_left.png | Bin 100 -> 0 bytes .../deoxys_rock_fragment_bottom_right.png | Bin 91 -> 0 bytes .../misc/deoxys_rock_fragment_top_left.png | Bin 99 -> 0 bytes .../misc/deoxys_rock_fragment_top_right.png | Bin 102 -> 0 bytes graphics/misc/emotion_exclamation.png | Bin 108 -> 0 bytes graphics/misc/emotion_heart.png | Bin 126 -> 0 bytes graphics/misc/emotion_question.png | Bin 117 -> 0 bytes graphics/misc/hof_monitor_big.png | Bin 184 -> 0 bytes graphics/misc/hof_monitor_small.png | Bin 177 -> 0 bytes graphics/misc/pokeball_glow.png | Bin 100 -> 0 bytes .../party_menu_bg.bin => party_menu/bg.bin} | Bin .../party_menu_bg.pal => party_menu/bg.pal} | 0 .../party_menu_bg.png => party_menu/bg.png} | Bin .../cancel_button.bin} | 0 .../confirm_button.bin} | 0 .../{interface => party_menu}/hold_icons.png | Bin .../pokeball.png} | Bin .../pokeball_small.png} | Bin .../device.png} | Bin .../feeding_bg.bin} | Bin .../pokeblock.bin => pokeblock/menu.bin} | Bin .../menu.pal} | 0 .../menu.png} | Bin graphics/pokemon_storage/close_box_button.bin | 1 + graphics/pokemon_storage/party_slot_empty.bin | 1 + .../pokemon_storage/party_slot_filled.bin | 1 + graphics/pokemon_storage/pkmn_data.bin | 1 + .../{unknown.pal => text_windows.pal} | 0 .../l1.png} | Bin .../l2.png} | Bin .../l3.png} | Bin .../l4.png} | Bin .../t1.png} | Bin .../t2.png} | Bin .../t3.png} | Bin .../t4.png} | Bin .../mart_frame.bin => shop/menu.bin} | Bin .../mart_frame.png => shop/menu.png} | Bin graphics/{interface => shop}/money.png | Bin .../birch_bag.bin} | Bin .../{misc => starter_choose}/birch_bag.png | Bin .../birch_grass.bin} | Bin .../{misc => starter_choose}/birch_grass.png | Bin .../pokeball_selection.png | Bin .../starter_circle.png | Bin .../a_button.png} | Bin .../b_button.png} | Bin .../effect_battle.bin} | Bin .../effect_cancel.bin} | Bin .../effect_contest.bin} | Bin .../markings.pal} | 0 .../move_select.png} | Bin .../page_battle_moves.bin} | Bin .../page_contest_moves.bin} | Bin .../page_info.bin} | Bin .../page_info_egg.bin} | Bin .../page_skills.bin} | Bin .../status_tilemap.bin | Bin .../tiles.pal} | 0 .../tiles.png} | Bin graphics/{link => trade}/gba.png | Bin graphics/{link => trade}/gba_pal2.pal | 0 .../ereader.pal} | 0 graphics_file_rules.mk | 15 +- include/battle.h | 6 +- include/bike.h | 10 +- include/constants/flags.h | 2 +- include/constants/global.h | 9 + include/constants/metatile_behaviors.h | 9 +- include/constants/pokedex.h | 848 +++++++++++++ include/constants/species.h | 843 ------------- include/event_object_movement.h | 14 +- include/field_player_avatar.h | 2 +- include/fieldmap.h | 6 +- include/gba/m4a_internal.h | 2 +- include/global.fieldmap.h | 43 +- include/global.h | 15 +- include/graphics.h | 76 +- include/metatile_behavior.h | 2 +- include/overworld.h | 8 +- include/pokemon.h | 5 +- ld_script.txt | 4 +- ld_script_modern.txt | 5 +- sound/music_player_table.inc | 34 +- src/battle_dome.c | 4 +- src/battle_factory_screen.c | 6 +- src/battle_pyramid.c | 6 +- src/berry_crush.c | 8 +- src/berry_tag_screen.c | 2 +- src/bike.c | 28 +- src/braille_puzzles.c | 12 +- src/data/graphics/berries.h | 10 +- src/data/graphics/interface_pokeballs.h | 37 - src/data/graphics/pokeballs.h | 37 + src/data/party_menu.h | 36 +- src/decoration.c | 55 +- src/diploma.c | 8 +- src/ereader_screen.c | 8 +- src/event_object_movement.c | 114 +- src/field_camera.c | 102 +- src/field_control_avatar.c | 32 +- src/field_effect.c | 41 +- src/field_effect_helpers.c | 12 +- src/field_player_avatar.c | 115 +- src/field_specials.c | 72 +- src/field_tasks.c | 16 +- src/fieldmap.c | 58 +- src/fldeff_cut.c | 4 +- src/fldeff_escalator.c | 4 +- src/fldeff_flash.c | 12 +- src/fldeff_misc.c | 8 +- src/fldeff_rocksmash.c | 5 +- src/graphics.c | 114 +- src/item_menu.c | 2 +- src/item_menu_icons.c | 8 +- src/item_use.c | 6 +- src/link.c | 12 +- src/link_rfu_3.c | 4 +- src/m4a.c | 2 +- src/m4a_1.s | 26 +- src/main_menu.c | 4 +- src/map_name_popup.c | 38 +- src/menu_helpers.c | 4 +- src/metatile_behavior.c | 383 ++---- src/minigame_countdown.c | 8 +- src/mon_markings.c | 4 +- src/money.c | 8 +- src/naming_screen.c | 6 +- src/option_menu.c | 4 +- src/overworld.c | 39 +- src/pokeball.c | 60 +- src/pokedex.c | 2 +- src/pokemon.c | 98 +- src/pokemon_storage_system.c | 135 +-- src/pokemon_summary_screen.c | 33 +- src/region_map.c | 37 +- src/rotating_gate.c | 28 +- src/scrcmd.c | 14 +- src/secret_base.c | 16 +- src/shop.c | 16 +- src/starter_choose.c | 18 +- src/trainer_hill.c | 6 +- src/trainer_see.c | 11 +- src/tv.c | 4 +- src/wallclock.c | 84 +- src/wireless_communication_status_screen.c | 6 +- sym_bss.txt | 1 + tools/mapjson/mapjson.cpp | 2 +- 388 files changed, 2247 insertions(+), 12295 deletions(-) delete mode 100644 asm/macros/pokemon_data.inc delete mode 100644 asm/macros/window.inc delete mode 100644 berry_fix/Makefile delete mode 100644 berry_fix/asm/berry_fix_header.inc delete mode 100644 berry_fix/asm/loader.s delete mode 100644 berry_fix/charmap.txt delete mode 100644 berry_fix/data/data.s delete mode 100644 berry_fix/ld_script.sed delete mode 100644 berry_fix/ld_script.txt delete mode 100644 berry_fix/payload/Makefile delete mode 100644 berry_fix/payload/asm/crt0.s delete mode 100644 berry_fix/payload/asm/libagbsyscall.s delete mode 100644 berry_fix/payload/asm/macros/function.inc delete mode 100644 berry_fix/payload/charmap.txt delete mode 100644 berry_fix/payload/common_syms/agb_flash.txt delete mode 100644 berry_fix/payload/common_syms/main.txt delete mode 100644 berry_fix/payload/common_syms/rtc.txt delete mode 100644 berry_fix/payload/constants/gba_constants.inc delete mode 100644 berry_fix/payload/graphics/debug_digits.png delete mode 100644 berry_fix/payload/graphics/msg_box.png delete mode 100644 berry_fix/payload/graphics/msg_box.tilemap delete mode 100644 berry_fix/payload/include/constants/game_stat.h delete mode 100644 berry_fix/payload/include/constants/vars.h delete mode 100644 berry_fix/payload/include/flash.h delete mode 100644 berry_fix/payload/include/gba/defines.h delete mode 100644 berry_fix/payload/include/gba/flash_internal.h delete mode 100644 berry_fix/payload/include/gba/gba.h delete mode 100644 berry_fix/payload/include/gba/io_reg.h delete mode 100644 berry_fix/payload/include/gba/isagbprint.h delete mode 100644 berry_fix/payload/include/gba/m4a_internal.h delete mode 100644 berry_fix/payload/include/gba/macro.h delete mode 100644 berry_fix/payload/include/gba/multiboot.h delete mode 100644 berry_fix/payload/include/gba/syscall.h delete mode 100644 berry_fix/payload/include/gba/types.h delete mode 100644 berry_fix/payload/include/global.berry.h delete mode 100644 berry_fix/payload/include/global.fieldmap.h delete mode 100644 berry_fix/payload/include/global.h delete mode 100644 berry_fix/payload/include/main.h delete mode 100644 berry_fix/payload/include/pokemon.h delete mode 100644 berry_fix/payload/include/rtc.h delete mode 100644 berry_fix/payload/include/siirtc.h delete mode 100644 berry_fix/payload/ld_script.sed delete mode 100644 berry_fix/payload/ld_script.txt delete mode 100644 berry_fix/payload/rom.sha1 delete mode 100644 berry_fix/payload/src/agb_flash.c delete mode 100644 berry_fix/payload/src/agb_flash_1m.c delete mode 100644 berry_fix/payload/src/agb_flash_le.c delete mode 100644 berry_fix/payload/src/agb_flash_mx.c delete mode 100644 berry_fix/payload/src/flash.c delete mode 100644 berry_fix/payload/src/main.c delete mode 100644 berry_fix/payload/src/rtc.c delete mode 100644 berry_fix/payload/src/siirtc.c delete mode 100644 berry_fix/payload/sym_bss.txt delete mode 100644 berry_fix/payload/sym_common.txt delete mode 100644 berry_fix/payload/sym_ewram.txt delete mode 100644 berry_fix/rom.sha1 delete mode 100644 data/ereader_link_data.s create mode 100644 data/mb_berry_fix.gba rename data/{pokemon_colosseum.mb => mb_colosseum.gba} (100%) rename data/{ereader_link_data.bin => mb_ereader.gba} (100%) create mode 100644 data/multiboot_ereader.s rename graphics/{misc => bag}/bag.pal (100%) rename graphics/{misc => bag}/bag_female.png (100%) rename graphics/{misc => bag}/bag_male.png (100%) rename graphics/{interface => bag}/bag_pyramid.pal (100%) rename graphics/{interface => bag}/bag_pyramid.png (100%) rename graphics/{interface => bag}/berry_tag.bin (100%) rename graphics/{interface => bag}/berry_tag_screen.pal (100%) rename graphics/{interface => bag}/berry_tag_title.bin (100%) rename graphics/{interface => bag}/check_berry.pal (100%) rename graphics/{interface => bag}/check_berry.png (100%) rename graphics/{interface => bag}/check_berry_circle.png (100%) rename graphics/{interface => bag}/hm.png (100%) rename graphics/{interface/bag_screen_tilemap.bin => bag/menu.bin} (100%) rename graphics/{interface/bag_screen.png => bag/menu.png} (100%) rename graphics/{interface/bag_screen_female.pal => bag/menu_female.pal} (100%) rename graphics/{interface/bag_screen_male.pal => bag/menu_male.pal} (100%) rename graphics/{interface/bag_pyramid_tilemap.bin => bag/menu_pyramid.bin} (100%) rename graphics/{interface/bag_pyramid_interface.pal => bag/menu_pyramid.pal} (100%) rename graphics/{interface/bag_spinner.png => bag/rotating_ball.png} (100%) rename graphics/{interface => bag}/select_button.png (100%) rename graphics/{interface/ball => balls}/dive.png (100%) rename graphics/{interface/ball => balls}/great.png (100%) rename graphics/{interface/ball => balls}/luxury.png (100%) rename graphics/{interface/ball => balls}/master.png (100%) rename graphics/{interface/ball => balls}/nest.png (100%) rename graphics/{interface/ball => balls}/net.png (100%) rename graphics/{interface/ball_open.png => balls/open.png} (100%) rename graphics/{interface/ball => balls}/poke.png (100%) rename graphics/{interface/ball => balls}/premier.png (100%) rename graphics/{interface/ball => balls}/repeat.png (100%) rename graphics/{interface/ball => balls}/safari.png (100%) rename graphics/{interface/ball => balls}/timer.png (100%) rename graphics/{interface/ball => balls}/ultra.png (100%) rename graphics/battle_frontier/{tourney_line_mask_map.bin => tourney_tree.bin} (100%) rename graphics/battle_frontier/{tourney_bg.png => tourney_tree.png} (100%) rename graphics/{interface/hpbar_anim.png => battle_interface/hpbar_anim_unused.png} (100%) rename graphics/{interface/party_menu_hpbar.png => battle_interface/hpbar_unused.png} (100%) rename graphics/{interface => battle_interface}/numbers1.png (100%) rename graphics/{interface => battle_interface}/numbers2.png (100%) rename graphics/{battle_frontier => battle_interface}/text_pp.pal (100%) rename graphics/berry_crush/{crusher.bin => text_windows.bin} (100%) rename graphics/{unused/intro_birch_beauty.png => birch_speech/unused_beauty.png} (100%) rename graphics/{misc/cave_transition_black.pal => cave_transition/black.pal} (100%) rename graphics/{misc/cave_transition_enter.pal => cave_transition/enter.pal} (100%) rename graphics/{misc/cave_transition_exit.pal => cave_transition/exit.pal} (100%) rename graphics/{misc/cave_transition_map.bin => cave_transition/tilemap.bin} (100%) rename graphics/{misc/cave_transition.png => cave_transition/tiles.png} (100%) rename graphics/{misc/cave_transition_white.pal => cave_transition/white.pal} (100%) rename graphics/{misc/decoration_putting_away_cursor.png => decorations/put_away_cursor.png} (100%) rename graphics/{misc/diploma_hoenn.pal => diploma/hoenn.pal} (100%) rename graphics/{misc/diploma_national.pal => diploma/national.pal} (100%) rename graphics/{misc/diploma_map.bin => diploma/tilemap.bin} (100%) rename graphics/{misc/diploma.png => diploma/tiles.png} (100%) rename graphics/{misc/deoxys1.pal => field_effects/palettes/deoxys_rock_1.pal} (100%) rename graphics/{misc/deoxys10.pal => field_effects/palettes/deoxys_rock_10.pal} (100%) rename graphics/{misc/deoxys11.pal => field_effects/palettes/deoxys_rock_11.pal} (100%) rename graphics/{misc/deoxys2.pal => field_effects/palettes/deoxys_rock_2.pal} (100%) rename graphics/{misc/deoxys3.pal => field_effects/palettes/deoxys_rock_3.pal} (100%) rename graphics/{misc/deoxys4.pal => field_effects/palettes/deoxys_rock_4.pal} (100%) rename graphics/{misc/deoxys5.pal => field_effects/palettes/deoxys_rock_5.pal} (100%) rename graphics/{misc/deoxys6.pal => field_effects/palettes/deoxys_rock_6.pal} (100%) rename graphics/{misc/deoxys7.pal => field_effects/palettes/deoxys_rock_7.pal} (100%) rename graphics/{misc/deoxys8.pal => field_effects/palettes/deoxys_rock_8.pal} (100%) rename graphics/{misc/deoxys9.pal => field_effects/palettes/deoxys_rock_9.pal} (100%) create mode 100644 graphics/field_effects/pics/deoxys_rock_fragment_bottom_left.png create mode 100644 graphics/field_effects/pics/deoxys_rock_fragment_bottom_right.png create mode 100644 graphics/field_effects/pics/deoxys_rock_fragment_top_left.png create mode 100644 graphics/field_effects/pics/deoxys_rock_fragment_top_right.png create mode 100644 graphics/field_effects/pics/emotion_exclamation.png create mode 100644 graphics/field_effects/pics/emotion_heart.png create mode 100644 graphics/field_effects/pics/emotion_question.png rename graphics/{misc/field_move_streaks_map.bin => field_effects/pics/field_move_streaks.bin} (100%) rename graphics/{misc => field_effects/pics}/field_move_streaks.png (100%) rename graphics/{misc/darkness_field_move_streaks_map.bin => field_effects/pics/field_move_streaks_indoors.bin} (100%) rename graphics/{misc/darkness_field_move_streaks.png => field_effects/pics/field_move_streaks_indoors.png} (100%) create mode 100644 graphics/field_effects/pics/hof_monitor_big.png create mode 100644 graphics/field_effects/pics/hof_monitor_small.png create mode 100644 graphics/field_effects/pics/pokeball_glow.png rename graphics/{misc => field_effects/pics}/pokecenter_monitor/0.png (100%) rename graphics/{misc => field_effects/pics}/pokecenter_monitor/1.png (100%) rename graphics/{misc => field_effects/pics}/spotlight.png (100%) rename graphics/{misc => interface}/main_menu_bg.pal (100%) rename graphics/{misc => interface}/main_menu_text.pal (100%) rename graphics/{misc => interface}/mon_markings.png (100%) rename graphics/{misc => interface}/mon_markings_menu.png (100%) rename graphics/{misc => interface}/option_menu_equals_sign.png (100%) rename graphics/{misc => interface}/option_menu_text.pal (100%) rename graphics/interface/{bag_swap.png => swap_line.png} (100%) rename graphics/{minigame_countdown => link}/321start.png (100%) rename graphics/{minigame_countdown => link}/321start_static.png (100%) rename graphics/{interface => link}/comm_error_bg.png (100%) rename graphics/{interface/link_test_digits.png => link/test_digits.png} (100%) rename graphics/{interface/wireless_link_display.bin => link/wireless_display.bin} (100%) rename graphics/{interface/wireless_link_display.png => link/wireless_display.png} (100%) rename graphics/{interface/wireless_link_icon.png => link/wireless_icon.png} (100%) rename graphics/{interface => link}/wireless_info_screen.bin (100%) rename graphics/{interface => link}/wireless_info_screen.pal (100%) rename graphics/{interface => link}/wireless_info_screen.png (100%) rename graphics/{interface => }/map_popup/brick.png (100%) rename graphics/{interface => }/map_popup/brick_outline.png (100%) rename graphics/{interface => }/map_popup/marble.png (100%) rename graphics/{interface => }/map_popup/marble_outline.png (100%) rename graphics/{interface => }/map_popup/stone.png (100%) rename graphics/{interface => }/map_popup/stone2.png (100%) rename graphics/{interface => }/map_popup/stone2_outline.png (100%) rename graphics/{interface => }/map_popup/stone_outline.png (100%) rename graphics/{interface => }/map_popup/underwater.pal (100%) rename graphics/{interface => }/map_popup/underwater.png (100%) rename graphics/{interface => }/map_popup/underwater_outline.png (100%) rename graphics/{interface => }/map_popup/wood.png (100%) rename graphics/{interface => }/map_popup/wood_outline.png (100%) delete mode 100644 graphics/misc/deoxys_rock_fragment_bottom_left.png delete mode 100644 graphics/misc/deoxys_rock_fragment_bottom_right.png delete mode 100644 graphics/misc/deoxys_rock_fragment_top_left.png delete mode 100644 graphics/misc/deoxys_rock_fragment_top_right.png delete mode 100644 graphics/misc/emotion_exclamation.png delete mode 100644 graphics/misc/emotion_heart.png delete mode 100644 graphics/misc/emotion_question.png delete mode 100644 graphics/misc/hof_monitor_big.png delete mode 100644 graphics/misc/hof_monitor_small.png delete mode 100644 graphics/misc/pokeball_glow.png rename graphics/{interface/party_menu_bg.bin => party_menu/bg.bin} (100%) rename graphics/{interface/party_menu_bg.pal => party_menu/bg.pal} (100%) rename graphics/{interface/party_menu_bg.png => party_menu/bg.png} (100%) rename graphics/{interface/party_menu_cancel_button.bin => party_menu/cancel_button.bin} (100%) rename graphics/{interface/party_menu_confirm_button.bin => party_menu/confirm_button.bin} (100%) rename graphics/{interface => party_menu}/hold_icons.png (100%) rename graphics/{interface/party_menu_pokeball.png => party_menu/pokeball.png} (100%) rename graphics/{interface/party_menu_pokeball_small.png => party_menu/pokeball_small.png} (100%) rename graphics/{interface/pokeblock_device.png => pokeblock/device.png} (100%) rename graphics/{interface/pokeblock_feeding_bg_map.bin => pokeblock/feeding_bg.bin} (100%) rename graphics/{interface/pokeblock.bin => pokeblock/menu.bin} (100%) rename graphics/{interface/pokeblock_case_frame.pal => pokeblock/menu.pal} (100%) rename graphics/{interface/pokeblock_case_frame.png => pokeblock/menu.png} (100%) create mode 100644 graphics/pokemon_storage/close_box_button.bin create mode 100644 graphics/pokemon_storage/party_slot_empty.bin create mode 100644 graphics/pokemon_storage/party_slot_filled.bin create mode 100644 graphics/pokemon_storage/pkmn_data.bin rename graphics/pokemon_storage/{unknown.pal => text_windows.pal} (100%) rename graphics/{misc/rotating_gate_1.png => rotating_gates/l1.png} (100%) rename graphics/{misc/rotating_gate_2.png => rotating_gates/l2.png} (100%) rename graphics/{misc/rotating_gate_3.png => rotating_gates/l3.png} (100%) rename graphics/{misc/rotating_gate_4.png => rotating_gates/l4.png} (100%) rename graphics/{misc/rotating_gate_5.png => rotating_gates/t1.png} (100%) rename graphics/{misc/rotating_gate_6.png => rotating_gates/t2.png} (100%) rename graphics/{misc/rotating_gate_7.png => rotating_gates/t3.png} (100%) rename graphics/{misc/rotating_gate_8.png => rotating_gates/t4.png} (100%) rename graphics/{interface/mart_frame.bin => shop/menu.bin} (100%) rename graphics/{interface/mart_frame.png => shop/menu.png} (100%) rename graphics/{interface => shop}/money.png (100%) rename graphics/{misc/birch_bag_map.bin => starter_choose/birch_bag.bin} (100%) rename graphics/{misc => starter_choose}/birch_bag.png (100%) rename graphics/{misc/birch_grass_map.bin => starter_choose/birch_grass.bin} (100%) rename graphics/{misc => starter_choose}/birch_grass.png (100%) rename graphics/{misc => starter_choose}/pokeball_selection.png (100%) rename graphics/{misc => starter_choose}/starter_circle.png (100%) rename graphics/{interface/summary_a_button.png => summary_screen/a_button.png} (100%) rename graphics/{interface/summary_b_button.png => summary_screen/b_button.png} (100%) rename graphics/{interface/powacc_tilemap.bin => summary_screen/effect_battle.bin} (100%) rename graphics/{interface/summary.bin => summary_screen/effect_cancel.bin} (100%) rename graphics/{interface/appealjam_tilemap.bin => summary_screen/effect_contest.bin} (100%) rename graphics/{interface/summary_markings.pal => summary_screen/markings.pal} (100%) rename graphics/{interface/summary_frames.png => summary_screen/move_select.png} (100%) rename graphics/{interface/summary_page_battle_moves.bin => summary_screen/page_battle_moves.bin} (100%) rename graphics/{interface/summary_page_contest_moves.bin => summary_screen/page_contest_moves.bin} (100%) rename graphics/{interface/summary_page_info.bin => summary_screen/page_info.bin} (100%) rename graphics/{interface/summary_page_info_copy.bin => summary_screen/page_info_egg.bin} (100%) rename graphics/{interface/summary_page_skills.bin => summary_screen/page_skills.bin} (100%) rename graphics/{interface => summary_screen}/status_tilemap.bin (100%) rename graphics/{interface/summary_screen.pal => summary_screen/tiles.pal} (100%) rename graphics/{interface/summary_screen.png => summary_screen/tiles.png} (100%) rename graphics/{link => trade}/gba.png (100%) rename graphics/{link => trade}/gba_pal2.pal (100%) rename graphics/{misc/trainer_hill_ereader.pal => trainer_hill/ereader.pal} (100%) create mode 100644 include/constants/pokedex.h delete mode 100644 src/data/graphics/interface_pokeballs.h create mode 100644 src/data/graphics/pokeballs.h diff --git a/.gitignore b/.gitignore index 23b01d1e0..cac4a07e6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.i *.elf *.gba +!data/*.gba *.sgm *.sa1 *.ss[0-9] diff --git a/Makefile b/Makefile index 7b2f79877..6283a87fe 100644 --- a/Makefile +++ b/Makefile @@ -150,7 +150,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern tidymodern tidynonmodern +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) libagbsyscall modern tidymodern tidynonmodern infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -158,7 +158,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall syms,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern libagbsyscall syms,$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -169,8 +169,8 @@ ifeq (,$(MAKECMDGOALS)) SCAN_DEPS ?= 1 else # clean, tidy, tools, mostlyclean, clean-tools, $(TOOLDIRS), tidymodern, tidynonmodern don't even build the ROM - # berry_fix and libagbsyscall do their own thing - ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) tidymodern tidynonmodern berry_fix libagbsyscall,$(MAKECMDGOALS))) + # libagbsyscall does its own thing + ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) tidymodern tidynonmodern libagbsyscall,$(MAKECMDGOALS))) SCAN_DEPS ?= 0 else SCAN_DEPS ?= 1 @@ -243,7 +243,6 @@ mostlyclean: tidynonmodern tidymodern rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + rm -f $(AUTO_GEN_TARGETS) - @$(MAKE) clean -C berry_fix @$(MAKE) clean -C libagbsyscall tidy: tidynonmodern tidymodern @@ -417,7 +416,7 @@ endif $(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS) cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix libagbsyscall +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall @echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ " @cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB) $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent @@ -428,11 +427,6 @@ $(ROM): $(ELF) modern: all -berry_fix/berry_fix.gba: berry_fix - -berry_fix: - @$(MAKE) -C berry_fix COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) - libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) diff --git a/asm/macros.inc b/asm/macros.inc index 77f44a847..95bb4e31b 100644 --- a/asm/macros.inc +++ b/asm/macros.inc @@ -1,8 +1,6 @@ .include "asm/macros/asm.inc" .include "asm/macros/function.inc" .include "asm/macros/movement.inc" - .include "asm/macros/window.inc" - .include "asm/macros/pokemon_data.inc" .include "asm/macros/map.inc" .include "asm/macros/field_effect_script.inc" .include "asm/macros/trainer_hill.inc" @@ -16,130 +14,3 @@ .include "asm/macros/battle_frontier/battle_pyramid.inc" .include "asm/macros/battle_frontier/battle_tower.inc" .include "asm/macros/battle_frontier/frontier_util.inc" - - .macro region_map_entry x, y, width, height, name - .byte \x - .byte \y - .byte \width - .byte \height - .4byte gMapName_\name - .endm - - .macro obj_tiles address, uncompressed_size, tag = 0 - .4byte \address - .2byte \uncompressed_size - .2byte \tag - .endm - - .macro null_obj_tiles - obj_tiles 0, 0, 0 - .endm - - .macro obj_pal address, tag - .4byte \address - .2byte \tag - .2byte 0@ padding - .endm - - .macro null_obj_pal - obj_pal 0, 0 - .endm - - .macro paired_pals tag, address - .2byte \tag - .2byte 0 @ padding - .4byte \address - .endm - -@ For object animation frames. - .macro obj_frame_tiles address, uncompressed_size - .4byte \address - .2byte \uncompressed_size - .2byte 0 @ padding - .endm - - .macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback - .2byte \tile_tag - .2byte \pal_tag - .4byte \oam - .4byte \anims - .4byte \images - .4byte \affine_anims - .4byte \callback - .endm - -@ Berry trees have a table defining the palette slot used for each of their 5 -@ stages. However, the first 2 stages always use the same slots regardless of -@ the type of tree and the slots of the last 3 stages always equal each other. - .macro berry_tree_palette_slot_table slot - .byte 3, 4, \slot, \slot, \slot - .endm - - .macro subsprite x, y, priority, tile_num_offset, size - .byte \x - .byte \y - .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size - .endm - - .macro obj_image_anim_frame pic_id, duration, flags = 0 - .2byte \pic_id - .byte (\flags) | (\duration) - .byte 0 @ padding - .endm - - .macro obj_image_anim_loop count - .2byte 0xfffd - .byte \count - .byte 0 @ padding - .endm - - .macro obj_image_anim_jump target_index - .2byte 0xfffe - .byte \target_index - .byte 0 @ padding - .endm - - .macro obj_image_anim_end - .2byte 0xffff - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration - .2byte \delta_x_scale - .2byte \delta_y_scale - .byte \delta_angle - .byte \duration - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_loop count - .2byte 0x7ffd - .2byte \count - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_jump target_index - .2byte 0x7ffe - .2byte \target_index - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_end unknown=0 - .2byte 0x7fff - .2byte \unknown - .fill 4 @ padding - .endm - - .macro door_anim_frame unknown, offset - .byte \unknown - .byte 0 @ padding - .2byte \offset - .endm - - .macro door_anim_gfx metatile_num, unknown, unknown2, tile_addr, palette_addr - .2byte \metatile_num - .byte \unknown - .byte \unknown2 - .4byte \tile_addr - .4byte \palette_addr - .endm diff --git a/asm/macros/asm.inc b/asm/macros/asm.inc index 4ac003fab..3f70145d3 100644 --- a/asm/macros/asm.inc +++ b/asm/macros/asm.inc @@ -1,4 +1,4 @@ - .macro inc x + .macro inc x:req .set \x, \x + 1 .endm @@ -6,7 +6,7 @@ .set __enum__, \x .endm - .macro enum constant + .macro enum constant:req .equiv \constant, __enum__ inc __enum__ .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc index ee98219c5..d1245ee57 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -604,9 +604,8 @@ .endm @ Blocks script execution until the movements being applied to the specified (localId) object finish. - @ If the specified object is 0, then the command will block script execution until all objects - @ affected by applymovement finish their movements. If the specified object is not currently being - @ manipulated with applymovement, then this command does nothing. + @ If localId is 0, then the id of the last-moved object will be used instead. If the specified object + @ is not currently being manipulated with applymovement, then this command does nothing. @ If no map is specified, then the current map is used. .macro waitmovement localId:req, map .ifb \map @@ -987,7 +986,7 @@ @ Gives the player a Pokémon of the specified species and level, holding the specified item. The trailing 0s are unused parameters. @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. - .macro givemon species:req, level:req, item:req + .macro givemon species:req, level:req, item=ITEM_NONE .byte 0x79 .2byte \species .byte \level @@ -1433,7 +1432,7 @@ @ Prepares to start a wild battle against a 'species' at 'level' holding 'item'. Running this command will not affect @ normal wild battles. You start the prepared battle with dowildbattle. - .macro setwildbattle species:req, level:req, item:req + .macro setwildbattle species:req, level:req, item=ITEM_NONE .byte 0xb6 .2byte \species .byte \level @@ -1955,6 +1954,14 @@ closebraillemessage .endm + @ Creates an "event legal" Pokémon for an encounter + .macro seteventmon species:req, level:req, item=ITEM_NONE + setvar VAR_0x8004, \species + setvar VAR_0x8005, \level + setvar VAR_0x8006, \item + special CreateEventLegalEnemyMon + .endm + .macro pokemonfaceplayer objectId=254 setvar VAR_UNUSED_0x8014, \objectId callnative ScrCmd_pokemonfaceplayer diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc index 597b89acb..38f7e3175 100644 --- a/asm/macros/field_effect_script.inc +++ b/asm/macros/field_effect_script.inc @@ -1,19 +1,21 @@ - .macro field_eff_loadtiles address +@ The first .byte argument of each macro below is an index into gFieldEffectScriptFuncs + + .macro field_eff_loadtiles address:req .byte 0 .4byte \address .endm - .macro field_eff_loadfadedpal address + .macro field_eff_loadfadedpal address:req .byte 1 .4byte \address .endm - .macro field_eff_loadpal address + .macro field_eff_loadpal address:req .byte 2 .4byte \address .endm - .macro field_eff_callnative address + .macro field_eff_callnative address:req .byte 3 .4byte \address .endm @@ -22,20 +24,20 @@ .byte 4 .endm - .macro field_eff_loadgfx_callnative tiles_address, palette_address, function_address + .macro field_eff_loadgfx_callnative tiles_address:req, palette_address:req, function_address:req .byte 5 .4byte \tiles_address .4byte \palette_address .4byte \function_address .endm - .macro field_eff_loadtiles_callnative tiles_address, function_address + .macro field_eff_loadtiles_callnative tiles_address:req, function_address:req .byte 6 .4byte \tiles_address .4byte \function_address .endm - .macro field_eff_loadfadedpal_callnative palette_address, function_address + .macro field_eff_loadfadedpal_callnative palette_address:req, function_address:req .byte 7 .4byte \palette_address .4byte \function_address diff --git a/asm/macros/function.inc b/asm/macros/function.inc index b109595df..0f4e6720c 100644 --- a/asm/macros/function.inc +++ b/asm/macros/function.inc @@ -1,15 +1,15 @@ - .macro arm_func_start name + .macro arm_func_start name:req .align 2, 0 .global \name .arm .type \name, %function .endm - .macro arm_func_end name + .macro arm_func_end name:req .size \name, .-\name .endm - .macro thumb_func_start name + .macro thumb_func_start name:req .align 2, 0 .global \name .thumb @@ -17,13 +17,13 @@ .type \name, %function .endm - .macro non_word_aligned_thumb_func_start name + .macro non_word_aligned_thumb_func_start name:req .global \name .thumb .thumb_func .type \name, %function .endm - .macro thumb_func_end name + .macro thumb_func_end name:req .size \name, .-\name .endm diff --git a/asm/macros/m4a.inc b/asm/macros/m4a.inc index 6c5abc09b..b22da3d63 100644 --- a/asm/macros/m4a.inc +++ b/asm/macros/m4a.inc @@ -1,13 +1,13 @@ - .macro song label, music_player, unknown + .macro song label:req, music_player:req, unknown:req .4byte \label .2byte \music_player .2byte \unknown .endm - .macro music_player info_struct, track_struct, unknown_1, unknown_2 + .macro music_player info_struct:req, track_struct:req, num_tracks:req, unknown:req .4byte \info_struct .4byte \track_struct - .byte \unknown_1 - .space 1 - .2byte \unknown_2 + .byte \num_tracks + .space 1 @ Padding + .2byte \unknown .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc index 9097f72a4..c4a302592 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -1,17 +1,22 @@ - .macro map map_id +@ Most of the macros in this file are for arranging map event data, and are output by mapjson using data from each map's JSON file. + + @ Takes a MAP constant and outputs the map group and map number as separate bytes + .macro map map_id:req .byte \map_id >> 8 @ map group .byte \map_id & 0xFF @ map num .endm - .macro map_script type, address + @ Defines a map script. 'type' is any MAP_SCRIPT_* constant (see include/constants/map_scripts.h) + .macro map_script type:req, script:req .byte \type - .4byte \address + .4byte \script .endm - .macro map_script_2 word1, word2, address - .2byte \word1 - .2byte \word2 - .4byte \address + @ Defines an entry in a map script table (for either ON_WARP_INTO_MAP_TABLE or ON_FRAME_TABLE) + .macro map_script_2 var:req, compare:req, script:req + .2byte \var + .2byte \compare + .4byte \script .endm .macro object_event index:req, gfx:req, replacement: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 @@ -23,62 +28,77 @@ .2byte \trainer_type, \sight_radius_tree_etc .4byte \script .2byte \event_flag - .2byte 0 + .space 2 @ Padding inc _num_npcs .endm - .macro warp_def x, y, byte, warp, map_id + @ Defines a warp event for map data. Mirrors the struct layout of WarpEvent in include/global.fieldmap.h + .macro warp_def x:req, y:req, elevation:req, warpId:req, map_id:req .2byte \x, \y - .byte \byte, \warp + .byte \elevation + .byte \warpId .byte \map_id & 0xFF @ map num .byte \map_id >> 8 @ map group inc _num_warps .endm - .macro coord_event x, y, elevation, trigger, index, script + @ Defines a coord event for map data. Mirrors the struct layout of CoordEvent in include/global.fieldmap.h + .macro coord_event x:req, y:req, elevation:req, trigger:req, index:req, script:req .2byte \x, \y - .byte \elevation, 0 - .2byte \trigger, \index, 0 + .byte \elevation + .space 1 @ Padding + .2byte \trigger + .2byte \index + .space 2 @ Padding .4byte \script inc _num_traps .endm - .macro coord_weather_event x, y, elevation, weather - .2byte \x, \y - .byte \elevation, 0 - .2byte \weather - .2byte 0, 0 - .4byte 0 - inc _num_traps + @ Defines a weather coord event for map data. Any coord event is treated as a weather coord event if its script is NULL + .macro coord_weather_event x:req, y:req, elevation:req, weather:req + coord_event \x, \y, \elevation, \weather, 0, NULL .endm - .macro bg_event x, y, elevation, kind, arg6, arg7 + @ Defines a generic background event for map data. Mirrors the struct layout of BgEvent in include/global.fieldmap.h + @ 'kind' is any BG_EVENT_* constant (see include/constants/event_bg.h). + @ 'arg6' and 'arg7' are used differently depending on the bg event type. See macros below + .macro bg_event x:req, y:req, elevation:req, kind:req, arg6:req, arg7 .2byte \x, \y - .byte \elevation, \kind - .2byte 0 + .byte \elevation + .byte \kind + .space 2 @ Padding .if \kind != BG_EVENT_HIDDEN_ITEM - .4byte \arg6 + .4byte \arg6 .else - .2byte \arg6 - .2byte \arg7 + .2byte \arg6 + .2byte \arg7 .endif inc _num_signs .endm - .macro bg_hidden_item_event x, y, height, item, flag - bg_event \x, \y, \height, BG_EVENT_HIDDEN_ITEM, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START) + @ Defines a background sign event for map data. 'facing_dir' is any of the BG_EVENT_PLAYER_FACING_* constants (see include/constants/event_bg.h) + .macro bg_sign_event x:req, y:req, elevation:req, facing_dir:req, script:req + bg_event \x, \y, \elevation, \facing_dir, \script .endm - .macro bg_secret_base_event x, y, height, secret_base_id - bg_event \x, \y, \height, BG_EVENT_SECRET_BASE, \secret_base_id + @ Defines a background hidden item event for map data + .macro bg_hidden_item_event x:req, y:req, elevation:req, item:req, flag:req + bg_event \x, \y, \elevation, BG_EVENT_HIDDEN_ITEM, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START) .endm - .macro map_events npcs, warps, traps, signs + @ Defines a background secret base event for map data + .macro bg_secret_base_event x:req, y:req, elevation:req, secret_base_id:req + bg_event \x, \y, \elevation, BG_EVENT_SECRET_BASE, \secret_base_id + .endm + + @ Defines the table of event data for a map. Mirrors the struct layout of MapEvents in include/global.fieldmap.h + .macro map_events npcs:req, warps:req, traps:req, signs:req .byte _num_npcs, _num_warps, _num_traps, _num_signs .4byte \npcs, \warps, \traps, \signs reset_map_events .endm + @ Resets the event counters used to track how many events a map has. Run when the events table is created by map_events .macro reset_map_events .set _num_npcs, 0 .set _num_warps, 0 @@ -86,23 +106,29 @@ .set _num_signs, 0 .endm + @ Initialize the event counters for the first map reset_map_events - .equiv connection_down, 1 - .equiv connection_up, 2 - .equiv connection_left, 3 - .equiv connection_right, 4 - .equiv connection_dive, 5 - .equiv connection_emerge, 6 + @ Directions for connecting maps + @ The map.json files will only have e.g. "down" as direction data, and this will be appended to "connection_" by the connection macro + .equiv connection_down, CONNECTION_SOUTH + .equiv connection_up, CONNECTION_NORTH + .equiv connection_left, CONNECTION_WEST + .equiv connection_right, CONNECTION_EAST + .equiv connection_dive, CONNECTION_DIVE + .equiv connection_emerge, CONNECTION_EMERGE - .macro connection direction, offset, map - .4byte connection_\direction + @ Defines a map connection. Mirrors the struct layout of MapConnection in include/global.fieldmap.h + .macro connection direction:req, offset:req, map:req + .byte connection_\direction + .space 3 @ Padding .4byte \offset map \map - .space 2 + .space 2 @ Padding .endm + @ Defines the flags for a map header. Mirrors the layout of the bitfield in struct MapHeader in include/global.fieldmap.h .macro map_header_flags allow_cycling:req, allow_escaping:req, allow_running:req, show_map_name:req .byte ((\show_map_name & 1) << 3) | ((\allow_running & 1) << 2) | ((\allow_escaping & 1) << 1) | \allow_cycling .endm diff --git a/asm/macros/pokemon_data.inc b/asm/macros/pokemon_data.inc deleted file mode 100644 index ce8ef98ac..000000000 --- a/asm/macros/pokemon_data.inc +++ /dev/null @@ -1,56 +0,0 @@ - .macro pokedex_entry height, width, text_pointer, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset - .2byte \height @ in decimeters - .2byte \width @ in hectograms - .4byte \text_pointer - .2byte 0 @ unused - .2byte \pokemon_scale - .2byte \pokemon_offset - .2byte \trainer_scale - .2byte \trainer_offset - .2byte 0 @ padding - .endm - - .macro base_stats hp, attack, defense, speed, sp_attack, sp_defense - .byte \hp - .byte \attack - .byte \defense - .byte \speed - .byte \sp_attack - .byte \sp_defense - .endm - - .macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense - .2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp - .endm - - .macro level_up_move level, move - .2byte (\level << 9) | \move - .endm - - .macro evo_entry method, parameter, target_species - .2byte \method - .2byte \parameter - .2byte \target_species - .2byte 0 @ padding - .endm - - .macro empty_evo_entries count - .fill 8 * \count, 1, 0 - .endm - - .macro egg_moves_begin species - .2byte 20000 + \species - .endm - -@ If the min level equals the max level, only one level argument is needed. - .macro wild_mon species, min_level, max_level - .byte \min_level - - .ifb \max_level - .byte \min_level - .else - .byte \max_level - .endif - - .2byte \species - .endm diff --git a/asm/macros/window.inc b/asm/macros/window.inc deleted file mode 100644 index a91782bbf..000000000 --- a/asm/macros/window.inc +++ /dev/null @@ -1,35 +0,0 @@ - .macro window_template bg_id, x, y, width, height, palette, vram_tile_offset - .byte \bg_id - .byte \x - .byte \y - .byte \width - .byte \height - .byte \palette - .2byte \vram_tile_offset - .endm - - .macro null_window_template - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - .endm - - .macro glyph_width_func font_id, func - .4byte \font_id - .4byte \func - .endm - - .macro keypad_icon tile_offset, width, height - .2byte \tile_offset - .byte \width - .byte \height - .endm - - .macro font_info func, max_glyph_width, glyph_height, glyph_spacing, line_spacing, text_color, shadow_color, bg_color - .4byte \func - .byte \max_glyph_width - .byte \glyph_height - .byte \glyph_spacing - .byte \line_spacing - .byte \text_color << 4 @ low nybble seems unused - .byte (\shadow_color << 4) | \bg_color - .2byte 0 @ padding - .endm diff --git a/berry_fix/Makefile b/berry_fix/Makefile deleted file mode 100644 index 464e5f9e9..000000000 --- a/berry_fix/Makefile +++ /dev/null @@ -1,203 +0,0 @@ -TOOLCHAIN := $(DEVKITARM) -COMPARE ?= 0 - -# don't use dkP's base_tools anymore -# because the redefinition of $(CC) conflicts -# with when we want to use $(CC) to preprocess files -# thus, manually create the variables for the bin -# files, or use arm-none-eabi binaries on the system -# if dkP is not installed on this system - -ifneq (,$(TOOLCHAIN)) -ifneq ($(wildcard $(TOOLCHAIN)/bin),) -export PATH := $(TOOLCHAIN)/bin:$(PATH) -endif -endif - -PREFIX := arm-none-eabi- -OBJCOPY := $(PREFIX)objcopy -AS := $(PREFIX)as -LD := $(PREFIX)ld - -# note: the makefile must be set up so MODERNCC is never called -# if MODERN=0 -MODERNCC := $(PREFIX)gcc - -ifeq ($(OS),Windows_NT) -EXE := .exe -else -EXE := -endif - -# use arm-none-eabi-cpp for macOS -# as macOS's default compiler is clang -# and clang's preprocessor will warn on \u -# when preprocessing asm files, expecting a unicode literal -# we can't unconditionally use arm-none-eabi-cpp -# as installations which install binutils-arm-none-eabi -# don't come with it -ifneq ($(MODERN),1) - ifeq ($(shell uname -s),Darwin) - CPP := $(PREFIX)cpp - else - CPP := $(CC) -E - endif -else - CPP := $(PREFIX)cpp -endif - -GAME_CODE := AGBJ -MAKER_CODE := 01 -REVISION := 0 - -SHELL := /bin/bash -o pipefail - -CPPFLAGS := -I ../tools/agbcc/include -I ../tools/agbcc -iquote include -nostdinc -undef - -ROM := berry_fix.gba -OBJ_DIR := build -CC1 := ../tools/agbcc/bin/agbcc$(EXE) -override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm - - -ELF = $(ROM:.gba=.elf) -MAP = $(ROM:.gba=.map) - -C_SUBDIR = src -ASM_SUBDIR = asm -DATA_ASM_SUBDIR = data - -C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) -ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) -DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) - -ASFLAGS := -mcpu=arm7tdmi - -LDFLAGS = -Map ../$(MAP) - -SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c -GFX := ../tools/gbagfx/gbagfx$(EXE) -AIF := ../tools/aif2pcm/aif2pcm$(EXE) -MID := ../tools/mid2agb/mid2agb$(EXE) -SCANINC := ../tools/scaninc/scaninc$(EXE) -PREPROC := ../tools/preproc/preproc$(EXE) -RAMSCRGEN := ../tools/ramscrgen/ramscrgen$(EXE) -FIX := ../tools/gbafix/gbafix$(EXE) - -# Clear the default suffixes -.SUFFIXES: -# Don't delete intermediate files -.SECONDARY: -# Delete files that weren't built properly -.DELETE_ON_ERROR: - -# Secondary expansion is required for dependency variables in object rules. -.SECONDEXPANSION: - -.PHONY: all rom clean compare tidy payload - -C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) -C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) - -ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) -ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) - -DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) -DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) - -SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s) -SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) - -MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid) -MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) - -OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) -# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) - -SUBDIRS := $(sort $(dir $(OBJS))) - -$(shell mkdir -p $(SUBDIRS)) - -all: payload rom - @: - -rom: $(ROM) -ifeq ($(COMPARE),1) - @$(SHA1) rom.sha1 -endif - -# For contributors to make sure a change didn't affect the contents of the ROM. -compare: ; @$(MAKE) COMPARE=1 - -clean: tidy - rm -f sound/direct_sound_samples/*.bin - rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + - make -C payload clean - -tidy: - rm -f $(ROM) $(ELF) $(MAP) - rm -r build/* - make -C payload tidy - -%.s: ; -%.png: ; -%.pal: ; -%.aif: ; - -%.1bpp: %.png ; $(GFX) $< $@ -%.4bpp: %.png ; $(GFX) $< $@ -%.8bpp: %.png ; $(GFX) $< $@ -%.gbapal: %.pal ; $(GFX) $< $@ -%.gbapal: %.png ; $(GFX) $< $@ -%.lz: % ; $(GFX) $< $@ -%.rl: % ; $(GFX) $< $@ - - -ifeq ($(NODEP),1) -$(C_BUILDDIR)/%.o: c_dep := -else -$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c) -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 - $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s - -ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: asm_dep := -else -$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) -endif - -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) - $(AS) $(ASFLAGS) -o $@ $< - -ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: data_dep := -else -$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) -endif - -payload: - @$(MAKE) -C payload COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) - -payload/payload.gba: payload - -data/payload.gba.lz: payload/payload.gba - $(GFX) $< $@ -search 1 - -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) - $(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@ - -$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s - $(AS) $(ASFLAGS) -I sound -o $@ $< - -$(ELF): ld_script.txt $(OBJS) - cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../ld_script.txt -o ../$@ - -$(ROM): $(ELF) - $(OBJCOPY) -O binary $< $@ - $(FIX) $@ -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent - diff --git a/berry_fix/asm/berry_fix_header.inc b/berry_fix/asm/berry_fix_header.inc deleted file mode 100644 index 5167d2ff0..000000000 --- a/berry_fix/asm/berry_fix_header.inc +++ /dev/null @@ -1,35 +0,0 @@ - .global BerryFixMBHeaderNintendoLogo -BerryFixMBHeaderNintendoLogo: - .space 156 - -BerryFixMBHeaderGameTitle: - .space 12 - - .global BerryFixMBHeaderGameCode -BerryFixMBHeaderGameCode: - .space 4 - -BerryFixMBHeaderMakerCode: - .space 2 - -BerryFixMBHeaderMagic: - .byte 0 - -BerryFixMBHeaderMainUnitCode: - .byte 0 - -BerryFixMBHeaderDeviceType: - .byte 0 - -BerryFixMBHeaderReserved1: - .space 7 - - .global BerryFixMBHeaderSoftwareVersion -BerryFixMBHeaderSoftwareVersion: - .byte 0 - -BerryFixMBHeaderChecksum: - .byte 0 - -BerryFixMBHeaderReserved2: - .space 2 diff --git a/berry_fix/asm/loader.s b/berry_fix/asm/loader.s deleted file mode 100644 index a78014078..000000000 --- a/berry_fix/asm/loader.s +++ /dev/null @@ -1,119 +0,0 @@ - .include "../asm/macros/asm.inc" - .include "../asm/macros/function.inc" - .include "../constants/gba_constants.inc" - - .set SIO_ERROR, 0x0040 - .set SIO_MULTI_BUSY, 0x0080 - - .set EWRAM_ORIG, 0x02000000 - .set gCode, 0x02010000 - .set PROG_ORIG, 0x00008000 - - .syntax unified - - .text - - arm_func_start _start -_start: @ 0 - b _entry - arm_func_end _start - - .include "asm/berry_fix_header.inc" - -@ C0 - .word 0 - - .global _GPIOPortData -_GPIOPortData: @ C4 - .2byte 0 - - .global _GPIOPortDirection -_GPIOPortDirection: @ C6 - .2byte 0 - - .global _GPIOPortReadEnable -_GPIOPortReadEnable: @ C8 - .2byte 0 - -@ CA - .2byte 0 - -@ CC - .space 0x34 - - arm_func_start _entry -_entry: @ 100 - b _send - arm_func_end _entry - - .space 0x1C - - arm_func_start _recv -_recv: - @ Waits until link cable is no longer busy. - @ Returns nz if an error has occurred - @ Otherwise, returns the received short in r1. - @ Preserves r0 -_120: - ldrh r1, [r0, 0x8] @ SIOCNT - tst r1, SIO_MULTI_BUSY - beq _120 -_12c: - ldrh r1, [r0, 0x8] @ SIOCNT - tst r1, SIO_MULTI_BUSY - bne _12c - ldrh r1, [r0, 0x8] @ SIOCNT - tst r1, SIO_ERROR - bxne lr - ldrh r1, [r0] @ SIOMULTI0 - bx lr - arm_func_end _recv - - arm_func_start _send -_send: @ 14c - ldr r0, =REG_SIOMULTI0 -_150: - bl _recv - bne _150 - mov r2, #0 - strh r2, [r0, 0xa] @ SIOMLT_SEND - cmp r1, #0 - bne _150 - mov r2, 0x8000 -_16c: - mov r1, #0 -_170: - strh r1, [r0, 0xa] @ SIOMLT_SEND - bl _recv - bne _150 - cmp r1, r2 - bne _16c - lsr r2, #5 - cmp r1, #0 - bne _170 - ldr r3, =BerryFixMBHeaderGameCode - ldrh r2, [r3] - strh r2, [r0, 0xa] @ SIOMLT_SEND - bl _recv -_1a0: - bne _1a0 - cmp r1, r2 - bne _1a0 - ldrh r2, [r3, 0x2] - strh r2, [r0, 0xa] @ SIOMLT_SEND - bl _recv - bne _1a0 - cmp r1, r2 - bne _1a0 - mov r1, #0 - strh r1, [r0, 0xa] @ SIOMLT_SEND - ldr r0, =_data_2f0 - ldr r1, =gCode - swi 0x11 << 16 - ldr lr, =gCode - bx lr - .pool - arm_func_end _send - @ 1f0 - - .align 2, 0 @ don't pad with nop diff --git a/berry_fix/charmap.txt b/berry_fix/charmap.txt deleted file mode 100644 index 1c143ada4..000000000 --- a/berry_fix/charmap.txt +++ /dev/null @@ -1,1067 +0,0 @@ -' ' = 00 -'À' = 01 -'Ã�' = 02 -'Â' = 03 -'Ç' = 04 -'È' = 05 -'É' = 06 -'Ê' = 07 -'Ë' = 08 -'ÃŒ' = 09 -'ÃŽ' = 0B -'Ã�' = 0C -'Ã’' = 0D -'Ó' = 0E -'Ô' = 0F -'Å’' = 10 -'Ù' = 11 -'Ú' = 12 -'Û' = 13 -'Ñ' = 14 -'ß' = 15 -'à' = 16 -'á' = 17 -'ç' = 19 -'è' = 1A -'é' = 1B -'ê' = 1C -'ë' = 1D -'ì' = 1E -'î' = 20 -'ï' = 21 -'ò' = 22 -'ó' = 23 -'ô' = 24 -'Å“' = 25 -'ù' = 26 -'ú' = 27 -'û' = 28 -'ñ' = 29 -'º' = 2A -'ª' = 2B -SUPER_ER = 2C -'&' = 2D -'+' = 2E -LV = 34 -'=' = 35 -';' = 36 -'¿' = 51 -'¡' = 52 -PK = 53 -PKMN = 53 54 -POKEBLOCK = 55 56 57 58 59 -'Ã�' = 5A -'%' = 5B -'(' = 5C -')' = 5D -'â' = 68 -'í' = 6F -UNK_SPACER = 77 -UP_ARROW = 79 -DOWN_ARROW = 7A -LEFT_ARROW = 7B -RIGHT_ARROW = 7C -'0' = A1 -'1' = A2 -'2' = A3 -'3' = A4 -'4' = A5 -'5' = A6 -'6' = A7 -'7' = A8 -'8' = A9 -'9' = AA -'!' = AB -'?' = AC -'.' = AD -'-' = AE -'·' = AF -'…' = B0 -'“' = B1 -'â€�' = B2 -'‘' = B3 -'’' = B4 -'♂' = B5 -'♀' = B6 -'Â¥' = B7 -',' = B8 -'×' = B9 -'/' = BA -'A' = BB -'B' = BC -'C' = BD -'D' = BE -'E' = BF -'F' = C0 -'G' = C1 -'H' = C2 -'I' = C3 -'J' = C4 -'K' = C5 -'L' = C6 -'M' = C7 -'N' = C8 -'O' = C9 -'P' = CA -'Q' = CB -'R' = CC -'S' = CD -'T' = CE -'U' = CF -'V' = D0 -'W' = D1 -'X' = D2 -'Y' = D3 -'Z' = D4 -'a' = D5 -'b' = D6 -'c' = D7 -'d' = D8 -'e' = D9 -'f' = DA -'g' = DB -'h' = DC -'i' = DD -'j' = DE -'k' = DF -'l' = E0 -'m' = E1 -'n' = E2 -'o' = E3 -'p' = E4 -'q' = E5 -'r' = E6 -'s' = E7 -'t' = E8 -'u' = E9 -'v' = EA -'w' = EB -'x' = EC -'y' = ED -'z' = EE -'â–¶' = EF -':' = F0 -'Ä' = F1 -'Ö' = F2 -'Ü' = F3 -'ä' = F4 -'ö' = F5 -'ü' = F6 -TALL_PLUS = FC 0C FB -'$' = FF - -@ Hiragana -'ã�‚' = 01 -'ã�„' = 02 -'ã�†' = 03 -'ã�ˆ' = 04 -'ã�Š' = 05 -'ã�‹' = 06 -'ã��' = 07 -'ã��' = 08 -'ã�‘' = 09 -'ã�“' = 0A -'ã�•' = 0B -'ã�—' = 0C -'ã�™' = 0D -'ã�›' = 0E -'ã��' = 0F -'ã�Ÿ' = 10 -'ã�¡' = 11 -'ã�¤' = 12 -'ã�¦' = 13 -'ã�¨' = 14 -'ã�ª' = 15 -'ã�«' = 16 -'ã�¬' = 17 -'ã�­' = 18 -'ã�®' = 19 -'ã�¯' = 1A -'ã�²' = 1B -'ã�µ' = 1C -'ã�¸' = 1D -'ã�»' = 1E -'ã�¾' = 1F -'ã�¿' = 20 -'ã‚€' = 21 -'ã‚�' = 22 -'ã‚‚' = 23 -'ã‚„' = 24 -'ゆ' = 25 -'よ' = 26 -'ら' = 27 -'り' = 28 -'ã‚‹' = 29 -'れ' = 2A -'ã‚�' = 2B -'ã‚�' = 2C -'ã‚’' = 2D -'ã‚“' = 2E -'ã��' = 2F -'ã�ƒ' = 30 -'ã�…' = 31 -'ã�‡' = 32 -'ã�‰' = 33 -'ゃ' = 34 -'ã‚…' = 35 -'ょ' = 36 -'ã�Œ' = 37 -'ã�Ž' = 38 -'ã��' = 39 -'ã�’' = 3A -'ã�”' = 3B -'ã�–' = 3C -'ã�˜' = 3D -'ã�š' = 3E -'ã�œ' = 3F -'ã�ž' = 40 -'ã� ' = 41 -'ã�¢' = 42 -'ã�¥' = 43 -'ã�§' = 44 -'ã�©' = 45 -'ã�°' = 46 -'ã�³' = 47 -'ã�¶' = 48 -'ã�¹' = 49 -'ã�¼' = 4A -'ã�±' = 4B -'ã�´' = 4C -'ã�·' = 4D -'ã�º' = 4E -'ã�½' = 4F -'ã�£' = 50 - -@ Katakana -'ã‚¢' = 51 -'イ' = 52 -'ウ' = 53 -'エ' = 54 -'オ' = 55 -'ã‚«' = 56 -'ã‚­' = 57 -'ク' = 58 -'ケ' = 59 -'コ' = 5A -'サ' = 5B -'ã‚·' = 5C -'ス' = 5D -'ã‚»' = 5E -'ソ' = 5F -'ã‚¿' = 60 -'ãƒ�' = 61 -'ツ' = 62 -'テ' = 63 -'ト' = 64 -'ナ' = 65 -'ニ' = 66 -'ヌ' = 67 -'ãƒ�' = 68 -'ノ' = 69 -'ãƒ�' = 6A -'ヒ' = 6B -'フ' = 6C -'ヘ' = 6D -'ホ' = 6E -'マ' = 6F -'ミ' = 70 -'ム' = 71 -'メ' = 72 -'モ' = 73 -'ヤ' = 74 -'ユ' = 75 -'ヨ' = 76 -'ラ' = 77 -'リ' = 78 -'ル' = 79 -'レ' = 7A -'ロ' = 7B -'ワ' = 7C -'ヲ' = 7D -'ン' = 7E -'ã‚¡' = 7F -'ã‚£' = 80 -'ã‚¥' = 81 -'ã‚§' = 82 -'ã‚©' = 83 -'ャ' = 84 -'ュ' = 85 -'ョ' = 86 -'ガ' = 87 -'ã‚®' = 88 -'ã‚°' = 89 -'ゲ' = 8A -'ã‚´' = 8B -'ã‚¶' = 8C -'ジ' = 8D -'ズ' = 8E -'ゼ' = 8F -'ゾ' = 90 -'ダ' = 91 -'ヂ' = 92 -'ヅ' = 93 -'デ' = 94 -'ド' = 95 -'ãƒ�' = 96 -'ビ' = 97 -'ブ' = 98 -'ベ' = 99 -'ボ' = 9A -'パ' = 9B -'ピ' = 9C -'プ' = 9D -'ペ' = 9E -'ãƒ�' = 9F -'ッ' = A0 - -@ Japanese punctuation -' ' = 00 -'ï¼�' = AB -'?' = AC -'。' = AD -'ー' = AE -'⋯' = B0 - -STRING = FD - -@ string placeholders -PLAYER = FD 01 -STR_VAR_1 = FD 02 -STR_VAR_2 = FD 03 -STR_VAR_3 = FD 04 -KUN = FD 05 -RIVAL = FD 06 -@ version-dependent strings (originally made for Ruby/Sapphire differences) -@ Emerald uses the Sapphire strings (except for VERSION). -VERSION = FD 07 @ "EMERALD" -AQUA = FD 08 -MAGMA = FD 09 -ARCHIE = FD 0A -MAXIE = FD 0B -KYOGRE = FD 0C -GROUDON = FD 0D - -@ battle string placeholders - -B_BUFF1 = FD 00 -B_BUFF2 = FD 01 -B_COPY_VAR_1 = FD 02 -B_COPY_VAR_2 = FD 03 -B_COPY_VAR_3 = FD 04 -B_PLAYER_MON1_NAME = FD 05 -B_OPPONENT_MON1_NAME = FD 06 -B_PLAYER_MON2_NAME = FD 07 -B_OPPONENT_MON2_NAME = FD 08 -B_LINK_PLAYER_MON1_NAME = FD 09 -B_LINK_OPPONENT_MON1_NAME = FD 0A -B_LINK_PLAYER_MON2_NAME = FD 0B -B_LINK_OPPONENT_MON2_NAME = FD 0C -B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D -B_ATK_PARTNER_NAME = FD 0E -B_ATK_NAME_WITH_PREFIX = FD 0F -B_DEF_NAME_WITH_PREFIX = FD 10 -B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler -B_ACTIVE_NAME_WITH_PREFIX = FD 12 -B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13 -B_CURRENT_MOVE = FD 14 -B_LAST_MOVE = FD 15 -B_LAST_ITEM = FD 16 -B_LAST_ABILITY = FD 17 -B_ATK_ABILITY = FD 18 -B_DEF_ABILITY = FD 19 -B_SCR_ACTIVE_ABILITY = FD 1A -B_EFF_ABILITY = FD 1B -B_TRAINER1_CLASS = FD 1C -B_TRAINER1_NAME = FD 1D -B_LINK_PLAYER_NAME = FD 1E -B_LINK_PARTNER_NAME = FD 1F -B_LINK_OPPONENT1_NAME = FD 20 -B_LINK_OPPONENT2_NAME = FD 21 -B_LINK_SCR_TRAINER_NAME = FD 22 -B_PLAYER_NAME = FD 23 -B_TRAINER1_LOSE_TEXT = FD 24 -B_TRAINER1_WIN_TEXT = FD 25 -B_26 = FD 26 -B_PC_CREATOR_NAME = FD 27 -B_ATK_PREFIX1 = FD 28 -B_DEF_PREFIX1 = FD 29 -B_ATK_PREFIX2 = FD 2A -B_DEF_PREFIX2 = FD 2B -B_ATK_PREFIX3 = FD 2C -B_DEF_PREFIX3 = FD 2D -B_TRAINER2_CLASS = FD 2E -B_TRAINER2_NAME = FD 2F -B_TRAINER2_LOSE_TEXT = FD 30 -B_TRAINER2_WIN_TEXT = FD 31 -B_PARTNER_CLASS = FD 32 -B_PARTNER_NAME = FD 33 -B_BUFF3 = FD 34 - -@ indicates the end of a town/city name (before " TOWN" or " CITY") -NAME_END = FC 00 - -@ special 0xF7 character -SPECIAL_F7 = F7 - -@ more text functions - -COLOR = FC 01 @ use a color listed below right after -HIGHLIGHT = FC 02 @ same as fc 01 -SHADOW = FC 03 @ same as fc 01 -COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes -PALETTE = FC 05 @ used in credits -SIZE = FC 06 @ note that anything other than "SMALL" is invalid -UNKNOWN_7 = FC 07 -PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them -PAUSE_UNTIL_PRESS = FC 09 -WAIT_SE = FC 0A -PLAY_BGM = FC 0B -ESCAPE = FC 0C -SHIFT_TEXT = FC 0D -UNKNOWN_E = FC 0E -UNKNOWN_F = FC 0F -PLAY_SE = FC 10 -CLEAR = FC 11 -SKIP = FC 12 -CLEAR_TO = FC 13 -UNKNOWN_14 = FC 14 -JPN = FC 15 -ENG = FC 16 -PAUSE_MUSIC = FC 17 -RESUME_MUSIC = FC 18 - -@ colors - -TRANSPARENT = 00 -WHITE = 01 -DARK_GRAY = 02 -LIGHT_GRAY = 03 -RED = 04 -LIGHT_RED = 05 -GREEN = 06 -LIGHT_GREEN = 07 -BLUE = 08 -LIGHT_BLUE = 09 -@ these next colors can be set to anything arbitrary at runtime -@ usually though they'll have the textbox border colors as described below -DYNAMIC_COLOR1 = 0A @ white -DYNAMIC_COLOR2 = 0B @ white with a tinge of green -DYNAMIC_COLOR3 = 0C @ white 2 -DYNAMIC_COLOR4 = 0D @ aquamarine -DYNAMIC_COLOR5 = 0E @ blue-green -DYNAMIC_COLOR6 = 0F @ cerulean - -@ sound and music - -MUS_DUMMY = 00 00 -SE_USE_ITEM = 01 00 -SE_PC_LOGIN = 02 00 -SE_PC_OFF = 03 00 -SE_PC_ON = 04 00 -SE_SELECT = 05 00 -SE_WIN_OPEN = 06 00 -SE_WALL_HIT = 07 00 -SE_DOOR = 08 00 -SE_EXIT = 09 00 -SE_LEDGE = 0A 00 -SE_BIKE_BELL = 0B 00 -SE_NOT_EFFECTIVE = 0C 00 -SE_EFFECTIVE = 0D 00 -SE_SUPER_EFFECTIVE = 0E 00 -SE_BALL_OPEN = 0F 00 -SE_FAINT = 10 00 -SE_FLEE = 11 00 -SE_SLIDING_DOOR = 12 00 -SE_SHIP = 13 00 -SE_BANG = 14 00 -SE_PIN = 15 00 -SE_BOO = 16 00 -SE_BALL = 17 00 -SE_CONTEST_PLACE = 18 00 -SE_A = 19 00 -SE_I = 1A 00 -SE_U = 1B 00 -SE_E = 1C 00 -SE_O = 1D 00 -SE_N = 1E 00 -SE_SUCCESS = 1F 00 -SE_FAILURE = 20 00 -SE_EXP = 21 00 -SE_BIKE_HOP = 22 00 -SE_SWITCH = 23 00 -SE_CLICK = 24 00 -SE_FU_ZAKU = 25 00 -SE_CONTEST_CONDITION_LOSE = 26 00 -SE_LAVARIDGE_FALL_WARP = 27 00 -SE_ICE_STAIRS = 28 00 -SE_ICE_BREAK = 29 00 -SE_ICE_CRACK = 2A 00 -SE_FALL = 2B 00 -SE_UNLOCK = 2C 00 -SE_WARP_IN = 2D 00 -SE_WARP_OUT = 2E 00 -SE_REPEL = 2F 00 -SE_ROTATING_GATE = 30 00 -SE_TRUCK_MOVE = 31 00 -SE_TRUCK_STOP = 32 00 -SE_TRUCK_UNLOAD = 33 00 -SE_TRUCK_DOOR = 34 00 -SE_BERRY_BLENDER = 35 00 -SE_CARD = 36 00 -SE_SAVE = 37 00 -SE_BALL_BOUNCE_1 = 38 00 -SE_BALL_BOUNCE_2 = 39 00 -SE_BALL_BOUNCE_3 = 3A 00 -SE_BALL_BOUNCE_4 = 3B 00 -SE_BALL_TRADE = 3C 00 -SE_BALL_THROW = 3D 00 -SE_NOTE_C = 3E 00 -SE_NOTE_D = 3F 00 -SE_NOTE_E = 40 00 -SE_NOTE_F = 41 00 -SE_NOTE_G = 42 00 -SE_NOTE_A = 43 00 -SE_NOTE_B = 44 00 -SE_NOTE_C_HIGH = 45 00 -SE_PUDDLE = 46 00 -SE_BRIDGE_WALK = 47 00 -SE_ITEMFINDER = 48 00 -SE_DING_DONG = 49 00 -SE_BALLOON_RED = 4A 00 -SE_BALLOON_BLUE = 4B 00 -SE_BALLOON_YELLOW = 4C 00 -SE_BREAKABLE_DOOR = 4D 00 -SE_MUD_BALL = 4E 00 -SE_FIELD_POISON = 4F 00 -SE_ESCALATOR = 50 00 -SE_THUNDERSTORM = 51 00 -SE_THUNDERSTORM_STOP = 52 00 -SE_DOWNPOUR = 53 00 -SE_DOWNPOUR_STOP = 54 00 -SE_RAIN = 55 00 -SE_RAIN_STOP = 56 00 -SE_THUNDER = 57 00 -SE_THUNDER2 = 58 00 -SE_ELEVATOR = 59 00 -SE_LOW_HEALTH = 5A 00 -SE_EXP_MAX = 5B 00 -SE_ROULETTE_BALL = 5C 00 -SE_ROULETTE_BALL2 = 5D 00 -SE_TAILLOW_WING_FLAP = 5E 00 -SE_SHOP = 5F 00 -SE_CONTEST_HEART = 60 00 -SE_CONTEST_CURTAIN_RISE = 61 00 -SE_CONTEST_CURTAIN_FALL = 62 00 -SE_CONTEST_ICON_CHANGE = 63 00 -SE_CONTEST_ICON_CLEAR = 64 00 -SE_CONTEST_MONS_TURN = 65 00 -SE_SHINY = 66 00 -SE_INTRO_BLAST = 67 00 -SE_MUGSHOT = 68 00 -SE_APPLAUSE = 69 00 -SE_VEND = 6A 00 -SE_ORB = 6B 00 -SE_DEX_SCROLL = 6C 00 -SE_DEX_PAGE = 6D 00 -SE_POKENAV_ON = 6E 00 -SE_POKENAV_OFF = 6F 00 -SE_DEX_SEARCH = 70 00 -SE_EGG_HATCH = 71 00 -SE_BALL_TRAY_ENTER = 72 00 -SE_BALL_TRAY_BALL = 73 00 -SE_BALL_TRAY_EXIT = 74 00 -SE_GLASS_FLUTE = 75 00 -SE_M_THUNDERBOLT = 76 00 -SE_M_THUNDERBOLT2 = 77 00 -SE_M_HARDEN = 78 00 -SE_M_NIGHTMARE = 79 00 -SE_M_VITAL_THROW = 7A 00 -SE_M_VITAL_THROW2 = 7B 00 -SE_M_BUBBLE = 7C 00 -SE_M_BUBBLE2 = 7D 00 -SE_M_BUBBLE3 = 7E 00 -SE_M_RAIN_DANCE = 7F 00 -SE_M_CUT = 80 00 -SE_M_STRING_SHOT = 81 00 -SE_M_STRING_SHOT2 = 82 00 -SE_M_ROCK_THROW = 83 00 -SE_M_GUST = 84 00 -SE_M_GUST2 = 85 00 -SE_M_DOUBLE_SLAP = 86 00 -SE_M_DOUBLE_TEAM = 87 00 -SE_M_RAZOR_WIND = 88 00 -SE_M_ICY_WIND = 89 00 -SE_M_THUNDER_WAVE = 8A 00 -SE_M_COMET_PUNCH = 8B 00 -SE_M_MEGA_KICK = 8C 00 -SE_M_MEGA_KICK2 = 8D 00 -SE_M_CRABHAMMER = 8E 00 -SE_M_JUMP_KICK = 8F 00 -SE_M_FLAME_WHEEL = 90 00 -SE_M_FLAME_WHEEL2 = 91 00 -SE_M_FLAMETHROWER = 92 00 -SE_M_FIRE_PUNCH = 93 00 -SE_M_TOXIC = 94 00 -SE_M_SACRED_FIRE = 95 00 -SE_M_SACRED_FIRE2 = 96 00 -SE_M_EMBER = 97 00 -SE_M_TAKE_DOWN = 98 00 -SE_M_BLIZZARD = 99 00 -SE_M_BLIZZARD2 = 9A 00 -SE_M_SCRATCH = 9B 00 -SE_M_VICEGRIP = 9C 00 -SE_M_WING_ATTACK = 9D 00 -SE_M_FLY = 9E 00 -SE_M_SAND_ATTACK = 9F 00 -SE_M_RAZOR_WIND2 = A0 00 -SE_M_BITE = A1 00 -SE_M_HEADBUTT = A2 00 -SE_M_SURF = A3 00 -SE_M_HYDRO_PUMP = A4 00 -SE_M_WHIRLPOOL = A5 00 -SE_M_HORN_ATTACK = A6 00 -SE_M_TAIL_WHIP = A7 00 -SE_M_MIST = A8 00 -SE_M_POISON_POWDER = A9 00 -SE_M_BIND = AA 00 -SE_M_DRAGON_RAGE = AB 00 -SE_M_SING = AC 00 -SE_M_PERISH_SONG = AD 00 -SE_M_PAY_DAY = AE 00 -SE_M_DIG = AF 00 -SE_M_DIZZY_PUNCH = B0 00 -SE_M_SELF_DESTRUCT = B1 00 -SE_M_EXPLOSION = B2 00 -SE_M_ABSORB_2 = B3 00 -SE_M_ABSORB = B4 00 -SE_M_SCREECH = B5 00 -SE_M_BUBBLE_BEAM = B6 00 -SE_M_BUBBLE_BEAM2 = B7 00 -SE_M_SUPERSONIC = B8 00 -SE_M_BELLY_DRUM = B9 00 -SE_M_METRONOME = BA 00 -SE_M_BONEMERANG = BB 00 -SE_M_LICK = BC 00 -SE_M_PSYBEAM = BD 00 -SE_M_FAINT_ATTACK = BE 00 -SE_M_SWORDS_DANCE = BF 00 -SE_M_LEER = C0 00 -SE_M_SWAGGER = C1 00 -SE_M_SWAGGER2 = C2 00 -SE_M_HEAL_BELL = C3 00 -SE_M_CONFUSE_RAY = C4 00 -SE_M_SNORE = C5 00 -SE_M_BRICK_BREAK = C6 00 -SE_M_GIGA_DRAIN = C7 00 -SE_M_PSYBEAM2 = C8 00 -SE_M_SOLAR_BEAM = C9 00 -SE_M_PETAL_DANCE = CA 00 -SE_M_TELEPORT = CB 00 -SE_M_MINIMIZE = CC 00 -SE_M_SKETCH = CD 00 -SE_M_SWIFT = CE 00 -SE_M_REFLECT = CF 00 -SE_M_BARRIER = D0 00 -SE_M_DETECT = D1 00 -SE_M_LOCK_ON = D2 00 -SE_M_MOONLIGHT = D3 00 -SE_M_CHARM = D4 00 -SE_M_CHARGE = D5 00 -SE_M_STRENGTH = D6 00 -SE_M_HYPER_BEAM = D7 00 -SE_M_WATERFALL = D8 00 -SE_M_REVERSAL = D9 00 -SE_M_ACID_ARMOR = DA 00 -SE_M_SANDSTORM = DB 00 -SE_M_TRI_ATTACK = DC 00 -SE_M_TRI_ATTACK2 = DD 00 -SE_M_ENCORE = DE 00 -SE_M_ENCORE2 = DF 00 -SE_M_BATON_PASS = E0 00 -SE_M_MILK_DRINK = E1 00 -SE_M_ATTRACT = E2 00 -SE_M_ATTRACT2 = E3 00 -SE_M_MORNING_SUN = E4 00 -SE_M_FLATTER = E5 00 -SE_M_SAND_TOMB = E6 00 -SE_M_GRASSWHISTLE = E7 00 -SE_M_SPIT_UP = E8 00 -SE_M_DIVE = E9 00 -SE_M_EARTHQUAKE = EA 00 -SE_M_TWISTER = EB 00 -SE_M_SWEET_SCENT = EC 00 -SE_M_YAWN = ED 00 -SE_M_SKY_UPPERCUT = EE 00 -SE_M_STAT_INCREASE = EF 00 -SE_M_HEAT_WAVE = F0 00 -SE_M_UPROAR = F1 00 -SE_M_HAIL = F2 00 -SE_M_COSMIC_POWER = F3 00 -SE_M_TEETER_DANCE = F4 00 -SE_M_STAT_DECREASE = F5 00 -SE_M_HAZE = F6 00 -SE_M_HYPER_BEAM2 = F7 00 -SE_RG_DOOR = F8 00 -SE_RG_CARD_FLIP = F9 00 -SE_RG_CARD_FLIPPING = FA 00 -SE_RG_CARD_OPEN = FB 00 -SE_RG_BAG_CURSOR = FC 00 -SE_RG_BAG_POCKET = FD 00 -SE_RG_BALL_CLICK = FE 00 -SE_RG_SHOP = FF 00 -SE_RG_SS_ANNE_HORN = 00 01 -SE_RG_HELP_OPEN = 01 01 -SE_RG_HELP_CLOSE = 02 01 -SE_RG_HELP_ERROR = 03 01 -SE_RG_DEOXYS_MOVE = 04 01 -SE_RG_POKE_JUMP_SUCCESS = 05 01 -SE_RG_POKE_JUMP_FAILURE = 06 01 -SE_POKENAV_CALL = 07 01 -SE_POKENAV_HANG_UP = 08 01 -SE_ARENA_TIMEUP1 = 09 01 -SE_ARENA_TIMEUP2 = 0A 01 -SE_PIKE_CURTAIN_CLOSE = 0B 01 -SE_PIKE_CURTAIN_OPEN = 0C 01 -SE_SUDOWOODO_SHAKE = 0D 01 -MUS_LITTLEROOT_TEST = 5E 01 -MUS_GSC_ROUTE38 = 5F 01 -MUS_CAUGHT = 60 01 -MUS_VICTORY_WILD = 61 01 -MUS_VICTORY_GYM_LEADER = 62 01 -MUS_VICTORY_LEAGUE = 63 01 -MUS_C_COMM_CENTER = 64 01 -MUS_GSC_PEWTER = 65 01 -MUS_C_VS_LEGEND_BEAST = 66 01 -MUS_ROUTE101 = 67 01 -MUS_ROUTE110 = 68 01 -MUS_ROUTE120 = 69 01 -MUS_PETALBURG = 6A 01 -MUS_OLDALE = 6B 01 -MUS_GYM = 6C 01 -MUS_SURF = 6D 01 -MUS_PETALBURG_WOODS = 6E 01 -MUS_LEVEL_UP = 6F 01 -MUS_HEAL = 70 01 -MUS_OBTAIN_BADGE = 71 01 -MUS_OBTAIN_ITEM = 72 01 -MUS_EVOLVED = 73 01 -MUS_OBTAIN_TMHM = 74 01 -MUS_LILYCOVE_MUSEUM = 75 01 -MUS_ROUTE122 = 76 01 -MUS_OCEANIC_MUSEUM = 77 01 -MUS_EVOLUTION_INTRO = 78 01 -MUS_EVOLUTION = 79 01 -MUS_MOVE_DELETED = 7A 01 -MUS_ENCOUNTER_GIRL = 7B 01 -MUS_ENCOUNTER_MALE = 7C 01 -MUS_ABANDONED_SHIP = 7D 01 -MUS_FORTREE = 7E 01 -MUS_BIRCH_LAB = 7F 01 -MUS_B_TOWER_RS = 80 01 -MUS_ENCOUNTER_SWIMMER = 81 01 -MUS_CAVE_OF_ORIGIN = 82 01 -MUS_OBTAIN_BERRY = 83 01 -MUS_AWAKEN_LEGEND = 84 01 -MUS_SLOTS_JACKPOT = 85 01 -MUS_SLOTS_WIN = 86 01 -MUS_TOO_BAD = 87 01 -MUS_ROULETTE = 88 01 -MUS_LINK_CONTEST_P1 = 89 01 -MUS_LINK_CONTEST_P2 = 8A 01 -MUS_LINK_CONTEST_P3 = 8B 01 -MUS_LINK_CONTEST_P4 = 8C 01 -MUS_ENCOUNTER_RICH = 8D 01 -MUS_VERDANTURF = 8E 01 -MUS_RUSTBORO = 8F 01 -MUS_POKE_CENTER = 90 01 -MUS_ROUTE104 = 91 01 -MUS_ROUTE119 = 92 01 -MUS_CYCLING = 93 01 -MUS_POKE_MART = 94 01 -MUS_LITTLEROOT = 95 01 -MUS_MT_CHIMNEY = 96 01 -MUS_ENCOUNTER_FEMALE = 97 01 -MUS_LILYCOVE = 98 01 -MUS_ROUTE111 = 99 01 -MUS_HELP = 9A 01 -MUS_UNDERWATER = 9B 01 -MUS_VICTORY_TRAINER = 9C 01 -MUS_TITLE = 9D 01 -MUS_INTRO = 9E 01 -MUS_ENCOUNTER_MAY = 9F 01 -MUS_ENCOUNTER_INTENSE = A0 01 -MUS_ENCOUNTER_COOL = A1 01 -MUS_ROUTE113 = A2 01 -MUS_ENCOUNTER_AQUA = A3 01 -MUS_FOLLOW_ME = A4 01 -MUS_ENCOUNTER_BRENDAN = A5 01 -MUS_EVER_GRANDE = A6 01 -MUS_ENCOUNTER_SUSPICIOUS = A7 01 -MUS_VICTORY_AQUA_MAGMA = A8 01 -MUS_CABLE_CAR = A9 01 -MUS_GAME_CORNER = AA 01 -MUS_DEWFORD = AB 01 -MUS_SAFARI_ZONE = AC 01 -MUS_VICTORY_ROAD = AD 01 -MUS_AQUA_MAGMA_HIDEOUT = AE 01 -MUS_SAILING = AF 01 -MUS_MT_PYRE = B0 01 -MUS_SLATEPORT = B1 01 -MUS_MT_PYRE_EXTERIOR = B2 01 -MUS_SCHOOL = B3 01 -MUS_HALL_OF_FAME = B4 01 -MUS_FALLARBOR = B5 01 -MUS_SEALED_CHAMBER = B6 01 -MUS_CONTEST_WINNER = B7 01 -MUS_CONTEST = B8 01 -MUS_ENCOUNTER_MAGMA = B9 01 -MUS_INTRO_BATTLE = BA 01 -MUS_ABNORMAL_WEATHER = BB 01 -MUS_WEATHER_GROUDON = BC 01 -MUS_SOOTOPOLIS = BD 01 -MUS_CONTEST_RESULTS = BE 01 -MUS_HALL_OF_FAME_ROOM = BF 01 -MUS_TRICK_HOUSE = C0 01 -MUS_ENCOUNTER_TWINS = C1 01 -MUS_ENCOUNTER_ELITE_FOUR = C2 01 -MUS_ENCOUNTER_HIKER = C3 01 -MUS_CONTEST_LOBBY = C4 01 -MUS_ENCOUNTER_INTERVIEWER = C5 01 -MUS_ENCOUNTER_CHAMPION = C6 01 -MUS_CREDITS = C7 01 -MUS_END = C8 01 -MUS_B_FRONTIER = C9 01 -MUS_B_ARENA = CA 01 -MUS_OBTAIN_B_POINTS = CB 01 -MUS_REGISTER_MATCH_CALL = CC 01 -MUS_B_PYRAMID = CD 01 -MUS_B_PYRAMID_TOP = CE 01 -MUS_B_PALACE = CF 01 -MUS_RAYQUAZA_APPEARS = D0 01 -MUS_B_TOWER = D1 01 -MUS_OBTAIN_SYMBOL = D2 01 -MUS_B_DOME = D3 01 -MUS_B_PIKE = D4 01 -MUS_B_FACTORY = D5 01 -MUS_VS_RAYQUAZA = D6 01 -MUS_VS_FRONTIER_BRAIN = D7 01 -MUS_VS_MEW = D8 01 -MUS_B_DOME_LOBBY = D9 01 -MUS_VS_WILD = DA 01 -MUS_VS_AQUA_MAGMA = DB 01 -MUS_VS_TRAINER = DC 01 -MUS_VS_GYM_LEADER = DD 01 -MUS_VS_CHAMPION = DE 01 -MUS_VS_REGI = DF 01 -MUS_VS_KYOGRE_GROUDON = E0 01 -MUS_VS_RIVAL = E1 01 -MUS_VS_ELITE_FOUR = E2 01 -MUS_VS_AQUA_MAGMA_LEADER = E3 01 -MUS_RG_FOLLOW_ME = E4 01 -MUS_RG_GAME_CORNER = E5 01 -MUS_RG_ROCKET_HIDEOUT = E6 01 -MUS_RG_GYM = E7 01 -MUS_RG_JIGGLYPUFF = E8 01 -MUS_RG_INTRO_FIGHT = E9 01 -MUS_RG_TITLE = EA 01 -MUS_RG_CINNABAR = EB 01 -MUS_RG_LAVENDER = EC 01 -MUS_RG_HEAL = ED 01 -MUS_RG_CYCLING = EE 01 -MUS_RG_ENCOUNTER_ROCKET = EF 01 -MUS_RG_ENCOUNTER_GIRL = F0 01 -MUS_RG_ENCOUNTER_BOY = F1 01 -MUS_RG_HALL_OF_FAME = F2 01 -MUS_RG_VIRIDIAN_FOREST = F3 01 -MUS_RG_MT_MOON = F4 01 -MUS_RG_POKE_MANSION = F5 01 -MUS_RG_CREDITS = F6 01 -MUS_RG_ROUTE1 = F7 01 -MUS_RG_ROUTE24 = F8 01 -MUS_RG_ROUTE3 = F9 01 -MUS_RG_ROUTE11 = FA 01 -MUS_RG_VICTORY_ROAD = FB 01 -MUS_RG_VS_GYM_LEADER = FC 01 -MUS_RG_VS_TRAINER = FD 01 -MUS_RG_VS_WILD = FE 01 -MUS_RG_VS_CHAMPION = FF 01 -MUS_RG_PALLET = 00 02 -MUS_RG_OAK_LAB = 01 02 -MUS_RG_OAK = 02 02 -MUS_RG_POKE_CENTER = 03 02 -MUS_RG_SS_ANNE = 04 02 -MUS_RG_SURF = 05 02 -MUS_RG_POKE_TOWER = 06 02 -MUS_RG_SILPH = 07 02 -MUS_RG_FUCHSIA = 08 02 -MUS_RG_CELADON = 09 02 -MUS_RG_VICTORY_TRAINER = 0A 02 -MUS_RG_VICTORY_WILD = 0B 02 -MUS_RG_VICTORY_GYM_LEADER = 0C 02 -MUS_RG_VERMILLION = 0D 02 -MUS_RG_PEWTER = 0E 02 -MUS_RG_ENCOUNTER_RIVAL = 0F 02 -MUS_RG_RIVAL_EXIT = 10 02 -MUS_RG_DEX_RATING = 11 02 -MUS_RG_OBTAIN_KEY_ITEM = 12 02 -MUS_RG_CAUGHT_INTRO = 13 02 -MUS_RG_PHOTO = 14 02 -MUS_RG_GAME_FREAK = 15 02 -MUS_RG_CAUGHT = 16 02 -MUS_RG_NEW_GAME_INSTRUCT = 17 02 -MUS_RG_NEW_GAME_INTRO = 18 02 -MUS_RG_NEW_GAME_EXIT = 19 02 -MUS_RG_POKE_JUMP = 1A 02 -MUS_RG_UNION_ROOM = 1B 02 -MUS_RG_NET_CENTER = 1C 02 -MUS_RG_MYSTERY_GIFT = 1D 02 -MUS_RG_BERRY_PICK = 1E 02 -MUS_RG_SEVII_CAVE = 1F 02 -MUS_RG_TEACHY_TV_SHOW = 20 02 -MUS_RG_SEVII_ROUTE = 21 02 -MUS_RG_SEVII_DUNGEON = 22 02 -MUS_RG_SEVII_123 = 23 02 -MUS_RG_SEVII_45 = 24 02 -MUS_RG_SEVII_67 = 25 02 -MUS_RG_POKE_FLUTE = 26 02 -MUS_RG_VS_DEOXYS = 27 02 -MUS_RG_VS_MEWTWO = 28 02 -MUS_RG_VS_LEGEND = 29 02 -MUS_RG_ENCOUNTER_GYM_LEADER = 2A 02 -MUS_RG_ENCOUNTER_DEOXYS = 2B 02 -MUS_RG_TRAINER_TOWER = 2C 02 -MUS_RG_SLOW_PALLET = 2D 02 -MUS_RG_TEACHY_TV_MENU = 2E 02 -PH_TRAP_BLEND = 2F 02 -PH_TRAP_HELD = 30 02 -PH_TRAP_SOLO = 31 02 -PH_FACE_BLEND = 32 02 -PH_FACE_HELD = 33 02 -PH_FACE_SOLO = 34 02 -PH_CLOTH_BLEND = 35 02 -PH_CLOTH_HELD = 36 02 -PH_CLOTH_SOLO = 37 02 -PH_DRESS_BLEND = 38 02 -PH_DRESS_HELD = 39 02 -PH_DRESS_SOLO = 3A 02 -PH_FLEECE_BLEND = 3B 02 -PH_FLEECE_HELD = 3C 02 -PH_FLEECE_SOLO = 3D 02 -PH_KIT_BLEND = 3E 02 -PH_KIT_HELD = 3F 02 -PH_KIT_SOLO = 40 02 -PH_PRICE_BLEND = 41 02 -PH_PRICE_HELD = 42 02 -PH_PRICE_SOLO = 43 02 -PH_LOT_BLEND = 44 02 -PH_LOT_HELD = 45 02 -PH_LOT_SOLO = 46 02 -PH_GOAT_BLEND = 47 02 -PH_GOAT_HELD = 48 02 -PH_GOAT_SOLO = 49 02 -PH_THOUGHT_BLEND = 4A 02 -PH_THOUGHT_HELD = 4B 02 -PH_THOUGHT_SOLO = 4C 02 -PH_CHOICE_BLEND = 4D 02 -PH_CHOICE_HELD = 4E 02 -PH_CHOICE_SOLO = 4F 02 -PH_MOUTH_BLEND = 50 02 -PH_MOUTH_HELD = 51 02 -PH_MOUTH_SOLO = 52 02 -PH_FOOT_BLEND = 53 02 -PH_FOOT_HELD = 54 02 -PH_FOOT_SOLO = 55 02 -PH_GOOSE_BLEND = 56 02 -PH_GOOSE_HELD = 57 02 -PH_GOOSE_SOLO = 58 02 -PH_STRUT_BLEND = 59 02 -PH_STRUT_HELD = 5A 02 -PH_STRUT_SOLO = 5B 02 -PH_CURE_BLEND = 5C 02 -PH_CURE_HELD = 5D 02 -PH_CURE_SOLO = 5E 02 -PH_NURSE_BLEND = 5F 02 -PH_NURSE_HELD = 60 02 -PH_NURSE_SOLO = 61 02 - -A_BUTTON = F8 00 -B_BUTTON = F8 01 -DPAD_UPDOWN = F8 0A -DPAD_NONE = F8 0C - -UP_ARROW_2 = F9 00 -DOWN_ARROW_2 = F9 01 -LEFT_ARROW_2 = F9 02 -RIGHT_ARROW_2 = F9 03 -PLUS = F9 04 -LV_2 = F9 05 -PP = F9 06 -ID = F9 07 -NO = F9 08 -UNDERSCORE = F9 09 -CIRCLE_1 = F9 0A -CIRCLE_2 = F9 0B -CIRCLE_3 = F9 0C -CIRCLE_4 = F9 0D -CIRCLE_5 = F9 0E -CIRCLE_6 = F9 0F -CIRCLE_7 = F9 10 -CIRCLE_8 = F9 11 -CIRCLE_9 = F9 12 -ROUND_LEFT_PAREN = F9 13 -ROUND_RIGHT_PAREN = F9 14 -CIRCLE_DOT = F9 15 -TRIANGLE = F9 16 -BIG_MULT_X = F9 17 - -EMOJI_UNDERSCORE = F9 D0 -EMOJI_PIPE = F9 D1 -EMOJI_HIGHBAR = F9 D2 -EMOJI_TILDE = F9 D3 -EMOJI_LEFT_PAREN = F9 D4 -EMOJI_RIGHT_PAREN = F9 D5 -EMOJI_UNION = F9 D6 @ ⊂ -EMOJI_GREATER_THAN = F9 D7 -EMOJI_LEFT_EYE = F9 D8 -EMOJI_RIGHT_EYE = F9 D9 -EMOJI_AT = F9 DA -EMOJI_SEMICOLON = F9 DB -EMOJI_PLUS = F9 DC -EMOJI_MINUS = F9 DD -EMOJI_EQUALS = F9 DE -EMOJI_SPIRAL = F9 DF -EMOJI_TONGUE = F9 E0 -EMOJI_TRIANGLE_OUTLINE = F9 E1 -EMOJI_ACUTE = F9 E2 -EMOJI_GRAVE = F9 E3 -EMOJI_CIRCLE = F9 E4 -EMOJI_TRIANGLE = F9 E5 -EMOJI_SQUARE = F9 E6 -EMOJI_HEART = F9 E7 -EMOJI_MOON = F9 E8 -EMOJI_NOTE = F9 E9 -EMOJI_BALL = F9 EA -EMOJI_BOLT = F9 EB -EMOJI_LEAF = F9 EC -EMOJI_FIRE = F9 ED -EMOJI_WATER = F9 EE -EMOJI_LEFT_FIST = F9 EF -EMOJI_RIGHT_FIST = F9 F0 -EMOJI_BIGWHEEL = F9 F1 -EMOJI_SMALLWHEEL = F9 F2 -EMOJI_SPHERE = F9 F3 -EMOJI_IRRITATED = F9 F4 -EMOJI_MISCHIEVOUS = F9 F5 -EMOJI_HAPPY = F9 F6 -EMOJI_ANGRY = F9 F7 -EMOJI_SURPRISED = F9 F8 -EMOJI_BIGSMILE = F9 F9 -EMOJI_EVIL = F9 FA -EMOJI_TIRED = F9 FB -EMOJI_NEUTRAL = F9 FC -EMOJI_SHOCKED = F9 FD -EMOJI_BIGANGER = F9 FE - -'\l' = FA @ scroll up window text -'\p' = FB @ new paragraph -'\n' = FE @ new line diff --git a/berry_fix/data/data.s b/berry_fix/data/data.s deleted file mode 100644 index dbb86b13b..000000000 --- a/berry_fix/data/data.s +++ /dev/null @@ -1,4 +0,0 @@ - .section .rodata - -_data_2f0:: - .incbin "data/payload.gba.lz" diff --git a/berry_fix/ld_script.sed b/berry_fix/ld_script.sed deleted file mode 100644 index b91542b6f..000000000 --- a/berry_fix/ld_script.sed +++ /dev/null @@ -1,14 +0,0 @@ -// { - r sym_ewram.ld - d -} - -// { - r sym_bss.ld - d -} - -// { - r sym_common.ld - d -} diff --git a/berry_fix/ld_script.txt b/berry_fix/ld_script.txt deleted file mode 100644 index 2edeaef7c..000000000 --- a/berry_fix/ld_script.txt +++ /dev/null @@ -1,31 +0,0 @@ -ENTRY(_start) - -SECTIONS { - . = 0x2000000; - - .text : - ALIGN(4) - { - asm/loader.o(.text); - } =0 - - . += 0x100; - .rodata : - ALIGN(4) - { - data/data.o(.rodata); - } =0 - - . = 0x2010000; - - ewram (NOLOAD) : - ALIGN(4) - { - gCode = .; - } - - /DISCARD/ : - { - *(*); - } -} diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile deleted file mode 100644 index 2779c43ba..000000000 --- a/berry_fix/payload/Makefile +++ /dev/null @@ -1,209 +0,0 @@ -TOOLCHAIN := $(DEVKITARM) -COMPARE ?= 0 - -# don't use dkP's base_tools anymore -# because the redefinition of $(CC) conflicts -# with when we want to use $(CC) to preprocess files -# thus, manually create the variables for the bin -# files, or use arm-none-eabi binaries on the system -# if dkP is not installed on this system - -ifneq (,$(TOOLCHAIN)) -ifneq ($(wildcard $(TOOLCHAIN)/bin),) -export PATH := $(TOOLCHAIN)/bin:$(PATH) -endif -endif - -PREFIX := arm-none-eabi- -OBJCOPY := $(PREFIX)objcopy -AS := $(PREFIX)as -LD := $(PREFIX)ld - -# note: the makefile must be set up so MODERNCC is never called -# if MODERN=0 -MODERNCC := $(PREFIX)gcc - -ifeq ($(OS),Windows_NT) -EXE := .exe -else -EXE := -endif - -# use arm-none-eabi-cpp for macOS -# as macOS's default compiler is clang -# and clang's preprocessor will warn on \u -# when preprocessing asm files, expecting a unicode literal -# we can't unconditionally use arm-none-eabi-cpp -# as installations which install binutils-arm-none-eabi -# don't come with it -ifneq ($(MODERN),1) - ifeq ($(shell uname -s),Darwin) - CPP := $(PREFIX)cpp - else - CPP := $(CC) -E - endif -else - CPP := $(PREFIX)cpp -endif - -SHELL := /bin/bash -o pipefail - -CPPFLAGS := -I ../../tools/agbcc/include -I ../../tools/agbcc -iquote include -nostdinc -undef - -ROM := payload.gba -OBJ_DIR := build -CC1 := ../../tools/agbcc/bin/agbcc$(EXE) -override CC1FLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm - - -ELF = $(ROM:.gba=.elf) -MAP = $(ROM:.gba=.map) - -C_SUBDIR = src -ASM_SUBDIR = asm -DATA_ASM_SUBDIR = data - -C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) -ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) -DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) - -ASFLAGS := -mcpu=arm7tdmi - -LDFLAGS = -Map ../$(MAP) - -LIB := -L ../../../tools/agbcc/lib -lgcc - -SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c -GFX := ../../tools/gbagfx/gbagfx$(EXE) -AIF := ../../tools/aif2pcm/aif2pcm$(EXE) -MID := ../../tools/mid2agb/mid2agb$(EXE) -SCANINC := ../../tools/scaninc/scaninc$(EXE) -PREPROC := ../../tools/preproc/preproc$(EXE) -RAMSCRGEN := ../../tools/ramscrgen/ramscrgen$(EXE) -FIX := ../../tools/gbafix/gbafix$(EXE) - -# Clear the default suffixes -.SUFFIXES: -# Don't delete intermediate files -.SECONDARY: -# Delete files that weren't built properly -.DELETE_ON_ERROR: - -# Secondary expansion is required for dependency variables in object rules. -.SECONDEXPANSION: - -.PHONY: all rom clean compare tidy - -C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) -C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) - -ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) -ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) - -DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) -DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) - -SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s) -SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) - -MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid) -MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) - -OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) -# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) - -SUBDIRS := $(sort $(dir $(OBJS))) - -$(shell mkdir -p $(SUBDIRS)) - -$(C_BUILDDIR)/siirtc.o: CC1FLAGS := -mthumb-interwork -$(C_BUILDDIR)/agb_flash.o: CC1FLAGS := -O1 -mthumb-interwork -$(C_BUILDDIR)/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork -$(C_BUILDDIR)/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork -$(C_BUILDDIR)/agb_flash_le.o: CC1FLAGS := -O1 -mthumb-interwork - -all: rom - @: - -rom: $(ROM) -ifeq ($(COMPARE),1) - @$(SHA1) rom.sha1 -endif - -# For contributors to make sure a change didn't affect the contents of the ROM. -compare: ; @$(MAKE) COMPARE=1 - -clean: tidy - rm -f sound/direct_sound_samples/*.bin - rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + - -tidy: - rm -f $(ROM) $(ELF) $(MAP) - rm -r build/* - -%.s: ; -%.png: ; -%.pal: ; -%.aif: ; - -%.1bpp: %.png ; $(GFX) $< $@ -%.4bpp: %.png ; $(GFX) $< $@ -%.8bpp: %.png ; $(GFX) $< $@ -%.gbapal: %.pal ; $(GFX) $< $@ -%.gbapal: %.png ; $(GFX) $< $@ -%.lz: % ; $(GFX) $< $@ -%.rl: % ; $(GFX) $< $@ - - -ifeq ($(NODEP),1) -$(C_BUILDDIR)/%.o: c_dep := -else -$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c) -endif - -$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) - @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i - @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(C_BUILDDIR)/$*.s - @echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s - $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s - -ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: asm_dep := -else -$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) -endif - -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) - $(AS) $(ASFLAGS) -o $@ $< - -ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: data_dep := -else -$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) -endif - -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) - $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ - -$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s - $(AS) $(ASFLAGS) -I sound -o $@ $< - -$(OBJ_DIR)/sym_bss.ld: sym_bss.txt - $(RAMSCRGEN) .bss $< ENGLISH > $@ - -$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) - $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@ - -$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt - $(RAMSCRGEN) ewram_data $< ENGLISH > $@ - -$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld - cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../$< | sed "s#tools/#../tools/#g" > ld_script.ld - -$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) - cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../$@ $(LIB) - -$(ROM): $(ELF) - $(OBJCOPY) -O binary $< $@ - diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s deleted file mode 100644 index 2bca00636..000000000 --- a/berry_fix/payload/asm/crt0.s +++ /dev/null @@ -1,82 +0,0 @@ - .include "asm/macros/function.inc" - .include "constants/gba_constants.inc" - - .syntax unified - - .text - - .arm - .align 2, 0 - .global Init -Init: - mov r0, #PSR_IRQ_MODE - msr cpsr_cf, r0 - ldr sp, sp_irq - mov r0, #PSR_SYS_MODE - msr cpsr_cf, r0 - ldr sp, sp_sys - ldr r1, =INTR_VECTOR - ldr r0, =IntrMain - str r0, [r1] - ldr r1, =AgbMain + 1 - mov lr, pc - bx r1 - b Init - - .align 2, 0 -sp_sys: .word IWRAM_END - 0x100 -sp_irq: .word IWRAM_END - 0x60 - - .pool - .size Init, .-Init - - .arm - .align 2, 0 - .global IntrMain -IntrMain: @ 0x2010048 - mov ip, #REG_BASE - add r3, ip, #OFFSET_REG_IE - ldr r2, [r3] - and r1, r2, r2, lsr #16 - mov r2, #0 - ands r0, r1, #0x2000 - strbne r0, [r3, #-0x17c] -_02010064: - bne _02010064 - ands r0, r1, #0xc0 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #1 - strhne r0, [ip, #-8] - bne _020100DC - add r2, r2, #4 - ands r0, r1, #2 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #4 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #0x100 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #0x200 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #0x400 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #0x800 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #0x1000 - bne _020100DC - add r2, r2, #4 - ands r0, r1, #8 -_020100DC: - strh r0, [r3, #2] - ldr r1, =gIntrTable - add r1, r1, r2 - ldr r0, [r1] - bx r0 - .pool - .size IntrMain, .-IntrMain diff --git a/berry_fix/payload/asm/libagbsyscall.s b/berry_fix/payload/asm/libagbsyscall.s deleted file mode 100644 index f13d08d76..000000000 --- a/berry_fix/payload/asm/libagbsyscall.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros/function.inc" - .include "constants/gba_constants.inc" - - .syntax unified - - .text - - thumb_func_start CpuSet -CpuSet: - svc 0xB - bx lr - thumb_func_end CpuSet - - thumb_func_start Div -Div: - svc 0x6 - bx lr - thumb_func_end Div - - thumb_func_start Mod -Mod: - svc 0x6 - adds r0, r1, 0 - bx lr - thumb_func_end Mod - - thumb_func_start LZ77UnCompVram -LZ77UnCompVram: - svc 0x12 - bx lr - thumb_func_end LZ77UnCompVram - - thumb_func_start RegisterRamReset -RegisterRamReset: - svc 0x1 - bx lr - thumb_func_end RegisterRamReset - - thumb_func_start VBlankIntrWait -VBlankIntrWait: - movs r2, 0 - svc 0x5 - bx lr - thumb_func_end VBlankIntrWait - - .align 2, 0 @ Don't pad with nop. diff --git a/berry_fix/payload/asm/macros/function.inc b/berry_fix/payload/asm/macros/function.inc deleted file mode 100644 index 67fb373a8..000000000 --- a/berry_fix/payload/asm/macros/function.inc +++ /dev/null @@ -1,29 +0,0 @@ - .macro arm_func_start name - .align 2, 0 - .global \name - .arm - .type \name, function - .endm - - .macro arm_func_end name - .size \name, .-\name - .endm - - .macro thumb_func_start name - .align 2, 0 - .global \name - .thumb - .thumb_func - .type \name, function - .endm - - .macro non_word_aligned_thumb_func_start name - .global \name - .thumb - .thumb_func - .type \name, function - .endm - - .macro thumb_func_end name - .size \name, .-\name - .endm diff --git a/berry_fix/payload/charmap.txt b/berry_fix/payload/charmap.txt deleted file mode 100644 index 1c143ada4..000000000 --- a/berry_fix/payload/charmap.txt +++ /dev/null @@ -1,1067 +0,0 @@ -' ' = 00 -'À' = 01 -'Ã�' = 02 -'Â' = 03 -'Ç' = 04 -'È' = 05 -'É' = 06 -'Ê' = 07 -'Ë' = 08 -'ÃŒ' = 09 -'ÃŽ' = 0B -'Ã�' = 0C -'Ã’' = 0D -'Ó' = 0E -'Ô' = 0F -'Å’' = 10 -'Ù' = 11 -'Ú' = 12 -'Û' = 13 -'Ñ' = 14 -'ß' = 15 -'à' = 16 -'á' = 17 -'ç' = 19 -'è' = 1A -'é' = 1B -'ê' = 1C -'ë' = 1D -'ì' = 1E -'î' = 20 -'ï' = 21 -'ò' = 22 -'ó' = 23 -'ô' = 24 -'Å“' = 25 -'ù' = 26 -'ú' = 27 -'û' = 28 -'ñ' = 29 -'º' = 2A -'ª' = 2B -SUPER_ER = 2C -'&' = 2D -'+' = 2E -LV = 34 -'=' = 35 -';' = 36 -'¿' = 51 -'¡' = 52 -PK = 53 -PKMN = 53 54 -POKEBLOCK = 55 56 57 58 59 -'Ã�' = 5A -'%' = 5B -'(' = 5C -')' = 5D -'â' = 68 -'í' = 6F -UNK_SPACER = 77 -UP_ARROW = 79 -DOWN_ARROW = 7A -LEFT_ARROW = 7B -RIGHT_ARROW = 7C -'0' = A1 -'1' = A2 -'2' = A3 -'3' = A4 -'4' = A5 -'5' = A6 -'6' = A7 -'7' = A8 -'8' = A9 -'9' = AA -'!' = AB -'?' = AC -'.' = AD -'-' = AE -'·' = AF -'…' = B0 -'“' = B1 -'â€�' = B2 -'‘' = B3 -'’' = B4 -'♂' = B5 -'♀' = B6 -'Â¥' = B7 -',' = B8 -'×' = B9 -'/' = BA -'A' = BB -'B' = BC -'C' = BD -'D' = BE -'E' = BF -'F' = C0 -'G' = C1 -'H' = C2 -'I' = C3 -'J' = C4 -'K' = C5 -'L' = C6 -'M' = C7 -'N' = C8 -'O' = C9 -'P' = CA -'Q' = CB -'R' = CC -'S' = CD -'T' = CE -'U' = CF -'V' = D0 -'W' = D1 -'X' = D2 -'Y' = D3 -'Z' = D4 -'a' = D5 -'b' = D6 -'c' = D7 -'d' = D8 -'e' = D9 -'f' = DA -'g' = DB -'h' = DC -'i' = DD -'j' = DE -'k' = DF -'l' = E0 -'m' = E1 -'n' = E2 -'o' = E3 -'p' = E4 -'q' = E5 -'r' = E6 -'s' = E7 -'t' = E8 -'u' = E9 -'v' = EA -'w' = EB -'x' = EC -'y' = ED -'z' = EE -'â–¶' = EF -':' = F0 -'Ä' = F1 -'Ö' = F2 -'Ü' = F3 -'ä' = F4 -'ö' = F5 -'ü' = F6 -TALL_PLUS = FC 0C FB -'$' = FF - -@ Hiragana -'ã�‚' = 01 -'ã�„' = 02 -'ã�†' = 03 -'ã�ˆ' = 04 -'ã�Š' = 05 -'ã�‹' = 06 -'ã��' = 07 -'ã��' = 08 -'ã�‘' = 09 -'ã�“' = 0A -'ã�•' = 0B -'ã�—' = 0C -'ã�™' = 0D -'ã�›' = 0E -'ã��' = 0F -'ã�Ÿ' = 10 -'ã�¡' = 11 -'ã�¤' = 12 -'ã�¦' = 13 -'ã�¨' = 14 -'ã�ª' = 15 -'ã�«' = 16 -'ã�¬' = 17 -'ã�­' = 18 -'ã�®' = 19 -'ã�¯' = 1A -'ã�²' = 1B -'ã�µ' = 1C -'ã�¸' = 1D -'ã�»' = 1E -'ã�¾' = 1F -'ã�¿' = 20 -'ã‚€' = 21 -'ã‚�' = 22 -'ã‚‚' = 23 -'ã‚„' = 24 -'ゆ' = 25 -'よ' = 26 -'ら' = 27 -'り' = 28 -'ã‚‹' = 29 -'れ' = 2A -'ã‚�' = 2B -'ã‚�' = 2C -'ã‚’' = 2D -'ã‚“' = 2E -'ã��' = 2F -'ã�ƒ' = 30 -'ã�…' = 31 -'ã�‡' = 32 -'ã�‰' = 33 -'ゃ' = 34 -'ã‚…' = 35 -'ょ' = 36 -'ã�Œ' = 37 -'ã�Ž' = 38 -'ã��' = 39 -'ã�’' = 3A -'ã�”' = 3B -'ã�–' = 3C -'ã�˜' = 3D -'ã�š' = 3E -'ã�œ' = 3F -'ã�ž' = 40 -'ã� ' = 41 -'ã�¢' = 42 -'ã�¥' = 43 -'ã�§' = 44 -'ã�©' = 45 -'ã�°' = 46 -'ã�³' = 47 -'ã�¶' = 48 -'ã�¹' = 49 -'ã�¼' = 4A -'ã�±' = 4B -'ã�´' = 4C -'ã�·' = 4D -'ã�º' = 4E -'ã�½' = 4F -'ã�£' = 50 - -@ Katakana -'ã‚¢' = 51 -'イ' = 52 -'ウ' = 53 -'エ' = 54 -'オ' = 55 -'ã‚«' = 56 -'ã‚­' = 57 -'ク' = 58 -'ケ' = 59 -'コ' = 5A -'サ' = 5B -'ã‚·' = 5C -'ス' = 5D -'ã‚»' = 5E -'ソ' = 5F -'ã‚¿' = 60 -'ãƒ�' = 61 -'ツ' = 62 -'テ' = 63 -'ト' = 64 -'ナ' = 65 -'ニ' = 66 -'ヌ' = 67 -'ãƒ�' = 68 -'ノ' = 69 -'ãƒ�' = 6A -'ヒ' = 6B -'フ' = 6C -'ヘ' = 6D -'ホ' = 6E -'マ' = 6F -'ミ' = 70 -'ム' = 71 -'メ' = 72 -'モ' = 73 -'ヤ' = 74 -'ユ' = 75 -'ヨ' = 76 -'ラ' = 77 -'リ' = 78 -'ル' = 79 -'レ' = 7A -'ロ' = 7B -'ワ' = 7C -'ヲ' = 7D -'ン' = 7E -'ã‚¡' = 7F -'ã‚£' = 80 -'ã‚¥' = 81 -'ã‚§' = 82 -'ã‚©' = 83 -'ャ' = 84 -'ュ' = 85 -'ョ' = 86 -'ガ' = 87 -'ã‚®' = 88 -'ã‚°' = 89 -'ゲ' = 8A -'ã‚´' = 8B -'ã‚¶' = 8C -'ジ' = 8D -'ズ' = 8E -'ゼ' = 8F -'ゾ' = 90 -'ダ' = 91 -'ヂ' = 92 -'ヅ' = 93 -'デ' = 94 -'ド' = 95 -'ãƒ�' = 96 -'ビ' = 97 -'ブ' = 98 -'ベ' = 99 -'ボ' = 9A -'パ' = 9B -'ピ' = 9C -'プ' = 9D -'ペ' = 9E -'ãƒ�' = 9F -'ッ' = A0 - -@ Japanese punctuation -' ' = 00 -'ï¼�' = AB -'?' = AC -'。' = AD -'ー' = AE -'⋯' = B0 - -STRING = FD - -@ string placeholders -PLAYER = FD 01 -STR_VAR_1 = FD 02 -STR_VAR_2 = FD 03 -STR_VAR_3 = FD 04 -KUN = FD 05 -RIVAL = FD 06 -@ version-dependent strings (originally made for Ruby/Sapphire differences) -@ Emerald uses the Sapphire strings (except for VERSION). -VERSION = FD 07 @ "EMERALD" -AQUA = FD 08 -MAGMA = FD 09 -ARCHIE = FD 0A -MAXIE = FD 0B -KYOGRE = FD 0C -GROUDON = FD 0D - -@ battle string placeholders - -B_BUFF1 = FD 00 -B_BUFF2 = FD 01 -B_COPY_VAR_1 = FD 02 -B_COPY_VAR_2 = FD 03 -B_COPY_VAR_3 = FD 04 -B_PLAYER_MON1_NAME = FD 05 -B_OPPONENT_MON1_NAME = FD 06 -B_PLAYER_MON2_NAME = FD 07 -B_OPPONENT_MON2_NAME = FD 08 -B_LINK_PLAYER_MON1_NAME = FD 09 -B_LINK_OPPONENT_MON1_NAME = FD 0A -B_LINK_PLAYER_MON2_NAME = FD 0B -B_LINK_OPPONENT_MON2_NAME = FD 0C -B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D -B_ATK_PARTNER_NAME = FD 0E -B_ATK_NAME_WITH_PREFIX = FD 0F -B_DEF_NAME_WITH_PREFIX = FD 10 -B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler -B_ACTIVE_NAME_WITH_PREFIX = FD 12 -B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13 -B_CURRENT_MOVE = FD 14 -B_LAST_MOVE = FD 15 -B_LAST_ITEM = FD 16 -B_LAST_ABILITY = FD 17 -B_ATK_ABILITY = FD 18 -B_DEF_ABILITY = FD 19 -B_SCR_ACTIVE_ABILITY = FD 1A -B_EFF_ABILITY = FD 1B -B_TRAINER1_CLASS = FD 1C -B_TRAINER1_NAME = FD 1D -B_LINK_PLAYER_NAME = FD 1E -B_LINK_PARTNER_NAME = FD 1F -B_LINK_OPPONENT1_NAME = FD 20 -B_LINK_OPPONENT2_NAME = FD 21 -B_LINK_SCR_TRAINER_NAME = FD 22 -B_PLAYER_NAME = FD 23 -B_TRAINER1_LOSE_TEXT = FD 24 -B_TRAINER1_WIN_TEXT = FD 25 -B_26 = FD 26 -B_PC_CREATOR_NAME = FD 27 -B_ATK_PREFIX1 = FD 28 -B_DEF_PREFIX1 = FD 29 -B_ATK_PREFIX2 = FD 2A -B_DEF_PREFIX2 = FD 2B -B_ATK_PREFIX3 = FD 2C -B_DEF_PREFIX3 = FD 2D -B_TRAINER2_CLASS = FD 2E -B_TRAINER2_NAME = FD 2F -B_TRAINER2_LOSE_TEXT = FD 30 -B_TRAINER2_WIN_TEXT = FD 31 -B_PARTNER_CLASS = FD 32 -B_PARTNER_NAME = FD 33 -B_BUFF3 = FD 34 - -@ indicates the end of a town/city name (before " TOWN" or " CITY") -NAME_END = FC 00 - -@ special 0xF7 character -SPECIAL_F7 = F7 - -@ more text functions - -COLOR = FC 01 @ use a color listed below right after -HIGHLIGHT = FC 02 @ same as fc 01 -SHADOW = FC 03 @ same as fc 01 -COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes -PALETTE = FC 05 @ used in credits -SIZE = FC 06 @ note that anything other than "SMALL" is invalid -UNKNOWN_7 = FC 07 -PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them -PAUSE_UNTIL_PRESS = FC 09 -WAIT_SE = FC 0A -PLAY_BGM = FC 0B -ESCAPE = FC 0C -SHIFT_TEXT = FC 0D -UNKNOWN_E = FC 0E -UNKNOWN_F = FC 0F -PLAY_SE = FC 10 -CLEAR = FC 11 -SKIP = FC 12 -CLEAR_TO = FC 13 -UNKNOWN_14 = FC 14 -JPN = FC 15 -ENG = FC 16 -PAUSE_MUSIC = FC 17 -RESUME_MUSIC = FC 18 - -@ colors - -TRANSPARENT = 00 -WHITE = 01 -DARK_GRAY = 02 -LIGHT_GRAY = 03 -RED = 04 -LIGHT_RED = 05 -GREEN = 06 -LIGHT_GREEN = 07 -BLUE = 08 -LIGHT_BLUE = 09 -@ these next colors can be set to anything arbitrary at runtime -@ usually though they'll have the textbox border colors as described below -DYNAMIC_COLOR1 = 0A @ white -DYNAMIC_COLOR2 = 0B @ white with a tinge of green -DYNAMIC_COLOR3 = 0C @ white 2 -DYNAMIC_COLOR4 = 0D @ aquamarine -DYNAMIC_COLOR5 = 0E @ blue-green -DYNAMIC_COLOR6 = 0F @ cerulean - -@ sound and music - -MUS_DUMMY = 00 00 -SE_USE_ITEM = 01 00 -SE_PC_LOGIN = 02 00 -SE_PC_OFF = 03 00 -SE_PC_ON = 04 00 -SE_SELECT = 05 00 -SE_WIN_OPEN = 06 00 -SE_WALL_HIT = 07 00 -SE_DOOR = 08 00 -SE_EXIT = 09 00 -SE_LEDGE = 0A 00 -SE_BIKE_BELL = 0B 00 -SE_NOT_EFFECTIVE = 0C 00 -SE_EFFECTIVE = 0D 00 -SE_SUPER_EFFECTIVE = 0E 00 -SE_BALL_OPEN = 0F 00 -SE_FAINT = 10 00 -SE_FLEE = 11 00 -SE_SLIDING_DOOR = 12 00 -SE_SHIP = 13 00 -SE_BANG = 14 00 -SE_PIN = 15 00 -SE_BOO = 16 00 -SE_BALL = 17 00 -SE_CONTEST_PLACE = 18 00 -SE_A = 19 00 -SE_I = 1A 00 -SE_U = 1B 00 -SE_E = 1C 00 -SE_O = 1D 00 -SE_N = 1E 00 -SE_SUCCESS = 1F 00 -SE_FAILURE = 20 00 -SE_EXP = 21 00 -SE_BIKE_HOP = 22 00 -SE_SWITCH = 23 00 -SE_CLICK = 24 00 -SE_FU_ZAKU = 25 00 -SE_CONTEST_CONDITION_LOSE = 26 00 -SE_LAVARIDGE_FALL_WARP = 27 00 -SE_ICE_STAIRS = 28 00 -SE_ICE_BREAK = 29 00 -SE_ICE_CRACK = 2A 00 -SE_FALL = 2B 00 -SE_UNLOCK = 2C 00 -SE_WARP_IN = 2D 00 -SE_WARP_OUT = 2E 00 -SE_REPEL = 2F 00 -SE_ROTATING_GATE = 30 00 -SE_TRUCK_MOVE = 31 00 -SE_TRUCK_STOP = 32 00 -SE_TRUCK_UNLOAD = 33 00 -SE_TRUCK_DOOR = 34 00 -SE_BERRY_BLENDER = 35 00 -SE_CARD = 36 00 -SE_SAVE = 37 00 -SE_BALL_BOUNCE_1 = 38 00 -SE_BALL_BOUNCE_2 = 39 00 -SE_BALL_BOUNCE_3 = 3A 00 -SE_BALL_BOUNCE_4 = 3B 00 -SE_BALL_TRADE = 3C 00 -SE_BALL_THROW = 3D 00 -SE_NOTE_C = 3E 00 -SE_NOTE_D = 3F 00 -SE_NOTE_E = 40 00 -SE_NOTE_F = 41 00 -SE_NOTE_G = 42 00 -SE_NOTE_A = 43 00 -SE_NOTE_B = 44 00 -SE_NOTE_C_HIGH = 45 00 -SE_PUDDLE = 46 00 -SE_BRIDGE_WALK = 47 00 -SE_ITEMFINDER = 48 00 -SE_DING_DONG = 49 00 -SE_BALLOON_RED = 4A 00 -SE_BALLOON_BLUE = 4B 00 -SE_BALLOON_YELLOW = 4C 00 -SE_BREAKABLE_DOOR = 4D 00 -SE_MUD_BALL = 4E 00 -SE_FIELD_POISON = 4F 00 -SE_ESCALATOR = 50 00 -SE_THUNDERSTORM = 51 00 -SE_THUNDERSTORM_STOP = 52 00 -SE_DOWNPOUR = 53 00 -SE_DOWNPOUR_STOP = 54 00 -SE_RAIN = 55 00 -SE_RAIN_STOP = 56 00 -SE_THUNDER = 57 00 -SE_THUNDER2 = 58 00 -SE_ELEVATOR = 59 00 -SE_LOW_HEALTH = 5A 00 -SE_EXP_MAX = 5B 00 -SE_ROULETTE_BALL = 5C 00 -SE_ROULETTE_BALL2 = 5D 00 -SE_TAILLOW_WING_FLAP = 5E 00 -SE_SHOP = 5F 00 -SE_CONTEST_HEART = 60 00 -SE_CONTEST_CURTAIN_RISE = 61 00 -SE_CONTEST_CURTAIN_FALL = 62 00 -SE_CONTEST_ICON_CHANGE = 63 00 -SE_CONTEST_ICON_CLEAR = 64 00 -SE_CONTEST_MONS_TURN = 65 00 -SE_SHINY = 66 00 -SE_INTRO_BLAST = 67 00 -SE_MUGSHOT = 68 00 -SE_APPLAUSE = 69 00 -SE_VEND = 6A 00 -SE_ORB = 6B 00 -SE_DEX_SCROLL = 6C 00 -SE_DEX_PAGE = 6D 00 -SE_POKENAV_ON = 6E 00 -SE_POKENAV_OFF = 6F 00 -SE_DEX_SEARCH = 70 00 -SE_EGG_HATCH = 71 00 -SE_BALL_TRAY_ENTER = 72 00 -SE_BALL_TRAY_BALL = 73 00 -SE_BALL_TRAY_EXIT = 74 00 -SE_GLASS_FLUTE = 75 00 -SE_M_THUNDERBOLT = 76 00 -SE_M_THUNDERBOLT2 = 77 00 -SE_M_HARDEN = 78 00 -SE_M_NIGHTMARE = 79 00 -SE_M_VITAL_THROW = 7A 00 -SE_M_VITAL_THROW2 = 7B 00 -SE_M_BUBBLE = 7C 00 -SE_M_BUBBLE2 = 7D 00 -SE_M_BUBBLE3 = 7E 00 -SE_M_RAIN_DANCE = 7F 00 -SE_M_CUT = 80 00 -SE_M_STRING_SHOT = 81 00 -SE_M_STRING_SHOT2 = 82 00 -SE_M_ROCK_THROW = 83 00 -SE_M_GUST = 84 00 -SE_M_GUST2 = 85 00 -SE_M_DOUBLE_SLAP = 86 00 -SE_M_DOUBLE_TEAM = 87 00 -SE_M_RAZOR_WIND = 88 00 -SE_M_ICY_WIND = 89 00 -SE_M_THUNDER_WAVE = 8A 00 -SE_M_COMET_PUNCH = 8B 00 -SE_M_MEGA_KICK = 8C 00 -SE_M_MEGA_KICK2 = 8D 00 -SE_M_CRABHAMMER = 8E 00 -SE_M_JUMP_KICK = 8F 00 -SE_M_FLAME_WHEEL = 90 00 -SE_M_FLAME_WHEEL2 = 91 00 -SE_M_FLAMETHROWER = 92 00 -SE_M_FIRE_PUNCH = 93 00 -SE_M_TOXIC = 94 00 -SE_M_SACRED_FIRE = 95 00 -SE_M_SACRED_FIRE2 = 96 00 -SE_M_EMBER = 97 00 -SE_M_TAKE_DOWN = 98 00 -SE_M_BLIZZARD = 99 00 -SE_M_BLIZZARD2 = 9A 00 -SE_M_SCRATCH = 9B 00 -SE_M_VICEGRIP = 9C 00 -SE_M_WING_ATTACK = 9D 00 -SE_M_FLY = 9E 00 -SE_M_SAND_ATTACK = 9F 00 -SE_M_RAZOR_WIND2 = A0 00 -SE_M_BITE = A1 00 -SE_M_HEADBUTT = A2 00 -SE_M_SURF = A3 00 -SE_M_HYDRO_PUMP = A4 00 -SE_M_WHIRLPOOL = A5 00 -SE_M_HORN_ATTACK = A6 00 -SE_M_TAIL_WHIP = A7 00 -SE_M_MIST = A8 00 -SE_M_POISON_POWDER = A9 00 -SE_M_BIND = AA 00 -SE_M_DRAGON_RAGE = AB 00 -SE_M_SING = AC 00 -SE_M_PERISH_SONG = AD 00 -SE_M_PAY_DAY = AE 00 -SE_M_DIG = AF 00 -SE_M_DIZZY_PUNCH = B0 00 -SE_M_SELF_DESTRUCT = B1 00 -SE_M_EXPLOSION = B2 00 -SE_M_ABSORB_2 = B3 00 -SE_M_ABSORB = B4 00 -SE_M_SCREECH = B5 00 -SE_M_BUBBLE_BEAM = B6 00 -SE_M_BUBBLE_BEAM2 = B7 00 -SE_M_SUPERSONIC = B8 00 -SE_M_BELLY_DRUM = B9 00 -SE_M_METRONOME = BA 00 -SE_M_BONEMERANG = BB 00 -SE_M_LICK = BC 00 -SE_M_PSYBEAM = BD 00 -SE_M_FAINT_ATTACK = BE 00 -SE_M_SWORDS_DANCE = BF 00 -SE_M_LEER = C0 00 -SE_M_SWAGGER = C1 00 -SE_M_SWAGGER2 = C2 00 -SE_M_HEAL_BELL = C3 00 -SE_M_CONFUSE_RAY = C4 00 -SE_M_SNORE = C5 00 -SE_M_BRICK_BREAK = C6 00 -SE_M_GIGA_DRAIN = C7 00 -SE_M_PSYBEAM2 = C8 00 -SE_M_SOLAR_BEAM = C9 00 -SE_M_PETAL_DANCE = CA 00 -SE_M_TELEPORT = CB 00 -SE_M_MINIMIZE = CC 00 -SE_M_SKETCH = CD 00 -SE_M_SWIFT = CE 00 -SE_M_REFLECT = CF 00 -SE_M_BARRIER = D0 00 -SE_M_DETECT = D1 00 -SE_M_LOCK_ON = D2 00 -SE_M_MOONLIGHT = D3 00 -SE_M_CHARM = D4 00 -SE_M_CHARGE = D5 00 -SE_M_STRENGTH = D6 00 -SE_M_HYPER_BEAM = D7 00 -SE_M_WATERFALL = D8 00 -SE_M_REVERSAL = D9 00 -SE_M_ACID_ARMOR = DA 00 -SE_M_SANDSTORM = DB 00 -SE_M_TRI_ATTACK = DC 00 -SE_M_TRI_ATTACK2 = DD 00 -SE_M_ENCORE = DE 00 -SE_M_ENCORE2 = DF 00 -SE_M_BATON_PASS = E0 00 -SE_M_MILK_DRINK = E1 00 -SE_M_ATTRACT = E2 00 -SE_M_ATTRACT2 = E3 00 -SE_M_MORNING_SUN = E4 00 -SE_M_FLATTER = E5 00 -SE_M_SAND_TOMB = E6 00 -SE_M_GRASSWHISTLE = E7 00 -SE_M_SPIT_UP = E8 00 -SE_M_DIVE = E9 00 -SE_M_EARTHQUAKE = EA 00 -SE_M_TWISTER = EB 00 -SE_M_SWEET_SCENT = EC 00 -SE_M_YAWN = ED 00 -SE_M_SKY_UPPERCUT = EE 00 -SE_M_STAT_INCREASE = EF 00 -SE_M_HEAT_WAVE = F0 00 -SE_M_UPROAR = F1 00 -SE_M_HAIL = F2 00 -SE_M_COSMIC_POWER = F3 00 -SE_M_TEETER_DANCE = F4 00 -SE_M_STAT_DECREASE = F5 00 -SE_M_HAZE = F6 00 -SE_M_HYPER_BEAM2 = F7 00 -SE_RG_DOOR = F8 00 -SE_RG_CARD_FLIP = F9 00 -SE_RG_CARD_FLIPPING = FA 00 -SE_RG_CARD_OPEN = FB 00 -SE_RG_BAG_CURSOR = FC 00 -SE_RG_BAG_POCKET = FD 00 -SE_RG_BALL_CLICK = FE 00 -SE_RG_SHOP = FF 00 -SE_RG_SS_ANNE_HORN = 00 01 -SE_RG_HELP_OPEN = 01 01 -SE_RG_HELP_CLOSE = 02 01 -SE_RG_HELP_ERROR = 03 01 -SE_RG_DEOXYS_MOVE = 04 01 -SE_RG_POKE_JUMP_SUCCESS = 05 01 -SE_RG_POKE_JUMP_FAILURE = 06 01 -SE_POKENAV_CALL = 07 01 -SE_POKENAV_HANG_UP = 08 01 -SE_ARENA_TIMEUP1 = 09 01 -SE_ARENA_TIMEUP2 = 0A 01 -SE_PIKE_CURTAIN_CLOSE = 0B 01 -SE_PIKE_CURTAIN_OPEN = 0C 01 -SE_SUDOWOODO_SHAKE = 0D 01 -MUS_LITTLEROOT_TEST = 5E 01 -MUS_GSC_ROUTE38 = 5F 01 -MUS_CAUGHT = 60 01 -MUS_VICTORY_WILD = 61 01 -MUS_VICTORY_GYM_LEADER = 62 01 -MUS_VICTORY_LEAGUE = 63 01 -MUS_C_COMM_CENTER = 64 01 -MUS_GSC_PEWTER = 65 01 -MUS_C_VS_LEGEND_BEAST = 66 01 -MUS_ROUTE101 = 67 01 -MUS_ROUTE110 = 68 01 -MUS_ROUTE120 = 69 01 -MUS_PETALBURG = 6A 01 -MUS_OLDALE = 6B 01 -MUS_GYM = 6C 01 -MUS_SURF = 6D 01 -MUS_PETALBURG_WOODS = 6E 01 -MUS_LEVEL_UP = 6F 01 -MUS_HEAL = 70 01 -MUS_OBTAIN_BADGE = 71 01 -MUS_OBTAIN_ITEM = 72 01 -MUS_EVOLVED = 73 01 -MUS_OBTAIN_TMHM = 74 01 -MUS_LILYCOVE_MUSEUM = 75 01 -MUS_ROUTE122 = 76 01 -MUS_OCEANIC_MUSEUM = 77 01 -MUS_EVOLUTION_INTRO = 78 01 -MUS_EVOLUTION = 79 01 -MUS_MOVE_DELETED = 7A 01 -MUS_ENCOUNTER_GIRL = 7B 01 -MUS_ENCOUNTER_MALE = 7C 01 -MUS_ABANDONED_SHIP = 7D 01 -MUS_FORTREE = 7E 01 -MUS_BIRCH_LAB = 7F 01 -MUS_B_TOWER_RS = 80 01 -MUS_ENCOUNTER_SWIMMER = 81 01 -MUS_CAVE_OF_ORIGIN = 82 01 -MUS_OBTAIN_BERRY = 83 01 -MUS_AWAKEN_LEGEND = 84 01 -MUS_SLOTS_JACKPOT = 85 01 -MUS_SLOTS_WIN = 86 01 -MUS_TOO_BAD = 87 01 -MUS_ROULETTE = 88 01 -MUS_LINK_CONTEST_P1 = 89 01 -MUS_LINK_CONTEST_P2 = 8A 01 -MUS_LINK_CONTEST_P3 = 8B 01 -MUS_LINK_CONTEST_P4 = 8C 01 -MUS_ENCOUNTER_RICH = 8D 01 -MUS_VERDANTURF = 8E 01 -MUS_RUSTBORO = 8F 01 -MUS_POKE_CENTER = 90 01 -MUS_ROUTE104 = 91 01 -MUS_ROUTE119 = 92 01 -MUS_CYCLING = 93 01 -MUS_POKE_MART = 94 01 -MUS_LITTLEROOT = 95 01 -MUS_MT_CHIMNEY = 96 01 -MUS_ENCOUNTER_FEMALE = 97 01 -MUS_LILYCOVE = 98 01 -MUS_ROUTE111 = 99 01 -MUS_HELP = 9A 01 -MUS_UNDERWATER = 9B 01 -MUS_VICTORY_TRAINER = 9C 01 -MUS_TITLE = 9D 01 -MUS_INTRO = 9E 01 -MUS_ENCOUNTER_MAY = 9F 01 -MUS_ENCOUNTER_INTENSE = A0 01 -MUS_ENCOUNTER_COOL = A1 01 -MUS_ROUTE113 = A2 01 -MUS_ENCOUNTER_AQUA = A3 01 -MUS_FOLLOW_ME = A4 01 -MUS_ENCOUNTER_BRENDAN = A5 01 -MUS_EVER_GRANDE = A6 01 -MUS_ENCOUNTER_SUSPICIOUS = A7 01 -MUS_VICTORY_AQUA_MAGMA = A8 01 -MUS_CABLE_CAR = A9 01 -MUS_GAME_CORNER = AA 01 -MUS_DEWFORD = AB 01 -MUS_SAFARI_ZONE = AC 01 -MUS_VICTORY_ROAD = AD 01 -MUS_AQUA_MAGMA_HIDEOUT = AE 01 -MUS_SAILING = AF 01 -MUS_MT_PYRE = B0 01 -MUS_SLATEPORT = B1 01 -MUS_MT_PYRE_EXTERIOR = B2 01 -MUS_SCHOOL = B3 01 -MUS_HALL_OF_FAME = B4 01 -MUS_FALLARBOR = B5 01 -MUS_SEALED_CHAMBER = B6 01 -MUS_CONTEST_WINNER = B7 01 -MUS_CONTEST = B8 01 -MUS_ENCOUNTER_MAGMA = B9 01 -MUS_INTRO_BATTLE = BA 01 -MUS_ABNORMAL_WEATHER = BB 01 -MUS_WEATHER_GROUDON = BC 01 -MUS_SOOTOPOLIS = BD 01 -MUS_CONTEST_RESULTS = BE 01 -MUS_HALL_OF_FAME_ROOM = BF 01 -MUS_TRICK_HOUSE = C0 01 -MUS_ENCOUNTER_TWINS = C1 01 -MUS_ENCOUNTER_ELITE_FOUR = C2 01 -MUS_ENCOUNTER_HIKER = C3 01 -MUS_CONTEST_LOBBY = C4 01 -MUS_ENCOUNTER_INTERVIEWER = C5 01 -MUS_ENCOUNTER_CHAMPION = C6 01 -MUS_CREDITS = C7 01 -MUS_END = C8 01 -MUS_B_FRONTIER = C9 01 -MUS_B_ARENA = CA 01 -MUS_OBTAIN_B_POINTS = CB 01 -MUS_REGISTER_MATCH_CALL = CC 01 -MUS_B_PYRAMID = CD 01 -MUS_B_PYRAMID_TOP = CE 01 -MUS_B_PALACE = CF 01 -MUS_RAYQUAZA_APPEARS = D0 01 -MUS_B_TOWER = D1 01 -MUS_OBTAIN_SYMBOL = D2 01 -MUS_B_DOME = D3 01 -MUS_B_PIKE = D4 01 -MUS_B_FACTORY = D5 01 -MUS_VS_RAYQUAZA = D6 01 -MUS_VS_FRONTIER_BRAIN = D7 01 -MUS_VS_MEW = D8 01 -MUS_B_DOME_LOBBY = D9 01 -MUS_VS_WILD = DA 01 -MUS_VS_AQUA_MAGMA = DB 01 -MUS_VS_TRAINER = DC 01 -MUS_VS_GYM_LEADER = DD 01 -MUS_VS_CHAMPION = DE 01 -MUS_VS_REGI = DF 01 -MUS_VS_KYOGRE_GROUDON = E0 01 -MUS_VS_RIVAL = E1 01 -MUS_VS_ELITE_FOUR = E2 01 -MUS_VS_AQUA_MAGMA_LEADER = E3 01 -MUS_RG_FOLLOW_ME = E4 01 -MUS_RG_GAME_CORNER = E5 01 -MUS_RG_ROCKET_HIDEOUT = E6 01 -MUS_RG_GYM = E7 01 -MUS_RG_JIGGLYPUFF = E8 01 -MUS_RG_INTRO_FIGHT = E9 01 -MUS_RG_TITLE = EA 01 -MUS_RG_CINNABAR = EB 01 -MUS_RG_LAVENDER = EC 01 -MUS_RG_HEAL = ED 01 -MUS_RG_CYCLING = EE 01 -MUS_RG_ENCOUNTER_ROCKET = EF 01 -MUS_RG_ENCOUNTER_GIRL = F0 01 -MUS_RG_ENCOUNTER_BOY = F1 01 -MUS_RG_HALL_OF_FAME = F2 01 -MUS_RG_VIRIDIAN_FOREST = F3 01 -MUS_RG_MT_MOON = F4 01 -MUS_RG_POKE_MANSION = F5 01 -MUS_RG_CREDITS = F6 01 -MUS_RG_ROUTE1 = F7 01 -MUS_RG_ROUTE24 = F8 01 -MUS_RG_ROUTE3 = F9 01 -MUS_RG_ROUTE11 = FA 01 -MUS_RG_VICTORY_ROAD = FB 01 -MUS_RG_VS_GYM_LEADER = FC 01 -MUS_RG_VS_TRAINER = FD 01 -MUS_RG_VS_WILD = FE 01 -MUS_RG_VS_CHAMPION = FF 01 -MUS_RG_PALLET = 00 02 -MUS_RG_OAK_LAB = 01 02 -MUS_RG_OAK = 02 02 -MUS_RG_POKE_CENTER = 03 02 -MUS_RG_SS_ANNE = 04 02 -MUS_RG_SURF = 05 02 -MUS_RG_POKE_TOWER = 06 02 -MUS_RG_SILPH = 07 02 -MUS_RG_FUCHSIA = 08 02 -MUS_RG_CELADON = 09 02 -MUS_RG_VICTORY_TRAINER = 0A 02 -MUS_RG_VICTORY_WILD = 0B 02 -MUS_RG_VICTORY_GYM_LEADER = 0C 02 -MUS_RG_VERMILLION = 0D 02 -MUS_RG_PEWTER = 0E 02 -MUS_RG_ENCOUNTER_RIVAL = 0F 02 -MUS_RG_RIVAL_EXIT = 10 02 -MUS_RG_DEX_RATING = 11 02 -MUS_RG_OBTAIN_KEY_ITEM = 12 02 -MUS_RG_CAUGHT_INTRO = 13 02 -MUS_RG_PHOTO = 14 02 -MUS_RG_GAME_FREAK = 15 02 -MUS_RG_CAUGHT = 16 02 -MUS_RG_NEW_GAME_INSTRUCT = 17 02 -MUS_RG_NEW_GAME_INTRO = 18 02 -MUS_RG_NEW_GAME_EXIT = 19 02 -MUS_RG_POKE_JUMP = 1A 02 -MUS_RG_UNION_ROOM = 1B 02 -MUS_RG_NET_CENTER = 1C 02 -MUS_RG_MYSTERY_GIFT = 1D 02 -MUS_RG_BERRY_PICK = 1E 02 -MUS_RG_SEVII_CAVE = 1F 02 -MUS_RG_TEACHY_TV_SHOW = 20 02 -MUS_RG_SEVII_ROUTE = 21 02 -MUS_RG_SEVII_DUNGEON = 22 02 -MUS_RG_SEVII_123 = 23 02 -MUS_RG_SEVII_45 = 24 02 -MUS_RG_SEVII_67 = 25 02 -MUS_RG_POKE_FLUTE = 26 02 -MUS_RG_VS_DEOXYS = 27 02 -MUS_RG_VS_MEWTWO = 28 02 -MUS_RG_VS_LEGEND = 29 02 -MUS_RG_ENCOUNTER_GYM_LEADER = 2A 02 -MUS_RG_ENCOUNTER_DEOXYS = 2B 02 -MUS_RG_TRAINER_TOWER = 2C 02 -MUS_RG_SLOW_PALLET = 2D 02 -MUS_RG_TEACHY_TV_MENU = 2E 02 -PH_TRAP_BLEND = 2F 02 -PH_TRAP_HELD = 30 02 -PH_TRAP_SOLO = 31 02 -PH_FACE_BLEND = 32 02 -PH_FACE_HELD = 33 02 -PH_FACE_SOLO = 34 02 -PH_CLOTH_BLEND = 35 02 -PH_CLOTH_HELD = 36 02 -PH_CLOTH_SOLO = 37 02 -PH_DRESS_BLEND = 38 02 -PH_DRESS_HELD = 39 02 -PH_DRESS_SOLO = 3A 02 -PH_FLEECE_BLEND = 3B 02 -PH_FLEECE_HELD = 3C 02 -PH_FLEECE_SOLO = 3D 02 -PH_KIT_BLEND = 3E 02 -PH_KIT_HELD = 3F 02 -PH_KIT_SOLO = 40 02 -PH_PRICE_BLEND = 41 02 -PH_PRICE_HELD = 42 02 -PH_PRICE_SOLO = 43 02 -PH_LOT_BLEND = 44 02 -PH_LOT_HELD = 45 02 -PH_LOT_SOLO = 46 02 -PH_GOAT_BLEND = 47 02 -PH_GOAT_HELD = 48 02 -PH_GOAT_SOLO = 49 02 -PH_THOUGHT_BLEND = 4A 02 -PH_THOUGHT_HELD = 4B 02 -PH_THOUGHT_SOLO = 4C 02 -PH_CHOICE_BLEND = 4D 02 -PH_CHOICE_HELD = 4E 02 -PH_CHOICE_SOLO = 4F 02 -PH_MOUTH_BLEND = 50 02 -PH_MOUTH_HELD = 51 02 -PH_MOUTH_SOLO = 52 02 -PH_FOOT_BLEND = 53 02 -PH_FOOT_HELD = 54 02 -PH_FOOT_SOLO = 55 02 -PH_GOOSE_BLEND = 56 02 -PH_GOOSE_HELD = 57 02 -PH_GOOSE_SOLO = 58 02 -PH_STRUT_BLEND = 59 02 -PH_STRUT_HELD = 5A 02 -PH_STRUT_SOLO = 5B 02 -PH_CURE_BLEND = 5C 02 -PH_CURE_HELD = 5D 02 -PH_CURE_SOLO = 5E 02 -PH_NURSE_BLEND = 5F 02 -PH_NURSE_HELD = 60 02 -PH_NURSE_SOLO = 61 02 - -A_BUTTON = F8 00 -B_BUTTON = F8 01 -DPAD_UPDOWN = F8 0A -DPAD_NONE = F8 0C - -UP_ARROW_2 = F9 00 -DOWN_ARROW_2 = F9 01 -LEFT_ARROW_2 = F9 02 -RIGHT_ARROW_2 = F9 03 -PLUS = F9 04 -LV_2 = F9 05 -PP = F9 06 -ID = F9 07 -NO = F9 08 -UNDERSCORE = F9 09 -CIRCLE_1 = F9 0A -CIRCLE_2 = F9 0B -CIRCLE_3 = F9 0C -CIRCLE_4 = F9 0D -CIRCLE_5 = F9 0E -CIRCLE_6 = F9 0F -CIRCLE_7 = F9 10 -CIRCLE_8 = F9 11 -CIRCLE_9 = F9 12 -ROUND_LEFT_PAREN = F9 13 -ROUND_RIGHT_PAREN = F9 14 -CIRCLE_DOT = F9 15 -TRIANGLE = F9 16 -BIG_MULT_X = F9 17 - -EMOJI_UNDERSCORE = F9 D0 -EMOJI_PIPE = F9 D1 -EMOJI_HIGHBAR = F9 D2 -EMOJI_TILDE = F9 D3 -EMOJI_LEFT_PAREN = F9 D4 -EMOJI_RIGHT_PAREN = F9 D5 -EMOJI_UNION = F9 D6 @ ⊂ -EMOJI_GREATER_THAN = F9 D7 -EMOJI_LEFT_EYE = F9 D8 -EMOJI_RIGHT_EYE = F9 D9 -EMOJI_AT = F9 DA -EMOJI_SEMICOLON = F9 DB -EMOJI_PLUS = F9 DC -EMOJI_MINUS = F9 DD -EMOJI_EQUALS = F9 DE -EMOJI_SPIRAL = F9 DF -EMOJI_TONGUE = F9 E0 -EMOJI_TRIANGLE_OUTLINE = F9 E1 -EMOJI_ACUTE = F9 E2 -EMOJI_GRAVE = F9 E3 -EMOJI_CIRCLE = F9 E4 -EMOJI_TRIANGLE = F9 E5 -EMOJI_SQUARE = F9 E6 -EMOJI_HEART = F9 E7 -EMOJI_MOON = F9 E8 -EMOJI_NOTE = F9 E9 -EMOJI_BALL = F9 EA -EMOJI_BOLT = F9 EB -EMOJI_LEAF = F9 EC -EMOJI_FIRE = F9 ED -EMOJI_WATER = F9 EE -EMOJI_LEFT_FIST = F9 EF -EMOJI_RIGHT_FIST = F9 F0 -EMOJI_BIGWHEEL = F9 F1 -EMOJI_SMALLWHEEL = F9 F2 -EMOJI_SPHERE = F9 F3 -EMOJI_IRRITATED = F9 F4 -EMOJI_MISCHIEVOUS = F9 F5 -EMOJI_HAPPY = F9 F6 -EMOJI_ANGRY = F9 F7 -EMOJI_SURPRISED = F9 F8 -EMOJI_BIGSMILE = F9 F9 -EMOJI_EVIL = F9 FA -EMOJI_TIRED = F9 FB -EMOJI_NEUTRAL = F9 FC -EMOJI_SHOCKED = F9 FD -EMOJI_BIGANGER = F9 FE - -'\l' = FA @ scroll up window text -'\p' = FB @ new paragraph -'\n' = FE @ new line diff --git a/berry_fix/payload/common_syms/agb_flash.txt b/berry_fix/payload/common_syms/agb_flash.txt deleted file mode 100644 index cb421ec80..000000000 --- a/berry_fix/payload/common_syms/agb_flash.txt +++ /dev/null @@ -1,10 +0,0 @@ -gFlashTimeoutFlag -PollFlashStatus -WaitForFlashWrite -ProgramFlashSector -gFlash -ProgramFlashByte -gFlashNumRemainingBytes -EraseFlashChip -EraseFlashSector -gFlashMaxTime diff --git a/berry_fix/payload/common_syms/main.txt b/berry_fix/payload/common_syms/main.txt deleted file mode 100644 index b62c72124..000000000 --- a/berry_fix/payload/common_syms/main.txt +++ /dev/null @@ -1,9 +0,0 @@ -gIntrTable -gHeldKeys -gNewKeys -gIntrVector -gUpdateSuccessful -gUnknown_3001194 -gUnknown_30011A0 -gMainCallbackState -gGameVersion diff --git a/berry_fix/payload/common_syms/rtc.txt b/berry_fix/payload/common_syms/rtc.txt deleted file mode 100644 index 7aafbe65d..000000000 --- a/berry_fix/payload/common_syms/rtc.txt +++ /dev/null @@ -1,2 +0,0 @@ -gTimeSinceBerryUpdate -gRtcUTCTime diff --git a/berry_fix/payload/constants/gba_constants.inc b/berry_fix/payload/constants/gba_constants.inc deleted file mode 100644 index 9d59c8fcd..000000000 --- a/berry_fix/payload/constants/gba_constants.inc +++ /dev/null @@ -1,490 +0,0 @@ - .set PSR_USR_MODE, 0x00000010 - .set PSR_FIQ_MODE, 0x00000011 - .set PSR_IRQ_MODE, 0x00000012 - .set PSR_SVC_MODE, 0x00000013 - .set PSR_ABT_MODE, 0x00000017 - .set PSR_UND_MODE, 0x0000001b - .set PSR_SYS_MODE, 0x0000001f - .set PSR_MODE_MASK, 0x0000001f - .set PSR_T_BIT, 0x00000020 - .set PSR_F_BIT, 0x00000040 - .set PSR_I_BIT, 0x00000080 - - .set EWRAM_START, 0x02000000 - .set EWRAM_END, EWRAM_START + 0x40000 - .set IWRAM_START, 0x03000000 - .set IWRAM_END, IWRAM_START + 0x8000 - - .set PLTT, 0x5000000 - .set BG_PLTT, PLTT - .set OBJ_PLTT, PLTT + 0x200 - - .set VRAM, 0x6000000 - .set BG_VRAM, VRAM - .set OBJ_VRAM0, VRAM + 0x10000 @ text-mode BG - .set OBJ_VRAM1, VRAM + 0x14000 @ bitmap-mode BG - - .set OAM, 0x7000000 - - .set SOUND_INFO_PTR, 0x3007FF0 - .set INTR_CHECK, 0x3007FF8 - .set INTR_VECTOR, 0x3007FFC - - .set INTR_FLAG_VBLANK, 1 << 0 - .set INTR_FLAG_HBLANK, 1 << 1 - .set INTR_FLAG_VCOUNT, 1 << 2 - .set INTR_FLAG_TIMER0, 1 << 3 - .set INTR_FLAG_TIMER1, 1 << 4 - .set INTR_FLAG_TIMER2, 1 << 5 - .set INTR_FLAG_TIMER3, 1 << 6 - .set INTR_FLAG_SERIAL, 1 << 7 - .set INTR_FLAG_DMA0, 1 << 8 - .set INTR_FLAG_DMA1, 1 << 9 - .set INTR_FLAG_DMA2, 1 << 10 - .set INTR_FLAG_DMA3, 1 << 11 - .set INTR_FLAG_KEYPAD, 1 << 12 - .set INTR_FLAG_GAMEPAK, 1 << 13 - - .set VCOUNT_VBLANK, 160 - .set TOTAL_SCANLINES, 228 - - .set REG_BASE, 0x4000000 @ I/O register base address - -@ I/O register offsets - .set OFFSET_REG_DISPCNT, 0x0 - .set OFFSET_REG_DISPSTAT, 0x4 - .set OFFSET_REG_VCOUNT, 0x6 - .set OFFSET_REG_BG0CNT, 0x8 - .set OFFSET_REG_BG1CNT, 0xa - .set OFFSET_REG_BG2CNT, 0xc - .set OFFSET_REG_BG3CNT, 0xe - .set OFFSET_REG_BG0HOFS, 0x10 - .set OFFSET_REG_BG0VOFS, 0x12 - .set OFFSET_REG_BG1HOFS, 0x14 - .set OFFSET_REG_BG1VOFS, 0x16 - .set OFFSET_REG_BG2HOFS, 0x18 - .set OFFSET_REG_BG2VOFS, 0x1a - .set OFFSET_REG_BG3HOFS, 0x1c - .set OFFSET_REG_BG3VOFS, 0x1e - .set OFFSET_REG_BG2PA, 0x20 - .set OFFSET_REG_BG2PB, 0x22 - .set OFFSET_REG_BG2PC, 0x24 - .set OFFSET_REG_BG2PD, 0x26 - .set OFFSET_REG_BG2X_L, 0x28 - .set OFFSET_REG_BG2X_H, 0x2a - .set OFFSET_REG_BG2Y_L, 0x2c - .set OFFSET_REG_BG2Y_H, 0x2e - .set OFFSET_REG_BG3PA, 0x30 - .set OFFSET_REG_BG3PB, 0x32 - .set OFFSET_REG_BG3PC, 0x34 - .set OFFSET_REG_BG3PD, 0x36 - .set OFFSET_REG_BG3X_L, 0x38 - .set OFFSET_REG_BG3X_H, 0x3a - .set OFFSET_REG_BG3Y_L, 0x3c - .set OFFSET_REG_BG3Y_H, 0x3e - .set OFFSET_REG_WIN0H, 0x40 - .set OFFSET_REG_WIN1H, 0x42 - .set OFFSET_REG_WIN0V, 0x44 - .set OFFSET_REG_WIN1V, 0x46 - .set OFFSET_REG_WININ, 0x48 - .set OFFSET_REG_WINOUT, 0x4a - .set OFFSET_REG_MOSAIC, 0x4c - .set OFFSET_REG_BLDCNT, 0x50 - .set OFFSET_REG_BLDALPHA, 0x52 - .set OFFSET_REG_BLDY, 0x54 - - .set OFFSET_REG_SOUND1CNT, 0x60 - .set OFFSET_REG_SOUND1CNT_L, 0x60 - .set OFFSET_REG_NR10, 0x60 - .set OFFSET_REG_SOUND1CNT_H, 0x62 - .set OFFSET_REG_NR11, 0x62 - .set OFFSET_REG_NR12, 0x63 - .set OFFSET_REG_SOUND1CNT_X, 0x64 - .set OFFSET_REG_NR13, 0x64 - .set OFFSET_REG_NR14, 0x65 - .set OFFSET_REG_SOUND2CNT, 0x68 - .set OFFSET_REG_SOUND2CNT_L, 0x68 - .set OFFSET_REG_NR21, 0x68 - .set OFFSET_REG_NR22, 0x69 - .set OFFSET_REG_SOUND2CNT_H, 0x6c - .set OFFSET_REG_NR23, 0x6c - .set OFFSET_REG_NR24, 0x6d - .set OFFSET_REG_SOUND3CNT, 0x70 - .set OFFSET_REG_SOUND3CNT_L, 0x70 - .set OFFSET_REG_NR30, 0x70 - .set OFFSET_REG_SOUND3CNT_H, 0x72 - .set OFFSET_REG_NR31, 0x72 - .set OFFSET_REG_NR32, 0x73 - .set OFFSET_REG_SOUND3CNT_X, 0x74 - .set OFFSET_REG_NR33, 0x74 - .set OFFSET_REG_NR34, 0x75 - .set OFFSET_REG_SOUND4CNT, 0x78 - .set OFFSET_REG_SOUND4CNT_L, 0x78 - .set OFFSET_REG_NR41, 0x78 - .set OFFSET_REG_NR42, 0x79 - .set OFFSET_REG_SOUND4CNT_H, 0x7c - .set OFFSET_REG_NR43, 0x7c - .set OFFSET_REG_NR44, 0x7d - .set OFFSET_REG_SOUNDCNT, 0x80 - .set OFFSET_REG_SOUNDCNT_L, 0x80 - .set OFFSET_REG_NR50, 0x80 - .set OFFSET_REG_NR51, 0x81 - .set OFFSET_REG_SOUNDCNT_H, 0x82 - .set OFFSET_REG_SOUNDCNT_X, 0x84 - .set OFFSET_REG_NR52, 0x84 - .set OFFSET_REG_SOUNDBIAS, 0x88 - .set OFFSET_REG_WAVE_RAM, 0x90 - .set OFFSET_REG_WAVE_RAM0, 0x90 - .set OFFSET_REG_WAVE_RAM0_L, 0x90 - .set OFFSET_REG_WAVE_RAM0_H, 0x92 - .set OFFSET_REG_WAVE_RAM1, 0x94 - .set OFFSET_REG_WAVE_RAM1_L, 0x94 - .set OFFSET_REG_WAVE_RAM1_H, 0x96 - .set OFFSET_REG_WAVE_RAM2, 0x98 - .set OFFSET_REG_WAVE_RAM2_L, 0x98 - .set OFFSET_REG_WAVE_RAM2_H, 0x9a - .set OFFSET_REG_WAVE_RAM3, 0x9c - .set OFFSET_REG_WAVE_RAM3_L, 0x9c - .set OFFSET_REG_WAVE_RAM3_H, 0x9e - .set OFFSET_REG_FIFO, 0xa0 - .set OFFSET_REG_FIFO_A, 0xa0 - .set OFFSET_REG_FIFO_A_L, 0xa0 - .set OFFSET_REG_FIFO_A_H, 0xa2 - .set OFFSET_REG_FIFO_B, 0xa4 - .set OFFSET_REG_FIFO_B_L, 0xa4 - .set OFFSET_REG_FIFO_B_H, 0xa6 - - .set OFFSET_REG_DMA0, 0xb0 - .set OFFSET_REG_DMA0SAD, 0xb0 - .set OFFSET_REG_DMA0SAD_L, 0xb0 - .set OFFSET_REG_DMA0SAD_H, 0xb2 - .set OFFSET_REG_DMA0DAD, 0xb4 - .set OFFSET_REG_DMA0DAD_L, 0xb4 - .set OFFSET_REG_DMA0DAD_H, 0xb6 - .set OFFSET_REG_DMA0CNT, 0xb8 - .set OFFSET_REG_DMA0CNT_L, 0xb8 - .set OFFSET_REG_DMA0CNT_H, 0xba - .set OFFSET_REG_DMA1, 0xbc - .set OFFSET_REG_DMA1SAD, 0xbc - .set OFFSET_REG_DMA1SAD_L, 0xbc - .set OFFSET_REG_DMA1SAD_H, 0xbe - .set OFFSET_REG_DMA1DAD, 0xc0 - .set OFFSET_REG_DMA1DAD_L, 0xc0 - .set OFFSET_REG_DMA1DAD_H, 0xc2 - .set OFFSET_REG_DMA1CNT, 0xc4 - .set OFFSET_REG_DMA1CNT_L, 0xc4 - .set OFFSET_REG_DMA1CNT_H, 0xc6 - .set OFFSET_REG_DMA2, 0xc8 - .set OFFSET_REG_DMA2SAD, 0xc8 - .set OFFSET_REG_DMA2SAD_L, 0xc8 - .set OFFSET_REG_DMA2SAD_H, 0xca - .set OFFSET_REG_DMA2DAD, 0xcc - .set OFFSET_REG_DMA2DAD_L, 0xcc - .set OFFSET_REG_DMA2DAD_H, 0xce - .set OFFSET_REG_DMA2CNT, 0xd0 - .set OFFSET_REG_DMA2CNT_L, 0xd0 - .set OFFSET_REG_DMA2CNT_H, 0xd2 - .set OFFSET_REG_DMA3, 0xd4 - .set OFFSET_REG_DMA3SAD, 0xd4 - .set OFFSET_REG_DMA3SAD_L, 0xd4 - .set OFFSET_REG_DMA3SAD_H, 0xd6 - .set OFFSET_REG_DMA3DAD, 0xd8 - .set OFFSET_REG_DMA3DAD_L, 0xd8 - .set OFFSET_REG_DMA3DAD_H, 0xda - .set OFFSET_REG_DMA3CNT, 0xdc - .set OFFSET_REG_DMA3CNT_L, 0xdc - .set OFFSET_REG_DMA3CNT_H, 0xde - - .set OFFSET_REG_TM0CNT, 0x100 - .set OFFSET_REG_TM0CNT_L, 0x100 - .set OFFSET_REG_TM0CNT_H, 0x102 - .set OFFSET_REG_TM1CNT, 0x104 - .set OFFSET_REG_TM1CNT_L, 0x104 - .set OFFSET_REG_TM1CNT_H, 0x106 - .set OFFSET_REG_TM2CNT, 0x108 - .set OFFSET_REG_TM2CNT_L, 0x108 - .set OFFSET_REG_TM2CNT_H, 0x10a - .set OFFSET_REG_TM3CNT, 0x10c - .set OFFSET_REG_TM3CNT_L, 0x10c - .set OFFSET_REG_TM3CNT_H, 0x10e - - .set OFFSET_REG_SIOCNT, 0x128 - .set OFFSET_REG_SIODATA8, 0x12a - .set OFFSET_REG_SIODATA32, 0x120 - .set OFFSET_REG_SIOMLT_SEND, 0x12a - .set OFFSET_REG_SIOMLT_RECV, 0x120 - .set OFFSET_REG_SIOMULTI0, 0x120 - .set OFFSET_REG_SIOMULTI1, 0x122 - .set OFFSET_REG_SIOMULTI2, 0x124 - .set OFFSET_REG_SIOMULTI3, 0x126 - - .set OFFSET_REG_KEYINPUT, 0x130 - .set OFFSET_REG_KEYCNT, 0x132 - - .set OFFSET_REG_RCNT, 0x134 - - .set OFFSET_REG_JOYCNT, 0x140 - .set OFFSET_REG_JOYSTAT, 0x158 - .set OFFSET_REG_JOY_RECV, 0x150 - .set OFFSET_REG_JOY_RECV_L, 0x150 - .set OFFSET_REG_JOY_RECV_H, 0x152 - .set OFFSET_REG_JOY_TRANS, 0x154 - .set OFFSET_REG_JOY_TRANS_L, 0x154 - .set OFFSET_REG_JOY_TRANS_H, 0x156 - - .set OFFSET_REG_IME, 0x208 - .set OFFSET_REG_IE, 0x200 - .set OFFSET_REG_IF, 0x202 - - .set OFFSET_REG_WAITCNT, 0x204 - -@ I/O register addresses - .set REG_DISPCNT, REG_BASE + OFFSET_REG_DISPCNT - .set REG_DISPSTAT, REG_BASE + OFFSET_REG_DISPSTAT - .set REG_VCOUNT, REG_BASE + OFFSET_REG_VCOUNT - .set REG_BG0CNT, REG_BASE + OFFSET_REG_BG0CNT - .set REG_BG1CNT, REG_BASE + OFFSET_REG_BG1CNT - .set REG_BG2CNT, REG_BASE + OFFSET_REG_BG2CNT - .set REG_BG3CNT, REG_BASE + OFFSET_REG_BG3CNT - .set REG_BG0HOFS, REG_BASE + OFFSET_REG_BG0HOFS - .set REG_BG0VOFS, REG_BASE + OFFSET_REG_BG0VOFS - .set REG_BG1HOFS, REG_BASE + OFFSET_REG_BG1HOFS - .set REG_BG1VOFS, REG_BASE + OFFSET_REG_BG1VOFS - .set REG_BG2HOFS, REG_BASE + OFFSET_REG_BG2HOFS - .set REG_BG2VOFS, REG_BASE + OFFSET_REG_BG2VOFS - .set REG_BG3HOFS, REG_BASE + OFFSET_REG_BG3HOFS - .set REG_BG3VOFS, REG_BASE + OFFSET_REG_BG3VOFS - .set REG_BG2PA, REG_BASE + OFFSET_REG_BG2PA - .set REG_BG2PB, REG_BASE + OFFSET_REG_BG2PB - .set REG_BG2PC, REG_BASE + OFFSET_REG_BG2PC - .set REG_BG2PD, REG_BASE + OFFSET_REG_BG2PD - .set REG_BG2X_L, REG_BASE + OFFSET_REG_BG2X_L - .set REG_BG2X_H, REG_BASE + OFFSET_REG_BG2X_H - .set REG_BG2Y_L, REG_BASE + OFFSET_REG_BG2Y_L - .set REG_BG2Y_H, REG_BASE + OFFSET_REG_BG2Y_H - .set REG_BG3PA, REG_BASE + OFFSET_REG_BG3PA - .set REG_BG3PB, REG_BASE + OFFSET_REG_BG3PB - .set REG_BG3PC, REG_BASE + OFFSET_REG_BG3PC - .set REG_BG3PD, REG_BASE + OFFSET_REG_BG3PD - .set REG_BG3X_L, REG_BASE + OFFSET_REG_BG3X_L - .set REG_BG3X_H, REG_BASE + OFFSET_REG_BG3X_H - .set REG_BG3Y_L, REG_BASE + OFFSET_REG_BG3Y_L - .set REG_BG3Y_H, REG_BASE + OFFSET_REG_BG3Y_H - .set REG_WIN0H, REG_BASE + OFFSET_REG_WIN0H - .set REG_WIN1H, REG_BASE + OFFSET_REG_WIN1H - .set REG_WIN0V, REG_BASE + OFFSET_REG_WIN0V - .set REG_WIN1V, REG_BASE + OFFSET_REG_WIN1V - .set REG_WININ, REG_BASE + OFFSET_REG_WININ - .set REG_WINOUT, REG_BASE + OFFSET_REG_WINOUT - .set REG_MOSAIC, REG_BASE + OFFSET_REG_MOSAIC - .set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT - .set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA - .set REG_BLDY, REG_BASE + OFFSET_REG_BLDY - - .set REG_SOUND1CNT, REG_BASE + OFFSET_REG_SOUND1CNT - .set REG_SOUND1CNT_L, REG_BASE + OFFSET_REG_SOUND1CNT_L - .set REG_NR10, REG_BASE + OFFSET_REG_NR10 - .set REG_SOUND1CNT_H, REG_BASE + OFFSET_REG_SOUND1CNT_H - .set REG_NR11, REG_BASE + OFFSET_REG_NR11 - .set REG_NR12, REG_BASE + OFFSET_REG_NR12 - .set REG_SOUND1CNT_X, REG_BASE + OFFSET_REG_SOUND1CNT_X - .set REG_NR13, REG_BASE + OFFSET_REG_NR13 - .set REG_NR14, REG_BASE + OFFSET_REG_NR14 - .set REG_SOUND2CNT, REG_BASE + OFFSET_REG_SOUND2CNT - .set REG_SOUND2CNT_L, REG_BASE + OFFSET_REG_SOUND2CNT_L - .set REG_NR21, REG_BASE + OFFSET_REG_NR21 - .set REG_NR22, REG_BASE + OFFSET_REG_NR22 - .set REG_SOUND2CNT_H, REG_BASE + OFFSET_REG_SOUND2CNT_H - .set REG_NR23, REG_BASE + OFFSET_REG_NR23 - .set REG_NR24, REG_BASE + OFFSET_REG_NR24 - .set REG_SOUND3CNT, REG_BASE + OFFSET_REG_SOUND3CNT - .set REG_SOUND3CNT_L, REG_BASE + OFFSET_REG_SOUND3CNT_L - .set REG_NR30, REG_BASE + OFFSET_REG_NR30 - .set REG_SOUND3CNT_H, REG_BASE + OFFSET_REG_SOUND3CNT_H - .set REG_NR31, REG_BASE + OFFSET_REG_NR31 - .set REG_NR32, REG_BASE + OFFSET_REG_NR32 - .set REG_SOUND3CNT_X, REG_BASE + OFFSET_REG_SOUND3CNT_X - .set REG_NR33, REG_BASE + OFFSET_REG_NR33 - .set REG_NR34, REG_BASE + OFFSET_REG_NR34 - .set REG_SOUND4CNT, REG_BASE + OFFSET_REG_SOUND4CNT - .set REG_SOUND4CNT_L, REG_BASE + OFFSET_REG_SOUND4CNT_L - .set REG_NR41, REG_BASE + OFFSET_REG_NR41 - .set REG_NR42, REG_BASE + OFFSET_REG_NR42 - .set REG_SOUND4CNT_H, REG_BASE + OFFSET_REG_SOUND4CNT_H - .set REG_NR43, REG_BASE + OFFSET_REG_NR43 - .set REG_NR44, REG_BASE + OFFSET_REG_NR44 - .set REG_SOUNDCNT, REG_BASE + OFFSET_REG_SOUNDCNT - .set REG_SOUNDCNT_L, REG_BASE + OFFSET_REG_SOUNDCNT_L - .set REG_NR50, REG_BASE + OFFSET_REG_NR50 - .set REG_NR51, REG_BASE + OFFSET_REG_NR51 - .set REG_SOUNDCNT_H, REG_BASE + OFFSET_REG_SOUNDCNT_H - .set REG_SOUNDCNT_X, REG_BASE + OFFSET_REG_SOUNDCNT_X - .set REG_NR52, REG_BASE + OFFSET_REG_NR52 - .set REG_SOUNDBIAS, REG_BASE + OFFSET_REG_SOUNDBIAS - .set REG_WAVE_RAM, REG_BASE + OFFSET_REG_WAVE_RAM - .set REG_WAVE_RAM0, REG_BASE + OFFSET_REG_WAVE_RAM0 - .set REG_WAVE_RAM0_L, REG_BASE + OFFSET_REG_WAVE_RAM0_L - .set REG_WAVE_RAM0_H, REG_BASE + OFFSET_REG_WAVE_RAM0_H - .set REG_WAVE_RAM1, REG_BASE + OFFSET_REG_WAVE_RAM1 - .set REG_WAVE_RAM1_L, REG_BASE + OFFSET_REG_WAVE_RAM1_L - .set REG_WAVE_RAM1_H, REG_BASE + OFFSET_REG_WAVE_RAM1_H - .set REG_WAVE_RAM2, REG_BASE + OFFSET_REG_WAVE_RAM2 - .set REG_WAVE_RAM2_L, REG_BASE + OFFSET_REG_WAVE_RAM2_L - .set REG_WAVE_RAM2_H, REG_BASE + OFFSET_REG_WAVE_RAM2_H - .set REG_WAVE_RAM3, REG_BASE + OFFSET_REG_WAVE_RAM3 - .set REG_WAVE_RAM3_L, REG_BASE + OFFSET_REG_WAVE_RAM3_L - .set REG_WAVE_RAM3_H, REG_BASE + OFFSET_REG_WAVE_RAM3_H - .set REG_FIFO, REG_BASE + OFFSET_REG_FIFO - .set REG_FIFO_A, REG_BASE + OFFSET_REG_FIFO_A - .set REG_FIFO_A_L, REG_BASE + OFFSET_REG_FIFO_A_L - .set REG_FIFO_A_H, REG_BASE + OFFSET_REG_FIFO_A_H - .set REG_FIFO_B, REG_BASE + OFFSET_REG_FIFO_B - .set REG_FIFO_B_L, REG_BASE + OFFSET_REG_FIFO_B_L - .set REG_FIFO_B_H, REG_BASE + OFFSET_REG_FIFO_B_H - - .set REG_DMA0, REG_BASE + OFFSET_REG_DMA0 - .set REG_DMA0SAD, REG_BASE + OFFSET_REG_DMA0SAD - .set REG_DMA0SAD_L, REG_BASE + OFFSET_REG_DMA0SAD_L - .set REG_DMA0SAD_H, REG_BASE + OFFSET_REG_DMA0SAD_H - .set REG_DMA0DAD, REG_BASE + OFFSET_REG_DMA0DAD - .set REG_DMA0DAD_L, REG_BASE + OFFSET_REG_DMA0DAD_L - .set REG_DMA0DAD_H, REG_BASE + OFFSET_REG_DMA0DAD_H - .set REG_DMA0CNT, REG_BASE + OFFSET_REG_DMA0CNT - .set REG_DMA0CNT_L, REG_BASE + OFFSET_REG_DMA0CNT_L - .set REG_DMA0CNT_H, REG_BASE + OFFSET_REG_DMA0CNT_H - .set REG_DMA1, REG_BASE + OFFSET_REG_DMA1 - .set REG_DMA1SAD, REG_BASE + OFFSET_REG_DMA1SAD - .set REG_DMA1SAD_L, REG_BASE + OFFSET_REG_DMA1SAD_L - .set REG_DMA1SAD_H, REG_BASE + OFFSET_REG_DMA1SAD_H - .set REG_DMA1DAD, REG_BASE + OFFSET_REG_DMA1DAD - .set REG_DMA1DAD_L, REG_BASE + OFFSET_REG_DMA1DAD_L - .set REG_DMA1DAD_H, REG_BASE + OFFSET_REG_DMA1DAD_H - .set REG_DMA1CNT, REG_BASE + OFFSET_REG_DMA1CNT - .set REG_DMA1CNT_L, REG_BASE + OFFSET_REG_DMA1CNT_L - .set REG_DMA1CNT_H, REG_BASE + OFFSET_REG_DMA1CNT_H - .set REG_DMA2, REG_BASE + OFFSET_REG_DMA2 - .set REG_DMA2SAD, REG_BASE + OFFSET_REG_DMA2SAD - .set REG_DMA2SAD_L, REG_BASE + OFFSET_REG_DMA2SAD_L - .set REG_DMA2SAD_H, REG_BASE + OFFSET_REG_DMA2SAD_H - .set REG_DMA2DAD, REG_BASE + OFFSET_REG_DMA2DAD - .set REG_DMA2DAD_L, REG_BASE + OFFSET_REG_DMA2DAD_L - .set REG_DMA2DAD_H, REG_BASE + OFFSET_REG_DMA2DAD_H - .set REG_DMA2CNT, REG_BASE + OFFSET_REG_DMA2CNT - .set REG_DMA2CNT_L, REG_BASE + OFFSET_REG_DMA2CNT_L - .set REG_DMA2CNT_H, REG_BASE + OFFSET_REG_DMA2CNT_H - .set REG_DMA3, REG_BASE + OFFSET_REG_DMA3 - .set REG_DMA3SAD, REG_BASE + OFFSET_REG_DMA3SAD - .set REG_DMA3SAD_L, REG_BASE + OFFSET_REG_DMA3SAD_L - .set REG_DMA3SAD_H, REG_BASE + OFFSET_REG_DMA3SAD_H - .set REG_DMA3DAD, REG_BASE + OFFSET_REG_DMA3DAD - .set REG_DMA3DAD_L, REG_BASE + OFFSET_REG_DMA3DAD_L - .set REG_DMA3DAD_H, REG_BASE + OFFSET_REG_DMA3DAD_H - .set REG_DMA3CNT, REG_BASE + OFFSET_REG_DMA3CNT - .set REG_DMA3CNT_L, REG_BASE + OFFSET_REG_DMA3CNT_L - .set REG_DMA3CNT_H, REG_BASE + OFFSET_REG_DMA3CNT_H - - .set REG_TM0CNT, REG_BASE + OFFSET_REG_TM0CNT - .set REG_TM0CNT_L, REG_BASE + OFFSET_REG_TM0CNT_L - .set REG_TM0CNT_H, REG_BASE + OFFSET_REG_TM0CNT_H - .set REG_TM1CNT, REG_BASE + OFFSET_REG_TM1CNT - .set REG_TM1CNT_L, REG_BASE + OFFSET_REG_TM1CNT_L - .set REG_TM1CNT_H, REG_BASE + OFFSET_REG_TM1CNT_H - .set REG_TM2CNT, REG_BASE + OFFSET_REG_TM2CNT - .set REG_TM2CNT_L, REG_BASE + OFFSET_REG_TM2CNT_L - .set REG_TM2CNT_H, REG_BASE + OFFSET_REG_TM2CNT_H - .set REG_TM3CNT, REG_BASE + OFFSET_REG_TM3CNT - .set REG_TM3CNT_L, REG_BASE + OFFSET_REG_TM3CNT_L - .set REG_TM3CNT_H, REG_BASE + OFFSET_REG_TM3CNT_H - - .set REG_SIOCNT, REG_BASE + OFFSET_REG_SIOCNT - .set REG_SIODATA8, REG_BASE + OFFSET_REG_SIODATA8 - .set REG_SIODATA32, REG_BASE + OFFSET_REG_SIODATA32 - .set REG_SIOMLT_SEND, REG_BASE + OFFSET_REG_SIOMLT_SEND - .set REG_SIOMLT_RECV, REG_BASE + OFFSET_REG_SIOMLT_RECV - .set REG_SIOMULTI0, REG_BASE + OFFSET_REG_SIOMULTI0 - .set REG_SIOMULTI1, REG_BASE + OFFSET_REG_SIOMULTI1 - .set REG_SIOMULTI2, REG_BASE + OFFSET_REG_SIOMULTI2 - .set REG_SIOMULTI3, REG_BASE + OFFSET_REG_SIOMULTI3 - - .set REG_KEYINPUT, REG_BASE + OFFSET_REG_KEYINPUT - .set REG_KEYCNT, REG_BASE + OFFSET_REG_KEYCNT - - .set REG_RCNT, REG_BASE + OFFSET_REG_RCNT - - .set REG_JOYCNT, REG_BASE + OFFSET_REG_JOYCNT - .set REG_JOYSTAT, REG_BASE + OFFSET_REG_JOYSTAT - .set REG_JOY_RECV, REG_BASE + OFFSET_REG_JOY_RECV - .set REG_JOY_RECV_L, REG_BASE + OFFSET_REG_JOY_RECV_L - .set REG_JOY_RECV_H, REG_BASE + OFFSET_REG_JOY_RECV_H - .set REG_JOY_TRANS, REG_BASE + OFFSET_REG_JOY_TRANS - .set REG_JOY_TRANS_L, REG_BASE + OFFSET_REG_JOY_TRANS_L - .set REG_JOY_TRANS_H, REG_BASE + OFFSET_REG_JOY_TRANS_H - - .set REG_IME, REG_BASE + OFFSET_REG_IME - .set REG_IE, REG_BASE + OFFSET_REG_IE - .set REG_IF, REG_BASE + OFFSET_REG_IF - - .set REG_WAITCNT, REG_BASE + OFFSET_REG_WAITCNT - -@ DMA register constants - - .set DMA_DEST_INC, 0x0000 - .set DMA_DEST_DEC, 0x0020 - .set DMA_DEST_FIXED, 0x0040 - .set DMA_DEST_RELOAD, 0x0060 - .set DMA_SRC_INC, 0x0000 - .set DMA_SRC_DEC, 0x0080 - .set DMA_SRC_FIXED, 0x0100 - .set DMA_REPEAT, 0x0200 - .set DMA_16BIT, 0x0000 - .set DMA_32BIT, 0x0400 - .set DMA_DREQ_ON, 0x0800 - .set DMA_START_NOW, 0x0000 - .set DMA_START_VBLANK, 0x1000 - .set DMA_START_HBLANK, 0x2000 - .set DMA_START_SPECIAL, 0x3000 - .set DMA_INTR_ENABLE, 0x4000 - .set DMA_ENABLE, 0x8000 - -@ OAM attribute constants - - .set OAM_OBJ_NORMAL, 0x00000000 - .set OAM_OBJ_BLEND, 0x00000400 - .set OAM_OBJ_WINDOW, 0x00000800 - - .set OAM_AFFINE_NONE, 0x00000000 - .set OAM_AFFINE_NORMAL_SIZE, 0x00000100 - .set OAM_OBJ_DISABLED, 0x00000200 - .set OAM_AFFINE_DOUBLE_SIZE, 0x00000300 - - .set OAM_MOSAIC_OFF, 0x00000000 - .set OAM_MOSAIC_ON, 0x00001000 - - .set OAM_4BPP, 0x00000000 - .set OAM_8BPP, 0x00002000 - - .set OAM_H_FLIP, 0x10000000 - .set OAM_V_FLIP, 0x20000000 - - .set OAM_SQUARE, 0x00000000 - .set OAM_H_RECTANGLE, 0x00004000 - .set OAM_V_RECTANGLE, 0x00008000 - .set OAM_SIZE_0, 0x00000000 - .set OAM_SIZE_1, 0x40000000 - .set OAM_SIZE_2, 0x80000000 - .set OAM_SIZE_3, 0xc0000000 - - .set OAM_SIZE_8x8, OAM_SIZE_0 | OAM_SQUARE - .set OAM_SIZE_16x16, OAM_SIZE_1 | OAM_SQUARE - .set OAM_SIZE_32x32, OAM_SIZE_2 | OAM_SQUARE - .set OAM_SIZE_64x64, OAM_SIZE_3 | OAM_SQUARE - - .set OAM_SIZE_16x8, OAM_SIZE_0 | OAM_H_RECTANGLE - .set OAM_SIZE_32x8, OAM_SIZE_1 | OAM_H_RECTANGLE - .set OAM_SIZE_32x16, OAM_SIZE_2 | OAM_H_RECTANGLE - .set OAM_SIZE_64x32, OAM_SIZE_3 | OAM_H_RECTANGLE - - .set OAM_SIZE_8x16, OAM_SIZE_0 | OAM_V_RECTANGLE - .set OAM_SIZE_8x32, OAM_SIZE_1 | OAM_V_RECTANGLE - .set OAM_SIZE_16x32, OAM_SIZE_2 | OAM_V_RECTANGLE - .set OAM_SIZE_32x64, OAM_SIZE_3 | OAM_V_RECTANGLE diff --git a/berry_fix/payload/graphics/debug_digits.png b/berry_fix/payload/graphics/debug_digits.png deleted file mode 100644 index edf0d36c96f0e22f213b6ea63ccdaf77acdef638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^96%hv0wfrYc($DZQn{Wkjv*3LODA09Wl-dBzFB`` zlVdg0qs&EhCQbUf8BM1(PAL3RD>?Nk^zn_1vy*N<@ly7zNx!eZU3Bl`k>(9t$Wrs?N=11*XBQM{ya-RJmLRm_9IbdeJ`9p QtAHHf>FVdQ&MBb@00o6a2><{9 diff --git a/berry_fix/payload/graphics/msg_box.png b/berry_fix/payload/graphics/msg_box.png deleted file mode 100644 index 00d1bbe37ed295a83eabd4dd35f4356fbd9f0ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631 zcmZ`*c{J2}8~@G>W6RK?FpRyp2%#8UTMX0HSduM!VU#RGOd`K)8;qqa$!$pXr8ip= zvV_S}NvXI@*_W(i$)36HdEYfNZ%~{ z?6^Eb&!B&n#ClxIpgUfpJ@#JS2Y~A%-q_HFOj~jqsh&E?-~7wmG0221p3~_B+%nUQ zRIxw4lI$52*h_uW+kyu3_mNO<5iE}+1>V+L zyPSTnU9a_vy-mr~ik1F?3+ASD#Igcr%gsS}MTsMnV{{kys^;kkvGQvbL~peEUgz^_ zKprz0aBE;`D7*HPowmKNy*i~JDM0l?lq3-LY~Mdg=ZP&90EIm6jV63{Z?xyk{Ru4> zd`c&@aw=WjX1?FF_b!=~zPfIX8=0G1c^CHQ71OoIOGRru6n2fGgDXRm$I-ZYe+ufU z4otFo{4$g{P@1A1W<52(-fpn;y`_ced^SP=@KtskxBYPhSbc@(Ewb{@PrrxtAA?m* zmvn}ZV#_;UBLJ#9x6e$u^p=C5g-CdX!+W>j>{D`jEXscL90L>s4y|xrbjeW(K;wUxh@lf%^PF)tJwQ zO>Dqjiv+F{naX*`1Bnxod8o-Y?I43ZOOnhz2wcIn24WWG-4YoslU=J^yq*u#ECU4U32g;n;<_f76g}FHwC5?&!zB#j5vc^Kwju&Tgbd?Po zMkA(gBysvzo73^)qTP^R0U`Zg@fVCn5Ro=E^t)xeYF8*G62*5W7^INtF7 z5B5+obA}ovLDb80><*9i31B~FeBxsNhJBoguv=FV0HRuf%@!{&X90r_UJ{)7PMomq z;Ik?v5sa-3dyth2SL09fmsQkSWqAPIMid{!<;SLaz2fV%@{u!qkWU>91c!Qw&Q(_i z=RMVE^58J?WB9S|qXn&M{0=mr_N$s2(0Z3P>$fW z>x<9YE|IJBR@|J|$s7D~Gyx_;1_r%~L=Kz1Cdvzkdx#P>(Ff2gI5PUI} zA$9tZIK@RgvQVyMQGoH7aHXuEy8VSNP(bcdZL|4oy8@BAr`t}6kjCc3k6;@qheI9H z3&i*eX<|886Gk2N4~uzi>^q*PoVS$K8SeFaxKG(UHDcvYoxhQe7R1=Rc$lttpOVvw zO?rvtM%;$bci_H)sHWB9Q*fgoa;_T-<^LnSz>t>eAuX_4hg}vM7DJgC8iNe>vsSj# z53gr*r3NTPEHB?C-Qm!1ZES5yNuAnV<<*=`W@Iy(I6Eq1L-|&^6#=u4+apC_eq`SDGL>;~ENd&nLr%JQKk0#fb7lkiOHx*=pZ>{NKAT&P z^tA+p(s_cy=K8p{1-I40rw#!gebl^4@y@oASh+=k5f+v=xHIY8E2v*MWEE-7#V-rd8GTAvV+U!N2k^G0a6Dxz@Y*9> ztTo)=q(mV%Q}i1ZrVa#!KFk!2;`$zyuGwd5&SyPMI~i7wDI6?uwl}}HD-Oa}x&T@D zSR#i(?^4A#IgbAE)sS)sK*D=wgEF3wxdACR^TqZ(hXAS9P5$@RvFee9y=AI?xlAb| z{?;Bl^CQAPskcxZJ%tZK`uC_5hoiaWuE()WyI-K)wEbh2#sk= zL|vF9^5uH~Xo{hiw$%G*8F6vezlgiPX|QeRcB4z6QCr%}`-*|9Mh^sT8E))qcJI)# z^{uCMl@V^v4d(ZTI#q&#&0nkx-LTZg>&*S6cjz*0WOTgJlsN7ZyLwPkJ&$Q4`~#xK z$+WEqy-sPxRh$hQAan0$2JLkYmy^Ysa}*5rmBx6-z4`scK?at8u(g}cp;pIJ52g0} ztz|Xc*`@}FKe$4>`>fM=(*tB;<3uzR5eD+Uc%3#XWg&*TWnOn$_t)*m4ep>{R^(Bm zEFLw@h$AODR8EP?OjQeT%V*M$M0xhhEzKbk<`G*u0NF!Ac}JOMCvb4|CO@n)l+s3DZR!Z zc-A{zbnPJ3a`Dj{`uZ5c>(0yZftBHcjUCyS_kITK#BYl3GH}zdfKQ`$w<2RaSWe1c zc3|p}Z%XuMN7nIVnZ0q^2vc;AVeJY^#G4R|pBlME{RL(=#7qDH diff --git a/berry_fix/payload/graphics/msg_box.tilemap b/berry_fix/payload/graphics/msg_box.tilemap deleted file mode 100644 index 5b82401bad50d7be7f5ca611a9fd6c0eec53d25a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI01&|a+6o&tA;SO$r!`)qiy9alIy99T)K#QAv2TI*0p|g&fF7=% zKJszuEy$u!3T;32RTzbppR5X}@QNURMN}k3Run~5G(}eo#Z)ZWEUs$r?kLtD^rL=K zZ}m}M^;3Th&_E5+U=7hw4byOq&`6EaXpPZWjnnu5y}wHzTX7Uu@f2SPJlEVd{^@9+ zp40vWP1Gb!))Y;Z&1&;EwvSs@&+o<+L+@uZS?vz8myq~3?}2}V{~UAhW-;$Qn{(R1 zT`vchOjSFu9L17QiIiALlvK%-Tq%@Nsgzo2^p(;oozg3VGAffYD~qx!TOh(1{IdM4 zX_~GXnyFcutvQ;jd77^UTBt=@tR-5iWm>KkTB%>O>TmSfl|wm|OSzRtd6iH3^|h;) zubp0w&AtEd=tMr{gY#i=)l`(fMATMMY53aPM)sHlpmxJsy` zN~yHUsI0zGIh9uhRa7NaRuxrMHP6^C{ss5=@%H?K9=~NM%QuvxJQb)&B`Q;es#K#o zHK<7~YEy^0d`ms*(}0FFqA`w0FrL3!=dQbeBjvr(F->l!YMO(E^+qFYGwM)CTM|-tT`*lDEbx4PGL`QW@$8|y{ zKZ-wDtE+};s+MZ2j_T@L)l+>nP(w9RV>MAzHB)o7P)oH^Yqe2ZwKGOA)^F=6oz@wh z)w$5;bwL+(Ntbm+S9ML-bwf9GOSg4LcXdzq^*|5xNUj{g&|BK8gF32{I;)GmQ&)A< z_v)@5>Zx9yxjOv)ah2=-Eq~~-p6IEb>A7C$rC#Z^-sr8~>HVkZO=cf9zmWXHf&ZYs z|Bf-dS%NzM|GPfu{B1&0n$esVw4@cSX+vAu(Vh-;q!XR#!gq9~8{gBN9`vM_lfD7` zy}?axahp5bLT`Ri2M z?Hk`upRG4Y=+>Lyw=*+x^Vh>~eKNnDGjRJanDaZV&1?j>7{cO*m2iY70{%oK5|N2QRH7NwwR!R|_xt|?Kk^g3=|f-o(VqbfWDtWH z!cc}WoDqy<6r-Ivuc3DF$H?EJ6N8wcoBRv_&NG39qg{)*FyJu`Se}85g)0x3c zW-*&N%w-<)S-?UTv6v++Wf{v^!AgE%6~AKp@c%DM4sw!<+~grI`N+@L6rdo5C`=KG zQjFr1pd_Uz?Xm3gfpPzq-&oBW*0PTEY+xgs*v#*2VJq9%&JK36i{0#D@89b~@?X;o z{}TK%_5J0_KaBV_wSN2C{N3xn$@SZlKbidga_d9l&%5#Gt~34^B(vT{4;Oe X=8W7By?GCWJU^LcufywK!he4PFQf!E diff --git a/berry_fix/payload/include/constants/game_stat.h b/berry_fix/payload/include/constants/game_stat.h deleted file mode 100644 index 47d703d85..000000000 --- a/berry_fix/payload/include/constants/game_stat.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef GUARD_CONSTANTS_GAME_STAT_H -#define GUARD_CONSTANTS_GAME_STAT_H - -#define GAME_STAT_SAVED_GAME 0 -#define GAME_STAT_FIRST_HOF_PLAY_TIME 1 -#define GAME_STAT_STARTED_TRENDS 2 -#define GAME_STAT_PLANTED_BERRIES 3 -#define GAME_STAT_TRADED_BIKES 4 -#define GAME_STAT_STEPS 5 -#define GAME_STAT_GOT_INTERVIEWED 6 -#define GAME_STAT_TOTAL_BATTLES 7 -#define GAME_STAT_WILD_BATTLES 8 -#define GAME_STAT_TRAINER_BATTLES 9 -#define GAME_STAT_ENTERED_HOF 10 -#define GAME_STAT_POKEMON_CAPTURES 11 -#define GAME_STAT_FISHING_CAPTURES 12 -#define GAME_STAT_HATCHED_EGGS 13 -#define GAME_STAT_EVOLVED_POKEMON 14 -#define GAME_STAT_USED_POKECENTER 15 -#define GAME_STAT_RESTED_AT_HOME 16 -#define GAME_STAT_ENTERED_SAFARI_ZONE 17 -#define GAME_STAT_USED_CUT 18 -#define GAME_STAT_USED_ROCK_SMASH 19 -#define GAME_STAT_MOVED_SECRET_BASE 20 -#define GAME_STAT_POKEMON_TRADES 21 -#define GAME_STAT_UNKNOWN_22 22 -#define GAME_STAT_LINK_BATTLE_WINS 23 -#define GAME_STAT_LINK_BATTLE_LOSSES 24 -#define GAME_STAT_LINK_BATTLE_DRAWS 25 -#define GAME_STAT_USED_SPLASH 26 -#define GAME_STAT_USED_STRUGGLE 27 -#define GAME_STAT_SLOT_JACKPOTS 28 -#define GAME_STAT_CONSECUTIVE_ROULETTE_WINS 29 -#define GAME_STAT_ENTERED_BATTLE_TOWER 30 -#define GAME_STAT_UNKNOWN_31 31 -#define GAME_STAT_BATTLE_TOWER_BEST_STREAK 32 -#define GAME_STAT_POKEBLOCKS 33 -#define GAME_STAT_POKEBLOCKS_WITH_FRIENDS 34 -#define GAME_STAT_WON_LINK_CONTEST 35 -#define GAME_STAT_ENTERED_CONTEST 36 -#define GAME_STAT_WON_CONTEST 37 -#define GAME_STAT_SHOPPED 38 -#define GAME_STAT_USED_ITEMFINDER 39 -#define GAME_STAT_GOT_RAINED_ON 40 -#define GAME_STAT_CHECKED_POKEDEX 41 -#define GAME_STAT_RECEIVED_RIBBONS 42 -#define GAME_STAT_JUMPED_DOWN_LEDGES 43 -#define GAME_STAT_WATCHED_TV 44 -#define GAME_STAT_CHECKED_CLOCK 45 -#define GAME_STAT_WON_POKEMON_LOTTERY 46 -#define GAME_STAT_USED_DAYCARE 47 -#define GAME_STAT_RODE_CABLE_CAR 48 -#define GAME_STAT_ENTERED_HOT_SPRINGS 49 -#define NUM_GAME_STATS 50 - -#endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/berry_fix/payload/include/constants/vars.h b/berry_fix/payload/include/constants/vars.h deleted file mode 100644 index 4b40c1d8c..000000000 --- a/berry_fix/payload/include/constants/vars.h +++ /dev/null @@ -1,196 +0,0 @@ -#ifndef GUARD_CONSTANTS_VARS_H -#define GUARD_CONSTANTS_VARS_H - -#define VAR_0x3F20 0x3F20 - -#define VARS_START 0x4000 - -// temporary vars -// The first 0x10 vars are are temporary--they are cleared every time a map is loaded. -#define VAR_TEMP_0 0x4000 -#define VAR_TEMP_1 0x4001 -#define VAR_TEMP_2 0x4002 -#define VAR_TEMP_3 0x4003 -#define VAR_TEMP_4 0x4004 -#define VAR_TEMP_5 0x4005 -#define VAR_TEMP_6 0x4006 -#define VAR_TEMP_7 0x4007 -#define VAR_TEMP_8 0x4008 -#define VAR_TEMP_9 0x4009 -#define VAR_TEMP_A 0x400A -#define VAR_TEMP_B 0x400B -#define VAR_TEMP_C 0x400C -#define VAR_TEMP_D 0x400D -#define VAR_TEMP_E 0x400E -#define VAR_TEMP_F 0x400F - -// object gfx id vars -// These 0x10 vars are used to dynamically control a event object's sprite. -// For example, the rival's sprite id is dynamically set based on the player's gender. -// See VarGetEventObjectGraphicsId(). -#define VAR_OBJ_GFX_ID_0 0x4010 -#define VAR_OBJ_GFX_ID_1 0x4011 -#define VAR_OBJ_GFX_ID_2 0x4012 -#define VAR_OBJ_GFX_ID_3 0x4013 -#define VAR_OBJ_GFX_ID_4 0x4014 -#define VAR_OBJ_GFX_ID_5 0x4015 -#define VAR_OBJ_GFX_ID_6 0x4016 -#define VAR_OBJ_GFX_ID_7 0x4017 -#define VAR_OBJ_GFX_ID_8 0x4018 -#define VAR_OBJ_GFX_ID_9 0x4019 -#define VAR_OBJ_GFX_ID_A 0x401A -#define VAR_OBJ_GFX_ID_B 0x401B -#define VAR_OBJ_GFX_ID_C 0x401C -#define VAR_OBJ_GFX_ID_D 0x401D -#define VAR_OBJ_GFX_ID_E 0x401E -#define VAR_OBJ_GFX_ID_F 0x401F - -// general purpose vars -#define VAR_RECYCLE_GOODS 0x4020 -#define VAR_REPEL_STEP_COUNT 0x4021 -#define VAR_ICE_STEP_COUNT 0x4022 -#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip -#define VAR_MIRAGE_RND_H 0x4024 -#define VAR_MIRAGE_RND_L 0x4025 -#define VAR_SECRET_BASE_MAP 0x4026 -#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027 -#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028 -#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029 -#define VAR_HAPPINESS_STEP_COUNTER 0x402A -#define VAR_POISON_STEP_COUNTER 0x402B -#define VAR_RESET_RTC_ENABLE 0x402C -#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D - -#define VAR_DAYS 0x4040 -#define VAR_FANCLUB_UNKNOWN_1 0x4041 // TODO: document these two fanclub vars -#define VAR_FANCLUB_UNKNOWN_2 0x4042 -#define VAR_DEPT_STORE_FLOOR 0x4043 -#define VAR_TRICK_HOUSE_ROOMS_COMPLETED 0x4044 -#define VAR_LOTTERY_PRIZE 0x4045 -#define VAR_NATIONAL_DEX 0x4046 -#define VAR_SHROOMISH_SIZE_RECORD 0x4047 -#define VAR_ASH_GATHER_COUNT 0x4048 -#define VAR_BIRCH_STATE 0x4049 -#define VAR_CRUISE_STEP_COUNT 0x404A -#define VAR_LOTTERY_RND_L 0x404B -#define VAR_LOTTERY_RND_H 0x404C - -#define VAR_BARBOACH_SIZE_RECORD 0x404F -#define VAR_LITTLEROOT_STATE 0x4050 -#define VAR_ROUTE102_ACCESSIBLE 0x4051 - -#define VAR_LAVARIDGE_RIVAL_STATE 0x4053 -#define VAR_CURRENT_SECRET_BASE 0x4054 - -#define VAR_PETALBURG_STATE 0x4057 -#define VAR_SLATEPORT_STATE 0x4058 - -#define VAR_RUSTBORO_STATE 0x405A - -#define VAR_SOOTOPOLIS_STATE 0x405E - -#define VAR_ROUTE101_STATE 0x4060 - -#define VAR_ROUTE103_STATE 0x4062 - -#define VAR_ROUTE110_STATE 0x4069 - -#define VAR_ROUTE116_STATE 0x406F - -#define VAR_ROUTE118_STATE 0x4071 -#define VAR_ROUTE119_STATE 0x4072 - -#define VAR_ROUTE121_STATE 0x4074 -#define VAR_ROUTE128_STATE 0x407B - -#define VAR_LITTLEROOT_HOUSES_STATE 0x4082 // TODO: needs more investigation - -#define VAR_BIRCH_LAB_STATE 0x4084 -#define VAR_PETALBURG_GYM_STATE 0x4085 -#define VAR_LINK_CONTEST_ROOM_STATE 0x4086 -#define VAR_CABLE_CLUB_STATE 0x4087 -#define VAR_CONTEST_LOCATION 0x4088 -#define VAR_MAP_SCENE_SIX_ISLAND_POKEMON_CENTER_1F 0x4089 // TODO: related to decorations -#define VAR_CONTEST_PRIZE_PICKUP 0x408A - -#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C // TODO: needs more investigation -#define VAR_LITTLEROOT_RIVAL_STATE 0x408D -#define VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE 0x408E -#define VAR_DEVON_CORP_3F_STATE 0x408F -#define VAR_BRINEY_HOUSE_STATE 0x4090 - -#define VAR_LITTLEROOT_INTRO_STATE 0x4092 -#define VAR_MAUVILLE_GYM_STATE 0x4093 -#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094 -#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095 -#define VAR_BRINEY_LOCATION 0x4096 -#define VAR_0x4097 0x4097 // TODO: related to creating new secret base -#define VAR_PETALBURG_WOODS_STATE 0x4098 -#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099 -#define VAR_RUSTURF_TUNNEL_STATE 0x409a -#define VAR_CAVE_OF_ORIGIN_B4F_STATE 0x409B -#define VAR_ELITE_4_STATE 0x409C - -#define VAR_SLATEPORT_HARBOR_STATE 0x40A0 - -#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 -#define VAR_CABLE_CAR_STATION_STATE 0x40A3 -#define VAR_SAFARI_ZONE_STATE 0x40A4 -#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A5 -#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6 -#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7 - -#define VAR_CYCLING_CHALLENGE_STATE 0x40A9 -#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA -#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB -#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC -#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD -#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE -#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF -#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0 -#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1 -#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2 -#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 -#define VAR_PORTHOLE_STATE 0x40B4 -#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation -#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 -#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7 - -#define VAR_MT_PYRE_STATE 0x40B9 -#define VAR_NEW_MAUVILLE_STATE 0x40BA - -#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC -#define VAR_JAGGED_PASS_VOLCANIC_ASH_WEATHER 0x40BD -#define VAR_GLASS_WORKSHOP_STATE 0x40BE -#define VAR_METEOR_FALLS_STATE 0x40BF -#define VAR_GAME_CORNER_STATE 0x40C0 -#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1 -#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2 -#define VAR_VICTORY_ROAD_1F_STATE 0x40C3 -#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4 -#define VAR_WHICH_FOSSIL_REVIVED 0x40C5 -#define VAR_STEVENS_HOUSE_STATE 0x40C6 -#define VAR_OLDALE_STATE 0x40C7 - -// special vars -// They are commonly used as parameters to commands, or return values from commands. -#define VAR_SPECIAL_0 0x8000 -#define VAR_SPECIAL_1 0x8001 -#define VAR_SPECIAL_2 0x8002 -#define VAR_SPECIAL_3 0x8003 -#define VAR_SPECIAL_4 0x8004 -#define VAR_SPECIAL_5 0x8005 -#define VAR_SPECIAL_6 0x8006 -#define VAR_SPECIAL_7 0x8007 -#define VAR_SPECIAL_8 0x8008 -#define VAR_SPECIAL_9 0x8009 -#define VAR_SPECIAL_A 0x800A -#define VAR_SPECIAL_B 0x800B -#define FACING 0x800C -#define RESULT 0x800D -#define ITEM_ID 0x800E -#define LAST_TALKED 0x800F -#define CONTEST_RANK 0x8010 -#define CONTEST_CATEGORY 0x8011 - -#endif // GUARD_CONSTANTS_VARS_H diff --git a/berry_fix/payload/include/flash.h b/berry_fix/payload/include/flash.h deleted file mode 100644 index 7fc35896d..000000000 --- a/berry_fix/payload/include/flash.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef GUARD_FLASH_H -#define GUARD_FLASH_H - -#include "gba/gba.h" - -enum -{ - SECTOR_DAMAGED, - SECTOR_OK, - SECTOR_CHECK, // unused -}; - -enum MsgBoxUpdateMessage -{ - MSGBOX_WILL_NOW_UPDATE = 0, - MSGBOX_HAS_BEEN_UPDATED, - MSGBOX_UNABLE_TO_UPDATE, - MSGBOX_NO_NEED_TO_UPDATE, - MSGBOX_UPDATING -}; - -struct SaveSector -{ - u8 data[0xFF4]; - u16 id; - u16 checksum; - u32 signature; - u32 counter; -}; // size is 0x1000 - -// headless save section? -struct UnkSaveSection -{ - u8 data[0xFF4]; - u32 signature; -}; // size is 0xFF8 - -#define eSaveSection ((struct SaveSector *)0x2020000) - -#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot -#define FILE_SIGNATURE 0x08012025 - -#define SAVE_STATUS_EMPTY 0 -#define SAVE_STATUS_OK 1 -#define SAVE_STATUS_NO_FLASH 4 -#define SAVE_STATUS_ERROR 0xFF - -bool32 flash_maincb_ident_is_valid(void); -bool8 flash_maincb_read_save(u32); -void msg_load_gfx(void); -void msg_display(enum MsgBoxUpdateMessage); -bool32 flash_maincb_check_need_reset_pacifidlog_tm(void); -bool32 flash_maincb_reset_pacifidlog_tm(void); - -#endif //GUARD_FLASH_H diff --git a/berry_fix/payload/include/gba/defines.h b/berry_fix/payload/include/gba/defines.h deleted file mode 100644 index 4037af584..000000000 --- a/berry_fix/payload/include/gba/defines.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef GUARD_GBA_DEFINES_H -#define GUARD_GBA_DEFINES_H - -#include - -#define TRUE 1 -#define FALSE 0 - -#define BSS_DATA __attribute__((section(".bss"))) -#define IWRAM_DATA __attribute__((section("iwram_data"))) -#define EWRAM_DATA __attribute__((section("ewram_data"))) -#define UNUSED __attribute__((unused)) -#define NAKED __attribute__((naked)) - -#define ALIGNED(n) __attribute__((aligned(n))) - -#define SOUND_INFO_PTR (*(struct SoundInfo **)0x3007FF0) -#define INTR_CHECK (*(u16 *)0x3007FF8) -#define INTR_VECTOR (*(void **)0x3007FFC) - -#define EWRAM_START 0x02000000 -#define EWRAM_END (EWRAM_START + 0x40000) -#define IWRAM_START 0x03000000 -#define IWRAM_END (IWRAM_START + 0x8000) - -#define PLTT 0x5000000 -#define PLTT_SIZE 0x400 - -#define BG_PLTT PLTT -#define BG_PLTT_SIZE 0x200 - -#define OBJ_PLTT (PLTT + 0x200) -#define OBJ_PLTT_SIZE 0x200 - -#define VRAM 0x6000000 -#define VRAM_SIZE 0x18000 - -#define BG_VRAM VRAM -#define BG_VRAM_SIZE 0x10000 -#define BG_CHAR_SIZE 0x4000 -#define BG_SCREEN_SIZE 0x800 -#define BG_CHAR_ADDR(n) (void *)(BG_VRAM + (0x4000 * (n))) -#define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (0x800 * (n))) -#define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n))) - -#define BG_TILE_H_FLIP(n) (0x400 + (n)) -#define BG_TILE_V_FLIP(n) (0x800 + (n)) - -// text-mode BG -#define OBJ_VRAM0 (void *)(VRAM + 0x10000) -#define OBJ_VRAM0_SIZE 0x8000 - -// bitmap-mode BG -#define OBJ_VRAM1 (void *)(VRAM + 0x14000) -#define OBJ_VRAM1_SIZE 0x4000 - -#define OAM 0x7000000 -#define OAM_SIZE 0x400 - -#define ROM_HEADER_SIZE 0xC0 - -#define DISPLAY_WIDTH 240 -#define DISPLAY_HEIGHT 160 - -#define TILE_SIZE_4BPP 32 -#define TILE_SIZE_8BPP 64 - -#define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP) -#define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP) - -#define TOTAL_OBJ_TILE_COUNT 1024 - -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) -#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) -#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) - -#define RGB_BLACK RGB(0, 0, 0) -#define RGB_WHITE RGB(31, 31, 31) -#define RGB_RED RGB(31, 0, 0) -#define RGB_GREEN RGB(0, 31, 0) -#define RGB_BLUE RGB(0, 0, 31) -#define RGB_YELLOW RGB(31, 31, 0) -#define RGB_MAGENTA RGB(31, 0, 31) -#define RGB_CYAN RGB(0, 31, 31) -#define RGB_WHITEALPHA (RGB_WHITE | 0x8000) - -#endif // GUARD_GBA_DEFINES_H diff --git a/berry_fix/payload/include/gba/flash_internal.h b/berry_fix/payload/include/gba/flash_internal.h deleted file mode 100644 index 6fbec31f1..000000000 --- a/berry_fix/payload/include/gba/flash_internal.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef GUARD_GBA_FLASH_INTERNAL_H -#define GUARD_GBA_FLASH_INTERNAL_H - -#include "gba/gba.h" - -#define FLASH_BASE ((u8 *)0xE000000) - -#define FLASH_WRITE(addr, data) ((*(vu8 *)(FLASH_BASE + (addr))) = (data)) - -#define FLASH_ROM_SIZE_1M 131072 // 1 megabit ROM - -#define SECTORS_PER_BANK 16 - -struct FlashSector -{ - u32 size; - u8 shift; - u16 count; - u16 top; -}; - -struct FlashType { - u32 romSize; - struct FlashSector sector; - u16 wait[2]; // game pak bus read/write wait - - // TODO: add support for anonymous unions/structs if possible - union { - struct { - u8 makerId; - u8 deviceId; - } separate; - u16 joined; - } ids; -}; - -struct FlashSetupInfo -{ - u16 (*programFlashByte)(u16, u32, u8); - u16 (*programFlashSector)(u16, void *); - u16 (*eraseFlashChip)(void); - u16 (*eraseFlashSector)(u16); - u16 (*WaitForFlashWrite)(u8, u8 *, u8); - const u16 *maxTime; - struct FlashType type; -}; - -extern u16 gFlashNumRemainingBytes; - -extern u16 (*ProgramFlashByte)(u16, u32, u8); -extern u16 (*ProgramFlashSector)(u16, void *); -extern u16 (*EraseFlashChip)(void); -extern u16 (*EraseFlashSector)(u16); -extern u16 (*WaitForFlashWrite)(u8, u8 *, u8); -extern const u16 *gFlashMaxTime; -extern const struct FlashType *gFlash; - -extern u8 (*PollFlashStatus)(u8 *); -extern u8 gFlashTimeoutFlag; - -extern const struct FlashSetupInfo MX29L010; -extern const struct FlashSetupInfo LE26FV10N1TS; -extern const struct FlashSetupInfo DefaultFlash; - -void SwitchFlashBank(u8 bankNum); -u16 ReadFlashId(void); -void StartFlashTimer(u8 phase); -void SetReadFlash1(u16 *dest); -void StopFlashTimer(void); -u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)); -u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src); -void ReadFlash(u16 sectorNum, u32 offset, void *dest, u32 size); -u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, void *dataSrc, u32 n); - -u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData); - -u16 EraseFlashChip_MX(void); -u16 EraseFlashSector_MX(u16 sectorNum); -u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data); -u16 ProgramFlashSector_MX(u16 sectorNum, void *src); - -// agb_flash_1m -u32 IdentifyFlash(void); - -#endif // GUARD_GBA_FLASH_INTERNAL_H diff --git a/berry_fix/payload/include/gba/gba.h b/berry_fix/payload/include/gba/gba.h deleted file mode 100644 index 349344031..000000000 --- a/berry_fix/payload/include/gba/gba.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_GBA_GBA_H -#define GUARD_GBA_GBA_H - -#include "gba/defines.h" -#include "gba/io_reg.h" -#include "gba/types.h" -#include "gba/multiboot.h" -#include "gba/syscall.h" -#include "gba/macro.h" -#include "gba/isagbprint.h" - -#endif // GUARD_GBA_GBA_H diff --git a/berry_fix/payload/include/gba/io_reg.h b/berry_fix/payload/include/gba/io_reg.h deleted file mode 100644 index df79b084d..000000000 --- a/berry_fix/payload/include/gba/io_reg.h +++ /dev/null @@ -1,770 +0,0 @@ -#ifndef GUARD_GBA_IO_REG_H -#define GUARD_GBA_IO_REG_H - -#define REG_BASE 0x4000000 // I/O register base address - -// I/O register offsets - -#define REG_OFFSET_DISPCNT 0x0 -#define REG_OFFSET_DISPSTAT 0x4 -#define REG_OFFSET_VCOUNT 0x6 -#define REG_OFFSET_BG0CNT 0x8 -#define REG_OFFSET_BG1CNT 0xa -#define REG_OFFSET_BG2CNT 0xc -#define REG_OFFSET_BG3CNT 0xe -#define REG_OFFSET_BG0HOFS 0x10 -#define REG_OFFSET_BG0VOFS 0x12 -#define REG_OFFSET_BG1HOFS 0x14 -#define REG_OFFSET_BG1VOFS 0x16 -#define REG_OFFSET_BG2HOFS 0x18 -#define REG_OFFSET_BG2VOFS 0x1a -#define REG_OFFSET_BG3HOFS 0x1c -#define REG_OFFSET_BG3VOFS 0x1e -#define REG_OFFSET_BG2PA 0x20 -#define REG_OFFSET_BG2PB 0x22 -#define REG_OFFSET_BG2PC 0x24 -#define REG_OFFSET_BG2PD 0x26 -#define REG_OFFSET_BG2X 0x28 -#define REG_OFFSET_BG2X_L 0x28 -#define REG_OFFSET_BG2X_H 0x2a -#define REG_OFFSET_BG2Y 0x2c -#define REG_OFFSET_BG2Y_L 0x2c -#define REG_OFFSET_BG2Y_H 0x2e -#define REG_OFFSET_BG3PA 0x30 -#define REG_OFFSET_BG3PB 0x32 -#define REG_OFFSET_BG3PC 0x34 -#define REG_OFFSET_BG3PD 0x36 -#define REG_OFFSET_BG3X 0x38 -#define REG_OFFSET_BG3X_L 0x38 -#define REG_OFFSET_BG3X_H 0x3a -#define REG_OFFSET_BG3Y 0x3c -#define REG_OFFSET_BG3Y_L 0x3c -#define REG_OFFSET_BG3Y_H 0x3e -#define REG_OFFSET_WIN0H 0x40 -#define REG_OFFSET_WIN1H 0x42 -#define REG_OFFSET_WIN0V 0x44 -#define REG_OFFSET_WIN1V 0x46 -#define REG_OFFSET_WININ 0x48 -#define REG_OFFSET_WINOUT 0x4a -#define REG_OFFSET_MOSAIC 0x4c -#define REG_OFFSET_BLDCNT 0x50 -#define REG_OFFSET_BLDALPHA 0x52 -#define REG_OFFSET_BLDY 0x54 - -#define REG_OFFSET_SOUND1CNT_L 0x60 -#define REG_OFFSET_NR10 0x60 -#define REG_OFFSET_SOUND1CNT_H 0x62 -#define REG_OFFSET_NR11 0x62 -#define REG_OFFSET_NR12 0x63 -#define REG_OFFSET_SOUND1CNT_X 0x64 -#define REG_OFFSET_NR13 0x64 -#define REG_OFFSET_NR14 0x65 -#define REG_OFFSET_SOUND2CNT_L 0x68 -#define REG_OFFSET_NR21 0x68 -#define REG_OFFSET_NR22 0x69 -#define REG_OFFSET_SOUND2CNT_H 0x6c -#define REG_OFFSET_NR23 0x6c -#define REG_OFFSET_NR24 0x6d -#define REG_OFFSET_SOUND3CNT_L 0x70 -#define REG_OFFSET_NR30 0x70 -#define REG_OFFSET_SOUND3CNT_H 0x72 -#define REG_OFFSET_NR31 0x72 -#define REG_OFFSET_NR32 0x73 -#define REG_OFFSET_SOUND3CNT_X 0x74 -#define REG_OFFSET_NR33 0x74 -#define REG_OFFSET_NR34 0x75 -#define REG_OFFSET_SOUND4CNT_L 0x78 -#define REG_OFFSET_NR41 0x78 -#define REG_OFFSET_NR42 0x79 -#define REG_OFFSET_SOUND4CNT_H 0x7c -#define REG_OFFSET_NR43 0x7c -#define REG_OFFSET_NR44 0x7d -#define REG_OFFSET_SOUNDCNT_L 0x80 -#define REG_OFFSET_NR50 0x80 -#define REG_OFFSET_NR51 0x81 -#define REG_OFFSET_SOUNDCNT_H 0x82 -#define REG_OFFSET_SOUNDCNT_X 0x84 -#define REG_OFFSET_NR52 0x84 -#define REG_OFFSET_SOUNDBIAS 0x88 -#define REG_OFFSET_SOUNDBIAS_L 0x88 -#define REG_OFFSET_SOUNDBIAS_H 0x89 -#define REG_OFFSET_WAVE_RAM0 0x90 -#define REG_OFFSET_WAVE_RAM1 0x94 -#define REG_OFFSET_WAVE_RAM2 0x98 -#define REG_OFFSET_WAVE_RAM3 0x9c -#define REG_OFFSET_FIFO_A 0xa0 -#define REG_OFFSET_FIFO_B 0xa4 - -#define REG_OFFSET_DMA0 0xb0 -#define REG_OFFSET_DMA0SAD 0xb0 -#define REG_OFFSET_DMA0SAD_L 0xb0 -#define REG_OFFSET_DMA0SAD_H 0xb2 -#define REG_OFFSET_DMA0DAD 0xb4 -#define REG_OFFSET_DMA0DAD_L 0xb4 -#define REG_OFFSET_DMA0DAD_H 0xb6 -#define REG_OFFSET_DMA0CNT 0xb8 -#define REG_OFFSET_DMA0CNT_L 0xb8 -#define REG_OFFSET_DMA0CNT_H 0xba -#define REG_OFFSET_DMA1 0xbc -#define REG_OFFSET_DMA1SAD 0xbc -#define REG_OFFSET_DMA1SAD_L 0xbc -#define REG_OFFSET_DMA1SAD_H 0xbe -#define REG_OFFSET_DMA1DAD 0xc0 -#define REG_OFFSET_DMA1DAD_L 0xc0 -#define REG_OFFSET_DMA1DAD_H 0xc2 -#define REG_OFFSET_DMA1CNT 0xc4 -#define REG_OFFSET_DMA1CNT_L 0xc4 -#define REG_OFFSET_DMA1CNT_H 0xc6 -#define REG_OFFSET_DMA2 0xc8 -#define REG_OFFSET_DMA2SAD 0xc8 -#define REG_OFFSET_DMA2SAD_L 0xc8 -#define REG_OFFSET_DMA2SAD_H 0xca -#define REG_OFFSET_DMA2DAD 0xcc -#define REG_OFFSET_DMA2DAD_L 0xcc -#define REG_OFFSET_DMA2DAD_H 0xce -#define REG_OFFSET_DMA2CNT 0xd0 -#define REG_OFFSET_DMA2CNT_L 0xd0 -#define REG_OFFSET_DMA2CNT_H 0xd2 -#define REG_OFFSET_DMA3 0xd4 -#define REG_OFFSET_DMA3SAD 0xd4 -#define REG_OFFSET_DMA3SAD_L 0xd4 -#define REG_OFFSET_DMA3SAD_H 0xd6 -#define REG_OFFSET_DMA3DAD 0xd8 -#define REG_OFFSET_DMA3DAD_L 0xd8 -#define REG_OFFSET_DMA3DAD_H 0xda -#define REG_OFFSET_DMA3CNT 0xdc -#define REG_OFFSET_DMA3CNT_L 0xdc -#define REG_OFFSET_DMA3CNT_H 0xde - -#define REG_OFFSET_TMCNT 0x100 -#define REG_OFFSET_TMCNT_L 0x100 -#define REG_OFFSET_TMCNT_H 0x102 -#define REG_OFFSET_TM0CNT 0x100 -#define REG_OFFSET_TM0CNT_L 0x100 -#define REG_OFFSET_TM0CNT_H 0x102 -#define REG_OFFSET_TM1CNT 0x104 -#define REG_OFFSET_TM1CNT_L 0x104 -#define REG_OFFSET_TM1CNT_H 0x106 -#define REG_OFFSET_TM2CNT 0x108 -#define REG_OFFSET_TM2CNT_L 0x108 -#define REG_OFFSET_TM2CNT_H 0x10a -#define REG_OFFSET_TM3CNT 0x10c -#define REG_OFFSET_TM3CNT_L 0x10c -#define REG_OFFSET_TM3CNT_H 0x10e - -#define REG_OFFSET_SIOCNT 0x128 -#define REG_OFFSET_SIODATA8 0x12a -#define REG_OFFSET_SIODATA32 0x120 -#define REG_OFFSET_SIOMLT_SEND 0x12a -#define REG_OFFSET_SIOMLT_RECV 0x120 -#define REG_OFFSET_SIOMULTI0 0x120 -#define REG_OFFSET_SIOMULTI1 0x122 -#define REG_OFFSET_SIOMULTI2 0x124 -#define REG_OFFSET_SIOMULTI3 0x126 - -#define REG_OFFSET_KEYINPUT 0x130 -#define REG_OFFSET_KEYCNT 0x132 - -#define REG_OFFSET_RCNT 0x134 - -#define REG_OFFSET_JOYCNT 0x140 -#define REG_OFFSET_JOYSTAT 0x158 -#define REG_OFFSET_JOY_RECV 0x150 -#define REG_OFFSET_JOY_RECV_L 0x150 -#define REG_OFFSET_JOY_RECV_H 0x152 -#define REG_OFFSET_JOY_TRANS 0x154 -#define REG_OFFSET_JOY_TRANS_L 0x154 -#define REG_OFFSET_JOY_TRANS_H 0x156 - -#define REG_OFFSET_IME 0x208 -#define REG_OFFSET_IE 0x200 -#define REG_OFFSET_IF 0x202 - -#define REG_OFFSET_WAITCNT 0x204 - -// I/O register addresses - -#define REG_ADDR_DISPCNT (REG_BASE + REG_OFFSET_DISPCNT) -#define REG_ADDR_DISPSTAT (REG_BASE + REG_OFFSET_DISPSTAT) -#define REG_ADDR_VCOUNT (REG_BASE + REG_OFFSET_VCOUNT) -#define REG_ADDR_BG0CNT (REG_BASE + REG_OFFSET_BG0CNT) -#define REG_ADDR_BG1CNT (REG_BASE + REG_OFFSET_BG1CNT) -#define REG_ADDR_BG2CNT (REG_BASE + REG_OFFSET_BG2CNT) -#define REG_ADDR_BG3CNT (REG_BASE + REG_OFFSET_BG3CNT) -#define REG_ADDR_BG0HOFS (REG_BASE + REG_OFFSET_BG0HOFS) -#define REG_ADDR_BG0VOFS (REG_BASE + REG_OFFSET_BG0VOFS) -#define REG_ADDR_BG1HOFS (REG_BASE + REG_OFFSET_BG1HOFS) -#define REG_ADDR_BG1VOFS (REG_BASE + REG_OFFSET_BG1VOFS) -#define REG_ADDR_BG2HOFS (REG_BASE + REG_OFFSET_BG2HOFS) -#define REG_ADDR_BG2VOFS (REG_BASE + REG_OFFSET_BG2VOFS) -#define REG_ADDR_BG3HOFS (REG_BASE + REG_OFFSET_BG3HOFS) -#define REG_ADDR_BG3VOFS (REG_BASE + REG_OFFSET_BG3VOFS) -#define REG_ADDR_BG2PA (REG_BASE + REG_OFFSET_BG2PA) -#define REG_ADDR_BG2PB (REG_BASE + REG_OFFSET_BG2PB) -#define REG_ADDR_BG2PC (REG_BASE + REG_OFFSET_BG2PC) -#define REG_ADDR_BG2PD (REG_BASE + REG_OFFSET_BG2PD) -#define REG_ADDR_BG2X (REG_BASE + REG_OFFSET_BG2X) -#define REG_ADDR_BG2X_L (REG_BASE + REG_OFFSET_BG2X_L) -#define REG_ADDR_BG2X_H (REG_BASE + REG_OFFSET_BG2X_H) -#define REG_ADDR_BG2Y (REG_BASE + REG_OFFSET_BG2Y) -#define REG_ADDR_BG2Y_L (REG_BASE + REG_OFFSET_BG2Y_L) -#define REG_ADDR_BG2Y_H (REG_BASE + REG_OFFSET_BG2Y_H) -#define REG_ADDR_BG3PA (REG_BASE + REG_OFFSET_BG3PA) -#define REG_ADDR_BG3PB (REG_BASE + REG_OFFSET_BG3PB) -#define REG_ADDR_BG3PC (REG_BASE + REG_OFFSET_BG3PC) -#define REG_ADDR_BG3PD (REG_BASE + REG_OFFSET_BG3PD) -#define REG_ADDR_BG3X (REG_BASE + REG_OFFSET_BG3X) -#define REG_ADDR_BG3X_L (REG_BASE + REG_OFFSET_BG3X_L) -#define REG_ADDR_BG3X_H (REG_BASE + REG_OFFSET_BG3X_H) -#define REG_ADDR_BG3Y (REG_BASE + REG_OFFSET_BG3Y) -#define REG_ADDR_BG3Y_L (REG_BASE + REG_OFFSET_BG3Y_L) -#define REG_ADDR_BG3Y_H (REG_BASE + REG_OFFSET_BG3Y_H) -#define REG_ADDR_WIN0H (REG_BASE + REG_OFFSET_WIN0H) -#define REG_ADDR_WIN1H (REG_BASE + REG_OFFSET_WIN1H) -#define REG_ADDR_WIN0V (REG_BASE + REG_OFFSET_WIN0V) -#define REG_ADDR_WIN1V (REG_BASE + REG_OFFSET_WIN1V) -#define REG_ADDR_WININ (REG_BASE + REG_OFFSET_WININ) -#define REG_ADDR_WINOUT (REG_BASE + REG_OFFSET_WINOUT) -#define REG_ADDR_MOSAIC (REG_BASE + REG_OFFSET_MOSAIC) -#define REG_ADDR_BLDCNT (REG_BASE + REG_OFFSET_BLDCNT) -#define REG_ADDR_BLDALPHA (REG_BASE + REG_OFFSET_BLDALPHA) -#define REG_ADDR_BLDY (REG_BASE + REG_OFFSET_BLDY) - -#define REG_ADDR_SOUND1CNT_L (REG_BASE + REG_OFFSET_SOUND1CNT_L) -#define REG_ADDR_NR10 (REG_BASE + REG_OFFSET_NR10) -#define REG_ADDR_SOUND1CNT_H (REG_BASE + REG_OFFSET_SOUND1CNT_H) -#define REG_ADDR_NR11 (REG_BASE + REG_OFFSET_NR11) -#define REG_ADDR_NR12 (REG_BASE + REG_OFFSET_NR12) -#define REG_ADDR_SOUND1CNT_X (REG_BASE + REG_OFFSET_SOUND1CNT_X) -#define REG_ADDR_NR13 (REG_BASE + REG_OFFSET_NR13) -#define REG_ADDR_NR14 (REG_BASE + REG_OFFSET_NR14) -#define REG_ADDR_SOUND2CNT_L (REG_BASE + REG_OFFSET_SOUND2CNT_L) -#define REG_ADDR_NR21 (REG_BASE + REG_OFFSET_NR21) -#define REG_ADDR_NR22 (REG_BASE + REG_OFFSET_NR22) -#define REG_ADDR_SOUND2CNT_H (REG_BASE + REG_OFFSET_SOUND2CNT_H) -#define REG_ADDR_NR23 (REG_BASE + REG_OFFSET_NR23) -#define REG_ADDR_NR24 (REG_BASE + REG_OFFSET_NR24) -#define REG_ADDR_SOUND3CNT_L (REG_BASE + REG_OFFSET_SOUND3CNT_L) -#define REG_ADDR_NR30 (REG_BASE + REG_OFFSET_NR30) -#define REG_ADDR_SOUND3CNT_H (REG_BASE + REG_OFFSET_SOUND3CNT_H) -#define REG_ADDR_NR31 (REG_BASE + REG_OFFSET_NR31) -#define REG_ADDR_NR32 (REG_BASE + REG_OFFSET_NR32) -#define REG_ADDR_SOUND3CNT_X (REG_BASE + REG_OFFSET_SOUND3CNT_X) -#define REG_ADDR_NR33 (REG_BASE + REG_OFFSET_NR33) -#define REG_ADDR_NR34 (REG_BASE + REG_OFFSET_NR34) -#define REG_ADDR_SOUND4CNT_L (REG_BASE + REG_OFFSET_SOUND4CNT_L) -#define REG_ADDR_NR41 (REG_BASE + REG_OFFSET_NR41) -#define REG_ADDR_NR42 (REG_BASE + REG_OFFSET_NR42) -#define REG_ADDR_SOUND4CNT_H (REG_BASE + REG_OFFSET_SOUND4CNT_H) -#define REG_ADDR_NR43 (REG_BASE + REG_OFFSET_NR43) -#define REG_ADDR_NR44 (REG_BASE + REG_OFFSET_NR44) -#define REG_ADDR_SOUNDCNT_L (REG_BASE + REG_OFFSET_SOUNDCNT_L) -#define REG_ADDR_NR50 (REG_BASE + REG_OFFSET_NR50) -#define REG_ADDR_NR51 (REG_BASE + REG_OFFSET_NR51) -#define REG_ADDR_SOUNDCNT_H (REG_BASE + REG_OFFSET_SOUNDCNT_H) -#define REG_ADDR_SOUNDCNT_X (REG_BASE + REG_OFFSET_SOUNDCNT_X) -#define REG_ADDR_NR52 (REG_BASE + REG_OFFSET_NR52) -#define REG_ADDR_SOUNDBIAS (REG_BASE + REG_OFFSET_SOUNDBIAS) -#define REG_ADDR_SOUNDBIAS_L (REG_BASE + REG_OFFSET_SOUNDBIAS_L) -#define REG_ADDR_SOUNDBIAS_H (REG_BASE + REG_OFFSET_SOUNDBIAS_H) -#define REG_ADDR_WAVE_RAM0 (REG_BASE + REG_OFFSET_WAVE_RAM0) -#define REG_ADDR_WAVE_RAM1 (REG_BASE + REG_OFFSET_WAVE_RAM1) -#define REG_ADDR_WAVE_RAM2 (REG_BASE + REG_OFFSET_WAVE_RAM2) -#define REG_ADDR_WAVE_RAM3 (REG_BASE + REG_OFFSET_WAVE_RAM3) -#define REG_ADDR_FIFO_A (REG_BASE + REG_OFFSET_FIFO_A) -#define REG_ADDR_FIFO_B (REG_BASE + REG_OFFSET_FIFO_B) - -#define REG_ADDR_DMA0 (REG_BASE + REG_OFFSET_DMA0) -#define REG_ADDR_DMA0SAD (REG_BASE + REG_OFFSET_DMA0SAD) -#define REG_ADDR_DMA0DAD (REG_BASE + REG_OFFSET_DMA0DAD) -#define REG_ADDR_DMA0CNT (REG_BASE + REG_OFFSET_DMA0CNT) -#define REG_ADDR_DMA0CNT_L (REG_BASE + REG_OFFSET_DMA0CNT_L) -#define REG_ADDR_DMA0CNT_H (REG_BASE + REG_OFFSET_DMA0CNT_H) -#define REG_ADDR_DMA1 (REG_BASE + REG_OFFSET_DMA1) -#define REG_ADDR_DMA1SAD (REG_BASE + REG_OFFSET_DMA1SAD) -#define REG_ADDR_DMA1DAD (REG_BASE + REG_OFFSET_DMA1DAD) -#define REG_ADDR_DMA1CNT (REG_BASE + REG_OFFSET_DMA1CNT) -#define REG_ADDR_DMA1CNT_L (REG_BASE + REG_OFFSET_DMA1CNT_L) -#define REG_ADDR_DMA1CNT_H (REG_BASE + REG_OFFSET_DMA1CNT_H) -#define REG_ADDR_DMA2 (REG_BASE + REG_OFFSET_DMA2) -#define REG_ADDR_DMA2SAD (REG_BASE + REG_OFFSET_DMA2SAD) -#define REG_ADDR_DMA2DAD (REG_BASE + REG_OFFSET_DMA2DAD) -#define REG_ADDR_DMA2CNT (REG_BASE + REG_OFFSET_DMA2CNT) -#define REG_ADDR_DMA2CNT_L (REG_BASE + REG_OFFSET_DMA2CNT_L) -#define REG_ADDR_DMA2CNT_H (REG_BASE + REG_OFFSET_DMA2CNT_H) -#define REG_ADDR_DMA3 (REG_BASE + REG_OFFSET_DMA3) -#define REG_ADDR_DMA3SAD (REG_BASE + REG_OFFSET_DMA3SAD) -#define REG_ADDR_DMA3DAD (REG_BASE + REG_OFFSET_DMA3DAD) -#define REG_ADDR_DMA3CNT (REG_BASE + REG_OFFSET_DMA3CNT) -#define REG_ADDR_DMA3CNT_L (REG_BASE + REG_OFFSET_DMA3CNT_L) -#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H) - -#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT) -#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L) -#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H) -#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT) -#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L) -#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H) -#define REG_ADDR_TM1CNT (REG_BASE + REG_OFFSET_TM1CNT) -#define REG_ADDR_TM1CNT_L (REG_BASE + REG_OFFSET_TM1CNT_L) -#define REG_ADDR_TM1CNT_H (REG_BASE + REG_OFFSET_TM1CNT_H) -#define REG_ADDR_TM2CNT (REG_BASE + REG_OFFSET_TM2CNT) -#define REG_ADDR_TM2CNT_L (REG_BASE + REG_OFFSET_TM2CNT_L) -#define REG_ADDR_TM2CNT_H (REG_BASE + REG_OFFSET_TM2CNT_H) -#define REG_ADDR_TM3CNT (REG_BASE + REG_OFFSET_TM3CNT) -#define REG_ADDR_TM3CNT_L (REG_BASE + REG_OFFSET_TM3CNT_L) -#define REG_ADDR_TM3CNT_H (REG_BASE + REG_OFFSET_TM3CNT_H) - -#define REG_ADDR_SIOCNT (REG_BASE + REG_OFFSET_SIOCNT) -#define REG_ADDR_SIODATA8 (REG_BASE + REG_OFFSET_SIODATA8) -#define REG_ADDR_SIODATA32 (REG_BASE + REG_OFFSET_SIODATA32) -#define REG_ADDR_SIOMLT_SEND (REG_BASE + REG_OFFSET_SIOMLT_SEND) -#define REG_ADDR_SIOMLT_RECV (REG_BASE + REG_OFFSET_SIOMLT_RECV) -#define REG_ADDR_SIOMULTI0 (REG_BASE + REG_OFFSET_SIOMULTI0) -#define REG_ADDR_SIOMULTI1 (REG_BASE + REG_OFFSET_SIOMULTI1) -#define REG_ADDR_SIOMULTI2 (REG_BASE + REG_OFFSET_SIOMULTI2) -#define REG_ADDR_SIOMULTI3 (REG_BASE + REG_OFFSET_SIOMULTI3) - -#define REG_ADDR_KEYINPUT (REG_BASE + REG_OFFSET_KEYINPUT) -#define REG_ADDR_KEYCNT (REG_BASE + REG_OFFSET_KEYCNT) - -#define REG_ADDR_RCNT (REG_BASE + REG_OFFSET_RCNT) - -#define REG_ADDR_JOYCNT (REG_BASE + REG_OFFSET_JOYCNT) -#define REG_ADDR_JOYSTAT (REG_BASE + REG_OFFSET_JOYSTAT) -#define REG_ADDR_JOY_RECV (REG_BASE + REG_OFFSET_JOY_RECV) -#define REG_ADDR_JOY_RECV_L (REG_BASE + REG_OFFSET_JOY_RECV_L) -#define REG_ADDR_JOY_RECV_H (REG_BASE + REG_OFFSET_JOY_RECV_H) -#define REG_ADDR_JOY_TRANS (REG_BASE + REG_OFFSET_JOY_TRANS) -#define REG_ADDR_JOY_TRANS_L (REG_BASE + REG_OFFSET_JOY_TRANS_L) -#define REG_ADDR_JOY_TRANS_H (REG_BASE + REG_OFFSET_JOY_TRANS_H) - -#define REG_ADDR_IME (REG_BASE + REG_OFFSET_IME) -#define REG_ADDR_IE (REG_BASE + REG_OFFSET_IE) -#define REG_ADDR_IF (REG_BASE + REG_OFFSET_IF) - -#define REG_ADDR_WAITCNT (REG_BASE + REG_OFFSET_WAITCNT) - -// I/O registers - -#define REG_DISPCNT (*(vu16 *)REG_ADDR_DISPCNT) -#define REG_DISPSTAT (*(vu16 *)REG_ADDR_DISPSTAT) -#define REG_VCOUNT (*(vu16 *)REG_ADDR_VCOUNT) -#define REG_BG0CNT (*(vu16 *)REG_ADDR_BG0CNT) -#define REG_BG1CNT (*(vu16 *)REG_ADDR_BG1CNT) -#define REG_BG2CNT (*(vu16 *)REG_ADDR_BG2CNT) -#define REG_BG3CNT (*(vu16 *)REG_ADDR_BG3CNT) -#define REG_BG0HOFS (*(vu16 *)REG_ADDR_BG0HOFS) -#define REG_BG0VOFS (*(vu16 *)REG_ADDR_BG0VOFS) -#define REG_BG1HOFS (*(vu16 *)REG_ADDR_BG1HOFS) -#define REG_BG1VOFS (*(vu16 *)REG_ADDR_BG1VOFS) -#define REG_BG2HOFS (*(vu16 *)REG_ADDR_BG2HOFS) -#define REG_BG2VOFS (*(vu16 *)REG_ADDR_BG2VOFS) -#define REG_BG3HOFS (*(vu16 *)REG_ADDR_BG3HOFS) -#define REG_BG3VOFS (*(vu16 *)REG_ADDR_BG3VOFS) -#define REG_BG2PA (*(vu16 *)REG_ADDR_BG2PA) -#define REG_BG2PB (*(vu16 *)REG_ADDR_BG2PB) -#define REG_BG2PC (*(vu16 *)REG_ADDR_BG2PC) -#define REG_BG2PD (*(vu16 *)REG_ADDR_BG2PD) -#define REG_BG2X (*(vu32 *)REG_ADDR_BG2X) -#define REG_BG2X_L (*(vu16 *)REG_ADDR_BG2X_L) -#define REG_BG2X_H (*(vu16 *)REG_ADDR_BG2X_H) -#define REG_BG2Y (*(vu32 *)REG_ADDR_BG2Y) -#define REG_BG2Y_L (*(vu16 *)REG_ADDR_BG2Y_L) -#define REG_BG2Y_H (*(vu16 *)REG_ADDR_BG2Y_H) -#define REG_BG3PA (*(vu16 *)REG_ADDR_BG3PA) -#define REG_BG3PB (*(vu16 *)REG_ADDR_BG3PB) -#define REG_BG3PC (*(vu16 *)REG_ADDR_BG3PC) -#define REG_BG3PD (*(vu16 *)REG_ADDR_BG3PD) -#define REG_BG3X (*(vu32 *)REG_ADDR_BG3X) -#define REG_BG3X_L (*(vu16 *)REG_ADDR_BG3X_L) -#define REG_BG3X_H (*(vu16 *)REG_ADDR_BG3X_H) -#define REG_BG3Y (*(vu32 *)REG_ADDR_BG3Y) -#define REG_BG3Y_L (*(vu16 *)REG_ADDR_BG3Y_L) -#define REG_BG3Y_H (*(vu16 *)REG_ADDR_BG3Y_H) -#define REG_WIN0H (*(vu16 *)REG_ADDR_WIN0H) -#define REG_WIN1H (*(vu16 *)REG_ADDR_WIN1H) -#define REG_WIN0V (*(vu16 *)REG_ADDR_WIN0V) -#define REG_WIN1V (*(vu16 *)REG_ADDR_WIN1V) -#define REG_WININ (*(vu16 *)REG_ADDR_WININ) -#define REG_WINOUT (*(vu16 *)REG_ADDR_WINOUT) -#define REG_MOSAIC (*(vu16 *)REG_ADDR_MOSAIC) -#define REG_BLDCNT (*(vu16 *)REG_ADDR_BLDCNT) -#define REG_BLDALPHA (*(vu16 *)REG_ADDR_BLDALPHA) -#define REG_BLDY (*(vu16 *)REG_ADDR_BLDY) - -#define REG_SOUND1CNT_L (*(vu16 *)REG_ADDR_SOUND1CNT_L) -#define REG_NR10 (*(vu8 *)REG_ADDR_NR10) -#define REG_SOUND1CNT_H (*(vu16 *)REG_ADDR_SOUND1CNT_H) -#define REG_NR11 (*(vu8 *)REG_ADDR_NR11) -#define REG_NR12 (*(vu8 *)REG_ADDR_NR12) -#define REG_SOUND1CNT_X (*(vu16 *)REG_ADDR_SOUND1CNT_X) -#define REG_NR13 (*(vu8 *)REG_ADDR_NR13) -#define REG_NR14 (*(vu8 *)REG_ADDR_NR14) -#define REG_SOUND2CNT_L (*(vu16 *)REG_ADDR_SOUND2CNT_L) -#define REG_NR21 (*(vu8 *)REG_ADDR_NR21) -#define REG_NR22 (*(vu8 *)REG_ADDR_NR22) -#define REG_SOUND2CNT_H (*(vu16 *)REG_ADDR_SOUND2CNT_H) -#define REG_NR23 (*(vu8 *)REG_ADDR_NR23) -#define REG_NR24 (*(vu8 *)REG_ADDR_NR24) -#define REG_SOUND3CNT_L (*(vu16 *)REG_ADDR_SOUND3CNT_L) -#define REG_NR30 (*(vu8 *)REG_ADDR_NR30) -#define REG_SOUND3CNT_H (*(vu16 *)REG_ADDR_SOUND3CNT_H) -#define REG_NR31 (*(vu8 *)REG_ADDR_NR31) -#define REG_NR32 (*(vu8 *)REG_ADDR_NR32) -#define REG_SOUND3CNT_X (*(vu16 *)REG_ADDR_SOUND3CNT_X) -#define REG_NR33 (*(vu8 *)REG_ADDR_NR33) -#define REG_NR34 (*(vu8 *)REG_ADDR_NR34) -#define REG_SOUND4CNT_L (*(vu16 *)REG_ADDR_SOUND4CNT_L) -#define REG_NR41 (*(vu8 *)REG_ADDR_NR41) -#define REG_NR42 (*(vu8 *)REG_ADDR_NR42) -#define REG_SOUND4CNT_H (*(vu16 *)REG_ADDR_SOUND4CNT_H) -#define REG_NR43 (*(vu8 *)REG_ADDR_NR43) -#define REG_NR44 (*(vu8 *)REG_ADDR_NR44) -#define REG_SOUNDCNT_L (*(vu16 *)REG_ADDR_SOUNDCNT_L) -#define REG_NR50 (*(vu8 *)REG_ADDR_NR50) -#define REG_NR51 (*(vu8 *)REG_ADDR_NR51) -#define REG_SOUNDCNT_H (*(vu16 *)REG_ADDR_SOUNDCNT_H) -#define REG_SOUNDCNT_X (*(vu16 *)REG_ADDR_SOUNDCNT_X) -#define REG_NR52 (*(vu8 *)REG_ADDR_NR52) -#define REG_SOUNDBIAS (*(vu16 *)REG_ADDR_SOUNDBIAS) -#define REG_SOUNDBIAS_L (*(vu8 *)REG_ADDR_SOUNDBIAS_L) -#define REG_SOUNDBIAS_H (*(vu8 *)REG_ADDR_SOUNDBIAS_H) -#define REG_WAVE_RAM0 (*(vu32 *)REG_ADDR_WAVE_RAM0) -#define REG_WAVE_RAM1 (*(vu32 *)REG_ADDR_WAVE_RAM1) -#define REG_WAVE_RAM2 (*(vu32 *)REG_ADDR_WAVE_RAM2) -#define REG_WAVE_RAM3 (*(vu32 *)REG_ADDR_WAVE_RAM3) -#define REG_FIFO_A (*(vu32 *)REG_ADDR_FIFO_A) -#define REG_FIFO_B (*(vu32 *)REG_ADDR_FIFO_B) - -#define REG_DMA0SAD (*(vu32 *)REG_ADDR_DMA0SAD) -#define REG_DMA0DAD (*(vu32 *)REG_ADDR_DMA0DAD) -#define REG_DMA0CNT (*(vu32 *)REG_ADDR_DMA0CNT) -#define REG_DMA0CNT_L (*(vu16 *)REG_ADDR_DMA0CNT_L) -#define REG_DMA0CNT_H (*(vu16 *)REG_ADDR_DMA0CNT_H) - -#define REG_DMA1SAD (*(vu32 *)REG_ADDR_DMA1SAD) -#define REG_DMA1DAD (*(vu32 *)REG_ADDR_DMA1DAD) -#define REG_DMA1CNT (*(vu32 *)REG_ADDR_DMA1CNT) -#define REG_DMA1CNT_L (*(vu16 *)REG_ADDR_DMA1CNT_L) -#define REG_DMA1CNT_H (*(vu16 *)REG_ADDR_DMA1CNT_H) - -#define REG_DMA2SAD (*(vu32 *)REG_ADDR_DMA2SAD) -#define REG_DMA2DAD (*(vu32 *)REG_ADDR_DMA2DAD) -#define REG_DMA2CNT (*(vu32 *)REG_ADDR_DMA2CNT) -#define REG_DMA2CNT_L (*(vu16 *)REG_ADDR_DMA2CNT_L) -#define REG_DMA2CNT_H (*(vu16 *)REG_ADDR_DMA2CNT_H) - -#define REG_DMA3SAD (*(vu32 *)REG_ADDR_DMA3SAD) -#define REG_DMA3DAD (*(vu32 *)REG_ADDR_DMA3DAD) -#define REG_DMA3CNT (*(vu32 *)REG_ADDR_DMA3CNT) -#define REG_DMA3CNT_L (*(vu16 *)REG_ADDR_DMA3CNT_L) -#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H) - -#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) -#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4))) -#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4))) -#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT) -#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L) -#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H) -#define REG_TM1CNT (*(vu32 *)REG_ADDR_TM1CNT) -#define REG_TM1CNT_L (*(vu16 *)REG_ADDR_TM1CNT_L) -#define REG_TM1CNT_H (*(vu16 *)REG_ADDR_TM1CNT_H) -#define REG_TM2CNT (*(vu32 *)REG_ADDR_TM2CNT) -#define REG_TM2CNT_L (*(vu16 *)REG_ADDR_TM2CNT_L) -#define REG_TM2CNT_H (*(vu16 *)REG_ADDR_TM2CNT_H) -#define REG_TM3CNT (*(vu32 *)REG_ADDR_TM3CNT) -#define REG_TM3CNT_L (*(vu16 *)REG_ADDR_TM3CNT_L) -#define REG_TM3CNT_H (*(vu16 *)REG_ADDR_TM3CNT_H) - -#define REG_SIOCNT (*(vu16 *)REG_ADDR_SIOCNT) -#define REG_SIODATA8 (*(vu16 *)REG_ADDR_SIODATA8) -#define REG_SIODATA32 (*(vu32 *)REG_ADDR_SIODATA32) -#define REG_SIOMLT_SEND (*(vu16 *)REG_ADDR_SIOMLT_SEND) -#define REG_SIOMLT_RECV (*(vu64 *)REG_ADDR_SIOMLT_RECV) -#define REG_SIOMULTI0 (*(vu16 *)REG_ADDR_SIOMULTI0) -#define REG_SIOMULTI1 (*(vu16 *)REG_ADDR_SIOMULTI1) -#define REG_SIOMULTI2 (*(vu16 *)REG_ADDR_SIOMULTI2) -#define REG_SIOMULTI3 (*(vu16 *)REG_ADDR_SIOMULTI3) - -#define REG_KEYINPUT (*(vu16 *)REG_ADDR_KEYINPUT) -#define REG_KEYCNT (*(vu16 *)REG_ADDR_KEYCNT) - -#define REG_RCNT (*(vu16 *)REG_ADDR_RCNT) - -#define REG_IME (*(vu16 *)REG_ADDR_IME) -#define REG_IE (*(vu16 *)REG_ADDR_IE) -#define REG_IF (*(vu16 *)REG_ADDR_IF) - -#define REG_WAITCNT (*(vu16 *)REG_ADDR_WAITCNT) - -// I/O register fields - -// DISPCNT -#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text -#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off -#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine -#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color -#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette -#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color -#define DISPCNT_HBLANK_INTERVAL 0x0020 // Allow access to OAM during H-Blank -#define DISPCNT_OBJ_1D_MAP 0x0040 -#define DISPCNT_FORCED_BLANK 0x0080 -#define DISPCNT_BG0_ON 0x0100 -#define DISPCNT_BG1_ON 0x0200 -#define DISPCNT_BG2_ON 0x0400 -#define DISPCNT_BG3_ON 0x0800 -#define DISPCNT_BG_ALL_ON 0x0F00 -#define DISPCNT_OBJ_ON 0x1000 -#define DISPCNT_WIN0_ON 0x2000 -#define DISPCNT_WIN1_ON 0x4000 -#define DISPCNT_OBJWIN_ON 0x8000 - -// DISPSTAT -#define DISPSTAT_VBLANK 0x0001 // in V-Blank -#define DISPSTAT_HBLANK 0x0002 // in H-Blank -#define DISPSTAT_VCOUNT 0x0004 // V-Count match -#define DISPSTAT_VBLANK_INTR 0x0008 // V-Blank interrupt enabled -#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled -#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled - -// BGCNT -#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs. -#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data. -#define BGCNT_MOSAIC 0x0040 -#define BGCNT_16COLOR 0x0000 // 4 bits per pixel -#define BGCNT_256COLOR 0x0080 // 8 bits per pixel -#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map. -#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default. -#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels. -#define BGCNT_TXT512x256 0x4000 -#define BGCNT_TXT256x512 0x8000 -#define BGCNT_TXT512x512 0xC000 -#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels. -#define BGCNT_AFF256x256 0x4000 -#define BGCNT_AFF512x512 0x8000 -#define BGCNT_AFF1024x1024 0xC000 - -// WININ/OUT -#define WININ_WIN0_BG0 (1 << 0) -#define WININ_WIN0_BG1 (1 << 1) -#define WININ_WIN0_BG2 (1 << 2) -#define WININ_WIN0_BG3 (1 << 3) -#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3) -#define WININ_WIN0_OBJ (1 << 4) -#define WININ_WIN0_CLR (1 << 5) -#define WININ_WIN1_BG0 (1 << 8) -#define WININ_WIN1_BG1 (1 << 9) -#define WININ_WIN1_BG2 (1 << 10) -#define WININ_WIN1_BG3 (1 << 11) -#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3) -#define WININ_WIN1_OBJ (1 << 12) -#define WININ_WIN1_CLR (1 << 13) - -#define WINOUT_WIN01_BG0 (1 << 0) -#define WINOUT_WIN01_BG1 (1 << 1) -#define WINOUT_WIN01_BG2 (1 << 2) -#define WINOUT_WIN01_BG3 (1 << 3) -#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3) -#define WINOUT_WIN01_OBJ (1 << 4) -#define WINOUT_WIN01_CLR (1 << 5) -#define WINOUT_WINOBJ_BG0 (1 << 8) -#define WINOUT_WINOBJ_BG1 (1 << 9) -#define WINOUT_WINOBJ_BG2 (1 << 10) -#define WINOUT_WINOBJ_BG3 (1 << 11) -#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3) -#define WINOUT_WINOBJ_OBJ (1 << 12) -#define WINOUT_WINOBJ_CLR (1 << 13) - -#define WIN_RANGE(a, b) (((a) << 8) | (b)) -#define WIN_RANGE2(a, b) ((b) | ((a) << 8)) - -// BLDCNT -// Bits 0-5 select layers for the 1st target -#define BLDCNT_TGT1_BG0 (1 << 0) -#define BLDCNT_TGT1_BG1 (1 << 1) -#define BLDCNT_TGT1_BG2 (1 << 2) -#define BLDCNT_TGT1_BG3 (1 << 3) -#define BLDCNT_TGT1_OBJ (1 << 4) -#define BLDCNT_TGT1_BD (1 << 5) -#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD) -// Bits 6-7 select the special effect -#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect -#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) -#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) -#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) -// Bits 8-13 select layers for the 2nd target -#define BLDCNT_TGT2_BG0 (1 << 8) -#define BLDCNT_TGT2_BG1 (1 << 9) -#define BLDCNT_TGT2_BG2 (1 << 10) -#define BLDCNT_TGT2_BG3 (1 << 11) -#define BLDCNT_TGT2_OBJ (1 << 12) -#define BLDCNT_TGT2_BD (1 << 13) -#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD) - -// BLDALPHA -#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1)) - -// SOUNDCNT_H -#define SOUND_CGB_MIX_QUARTER 0x0000 -#define SOUND_CGB_MIX_HALF 0x0001 -#define SOUND_CGB_MIX_FULL 0x0002 -#define SOUND_A_MIX_HALF 0x0000 -#define SOUND_A_MIX_FULL 0x0004 -#define SOUND_B_MIX_HALF 0x0000 -#define SOUND_B_MIX_FULL 0x0008 -#define SOUND_ALL_MIX_FULL 0x000E -#define SOUND_A_RIGHT_OUTPUT 0x0100 -#define SOUND_A_LEFT_OUTPUT 0x0200 -#define SOUND_A_TIMER_0 0x0000 -#define SOUND_A_TIMER_1 0x0400 -#define SOUND_A_FIFO_RESET 0x0800 -#define SOUND_B_RIGHT_OUTPUT 0x1000 -#define SOUND_B_LEFT_OUTPUT 0x2000 -#define SOUND_B_TIMER_0 0x0000 -#define SOUND_B_TIMER_1 0x4000 -#define SOUND_B_FIFO_RESET 0x8000 - -// SOUNDCNT_X -#define SOUND_1_ON 0x0001 -#define SOUND_2_ON 0x0002 -#define SOUND_3_ON 0x0004 -#define SOUND_4_ON 0x0008 -#define SOUND_MASTER_ENABLE 0x0080 - -// DMA -#define DMA_DEST_INC 0x0000 -#define DMA_DEST_DEC 0x0020 -#define DMA_DEST_FIXED 0x0040 -#define DMA_DEST_RELOAD 0x0060 -#define DMA_SRC_INC 0x0000 -#define DMA_SRC_DEC 0x0080 -#define DMA_SRC_FIXED 0x0100 -#define DMA_REPEAT 0x0200 -#define DMA_16BIT 0x0000 -#define DMA_32BIT 0x0400 -#define DMA_DREQ_ON 0x0800 -#define DMA_START_NOW 0x0000 -#define DMA_START_VBLANK 0x1000 -#define DMA_START_HBLANK 0x2000 -#define DMA_START_SPECIAL 0x3000 -#define DMA_START_MASK 0x3000 -#define DMA_INTR_ENABLE 0x4000 -#define DMA_ENABLE 0x8000 - -// timer -#define TIMER_1CLK 0x00 -#define TIMER_64CLK 0x01 -#define TIMER_256CLK 0x02 -#define TIMER_1024CLK 0x03 -#define TIMER_INTR_ENABLE 0x40 -#define TIMER_ENABLE 0x80 - -// serial -#define SIO_ID 0x0030 // Communication ID - -#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode -#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode -#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode -#define SIO_UART_MODE 0x3000 // UART communication mode - -#define SIO_9600_BPS 0x0000 // baud rate 9600 bps -#define SIO_38400_BPS 0x0001 // 38400 bps -#define SIO_57600_BPS 0x0002 // 57600 bps -#define SIO_115200_BPS 0x0003 // 115200 bps - -#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal -#define SIO_MULTI_SD 0x0008 // SD terminal -#define SIO_MULTI_BUSY 0x0080 - -#define SIO_ERROR 0x0040 // Detect error -#define SIO_START 0x0080 // Start transfer -#define SIO_ENABLE 0x0080 // Enable SIO - -#define SIO_INTR_ENABLE 0x4000 - -#define SIO_MULTI_SI_SHIFT 2 -#define SIO_MULTI_SI_MASK 0x1 -#define SIO_MULTI_DI_SHIFT 3 -#define SIO_MULTI_DI_MASK 0x1 - -// keys -#define A_BUTTON 0x0001 -#define B_BUTTON 0x0002 -#define SELECT_BUTTON 0x0004 -#define START_BUTTON 0x0008 -#define DPAD_RIGHT 0x0010 -#define DPAD_LEFT 0x0020 -#define DPAD_UP 0x0040 -#define DPAD_DOWN 0x0080 -#define R_BUTTON 0x0100 -#define L_BUTTON 0x0200 -#define KEYS_MASK 0x03FF -#define KEY_INTR_ENABLE 0x0400 -#define KEY_OR_INTR 0x0000 -#define KEY_AND_INTR 0x8000 -#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN)) -#define JOY_EXCL_DPAD 0x030F - -// interrupt flags -#define INTR_FLAG_VBLANK (1 << 0) -#define INTR_FLAG_HBLANK (1 << 1) -#define INTR_FLAG_VCOUNT (1 << 2) -#define INTR_FLAG_TIMER0 (1 << 3) -#define INTR_FLAG_TIMER1 (1 << 4) -#define INTR_FLAG_TIMER2 (1 << 5) -#define INTR_FLAG_TIMER3 (1 << 6) -#define INTR_FLAG_SERIAL (1 << 7) -#define INTR_FLAG_DMA0 (1 << 8) -#define INTR_FLAG_DMA1 (1 << 9) -#define INTR_FLAG_DMA2 (1 << 10) -#define INTR_FLAG_DMA3 (1 << 11) -#define INTR_FLAG_KEYPAD (1 << 12) -#define INTR_FLAG_GAMEPAK (1 << 13) - -// WAITCNT -#define WAITCNT_SRAM_4 (0 << 0) -#define WAITCNT_SRAM_3 (1 << 0) -#define WAITCNT_SRAM_2 (2 << 0) -#define WAITCNT_SRAM_8 (3 << 0) -#define WAITCNT_SRAM_MASK (3 << 0) - -#define WAITCNT_WS0_N_4 (0 << 2) -#define WAITCNT_WS0_N_3 (1 << 2) -#define WAITCNT_WS0_N_2 (2 << 2) -#define WAITCNT_WS0_N_8 (3 << 2) -#define WAITCNT_WS0_N_MASK (3 << 2) - -#define WAITCNT_WS0_S_2 (0 << 4) -#define WAITCNT_WS0_S_1 (1 << 4) - -#define WAITCNT_WS1_N_4 (0 << 5) -#define WAITCNT_WS1_N_3 (1 << 5) -#define WAITCNT_WS1_N_2 (2 << 5) -#define WAITCNT_WS1_N_8 (3 << 5) -#define WAITCNT_WS1_N_MASK (3 << 5) - -#define WAITCNT_WS1_S_4 (0 << 7) -#define WAITCNT_WS1_S_1 (1 << 7) - -#define WAITCNT_WS2_N_4 (0 << 8) -#define WAITCNT_WS2_N_3 (1 << 8) -#define WAITCNT_WS2_N_2 (2 << 8) -#define WAITCNT_WS2_N_8 (3 << 8) -#define WAITCNT_WS2_N_MASK (3 << 8) - -#define WAITCNT_WS2_S_8 (0 << 10) -#define WAITCNT_WS2_S_1 (1 << 10) - -#define WAITCNT_PHI_OUT_NONE (0 << 11) -#define WAITCNT_PHI_OUT_4MHZ (1 << 11) -#define WAITCNT_PHI_OUT_8MHZ (2 << 11) -#define WAITCNT_PHI_OUT_16MHZ (3 << 11) -#define WAITCNT_PHI_OUT_MASK (3 << 11) - -#define WAITCNT_PREFETCH_ENABLE (1 << 14) - -#define WAITCNT_AGB (0 << 15) -#define WAITCNT_CGB (1 << 15) - -#endif // GUARD_GBA_IO_REG_H diff --git a/berry_fix/payload/include/gba/isagbprint.h b/berry_fix/payload/include/gba/isagbprint.h deleted file mode 100644 index c5eb456c3..000000000 --- a/berry_fix/payload/include/gba/isagbprint.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef GUARD_GBA_ISAGBPRINT_H -#define GUARD_GBA_ISAGBPRINT_H - -#ifdef NDEBUG -#define AGBPrintInit() -#define AGBPutc(cChr) -#define AGBPrint(pBuf) -#define AGBPrintf(pBuf, ...) -#define AGBPrintFlush1Block() -#define AGBPrintFlush() -#define AGBAssert(pFile, nLine, pExpression, nStopProgram) -#else -void AGBPrintInit(void); -void AGBPutc(const char cChr); -void AGBPrint(const char *pBuf); -void AGBPrintf(const char *pBuf, ...); -void AGBPrintFlush1Block(void); -void AGBPrintFlush(void); -void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); -#endif - -#undef AGB_ASSERT -#ifdef NDEBUG -#define AGB_ASSERT(exp) -#else -#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1); -#endif - -#undef AGB_WARNING -#ifdef NDEBUG -#define AGB_WARNING(exp) -#else -#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0); -#endif - -// for matching purposes - -#ifdef NDEBUG -#define AGB_ASSERT_EX(exp, file, line) -#else -#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1); -#endif - -#ifdef NDEBUG -#define AGB_WARNING_EX(exp, file, line) -#else -#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0); -#endif - -#endif // GUARD_GBA_ISAGBPRINT_H diff --git a/berry_fix/payload/include/gba/m4a_internal.h b/berry_fix/payload/include/gba/m4a_internal.h deleted file mode 100644 index 1aca67585..000000000 --- a/berry_fix/payload/include/gba/m4a_internal.h +++ /dev/null @@ -1,467 +0,0 @@ -#ifndef GUARD_GBA_M4A_INTERNAL_H -#define GUARD_GBA_M4A_INTERNAL_H - -#include "gba/gba.h" - -// ASCII encoding of 'Smsh' in reverse -// This is presumably short for SMASH, the developer of MKS4AGB. -#define ID_NUMBER 0x68736D53 - -#define C_V 0x40 // center value for PAN, BEND, and TUNE - -#define SOUND_MODE_REVERB_VAL 0x0000007F -#define SOUND_MODE_REVERB_SET 0x00000080 -#define SOUND_MODE_MAXCHN 0x00000F00 -#define SOUND_MODE_MAXCHN_SHIFT 8 -#define SOUND_MODE_MASVOL 0x0000F000 -#define SOUND_MODE_MASVOL_SHIFT 12 -#define SOUND_MODE_FREQ_05734 0x00010000 -#define SOUND_MODE_FREQ_07884 0x00020000 -#define SOUND_MODE_FREQ_10512 0x00030000 -#define SOUND_MODE_FREQ_13379 0x00040000 -#define SOUND_MODE_FREQ_15768 0x00050000 -#define SOUND_MODE_FREQ_18157 0x00060000 -#define SOUND_MODE_FREQ_21024 0x00070000 -#define SOUND_MODE_FREQ_26758 0x00080000 -#define SOUND_MODE_FREQ_31536 0x00090000 -#define SOUND_MODE_FREQ_36314 0x000A0000 -#define SOUND_MODE_FREQ_40137 0x000B0000 -#define SOUND_MODE_FREQ_42048 0x000C0000 -#define SOUND_MODE_FREQ 0x000F0000 -#define SOUND_MODE_FREQ_SHIFT 16 -#define SOUND_MODE_DA_BIT_9 0x00800000 -#define SOUND_MODE_DA_BIT_8 0x00900000 -#define SOUND_MODE_DA_BIT_7 0x00A00000 -#define SOUND_MODE_DA_BIT_6 0x00B00000 -#define SOUND_MODE_DA_BIT 0x00B00000 -#define SOUND_MODE_DA_BIT_SHIFT 20 - -struct WaveData -{ - u16 type; - u16 status; - u32 freq; - u32 loopStart; - u32 size; // number of samples - s8 data[1]; // samples -}; - -#define TONEDATA_TYPE_CGB 0x07 -#define TONEDATA_TYPE_FIX 0x08 -#define TONEDATA_TYPE_SPL 0x40 // key split -#define TONEDATA_TYPE_RHY 0x80 // rhythm - -#define TONEDATA_P_S_PAN 0xc0 -#define TONEDATA_P_S_PAM TONEDATA_P_S_PAN - -struct ToneData -{ - u8 type; - u8 key; - u8 length; // sound length (compatible sound) - u8 pan_sweep; // pan or sweep (compatible sound ch. 1) - struct WaveData *wav; - u8 attack; - u8 decay; - u8 sustain; - u8 release; -}; - -struct CgbChannel -{ - u8 sf; - u8 ty; - u8 rightVolume; - u8 leftVolume; - u8 at; - u8 de; - u8 su; - u8 re; - u8 ky; - u8 ev; - u8 eg; - u8 ec; - u8 echoVolume; - u8 echoLength; - u8 d1; - u8 d2; - u8 gt; - u8 mk; - u8 ve; - u8 pr; - u8 rp; - u8 d3[3]; - u8 d5; - u8 sg; - u8 n4; - u8 pan; - u8 panMask; - u8 mo; - u8 le; - u8 sw; - u32 fr; - u32 wp; - u32 cp; - u32 tp; - u32 pp; - u32 np; - u8 d4[8]; -}; - -struct MusicPlayerTrack; - -struct SoundChannel -{ - u8 status; - u8 type; - u8 rightVolume; - u8 leftVolume; - u8 attack; - u8 decay; - u8 sustain; - u8 release; - u8 ky; - u8 ev; - u8 er; - u8 el; - u8 echoVolume; - u8 echoLength; - u8 d1; - u8 d2; - u8 gt; - u8 mk; - u8 ve; - u8 pr; - u8 rp; - u8 d3[3]; - u32 ct; - u32 fw; - u32 freq; - struct WaveData *wav; - u32 cp; - struct MusicPlayerTrack *track; - u32 pp; - u32 np; - u32 d4; - u16 xpi; - u16 xpc; -}; - -#define MAX_DIRECTSOUND_CHANNELS 12 - -#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer - -struct SoundInfo -{ - // This field is normally equal to ID_NUMBER but it is set to other - // values during sensitive operations for locking purposes. - // This field should be volatile but isn't. This could potentially cause - // race conditions. - u32 ident; - - vu8 pcmDmaCounter; - - // Direct Sound - u8 reverb; - u8 maxChans; - u8 masterVolume; - u8 freq; - - u8 mode; - u8 c15; - u8 pcmDmaPeriod; // number of V-blanks per PCM DMA - u8 maxLines; - u8 gap[3]; - s32 pcmSamplesPerVBlank; - s32 pcmFreq; - s32 divFreq; - struct CgbChannel *cgbChans; - u32 func; - u32 intp; - void (*CgbSound)(void); - void (*CgbOscOff)(u8); - u32 (*MidiKeyToCgbFreq)(u8, u8, u8); - u32 MPlayJumpTable; - u32 plynote; - u32 ExtVolPit; - u8 gap2[16]; - struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS]; - s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2]; -}; - -struct SongHeader -{ - u8 trackCount; - u8 blockCount; - u8 priority; - u8 reverb; - struct ToneData *tone; - u8 *part[1]; -}; - -struct PokemonCrySong -{ - u8 trackCount; - u8 blockCount; - u8 priority; - u8 reverb; - struct ToneData *tone; - u8 *part[2]; - u8 gap; - u8 part0; // 0x11 - u8 tuneValue; // 0x12 - u8 gotoCmd; // 0x13 - u32 gotoTarget; // 0x14 - u8 part1; // 0x18 - u8 tuneValue2; // 0x19 - u8 cont[2]; // 0x1A - u8 volCmd; // 0x1C - u8 volumeValue; // 0x1D - u8 unkCmd0D[2]; // 0x1E - u32 unkCmd0DParam; // 0x20 - u8 xreleCmd[2]; // 0x24 - u8 releaseValue; // 0x26 - u8 panCmd; - u8 panValue; // 0x28 - u8 tieCmd; // 0x29 - u8 tieKeyValue; // 0x2A - u8 tieVelocityValue; // 0x2B - u8 unkCmd0C[2]; // 0x2C - u16 unkCmd0CParam; // 0x2E - u8 end[2]; // 0x30 -}; - -#define MPT_FLG_VOLSET 0x01 -#define MPT_FLG_VOLCHG 0x03 -#define MPT_FLG_PITSET 0x04 -#define MPT_FLG_PITCHG 0x0C -#define MPT_FLG_START 0x40 -#define MPT_FLG_EXIST 0x80 - -struct MusicPlayerTrack -{ - u8 flags; - u8 wait; - u8 patternLevel; - u8 repN; - u8 gateTime; - u8 key; - u8 velocity; - u8 runningStatus; - u8 keyM; - u8 pitM; - s8 keyShift; - s8 keyShiftX; - s8 tune; - u8 pitX; - s8 bend; - u8 bendRange; - u8 volMR; - u8 volML; - u8 vol; - u8 volX; - s8 pan; - s8 panX; - s8 modM; - u8 mod; - u8 modT; - u8 lfoSpeed; - u8 lfoSpeedC; - u8 lfoDelay; - u8 lfoDelayC; - u8 priority; - u8 echoVolume; - u8 echoLength; - struct SoundChannel *chan; - struct ToneData tone; - u8 gap[10]; - u16 unk_3A; - u32 unk_3C; - u8 *cmdPtr; - u8 *patternStack[3]; -}; - -#define MUSICPLAYER_STATUS_TRACK 0x0000ffff -#define MUSICPLAYER_STATUS_PAUSE 0x80000000 - -#define MAX_MUSICPLAYER_TRACKS 16 - -#define TEMPORARY_FADE 0x0001 -#define FADE_IN 0x0002 -#define FADE_VOL_MAX 64 -#define FADE_VOL_SHIFT 2 - -struct MusicPlayerInfo -{ - struct SongHeader *songHeader; - u32 status; - u8 trackCount; - u8 priority; - u8 cmd; - u8 unk_B; - u32 clock; - u8 gap[8]; - u8 *memAccArea; - u16 tempoD; - u16 tempoU; - u16 tempoI; - u16 tempoC; - u16 fadeOI; - u16 fadeOC; - u16 fadeOV; - struct MusicPlayerTrack *tracks; - struct ToneData *tone; - u32 ident; - u32 func; - u32 intp; -}; - -struct MusicPlayer -{ - struct MusicPlayerInfo *info; - struct MusicPlayerTrack *track; - u8 unk_8; - u16 unk_A; -}; - -struct Song -{ - struct SongHeader *header; - u16 ms; - u16 me; -}; - -extern const struct MusicPlayer gMPlayTable[]; -extern const struct Song gSongTable[]; - - - -extern u8 gMPlayMemAccArea[]; - -//u8 gPokemonCrySong[52]; -//u8 gPokemonCrySongs[52 * MAX_POKEMON_CRIES]; - -#define MAX_POKEMON_CRIES 2 - -extern struct PokemonCrySong gPokemonCrySong; -extern struct PokemonCrySong gPokemonCrySongs[]; - -extern struct MusicPlayerInfo gPokemonCryMusicPlayers[]; -extern struct MusicPlayerTrack gPokemonCryTracks[]; - -extern char SoundMainRAM[]; - -extern void *gMPlayJumpTable[]; - -typedef void (*XcmdFunc)(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -extern const XcmdFunc gXcmdTable[]; - -extern struct CgbChannel gCgbChans[]; - -extern const u8 gScaleTable[]; -extern const u32 gFreqTable[]; -extern const u16 gPcmSamplesPerVBlankTable[]; - -extern const u8 gCgbScaleTable[]; -extern const s16 gCgbFreqTable[]; -extern const u8 gNoiseTable[]; - -extern const struct PokemonCrySong gPokemonCrySongTemplate; - -extern const struct ToneData voicegroup000; - -extern char gNumMusicPlayers[]; -extern char gMaxLines[]; - -#define NUM_MUSIC_PLAYERS ((u16)gNumMusicPlayers) -#define MAX_LINES ((u32)gMaxLines) - -u32 umul3232H32(u32 multiplier, u32 multiplicand); -void SoundMain(void); -void SoundMainBTM(void); -void TrackStop(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track); -void MPlayMain(void); -void RealClearChain(void *x); - -void MPlayContinue(struct MusicPlayerInfo *mplayInfo); -void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader); -void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); -void FadeOutBody(struct MusicPlayerInfo *mplayInfo); -void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track); -void MPlayFadeOut(struct MusicPlayerInfo *mplayInfo, u16 speed); -void ClearChain(void *x); -void Clear64byte(void *addr); -void SoundInit(struct SoundInfo *soundInfo); -void MPlayExtender(struct CgbChannel *cgbChans); -void m4aSoundMode(u32 mode); -void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track, u8 a3); -void CgbSound(void); -void CgbOscOff(u8); -u32 MidiKeyToCgbFreq(u8, u8, u8); -void DummyFunc(void); -void MPlayJumpTableCopy(void **mplayJumpTable); -void SampleFreqSet(u32 freq); -void m4aSoundVSyncOn(void); -void m4aSoundVSyncOff(void); - -void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); -void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); -void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch); -void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan); -void ClearModM(struct MusicPlayerTrack *track); -void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth); -void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed); - -struct MusicPlayerInfo *SetPokemonCryTone(struct ToneData *tone); -void SetPokemonCryVolume(u8 val); -void SetPokemonCryPanpot(s8 val); -void SetPokemonCryPitch(s16 val); -void SetPokemonCryLength(u16 val); -void SetPokemonCryRelease(u8 val); -void SetPokemonCryProgress(u32 val); -bool32 IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo); -void SetPokemonCryChorus(s8 val); -void SetPokemonCryStereo(u32 val); -void SetPokemonCryPriority(u8 val); - -// sound command handler functions -void ply_fine(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_goto(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_patt(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_pend(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_rept(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_memacc(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_prio(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_tempo(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_keysh(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_voice(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_vol(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_pan(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_bend(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_bendr(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_lfos(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_lfodl(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_mod(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_modt(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *); - -// extended sound command handler functions -void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xwave(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xtype(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xatta(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xdeca(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xsust(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xrele(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xiecv(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xiecl(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xleng(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xswee(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xcmd_0C(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_xcmd_0D(struct MusicPlayerInfo *, struct MusicPlayerTrack *); - -#endif // GUARD_GBA_M4A_INTERNAL_H diff --git a/berry_fix/payload/include/gba/macro.h b/berry_fix/payload/include/gba/macro.h deleted file mode 100644 index 6f9c55f2e..000000000 --- a/berry_fix/payload/include/gba/macro.h +++ /dev/null @@ -1,247 +0,0 @@ -#ifndef GUARD_GBA_MACRO_H -#define GUARD_GBA_MACRO_H - -#define CPU_FILL(value, dest, size, bit) \ -{ \ - vu##bit tmp = (vu##bit)(value); \ - CpuSet((void *)&tmp, \ - dest, \ - CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size)/(bit/8) & 0x1FFFFF)); \ -} - -#define CpuFill16(value, dest, size) CPU_FILL(value, dest, size, 16) -#define CpuFill32(value, dest, size) CPU_FILL(value, dest, size, 32) - -#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size)/(bit/8) & 0x1FFFFF)) - -#define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16) -#define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32) - -#define CpuFastFill(value, dest, size) \ -{ \ - vu32 tmp = (vu32)(value); \ - CpuFastSet((void *)&tmp, \ - dest, \ - CPU_FAST_SET_SRC_FIXED | ((size)/(32/8) & 0x1FFFFF)); \ -} - -#define CpuFastFill16(value, dest, size) CpuFastFill(((value) << 16) | (value), (dest), (size)) - -#define CpuFastFill8(value, dest, size) CpuFastFill(((value) << 24) | ((value) << 16) | ((value) << 8) | (value), (dest), (size)) - -#define CpuFastCopy(src, dest, size) CpuFastSet(src, dest, ((size)/(32/8) & 0x1FFFFF)) - -#define DmaSet(dmaNum, src, dest, control) \ -{ \ - vu32 *dmaRegs = (vu32 *)REG_ADDR_DMA##dmaNum; \ - dmaRegs[0] = (vu32)(src); \ - dmaRegs[1] = (vu32)(dest); \ - dmaRegs[2] = (vu32)(control); \ - dmaRegs[2]; \ -} - -#define DMA_FILL(dmaNum, value, dest, size, bit) \ -{ \ - vu##bit tmp = (vu##bit)(value); \ - DmaSet(dmaNum, \ - &tmp, \ - dest, \ - (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 \ - | ((size)/(bit/8))); \ -} - -#define DmaFill16(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 16) -#define DmaFill32(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 32) - -// Note that the DMA clear macros cause the DMA control value to be calculated -// at runtime rather than compile time. The size is divided by the DMA transfer -// unit size (2 or 4 bytes) and then combined with the DMA control flags using a -// bitwise OR operation. - -#define DMA_CLEAR(dmaNum, dest, size, bit) \ -{ \ - vu##bit *_dest = (vu##bit *)(dest); \ - u32 _size = size; \ - DmaFill##bit(dmaNum, 0, _dest, _size); \ -} - -#define DmaClear16(dmaNum, dest, size) DMA_CLEAR(dmaNum, dest, size, 16) -#define DmaClear32(dmaNum, dest, size) DMA_CLEAR(dmaNum, dest, size, 32) - -#define DMA_COPY(dmaNum, src, dest, size, bit) \ - DmaSet(dmaNum, \ - src, \ - dest, \ - (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 \ - | ((size)/(bit/8))) - -#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) -#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) - -#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \ -{ \ - const void *_src = src; \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - while (1) \ - { \ - DmaCopy##bit(dmaNum, _src, _dest, (block)); \ - _src += (block); \ - _dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaCopy##bit(dmaNum, _src, _dest, _size); \ - break; \ - } \ - } \ -} - -#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) - -#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) - -#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ -{ \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - while (1) \ - { \ - DmaFill##bit(dmaNum, value, _dest, (block)); \ - _dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaFill##bit(dmaNum, value, _dest, _size); \ - break; \ - } \ - } \ -} - -#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16) - -#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32) - -#define DmaClearLarge(dmaNum, dest, size, block, bit) \ -{ \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - while (1) \ - { \ - DmaFill##bit(dmaNum, 0, _dest, (block)); \ - _dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaFill##bit(dmaNum, 0, _dest, _size); \ - break; \ - } \ - } \ -} - -#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16) - -#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32) - -#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ -{ \ - const void *_src = src; \ - void *_dest = (void *)(dest); \ - u32 _size = size; \ - DmaCopy##bit(dmaNum, _src, _dest, _size); \ -} - -#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16) -#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32) - -#define DmaFillDefvars(dmaNum, value, dest, size, bit) \ -{ \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - DmaFill##bit(dmaNum, value, _dest, _size); \ -} - -#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16) -#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32) - -#define DmaClearDefvars(dmaNum, dest, size, bit) \ -{ \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - DmaClear##bit(dmaNum, _dest, _size); \ -} - -#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16) -#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32) - -#define DmaStop(dmaNum) \ -{ \ - vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \ - dmaRegs[5] &= ~(DMA_START_MASK | DMA_DREQ_ON | DMA_REPEAT); \ - dmaRegs[5] &= ~DMA_ENABLE; \ - dmaRegs[5]; \ -} - -#define IntrEnable(flags) \ -{ \ - u16 imeTemp; \ - \ - imeTemp = REG_IME; \ - REG_IME = 0; \ - REG_IE |= flags; \ - REG_IME = imeTemp; \ -} \ -// from pokeemerald -// Maximum amount of data we will transfer in one operation -#define MAX_DMA_BLOCK_SIZE 0x1000 - -#define MAX_DMA_REQUESTS 128 - -#define DMA_REQUEST_COPY32 1 -#define DMA_REQUEST_FILL32 2 -#define DMA_REQUEST_COPY16 3 -#define DMA_REQUEST_FILL16 4 - -#define Dma3CopyLarge_(src, dest, size, bit) \ -{ \ - const void *_src = src; \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - while (1) \ - { \ - if (_size <= MAX_DMA_BLOCK_SIZE) \ - { \ - DmaCopy##bit(3, _src, _dest, _size); \ - break; \ - } \ - DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \ - _src += MAX_DMA_BLOCK_SIZE; \ - _dest += MAX_DMA_BLOCK_SIZE; \ - _size -= MAX_DMA_BLOCK_SIZE; \ - } \ -} - -#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16) -#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32) - -#define Dma3FillLarge_(value, dest, size, bit) \ -{ \ - void *_dest = (void *)dest; \ - u32 _size = size; \ - while (1) \ - { \ - if (_size <= MAX_DMA_BLOCK_SIZE) \ - { \ - DmaFill##bit(3, value, _dest, _size); \ - break; \ - } \ - DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ - _dest += MAX_DMA_BLOCK_SIZE; \ - _size -= MAX_DMA_BLOCK_SIZE; \ - } \ -} - -#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) -#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) - -#endif // GUARD_GBA_MACRO_H diff --git a/berry_fix/payload/include/gba/multiboot.h b/berry_fix/payload/include/gba/multiboot.h deleted file mode 100644 index 14b6594b2..000000000 --- a/berry_fix/payload/include/gba/multiboot.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef GUARD_GBA_MULTIBOOT_H -#define GUARD_GBA_MULTIBOOT_H - -#define MULTIBOOT_NCHILD 3 // Maximum number of slaves -#define MULTIBOOT_HEADER_SIZE 0xc0 // Header size -#define MULTIBOOT_SEND_SIZE_MIN 0x100 // Minimum transmission size -#define MULTIBOOT_SEND_SIZE_MAX 0x40000 // Maximum transmission size - -struct MultiBootParam -{ - u32 system_work[5]; // 00 - u8 handshake_data; // 14 - u8 padding; // 15 - u16 handshake_timeout; // 16 - u8 probe_count; // 18 - u8 client_data[MULTIBOOT_NCHILD]; // 19 - u8 palette_data; // 1c - u8 response_bit; // 1d - u8 client_bit; // 1e - u8 reserved1; // 1f - const u8 *boot_srcp; // 20 - const u8 *boot_endp; // 24 - const u8 *masterp; - u8 *reserved2[MULTIBOOT_NCHILD]; - u32 system_work2[4]; - u8 sendflag; - u8 probe_target_bit; - u8 check_wait; - u8 server_type; -}; - -#define MULTIBOOT_ERROR_04 0x04 -#define MULTIBOOT_ERROR_08 0x08 -#define MULTIBOOT_ERROR_0c 0x0c -#define MULTIBOOT_ERROR_40 0x40 -#define MULTIBOOT_ERROR_44 0x44 -#define MULTIBOOT_ERROR_48 0x48 -#define MULTIBOOT_ERROR_4c 0x4c -#define MULTIBOOT_ERROR_80 0x80 -#define MULTIBOOT_ERROR_84 0x84 -#define MULTIBOOT_ERROR_88 0x88 -#define MULTIBOOT_ERROR_8c 0x8c -#define MULTIBOOT_ERROR_NO_PROBE_TARGET 0x50 -#define MULTIBOOT_ERROR_NO_DLREADY 0x60 -#define MULTIBOOT_ERROR_BOOT_FAILURE 0x70 -#define MULTIBOOT_ERROR_HANDSHAKE_FAILURE 0x71 - -#define MULTIBOOT_CONNECTION_CHECK_WAIT 15 - -#define MULTIBOOT_SERVER_TYPE_NORMAL 0 -#define MULTIBOOT_SERVER_TYPE_QUICK 1 - -#define MULTIBOOT_HANDSHAKE_TIMEOUT 400 - -#endif // GUARD_GBA_MULTIBOOT_H diff --git a/berry_fix/payload/include/gba/syscall.h b/berry_fix/payload/include/gba/syscall.h deleted file mode 100644 index eb1bd4e20..000000000 --- a/berry_fix/payload/include/gba/syscall.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef GUARD_GBA_SYSCALL_H -#define GUARD_GBA_SYSCALL_H - -#include "gba/types.h" - -#define RESET_EWRAM 0x01 -#define RESET_IWRAM 0x02 -#define RESET_PALETTE 0x04 -#define RESET_VRAM 0x08 -#define RESET_OAM 0x10 -#define RESET_SIO_REGS 0x20 -#define RESET_SOUND_REGS 0x40 -#define RESET_REGS 0x80 -#define RESET_ALL 0xFF - -void SoftReset(u32 resetFlags); - -void RegisterRamReset(u32 resetFlags); - -void VBlankIntrWait(void); - -u16 Sqrt(u32 num); - -u16 ArcTan2(s16 x, s16 y); - -#define CPU_SET_SRC_FIXED 0x01000000 -#define CPU_SET_16BIT 0x00000000 -#define CPU_SET_32BIT 0x04000000 - -void CpuSet(const void *src, void *dest, u32 control); - -#define CPU_FAST_SET_SRC_FIXED 0x01000000 - -void CpuFastSet(const void *src, void *dest, u32 control); - -void BgAffineSet(struct BgAffineSrcData *src, struct BgAffineDstData *dest, s32 count); - -void ObjAffineSet(struct ObjAffineSrcData *src, void *dest, s32 count, s32 offset); - -void LZ77UnCompWram(const void *src, void *dest); - -void LZ77UnCompVram(const void *src, void *dest); - -void RLUnCompWram(const void *src, void *dest); - -void RLUnCompVram(const void *src, void *dest); - -int MultiBoot(struct MultiBootParam *mp); - -void SoundBiasReset(void); - -void SoundBiasSet(void); - -u32 Div(u32 divisor, u32 dividend); -u32 Mod(u32 divisor, u32 dividend); - -#endif // GUARD_GBA_SYSCALL_H diff --git a/berry_fix/payload/include/gba/types.h b/berry_fix/payload/include/gba/types.h deleted file mode 100644 index e919abc22..000000000 --- a/berry_fix/payload/include/gba/types.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef GUARD_GBA_TYPES_H -#define GUARD_GBA_TYPES_H - -#include - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef volatile u8 vu8; -typedef volatile u16 vu16; -typedef volatile u32 vu32; -typedef volatile u64 vu64; -typedef volatile s8 vs8; -typedef volatile s16 vs16; -typedef volatile s32 vs32; -typedef volatile s64 vs64; - -typedef float f32; -typedef double f64; - -typedef u8 bool8; -typedef u16 bool16; -typedef u32 bool32; - -struct BgCnt -{ - u16 priority:2; - u16 charBaseBlock:2; - u16 dummy:2; - u16 mosaic:1; - u16 palettes:1; - u16 screenBaseBlock:5; - u16 areaOverflowMode:1; - u16 screenSize:2; -}; -typedef volatile struct BgCnt vBgCnt; - -struct PlttData -{ - u16 r:5; // red - u16 g:5; // green - u16 b:5; // blue - u16 unused_15:1; -}; - -struct OamData -{ - /*0x00*/ u32 y:8; - /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4 - u32 objMode:2; // 0x4, 0x8 -> 0xC - u32 mosaic:1; // 0x10 - u32 bpp:1; // 0x20 - u32 shape:2; // 0x40, 0x80 -> 0xC0 - - /*0x02*/ u32 x:9; - u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode - u32 size:2; - - /*0x04*/ u16 tileNum:10; // 0x3FF - u16 priority:2; // 0x400, 0x800 -> 0xC00 - u16 paletteNum:4; - /*0x06*/ u16 affineParam; -}; - -#define ST_OAM_OBJ_NORMAL 0 -#define ST_OAM_OBJ_BLEND 1 -#define ST_OAM_OBJ_WINDOW 2 - -#define ST_OAM_AFFINE_OFF 0 -#define ST_OAM_AFFINE_NORMAL 1 -#define ST_OAM_AFFINE_ERASE 2 -#define ST_OAM_AFFINE_DOUBLE 3 - -#define ST_OAM_AFFINE_ON_MASK 1 -#define ST_OAM_AFFINE_DOUBLE_MASK 2 - -#define ST_OAM_4BPP 0 -#define ST_OAM_8BPP 1 - -#define ST_OAM_SQUARE 0 -#define ST_OAM_H_RECTANGLE 1 -#define ST_OAM_V_RECTANGLE 2 - -struct BgAffineSrcData -{ - s32 texX; - s32 texY; - s16 scrX; - s16 scrY; - s16 sx; - s16 sy; - u16 alpha; -}; - -struct BgAffineDstData -{ - s16 pa; - s16 pb; - s16 pc; - s16 pd; - s32 dx; - s32 dy; -}; - -struct ObjAffineSrcData -{ - s16 xScale; - s16 yScale; - u16 rotation; -}; - -// Multi-player SIO Control Structure -struct SioMultiCnt -{ - u16 baudRate:2; // baud rate - u16 si:1; // SI terminal - u16 sd:1; // SD terminal - u16 id:2; // ID - u16 error:1; // error flag - u16 enable:1; // SIO enable - u16 unused_11_8:4; - u16 mode:2; // communication mode (should equal 2) - u16 intrEnable:1; // IRQ enable - u16 unused_15:1; - u16 data; // data -}; - -#define ST_SIO_MULTI_MODE 2 // Multi-player communication mode - -// baud rate -#define ST_SIO_9600_BPS 0 // 9600 bps -#define ST_SIO_38400_BPS 1 // 38400 bps -#define ST_SIO_57600_BPS 2 // 57600 bps -#define ST_SIO_115200_BPS 3 // 115200 bps - -typedef void (*MainCallback)(void); -typedef void (*IntrCallback)(void); -typedef void (*IntrFunc)(void); - -#endif // GUARD_GBA_TYPES_H diff --git a/berry_fix/payload/include/global.berry.h b/berry_fix/payload/include/global.berry.h deleted file mode 100644 index 8f185c8f9..000000000 --- a/berry_fix/payload/include/global.berry.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef GUARD_GLOBAL_BERRY_H -#define GUARD_GLOBAL_BERRY_H - -struct Berry -{ - /*0x00*/ u8 name[7]; - /*0x07*/ u8 firmness; - /*0x08*/ u16 size; - /*0x0A*/ u8 maxYield; - /*0x0B*/ u8 minYield; - /*0x0C*/ const u8 *description1; - /*0x10*/ const u8 *description2; - /*0x14*/ u8 stageDuration; - /*0x15*/ u8 spicy; - /*0x16*/ u8 dry; - /*0x17*/ u8 sweet; - /*0x18*/ u8 bitter; - /*0x19*/ u8 sour; - /*0x1A*/ u8 smoothness; -}; - -struct EnigmaBerry -{ - /*0x000*/ struct Berry berry; - /*0x01B*/ u8 pic[(6 * 6) * TILE_SIZE_4BPP]; - /*0x49C*/ u16 palette[16]; - /*0x4BC*/ u8 description1[45]; - /*0x4E9*/ u8 description2[45]; - /*0x516*/ u8 itemEffect[18]; - /*0x528*/ u8 holdEffect; - /*0x529*/ u8 holdEffectParam; - /*0x52C*/ u32 checksum; -}; - -struct BattleEnigmaBerry -{ - /*0x00*/ u8 name[7]; - /*0x07*/ u8 holdEffect; - /*0x08*/ u8 itemEffect[18]; - /*0x1A*/ u8 holdEffectParam; -}; - -struct BerryTree -{ - /*0x00*/ u8 berry; - /*0x01*/ u8 stage:7; - /* - A berry sparkle is a state that a berry tree - can be in after growing within the player's - viewport. - */ - /*0x01*/ bool8 growthSparkle:1; - /*0x02*/ u16 minutesUntilNextStage; - /*0x04*/ u8 berryYield; - /*0x05*/ u8 regrowthCount:4; - /*0x05*/ u8 watered1:1; - /*0x05*/ u8 watered2:1; - /*0x05*/ u8 watered3:1; - /*0x05*/ u8 watered4:1; -}; - -#endif // GUARD_GLOBAL_BERRY_H diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h deleted file mode 100644 index e7150b429..000000000 --- a/berry_fix/payload/include/global.fieldmap.h +++ /dev/null @@ -1,310 +0,0 @@ -#ifndef GUARD_GLOBAL_FIELDMAP_H -#define GUARD_GLOBAL_FIELDMAP_H - -enum -{ - CONNECTION_SOUTH = 1, - CONNECTION_NORTH, - CONNECTION_WEST, - CONNECTION_EAST, - CONNECTION_DIVE, - CONNECTION_EMERGE -}; - -typedef void (*TilesetCB)(void); - -struct Tileset -{ - /*0x00*/ bool8 isCompressed; - /*0x01*/ bool8 isSecondary; - /*0x04*/ void *tiles; - /*0x08*/ void *palettes; - /*0x0c*/ void *metatiles; - /*0x10*/ void *metatileAttributes; - /*0x14*/ TilesetCB callback; -}; - -struct MapLayout -{ - /*0x00*/ s32 width; - /*0x04*/ s32 height; - /*0x08*/ u16 *border; - /*0x0c*/ u16 *map; - /*0x10*/ struct Tileset *primaryTileset; - /*0x14*/ struct Tileset *secondaryTileset; -}; - -struct BackupMapLayout -{ - s32 width; - s32 height; - u16 *map; -}; - -struct EventObjectTemplate -{ - /*0x00*/ u8 localId; - /*0x01*/ u8 graphicsId; - /*0x02*/ u8 unk2; - /*0x04*/ s16 x; - /*0x06*/ s16 y; - /*0x08*/ u8 elevation; - /*0x09*/ u8 movementType; - /*0x0A*/ u8 movementRangeX:4; - u8 movementRangeY:4; - /*0x0C*/ u16 trainerType; - /*0x0E*/ u16 trainerRange_berryTreeId; - /*0x10*/ u8 *script; - /*0x14*/ u16 flagId; -}; - -struct WarpEvent -{ - s16 x, y; - u8 elevation; - u8 warpId; - u8 mapNum; - u8 mapGroup; -}; - -struct CoordEvent -{ - s16 x, y; - u8 elevation; - u16 trigger; - u16 index; - u8 filler_A[0x2]; - u8 *script; -}; - -struct BgEvent -{ - u16 x, y; - u8 elevation; - u8 kind; // The "kind" field determines how to access bgUnion union below. - union { - u8 *script; - struct { - u16 item; - u16 hiddenItemId; - } hiddenItem; - u32 secretBaseId; - } bgUnion; -}; - -struct MapEvents -{ - u8 eventObjectCount; - u8 warpCount; - u8 coordEventCount; - u8 bgEventCount; - - struct EventObjectTemplate *eventObjects; - struct WarpEvent *warps; - struct CoordEvent *coordEvents; - struct BgEvent *bgEvents; -}; - -struct MapConnection -{ - /*0x00*/ u8 direction; - /*0x01*/ u32 offset; - /*0x05*/ u8 mapGroup; - /*0x06*/ u8 mapNum; -}; - -struct MapConnections -{ - s32 count; - struct MapConnection *connections; -}; - -struct MapHeader -{ - /* 0x00 */ struct MapLayout *mapLayout; - /* 0x04 */ struct MapEvents *events; - /* 0x08 */ u8 *mapScripts; - /* 0x0C */ struct MapConnections *connections; - /* 0x10 */ u16 music; - /* 0x12 */ u16 mapLayoutId; - /* 0x14 */ u8 regionMapSectionId; - /* 0x15 */ u8 cave; - /* 0x16 */ u8 weather; - /* 0x17 */ u8 mapType; - /* 0x18 */ u8 filler_18; - /* 0x19 */ u8 escapeRope; - /* 0x1A */ u8 flags; - /* 0x1B */ u8 battleType; -}; - -struct EventObject -{ - /*0x00*/ u32 active:1; - u32 singleMovementActive:1; - u32 triggerGroundEffectsOnMove:1; - u32 triggerGroundEffectsOnStop:1; - u32 disableCoveringGroundEffects:1; // disables ground effects that cover parts of the object's sprite - u32 landingJump:1; - u32 heldMovementActive:1; - u32 heldMovementFinished:1; - /*0x01*/ u32 frozen:1; - u32 facingDirectionLocked:1; - u32 disableAnim:1; // used to disable forced movement sliding animations (like on ice) - u32 enableAnim:1; - u32 inanimate:1; - u32 invisible:1; - u32 offScreen:1; - u32 trackedByCamera:1; // only set for the player object - /*0x02*/ u32 isPlayer:1; - u32 hasReflection:1; - u32 inShortGrass:1; - u32 inShallowFlowingWater:1; - u32 inSandPile:1; - u32 inHotSprings:1; - u32 hasShadow:1; - u32 spriteAnimPausedBackup:1; - /*0x03*/ u32 spriteAffineAnimPausedBackup:1; - u32 disableJumpLandingGroundEffect:1; - u32 fixedPriority:1; - /*0x04*/ u8 spriteId; - /*0x05*/ u8 graphicsId; - /*0x06*/ u8 movementType; - /*0x07*/ u8 trainerType; - /*0x08*/ u8 localId; - /*0x09*/ u8 mapNum; - /*0x0A*/ u8 mapGroup; - /*0x0B*/ u8 currentElevation:4; - u8 previousElevation:4; - /*0x0C*/ struct Coords16 initialCoords; - /*0x10*/ struct Coords16 currentCoords; - /*0x14*/ struct Coords16 previousCoords; - /*0x18*/ u8 facingDirection:4; - /*0x18*/ u8 movementDirection:4; - /*0x19*/ union __attribute__((packed)) { - u8 as_byte; - struct __attribute__((packed)) { - u16 x:4; - u16 y:4; - } as_nybbles; - } range; - /*0x1A*/ u8 fieldEffectSpriteId; - /*0x1B*/ u8 warpArrowSpriteId; - /*0x1C*/ u8 movementActionId; - /*0x1D*/ u8 trainerRange_berryTreeId; - /*0x1E*/ u8 currentMetatileBehavior; - /*0x1F*/ u8 previousMetatileBehavior; - /*0x20*/ u8 previousMovementDirection; - /*0x21*/ u8 directionSequenceIndex; - /*0x22*/ u8 playerCopyableMovement; // used as an index to gCopyPlayerMovementFuncs for the "copy player" movement types - /*size = 0x24*/ -}; - -struct EventObjectGraphicsInfo -{ - /*0x00*/ u16 tileTag; - /*0x02*/ u16 paletteTag; - /*0x04*/ u16 bridgeReflectionPaletteTag; - /*0x06*/ u16 size; - /*0x08*/ s16 width; - /*0x0A*/ s16 height; - /*0x0C*/ u8 paletteSlot:4; - u8 shadowSize:2; - u8 inanimate:1; - u8 disableReflectionPaletteLoad:1; - /*0x0D*/ u8 tracks; - /*0x10*/ const struct OamData *oam; - /*0x14*/ const struct SubspriteTable *subspriteTables; - /*0x18*/ const union AnimCmd *const *anims; - /*0x1C*/ const struct SpriteFrameImage *images; - /*0x20*/ const union AffineAnimCmd *const *affineAnims; -}; - -#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0) -#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1) -#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2) -#define PLAYER_AVATAR_FLAG_SURFING (1 << 3) -#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4) -#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << 5) -#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6) -#define PLAYER_AVATAR_FLAG_DASH (1 << 7) - -enum -{ - ACRO_BIKE_NORMAL, - ACRO_BIKE_TURNING, - ACRO_BIKE_WHEELIE_STANDING, - ACRO_BIKE_BUNNY_HOP, - ACRO_BIKE_WHEELIE_MOVING, - ACRO_BIKE_STATE5, - ACRO_BIKE_STATE6, -}; - -enum -{ - DIR_NONE, - DIR_SOUTH, - DIR_NORTH, - DIR_WEST, - DIR_EAST, - DIR_SOUTHWEST, - DIR_SOUTHEAST, - DIR_NORTHWEST, - DIR_NORTHEAST, -}; - -enum -{ - COLLISION_LEDGE_JUMP = 6 -}; - -// player running states -enum -{ - NOT_MOVING, - TURN_DIRECTION, // not the same as turning! turns your avatar without moving. also known as a turn frame in some circles - MOVING, -}; - -// player tile transition states -enum -{ - T_NOT_MOVING, - T_TILE_TRANSITION, - T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary. -}; - -struct PlayerAvatar /* 0x202E858 */ -{ - /*0x00*/ u8 flags; - /*0x01*/ u8 unk1; // used to be named bike, but its definitely not that. seems to be some transition flags - /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving. - /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning. - /*0x04*/ u8 spriteId; - /*0x05*/ u8 eventObjectId; - /*0x06*/ bool8 preventStep; - /*0x07*/ u8 gender; - /*0x08*/ u8 acroBikeState; // 00 is normal, 01 is turning, 02 is standing wheelie, 03 is hopping wheelie - /*0x09*/ u8 newDirBackup; // during bike movement, the new direction as opposed to player's direction is backed up here. - /*0x0A*/ u8 bikeFrameCounter; // on the mach bike, when this value is 1, the bike is moving but not accelerating yet for 1 tile. on the acro bike, this acts as a timer for acro bike. - /*0x0B*/ u8 bikeSpeed; - // acro bike only - /*0x0C*/ u32 directionHistory; // up/down/left/right history is stored in each nybble, but using the field directions and not the io inputs. - /*0x10*/ u32 abStartSelectHistory; // same as above but for A + B + start + select only - // these two are timer history arrays which [0] is the active timer for acro bike. every element is backed up to the next element upon update. - /*0x14*/ u8 dirTimerHistory[8]; - /*0x1C*/ u8 abStartSelectTimerHistory[8]; -}; - -struct Camera -{ - bool8 active:1; - s32 x; - s32 y; -}; - -extern struct EventObject gMapObjects[]; -extern u8 gSelectedEventObject; -extern struct MapHeader gMapHeader; -extern struct PlayerAvatar gPlayerAvatar; - -#endif // GUARD_GLOBAL_FIELDMAP_H diff --git a/berry_fix/payload/include/global.h b/berry_fix/payload/include/global.h deleted file mode 100644 index 4bea138d6..000000000 --- a/berry_fix/payload/include/global.h +++ /dev/null @@ -1,876 +0,0 @@ -#ifndef GUARD_GLOBAL_H -#define GUARD_GLOBAL_H - -#include "gba/gba.h" - -// global.h from pokemon ruby - -// IDE support -#if defined(__APPLE__) || defined(__CYGWIN__) || defined(__INTELLISENSE__) -// We define these when using certain IDEs to fool preproc -#define _(x) (x) -#define __(x) (x) -#define INCBIN(...) {0} -#define INCBIN_U8 INCBIN -#define INCBIN_U16 INCBIN -#define INCBIN_U32 INCBIN -#define INCBIN_S8 INCBIN -#define INCBIN_S16 INCBIN -#define INCBIN_S32 INCBIN -#endif // IDE support - -// Prevent cross-jump optimization. -#define BLOCK_CROSS_JUMP asm(""); - -// to help in decompiling -#define asm_comment(x) asm volatile("@ -- " x " -- ") - -#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") - -#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) - - -#define POKEMON_SLOTS_NUMBER 412 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 - -#define min(a, b) ((a) < (b) ? (a) : (b)) -#define max(a, b) ((a) >= (b) ? (a) : (b)) - -// why does GF hate 2d arrays -#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y)) - -// dim access enums -enum -{ - B_8 = 1, - B_16 = 2, - B_32 = 4 -}; - -// There are many quirks in the source code which have overarching behavioral differences from -// a number of other files. For example, diploma.c seems to declare rodata before each use while -// other files declare out of order and must be at the beginning. There are also a number of -// macros which differ from one file to the next due to the method of obtaining the result, such -// as these below. Because of this, there is a theory (Two Team Theory) that states that these -// programming projects had more than 1 "programming team" which utilized different macros for -// each of the files that were worked on. -#define T1_READ_8(ptr) ((ptr)[0]) -#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) -#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24)) -#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr) - -// T2_READ_8 is a duplicate to remain consistent with each group. -#define T2_READ_8(ptr) ((ptr)[0]) -#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) -#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) -#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) - -// Credits to Made (dolphin emoji) -#define S16TOPOSFLOAT(val) \ -({ \ - s16 v = (val); \ - float f = (float)v; \ - if(v < 0) f += 65536.0f; \ - f; \ -}) - -enum -{ - VERSION_SAPPHIRE = 1, - VERSION_RUBY = 2, - VERSION_EMERALD = 3, -}; - -enum LanguageId -{ - LANGUAGE_JAPANESE = 1, - LANGUAGE_ENGLISH = 2, - LANGUAGE_GERMAN = 5, -}; - -// capacities of various saveblock objects -#define DAYCARE_MON_COUNT 2 -#define POKEBLOCKS_COUNT 40 -#define PARTY_SIZE 6 -#define EVENT_OBJECTS_COUNT 16 -#define BERRY_TREES_COUNT 128 -#define FLAGS_COUNT 288 -#define VARS_COUNT 256 -#define MAIL_COUNT 16 -#define SECRET_BASES_COUNT 20 -#define TV_SHOWS_COUNT 25 -#define POKE_NEWS_COUNT 16 -#define PC_ITEMS_COUNT 50 -#define BAG_ITEMS_COUNT 20 -#define BAG_KEYITEMS_COUNT 20 -#define BAG_POKEBALLS_COUNT 16 -#define BAG_TMHM_COUNT 64 -#define BAG_BERRIES_COUNT 46 - -enum -{ - MALE, - FEMALE -}; - -enum -{ - OPTIONS_BUTTON_MODE_NORMAL, - OPTIONS_BUTTON_MODE_LR, - OPTIONS_BUTTON_MODE_L_EQUALS_A -}; - -enum -{ - OPTIONS_TEXT_SPEED_SLOW, - OPTIONS_TEXT_SPEED_MID, - OPTIONS_TEXT_SPEED_FAST -}; - -enum -{ - OPTIONS_SOUND_MONO, - OPTIONS_SOUND_STEREO -}; - -enum -{ - OPTIONS_BATTLE_STYLE_SHIFT, - OPTIONS_BATTLE_STYLE_SET -}; - -enum -{ - BAG_ITEMS = 1, - BAG_POKEBALLS, - BAG_TMsHMs, - BAG_BERRIES, - BAG_KEYITEMS -}; - -struct Coords16 -{ - s16 x; - s16 y; -}; - -struct UCoords16 -{ - u16 x; - u16 y; -}; - -struct SecretBaseRecord -{ - /*0x1A08*/ u8 secretBaseId; - /*0x1A09*/ u8 sbr_field_1_0:4; - /*0x1A09*/ u8 gender:1; - /*0x1A09*/ u8 sbr_field_1_5:1; - /*0x1A09*/ u8 sbr_field_1_6:2; - /*0x1A0A*/ u8 playerName[OT_NAME_LENGTH]; - /*0x1A11*/ u8 trainerId[4]; // byte 0 is used for determining trainer class - /*0x1A16*/ u16 sbr_field_e; - /*0x1A18*/ u8 sbr_field_10; - /*0x1A19*/ u8 sbr_field_11; - /*0x1A1A*/ u8 decorations[16]; - /*0x1A2A*/ u8 decorationPos[16]; - /*0x1A3C*/ u32 partyPersonality[6]; - /*0x1A54*/ u16 partyMoves[6 * 4]; - /*0x1A84*/ u16 partySpecies[6]; - /*0x1A90*/ u16 partyHeldItems[6]; - /*0x1A9C*/ u8 partyLevels[6]; - /*0x1AA2*/ u8 partyEVs[6]; -}; - -#include "constants/game_stat.h" -#include "global.fieldmap.h" -#include "global.berry.h" -#include "pokemon.h" - -struct WarpData -{ - s8 mapGroup; - s8 mapNum; - s8 warpId; - s16 x, y; -}; - -struct ItemSlot -{ - u16 itemId; - u16 quantity; -}; - -struct Pokeblock -{ - u8 color; - u8 spicy; - u8 dry; - u8 sweet; - u8 bitter; - u8 sour; - u8 feel; -}; - -struct Roamer -{ - /*0x00*/ u32 ivs; - /*0x04*/ u32 personality; - /*0x08*/ u16 species; - /*0x0A*/ u16 hp; - /*0x0C*/ u8 level; - /*0x0D*/ u8 status; - /*0x0E*/ u8 cool; - /*0x0F*/ u8 beauty; - /*0x10*/ u8 cute; - /*0x11*/ u8 smart; - /*0x12*/ u8 tough; - /*0x13*/ bool8 active; - /*0x14*/ u8 filler[0x8]; -}; - -struct RamScriptData -{ - u8 magic; - u8 mapGroup; - u8 mapNum; - u8 objectId; - u8 script[995]; -}; - -struct RamScript -{ - u32 checksum; - struct RamScriptData data; -}; - -struct EasyChatPair -{ - u16 unk0_0:7; - u16 unk0_7:7; - u16 unk1_6:1; - u16 unk2; - u16 words[2]; -}; /*size = 0x8*/ - -struct TVShowCommon -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 pad02[20]; - /*0x16*/ u16 var16[3]; - /*0x1C*/ u8 srcTrainerId3Lo; - /*0x1D*/ u8 srcTrainerId3Hi; - /*0x1E*/ u8 srcTrainerId2Lo; - /*0x1F*/ u8 srcTrainerId2Hi; - /*0x20*/ u8 srcTrainerIdLo; - /*0x21*/ u8 srcTrainerIdHi; - /*0x22*/ u8 trainerIdLo; - /*0x23*/ u8 trainerIdHi; -}; - -struct TVShowFanClubLetter -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 species; - /*0x04*/ u16 pad04[6]; - /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 language; -}; - -struct TVShowRecentHappenings -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04[6]; - /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 language; - /*0x19*/ u8 pad19[10]; -}; - -struct TVShowFanclubOpinions -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 var02; - /*0x04*/ u8 var04A:4; - /*0x04*/ u8 var04B:4; - /*0x05*/ u8 playerName[8]; - /*0x0D*/ u8 language; - /*0x0E*/ u8 var0E; - /*0x0F*/ u8 var0F; - /*0x10*/ u8 var10[8]; - /*0x18*/ u16 var18[2]; - /*0x1C*/ u16 var1C[4]; -}; - -struct TVShowUnknownType04 -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 pad02[4]; - /*0x06*/ u16 var06; -}; - -struct TVShowNameRaterShow -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 species; - /*0x04*/ u8 pokemonName[11]; - /*0x0F*/ u8 trainerName[11]; - /*0x1A*/ u8 random; - /*0x1B*/ u8 random2; - /*0x1C*/ u16 var1C; - /*0x1E*/ u8 language; - /*0x1F*/ u8 pokemonNameLanguage; -}; - -struct TVShowBravoTrainerPokemonProfiles -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 species; - /*0x04*/ u16 var04[2]; - /*0x08*/ u8 pokemonNickname[11]; - /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 contestResult:2; - /*0x13*/ u8 var13_7:1; - /*0x14*/ u16 var14; - /*0x16*/ u8 playerName[8]; - /*0x1E*/ u8 language; - /*0x1F*/ u8 var1f; -}; - -struct TVShowBravoTrainerBattleTowerSpotlight -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 trainerName[8]; - /*0x0A*/ u16 species; - /*0x0C*/ u8 enemyTrainerName[8]; - /*0x14*/ u16 defeatedSpecies; - /*0x16*/ u16 var16; - /*0x18*/ u16 var18[1]; - /*0x1A*/ u8 btLevel; - /*0x1B*/ u8 var1b; - /*0x1C*/ u8 var1c; - /*0x1D*/ u8 language; -}; - -struct TVShowPokemonToday -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 language; - /*0x03*/ u8 language2; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 ball; - /*0x10*/ u16 species; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowSmartShopper -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 priceReduced; - /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; - /*0x06*/ u16 itemIds[3]; - /*0x0C*/ u16 itemAmounts[3]; - /*0x12*/ u8 shopLocation; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonTodayFailed -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; - /*0x10*/ u8 var10; - /*0x11*/ u8 var11; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowPokemonAngler -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 var04; - /*0x06*/ u8 language; - u8 pad07[12]; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowWorldOfMasters -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u16 var02; - /*0x04*/ u16 var04; - /*0x06*/ u16 var06; - /*0x08*/ u16 var08; - /*0x0a*/ u8 var0a; - /*0x0b*/ u8 language; - u8 pad0c[7]; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowMassOutbreak -{ - /*0x00*/ u8 kind; - /*0x01*/ bool8 active; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 moves[4]; - /*0x0C*/ u16 species; - /*0x0E*/ u16 var0E; - /*0x10*/ u8 locationMapNum; - /*0x11*/ u8 locationMapGroup; - /*0x12*/ u8 var12; - /*0x13*/ u8 probability; - /*0x14*/ u8 level; - /*0x15*/ u8 var15; - /*0x16*/ u16 daysLeft; - /*0x18*/ u8 language; - u8 pad19[11]; -}; - -typedef union TVShow -{ - struct TVShowCommon common; - struct TVShowFanClubLetter fanclubLetter; - struct TVShowRecentHappenings recentHappenings; - struct TVShowFanclubOpinions fanclubOpinions; - struct TVShowUnknownType04 unkShow04; - struct TVShowNameRaterShow nameRaterShow; - struct TVShowBravoTrainerPokemonProfiles bravoTrainer; - struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; - struct TVShowPokemonToday pokemonToday; - struct TVShowSmartShopper smartshopperShow; - struct TVShowPokemonTodayFailed pokemonTodayFailed; - struct TVShowPokemonAngler pokemonAngler; - struct TVShowWorldOfMasters worldOfMasters; - struct TVShowMassOutbreak massOutbreak; -} TVShow; - -struct MailStruct -{ - /*0x00*/ u16 words[9]; - /*0x12*/ u8 playerName[8]; - /*0x1A*/ u8 trainerId[4]; - /*0x1E*/ u16 species; - /*0x20*/ u16 itemId; -}; - - -// Mauville Pokemon Center men - -struct MauvilleManCommon -{ - u8 id; -}; - -struct MauvilleManBard -{ - /*0x00*/ u8 id; - /*0x02*/ u16 songLyrics[6]; - /*0x0E*/ u16 temporaryLyrics[6]; - /*0x1A*/ u8 playerName[8]; - /*0x22*/ u8 filler_2DB6[0x3]; - /*0x25*/ u8 playerTrainerId[4]; - /*0x29*/ bool8 hasChangedSong; -}; /*size = 0x2C*/ - -struct MauvilleManHipster -{ - u8 id; - bool8 alreadySpoken; -}; - -struct MauvilleManTrader -{ - u8 id; - u8 unk1[4]; - u8 unk5[4][11]; - bool8 alreadyTraded; -}; - -struct MauvilleManStoryteller -{ - u8 id; - bool8 alreadyRecorded; - u8 filler2[2]; - u8 gameStatIDs[4]; - u8 trainerNames[4][7]; - u8 statValues[4][4]; -}; - -struct MauvilleManGiddy -{ - /*0x00*/ u8 id; - /*0x01*/ u8 taleCounter; - /*0x02*/ u8 questionNum; - /*0x04*/ u16 randomWords[10]; - /*0x18*/ u8 questionList[12]; -}; /*size = 0x2C*/ - - -union MauvilleMan -{ - struct MauvilleManCommon common; - struct MauvilleManBard bard; - struct MauvilleManHipster hipster; - struct MauvilleManTrader trader; - struct MauvilleManStoryteller storyteller; - struct MauvilleManGiddy giddy; - u8 filler[0x40]; // needed to pad out the struct -}; - -struct PokeNews -{ - u8 kind; - u8 state; - u16 days; -}; - -struct GabbyAndTyData -{ - /*2b10*/ u16 mon1; - /*2b12*/ u16 mon2; - /*2b14*/ u16 lastMove; - /*2b16*/ u16 quote; - /*2b18*/ u8 mapnum; - /*2b19*/ u8 battleNum; - /*2b1a*/ u8 valA_0:1; - /*2b1a*/ u8 valA_1:1; - /*2b1a*/ u8 valA_2:1; - /*2b1a*/ u8 valA_3:1; - /*2b1a*/ u8 valA_4:1; - /*2b1a*/ u8 valA_5:3; - /*2b1b*/ u8 valB_0:1; - /*2b1b*/ u8 valB_1:1; - /*2b1b*/ u8 valB_2:1; - /*2b1b*/ u8 valB_3:1; - /*2b1b*/ u8 valB_4:1; - /*2b1b*/ u8 valB_5:3; -}; - -struct DayCareMail -{ - /*0x00*/ struct MailStruct message; - /*0x24*/ u8 names[19]; -}; - -struct DayCareStepCountersEtc { - u32 steps[DAYCARE_MON_COUNT]; - u16 pendingEggPersonality; - u8 eggCycleStepsRemaining; -}; - -struct RecordMixingDayCareMail -{ - struct DayCareMail mail[DAYCARE_MON_COUNT]; - u32 numDaycareMons; - u16 itemsHeld[DAYCARE_MON_COUNT]; // marks whether or not each daycare mon is currently holding an item. -}; - -struct DayCareMisc -{ - struct DayCareMail mail[DAYCARE_MON_COUNT]; - struct DayCareStepCountersEtc countersEtc; -}; - -struct DayCare { - struct BoxPokemon mons[DAYCARE_MON_COUNT]; - struct DayCareMisc misc; -}; - -struct LinkBattleRecord -{ - u8 name[8]; - u16 trainerId; - u16 wins; - u16 losses; - u16 draws; -}; - -struct RecordMixingGiftData -{ - u8 unk0; - u8 quantity; - u16 itemId; - u8 filler4[8]; -}; - -struct RecordMixingGift -{ - int checksum; - struct RecordMixingGiftData data; -}; - -struct ContestWinner -{ - /*0x00*/ u32 personality; // personality - /*0x04*/ u32 otId; // otId - /*0x08*/ u16 species; // species - /*0x0A*/ u8 contestCategory; - /*0x0B*/ u8 nickname[11]; - /*0x16*/ u8 trainerName[8]; -}; - -// there should be enough flags for all 412 slots -// each slot takes up 8 flags -// if the value is not divisible by 8, we need to account for the reminder as well -#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) - -struct SaveBlock1 /* 0x02025734 */ -{ - /*0x00*/ struct Coords16 pos; - /*0x04*/ struct WarpData location; - /*0x0C*/ struct WarpData warp1; - /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData lastHealLocation; - /*0x24*/ struct WarpData warp4; - /*0x2C*/ u16 savedMusic; - /*0x2E*/ u8 weather; - /*0x2F*/ u8 weatherCycleStage; - /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest - /*0x32*/ u16 mapLayoutId; - /*0x34*/ u16 mapView[0x100]; - /*0x234*/ u8 playerPartyCount; - /*0x238*/ struct Pokemon playerParty[6]; - /*0x490*/ u32 money; - /*0x494*/ u16 coins; - /*0x496*/ u16 registeredItem; // registered for use with SELECT button - /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT]; - /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT]; - /*0x5B0*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; - /*0x600*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT]; - /*0x640*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; - /*0x740*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; - /*0x7F8*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; - /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO]; - /*0x96C*/ u16 berryBlenderRecords[3]; - /*0x972*/ u8 filler_972[0x6]; - /*0x978*/ u16 trainerRematchStepCounter; - /*0x97A*/ u8 trainerRematches[100]; - /*0x9E0*/ struct EventObject eventObjects[EVENT_OBJECTS_COUNT]; - /*0xC20*/ struct EventObjectTemplate eventObjectTemplates[64]; - /*0x1220*/ u8 flags[FLAGS_COUNT]; - /*0x1340*/ u16 vars[VARS_COUNT]; - /*0x1540*/ u32 gameStats[NUM_GAME_STATS]; - /*0x1608*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; - /*0x1A08*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT]; - /*0x2688*/ u8 playerRoomDecor[12]; - /*0x2694*/ u8 playerRoomDecorPos[12]; - /*0x26A0*/ u8 decorDesk[10]; - /*0x26AA*/ u8 decorChair[10]; - /*0x26B4*/ u8 decorPlant[10]; - /*0x26BE*/ u8 decorOrnament[30]; - /*0x26DC*/ u8 decorMat[30]; - /*0x26FA*/ u8 decorPoster[10]; - /*0x2704*/ u8 decorDoll[40]; - /*0x272C*/ u8 decorCushion[10]; - /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ TVShow tvShows[TV_SHOWS_COUNT]; - /*0x2ABC*/ struct PokeNews pokeNews[POKE_NEWS_COUNT]; - /*0x2AFC*/ u16 outbreakPokemonSpecies; - /*0x2AFE*/ u8 outbreakLocationMapNum; - /*0x2AFF*/ u8 outbreakLocationMapGroup; - /*0x2B00*/ u8 outbreakPokemonLevel; - /*0x2B01*/ u8 outbreakUnk1; - /*0x2B02*/ u16 outbreakUnk2; - /*0x2B04*/ u16 outbreakPokemonMoves[4]; - /*0x2B0C*/ u8 outbreakUnk4; - /*0x2B0D*/ u8 outbreakPokemonProbability; - /*0x2B0E*/ u16 outbreakUnk5; - /*0x2B10*/ struct GabbyAndTyData gabbyAndTyData; - /*0x2B1C*/ struct { - /*0x2B1C*/ u16 unk2B1C[6]; - /*0x2B28*/ u16 unk2B28[6]; - /*0x2B34*/ u16 unk2B34[6]; - /*0x2B40*/ u16 unk2B40[6]; - } easyChats; - /*0x2B4C*/ struct MailStruct mail[MAIL_COUNT]; - /*0x2D8C*/ u8 unk2D8C[4]; // What is this? Apparently it's supposed to be 64 bytes in size. - /*0x2D90*/ u8 filler_2D90[0x4]; - /*0x2D94*/ union MauvilleMan mauvilleMan; - /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2DFC*/ struct ContestWinner contestWinners[8]; - /*0x2EFC*/ struct ContestWinner museumPortraits[5]; - /*0x2F9C*/ struct DayCare daycare; - /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; - struct { - /*0x3108*/ u8 unknown1[8]; - /*0x3110*/ u8 giftRibbons[11]; - /*0x311B*/ u8 unknown2[8]; - /*0x3123*/ u32 currentPokeCoupons; - /*0x3127*/ u32 totalEarnedPokeCoupons; - /*0x312B*/ u8 unknown3[6]; - /*0x3131*/ u8 receivedWishmakerJirachi; - /*0x3132*/ u8 unknown4[18]; - } __attribute__((packed)) externalReservedData; - /*0x3144*/ struct Roamer roamer; - /*0x3160*/ struct EnigmaBerry enigmaBerry; - /*0x3690*/ struct RamScript ramScript; - /*0x3A7C*/ struct RecordMixingGift recordMixingGift; - /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO]; -}; - -extern struct SaveBlock1 gSaveBlock1; - -struct Time -{ - /*0x00*/ s16 days; - /*0x02*/ s8 hours; - /*0x03*/ s8 minutes; - /*0x04*/ s8 seconds; -}; - -struct Pokedex -{ - /*0x00*/ u8 order; - /*0x01*/ u8 unknown1; - /*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode - /*0x03*/ u8 unknown2; - /*0x04*/ u32 unownPersonality; // set when you first see Unown - /*0x08*/ u32 spindaPersonality; // set when you first see Spinda - /*0x0C*/ u32 unknown3; - /*0x10*/ u8 owned[DEX_FLAGS_NO]; - /*0x44*/ u8 seen[DEX_FLAGS_NO]; -}; - -struct BattleTowerTrainer -{ - /*0x00*/ u8 trainerClass; - /*0x01*/ u8 name[8]; - /*0x09*/ u8 teamFlags; - u8 filler0A[2]; - /*0x0C*/ u16 greeting[6]; -}; - -struct BattleTowerRecord // record mixing -{ - /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 - /*0x01*/ u8 trainerClass; - /*0x02*/ u16 winStreak; - /*0x04*/ u8 name[8]; - /*0x0C*/ u8 trainerId[4]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ struct BattleTowerPokemon party[3]; - /*0xA0*/ u32 checksum; -}; - -struct BattleTowerEReaderTrainer -{ - /*0x00*/ u8 unk0; - /*0x01*/ u8 trainerClass; - /*0x02*/ u16 winStreak; - /*0x04*/ u8 name[8]; - /*0x0C*/ u8 trainerId[4]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 farewellPlayerLost[6]; - /*0x28*/ u16 farewellPlayerWon[6]; - /*0x34*/ struct BattleTowerPokemon party[3]; - /*0xB8*/ u32 checksum; -}; - -struct BattleTowerData -{ - /*0x0000, 0x00A8*/ struct BattleTowerRecord playerRecord; - /*0x00A4, 0x014C*/ struct BattleTowerRecord records[5]; // from record mixing - /*0x03D8, 0x0480*/ u16 firstMonSpecies; // species of the first pokemon in the player's battle tower party - /*0x03DA, 0x0482*/ u16 defeatedBySpecies; // species of the pokemon that defated the player - /*0x03DC, 0x0484*/ u8 defeatedByTrainerName[8]; - /*0x03E4, 0x048C*/ u8 firstMonNickname[POKEMON_NAME_LENGTH]; // nickname of the first pokemon in the player's battle tower party - /*0x03F0, 0x0498*/ struct BattleTowerEReaderTrainer ereaderTrainer; - /*0x04AC, 0x0554*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100 - /*0x04AC, 0x0554*/ u8 unk_554:1; - /*0x04AD, 0x0555*/ u8 battleOutcome; - /*0x04AE, 0x0556*/ u8 var_4AE[2]; - /*0x04B0, 0x0558*/ u16 curChallengeBattleNum[2]; // 1-based index of battle in the current challenge. (challenges consist of 7 battles) - /*0x04B4, 0x055C*/ u16 curStreakChallengesNum[2]; // 1-based index of the current challenge in the current streak. - /*0x04B8, 0x0560*/ u16 recordWinStreaks[2]; - /*0x04BC, 0x0564*/ u8 battleTowerTrainerId; // index for gBattleTowerTrainers table - /*0x04BD, 0x0565*/ u8 selectedPartyMons[0x3]; // indices of the 3 selected player party mons. - /*0x04C0, 0x0568*/ u16 prizeItem; - /*0x04C2, 0x056A*/ u8 battledTrainerIds[6]; - /*0x04C8, 0x0570*/ u16 totalBattleTowerWins; - /*0x04CA, 0x0572*/ u16 bestBattleTowerWinStreak; - /*0x04CC, 0x0574*/ u16 currentWinStreaks[2]; - /*0x04D0, 0x0578*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode. - /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; -}; - -struct SaveBlock2 /* 0x02024EA4 */ -{ - /*0x00*/ u8 playerName[8]; - /*0x08*/ u8 playerGender; // MALE, FEMALE - /*0x09*/ u8 specialSaveWarp; - /*0x0A*/ u8 playerTrainerId[4]; - /*0x0E*/ u16 playTimeHours; - /*0x10*/ u8 playTimeMinutes; - /*0x11*/ u8 playTimeSeconds; - /*0x12*/ u8 playTimeVBlanks; - /*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] - /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in - /*0x18*/ struct Pokedex pokedex; - /*0x90*/ u8 filler_90[0x8]; - /*0x98*/ struct Time localTimeOffset; - /*0xA0*/ struct Time lastBerryTreeUpdate; - /*0xA8*/ struct BattleTowerData battleTower; -}; - -struct MapPosition -{ - s16 x; - s16 y; - s8 height; -}; - -struct UnkStruct_8054FF8 -{ - u8 a; - u8 b; - u8 c; - u8 d; - struct MapPosition sub; - u16 field_C; -}; - -// wasnt defined so I had to define it -struct HallOfFame -{ - u8 filler[0x1F00]; -}; - -extern struct SaveBlock2 gSaveBlock2; - -#define RomHeaderGameTitle ((const char *)0x080000A0) -#define RomHeaderGameCode ((const char *)0x080000AC) -#define RomHeaderMakerCode ((const char *)0x080000B0) -#define RomHeaderMagic ((const u8 *) 0x080000B2) -#define RomHeaderSoftwareVersion ((const u8 *) 0x080000BC) - -#define LocalTimeOffset ((struct Time *)0x02028098) -#define LastBerryTreeUpdate ((struct Time *)0x020280A0) - -#endif //GUARD_GLOBAL_H diff --git a/berry_fix/payload/include/main.h b/berry_fix/payload/include/main.h deleted file mode 100644 index cb58d5982..000000000 --- a/berry_fix/payload/include/main.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef GUARD_MAIN_H -#define GUARD_MAIN_H - -#include "gba/gba.h" - -enum RomHeaderValidationResult -{ - SAPPHIRE_UPDATABLE = 2, - RUBY_UPDATABLE, - SAPPHIRE_NONEED, - RUBY_NONEED, - INVALID -}; - -enum MainCallbackState -{ - MAINCB_INIT = 0, - MAINCB_CHECK_RTC, - MAINCB_CHECK_FLASH, - MAINCB_READ_SAVE, - MAINCB_CHECK_TIME, - MAINCB_FIX_DATE, - MAINCB_NO_NEED_TO_FIX, - MAINCB_YEAR_MAKES_NO_SENSE, - MAINCB_FINISHED, - MAINCB_CHECK_PACIFIDLOG_TM, - MAINCB_FIX_PACIFIDLOG_TM, - MAINCB_ERROR -}; - -extern IntrFunc gIntrTable[]; -extern u16 gHeldKeys; -extern u16 gNewKeys; -extern u8 gIntrVector[]; -extern u32 gUpdateSuccessful; -extern u32 gUnknown_3001194; -extern u32 gUnknown_30011A0[]; -extern u32 gMainCallbackState; -extern u32 gGameVersion; - -extern u8 gSharedMem[0x8000]; - -extern const IntrFunc gIntrFuncPointers[]; - -#endif //GUARD_MAIN_H diff --git a/berry_fix/payload/include/pokemon.h b/berry_fix/payload/include/pokemon.h deleted file mode 100644 index d3a14ffff..000000000 --- a/berry_fix/payload/include/pokemon.h +++ /dev/null @@ -1,154 +0,0 @@ -#ifndef GUARD_POKEMON_H -#define GUARD_POKEMON_H - -struct PokemonSubstruct0 -{ - u16 species; - u16 heldItem; - u32 experience; - u8 ppBonuses; - u8 friendship; -}; - -struct PokemonSubstruct1 -{ - u16 moves[4]; - u8 pp[4]; -}; - -struct PokemonSubstruct2 -{ - u8 hpEV; - u8 attackEV; - u8 defenseEV; - u8 speedEV; - u8 spAttackEV; - u8 spDefenseEV; - u8 cool; - u8 beauty; - u8 cute; - u8 smart; - u8 tough; - u8 sheen; -}; - -struct PokemonSubstruct3 -{ - /*0x00*/ u8 pokerus; - /*0x01*/ u8 metLocation; - - /*0x02*/ u16 metLevel:7; - /*0x02*/ u16 metGame:4; - /*0x03*/ u16 pokeball:4; - /*0x03*/ u16 otGender:1; - - /*0x04*/ u32 hpIV:5; - /*0x04*/ u32 attackIV:5; - /*0x05*/ u32 defenseIV:5; - /*0x05*/ u32 speedIV:5; - /*0x05*/ u32 spAttackIV:5; - /*0x06*/ u32 spDefenseIV:5; - /*0x07*/ u32 isEgg:1; - /*0x07*/ u32 altAbility:1; - - /*0x08*/ u32 coolRibbon:3; - /*0x08*/ u32 beautyRibbon:3; - /*0x08*/ u32 cuteRibbon:3; - /*0x09*/ u32 smartRibbon:3; - /*0x09*/ u32 toughRibbon:3; - /*0x09*/ u32 championRibbon:1; - /*0x0A*/ u32 winningRibbon:1; - /*0x0A*/ u32 victoryRibbon:1; - /*0x0A*/ u32 artistRibbon:1; - /*0x0A*/ u32 effortRibbon:1; - /*0x0A*/ u32 giftRibbon1:1; - /*0x0A*/ u32 giftRibbon2:1; - /*0x0A*/ u32 giftRibbon3:1; - /*0x0A*/ u32 giftRibbon4:1; - /*0x0B*/ u32 giftRibbon5:1; - /*0x0B*/ u32 giftRibbon6:1; - /*0x0B*/ u32 giftRibbon7:1; - /*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald -}; - -union PokemonSubstruct -{ - struct PokemonSubstruct0 type0; - struct PokemonSubstruct1 type1; - struct PokemonSubstruct2 type2; - struct PokemonSubstruct3 type3; - u16 raw[6]; -}; - -struct BoxPokemon -{ - /*0x00*/ u32 personality; - /*0x04*/ u32 otId; - /*0x08*/ u8 nickname[POKEMON_NAME_LENGTH]; - /*0x12*/ u8 language; - /*0x13*/ u8 isBadEgg:1; - u8 hasSpecies:1; - u8 isEgg:1; - /*0x14*/ u8 otName[OT_NAME_LENGTH]; - /*0x1B*/ u8 markings; - /*0x1C*/ u16 checksum; - /*0x1E*/ u16 unknown; - - union - { - u32 raw[12]; - union PokemonSubstruct substructs[4]; - } secure; -}; /*size = 0x50*/ - -struct Pokemon -{ - /*0x00*/ struct BoxPokemon box; - /*0x50*/ u32 status; - /*0x54*/ u8 level; - /*0x55*/ u8 mail; - /*0x56*/ u16 hp; - /*0x58*/ u16 maxHP; - /*0x5A*/ u16 attack; - /*0x5C*/ u16 defense; - /*0x5E*/ u16 speed; - /*0x60*/ u16 spAttack; - /*0x62*/ u16 spDefense; -}; - -struct BattleTowerPokemon -{ - /*0x00*/u16 species; - /*0x02*/u16 heldItem; - /*0x04*/u16 moves[4]; - /*0x0C*/u8 level; - /*0x0D*/u8 ppBonuses; - /*0x0E*/u8 hpEV; - /*0x0F*/u8 attackEV; - /*0x10*/u8 defenseEV; - /*0x11*/u8 speedEV; - /*0x12*/u8 spAttackEV; - /*0x13*/u8 spDefenseEV; - /*0x14*/u32 otId; - /*0x18*/u32 hpIV:5; - /*0x18*/u32 attackIV:5; - /*0x19*/u32 defenseIV:5; - /*0x19*/u32 speedIV:5; - /*0x1A*/u32 spAttackIV:5; - /*0x1A*/u32 spDefenseIV:5; - /*0x1B*/u32 gap:1; - /*0x1B*/u32 altAbility:1; - /*0x1C*/u32 personality; - /*0x20*/u8 nickname[POKEMON_NAME_LENGTH + 1]; - /*0x2B*/u8 friendship; -}; - -struct PokemonStorage -{ - /*0x0000*/ u8 currentBox; - /*0x0004*/ struct BoxPokemon boxes[14][30]; - /*0x8344*/ u8 boxNames[14][9]; - /*0x83c2*/ u8 wallpaper[14]; -}; - -#endif // GUARD_POKEMON_H diff --git a/berry_fix/payload/include/rtc.h b/berry_fix/payload/include/rtc.h deleted file mode 100644 index 35654d866..000000000 --- a/berry_fix/payload/include/rtc.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef GUARD_RTC_H -#define GUARD_RTC_H - -#include "gba/gba.h" -#include "siirtc.h" -#include "global.h" - -extern struct Time gTimeSinceBerryUpdate; -extern struct Time gRtcUTCTime; - -bool32 rtc_maincb_is_rtc_working(void); -bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 *); -void rtc_maincb_fix_date(void); - -#endif //GUARD_RTC_H diff --git a/berry_fix/payload/include/siirtc.h b/berry_fix/payload/include/siirtc.h deleted file mode 100644 index de4fd634d..000000000 --- a/berry_fix/payload/include/siirtc.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef GUARD_RTC_H -#define GUARD_RTC_H - -#include "gba/gba.h" - -#define SIIRTCINFO_INTFE 0x01 // frequency interrupt enable -#define SIIRTCINFO_INTME 0x02 // per-minute interrupt enable -#define SIIRTCINFO_INTAE 0x04 // alarm interrupt enable -#define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode -#define SIIRTCINFO_POWER 0x80 // power on or power failure occurred - -enum -{ - MONTH_JAN = 1, - MONTH_FEB, - MONTH_MAR, - MONTH_APR, - MONTH_MAY, - MONTH_JUN, - MONTH_JUL, - MONTH_AUG, - MONTH_SEP, - MONTH_OCT, - MONTH_NOV, - MONTH_DEC -}; - -struct SiiRtcInfo -{ - u8 year; - u8 month; - u8 day; - u8 dayOfWeek; - u8 hour; - u8 minute; - u8 second; - u8 status; - u8 alarmHour; - u8 alarmMinute; -}; - -void SiiRtcUnprotect(void); -void SiiRtcProtect(void); -u8 SiiRtcProbe(void); -bool8 SiiRtcReset(void); -bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc); -bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc); -bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc); -bool8 SiiRtcSetDateTime(struct SiiRtcInfo *rtc); -bool8 SiiRtcGetTime(struct SiiRtcInfo *rtc); -bool8 SiiRtcSetTime(struct SiiRtcInfo *rtc); -bool8 SiiRtcSetAlarm(struct SiiRtcInfo *rtc); - -#endif // GUARD_RTC_H diff --git a/berry_fix/payload/ld_script.sed b/berry_fix/payload/ld_script.sed deleted file mode 100644 index b91542b6f..000000000 --- a/berry_fix/payload/ld_script.sed +++ /dev/null @@ -1,14 +0,0 @@ -// { - r sym_ewram.ld - d -} - -// { - r sym_bss.ld - d -} - -// { - r sym_common.ld - d -} diff --git a/berry_fix/payload/ld_script.txt b/berry_fix/payload/ld_script.txt deleted file mode 100644 index d0a0af9ed..000000000 --- a/berry_fix/payload/ld_script.txt +++ /dev/null @@ -1,107 +0,0 @@ -ENTRY(Init) - -SECTIONS { - . = 0x2010000; - - .text : - ALIGN(4) - { - asm/crt0.o(.text); - src/main.o(.text); - src/rtc.o(.text); - src/flash.o(.text); - } =0 - - lib_text : - ALIGN(4) - { - src/agb_flash.o(.text); - src/agb_flash_1m.o(.text); - src/agb_flash_mx.o(.text); - asm/libagbsyscall.o(.text); - src/siirtc.o(.text); - *libgcc.a:_call_via_rX.o(.text); - *libgcc.a:_modsi3.o(.text); - *libgcc.a:_umodsi3.o(.text); - *libgcc.a:_dvmd_tls.o(.text); - } =0 - - .rodata : - ALIGN(4) - { - src/main.o(.rodata); - src/rtc.o(.rodata); - src/flash.o(.rodata); - } =0 - - lib_rodata : - ALIGN(4) - { - src/agb_flash.o(.rodata); - src/agb_flash_1m.o(.rodata); - src/agb_flash_mx.o(.rodata); - src/agb_flash_le.o(.rodata); - src/siirtc.o(.rodata); - } - - . = 0x2020000; - - ewram (NOLOAD) : - ALIGN(4) - { - - } - - . = 0x3001000; - - iwram (NOLOAD) : - ALIGN(4) - { - - . = 0x40; - - end = .; - } - - . = 0x8000000; - - RS_Rom (NOLOAD) : - ALIGN(4) - { - _start = .; - . += 4; - RomHeaderNintendoLogo = .; - . += 156; - RS_RomHeader = .; - RomHeaderGameTitle = .; - . += 12; - RomHeaderGameCode = .; - . += 4; - RomHeaderMakerCode = .; - . += 2; - RomHeaderMagic = .; - . += 1; - RomHeaderMainUnitCode = .; - . += 1; - RomHeaderDeviceType = .; - . += 1; - RomHeaderReserved1 = .; - . += 7; - RomHeaderSoftwareVersion = .; - . += 1; - RomHeaderChecksum = .; - . += 1; - RomHeaderReserved2 = .; - . += 6; - GPIOPortData = .; - . += 2; - GPIOPortDirection = .; - . += 2; - GPIOPortReadEnable = .; - } =0 - - /DISCARD/ : - { - *(*); - } -} diff --git a/berry_fix/payload/rom.sha1 b/berry_fix/payload/rom.sha1 deleted file mode 100644 index 92eee7e87..000000000 --- a/berry_fix/payload/rom.sha1 +++ /dev/null @@ -1 +0,0 @@ -866991e2b5a8de02d12f53abe0ee9af03a2b6e01 payload.gba diff --git a/berry_fix/payload/src/agb_flash.c b/berry_fix/payload/src/agb_flash.c deleted file mode 100644 index 2c2c96e6e..000000000 --- a/berry_fix/payload/src/agb_flash.c +++ /dev/null @@ -1,296 +0,0 @@ -#include "gba/gba.h" -#include "gba/flash_internal.h" - -static u8 sTimerNum; -static u16 sTimerCount; -static vu16 *sTimerReg; -static u16 sSavedIme; - -u8 gFlashTimeoutFlag; -u8 (*PollFlashStatus)(u8 *); -const struct FlashType *gFlash; -u16 gFlashNumRemainingBytes; -const u16 *gFlashMaxTime; - -u16 (*ProgramFlashByte)(u16, u32, u8); -u16 (*ProgramFlashSector)(u16, void *); -u16 (*EraseFlashChip)(void); -u16 (*EraseFlashSector)(u16); -u16 (*WaitForFlashWrite)(u8, u8 *, u8); - -void SetReadFlash1(u16 *dest); - -void SwitchFlashBank(u8 bankNum) -{ - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0xB0); - FLASH_WRITE(0x0000, bankNum); -} - -#define DELAY() \ -do { \ - vu16 i; \ - for (i = 20000; i != 0; i--) \ - ; \ -} while (0) - -u16 ReadFlashId(void) -{ - u16 flashId; - u16 readFlash1Buffer[0x20]; - u8 (*readFlash1)(u8 *); - - SetReadFlash1(readFlash1Buffer); - readFlash1 = (u8 (*)(u8 *))((s32)readFlash1Buffer + 1); - - // Enter ID mode. - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0x90); - DELAY(); - - flashId = readFlash1(FLASH_BASE + 1) << 8; - flashId |= readFlash1(FLASH_BASE); - - // Leave ID mode. - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0xF0); - FLASH_WRITE(0x5555, 0xF0); - DELAY(); - - return flashId; -} - -void FlashTimerIntr(void) -{ - if (sTimerCount != 0 && --sTimerCount == 0) - gFlashTimeoutFlag = 1; -} - -u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)) -{ - if (timerNum >= 4) - return 1; - - sTimerNum = timerNum; - sTimerReg = ®_TMCNT(sTimerNum); - *intrFunc = FlashTimerIntr; - return 0; -} - -void StartFlashTimer(u8 phase) -{ - const u16 *maxTime = &gFlashMaxTime[phase * 3]; - sSavedIme = REG_IME; - REG_IME = 0; - sTimerReg[1] = 0; - REG_IE |= (INTR_FLAG_TIMER0 << sTimerNum); - gFlashTimeoutFlag = 0; - sTimerCount = *maxTime++; - *sTimerReg++ = *maxTime++; - *sTimerReg-- = *maxTime++; - REG_IF = (INTR_FLAG_TIMER0 << sTimerNum); - REG_IME = 1; -} - -void StopFlashTimer(void) -{ - REG_IME = 0; - *sTimerReg++ = 0; - *sTimerReg-- = 0; - REG_IE &= ~(INTR_FLAG_TIMER0 << sTimerNum); - REG_IME = sSavedIme; -} - -u8 ReadFlash1(u8 *addr) -{ - return *addr; -} - -void SetReadFlash1(u16 *dest) -{ - u16 *src; - u16 i; - - PollFlashStatus = (u8 (*)(u8 *))((s32)dest + 1); - - src = (u16 *)ReadFlash1; - src = (u16 *)((s32)src ^ 1); - - i = ((s32)SetReadFlash1 - (s32)ReadFlash1) >> 1; - - while (i != 0) - { - *dest++ = *src++; - i--; - } -} - -void ReadFlash_Core(u8 *src, u8 *dest, u32 size) -{ - while (size-- != 0) - { - *dest++ = *src++; - } -} - -void ReadFlash(u16 sectorNum, u32 offset, void *dest, u32 size) -{ - u8 *src; - u16 i; - u16 readFlash_Core_Buffer[0x40]; - u16 *funcSrc; - u16 *funcDest; - void (*readFlash_Core)(u8 *, u8 *, u32); - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - if (gFlash->romSize == FLASH_ROM_SIZE_1M) - { - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - } - - funcSrc = (u16 *)ReadFlash_Core; - funcSrc = (u16 *)((s32)funcSrc ^ 1); - funcDest = readFlash_Core_Buffer; - - i = ((s32)ReadFlash - (s32)ReadFlash_Core) >> 1; - - while (i != 0) - { - *funcDest++ = *funcSrc++; - i--; - } - - readFlash_Core = (void (*)(u8 *, u8 *, u32))((s32)readFlash_Core_Buffer + 1); - - src = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset; - - readFlash_Core(src, dest, size); -} - -u32 VerifyFlashSector_Core(u8 *src, u8 *tgt, u32 size) -{ - while (size-- != 0) - { - if (*tgt++ != *src++) - return (u32)(tgt - 1); - } - - return 0; -} - -u32 VerifyFlashSector(u16 sectorNum, u8 *src) -{ - u16 i; - u16 verifyFlashSector_Core_Buffer[0x80]; - u16 *funcSrc; - u16 *funcDest; - u8 *tgt; - u16 size; - u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32); - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - if (gFlash->romSize == FLASH_ROM_SIZE_1M) - { - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - } - - funcSrc = (u16 *)VerifyFlashSector_Core; - funcSrc = (u16 *)((s32)funcSrc ^ 1); - funcDest = verifyFlashSector_Core_Buffer; - - i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1; - - while (i != 0) - { - *funcDest++ = *funcSrc++; - i--; - } - - verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1); - - tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift); - size = gFlash->sector.size; - - return verifyFlashSector_Core(src, tgt, size); -} - -u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n) -{ - u16 i; - u16 verifyFlashSector_Core_Buffer[0x80]; - u16 *funcSrc; - u16 *funcDest; - u8 *tgt; - u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32); - - if (gFlash->romSize == FLASH_ROM_SIZE_1M) - { - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - } - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - funcSrc = (u16 *)VerifyFlashSector_Core; - funcSrc = (u16 *)((s32)funcSrc ^ 1); - funcDest = verifyFlashSector_Core_Buffer; - - i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1; - - while (i != 0) - { - *funcDest++ = *funcSrc++; - i--; - } - - verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1); - - tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift); - - return verifyFlashSector_Core(src, tgt, n); -} - -u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src) -{ - u8 i; - u32 result; - - for (i = 0; i < 3; i++) - { - result = ProgramFlashSector(sectorNum, src); - if (result != 0) - continue; - - result = VerifyFlashSector(sectorNum, src); - if (result == 0) - break; - } - - return result; -} - -u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, void *src, u32 n) -{ - u8 i; - u32 result; - - for (i = 0; i < 3; i++) - { - result = ProgramFlashSector(sectorNum, src); - if (result != 0) - continue; - - result = VerifyFlashSectorNBytes(sectorNum, src, n); - if (result == 0) - break; - } - - return result; -} diff --git a/berry_fix/payload/src/agb_flash_1m.c b/berry_fix/payload/src/agb_flash_1m.c deleted file mode 100644 index 7f8bdeb5f..000000000 --- a/berry_fix/payload/src/agb_flash_1m.c +++ /dev/null @@ -1,86 +0,0 @@ -#include "gba/gba.h" -#include "gba/flash_internal.h" - -static const char AgbLibFlashVersion[] = "FLASH1M_V103"; - -const struct FlashSetupInfo * const sSetupInfos[] = -{ - &MX29L010, - &LE26FV10N1TS, - &DefaultFlash -}; - -u32 IdentifyFlash(void) -{ - u16 result; - u16 flashId; - const struct FlashSetupInfo * const *setupInfo; - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - flashId = ReadFlashId(); - - setupInfo = sSetupInfos; - result = 1; - - for (;;) - { - if ((*setupInfo)->type.ids.separate.makerId == 0) - break; - - if (flashId == (*setupInfo)->type.ids.joined) - { - result = 0; - break; - } - - setupInfo++; - } - - ProgramFlashByte = (*setupInfo)->programFlashByte; - ProgramFlashSector = (*setupInfo)->programFlashSector; - EraseFlashChip = (*setupInfo)->eraseFlashChip; - EraseFlashSector = (*setupInfo)->eraseFlashSector; - WaitForFlashWrite = (*setupInfo)->WaitForFlashWrite; - gFlashMaxTime = (*setupInfo)->maxTime; - gFlash = &(*setupInfo)->type; - - return result; -} - -u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData) -{ - u16 result = 0; - u8 status; - - StartFlashTimer(phase); - - while ((status = PollFlashStatus(addr)) != lastData) - { - if (status & 0x20) - { - // The write operation exceeded the flash chip's time limit. - - if (PollFlashStatus(addr) == lastData) - break; - - FLASH_WRITE(0x5555, 0xF0); - result = phase | 0xA000u; - break; - } - - if (gFlashTimeoutFlag) - { - if (PollFlashStatus(addr) == lastData) - break; - - FLASH_WRITE(0x5555, 0xF0); - result = phase | 0xC000u; - break; - } - } - - StopFlashTimer(); - - return result; -} diff --git a/berry_fix/payload/src/agb_flash_le.c b/berry_fix/payload/src/agb_flash_le.c deleted file mode 100644 index 39d956e27..000000000 --- a/berry_fix/payload/src/agb_flash_le.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "gba/gba.h" -#include "gba/flash_internal.h" - -const u16 leMaxTime[] = -{ - 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, -}; - -const struct FlashSetupInfo LE26FV10N1TS = -{ - ProgramFlashByte_MX, - ProgramFlashSector_MX, - EraseFlashChip_MX, - EraseFlashSector_MX, - WaitForFlashWrite_Common, - leMaxTime, - { - 131072, // ROM size - { - 4096, // sector size - 12, // bit shift to multiply by sector size (4096 == 1 << 12) - 32, // number of sectors - 0 // appears to be unused - }, - { 3, 1 }, // wait state setup data - { { 0x62, 0x13 } } // ID - } -}; diff --git a/berry_fix/payload/src/agb_flash_mx.c b/berry_fix/payload/src/agb_flash_mx.c deleted file mode 100644 index 68eb00cd8..000000000 --- a/berry_fix/payload/src/agb_flash_mx.c +++ /dev/null @@ -1,193 +0,0 @@ -#include "gba/gba.h" -#include "gba/flash_internal.h" - -const u16 mxMaxTime[] = -{ - 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 10, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, - 2000, 65469, TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_256CLK, -}; - -const struct FlashSetupInfo MX29L010 = -{ - ProgramFlashByte_MX, - ProgramFlashSector_MX, - EraseFlashChip_MX, - EraseFlashSector_MX, - WaitForFlashWrite_Common, - mxMaxTime, - { - 131072, // ROM size - { - 4096, // sector size - 12, // bit shift to multiply by sector size (4096 == 1 << 12) - 32, // number of sectors - 0 // appears to be unused - }, - { 3, 1 }, // wait state setup data - { { 0xC2, 0x09 } } // ID - } -}; - -const struct FlashSetupInfo DefaultFlash = -{ - ProgramFlashByte_MX, - ProgramFlashSector_MX, - EraseFlashChip_MX, - EraseFlashSector_MX, - WaitForFlashWrite_Common, - mxMaxTime, - { - 131072, // ROM size - { - 4096, // sector size - 12, // bit shift to multiply by sector size (4096 == 1 << 12) - 32, // number of sectors - 0 // appears to be unused - }, - { 3, 1 }, // wait state setup data - { { 0x00, 0x00 } } // ID of 0 - } -}; - -u16 EraseFlashChip_MX(void) -{ - u16 result; - u16 readFlash1Buffer[0x20]; - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; - - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0x80); - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0x10); - - SetReadFlash1(readFlash1Buffer); - - result = WaitForFlashWrite(3, FLASH_BASE, 0xFF); - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - return result; -} - -u16 EraseFlashSector_MX(u16 sectorNum) -{ - u16 numTries; - u16 result; - u8 *addr; - u16 readFlash1Buffer[0x20]; - - if (sectorNum >= gFlash->sector.count) - return 0x80FF; - - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - - numTries = 0; - -try_erase: - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; - - addr = FLASH_BASE + (sectorNum << gFlash->sector.shift); - - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0x80); - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - *addr = 0x30; - - SetReadFlash1(readFlash1Buffer); - - result = WaitForFlashWrite(2, addr, 0xFF); - - if (!(result & 0xA000) || numTries > 3) - goto done; - - numTries++; - - goto try_erase; - -done: - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8; - - return result; -} - -u16 ProgramFlashByte_MX(u16 sectorNum, u32 offset, u8 data) -{ - u8 *addr; - u16 readFlash1Buffer[0x20]; - - if (offset >= gFlash->sector.size) - return 0x8000; - - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - - addr = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset; - - SetReadFlash1(readFlash1Buffer); - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; - - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0xA0); - *addr = data; - - return WaitForFlashWrite(1, addr, data); -} - -static u16 ProgramByte(u8 *src, u8 *dest) -{ - FLASH_WRITE(0x5555, 0xAA); - FLASH_WRITE(0x2AAA, 0x55); - FLASH_WRITE(0x5555, 0xA0); - *dest = *src; - - return WaitForFlashWrite(1, dest, *src); -} - -u16 ProgramFlashSector_MX(u16 sectorNum, void *src) -{ - u16 result; - u8 *dest; - u16 readFlash1Buffer[0x20]; - - if (sectorNum >= gFlash->sector.count) - return 0x80FF; - - result = EraseFlashSector_MX(sectorNum); - - if (result != 0) - return result; - - SwitchFlashBank(sectorNum / SECTORS_PER_BANK); - sectorNum %= SECTORS_PER_BANK; - - SetReadFlash1(readFlash1Buffer); - - REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | gFlash->wait[0]; - - gFlashNumRemainingBytes = gFlash->sector.size; - dest = FLASH_BASE + (sectorNum << gFlash->sector.shift); - - while (gFlashNumRemainingBytes > 0) - { - result = ProgramByte(src, dest); - - if (result != 0) - break; - - gFlashNumRemainingBytes--; - src++; - dest++; - } - - return result; -} diff --git a/berry_fix/payload/src/flash.c b/berry_fix/payload/src/flash.c deleted file mode 100644 index 1f09d0b8f..000000000 --- a/berry_fix/payload/src/flash.c +++ /dev/null @@ -1,752 +0,0 @@ -#include "gba/gba.h" -#include "gba/flash_internal.h" -#include "constants/vars.h" -#include "global.h" -#include "main.h" -#include "flash.h" -#include "rtc.h" - -struct SaveBlockChunk -{ - u8 * data; - u16 size; -}; - -u8 WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1); -u8 WriteSingleChunk(u16 a0, const struct SaveBlockChunk * a1); -u8 TryWriteSector(u8, u8 *); -u8 EraseCurrentChunk(u16 a0, const struct SaveBlockChunk * a1); -u8 TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1); -u8 ReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1); -u8 GetSaveValidStatus(const struct SaveBlockChunk * a1); -u32 DoReadFlashWholeSection(u8 a0, struct SaveSector * a1); -u16 CalculateChecksum(const void *, u16); - -u16 gFirstSaveSector; -u32 gPrevSaveCounter; -u16 gLastKnownGoodSector; -u32 gDamagedSaveSectors; -u32 gSaveCounter; -struct SaveSector * gFastSaveSection; -u16 gCurSaveChunk; -bool32 gFlashIdentIsValid; - -EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {}; -EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {}; -EWRAM_DATA struct PokemonStorage gPokemonStorage = {}; - -// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer -#define SECTOR_DATA_SIZE 3968 -#define SECTOR_FOOTER_SIZE 128 - -#define SAVEBLOCK_CHUNK(structure, chunkNum) \ -{ \ - (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \ - min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ -} \ - -static const struct SaveBlockChunk sSaveBlockChunks[] = -{ - SAVEBLOCK_CHUNK(gSaveBlock2, 0), - - SAVEBLOCK_CHUNK(gSaveBlock1, 0), - SAVEBLOCK_CHUNK(gSaveBlock1, 1), - SAVEBLOCK_CHUNK(gSaveBlock1, 2), - SAVEBLOCK_CHUNK(gSaveBlock1, 3), - - SAVEBLOCK_CHUNK(gPokemonStorage, 0), - SAVEBLOCK_CHUNK(gPokemonStorage, 1), - SAVEBLOCK_CHUNK(gPokemonStorage, 2), - SAVEBLOCK_CHUNK(gPokemonStorage, 3), - SAVEBLOCK_CHUNK(gPokemonStorage, 4), - SAVEBLOCK_CHUNK(gPokemonStorage, 5), - SAVEBLOCK_CHUNK(gPokemonStorage, 6), - SAVEBLOCK_CHUNK(gPokemonStorage, 7), - SAVEBLOCK_CHUNK(gPokemonStorage, 8), -}; - -const u16 gInfoMessagesPal[] = INCBIN_U16("graphics/msg_box.gbapal"); -const u8 gInfoMessagesTilemap[] = INCBIN_U8("graphics/msg_box.tilemap.lz"); -const u8 gInfoMessagesGfx[] = INCBIN_U8("graphics/msg_box.4bpp.lz"); - -bool32 flash_maincb_ident_is_valid(void) -{ - gFlashIdentIsValid = TRUE; - if (!IdentifyFlash()) - { - SetFlashTimerIntr(0, &((IntrFunc *)gIntrFuncPointers)[9]); - return TRUE; - } - gFlashIdentIsValid = FALSE; - return FALSE; -} - -void Call_ReadFlash(u16 sectorNum, ptrdiff_t offset, void * dest, size_t size) -{ - ReadFlash(sectorNum, offset, dest, size); -} - -u8 Call_WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1) -{ - return WriteSaveBlockChunks(a0, a1); -} - -u8 Call_TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1) -{ - return TryReadAllSaveSectorsCurrentSlot(a0, a1); -} - -u32 * GetDamagedSaveSectorsPtr(void) -{ - return &gDamagedSaveSectors; -} - -s32 flash_write_save_block_chunks(u8 a0) -{ - u8 i; - - switch (a0) - { - case 0: - default: - Call_WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); - break; - case 1: - for (i = 0; i < 5; i++) - { - Call_WriteSaveBlockChunks(i, sSaveBlockChunks); - } - break; - case 2: - Call_WriteSaveBlockChunks(0, sSaveBlockChunks); - break; - } - - return 0; -} - -u8 flash_write_save_block_chunks_check_damage(u8 a0) -{ - flash_write_save_block_chunks(a0); - if (*GetDamagedSaveSectorsPtr() == 0) - return 1; - return 0xFF; -} - -u8 flash_maincb_read_save(u32 unused) -{ - return Call_TryReadAllSaveSectorsCurrentSlot(0xFFFF, sSaveBlockChunks); -} - -void msg_load_gfx(void) -{ - REG_DISPCNT = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BLDCNT = 0; - LZ77UnCompVram(gInfoMessagesGfx, (void *)BG_VRAM); - LZ77UnCompVram(gInfoMessagesTilemap, (void *)BG_SCREEN_ADDR(28)); - CpuCopy16(gInfoMessagesPal, (void *)BG_PLTT, 0x200); - REG_BG0CNT = BGCNT_SCREENBASE(28) | BGCNT_TXT512x512; - REG_DISPCNT = DISPCNT_BG0_ON; -} - -void msg_display(enum MsgBoxUpdateMessage a0) -{ - switch (a0) - { - case MSGBOX_WILL_NOW_UPDATE: - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - break; - case MSGBOX_HAS_BEEN_UPDATED: - REG_BG0HOFS = 0x100; - REG_BG0VOFS = 0; - break; - case MSGBOX_UNABLE_TO_UPDATE: - REG_BG0HOFS = 0x100; - REG_BG0VOFS = 0xB0; - break; - case MSGBOX_NO_NEED_TO_UPDATE: - REG_BG0HOFS = 0; - REG_BG0VOFS = 0xB0; - break; - case MSGBOX_UPDATING: - REG_BG0HOFS = 0; - REG_BG0VOFS = 0x160; - break; - } -} - -void Save_EraseAllData(void) -{ - u16 i; - for (i = 0; i < 32; i++) - EraseFlashSector(i); -} - -void Save_ResetSaveCounters(void) -{ - gSaveCounter = 0; - gFirstSaveSector = 0; - gDamagedSaveSectors = 0; -} - -bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) -{ - bool32 retVal = FALSE; - - switch (op) - { - case SECTOR_DAMAGED: - gDamagedSaveSectors |= (1 << sectorNum); - break; - case SECTOR_OK: - gDamagedSaveSectors &= ~(1 << sectorNum); - break; - case SECTOR_CHECK: // unused - if (gDamagedSaveSectors & (1 << sectorNum)) - retVal = TRUE; - break; - } - - return retVal; -} - -u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks) -{ - u32 retVal; - u16 i; - - gFastSaveSection = eSaveSection; - - if (chunkId != 0xFFFF) // write single chunk - { - retVal = WriteSingleChunk(chunkId, chunks); - } - else // write all chunks - { - gLastKnownGoodSector = gFirstSaveSector; - gPrevSaveCounter = gSaveCounter; - gFirstSaveSector++; - gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; - gSaveCounter++; - retVal = SAVE_STATUS_OK; - - for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) - WriteSingleChunk(i, chunks); - - // Check for any bad sectors - if (gDamagedSaveSectors != 0) // skip the damaged sector. - { - retVal = SAVE_STATUS_ERROR; - gFirstSaveSector = gLastKnownGoodSector; - gSaveCounter = gPrevSaveCounter; - } - } - - return retVal; -} - -u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk * chunks) -{ - u16 i; - u16 sectorNum; - u8 *chunkData; - u16 chunkSize; - - // select sector number - sectorNum = chunkId + gFirstSaveSector; - sectorNum %= NUM_SECTORS_PER_SAVE_SLOT; - // select save slot - sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - - chunkData = chunks[chunkId].data; - chunkSize = chunks[chunkId].size; - - // clear save section. - for (i = 0; i < sizeof(struct SaveSector); i++) - ((u8 *)gFastSaveSection)[i] = 0; - - gFastSaveSection->id = chunkId; - gFastSaveSection->signature = FILE_SIGNATURE; - gFastSaveSection->counter = gSaveCounter; - for (i = 0; i < chunkSize; i++) - gFastSaveSection->data[i] = chunkData[i]; - gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize); - - return TryWriteSector(sectorNum, gFastSaveSection->data); -} - -u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size) -{ - u16 i; - struct SaveSector *section = eSaveSection; - - for (i = 0; i < sizeof(struct SaveSector); i++) - ((char *)section)[i] = 0; - - section->signature = FILE_SIGNATURE; - for (i = 0; i < size; i++) - section->data[i] = data[i]; - section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used. - - return TryWriteSector(sectorNum, section->data); -} - -u8 TryWriteSector(u8 sectorNum, u8 *data) -{ - if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged? - { - SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits. - return SAVE_STATUS_ERROR; - } - else - { - SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now. - return SAVE_STATUS_OK; - } -} - -u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused -{ - gFastSaveSection = eSaveSection; - gLastKnownGoodSector = gFirstSaveSector; - gPrevSaveCounter = gSaveCounter; - gFirstSaveSector++; - gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; - gSaveCounter++; - gCurSaveChunk = 0; - gDamagedSaveSectors = 0; - return 0; -} - -u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) -{ - gFastSaveSection = eSaveSection; - gLastKnownGoodSector = gFirstSaveSector; - gPrevSaveCounter = gSaveCounter; - gCurSaveChunk = 0; - gDamagedSaveSectors = 0; - return 0; -} - -u8 WriteSingleChunkAndIncrement(u16 a1, const struct SaveBlockChunk * chunk) -{ - u8 retVal; - - if (gCurSaveChunk < a1 - 1) - { - retVal = SAVE_STATUS_OK; - WriteSingleChunk(gCurSaveChunk, chunk); - gCurSaveChunk++; - if (gDamagedSaveSectors) - { - retVal = SAVE_STATUS_ERROR; - gFirstSaveSector = gLastKnownGoodSector; - gSaveCounter = gPrevSaveCounter; - } - } - else - { - retVal = SAVE_STATUS_ERROR; - } - - return retVal; -} - -u8 ErasePreviousChunk(u16 a1, const struct SaveBlockChunk *chunk) -{ - u8 retVal = SAVE_STATUS_OK; - - EraseCurrentChunk(a1 - 1, chunk); - - if (gDamagedSaveSectors) - { - retVal = SAVE_STATUS_ERROR; - gFirstSaveSector = gLastKnownGoodSector; - gSaveCounter = gPrevSaveCounter; - } - return retVal; -} - -u8 EraseCurrentChunk(u16 chunkId, const struct SaveBlockChunk *chunks) -{ - u16 i; - u16 sector; - u8 *data; - u16 size; - u8 status; - - // select sector number - sector = chunkId + gFirstSaveSector; - sector %= NUM_SECTORS_PER_SAVE_SLOT; - // select save slot - sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - - data = chunks[chunkId].data; - size = chunks[chunkId].size; - - // clear temp save section. - for (i = 0; i < sizeof(struct SaveSector); i++) - ((char *)gFastSaveSection)[i] = 0; - - gFastSaveSection->id = chunkId; - gFastSaveSection->signature = FILE_SIGNATURE; - gFastSaveSection->counter = gSaveCounter; - - // set temp section's data. - for (i = 0; i < size; i++) - gFastSaveSection->data[i] = data[i]; - - // calculate checksum. - gFastSaveSection->checksum = CalculateChecksum(data, size); - - EraseFlashSector(sector); - - status = SAVE_STATUS_OK; - - for (i = 0; i < sizeof(struct UnkSaveSection); i++) - { - if (ProgramFlashByte(sector, i, gFastSaveSection->data[i])) - { - status = SAVE_STATUS_ERROR; - break; - } - } - - if (status == SAVE_STATUS_ERROR) - { - SetSectorDamagedStatus(SECTOR_DAMAGED, sector); - return SAVE_STATUS_ERROR; - } - else - { - status = SAVE_STATUS_OK; - - for (i = 0; i < 7; i++) - { - if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i])) - { - status = SAVE_STATUS_ERROR; - break; - } - } - - if (status == SAVE_STATUS_ERROR) - { - SetSectorDamagedStatus(SECTOR_DAMAGED, sector); - return SAVE_STATUS_ERROR; - } - else - { - SetSectorDamagedStatus(SECTOR_OK, sector); - return SAVE_STATUS_OK; - } - } -} - -u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) -{ - u16 sector; - - // select sector number - sector = a1 + gFirstSaveSector - 1; - sector %= NUM_SECTORS_PER_SAVE_SLOT; - // select save slot - sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - - if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)])) - { - // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetSectorDamagedStatus(SECTOR_DAMAGED, sector); - gFirstSaveSector = gLastKnownGoodSector; - gSaveCounter = gPrevSaveCounter; - return SAVE_STATUS_ERROR; - } - else - { - SetSectorDamagedStatus(SECTOR_OK, sector); - return SAVE_STATUS_OK; - } -} - -u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) -{ - u16 sector; - - sector = a1 + gFirstSaveSector - 1; - sector %= NUM_SECTORS_PER_SAVE_SLOT; - sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - - if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25)) - { - // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetSectorDamagedStatus(SECTOR_DAMAGED, sector); - gFirstSaveSector = gLastKnownGoodSector; - gSaveCounter = gPrevSaveCounter; - return SAVE_STATUS_ERROR; - } - else - { - SetSectorDamagedStatus(SECTOR_OK, sector); - return SAVE_STATUS_OK; - } -} - -u8 TryReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunk) -{ - u8 retVal; - gFastSaveSection = eSaveSection; - if (a1 != 0xFFFF) - { - retVal = SAVE_STATUS_ERROR; - } - else - { - retVal = GetSaveValidStatus(chunk); - ReadAllSaveSectorsCurrentSlot(0xFFFF, chunk); - } - - return retVal; -} - -u8 ReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunks) -{ - u16 i; - u16 checksum; - u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - u16 id; - - for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) - { - DoReadFlashWholeSection(i + sector, gFastSaveSection); - id = gFastSaveSection->id; - if (id == 0) - gFirstSaveSector = i; - checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size); - if (gFastSaveSection->signature == FILE_SIGNATURE - && gFastSaveSection->checksum == checksum) - { - u16 j; - for (j = 0; j < chunks[id].size; j++) - chunks[id].data[j] = gFastSaveSection->data[j]; - } - } - - return 1; -} - -u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) -{ - u16 sector; - bool8 signatureValid; - u16 checksum; - u32 slot1saveCounter = 0; - u32 slot2saveCounter = 0; - u8 slot1Status; - u8 slot2Status; - u32 validSectors; - const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors - - // check save slot 1. - validSectors = 0; - signatureValid = FALSE; - for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) - { - DoReadFlashWholeSection(sector, gFastSaveSection); - if (gFastSaveSection->signature == FILE_SIGNATURE) - { - signatureValid = TRUE; - checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); - if (gFastSaveSection->checksum == checksum) - { - slot1saveCounter = gFastSaveSection->counter; - validSectors |= 1 << gFastSaveSection->id; - } - } - } - - if (signatureValid) - { - if (validSectors == ALL_SECTORS) - slot1Status = SAVE_STATUS_OK; - else - slot1Status = SAVE_STATUS_ERROR; - } - else - { - slot1Status = SAVE_STATUS_EMPTY; - } - - // check save slot 2. - validSectors = 0; - signatureValid = FALSE; - for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) - { - DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection); - if (gFastSaveSection->signature == FILE_SIGNATURE) - { - signatureValid = TRUE; - checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); - if (gFastSaveSection->checksum == checksum) - { - slot2saveCounter = gFastSaveSection->counter; - validSectors |= 1 << gFastSaveSection->id; - } - } - } - - if (signatureValid) - { - if (validSectors == ALL_SECTORS) - slot2Status = SAVE_STATUS_OK; - else - slot2Status = SAVE_STATUS_ERROR; - } - else - { - slot2Status = SAVE_STATUS_EMPTY; - } - - if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK) - { - // Choose counter of the most recent save file - if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1)) - { - if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1)) - gSaveCounter = slot2saveCounter; - else - gSaveCounter = slot1saveCounter; - } - else - { - if (slot1saveCounter < slot2saveCounter) - gSaveCounter = slot2saveCounter; - else - gSaveCounter = slot1saveCounter; - } - return SAVE_STATUS_OK; - } - - if (slot1Status == SAVE_STATUS_OK) - { - gSaveCounter = slot1saveCounter; - if (slot2Status == SAVE_STATUS_ERROR) - return SAVE_STATUS_ERROR; - else - return SAVE_STATUS_OK; - } - - if (slot2Status == SAVE_STATUS_OK) - { - gSaveCounter = slot2saveCounter; - if (slot1Status == SAVE_STATUS_ERROR) - return SAVE_STATUS_ERROR; - else - return SAVE_STATUS_OK; - } - - if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY) - { - gSaveCounter = 0; - gFirstSaveSector = 0; - return SAVE_STATUS_EMPTY; - } - - gSaveCounter = 0; - gFirstSaveSector = 0; - return 2; -} - -u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size) -{ - u16 i; - struct SaveSector *section = eSaveSection; - - DoReadFlashWholeSection(sector, section); - if (section->signature == FILE_SIGNATURE) - { - u16 checksum = CalculateChecksum(section->data, size); - if (section->id == checksum) - { - for (i = 0; i < size; i++) - data[i] = section->data[i]; - return SAVE_STATUS_OK; - } - else - { - return 2; - } - } - else - { - return SAVE_STATUS_EMPTY; - } -} - -u32 DoReadFlashWholeSection(u8 sector, struct SaveSector *section) -{ - ReadFlash(sector, 0, section->data, sizeof(struct SaveSector)); - return 1; -} - -u16 CalculateChecksum(const void *data, u16 size) -{ - u16 i; - u32 checksum = 0; - - for (i = 0; i < (size / 4); i++) - { - checksum += *((u32 *)data); - data += sizeof(u32); - } - - return ((checksum >> 16) + checksum); -} - -void nullsub_0201182C() -{ -} - -void nullsub_02011830() -{ -} - -void nullsub_02011834() -{ -} - -u16 * get_var_addr(u16 a0) -{ - if (a0 < VARS_START) - return NULL; - if (a0 < VAR_SPECIAL_0) - return &gSaveBlock1.vars[a0 - VARS_START]; - return NULL; -} - -bool32 flash_maincb_check_need_reset_pacifidlog_tm(void) -{ - u8 sp0; - u16 * data = get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY); - rtc_maincb_is_time_since_last_berry_update_positive(&sp0); - if (*data <= gRtcUTCTime.days) - return TRUE; - else - return FALSE; -} - -bool32 flash_maincb_reset_pacifidlog_tm(void) -{ - u8 sp0; - if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE) - return TRUE; - rtc_maincb_is_time_since_last_berry_update_positive(&sp0); - if (gRtcUTCTime.days < 0) - return FALSE; - *get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY) = 1; - if (flash_write_save_block_chunks_check_damage(0) != TRUE) - return FALSE; - return TRUE; -} diff --git a/berry_fix/payload/src/main.c b/berry_fix/payload/src/main.c deleted file mode 100644 index 32d90f9c1..000000000 --- a/berry_fix/payload/src/main.c +++ /dev/null @@ -1,289 +0,0 @@ -#include "gba/gba.h" -#include "global.h" -#include "main.h" -#include "rtc.h" -#include "flash.h" - -static s32 gInitialWaitTimer; -IntrFunc gIntrTable[16]; -u16 gHeldKeys; -u16 gNewKeys; -u8 gIntrVector[0x100]; -u32 gUpdateSuccessful; -u32 gUnknown_3001194; -u32 gUnknown_30011A0[0x19]; -u32 gMainCallbackState; -u32 gGameVersion; - -EWRAM_DATA u8 gSharedMem[0x8000] = {}; - -void IntrMain(void); -void ReadKeys(void); -void dummy_intr_0(void); -void dummy_intr_1(void); -void main_callback(u32 *, void *, void *); - - -const char gBerryFixGameCode[] = "AGBJ"; -const IntrFunc gIntrFuncPointers[] = { - dummy_intr_0, - dummy_intr_1, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - dummy_intr_0, - NULL, - NULL, - NULL -}; -const char gVersionData[][2] = { - {'J', 1}, - {'E', 2}, - {'D', 1}, - {'F', 1}, - {'I', 1}, - {'S', 1} -}; -const char gRubyTitleAndCode[] = "POKEMON RUBYAXV"; -const char gSapphireTitleAndCode[] = "POKEMON SAPPAXP"; -const u16 sDebugPals[20] = { - RGB(00, 00, 00), - RGB(31, 00, 00), - RGB(00, 31, 00), - RGB(00, 00, 31) -}; -const u16 sDebugDigitsGfx[] = INCBIN_U16("graphics/debug_digits.4bpp"); - -void AgbMain(void) -{ - RegisterRamReset(0x1E); - DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers); - DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector)); - INTR_VECTOR = gIntrVector; - REG_IE = INTR_FLAG_VBLANK; - if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode) - REG_IE |= INTR_FLAG_GAMEPAK; - REG_DISPSTAT = DISPSTAT_VBLANK_INTR; - REG_IME = INTR_FLAG_VBLANK; - msg_load_gfx(); - gMainCallbackState = MAINCB_INIT; - gUnknown_3001194 = 0; - for (;;) - { - VBlankIntrWait(); - ReadKeys(); - main_callback(&gMainCallbackState, gUnknown_30011A0, gSharedMem); - } -} - -void dummy_intr_1(void) -{} - -void dummy_intr_0(void) -{} - -void ReadKeys(void) -{ - u16 keyInput = REG_KEYINPUT ^ KEYS_MASK; - gNewKeys = keyInput & ~gHeldKeys; - gHeldKeys = keyInput; -} - -void fill_palette(const u8 * src, u16 * dest, u8 value) -{ - s32 i; - for (i = 0; src[i] != 0; i++) - dest[i] = src[i] | value << 12; -} - -bool32 berry_fix_memcmp(const char * src1, const char * src2, size_t size) -{ - s32 i; - for (i = 0; i < size; i++) - { - if (src1[i] != src2[i]) - return FALSE; - } - return TRUE; -} - -s32 validate_rom_header_internal(void) -{ - char languageCode = *(RomHeaderGameCode + 3); - s32 softwareVersion = *RomHeaderSoftwareVersion; - s32 shouldUpdate = -1; - s32 i; - for (i = 0; i < ARRAY_COUNT(gVersionData); i++) - { - if (languageCode == gVersionData[i][0]) - { - if (softwareVersion >= gVersionData[i][1]) - { - shouldUpdate = 0; - } - else - { - shouldUpdate = 1; - } - break; - } - } - if (shouldUpdate != -1) - { - if (berry_fix_memcmp(RomHeaderGameTitle, gRubyTitleAndCode, 15) == TRUE) - { - if (shouldUpdate == 0) - return RUBY_NONEED; - else - { - gGameVersion = VERSION_RUBY; - return RUBY_UPDATABLE; - } - } - else if (berry_fix_memcmp(RomHeaderGameTitle, gSapphireTitleAndCode, 15) == TRUE) - { - if (shouldUpdate == 0) - return SAPPHIRE_NONEED; - else - { - gGameVersion = VERSION_SAPPHIRE; - return SAPPHIRE_UPDATABLE; - } - } - } - return INVALID; -} - -s32 validate_rom_header(void) -{ - if (*RomHeaderMakerCode == '0' && *(RomHeaderMakerCode + 1) == '1' && *RomHeaderMagic == 0x96) - return validate_rom_header_internal(); - else - return INVALID; -} - -void main_callback(u32 * state, void * unused1, void * unused2) -{ - u8 year; - switch (*state) - { - case MAINCB_INIT: - msg_display(MSGBOX_WILL_NOW_UPDATE); - if (++gInitialWaitTimer >= 180) - { - gInitialWaitTimer = 0; - gUpdateSuccessful = 0; - switch (validate_rom_header()) - { - case SAPPHIRE_UPDATABLE: - case RUBY_UPDATABLE: // Should Update Ruby - ++(*state); // MAINCB_CHECK_RTC - break; - case INVALID: // Invalid header - *state = MAINCB_ERROR; - break; - case SAPPHIRE_NONEED: // Should not update Sapphire - case RUBY_NONEED: // Should not update Ruby - *state = MAINCB_NO_NEED_TO_FIX; - break; - } - } - break; - case MAINCB_CHECK_RTC: - if (!rtc_maincb_is_rtc_working()) - *state = MAINCB_ERROR; - else - ++(*state); // MAINCB_CHECK_FLASH - break; - case MAINCB_CHECK_FLASH: - if (flash_maincb_ident_is_valid() == TRUE) - ++(*state); // MAINCB_READ_SAVE - else - *state = MAINCB_ERROR; - break; - case MAINCB_READ_SAVE: - if (flash_maincb_read_save(0) == SAVE_STATUS_OK) - ++(*state); // MAINCB_CHECK_TIME - else - *state = MAINCB_ERROR; - break; - case MAINCB_CHECK_TIME: - if (rtc_maincb_is_time_since_last_berry_update_positive(&year) == TRUE) - { - if (year == 0) - ++(*state); // MAINCB_FIX_DATE - else - *state = MAINCB_CHECK_PACIFIDLOG_TM; - } - else - { - if (year != 1) - *state = MAINCB_YEAR_MAKES_NO_SENSE; - else - ++(*state); // MAINCB_FIX_DATE - } - break; - case MAINCB_FIX_DATE: - rtc_maincb_fix_date(); - gUpdateSuccessful |= 1; - *state = MAINCB_CHECK_PACIFIDLOG_TM; - break; - case MAINCB_CHECK_PACIFIDLOG_TM: - if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE) - *state = MAINCB_FINISHED; - else - *state = MAINCB_FIX_PACIFIDLOG_TM; - break; - case MAINCB_FIX_PACIFIDLOG_TM: - msg_display(MSGBOX_UPDATING); - if (flash_maincb_reset_pacifidlog_tm() == TRUE) - { - gUpdateSuccessful |= 1; - *state = MAINCB_FINISHED; - } - else - *state = MAINCB_ERROR; - break; - case MAINCB_FINISHED: - if (gUpdateSuccessful == 0) - *state = MAINCB_NO_NEED_TO_FIX; - else - msg_display(MSGBOX_HAS_BEEN_UPDATED); - break; - case MAINCB_NO_NEED_TO_FIX: - msg_display(MSGBOX_NO_NEED_TO_UPDATE); - break; - case MAINCB_YEAR_MAKES_NO_SENSE: - msg_display(MSGBOX_UNABLE_TO_UPDATE); - break; - case MAINCB_ERROR: - msg_display(MSGBOX_UNABLE_TO_UPDATE); - break; - } -} - -void DBG_LoadDigitsPal(void) -{ - s32 i; - const u16 * src; - vu16 * dest = (vu16 *)BG_PLTT + 1; - DmaFill16(3, RGB(31, 31, 31), (vu16 *)BG_PLTT, BG_PLTT_SIZE); - src = sDebugPals; - for (i = 0; i < 4; i++) - { - *dest = *src; - dest += 16; - src++; - } -} - -void DBG_LoadDigits(void) -{ - DmaFill16(3, 0x1111, (void *)VRAM + 0x8420, 0x1800); - DmaCopy32(3, sDebugDigitsGfx, (void *)VRAM + 0x8600, 0x200); - DBG_LoadDigitsPal(); -} diff --git a/berry_fix/payload/src/rtc.c b/berry_fix/payload/src/rtc.c deleted file mode 100644 index e73f522aa..000000000 --- a/berry_fix/payload/src/rtc.c +++ /dev/null @@ -1,346 +0,0 @@ -#include "gba/gba.h" -#include "siirtc.h" -#include "global.h" -#include "main.h" - -struct Time gTimeSinceBerryUpdate; -struct Time gRtcUTCTime; - -static u16 sRtcProbeStatus; -static struct SiiRtcInfo sRtcInfoBuffer; -static u8 sRtcProbeCode; -static u16 sImeBak; -static struct SiiRtcInfo sRtcInfoWork; - -const struct SiiRtcInfo sDefaultRTC = { - .year = 0, // 2000 - .month = 1, // January - .day = 1, // 01 - .dayOfWeek = 0, - .hour = 0, - .minute = 0, - .second = 0, - .status = 0, - .alarmHour = 0, - .alarmMinute = 0 -}; -const s32 sDaysPerMonth[] = { - 31, - 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31 -}; - -void rtc_get_status_and_datetime(struct SiiRtcInfo *); -u16 rtc_validate_datetime(struct SiiRtcInfo *); - - -void rtc_intr_disable(void) -{ - sImeBak = REG_IME; - REG_IME = 0; -} - -void rtc_intr_enable(void) -{ - REG_IME = sImeBak; -} - -s32 bcd_to_hex(u8 a0) -{ - if (a0 >= 0xa0 || (a0 & 0xF) >= 10) - return 0xFF; - return ((a0 >> 4) & 0xF) * 10 + (a0 & 0xF); -} - -bool8 is_leap_year(u8 year) -{ - if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) - return TRUE; - return FALSE; -} - -u16 rtc_count_days_parameterized(u8 year, u8 month, u8 day) -{ - u16 numDays = 0; - s32 i; - for (i = year - 1; i > 0; i--) - { - numDays += 365; - if (is_leap_year(i) == TRUE) - numDays++; - } - for (i = 0; i < month - 1; i++) - numDays += sDaysPerMonth[i]; - if (month > MONTH_FEB && is_leap_year(year) == TRUE) - numDays++; - numDays += day; - return numDays; -} - -u16 rtc_count_days_from_info(struct SiiRtcInfo *info) -{ - return rtc_count_days_parameterized(bcd_to_hex(info->year), bcd_to_hex(info->month), bcd_to_hex(info->day)); -} - -static void rtc_probe_status(void) -{ - sRtcProbeStatus = 0; - rtc_intr_disable(); - SiiRtcUnprotect(); - sRtcProbeCode = SiiRtcProbe(); - rtc_intr_enable(); - if ((sRtcProbeCode & 0xF) != 1) - sRtcProbeStatus = 1; - else - { - if (sRtcProbeCode & 0xF0) - sRtcProbeStatus = 2; - else - sRtcProbeStatus = 0; - rtc_get_status_and_datetime(&sRtcInfoBuffer); - sRtcProbeStatus = rtc_validate_datetime(&sRtcInfoBuffer); - } -} - -u16 rtc_get_probe_status(void) -{ - return sRtcProbeStatus; -} - -void sub_020106EC(struct SiiRtcInfo * info) -{ - if (sRtcProbeStatus & 0xFF0) - *info = sDefaultRTC; - else - rtc_get_status_and_datetime(info); -} - -void rtc_get_datetime(struct SiiRtcInfo * info) -{ - rtc_intr_disable(); - SiiRtcGetDateTime(info); - rtc_intr_enable(); -} - -void rtc_get_status(struct SiiRtcInfo * info) -{ - rtc_intr_disable(); - SiiRtcGetStatus(info); - rtc_intr_enable(); -} - -void rtc_get_status_and_datetime(struct SiiRtcInfo * info) -{ - rtc_get_status(info); - rtc_get_datetime(info); -} - -u16 rtc_validate_datetime(struct SiiRtcInfo * info) -{ - s32 year, month, day; - u16 r4 = (info->status & SIIRTCINFO_POWER) ? 0x20 : 0; - if (!(info->status & SIIRTCINFO_24HOUR)) - r4 |= 0x10; - year = bcd_to_hex(info->year); - if (year == 0xFF) - r4 |= 0x40; - month = bcd_to_hex(info->month); - if (month == 0xFF || month == 0 || month > 12) - r4 |= 0x80; - day = bcd_to_hex(info->day); - if (day == 0xFF) - r4 |= 0x100; - if (month == MONTH_FEB) - { - if (day > is_leap_year(year) + sDaysPerMonth[1]) - r4 |= 0x100; - } - else - { - if (day > sDaysPerMonth[month - 1]) - r4 |= 0x100; - } - day = bcd_to_hex(info->hour); - if (day > 24) - r4 |= 0x200; - day = bcd_to_hex(info->minute); - if (day > 60) - r4 |= 0x400; - day = bcd_to_hex(info->second); - if (day > 60) - r4 |= 0x800; - return r4; -} - -void rtc_reset(void) -{ - rtc_intr_disable(); - SiiRtcReset(); - rtc_intr_enable(); -} - -void rtc_sub_time_from_datetime(struct SiiRtcInfo * datetime, struct Time * dest, struct Time * timediff) -{ - u16 r4 = rtc_count_days_from_info(datetime); - dest->seconds = bcd_to_hex(datetime->second) - timediff->seconds; - dest->minutes = bcd_to_hex(datetime->minute) - timediff->minutes; - dest->hours = bcd_to_hex(datetime->hour) - timediff->hours; - dest->days = r4 - timediff->days; - if (dest->seconds < 0) - { - dest->seconds += 60; - dest->minutes--; - } - if (dest->minutes < 0) - { - dest->minutes += 60; - dest->hours--; - } - if (dest->hours < 0) - { - dest->hours += 24; - dest->days--; - } -} - -void rtc_sub_time_from_time(struct Time * dest, struct Time * diff, struct Time * src) -{ - dest->seconds = src->seconds - diff->seconds; - dest->minutes = src->minutes - diff->minutes; - dest->hours = src->hours - diff->hours; - dest->days = src->days - diff->days; - if (dest->seconds < 0) - { - dest->seconds += 60; - dest->minutes--; - } - if (dest->minutes < 0) - { - dest->minutes += 60; - dest->hours--; - } - if (dest->hours < 0) - { - dest->hours += 24; - dest->days--; - } -} - -bool32 rtc_maincb_is_rtc_working(void) -{ - rtc_probe_status(); - if (rtc_get_probe_status() & 0xFF0) - return FALSE; - return TRUE; -} - -void rtc_set_datetime(struct SiiRtcInfo * info) -{ - vu16 imeBak = REG_IME; - REG_IME = 0; - SiiRtcSetDateTime(info); - REG_IME = imeBak; -} - -bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 * a0) -{ - rtc_get_status_and_datetime(&sRtcInfoWork); - *a0 = bcd_to_hex(sRtcInfoWork.year); - rtc_sub_time_from_datetime(&sRtcInfoWork, &gRtcUTCTime, LocalTimeOffset); - rtc_sub_time_from_time(&gTimeSinceBerryUpdate, LastBerryTreeUpdate, &gRtcUTCTime); - if (gTimeSinceBerryUpdate.days * 1440 + gTimeSinceBerryUpdate.hours * 60 + gTimeSinceBerryUpdate.minutes >= 0) - return TRUE; - return FALSE; -} - -u32 hex_to_bcd(u8 a0) -{ - u32 r4; - if (a0 > 99) - return 0xFF; - r4 = Div(a0, 10) << 4; - r4 |= Mod(a0, 10); - return r4; -} - -void sii_rtc_inc(u8 * a0) -{ - *a0 = hex_to_bcd(bcd_to_hex(*a0) + 1); -} - -void sii_rtc_inc_month(struct SiiRtcInfo * a0) -{ - sii_rtc_inc(&a0->month); - if (bcd_to_hex(a0->month) > 12) - { - sii_rtc_inc(&a0->year); - a0->month = MONTH_JAN; - } -} - -void sii_rtc_inc_day(struct SiiRtcInfo * a0) -{ - sii_rtc_inc(&a0->day); - if (bcd_to_hex(a0->day) > sDaysPerMonth[bcd_to_hex(a0->month) - 1]) - { - if (!is_leap_year(bcd_to_hex(a0->year)) || bcd_to_hex(a0->month) != MONTH_FEB || bcd_to_hex(a0->day) != 29) - { - a0->day = 1; - sii_rtc_inc_month(a0); - } - } -} - -bool32 rtc_is_past_feb_28_2000(struct SiiRtcInfo * a0) -{ - if (bcd_to_hex(a0->year) == 0) - { - if (bcd_to_hex(a0->month) == MONTH_JAN) - return FALSE; - if (bcd_to_hex(a0->month) > MONTH_FEB) - return TRUE; - if (bcd_to_hex(a0->day) == 29) - return TRUE; - return FALSE; - } - if (bcd_to_hex(a0->year) == 1) - return TRUE; - return FALSE; -} - -void rtc_maincb_fix_date(void) -{ - rtc_get_status_and_datetime(&sRtcInfoWork); - if (bcd_to_hex(sRtcInfoWork.year) == 0 || bcd_to_hex(sRtcInfoWork.year) == 1) - { - if (bcd_to_hex(sRtcInfoWork.year) == 1) - { - sRtcInfoWork.year = 2; - sRtcInfoWork.month = MONTH_JAN; - sRtcInfoWork.day = 2; - rtc_set_datetime(&sRtcInfoWork); - } - else - { - if (rtc_is_past_feb_28_2000(&sRtcInfoWork) == TRUE) - { - sii_rtc_inc_day(&sRtcInfoWork); - sii_rtc_inc(&sRtcInfoWork.year); - } - else - { - sii_rtc_inc(&sRtcInfoWork.year); - } - rtc_set_datetime(&sRtcInfoWork); - } - } -} diff --git a/berry_fix/payload/src/siirtc.c b/berry_fix/payload/src/siirtc.c deleted file mode 100644 index 965a068f1..000000000 --- a/berry_fix/payload/src/siirtc.c +++ /dev/null @@ -1,432 +0,0 @@ -// Ruby/Sapphire/Emerald cartridges contain a Seiko Instruments Inc. (SII) -// S-3511A real-time clock (RTC). This library ("SIIRTC_V001") is for -// communicating with the RTC. - -#include "gba/gba.h" -#include "siirtc.h" - -#define STATUS_INTFE 0x02 // frequency interrupt enable -#define STATUS_INTME 0x08 // per-minute interrupt enable -#define STATUS_INTAE 0x20 // alarm interrupt enable -#define STATUS_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode -#define STATUS_POWER 0x80 // power on or power failure occurred - -#define TEST_MODE 0x80 // flag in the "second" byte - -#define ALARM_AM 0x00 -#define ALARM_PM 0x80 - -#define OFFSET_YEAR offsetof(struct SiiRtcInfo, year) -#define OFFSET_MONTH offsetof(struct SiiRtcInfo, month) -#define OFFSET_DAY offsetof(struct SiiRtcInfo, day) -#define OFFSET_DAY_OF_WEEK offsetof(struct SiiRtcInfo, dayOfWeek) -#define OFFSET_HOUR offsetof(struct SiiRtcInfo, hour) -#define OFFSET_MINUTE offsetof(struct SiiRtcInfo, minute) -#define OFFSET_SECOND offsetof(struct SiiRtcInfo, second) -#define OFFSET_STATUS offsetof(struct SiiRtcInfo, status) -#define OFFSET_ALARM_HOUR offsetof(struct SiiRtcInfo, alarmHour) -#define OFFSET_ALARM_MINUTE offsetof(struct SiiRtcInfo, alarmMinute) - -#define INFO_BUF(info, index) (*((u8 *)(info) + (index))) - -#define DATETIME_BUF(info, index) INFO_BUF(info, OFFSET_YEAR + index) -#define DATETIME_BUF_LEN (OFFSET_SECOND - OFFSET_YEAR + 1) - -#define TIME_BUF(info, index) INFO_BUF(info, OFFSET_HOUR + index) -#define TIME_BUF_LEN (OFFSET_SECOND - OFFSET_HOUR + 1) - -#define WR 0 // command for writing data -#define RD 1 // command for reading data - -#define CMD(n) (0x60 | (n << 1)) - -#define CMD_RESET CMD(0) -#define CMD_STATUS CMD(1) -#define CMD_DATETIME CMD(2) -#define CMD_TIME CMD(3) -#define CMD_ALARM CMD(4) - -#define GPIO_PORT_DATA (*(vu16 *)0x80000C4) -#define GPIO_PORT_DIRECTION (*(vu16 *)0x80000C6) -#define GPIO_PORT_READ_ENABLE (*(vu16 *)0x80000C8) - -extern vu16 GPIOPortDirection; - -static u16 sDummy; // unused variable -static bool8 sLocked; - -static int WriteCommand(u8 value); -static int WriteData(u8 value); -static u8 ReadData(); -static void EnableGpioPortRead(); -static void DisableGpioPortRead(); - -static const char AgbLibRtcVersion[] = "SIIRTC_V001"; - -void SiiRtcUnprotect() -{ - EnableGpioPortRead(); - sLocked = FALSE; -} - -void SiiRtcProtect() -{ - DisableGpioPortRead(); - sLocked = TRUE; -} - -u8 SiiRtcProbe() -{ - u8 errorCode; - struct SiiRtcInfo rtc; - - if (!SiiRtcGetStatus(&rtc)) - return 0; - - errorCode = 0; - - if ((rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == SIIRTCINFO_POWER - || (rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == 0) - { - // The RTC is in 12-hour mode. Reset it and switch to 24-hour mode. - - // Note that the conditions are redundant and equivalent to simply - // "(rtc.status & SIIRTCINFO_24HOUR) == 0". It's possible that this - // was also intended to handle resetting the clock after power failure - // but a mistake was made. - - if (!SiiRtcReset()) - return 0; - - errorCode++; - } - - SiiRtcGetTime(&rtc); - - if (rtc.second & TEST_MODE) - { - // The RTC is in test mode. Reset it to leave test mode. - - if (!SiiRtcReset()) - return (errorCode << 4) & 0xF0; - - errorCode++; - } - - return (errorCode << 4) | 1; -} - -bool8 SiiRtcReset() -{ - u8 result; - struct SiiRtcInfo rtc; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_RESET | WR); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - rtc.status = SIIRTCINFO_24HOUR; - - result = SiiRtcSetStatus(&rtc); - - return result; -} - -bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc) -{ - u8 statusData; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_STATUS | RD); - - GPIO_PORT_DIRECTION = 5; - - statusData = ReadData(); - - rtc->status = (statusData & (STATUS_POWER | STATUS_24HOUR)) - | ((statusData & STATUS_INTAE) >> 3) - | ((statusData & STATUS_INTME) >> 2) - | ((statusData & STATUS_INTFE) >> 1); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc) -{ - u8 statusData; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - statusData = STATUS_24HOUR - | ((rtc->status & SIIRTCINFO_INTAE) << 3) - | ((rtc->status & SIIRTCINFO_INTME) << 2) - | ((rtc->status & SIIRTCINFO_INTFE) << 1); - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_STATUS | WR); - - WriteData(statusData); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc) -{ - u8 i; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_DATETIME | RD); - - GPIO_PORT_DIRECTION = 5; - - for (i = 0; i < DATETIME_BUF_LEN; i++) - DATETIME_BUF(rtc, i) = ReadData(); - - INFO_BUF(rtc, OFFSET_HOUR) &= 0x7F; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcSetDateTime(struct SiiRtcInfo *rtc) -{ - u8 i; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_DATETIME | WR); - - for (i = 0; i < DATETIME_BUF_LEN; i++) - WriteData(DATETIME_BUF(rtc, i)); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcGetTime(struct SiiRtcInfo *rtc) -{ - u8 i; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_TIME | RD); - - GPIO_PORT_DIRECTION = 5; - - for (i = 0; i < TIME_BUF_LEN; i++) - TIME_BUF(rtc, i) = ReadData(); - - INFO_BUF(rtc, OFFSET_HOUR) &= 0x7F; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcSetTime(struct SiiRtcInfo *rtc) -{ - u8 i; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIO_PORT_DIRECTION = 7; - - WriteCommand(CMD_TIME | WR); - - for (i = 0; i < TIME_BUF_LEN; i++) - WriteData(TIME_BUF(rtc, i)); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -bool8 SiiRtcSetAlarm(struct SiiRtcInfo *rtc) -{ - u8 i; - u8 alarmData[2]; - - if (sLocked == TRUE) - return FALSE; - - sLocked = TRUE; - - // Decode BCD. - alarmData[0] = (rtc->alarmHour & 0xF) + 10 * ((rtc->alarmHour >> 4) & 0xF); - - // The AM/PM flag must be set correctly even in 24-hour mode. - - if (alarmData[0] < 12) - alarmData[0] = rtc->alarmHour | ALARM_AM; - else - alarmData[0] = rtc->alarmHour | ALARM_PM; - - alarmData[1] = rtc->alarmMinute; - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 5; - - GPIOPortDirection = 7; // Why is this the only instance that uses a symbol? - - WriteCommand(CMD_ALARM | WR); - - for (i = 0; i < 2; i++) - WriteData(alarmData[i]); - - GPIO_PORT_DATA = 1; - GPIO_PORT_DATA = 1; - - sLocked = FALSE; - - return TRUE; -} - -static int WriteCommand(u8 value) -{ - u8 i; - u8 temp; - - for (i = 0; i < 8; i++) - { - temp = ((value >> (7 - i)) & 1); - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 5; - } - - // control reaches end of non-void function -} - -static int WriteData(u8 value) -{ - u8 i; - u8 temp; - - for (i = 0; i < 8; i++) - { - temp = ((value >> i) & 1); - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 4; - GPIO_PORT_DATA = (temp << 1) | 5; - } - - // control reaches end of non-void function -} - -static u8 ReadData() -{ - u8 i; - u8 temp; - u8 value; - - for (i = 0; i < 8; i++) - { - GPIO_PORT_DATA = 4; - GPIO_PORT_DATA = 4; - GPIO_PORT_DATA = 4; - GPIO_PORT_DATA = 4; - GPIO_PORT_DATA = 4; - GPIO_PORT_DATA = 5; - - temp = ((GPIO_PORT_DATA & 2) >> 1); - value = (value >> 1) | (temp << 7); // UB: accessing uninitialized var - } - - return value; -} - -static void EnableGpioPortRead() -{ - GPIO_PORT_READ_ENABLE = 1; -} - -static void DisableGpioPortRead() -{ - GPIO_PORT_READ_ENABLE = 0; -} diff --git a/berry_fix/payload/sym_bss.txt b/berry_fix/payload/sym_bss.txt deleted file mode 100644 index 3b1c62ae9..000000000 --- a/berry_fix/payload/sym_bss.txt +++ /dev/null @@ -1,5 +0,0 @@ - .include "src/main.o" - .include "src/rtc.o" - .include "src/flash.o" - .include "src/agb_flash.o" - .include "src/siirtc.o" diff --git a/berry_fix/payload/sym_common.txt b/berry_fix/payload/sym_common.txt deleted file mode 100644 index 28b47f52e..000000000 --- a/berry_fix/payload/sym_common.txt +++ /dev/null @@ -1,29 +0,0 @@ - .include "main.o" - .include "rtc.o" - - .align 4 -gFirstSaveSector: @ 0x03001220 - .space 0x4 - -gPrevSaveCounter: @ 0x03001224 - .space 0x4 - -gLastKnownGoodSector: @ 0x03001228 - .space 0x4 - -gDamagedSaveSectors: @ 0x0300122C - .space 0x4 - -gSaveCounter: @ 0x03001230 - .space 0x4 - -gFastSaveSection: @ 0x03001234 - .space 0x4 - -gCurSaveChunk: - .space 0x4 - -gFlashIdentIsValid: @ 0x0300123C - .space 0x4 - - .include "agb_flash.o" diff --git a/berry_fix/payload/sym_ewram.txt b/berry_fix/payload/sym_ewram.txt deleted file mode 100644 index 2c61f5e7e..000000000 --- a/berry_fix/payload/sym_ewram.txt +++ /dev/null @@ -1,3 +0,0 @@ - .include "src/main.o" - .include "src/rtc.o" - .include "src/flash.o" diff --git a/berry_fix/rom.sha1 b/berry_fix/rom.sha1 deleted file mode 100644 index 145b083b2..000000000 --- a/berry_fix/rom.sha1 +++ /dev/null @@ -1 +0,0 @@ -2eb0a94a913bebfb4cb59ceb57f3f965da55ef6d berry_fix.gba diff --git a/charmap.txt b/charmap.txt index 4c01451c8..260607678 100644 --- a/charmap.txt +++ b/charmap.txt @@ -84,6 +84,7 @@ SUPER_RE = A0 '“' = B1 'â€�' = B2 '‘' = B3 +'’' = B4 '\'' = B4 '♂' = B5 '♀' = B6 diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index e136f5444..dcada0bbe 100644 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -1,6 +1,6 @@ -gBGTilemapBuffers1 -gBGTilemapBuffers2 -gBGTilemapBuffers3 +gOverworldTilemapBuffer_Bg2 +gOverworldTilemapBuffer_Bg1 +gOverworldTilemapBuffer_Bg3 gHeldKeyCodeToSend gFieldCallback gFieldCallback2 diff --git a/data/ereader_link_data.s b/data/ereader_link_data.s deleted file mode 100644 index d3269ebfe..000000000 --- a/data/ereader_link_data.s +++ /dev/null @@ -1,6 +0,0 @@ - .section .rodata - - .align 2 -gEReaderLinkData_Start:: - .incbin "data/ereader_link_data.bin" -gEReaderLinkData_End:: diff --git a/data/map_events.s b/data/map_events.s index dcbb9cfb1..cfa5799d3 100644 --- a/data/map_events.s +++ b/data/map_events.s @@ -1,3 +1,4 @@ +#include "constants/global.h" #include "constants/event_bg.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" diff --git a/data/maps.s b/data/maps.s index beb28ddec..9d9ac2101 100644 --- a/data/maps.s +++ b/data/maps.s @@ -1,3 +1,4 @@ +#include "constants/global.h" #include "constants/layouts.h" #include "constants/map_types.h" #include "constants/maps.h" diff --git a/data/maps/AncientTomb/scripts.inc b/data/maps/AncientTomb/scripts.inc index d28ac7bc3..dd2235955 100644 --- a/data/maps/AncientTomb/scripts.inc +++ b/data/maps/AncientTomb/scripts.inc @@ -61,7 +61,7 @@ AncientTomb_EventScript_Registeel:: playmoncry SPECIES_REGISTEEL, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE + setwildbattle SPECIES_REGISTEEL, 40 setflag FLAG_SYS_CTRL_OBJ_DELETE special StartRegiBattle waitstate diff --git a/data/maps/AquaHideout_B1F/scripts.inc b/data/maps/AquaHideout_B1F/scripts.inc index 4f2eb836f..f644f6ae5 100644 --- a/data/maps/AquaHideout_B1F/scripts.inc +++ b/data/maps/AquaHideout_B1F/scripts.inc @@ -29,7 +29,7 @@ AquaHideout_B1F_EventScript_ShowElectrode2:: AquaHideout_B1F_EventScript_Electrode1:: lock faceplayer - setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE + setwildbattle SPECIES_ELECTRODE, 30 waitse playmoncry SPECIES_ELECTRODE, CRY_MODE_ENCOUNTER delay 40 @@ -53,7 +53,7 @@ AquaHideout_B1F_EventScript_DefeatedElectrode1:: AquaHideout_B1F_EventScript_Electrode2:: lock faceplayer - setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE + setwildbattle SPECIES_ELECTRODE, 30 waitse playmoncry SPECIES_ELECTRODE, CRY_MODE_ENCOUNTER delay 40 diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index fb91ee752..320e12d99 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -31,7 +31,7 @@ BattleFrontier_BattlePikeLobby_EventScript_QuitWithoutSaving:: lockall msgbox BattleFrontier_BattlePikeLobby_Text_FailedToSaveBeforeQuitting, MSGBOX_DEFAULT closemessage - pike_set PIKE_DATA_WIN_STREAK 0 + pike_set PIKE_DATA_WIN_STREAK, 0 pike_set PIKE_DATA_WIN_STREAK_ACTIVE, FALSE frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 setvar VAR_TEMP_0, 255 diff --git a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc index 9d060214d..45f042e4f 100644 --- a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc @@ -193,7 +193,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DefeatedLucy:: waitmovement 0 pike_get PIKE_DATA_WIN_STREAK addvar VAR_RESULT, 1 - pike_set PIKE_DATA_WIN_STREAK VAR_RESULT + pike_set PIKE_DATA_WIN_STREAK, VAR_RESULT call BattleFrontier_BattlePikeRoom_EventScript_WarpToFinalRoom waitstate end diff --git a/data/maps/BattleFrontier_OutsideEast/scripts.inc b/data/maps/BattleFrontier_OutsideEast/scripts.inc index f34373480..e8eec6f16 100644 --- a/data/maps/BattleFrontier_OutsideEast/scripts.inc +++ b/data/maps/BattleFrontier_OutsideEast/scripts.inc @@ -129,7 +129,7 @@ BattleFrontier_OutsideEast_EventScript_WaterSudowoodo:: delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_SUDOWOODO - setwildbattle SPECIES_SUDOWOODO, 40, ITEM_NONE + setwildbattle SPECIES_SUDOWOODO, 40 setflag FLAG_SYS_CTRL_OBJ_DELETE dowildbattle clearflag FLAG_SYS_CTRL_OBJ_DELETE diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc index 57d54d6fd..68d3124d9 100644 --- a/data/maps/BirthIsland_Exterior/scripts.inc +++ b/data/maps/BirthIsland_Exterior/scripts.inc @@ -82,10 +82,7 @@ BirthIsland_Exterior_EventScript_Deoxys:: delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_DEOXYS - setvar VAR_0x8004, SPECIES_DEOXYS - setvar VAR_0x8005, 30 @ level - setvar VAR_0x8006, ITEM_NONE - special CreateEventLegalEnemyMon + seteventmon SPECIES_DEOXYS, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/DesertRuins/scripts.inc b/data/maps/DesertRuins/scripts.inc index 2aaa61ebb..21473e87a 100644 --- a/data/maps/DesertRuins/scripts.inc +++ b/data/maps/DesertRuins/scripts.inc @@ -61,7 +61,7 @@ DesertRuins_EventScript_Regirock:: playmoncry SPECIES_REGIROCK, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE + setwildbattle SPECIES_REGIROCK, 40 setflag FLAG_SYS_CTRL_OBJ_DELETE special StartRegiBattle waitstate diff --git a/data/maps/FarawayIsland_Interior/scripts.inc b/data/maps/FarawayIsland_Interior/scripts.inc index 983b4709a..d3d519ed1 100644 --- a/data/maps/FarawayIsland_Interior/scripts.inc +++ b/data/maps/FarawayIsland_Interior/scripts.inc @@ -129,10 +129,7 @@ FarawayIsland_Interior_EventScript_Mew:: special DestroyMewEmergingGrassSprite delay 40 waitmoncry - setvar VAR_0x8004, SPECIES_MEW - setvar VAR_0x8005, 30 @ level - setvar VAR_0x8006, ITEM_NONE - special CreateEventLegalEnemyMon + seteventmon SPECIES_MEW, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/IslandCave/scripts.inc b/data/maps/IslandCave/scripts.inc index 8f8236a5c..d15802aaa 100644 --- a/data/maps/IslandCave/scripts.inc +++ b/data/maps/IslandCave/scripts.inc @@ -94,7 +94,7 @@ IslandCave_EventScript_Regice:: playmoncry SPECIES_REGICE, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_REGICE, 40, ITEM_NONE + setwildbattle SPECIES_REGICE, 40 setflag FLAG_SYS_CTRL_OBJ_DELETE special StartRegiBattle waitstate diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc index 6628360c1..530d6e959 100644 --- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc +++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc @@ -19,7 +19,7 @@ LavaridgeTown_Gym_1F_EventScript_SetTrainerTempVars:: setvar VAR_TEMP_D, 0 setvar VAR_TEMP_E, 0 setvar VAR_TEMP_F, 0 - goto_if_defeated TRAINER_COLE LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar + goto_if_defeated TRAINER_COLE, LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar setvar VAR_TEMP_B, 1 LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar:: goto_if_defeated TRAINER_GERALD, LavaridgeTown_Gym_1F_EventScript_SetAxleTempVar @@ -105,7 +105,7 @@ LavaridgeTown_Gym_1F_EventScript_FlanneryRematch:: LavaridgeTown_Gym_1F_EventScript_Cole:: trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_COLE, LOCALID_COLE, LavaridgeTown_Gym_1F_Text_ColeIntro, LavaridgeTown_Gym_1F_Text_ColeDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript - msgbox LavaridgeTown_Gym_1F_Text_ColePostBattle MSGBOX_AUTOCLOSE + msgbox LavaridgeTown_Gym_1F_Text_ColePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_EventScript_CheckTrainerScript:: diff --git a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc index 993172683..901940ab8 100644 --- a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc +++ b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc @@ -22,7 +22,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_TryUpdateBrendanPos:: checkplayergender goto_if_eq VAR_RESULT, MALE, LittlerootTown_BrendansHouse_2F_EventScript_Ret @ Odd that the MaysHouse equivalent was used below instead - goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 2 LittlerootTown_MaysHouse_2F_EventScript_Ret + goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 2, LittlerootTown_MaysHouse_2F_EventScript_Ret setobjectxyperm LOCALID_RIVAL, 0, 2 setobjectmovementtype LOCALID_RIVAL, MOVEMENT_TYPE_FACE_UP return diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index e7c3bf5dc..67a354342 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -344,9 +344,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_TakeYourTime:: LittlerootTown_ProfessorBirchsLab_EventScript_GiveCyndaquil:: bufferspeciesname STR_VAR_1, SPECIES_CYNDAQUIL setvar VAR_TEMP_1, SPECIES_CYNDAQUIL - givemon SPECIES_CYNDAQUIL, 5, ITEM_NONE - goto_if_eq VAR_RESULT, 0, LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToParty - goto_if_eq VAR_RESULT, 1, LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToPC + givemon SPECIES_CYNDAQUIL, 5 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, LittlerootTown_ProfessorBirchsLab_EventScript_SendCyndaquilToPC hidemonpic goto Common_EventScript_NoMoreRoomForPokemon end @@ -385,9 +385,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedCyndaquil:: LittlerootTown_ProfessorBirchsLab_EventScript_GiveTotodile:: bufferspeciesname STR_VAR_1, SPECIES_TOTODILE setvar VAR_TEMP_1, SPECIES_TOTODILE - givemon SPECIES_TOTODILE, 5, ITEM_NONE - goto_if_eq VAR_RESULT, 0, LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToParty - goto_if_eq VAR_RESULT, 1, LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToPC + givemon SPECIES_TOTODILE, 5 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, LittlerootTown_ProfessorBirchsLab_EventScript_SendTotodileToPC hidemonpic goto Common_EventScript_NoMoreRoomForPokemon end @@ -426,9 +426,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_ReceivedTotodile:: LittlerootTown_ProfessorBirchsLab_EventScript_GiveChikorita:: bufferspeciesname STR_VAR_1, SPECIES_CHIKORITA setvar VAR_TEMP_1, SPECIES_CHIKORITA - givemon SPECIES_CHIKORITA, 5, ITEM_NONE - goto_if_eq VAR_RESULT, 0, LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToParty - goto_if_eq VAR_RESULT, 1, LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToPC + givemon SPECIES_CHIKORITA, 5 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, LittlerootTown_ProfessorBirchsLab_EventScript_SendChikoritaToPC hidemonpic goto Common_EventScript_NoMoreRoomForPokemon end diff --git a/data/maps/MarineCave_End/scripts.inc b/data/maps/MarineCave_End/scripts.inc index 1d988a444..a7ff58369 100644 --- a/data/maps/MarineCave_End/scripts.inc +++ b/data/maps/MarineCave_End/scripts.inc @@ -35,7 +35,7 @@ MarineCave_End_EventScript_Kyogre:: delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_KYOGRE - setwildbattle SPECIES_KYOGRE, 70, ITEM_NONE + setwildbattle SPECIES_KYOGRE, 70 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/MossdeepCity_StevensHouse/scripts.inc b/data/maps/MossdeepCity_StevensHouse/scripts.inc index aac12ec2a..0470e977a 100644 --- a/data/maps/MossdeepCity_StevensHouse/scripts.inc +++ b/data/maps/MossdeepCity_StevensHouse/scripts.inc @@ -86,9 +86,9 @@ MossdeepCity_StevensHouse_EventScript_LeaveBeldum:: MossdeepCity_StevensHouse_EventScript_GiveBeldum:: setvar VAR_TEMP_1, SPECIES_BELDUM - givemon SPECIES_BELDUM, 5, ITEM_NONE - goto_if_eq VAR_RESULT, 0, MossdeepCity_StevensHouse_EventScript_SendBeldumParty - goto_if_eq VAR_RESULT, 1, MossdeepCity_StevensHouse_EventScript_SendBeldumPC + givemon SPECIES_BELDUM, 5 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, MossdeepCity_StevensHouse_EventScript_SendBeldumParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, MossdeepCity_StevensHouse_EventScript_SendBeldumPC goto Common_EventScript_NoMoreRoomForPokemon end diff --git a/data/maps/MtPyre_3F/scripts.inc b/data/maps/MtPyre_3F/scripts.inc index ff15f9939..3c79e807a 100644 --- a/data/maps/MtPyre_3F/scripts.inc +++ b/data/maps/MtPyre_3F/scripts.inc @@ -7,7 +7,7 @@ MtPyre_3F_EventScript_William:: end MtPyre_3F_EventScript_Kayla:: - trainerbattle_single TRAINER_KAYLA, MtPyre_3F_Text_KaylaIntro MtPyre_3F_Text_KaylaDefeat + trainerbattle_single TRAINER_KAYLA, MtPyre_3F_Text_KaylaIntro, MtPyre_3F_Text_KaylaDefeat msgbox MtPyre_3F_Text_KaylaPostBattle, MSGBOX_AUTOCLOSE end diff --git a/data/maps/NavelRock_Bottom/scripts.inc b/data/maps/NavelRock_Bottom/scripts.inc index f6687a36f..90cc22989 100644 --- a/data/maps/NavelRock_Bottom/scripts.inc +++ b/data/maps/NavelRock_Bottom/scripts.inc @@ -53,10 +53,7 @@ NavelRock_Bottom_EventScript_Lugia:: playmoncry SPECIES_LUGIA, CRY_MODE_ENCOUNTER waitmoncry delay 20 - setvar VAR_0x8004, SPECIES_LUGIA - setvar VAR_0x8005, 70 @ level - setvar VAR_0x8006, ITEM_NONE - special CreateEventLegalEnemyMon + seteventmon SPECIES_LUGIA, 70 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/NavelRock_Top/scripts.inc b/data/maps/NavelRock_Top/scripts.inc index 2805f5677..10969367a 100644 --- a/data/maps/NavelRock_Top/scripts.inc +++ b/data/maps/NavelRock_Top/scripts.inc @@ -57,10 +57,7 @@ NavelRock_Top_EventScript_HoOh:: applymovement LOCALID_HO_OH, NavelRock_Top_Movement_HoOhApproach waitmovement 0 special RemoveCameraObject - setvar VAR_0x8004, SPECIES_HO_OH - setvar VAR_0x8005, 70 @ level - setvar VAR_0x8006, ITEM_NONE - special CreateEventLegalEnemyMon + seteventmon SPECIES_HO_OH, 70 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/NewMauville_Inside/scripts.inc b/data/maps/NewMauville_Inside/scripts.inc index 51748380a..244eea436 100644 --- a/data/maps/NewMauville_Inside/scripts.inc +++ b/data/maps/NewMauville_Inside/scripts.inc @@ -176,7 +176,7 @@ NewMauville_Inside_EventScript_GeneratorOff:: NewMauville_Inside_EventScript_Voltorb1:: lock faceplayer - setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE + setwildbattle SPECIES_VOLTORB, 25 waitse playmoncry SPECIES_VOLTORB, CRY_MODE_ENCOUNTER delay 40 @@ -200,7 +200,7 @@ NewMauville_Inside_EventScript_DefeatedVoltorb1:: NewMauville_Inside_EventScript_Voltorb2:: lock faceplayer - setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE + setwildbattle SPECIES_VOLTORB, 25 waitse playmoncry SPECIES_VOLTORB, CRY_MODE_ENCOUNTER delay 40 @@ -224,7 +224,7 @@ NewMauville_Inside_EventScript_DefeatedVoltorb2:: NewMauville_Inside_EventScript_Voltorb3:: lock faceplayer - setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE + setwildbattle SPECIES_VOLTORB, 25 waitse playmoncry SPECIES_VOLTORB, CRY_MODE_ENCOUNTER delay 40 diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc index 0b2227e8b..2060cb03c 100644 --- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc +++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc @@ -90,8 +90,8 @@ Route119_WeatherInstitute_2F_EventScript_ReceiveCastform:: msgbox Route119_WeatherInstitute_2F_Text_ThanksPleaseTakePokemon, MSGBOX_DEFAULT setvar VAR_TEMP_1, SPECIES_CASTFORM givemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER - goto_if_eq VAR_RESULT, 0, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformParty - goto_if_eq VAR_RESULT, 1, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformPC + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformPC goto Common_EventScript_NoMoreRoomForPokemon end diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc index baf721a5c..a0bfbc60c 100644 --- a/data/maps/Route120/scripts.inc +++ b/data/maps/Route120/scripts.inc @@ -193,7 +193,7 @@ Route120_EventScript_StevenBattleKecleon:: playmoncry SPECIES_KECLEON, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_KECLEON, 30, ITEM_NONE + setwildbattle SPECIES_KECLEON, 30 setvar VAR_0x8009, 0 setflag FLAG_SYS_CTRL_OBJ_DELETE dowildbattle diff --git a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc index 987828a29..747070645 100644 --- a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc @@ -145,9 +145,9 @@ RustboroCity_DevonCorp_2F_EventScript_AnorithReady:: RustboroCity_DevonCorp_2F_EventScript_ReceiveLileep:: setvar VAR_TEMP_1, SPECIES_LILEEP - givemon SPECIES_LILEEP, 20, ITEM_NONE - goto_if_eq VAR_RESULT, 0, RustboroCity_DevonCorp_2F_EventScript_ReceiveLileepParty - goto_if_eq VAR_RESULT, 1, RustboroCity_DevonCorp_2F_EventScript_ReceiveLileepPC + givemon SPECIES_LILEEP, 20 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, RustboroCity_DevonCorp_2F_EventScript_ReceiveLileepParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, RustboroCity_DevonCorp_2F_EventScript_ReceiveLileepPC goto Common_EventScript_NoMoreRoomForPokemon end @@ -190,9 +190,9 @@ RustboroCity_DevonCorp_2F_EventScript_FinishReceivingLileep:: RustboroCity_DevonCorp_2F_EventScript_ReceiveAnorith:: setvar VAR_TEMP_1, SPECIES_ANORITH - givemon SPECIES_ANORITH, 20, ITEM_NONE - goto_if_eq VAR_RESULT, 0, RustboroCity_DevonCorp_2F_EventScript_ReceiveAnorithParty - goto_if_eq VAR_RESULT, 1, RustboroCity_DevonCorp_2F_EventScript_ReceiveAnorithPC + givemon SPECIES_ANORITH, 20 + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, RustboroCity_DevonCorp_2F_EventScript_ReceiveAnorithParty + goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, RustboroCity_DevonCorp_2F_EventScript_ReceiveAnorithPC goto Common_EventScript_NoMoreRoomForPokemon end diff --git a/data/maps/SecretBase_BlueCave1/map.json b/data/maps/SecretBase_BlueCave1/map.json index 3fb6157cc..066cfb385 100644 --- a/data/maps/SecretBase_BlueCave1/map.json +++ b/data/maps/SecretBase_BlueCave1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BlueCave2/map.json b/data/maps/SecretBase_BlueCave2/map.json index ca15e39f1..b74fa5afb 100644 --- a/data/maps/SecretBase_BlueCave2/map.json +++ b/data/maps/SecretBase_BlueCave2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BlueCave3/map.json b/data/maps/SecretBase_BlueCave3/map.json index 356b4894d..dd67e2d54 100644 --- a/data/maps/SecretBase_BlueCave3/map.json +++ b/data/maps/SecretBase_BlueCave3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BlueCave4/map.json b/data/maps/SecretBase_BlueCave4/map.json index 078bada8e..3c97371f5 100644 --- a/data/maps/SecretBase_BlueCave4/map.json +++ b/data/maps/SecretBase_BlueCave4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BrownCave1/map.json b/data/maps/SecretBase_BrownCave1/map.json index 6f2dc92f2..062eac9f4 100644 --- a/data/maps/SecretBase_BrownCave1/map.json +++ b/data/maps/SecretBase_BrownCave1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BrownCave2/map.json b/data/maps/SecretBase_BrownCave2/map.json index 11559c12f..eb04f2a8d 100644 --- a/data/maps/SecretBase_BrownCave2/map.json +++ b/data/maps/SecretBase_BrownCave2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BrownCave3/map.json b/data/maps/SecretBase_BrownCave3/map.json index c2dbb7fc4..1d00ee139 100644 --- a/data/maps/SecretBase_BrownCave3/map.json +++ b/data/maps/SecretBase_BrownCave3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_BrownCave4/map.json b/data/maps/SecretBase_BrownCave4/map.json index e7147ae85..f1fb82eb4 100644 --- a/data/maps/SecretBase_BrownCave4/map.json +++ b/data/maps/SecretBase_BrownCave4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_RedCave1/map.json b/data/maps/SecretBase_RedCave1/map.json index fd264fc6c..e83458a87 100644 --- a/data/maps/SecretBase_RedCave1/map.json +++ b/data/maps/SecretBase_RedCave1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_RedCave2/map.json b/data/maps/SecretBase_RedCave2/map.json index b60b3bbff..9a0ac210f 100644 --- a/data/maps/SecretBase_RedCave2/map.json +++ b/data/maps/SecretBase_RedCave2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_RedCave3/map.json b/data/maps/SecretBase_RedCave3/map.json index 079837a62..ce405a40a 100644 --- a/data/maps/SecretBase_RedCave3/map.json +++ b/data/maps/SecretBase_RedCave3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_RedCave4/map.json b/data/maps/SecretBase_RedCave4/map.json index 10fbbfeb0..2b1ad8c2c 100644 --- a/data/maps/SecretBase_RedCave4/map.json +++ b/data/maps/SecretBase_RedCave4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Shrub1/map.json b/data/maps/SecretBase_Shrub1/map.json index e0d1015cb..a028cbe62 100644 --- a/data/maps/SecretBase_Shrub1/map.json +++ b/data/maps/SecretBase_Shrub1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Shrub2/map.json b/data/maps/SecretBase_Shrub2/map.json index 879b7464e..60977e70d 100644 --- a/data/maps/SecretBase_Shrub2/map.json +++ b/data/maps/SecretBase_Shrub2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Shrub3/map.json b/data/maps/SecretBase_Shrub3/map.json index 6751a7414..a513b0bd2 100644 --- a/data/maps/SecretBase_Shrub3/map.json +++ b/data/maps/SecretBase_Shrub3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Shrub4/map.json b/data/maps/SecretBase_Shrub4/map.json index c193b8348..6aded553b 100644 --- a/data/maps/SecretBase_Shrub4/map.json +++ b/data/maps/SecretBase_Shrub4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Tree1/map.json b/data/maps/SecretBase_Tree1/map.json index cd0cad5f0..cd6a0b33a 100644 --- a/data/maps/SecretBase_Tree1/map.json +++ b/data/maps/SecretBase_Tree1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Tree2/map.json b/data/maps/SecretBase_Tree2/map.json index 1ac393a15..3aad151ff 100644 --- a/data/maps/SecretBase_Tree2/map.json +++ b/data/maps/SecretBase_Tree2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Tree3/map.json b/data/maps/SecretBase_Tree3/map.json index b7eec2244..498852c02 100644 --- a/data/maps/SecretBase_Tree3/map.json +++ b/data/maps/SecretBase_Tree3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_Tree4/map.json b/data/maps/SecretBase_Tree4/map.json index 0e068ec94..b24d1d8a9 100644 --- a/data/maps/SecretBase_Tree4/map.json +++ b/data/maps/SecretBase_Tree4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_YellowCave1/map.json b/data/maps/SecretBase_YellowCave1/map.json index 1d873bfe2..54916fda3 100644 --- a/data/maps/SecretBase_YellowCave1/map.json +++ b/data/maps/SecretBase_YellowCave1/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_YellowCave2/map.json b/data/maps/SecretBase_YellowCave2/map.json index af2e957bc..f9d9a572b 100644 --- a/data/maps/SecretBase_YellowCave2/map.json +++ b/data/maps/SecretBase_YellowCave2/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_YellowCave3/map.json b/data/maps/SecretBase_YellowCave3/map.json index d78aa2862..fdcc94c18 100644 --- a/data/maps/SecretBase_YellowCave3/map.json +++ b/data/maps/SecretBase_YellowCave3/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SecretBase_YellowCave4/map.json b/data/maps/SecretBase_YellowCave4/map.json index 0ca4bc4d3..246974eaa 100644 --- a/data/maps/SecretBase_YellowCave4/map.json +++ b/data/maps/SecretBase_YellowCave4/map.json @@ -26,7 +26,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SecretBase_EventScript_RecordMixTrainer", - "flag": "FLAG_DECORATION_0" + "flag": "FLAG_HIDE_SECRET_BASE_TRAINER" }, { "graphics_id": "OBJ_EVENT_GFX_VAR_0", diff --git a/data/maps/SkyPillar_Top/scripts.inc b/data/maps/SkyPillar_Top/scripts.inc index 5c71bbe4b..7b65d9e25 100644 --- a/data/maps/SkyPillar_Top/scripts.inc +++ b/data/maps/SkyPillar_Top/scripts.inc @@ -48,7 +48,7 @@ SkyPillar_Top_EventScript_Rayquaza:: playmoncry SPECIES_RAYQUAZA, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE + setwildbattle SPECIES_RAYQUAZA, 70 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc index c46cefefc..8486739d9 100644 --- a/data/maps/SouthernIsland_Interior/scripts.inc +++ b/data/maps/SouthernIsland_Interior/scripts.inc @@ -47,7 +47,7 @@ SouthernIsland_Interior_EventScript_SetMayGfx:: SouthernIsland_Interior_EventScript_TryLatiEncounter:: lockall - setvar VAR_0x8008, 12 + setvar VAR_0x8008, 12 @ Player's Y coordinate. Not read goto SouthernIsland_Interior_EventScript_Lati end @@ -105,17 +105,11 @@ SouthernIsland_Interior_EventScript_Sign:: end SouthernIsland_Interior_EventScript_SetLatiosBattleVars:: - setvar VAR_0x8004, SPECIES_LATIOS - setvar VAR_0x8005, 50 @ level - setvar VAR_0x8006, ITEM_SOUL_DEW - special CreateEventLegalEnemyMon + seteventmon SPECIES_LATIOS, 50, ITEM_SOUL_DEW return SouthernIsland_Interior_EventScript_SetLatiasBattleVars:: - setvar VAR_0x8004, SPECIES_LATIAS - setvar VAR_0x8005, 50 @ level - setvar VAR_0x8006, ITEM_SOUL_DEW - special CreateEventLegalEnemyMon + seteventmon SPECIES_LATIAS, 50, ITEM_SOUL_DEW return SouthernIsland_Interior_Movement_CameraPanUp: diff --git a/data/maps/TerraCave_End/scripts.inc b/data/maps/TerraCave_End/scripts.inc index 5f0051bec..8b2732d45 100644 --- a/data/maps/TerraCave_End/scripts.inc +++ b/data/maps/TerraCave_End/scripts.inc @@ -35,7 +35,7 @@ TerraCave_End_EventScript_Groudon:: delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_GROUDON - setwildbattle SPECIES_GROUDON, 70, ITEM_NONE + setwildbattle SPECIES_GROUDON, 70 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate diff --git a/data/mb_berry_fix.gba b/data/mb_berry_fix.gba new file mode 100644 index 0000000000000000000000000000000000000000..0afff07f5d2314e2bd35d99de518cbc114009b5e GIT binary patch literal 15348 zcmd_ReRva9`ak?RGkKZ3v^{AWnzm^(Nm^-nO&CUKjcb1}yk*JW@O)=ugKOKI zy=j{ae-~+>qGE7#{=eoQ_^EL9>A!cZ`?dF(zgHT%o|*S}r}dugL$S59?%np;3ybD& z-ZpxOfBt??=7B}L=Fjswiq=Bfo;a+|8R3^d>+RcowR2tMD>>)QC3|@?yXe&AS0<@@ zrt_usXg<_rx&E1@oewQ}Ou1p#S2;gyC^G)(9@jqx_4pqz|BT`aZ~k-ttLD4^Rs8>3 zvatLAe>(Sl+I>=n<@AuM8vjQ*{aRUK^;zmfOB*Y*?~_j;cIJYro*P!xbcn5||0;H# z1gcM8X1}?-*3+P@j&`2>nYH=#S{(`oaIIzr?=(yWbRc{S+EI16a#v~GG{seFe2M!?Y|Nrb4{V)V1 zgH48#cT$_%9XsQcOm>(=2L;dM2hhed>~~U}&54BxkWJ`6wP*m}3VsN@rkn}!B6zZ& z^}*fn#3_i_bjEGx;t*vd87-$CA|*Clo3>6^P9Ysg*NCf6`3X$#W2R-4lvK+h$tsyN zFwxNH1heH-LdXM?F_fBMvYgU~Qeo1BQs2OGBAEotcpLl0lLGc|v@s3=8_!U5NEB?a z?O7tH)MGF+m{l%Bvc&Ro@J*4Xy3Ex`$gHS{WJ(DfBAJy$w95{ZqyD*EQ%?rU9YL;6 zs9TLRmbq-TX|!(x!k@r5V{|imH3F=fWboc+EMyfM zJ~&Q@&S3K9X}g{cuSs8FarhzWX6h@`n*=zTOGG(MrudM2h#6jjF&Y*5Yq3NYRUVFH zU2>wm9>^8ClX-hRB_)DP3b}l05eIt2!gj60>;OEQij7Bpvg4#3^@jSUVvuf#e4G?w zQ}M4yiRk^1avutGO}n<7M}2}%je)F1==zCV>(*@ zPBFqchWaO1yKj+0L9X6g_W9Z7C=U_VrnOM5V0XYA36E|j#QnKR$4?ZPDks+sQ0yJES`EV7U-bQ&!y%b zt?NsnM;*|{R9(Cc^L8`oS{~4e-mhtUV;eLMvCfo><9I7Bg9IfzQ1@7%h$mca9rzEy ze*(T6y#G7!It}5X;A`u_&jT-lp8#Hx*}RBQ4i3Q-6zYgqh-lu)#dm9Yj}U=AC`8nO zHr2)zX|VJ`EY(O$%K&yxGdcGL7Thu-@e5H&`4F9}p!*7P%eph-fb#QIlAGEs`7jqs z?GSW8;-#~70Vw?GDL{1#(C(=gdts=gWf;HJtpdJ93pK6Z=#>v3v=b20doa)K#t?Q;4>}A@M6}W*nu>Nn$0f$b@W+tku}X%qjN zboxYtE>TLfe$gC2&O=$iILnE&V4YpVwz*m4wCX_q-__&<(%)0(pf->jFz%P{qFFM3 z^#l!S9OPgmR~%1M2Ya{)2JU!~LmhahbFyCwc<1Iigb$w&%u&QOcWdvuYXaBb4xPhW zuMVtJiPkY*H$E{66B<;FBU_i9SjrU4N|noAp6jS^;pSIVvejJjEZ}W7&VraLLmddI zM0s}@MEPu3H&cwVni@5`K1n2^L~?cA1TI^0Tp%|&z$>t6kc(~(HtkGKbU-N{q}m`i z$Oi@4>kiWIEG8!W@HQ& zJW1QxdfcT^MF&y1vm@$&No`IYoHIgGT}V|&np2f0Fi{;iDUHqFu6Nikuaqq($y}-U zZ(OPK~trq#8&lRa~7}kO8!-14~AT zQmGwQ2bPT#E>Uy~l9L>xNY1GdE=NPN&2OOU_L2OR8Y#VKMIB6$5z<#Lr4L4PnHX;w z+0ATW)Z2vY^c&=WjD<{?-6jo`oy-l7$Q^`uBM7`ifC3!JbDsK#mLflG|-BrtVc7w!`YclbmPIi25iQO(f*a zJ#hb$-yxu%>1whtrRs9YL@|zNw`Deo@_p8nxv5WCxpNwI;PVlY3?CjwZj{clREQ3L z9<1}!q?uH2k;cIEvZXP~_|4yiT4BhBU*D~X@1}WKaN5r!PRj1J(e^}Fqsi5nh+v+E zwKgEn-9ru8nqm8s#vaZRU9=?1nJ_+4P0?3cmc2$3_6WT?)?#h;Xkn4c%%c8Qm5-LE z%&qRH6KT74W(m>ziIR1h3uA*#jObB$1KG*z>={sWq|Dp$;dSS2H&2CPC@Eg$P4Zl} zOg>hyJY=1g>yfPG(HZxQ!`x9DZ2jhLTs{FVcT_i5&IM)5W?NiUffv_W4`+)G4XiyX zA`a*@iJEcFOUHHCL^J57)XI6=PKp!7xs+|_L#o|2m2_(x$lTCVnsQnd|IKo*HMGpz zF6aCL4P1FLEhpu&u|%E@KC!$Lu7et)Ja@&+l_vy=@-&<6)v(Cfx52I5xSG3S2!7{I z)*ckR^0+`kS_L%orwD`_HxZlS(1py<3-+c73XqO zWTT6(Ag(PEeXuUAH~A@A2&;oyn?8WmC|UJRj7Ht476-Zs`6d4l%~0C?N!ZMpbwPbX z9`xm_ixax3W7*Wv4JqR%qGS?AJ6dGR{!ziyS-DLD!zlXMlj_V7!g+J$+@?g0e+Nc# zWin|}ge=WTuA+X|ptnB({gQdijY7AYqYuVSufZ?s>x4+IkQkY^HIf{H=y{^@koHwIZ)AL*U65`&tP|y(}-jCdNHjEqZyL& zjE8PpvFXU-fQ73&XrC8Q5+)0;NYl0@c1ag` zYw&n-xoD3h8_#7P5RRO*|0K&BHx*wxn(JViZR7A&V{nmO@W@4m7!)c#6?*J~>yW&P zK9;;plbE*RiRg%Cv+i)(*Lz2ZxLBk6nws7pQA_!#(4H7f;yZ=&J-*FMyoTt_&Aj3pY9ZK{y% zw)^t42I)5Ux7k7vw_au{Uytg!cUtaMRpqA7FZ3SiRfjJ0zTLZ~$%X7Ay-4Gtg{w-R zc)NG@<7w{Rs)IDGBA}TXLG}be*A{rO_@p82ru0BjT5^^5#uwcu)1KyRUtV#atXR*@ zO>9kcXDh zdWY!RT!^h2a~;*5Sg~0on>A*$P-zY(V4Y;=a_cj4uD&ETT6$b#bp~;j6{|)yPNWAe zSVq$g)I&FrVOx%Ow5&leH)42johNz9t8}wf*{qz!GL2bER5qK9<;Ebt8c*f8iBcnO zOl*v7{A`Hf(|Gq&FN8Mi8B#X1ZD3lT7lRspkEVQWvHn^9*2MU8Q@mWs9oJP;(UA|6 zb}-lRNodB6RZW3x?xsk)26{7cT(f^llT$v(uY=Nb*_&OLrSBn48Ot5z(8}JrgD4K* z3H#P2DC;iEDQZDoYA|Fcs7oy;lN*aii9Mr`fTrh*EzHSqw>Ig%J>r4GJTt9syLal>&g?XJE#hm#LkoO2FO-YL)B)7Z8;z?^$7&=|mV z(5a44m2>-4w2!}heVvphZb~a}EY9fBkQ{quH#T*`7%FXS%G#2P4>-;|wa!}kDN>t- zVndIG--$XI0dCqsd#=NvX=;*mB{v0+90$ga>Nb|EE@0!M#nv9;&cf5Q_`tJ=Y0P@B zTI$n0=)tDQW=CSz*u%7?ckuc;yVx?vF14g~wtO?_ZApGB(n7_SMx_NU-DpWk={BI{ zQL=)#B1y{Tw#_a)&m67EJtS|eZn;zpxs2-x29PId_}4JT+S6DjSrRXk{PFFBvM`y;N20MXyVF?8K@QVjNJ*|j673M zF^?I{{5%snujOWTmP>7SX^-sP67y1bpb^!LOYNZY%4A&%cne16WNTsqna(P-~W~xC0H`9Xa&5sxBju6Y|$@V(mQEKKc z58~k&hf+>UykiD28{G~bZ*s>4jf>xyI9C(5>q>`NSD8C!{W* z4s4-=t|pDsEiY{3ighO-YVpCoED6Zkz#mN<_-#gGaa&d;$+dRVDGxuMdZSBPsC9lz zt3H~n64R!X`#v9clH_ifqKVTPv?p}wOD zxtF;fb2(A=Yu?eo92XhCqkObFuS`>-5AHyTeoRFz$`lv`RBHC4(()EzS5vCIRf6cS zw9PL;yMAVn+JtVe%k~u4GlmapRz)3|6B5Ttoi?BAG)d(1tj9V{2hf3fncYQpr`>iZ zjTkKPacvmuWsJf@n%B}uXVUq3d*%gZ1xf>A^j-R1X0RB^u+M=|mu%0l2Q$hwJB2sl z2_j&U)5_(526anh`)qsgaUo!+7ldD$Bm#%GNhtBkDa;9urUWU*b10w;h_^E4h`HyX zrig4tBq=y2K9pMxZUCG$K?OO6mnyV~RwZ%wNd-!%g;k@UUgi|K^B%BENx5 zA|#(o+f+Q*6W$M{y|pdDG0Fj_gV#9BNfn??NkKv4U9Aag<@#^$+Ws8yd4Ld(<)!ri)$VS<)r0a7^Tod>a25*={{D#@F6 z$)4}HUNb`%RmC<%+(JvdJY&sFjv90&{UW0)tvyJZ+NEo*B;Ce z=dAIzcjAz8KsoR>JrKC|&0og;yof_N5IsO1d_r=q77whquWri4#|e{EX-O(AiHe&? zIchm=Nn+~;Ds6zc;XwiIraPtf=oXE*CFv1{Q$sDxvTPPN^FJH5>W&v+bJvK}Hh){( zyE&mn_cN~J;!&A@R+q?4pvR1p$~i-=?dR=@8#r?c#wh&HdFB;WD&ZU$^K%a^|G8}D z*z*aF)OeXiE-PM(GTzJjAEqc3?sV2h{t zTD_is!b1|@EH)XtMNvp_oRFq{FH6%7GrsWe!;&{(&)%}?>*hAwERxq`o1HJ&theHE zQj#a9Fintcj#?{g-RWXf)~+{4)1!1B^rPPF9!@MDwTMR@FRE@RZ_8vk%y~`u5EAx1{&B#ch0Ol#7n zl@lqA%bI}7y(*@?yEvC^e%z+&> zI%>d21RtfG8E(l+Fehv~+`L^*o+`C~wi{>eaJ!=+gUiNRa`ncjsISc2Ktw2CGmKWy z)zgx6!^f_d))wouM@hLP-fL+Qo4F61s`CMipVTu`^uPJx)s)BR(XOEy19|J(-=eql zL0za$kg4{){9TEo9On4OW%F(C=!d{9I5(bm`Vv#J8mu2LUy+=7k-&J#HDYKE|9NFy{t?YCQ4k}2T!-7mX*C=&&Tdz6#>RAeeqNb445Wt%N6CvO19NFqT*xT`RsdA7JoU)E49u zQ+xBFbgr#gIV2t`6Gvwq6A!VACq2dNOy*Rf?lZ=J?KV1kG`PO*=t}Q;t3&$&^Oq%R zD#6xQkV>S~TVNqKbGgw3mwqwP^H+*WGA%bl30?8NX1v@kzozpa?%poPw+F@TXP6zH z!n!w#+l}I~z)~#x;<8@)Ait0B^}0OW@szE4tc8+I+Zk1vb9 zsXsod%S2NR*Vi@K^L=fX+uoXX`mA?L{>9K14N8=j_U@L-zRJeRJJ2%vWaT`LRNA^K z|AI~VmBxvgv}@K6eX|zLQr=PC`Db5MU)74L+b!x~^IQ7skEixk_)r4O_D)=aH4KA2Q^uFlFmm~OB-lGf}`fnyt5?6+XO-Okl- zI^dl~>P=~RNyofpA*bQNkn8sr>1b%Foc)C|gJu@LBH4n{jsB=nJTB~TO%YsE>d2J* z#wlcao|c@+f67%zgTy7jRJ`u)!JadHg&Pa`lEW!&?Tw_62)re#S?Pe=2(7Um`Y|}} zi+|w2G)H>v^8nSYfsI`e&tEdeni(2YBSMNv+QWk-5Z!|g5HG;)lAtaA}-|@lgsT%~k z;u|t~&wE=x>oLxyYu+F2RL_znv9ZeoxohO2HJ`%cwRYhp*@_vR0f8}06uccgV}P#F zO$^^L#!32*X{!x^pAS9)zK&Hz8FB7G-a^Jwe;F*M?~->JMT9S1^QV_A2|N+8aBoVM z&m$IIvb-3`T!0J%={6XSpS?X1ck>@~FY!8)8a_`Dkha9@L&6hcLbn)3!b}$S`4Hn| zx|4o55V#gNQI-rs#77`N-u!Mh+AYo_>`0ID@&Elkd+kg5nDo$1%0cDevCu(p7bkYH zaD;z`SX_aF=puxBL*i0TKk6OF~tZWwTH0Sf^USSc(Zl!SPYUNKb! zMfFN>Qc0RY)1)P$Nt9KZEoRU(k%S7pGrU!jNsar&DN$!+zvPrE#TN0X8ks45-&xr0 z>$FOP^sL{xm`Hlp3cw-hv*Mk4#R@RaxmjR?X>Q^;Iq6m0{JdA+yj@Cqk4xbsbAoff zH>vx`GhTh@l$6vbB@zBLZxUrcMJZ{blms8ob?bq<;Z_^g()M{bK%-uNo9;+u083L= z)l7V8NivrG;GMO2=Pdds?$sMjE7;xAABmc$*u(^%r1hzCVymbhiYBs|BT15MYz5z} zRSYbq*3_ogvOOmHIO3egC*GAPut=g_^A7`za>72CnX8}3rZdUim<+IcNr4Tcz%w!0 ziG#(DC&-{aV+mS>7|?|EcpTUOJb@=c|A?nZJ~rZMU=#2Ro&}!6W`v%P z`j`vmOG7${ltG@!L{=mtF4NaSzAbnGEv(NM@e*EULd-PEi4qIX7`pX|l5d*9FMAIe zh}hR5{;Q$SdqF%yjq+7WTNA6D$D_nsq9`SlJkvq7TxXorbU4X_F4miyQFqzka==)J z(b`?iHew9MYR%)>u?d(6FY*CWfI>_HCa+y2mv(S5pcPwzSAcDJ6|VuW1KaTi-ef23 zz)t)LZ?V#!u?ub3%}#$C@38P5+7%zT-(ZS>B1~nZ{50SO+-Smd_~6aaNqk7#iZ;D2 za_7wTr;SjZbirj&$ea$wUy@m5HmM>Z4M;Va zqv>PkkXka2+(hQH(#_-+vVh>XAh(i*Bn%P(Swt2SEFrg1vXnfHhR?|t1b-(uOuAWM z6GuRfl7Emd3Gfy9nj9m?S?L?{E%}a|V4C22(o5n5CkZ)4PLm%%&QRar;)V;7kCJ;D zI?)9I`>0iJv_&3f&WGZI6%B{dXtnYjA2i%AI zS?K}h%(58TgCMJP+{1VT{g2804O|~^0sX+QjIYEc41i^S;4-e@D)d7J3}eLFJ9x7z zHhr+c|0F+hPaB-C{5o*=6JCAsiGjuEp2_ibmPi-HTjY-$ZYOtu)R8+uen+s3+(qsN z`MpS%8;4ea+(U3L`2)ERDbyp1%;fFM4CrGUe_T|T`#8) z5Ocp6@4t%g8n`ka}trb*!gbaA=xB{m9Aq!&Rl{#kTHx$9|tlXWCEE;L@!C%&EU->g2`U; zo5%vT`eLM&U@LhAWE**v;5CBR$#(JvVakQnzXhkQtwL$(*BgLINEkbNNg$=?V*CZB*DAfFO)kbLGNhsf7|cF9-f?7z_X z*(QC#rF*kG21L^2quR3_LPO$k12xEG$$l{v`4QiRo5k`1ePLh2d!diD15do}vxZbk zUvba^rR3S**=?8pqLloglnk7e5+lB}RIrq!0`T`V6N?3H#BFpJ6cnV>YeN8N{ z$y#V(c?Q-3oEMjN7NREK-TbO%={Ryo*w>6K#oxR^$=nL(g;-zssPYHk>3r{VR#%_s z>wBQBzoWl{g}IdB)eSrp8=me^tllpRLpGDzSNJMJd|BjEIMwbfCD!M}1?PpA`+faB z(w8@)BzMkWc1DedL#xCFD|h(UaP!|h*wbcI73&Y=h%F^01cq3DRWI(n)J*TW#I$MO zXhpu~k|jnplq$W{&#po`_HoVug={=TJYm!*y<2@smnyV6l`Kn|#ph;=Q&kGCp1QjgS7L@mB}xCFSkw(kv@d`)B(k|cpE}|{N7saSInlQ^!6&@=CO>?4J(~WM;l?` zz=6qK1>73$(P5k7yoj4s$S*6sPdk-f6n2ift-;>FX9m)Igedrg{Ul)8R zf)tu(3!l0ZFpfnNJ#I@O@>`t?^dt6V2hHQE9)O6cl1^-V7^Y_?yNq!)g}OF?Vp!kXvMC9%9rUx?Qzsd^bL2 z{u3U~x{BxMk65TucC5CCEISn9#b4G~Z|&{xn7IvwoQ)}#AG;V@@C~EWaRKxnA$_N8 z-X`ljy{=A}3U|XtrzB6A8#_hfK92{#2^m-6Z6|HOOC6%XyDu!{?{{KYHvFYiO+0_f z*@xa=doR3v+UF&t-#6H(GIT9Xq+hx{t6Wf#*-v?Kd!a@n^S@ng#UKCX22{7SIQ)kg z_HujO7}wPxC#HS_zMzBc3=j8Gr_;aLinEgbLRgiUk(9Vg&U%(+=*{bI*d2~@ERD`t z5GhD5fW@lri}aiOvts?R!jJjxkkCmBrIn@w{QmEaYgVGxeE#~}=P$2!r0d494qg%1UcHogv`? z`;Isn6aL+D_)BX`tH;*b(B|_eyyeG!7?LW>z*kqJ&0k{}OEdl~GGA+=1-*GQm>Q}6 ze$2yd9SoJqN#{a5pPKc~Bw~3D7Iuai2K_K`hNw4HjkKm%nz^5G zi^vl!ExSk#jU5U}rJ5+R%8=EMwlI~*_t3*uYg~@3j#ex#P0sNB`GQkUnTW4c$L(wY ziuCddM-`31d6Rehc`+737dO487@=1gR^?hmTMY$YR+CawU2mgrJFEF;7yD{zP`x*@ zunY@#qgQ&EUPp-y(`s$4vp4zxsfO%5`HFg2bG}c-V)D@=1i$ZzRez+Cf6CmCx%{Ki zJLp_AFKP7+VGEDd-tdL66y`9h#{UubBZKGPceO5JCzZi6<`1_0D&GoRZ(*6EewO=u zGVZi?B>uz>j;hU4)HYO|Gwe0YePauL<7mT;>|Pp~!_)!3^t)uah`sn!O9 zSjrE5F{+NBkr4&^ri+W>7ThFe&^%CDpaz1PAM4_Mi5(}%<&V@=0NaB_*dYyD=@ojCxiZbqz zHgx8zrKNrn7e(Jf$Ji=ut)7>JH>e_0k zttH7}JhB+!&PRIBp9<&W>#JVgd6=7y(<-^&#!xEss%{pEcSo2WroBgpau~!;A5nU@ z`7F2vKk~j$oCNpR>;hjZ>6t(lb;hixQ*d^=zeX$AMsQ}4LJq6n2sm+K#|g^s*@GR< z6B(9fen>OBm86Z<&Y6D|#y-XO{3iQZD2ok`8LjF#Ql&Uwn1+b1O4hCIE>@M~=n0rd zDZMYWFfU%QjhQwS;=lea&W)++bGC&Gs9QDao_ugmUlw|n#Ty_S=RggeR@|*SnfYoH zGY=~y%EgA1-n|R-s|n&ArqKoYDqD(5e>1OibZTbyh1$NB$--M< zZFPEx>$_MobDYh-sE;x6u2-`mqX3$UaO&9E`a4IoX z`Axw(%qi__Ff3-Fd&gNayDmf7yB}f2>gvCH69Zy%A5guIFx&X)DrSoBdx?!fP7tq3 zd_R2MVMT4ev&_~P-iLDy&U}`7BZ#rAr%+t|jYEhkj$ehv_n0oB!%KLNr_jPI*I@5^ zv8$Iz_*35{$uL=`MPTXWn40=t01X4a&fuWjhM3ZE^SxI@9`yEsdks#=up-myb9n~1 z*p6JK_cQ$Iee|jWz0Y?jBjX->2?r|mx8tG7j~k~ezAM7FQH)%Xoaz7m`9ipBXFNH) zF_XM>N)@JuG2~OOmwClmKE(fWwGVZDu?1YmT&IfxmHaI$degqqA7eI)ZAJnmb2xmo zm-!STKYTUpvTADBxE{T5v_SKbplar`)ZuSCeieN?h5O$LUsd7=$&u5FE7D7tSywXE z3;Hjg&wOdzUd$)alZRDJ(iM^H0hAJSnm?9!kGl}={KEd6xy;b%O0o_W6ix^L{AgD1 zV%R}UU9kkNw8V8ahU!!%hu30Pe*>hNA=4q-)5Mh zfSk`tXMMw8cyYy4QReMZtgs=0S* zJlnT@PA6Z;)FyW)SBpm;VNhkbbr*dJlE_sF(g;VX57zg*Grml!ex4~~_f_%^{VVdf zVs>}TQ;3=FL$~LTez;4D>D{8p7oN8=*Wb&+{-Nt&@kueVZ>5L8KKV$ErL}NcYHE!;D_8*U`M<6)9olDfziym&QEqhyE=tL@rX9bzIH~qG7n3xPmDZNj z+<$Q-L(0utRh00U$l|8w%O0+V)EWjxW#vv7R|~w>U~6Lx~ z&~mi3mf?>G-6;CI9EOI zp9U8fW{ilQ{H_#PZOjB%YLfn};tI!}r&!(-v-UIZB6fOsU%225s(-|b?ga&5ri)MP z+`Y&KA!d_e#$O*XpM(;dy}wZMm%&!byVR2n5FE{fB^huFvv9lR%kv?9SC;>2{r+S9 z9f_Z6ULt(!-0zo9aSA^|4AbQ}e?EdTO-AdI>fODlakA%yoJpmy*=qOua6iFHa+>$s z%4$(viW6)tWt%z6W*5D!+(X zKg~XIFI`kia9vbQe)mI`HsWXAFrWQ>7h+{)UthiRm!F%BU4M~Az2oxu;CAaz zq#6c%j7!z`UH5T^83P4)_*37s$5HM>I3r`Y9y4O&B)+v%k9!5lHCn5(E!)<+{$<8V z;N^o2$iiLQaZ9YgFkDbbkQ=$KsdpvYo-xz;F+N%Kz}n2;P?+D=fG%J6Ucb-kVnJcv z?IL3;5PPhb#eJS{VEXWrtg3IqQ}J}{e4F?}LkEo03-oHY`T|})=X+$Q^3i#5VToZ} zmWyO%V8N;|GhT)(vhhY^xxrbqID|m6I%NDE#-UBMbZ{-ERGOWJ zhHstfs_#W!bMWQwVv6Q)S4>D??-?gx3D>K3| z^+X19L3wRYet4?x{-{x*3RSOt{LlCQmWuebD}Z>JvO|(Wn#tVH6z{dV|Ib&0u>&TR zY82Oh5BmSTi{bxn%FVVX}*GIZnd) zw}4-lMYvYX71=o1LjWwc5fSM<#?J}%85kciQJEN-NI}=or@Hka)BW?67NtdAb^`{K jWrXp`R$y*0h&eSS;dx$fei5!G%N1T>ZW((Z5BR?TL@#y7 literal 0 HcmV?d00001 diff --git a/data/pokemon_colosseum.mb b/data/mb_colosseum.gba similarity index 100% rename from data/pokemon_colosseum.mb rename to data/mb_colosseum.gba diff --git a/data/ereader_link_data.bin b/data/mb_ereader.gba similarity index 100% rename from data/ereader_link_data.bin rename to data/mb_ereader.gba diff --git a/data/multiboot_berry_glitch_fix.s b/data/multiboot_berry_glitch_fix.s index 7d65c0d4d..d0d54d550 100644 --- a/data/multiboot_berry_glitch_fix.s +++ b/data/multiboot_berry_glitch_fix.s @@ -1,5 +1,5 @@ .section .rodata gMultiBootProgram_BerryGlitchFix_Start:: - .incbin "berry_fix/berry_fix.gba" + .incbin "data/mb_berry_fix.gba" gMultiBootProgram_BerryGlitchFix_End:: diff --git a/data/multiboot_ereader.s b/data/multiboot_ereader.s new file mode 100644 index 000000000..ab97f7279 --- /dev/null +++ b/data/multiboot_ereader.s @@ -0,0 +1,6 @@ + .section .rodata + + .align 2 +gMultiBootProgram_EReader_Start:: + .incbin "data/mb_ereader.gba" +gMultiBootProgram_EReader_End:: diff --git a/data/multiboot_pokemon_colosseum.s b/data/multiboot_pokemon_colosseum.s index 179f8a067..a5f894908 100644 --- a/data/multiboot_pokemon_colosseum.s +++ b/data/multiboot_pokemon_colosseum.s @@ -1,5 +1,5 @@ .section .rodata gMultiBootProgram_PokemonColosseum_Start:: - .incbin "data/pokemon_colosseum.mb" + .incbin "data/mb_colosseum.gba" gMultiBootProgram_PokemonColosseum_End:: diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 7d7c028f2..7d52b8c8d 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -80,16 +80,16 @@ gScriptCmdTable:: .4byte ScrCmd_checkdecor @ 0x4d .4byte ScrCmd_checkdecorspace @ 0x4e .4byte ScrCmd_applymovement @ 0x4f - .4byte ScrCmd_applymovement_at @ 0x50 + .4byte ScrCmd_applymovementat @ 0x50 .4byte ScrCmd_waitmovement @ 0x51 - .4byte ScrCmd_waitmovement_at @ 0x52 + .4byte ScrCmd_waitmovementat @ 0x52 .4byte ScrCmd_removeobject @ 0x53 - .4byte ScrCmd_removeobject_at @ 0x54 + .4byte ScrCmd_removeobjectat @ 0x54 .4byte ScrCmd_addobject @ 0x55 - .4byte ScrCmd_addobject_at @ 0x56 + .4byte ScrCmd_addobjectat @ 0x56 .4byte ScrCmd_setobjectxy @ 0x57 - .4byte ScrCmd_showobject_at @ 0x58 - .4byte ScrCmd_hideobject_at @ 0x59 + .4byte ScrCmd_showobjectat @ 0x58 + .4byte ScrCmd_hideobjectat @ 0x59 .4byte ScrCmd_faceplayer @ 0x5a .4byte ScrCmd_turnobject @ 0x5b .4byte ScrCmd_trainerbattle @ 0x5c diff --git a/data/scripts/kecleon.inc b/data/scripts/kecleon.inc index f51dc2fbd..634551902 100644 --- a/data/scripts/kecleon.inc +++ b/data/scripts/kecleon.inc @@ -71,7 +71,7 @@ EventScript_BattleKecleon:: playmoncry SPECIES_KECLEON, CRY_MODE_ENCOUNTER delay 40 waitmoncry - setwildbattle SPECIES_KECLEON, 30, ITEM_NONE + setwildbattle SPECIES_KECLEON, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE dowildbattle clearflag FLAG_SYS_CTRL_OBJ_DELETE diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index d21bb9aab..918a9d630 100644 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -133,7 +133,7 @@ SecretBase_EventScript_InitSecretBase:: closemessage playse SE_EXIT setvar VAR_INIT_SECRET_BASE, 0 - setflag FLAG_DECORATION_0 + setflag FLAG_HIDE_SECRET_BASE_TRAINER special SetPlayerSecretBase special EnterSecretBase setvar VAR_0x8004, 0 @@ -172,14 +172,14 @@ SecretBase_EventScript_Enter:: playse SE_EXIT special IsCurSecretBaseOwnedByAnotherPlayer goto_if_eq VAR_RESULT, FALSE, SecretBase_EventScript_EnterPlayersBase - clearflag FLAG_DECORATION_0 + clearflag FLAG_HIDE_SECRET_BASE_TRAINER special EnterSecretBase setvar VAR_SECRET_BASE_INITIALIZED, 0 waitstate end SecretBase_EventScript_EnterPlayersBase:: - setflag FLAG_DECORATION_0 + setflag FLAG_HIDE_SECRET_BASE_TRAINER special EnterSecretBase setvar VAR_SECRET_BASE_INITIALIZED, 0 waitstate diff --git a/gflib/bg.c b/gflib/bg.c index c3a4be1d4..6e97be207 100644 --- a/gflib/bg.c +++ b/gflib/bg.c @@ -776,75 +776,75 @@ void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dis SetBgAffineInternal(bg, srcCenterX, srcCenterY, dispCenterX, dispCenterY, scaleX, scaleY, rotationAngle); } -u8 Unused_AdjustBgMosaic(u8 a1, u8 a2) +u8 Unused_AdjustBgMosaic(u8 val, u8 mode) { - u16 result = GetGpuReg(REG_OFFSET_MOSAIC); - s16 test1 = result & 0xF; - s16 test2 = (result >> 4) & 0xF; + u16 mosaic = GetGpuReg(REG_OFFSET_MOSAIC); + s16 bgH = mosaic & 0xF; + s16 bgV = (mosaic >> 4) & 0xF; - result &= 0xFF00; + mosaic &= 0xFF00; // clear background mosaic sizes - switch (a2) + switch (mode) { - case 0: + case BG_MOSAIC_SET_HV: default: - test1 = a1 & 0xF; - test2 = a1 >> 0x4; + bgH = val & 0xF; + bgV = val >> 0x4; break; - case 1: - test1 = a1 & 0xF; + case BG_MOSAIC_SET_H: + bgH = val & 0xF; break; - case 2: - if ((test1 + a1) > 0xF) + case BG_MOSAIC_ADD_H: + if ((bgH + val) > 0xF) { - test1 = 0xF; + bgH = 0xF; } else { - test1 += a1; + bgH += val; } break; - case 3: - if ((test1 - a1) < 0) + case BG_MOSAIC_SUB_H: + if ((bgH - val) < 0) { - test1 = 0x0; + bgH = 0x0; } else { - test1 -= a1; + bgH -= val; } break; - case 4: - test2 = a1 & 0xF; + case BG_MOSAIC_SET_V: + bgV = val & 0xF; break; - case 5: - if ((test2 + a1) > 0xF) + case BG_MOSAIC_ADD_V: + if ((bgV + val) > 0xF) { - test2 = 0xF; + bgV = 0xF; } else { - test2 += a1; + bgV += val; } break; - case 6: - if ((test2 - a1) < 0) + case BG_MOSAIC_SUB_V: + if ((bgV - val) < 0) { - test2 = 0x0; + bgV = 0x0; } else { - test2 -= a1; + bgV -= val; } break; } - result |= ((test2 << 0x4) & 0xF0); - result |= (test1 & 0xF); + mosaic |= ((bgV << 0x4) & 0xF0); + mosaic |= (bgH & 0xF); - SetGpuReg(REG_OFFSET_MOSAIC, result); + SetGpuReg(REG_OFFSET_MOSAIC, mosaic); - return result; + return mosaic; } void SetBgTilemapBuffer(u8 bg, void *tilemap) @@ -1053,7 +1053,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0); - firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK); + firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK); } } break; @@ -1064,7 +1064,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { ((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum; - firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK); + firstTileNum = (firstTileNum & (MAPGRID_COLLISION_MASK | MAPGRID_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & MAPGRID_METATILE_ID_MASK); } } break; diff --git a/gflib/bg.h b/gflib/bg.h index 3a0bf3bf9..d8b5a5404 100644 --- a/gflib/bg.h +++ b/gflib/bg.h @@ -28,6 +28,17 @@ enum { BG_COORD_SUB, }; +// Modes for Unused_AdjustBgMosaic +enum { + BG_MOSAIC_SET_HV, + BG_MOSAIC_SET_H, + BG_MOSAIC_ADD_H, + BG_MOSAIC_SUB_H, + BG_MOSAIC_SET_V, + BG_MOSAIC_ADD_V, + BG_MOSAIC_SUB_V, +}; + struct BgTemplate { u16 bg:2; // 0x1, 0x2 -> 0x3 diff --git a/graphics/misc/bag.pal b/graphics/bag/bag.pal similarity index 100% rename from graphics/misc/bag.pal rename to graphics/bag/bag.pal diff --git a/graphics/misc/bag_female.png b/graphics/bag/bag_female.png similarity index 100% rename from graphics/misc/bag_female.png rename to graphics/bag/bag_female.png diff --git a/graphics/misc/bag_male.png b/graphics/bag/bag_male.png similarity index 100% rename from graphics/misc/bag_male.png rename to graphics/bag/bag_male.png diff --git a/graphics/interface/bag_pyramid.pal b/graphics/bag/bag_pyramid.pal similarity index 100% rename from graphics/interface/bag_pyramid.pal rename to graphics/bag/bag_pyramid.pal diff --git a/graphics/interface/bag_pyramid.png b/graphics/bag/bag_pyramid.png similarity index 100% rename from graphics/interface/bag_pyramid.png rename to graphics/bag/bag_pyramid.png diff --git a/graphics/interface/berry_tag.bin b/graphics/bag/berry_tag.bin similarity index 100% rename from graphics/interface/berry_tag.bin rename to graphics/bag/berry_tag.bin diff --git a/graphics/interface/berry_tag_screen.pal b/graphics/bag/berry_tag_screen.pal similarity index 100% rename from graphics/interface/berry_tag_screen.pal rename to graphics/bag/berry_tag_screen.pal diff --git a/graphics/interface/berry_tag_title.bin b/graphics/bag/berry_tag_title.bin similarity index 100% rename from graphics/interface/berry_tag_title.bin rename to graphics/bag/berry_tag_title.bin diff --git a/graphics/interface/check_berry.pal b/graphics/bag/check_berry.pal similarity index 100% rename from graphics/interface/check_berry.pal rename to graphics/bag/check_berry.pal diff --git a/graphics/interface/check_berry.png b/graphics/bag/check_berry.png similarity index 100% rename from graphics/interface/check_berry.png rename to graphics/bag/check_berry.png diff --git a/graphics/interface/check_berry_circle.png b/graphics/bag/check_berry_circle.png similarity index 100% rename from graphics/interface/check_berry_circle.png rename to graphics/bag/check_berry_circle.png diff --git a/graphics/interface/hm.png b/graphics/bag/hm.png similarity index 100% rename from graphics/interface/hm.png rename to graphics/bag/hm.png diff --git a/graphics/interface/bag_screen_tilemap.bin b/graphics/bag/menu.bin similarity index 100% rename from graphics/interface/bag_screen_tilemap.bin rename to graphics/bag/menu.bin diff --git a/graphics/interface/bag_screen.png b/graphics/bag/menu.png similarity index 100% rename from graphics/interface/bag_screen.png rename to graphics/bag/menu.png diff --git a/graphics/interface/bag_screen_female.pal b/graphics/bag/menu_female.pal similarity index 100% rename from graphics/interface/bag_screen_female.pal rename to graphics/bag/menu_female.pal diff --git a/graphics/interface/bag_screen_male.pal b/graphics/bag/menu_male.pal similarity index 100% rename from graphics/interface/bag_screen_male.pal rename to graphics/bag/menu_male.pal diff --git a/graphics/interface/bag_pyramid_tilemap.bin b/graphics/bag/menu_pyramid.bin similarity index 100% rename from graphics/interface/bag_pyramid_tilemap.bin rename to graphics/bag/menu_pyramid.bin diff --git a/graphics/interface/bag_pyramid_interface.pal b/graphics/bag/menu_pyramid.pal similarity index 100% rename from graphics/interface/bag_pyramid_interface.pal rename to graphics/bag/menu_pyramid.pal diff --git a/graphics/interface/bag_spinner.png b/graphics/bag/rotating_ball.png similarity index 100% rename from graphics/interface/bag_spinner.png rename to graphics/bag/rotating_ball.png diff --git a/graphics/interface/select_button.png b/graphics/bag/select_button.png similarity index 100% rename from graphics/interface/select_button.png rename to graphics/bag/select_button.png diff --git a/graphics/interface/ball/dive.png b/graphics/balls/dive.png similarity index 100% rename from graphics/interface/ball/dive.png rename to graphics/balls/dive.png diff --git a/graphics/interface/ball/great.png b/graphics/balls/great.png similarity index 100% rename from graphics/interface/ball/great.png rename to graphics/balls/great.png diff --git a/graphics/interface/ball/luxury.png b/graphics/balls/luxury.png similarity index 100% rename from graphics/interface/ball/luxury.png rename to graphics/balls/luxury.png diff --git a/graphics/interface/ball/master.png b/graphics/balls/master.png similarity index 100% rename from graphics/interface/ball/master.png rename to graphics/balls/master.png diff --git a/graphics/interface/ball/nest.png b/graphics/balls/nest.png similarity index 100% rename from graphics/interface/ball/nest.png rename to graphics/balls/nest.png diff --git a/graphics/interface/ball/net.png b/graphics/balls/net.png similarity index 100% rename from graphics/interface/ball/net.png rename to graphics/balls/net.png diff --git a/graphics/interface/ball_open.png b/graphics/balls/open.png similarity index 100% rename from graphics/interface/ball_open.png rename to graphics/balls/open.png diff --git a/graphics/interface/ball/poke.png b/graphics/balls/poke.png similarity index 100% rename from graphics/interface/ball/poke.png rename to graphics/balls/poke.png diff --git a/graphics/interface/ball/premier.png b/graphics/balls/premier.png similarity index 100% rename from graphics/interface/ball/premier.png rename to graphics/balls/premier.png diff --git a/graphics/interface/ball/repeat.png b/graphics/balls/repeat.png similarity index 100% rename from graphics/interface/ball/repeat.png rename to graphics/balls/repeat.png diff --git a/graphics/interface/ball/safari.png b/graphics/balls/safari.png similarity index 100% rename from graphics/interface/ball/safari.png rename to graphics/balls/safari.png diff --git a/graphics/interface/ball/timer.png b/graphics/balls/timer.png similarity index 100% rename from graphics/interface/ball/timer.png rename to graphics/balls/timer.png diff --git a/graphics/interface/ball/ultra.png b/graphics/balls/ultra.png similarity index 100% rename from graphics/interface/ball/ultra.png rename to graphics/balls/ultra.png diff --git a/graphics/battle_frontier/tourney_line_mask_map.bin b/graphics/battle_frontier/tourney_tree.bin similarity index 100% rename from graphics/battle_frontier/tourney_line_mask_map.bin rename to graphics/battle_frontier/tourney_tree.bin diff --git a/graphics/battle_frontier/tourney_bg.png b/graphics/battle_frontier/tourney_tree.png similarity index 100% rename from graphics/battle_frontier/tourney_bg.png rename to graphics/battle_frontier/tourney_tree.png diff --git a/graphics/interface/hpbar_anim.png b/graphics/battle_interface/hpbar_anim_unused.png similarity index 100% rename from graphics/interface/hpbar_anim.png rename to graphics/battle_interface/hpbar_anim_unused.png diff --git a/graphics/interface/party_menu_hpbar.png b/graphics/battle_interface/hpbar_unused.png similarity index 100% rename from graphics/interface/party_menu_hpbar.png rename to graphics/battle_interface/hpbar_unused.png diff --git a/graphics/interface/numbers1.png b/graphics/battle_interface/numbers1.png similarity index 100% rename from graphics/interface/numbers1.png rename to graphics/battle_interface/numbers1.png diff --git a/graphics/interface/numbers2.png b/graphics/battle_interface/numbers2.png similarity index 100% rename from graphics/interface/numbers2.png rename to graphics/battle_interface/numbers2.png diff --git a/graphics/battle_frontier/text_pp.pal b/graphics/battle_interface/text_pp.pal similarity index 100% rename from graphics/battle_frontier/text_pp.pal rename to graphics/battle_interface/text_pp.pal diff --git a/graphics/berry_crush/crusher.bin b/graphics/berry_crush/text_windows.bin similarity index 100% rename from graphics/berry_crush/crusher.bin rename to graphics/berry_crush/text_windows.bin diff --git a/graphics/unused/intro_birch_beauty.png b/graphics/birch_speech/unused_beauty.png similarity index 100% rename from graphics/unused/intro_birch_beauty.png rename to graphics/birch_speech/unused_beauty.png diff --git a/graphics/misc/cave_transition_black.pal b/graphics/cave_transition/black.pal similarity index 100% rename from graphics/misc/cave_transition_black.pal rename to graphics/cave_transition/black.pal diff --git a/graphics/misc/cave_transition_enter.pal b/graphics/cave_transition/enter.pal similarity index 100% rename from graphics/misc/cave_transition_enter.pal rename to graphics/cave_transition/enter.pal diff --git a/graphics/misc/cave_transition_exit.pal b/graphics/cave_transition/exit.pal similarity index 100% rename from graphics/misc/cave_transition_exit.pal rename to graphics/cave_transition/exit.pal diff --git a/graphics/misc/cave_transition_map.bin b/graphics/cave_transition/tilemap.bin similarity index 100% rename from graphics/misc/cave_transition_map.bin rename to graphics/cave_transition/tilemap.bin diff --git a/graphics/misc/cave_transition.png b/graphics/cave_transition/tiles.png similarity index 100% rename from graphics/misc/cave_transition.png rename to graphics/cave_transition/tiles.png diff --git a/graphics/misc/cave_transition_white.pal b/graphics/cave_transition/white.pal similarity index 100% rename from graphics/misc/cave_transition_white.pal rename to graphics/cave_transition/white.pal diff --git a/graphics/misc/decoration_putting_away_cursor.png b/graphics/decorations/put_away_cursor.png similarity index 100% rename from graphics/misc/decoration_putting_away_cursor.png rename to graphics/decorations/put_away_cursor.png diff --git a/graphics/misc/diploma_hoenn.pal b/graphics/diploma/hoenn.pal similarity index 100% rename from graphics/misc/diploma_hoenn.pal rename to graphics/diploma/hoenn.pal diff --git a/graphics/misc/diploma_national.pal b/graphics/diploma/national.pal similarity index 100% rename from graphics/misc/diploma_national.pal rename to graphics/diploma/national.pal diff --git a/graphics/misc/diploma_map.bin b/graphics/diploma/tilemap.bin similarity index 100% rename from graphics/misc/diploma_map.bin rename to graphics/diploma/tilemap.bin diff --git a/graphics/misc/diploma.png b/graphics/diploma/tiles.png similarity index 100% rename from graphics/misc/diploma.png rename to graphics/diploma/tiles.png diff --git a/graphics/misc/deoxys1.pal b/graphics/field_effects/palettes/deoxys_rock_1.pal similarity index 100% rename from graphics/misc/deoxys1.pal rename to graphics/field_effects/palettes/deoxys_rock_1.pal diff --git a/graphics/misc/deoxys10.pal b/graphics/field_effects/palettes/deoxys_rock_10.pal similarity index 100% rename from graphics/misc/deoxys10.pal rename to graphics/field_effects/palettes/deoxys_rock_10.pal diff --git a/graphics/misc/deoxys11.pal b/graphics/field_effects/palettes/deoxys_rock_11.pal similarity index 100% rename from graphics/misc/deoxys11.pal rename to graphics/field_effects/palettes/deoxys_rock_11.pal diff --git a/graphics/misc/deoxys2.pal b/graphics/field_effects/palettes/deoxys_rock_2.pal similarity index 100% rename from graphics/misc/deoxys2.pal rename to graphics/field_effects/palettes/deoxys_rock_2.pal diff --git a/graphics/misc/deoxys3.pal b/graphics/field_effects/palettes/deoxys_rock_3.pal similarity index 100% rename from graphics/misc/deoxys3.pal rename to graphics/field_effects/palettes/deoxys_rock_3.pal diff --git a/graphics/misc/deoxys4.pal b/graphics/field_effects/palettes/deoxys_rock_4.pal similarity index 100% rename from graphics/misc/deoxys4.pal rename to graphics/field_effects/palettes/deoxys_rock_4.pal diff --git a/graphics/misc/deoxys5.pal b/graphics/field_effects/palettes/deoxys_rock_5.pal similarity index 100% rename from graphics/misc/deoxys5.pal rename to graphics/field_effects/palettes/deoxys_rock_5.pal diff --git a/graphics/misc/deoxys6.pal b/graphics/field_effects/palettes/deoxys_rock_6.pal similarity index 100% rename from graphics/misc/deoxys6.pal rename to graphics/field_effects/palettes/deoxys_rock_6.pal diff --git a/graphics/misc/deoxys7.pal b/graphics/field_effects/palettes/deoxys_rock_7.pal similarity index 100% rename from graphics/misc/deoxys7.pal rename to graphics/field_effects/palettes/deoxys_rock_7.pal diff --git a/graphics/misc/deoxys8.pal b/graphics/field_effects/palettes/deoxys_rock_8.pal similarity index 100% rename from graphics/misc/deoxys8.pal rename to graphics/field_effects/palettes/deoxys_rock_8.pal diff --git a/graphics/misc/deoxys9.pal b/graphics/field_effects/palettes/deoxys_rock_9.pal similarity index 100% rename from graphics/misc/deoxys9.pal rename to graphics/field_effects/palettes/deoxys_rock_9.pal diff --git a/graphics/field_effects/pics/deoxys_rock_fragment_bottom_left.png b/graphics/field_effects/pics/deoxys_rock_fragment_bottom_left.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4f27a40dc7a80e93a4deac028d64ba4cda1092 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuEj@}{69PAe^Ag_1%+k~ zkQ)5p+2>+=pb9ll7sn8enaK$Z%#Mz1Y;LN_jBJjH%C2l~j*89-@+v0|XfT8^Feu71 UcCL@pIt4P*)78&qol`;+0FN{tQ2+n{ literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/deoxys_rock_fragment_bottom_right.png b/graphics/field_effects/pics/deoxys_rock_fragment_bottom_right.png new file mode 100644 index 0000000000000000000000000000000000000000..48cd43d97390462655b68ca6cead952665896b62 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuEj@}{69PAe^Ag_1%+k~ zkQ)5p+2>+=pbA+}7sn8enaK$bOiT`EGB{LPL>pTc2zBUdFic}&;9bFR`>1DuE66BM LS3j3^P6+=pb8C77sn8enaK$WDGW@Cj%;jhsj7@@ipr|aY>BF=&TNhf3|vhd3P6Rq VOiXr%C-8$z^>p=fS?83{1OTU09Q^+=pb8C77sn8enaK$WA_)lz0zoW-Z9F_Zr`(u$dX9ND@$|GcIfw}~hcYmz WIy2t>yg%?5$W%{PKbLh*2~7Z6J|h|c literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/emotion_exclamation.png b/graphics/field_effects/pics/emotion_exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..798b830923460bebef2921a75a8ddbc1e3955656 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&B|J5!3k50KarMTMB z@&A%7SF@_S9fPJE{T9`|SHLi6%aWw(Vn<6$iU0rq12xI!&N~jI3_V>OLpWw8Cp0vd zCmc9%;QK#&fj`winqTFE+?gN$<<%emwJ%|d5%<%aAzI*_$iUEF6m5T2zAp!;nZeW5 K&t;ucLK6U}13)AI literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/emotion_heart.png b/graphics/field_effects/pics/emotion_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..783a1e3bd68732c2ecab6efaf04abf03ea70a549 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&B|J5!3k50KarMTMB z@&A%7SF@_S9fPJE{T9`|SHLi6%aWw(Vn<6$iU0rq12xI!&N~jIoIG6|LpWxZ_HGnp zP~c!TZoD11d6)2nE-}$S>-o?0*;y)Xuw}?}zsQ)#7(8S0qgPQ%pM<-vY}$Ekr(xfm e_U(_R#;GZC1wDKs5~c_=jlt8^&t;ucLK6UE$wj#U literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/emotion_question.png b/graphics/field_effects/pics/emotion_question.png new file mode 100644 index 0000000000000000000000000000000000000000..4907f14b7f60b82a91cb4dcd6f81fe72e0f61ff7 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&B|J5!3k50KarMTMB z@&A%7SF@_S9fPJE{T9`|SHLi6%aWw(Vn<6$iU0rq12xI!&N~jItUO&DLpWw8Cp0vd zCmc9%;QK#&fj`winqTFE+?gN$1f4HqQW94NS2FOx9Uz~$ht?-mF2XEfDY99SPH j9N;sfReMD^lPCkj+{W-0zwb>T2QqlN`njxgN@xNAzhpy2 literal 0 HcmV?d00001 diff --git a/graphics/field_effects/pics/hof_monitor_small.png b/graphics/field_effects/pics/hof_monitor_small.png new file mode 100644 index 0000000000000000000000000000000000000000..368bbfce421115d3f00ecb1e8edf090f5410f23e GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1mbwDelDu@|GVf{c| z@Q5>0^j;_5U5;6yPZk%5`iUBzc6{>k^^^=w`H%>u7oy$|F6uXGzP2t4Klqm^tz_f+ h#obe#r^o+ge{nhM_49{iECJY5_^IA$g%FfdgTe~DWM4fDpUHpimhQF)<`p`7nLgS;Jq+-LJ`LmOoutl9r;B1pHVtDnm{r-UW|;(r;I diff --git a/graphics/misc/deoxys_rock_fragment_top_right.png b/graphics/misc/deoxys_rock_fragment_top_right.png deleted file mode 100644 index 01f10cd07bafb67c95fc88af29ec352b012a2dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=T~8Os5RRG2KmNb}Ti^CS|9xXe z@qfvGcP)R}5X16#9pqA!4;0yYNI;UXTHvu6{1-oD!M<_AnxK diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png deleted file mode 100644 index 595566d2fea26b6281516e483fef6bbb92b861c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fEx#-1*YAsjQ4fAF*N{AWG*!2Ym1 zBb!3Pl=L4bID`Zkj3p!rj94TtN*2UgEKLYIpxbK6%;3LU#kppZzzopr E08s=Sh5!Hn diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png deleted file mode 100644 index 9995984b4ce96069ca1510acc52a99724252dfff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExuAVNAAsjPH`!)(5FyLTz^;T6o z@#;#>bIuK%7P0f5^)s^+Io$G25@fI3utZ8HF|>16mG_bP28-H#_g?QcGGfm^B3^a> Y#y(}8h2|xXJwOI~y85}Sb4q9e0Gm1~2LJ#7 diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png deleted file mode 100644 index 7376fd058ef5b3d284631bc224350f76cc076419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx+BpCi@`0fExHl8kyAsjQ4fAF*N{AWG*!2Ym1 zBb!3Pl=L4bID`Zkj3p!#co+p-5;?e>ma?!)T$C($`$EY;`@ytBa~K)?9aWsoc#LF0 O=6SmMxvXFLcr~N5c|HfnTZ&heTQgy!fTK zEM{Ljk)R^Y>Be`@Bk|m``*UaHr2FjJY*etgk3+8RR5SS3j3^P6WXE%HD z&O`m>2jaDU>0M5V5?wgG`Gnb2&4WUkt2Ve?(Vli-v1y~`W%IHC$KyO=B^%c-?w;yA bJ^ruwO!X<^^G#M*g52Wi>gTe~DWM4fN1Q=d diff --git a/graphics/misc/pokeball_glow.png b/graphics/misc/pokeball_glow.png deleted file mode 100644 index 1c1133b769466a4e1a7eb4954e7299611ec66474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^93adBBp6ht@Pq*=ZBG}+5RRG2KloXA{@1T%7ZTn4 x&-l;FIXmY)Jb!ohbIE`6_cDw8E|&9PU}P}jmMPLs_xuae?&<31vd$@?2>{y(9jpKV diff --git a/graphics/interface/party_menu_bg.bin b/graphics/party_menu/bg.bin similarity index 100% rename from graphics/interface/party_menu_bg.bin rename to graphics/party_menu/bg.bin diff --git a/graphics/interface/party_menu_bg.pal b/graphics/party_menu/bg.pal similarity index 100% rename from graphics/interface/party_menu_bg.pal rename to graphics/party_menu/bg.pal diff --git a/graphics/interface/party_menu_bg.png b/graphics/party_menu/bg.png similarity index 100% rename from graphics/interface/party_menu_bg.png rename to graphics/party_menu/bg.png diff --git a/graphics/interface/party_menu_cancel_button.bin b/graphics/party_menu/cancel_button.bin similarity index 100% rename from graphics/interface/party_menu_cancel_button.bin rename to graphics/party_menu/cancel_button.bin diff --git a/graphics/interface/party_menu_confirm_button.bin b/graphics/party_menu/confirm_button.bin similarity index 100% rename from graphics/interface/party_menu_confirm_button.bin rename to graphics/party_menu/confirm_button.bin diff --git a/graphics/interface/hold_icons.png b/graphics/party_menu/hold_icons.png similarity index 100% rename from graphics/interface/hold_icons.png rename to graphics/party_menu/hold_icons.png diff --git a/graphics/interface/party_menu_pokeball.png b/graphics/party_menu/pokeball.png similarity index 100% rename from graphics/interface/party_menu_pokeball.png rename to graphics/party_menu/pokeball.png diff --git a/graphics/interface/party_menu_pokeball_small.png b/graphics/party_menu/pokeball_small.png similarity index 100% rename from graphics/interface/party_menu_pokeball_small.png rename to graphics/party_menu/pokeball_small.png diff --git a/graphics/interface/pokeblock_device.png b/graphics/pokeblock/device.png similarity index 100% rename from graphics/interface/pokeblock_device.png rename to graphics/pokeblock/device.png diff --git a/graphics/interface/pokeblock_feeding_bg_map.bin b/graphics/pokeblock/feeding_bg.bin similarity index 100% rename from graphics/interface/pokeblock_feeding_bg_map.bin rename to graphics/pokeblock/feeding_bg.bin diff --git a/graphics/interface/pokeblock.bin b/graphics/pokeblock/menu.bin similarity index 100% rename from graphics/interface/pokeblock.bin rename to graphics/pokeblock/menu.bin diff --git a/graphics/interface/pokeblock_case_frame.pal b/graphics/pokeblock/menu.pal similarity index 100% rename from graphics/interface/pokeblock_case_frame.pal rename to graphics/pokeblock/menu.pal diff --git a/graphics/interface/pokeblock_case_frame.png b/graphics/pokeblock/menu.png similarity index 100% rename from graphics/interface/pokeblock_case_frame.png rename to graphics/pokeblock/menu.png diff --git a/graphics/pokemon_storage/close_box_button.bin b/graphics/pokemon_storage/close_box_button.bin new file mode 100644 index 000000000..8b130a481 --- /dev/null +++ b/graphics/pokemon_storage/close_box_button.bin @@ -0,0 +1 @@ +LMNOpqrst\]^_€�‚ƒ„uvwxyz{|}…†‡ˆ‰Š‹Œ� \ No newline at end of file diff --git a/graphics/pokemon_storage/party_slot_empty.bin b/graphics/pokemon_storage/party_slot_empty.bin new file mode 100644 index 000000000..991c232f7 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_empty.bin @@ -0,0 +1 @@ +CDDESTTUcdde \ No newline at end of file diff --git a/graphics/pokemon_storage/party_slot_filled.bin b/graphics/pokemon_storage/party_slot_filled.bin new file mode 100644 index 000000000..c0b93bf14 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_filled.bin @@ -0,0 +1 @@ +@AABPQQR`aab \ No newline at end of file diff --git a/graphics/pokemon_storage/pkmn_data.bin b/graphics/pokemon_storage/pkmn_data.bin new file mode 100644 index 000000000..3336797aa --- /dev/null +++ b/graphics/pokemon_storage/pkmn_data.bin @@ -0,0 +1 @@ +!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/graphics/pokemon_storage/unknown.pal b/graphics/pokemon_storage/text_windows.pal similarity index 100% rename from graphics/pokemon_storage/unknown.pal rename to graphics/pokemon_storage/text_windows.pal diff --git a/graphics/misc/rotating_gate_1.png b/graphics/rotating_gates/l1.png similarity index 100% rename from graphics/misc/rotating_gate_1.png rename to graphics/rotating_gates/l1.png diff --git a/graphics/misc/rotating_gate_2.png b/graphics/rotating_gates/l2.png similarity index 100% rename from graphics/misc/rotating_gate_2.png rename to graphics/rotating_gates/l2.png diff --git a/graphics/misc/rotating_gate_3.png b/graphics/rotating_gates/l3.png similarity index 100% rename from graphics/misc/rotating_gate_3.png rename to graphics/rotating_gates/l3.png diff --git a/graphics/misc/rotating_gate_4.png b/graphics/rotating_gates/l4.png similarity index 100% rename from graphics/misc/rotating_gate_4.png rename to graphics/rotating_gates/l4.png diff --git a/graphics/misc/rotating_gate_5.png b/graphics/rotating_gates/t1.png similarity index 100% rename from graphics/misc/rotating_gate_5.png rename to graphics/rotating_gates/t1.png diff --git a/graphics/misc/rotating_gate_6.png b/graphics/rotating_gates/t2.png similarity index 100% rename from graphics/misc/rotating_gate_6.png rename to graphics/rotating_gates/t2.png diff --git a/graphics/misc/rotating_gate_7.png b/graphics/rotating_gates/t3.png similarity index 100% rename from graphics/misc/rotating_gate_7.png rename to graphics/rotating_gates/t3.png diff --git a/graphics/misc/rotating_gate_8.png b/graphics/rotating_gates/t4.png similarity index 100% rename from graphics/misc/rotating_gate_8.png rename to graphics/rotating_gates/t4.png diff --git a/graphics/interface/mart_frame.bin b/graphics/shop/menu.bin similarity index 100% rename from graphics/interface/mart_frame.bin rename to graphics/shop/menu.bin diff --git a/graphics/interface/mart_frame.png b/graphics/shop/menu.png similarity index 100% rename from graphics/interface/mart_frame.png rename to graphics/shop/menu.png diff --git a/graphics/interface/money.png b/graphics/shop/money.png similarity index 100% rename from graphics/interface/money.png rename to graphics/shop/money.png diff --git a/graphics/misc/birch_bag_map.bin b/graphics/starter_choose/birch_bag.bin similarity index 100% rename from graphics/misc/birch_bag_map.bin rename to graphics/starter_choose/birch_bag.bin diff --git a/graphics/misc/birch_bag.png b/graphics/starter_choose/birch_bag.png similarity index 100% rename from graphics/misc/birch_bag.png rename to graphics/starter_choose/birch_bag.png diff --git a/graphics/misc/birch_grass_map.bin b/graphics/starter_choose/birch_grass.bin similarity index 100% rename from graphics/misc/birch_grass_map.bin rename to graphics/starter_choose/birch_grass.bin diff --git a/graphics/misc/birch_grass.png b/graphics/starter_choose/birch_grass.png similarity index 100% rename from graphics/misc/birch_grass.png rename to graphics/starter_choose/birch_grass.png diff --git a/graphics/misc/pokeball_selection.png b/graphics/starter_choose/pokeball_selection.png similarity index 100% rename from graphics/misc/pokeball_selection.png rename to graphics/starter_choose/pokeball_selection.png diff --git a/graphics/misc/starter_circle.png b/graphics/starter_choose/starter_circle.png similarity index 100% rename from graphics/misc/starter_circle.png rename to graphics/starter_choose/starter_circle.png diff --git a/graphics/interface/summary_a_button.png b/graphics/summary_screen/a_button.png similarity index 100% rename from graphics/interface/summary_a_button.png rename to graphics/summary_screen/a_button.png diff --git a/graphics/interface/summary_b_button.png b/graphics/summary_screen/b_button.png similarity index 100% rename from graphics/interface/summary_b_button.png rename to graphics/summary_screen/b_button.png diff --git a/graphics/interface/powacc_tilemap.bin b/graphics/summary_screen/effect_battle.bin similarity index 100% rename from graphics/interface/powacc_tilemap.bin rename to graphics/summary_screen/effect_battle.bin diff --git a/graphics/interface/summary.bin b/graphics/summary_screen/effect_cancel.bin similarity index 100% rename from graphics/interface/summary.bin rename to graphics/summary_screen/effect_cancel.bin diff --git a/graphics/interface/appealjam_tilemap.bin b/graphics/summary_screen/effect_contest.bin similarity index 100% rename from graphics/interface/appealjam_tilemap.bin rename to graphics/summary_screen/effect_contest.bin diff --git a/graphics/interface/summary_markings.pal b/graphics/summary_screen/markings.pal similarity index 100% rename from graphics/interface/summary_markings.pal rename to graphics/summary_screen/markings.pal diff --git a/graphics/interface/summary_frames.png b/graphics/summary_screen/move_select.png similarity index 100% rename from graphics/interface/summary_frames.png rename to graphics/summary_screen/move_select.png diff --git a/graphics/interface/summary_page_battle_moves.bin b/graphics/summary_screen/page_battle_moves.bin similarity index 100% rename from graphics/interface/summary_page_battle_moves.bin rename to graphics/summary_screen/page_battle_moves.bin diff --git a/graphics/interface/summary_page_contest_moves.bin b/graphics/summary_screen/page_contest_moves.bin similarity index 100% rename from graphics/interface/summary_page_contest_moves.bin rename to graphics/summary_screen/page_contest_moves.bin diff --git a/graphics/interface/summary_page_info.bin b/graphics/summary_screen/page_info.bin similarity index 100% rename from graphics/interface/summary_page_info.bin rename to graphics/summary_screen/page_info.bin diff --git a/graphics/interface/summary_page_info_copy.bin b/graphics/summary_screen/page_info_egg.bin similarity index 100% rename from graphics/interface/summary_page_info_copy.bin rename to graphics/summary_screen/page_info_egg.bin diff --git a/graphics/interface/summary_page_skills.bin b/graphics/summary_screen/page_skills.bin similarity index 100% rename from graphics/interface/summary_page_skills.bin rename to graphics/summary_screen/page_skills.bin diff --git a/graphics/interface/status_tilemap.bin b/graphics/summary_screen/status_tilemap.bin similarity index 100% rename from graphics/interface/status_tilemap.bin rename to graphics/summary_screen/status_tilemap.bin diff --git a/graphics/interface/summary_screen.pal b/graphics/summary_screen/tiles.pal similarity index 100% rename from graphics/interface/summary_screen.pal rename to graphics/summary_screen/tiles.pal diff --git a/graphics/interface/summary_screen.png b/graphics/summary_screen/tiles.png similarity index 100% rename from graphics/interface/summary_screen.png rename to graphics/summary_screen/tiles.png diff --git a/graphics/link/gba.png b/graphics/trade/gba.png similarity index 100% rename from graphics/link/gba.png rename to graphics/trade/gba.png diff --git a/graphics/link/gba_pal2.pal b/graphics/trade/gba_pal2.pal similarity index 100% rename from graphics/link/gba_pal2.pal rename to graphics/trade/gba_pal2.pal diff --git a/graphics/misc/trainer_hill_ereader.pal b/graphics/trainer_hill/ereader.pal similarity index 100% rename from graphics/misc/trainer_hill_ereader.pal rename to graphics/trainer_hill/ereader.pal diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 7a37c5e4f..9e5c19193 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -19,6 +19,7 @@ OBJEVENTGFXDIR := graphics/object_events MISCGFXDIR := graphics/misc JPCONTESTGFXDIR := graphics/contest/japanese POKEDEXGFXDIR := graphics/pokedex +STARTERGFXDIR := graphics/starter_choose types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -371,9 +372,9 @@ $(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp \ $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp @cat $^ >$@ -$(INTERFACEGFXDIR)/battle_bar.4bpp: $(INTERFACEGFXDIR)/hpbar_anim.4bpp \ - $(INTERFACEGFXDIR)/numbers1.4bpp \ - $(INTERFACEGFXDIR)/numbers2.4bpp +$(BATINTGFXDIR)/battle_bar.4bpp: $(BATINTGFXDIR)/hpbar_anim_unused.4bpp \ + $(BATINTGFXDIR)/numbers1.4bpp \ + $(BATINTGFXDIR)/numbers2.4bpp @cat $^ >$@ $(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin \ @@ -429,7 +430,7 @@ $(MASKSGFXDIR)/unused_level_up.4bpp: %.4bpp: %.png $(BATTRANSGFXDIR)/vs_frame.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 16 -$(INTERFACEGFXDIR)/party_menu_bg.4bpp: %.4bpp: %.png +graphics/party_menu/bg.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 62 $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp) @@ -440,7 +441,7 @@ $(TYPESGFXDIR)/move_types.gbapal: $(TYPESGFXDIR)/move_types_1.gbapal \ $(TYPESGFXDIR)/move_types_3.gbapal @cat $^ >$@ -$(INTERFACEGFXDIR)/bag_screen.4bpp: %.4bpp: %.png +graphics/bag/menu.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 53 $(RAYQUAZAGFXDIR)/scene_2/rayquaza.8bpp: %.8bpp: %.png @@ -501,7 +502,7 @@ $(SLOTMACHINEGFXDIR)/reel_time_gfx.4bpp: $(SLOTMACHINEGFXDIR)/reel_time_pikachu. $(SLOTMACHINEGFXDIR)/reel_time_machine.4bpp @cat $^ >$@ -$(UNUSEDGFXDIR)/intro_birch_beauty.4bpp: %.4bpp: %.png +graphics/birch_speech/unused_beauty.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 822 @@ -707,5 +708,5 @@ $(POKEDEXGFXDIR)/region_map.8bpp: %.8bpp: %.png $(POKEDEXGFXDIR)/region_map_affine.8bpp: %.8bpp: %.png $(GFX) $< $@ -num_tiles 233 -$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp +$(STARTERGFXDIR)/birch_help.4bpp: $(STARTERGFXDIR)/birch_bag.4bpp $(STARTERGFXDIR)/birch_grass.4bpp @cat $^ >$@ diff --git a/include/battle.h b/include/battle.h index 9434b9aa8..9656bab8d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -57,7 +57,7 @@ struct ResourceFlags { - u32 flags[4]; + u32 flags[MAX_BATTLERS_COUNT]; }; #define RESOURCE_FLAG_FLASH_FIRE 1 @@ -590,8 +590,8 @@ struct MonSpritesGfx { void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon union { - void* ptr[MAX_BATTLERS_COUNT]; - u8* byte[MAX_BATTLERS_COUNT]; + void* ptr[MAX_BATTLERS_COUNT]; + u8* byte[MAX_BATTLERS_COUNT]; } sprites; struct SpriteTemplate templates[MAX_BATTLERS_COUNT]; struct SpriteFrameImage frameImages[MAX_BATTLERS_COUNT][4]; diff --git a/include/bike.h b/include/bike.h index afe773d42..00f11aefe 100644 --- a/include/bike.h +++ b/include/bike.h @@ -17,11 +17,11 @@ struct BikeHistoryInputInfo // Player speeds enum { - BIKE_SPEED_STANDING, - BIKE_SPEED_NORMAL, - BIKE_SPEED_FAST, - BIKE_SPEED_FASTER, - BIKE_SPEED_FASTEST, + PLAYER_SPEED_STANDING, + PLAYER_SPEED_NORMAL, + PLAYER_SPEED_FAST, + PLAYER_SPEED_FASTER, + PLAYER_SPEED_FASTEST, }; // mach bike transitions enum diff --git a/include/constants/flags.h b/include/constants/flags.h index 793fe1135..eacb2426d 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -190,7 +190,7 @@ #define FLAG_RECEIVED_TM40 0xAA #define FLAG_RECEIVED_TM04 0xAB #define FLAG_RECEIVED_TM03 0xAC -#define FLAG_DECORATION_0 0xAD +#define FLAG_HIDE_SECRET_BASE_TRAINER 0xAD #define FLAG_DECORATION_1 0xAE #define FLAG_DECORATION_2 0xAF #define FLAG_DECORATION_3 0xB0 diff --git a/include/constants/global.h b/include/constants/global.h index 23e3d88e2..742252823 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -138,6 +138,15 @@ #define DIR_NORTHWEST 7 #define DIR_NORTHEAST 8 +#define CONNECTION_INVALID -1 +#define CONNECTION_NONE 0 +#define CONNECTION_SOUTH 1 +#define CONNECTION_NORTH 2 +#define CONNECTION_WEST 3 +#define CONNECTION_EAST 4 +#define CONNECTION_DIVE 5 +#define CONNECTION_EMERGE 6 + #define SIDEWAYS_STAIRS_IMPLEMENTED FALSE #define POST_BATTLE_FOLLOWER_FIX FALSE diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h index 5f37713f3..86f35ce50 100755 --- a/include/constants/metatile_behaviors.h +++ b/include/constants/metatile_behaviors.h @@ -9,7 +9,7 @@ #define MB_UNUSED_05 0x05 #define MB_DEEP_SAND 0x06 #define MB_SHORT_GRASS 0x07 -#define MB_UNUSED_CAVE 0x08 +#define MB_CAVE 0x08 #define MB_LONG_GRASS_SOUTH_EDGE 0x09 #define MB_NO_RUNNING 0x0A #define MB_INDOOR_ENCOUNTER 0x0B @@ -179,8 +179,8 @@ #define MB_UNUSED_AF 0xAF #define MB_SECRET_BASE_PC 0xB0 #define MB_SECRET_BASE_REGISTER_PC 0xB1 -#define MB_SECRET_BASE_UNUSED 0xB2 -#define MB_BLOCK_DECORATION 0xB3 +#define MB_SECRET_BASE_SCENERY 0xB2 +#define MB_SECRET_BASE_TRAINER_SPOT 0xB3 #define MB_SECRET_BASE_DECORATION 0xB4 #define MB_HOLDS_SMALL_DECORATION 0xB5 #define MB_UNUSED_B6 0xB6 @@ -241,6 +241,9 @@ #define MB_UNUSED_ED 0xED #define MB_UNUSED_EE 0xEE #define MB_UNUSED_EF 0xEF + +#define NUM_METATILE_BEHAVIORS 0xF0 + #define MB_INVALID 0xFF #endif // GUARD_METATILE_BEHAVIORS_H diff --git a/include/constants/pokedex.h b/include/constants/pokedex.h new file mode 100644 index 000000000..7ee1b3760 --- /dev/null +++ b/include/constants/pokedex.h @@ -0,0 +1,848 @@ +#ifndef GUARD_CONSTANTS_POKEDEX_H +#define GUARD_CONSTANTS_POKEDEX_H + +// National Pokedex order +enum { + NATIONAL_DEX_NONE, + // Kanto + NATIONAL_DEX_BULBASAUR, + NATIONAL_DEX_IVYSAUR, + NATIONAL_DEX_VENUSAUR, + NATIONAL_DEX_CHARMANDER, + NATIONAL_DEX_CHARMELEON, + NATIONAL_DEX_CHARIZARD, + NATIONAL_DEX_SQUIRTLE, + NATIONAL_DEX_WARTORTLE, + NATIONAL_DEX_BLASTOISE, + NATIONAL_DEX_CATERPIE, + NATIONAL_DEX_METAPOD, + NATIONAL_DEX_BUTTERFREE, + NATIONAL_DEX_WEEDLE, + NATIONAL_DEX_KAKUNA, + NATIONAL_DEX_BEEDRILL, + NATIONAL_DEX_PIDGEY, + NATIONAL_DEX_PIDGEOTTO, + NATIONAL_DEX_PIDGEOT, + NATIONAL_DEX_RATTATA, + NATIONAL_DEX_RATICATE, + NATIONAL_DEX_SPEAROW, + NATIONAL_DEX_FEAROW, + NATIONAL_DEX_EKANS, + NATIONAL_DEX_ARBOK, + NATIONAL_DEX_PIKACHU, + NATIONAL_DEX_RAICHU, + NATIONAL_DEX_SANDSHREW, + NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_NIDORAN_F, + NATIONAL_DEX_NIDORINA, + NATIONAL_DEX_NIDOQUEEN, + NATIONAL_DEX_NIDORAN_M, + NATIONAL_DEX_NIDORINO, + NATIONAL_DEX_NIDOKING, + NATIONAL_DEX_CLEFAIRY, + NATIONAL_DEX_CLEFABLE, + NATIONAL_DEX_VULPIX, + NATIONAL_DEX_NINETALES, + NATIONAL_DEX_JIGGLYPUFF, + NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_ZUBAT, + NATIONAL_DEX_GOLBAT, + NATIONAL_DEX_ODDISH, + NATIONAL_DEX_GLOOM, + NATIONAL_DEX_VILEPLUME, + NATIONAL_DEX_PARAS, + NATIONAL_DEX_PARASECT, + NATIONAL_DEX_VENONAT, + NATIONAL_DEX_VENOMOTH, + NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_DUGTRIO, + NATIONAL_DEX_MEOWTH, + NATIONAL_DEX_PERSIAN, + NATIONAL_DEX_PSYDUCK, + NATIONAL_DEX_GOLDUCK, + NATIONAL_DEX_MANKEY, + NATIONAL_DEX_PRIMEAPE, + NATIONAL_DEX_GROWLITHE, + NATIONAL_DEX_ARCANINE, + NATIONAL_DEX_POLIWAG, + NATIONAL_DEX_POLIWHIRL, + NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_ABRA, + NATIONAL_DEX_KADABRA, + NATIONAL_DEX_ALAKAZAM, + NATIONAL_DEX_MACHOP, + NATIONAL_DEX_MACHOKE, + NATIONAL_DEX_MACHAMP, + NATIONAL_DEX_BELLSPROUT, + NATIONAL_DEX_WEEPINBELL, + NATIONAL_DEX_VICTREEBEL, + NATIONAL_DEX_TENTACOOL, + NATIONAL_DEX_TENTACRUEL, + NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_GOLEM, + NATIONAL_DEX_PONYTA, + NATIONAL_DEX_RAPIDASH, + NATIONAL_DEX_SLOWPOKE, + NATIONAL_DEX_SLOWBRO, + NATIONAL_DEX_MAGNEMITE, + NATIONAL_DEX_MAGNETON, + NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_DODUO, + NATIONAL_DEX_DODRIO, + NATIONAL_DEX_SEEL, + NATIONAL_DEX_DEWGONG, + NATIONAL_DEX_GRIMER, + NATIONAL_DEX_MUK, + NATIONAL_DEX_SHELLDER, + NATIONAL_DEX_CLOYSTER, + NATIONAL_DEX_GASTLY, + NATIONAL_DEX_HAUNTER, + NATIONAL_DEX_GENGAR, + NATIONAL_DEX_ONIX, + NATIONAL_DEX_DROWZEE, + NATIONAL_DEX_HYPNO, + NATIONAL_DEX_KRABBY, + NATIONAL_DEX_KINGLER, + NATIONAL_DEX_VOLTORB, + NATIONAL_DEX_ELECTRODE, + NATIONAL_DEX_EXEGGCUTE, + NATIONAL_DEX_EXEGGUTOR, + NATIONAL_DEX_CUBONE, + NATIONAL_DEX_MAROWAK, + NATIONAL_DEX_HITMONLEE, + NATIONAL_DEX_HITMONCHAN, + NATIONAL_DEX_LICKITUNG, + NATIONAL_DEX_KOFFING, + NATIONAL_DEX_WEEZING, + NATIONAL_DEX_RHYHORN, + NATIONAL_DEX_RHYDON, + NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_TANGELA, + NATIONAL_DEX_KANGASKHAN, + NATIONAL_DEX_HORSEA, + NATIONAL_DEX_SEADRA, + NATIONAL_DEX_GOLDEEN, + NATIONAL_DEX_SEAKING, + NATIONAL_DEX_STARYU, + NATIONAL_DEX_STARMIE, + NATIONAL_DEX_MR_MIME, + NATIONAL_DEX_SCYTHER, + NATIONAL_DEX_JYNX, + NATIONAL_DEX_ELECTABUZZ, + NATIONAL_DEX_MAGMAR, + NATIONAL_DEX_PINSIR, + NATIONAL_DEX_TAUROS, + NATIONAL_DEX_MAGIKARP, + NATIONAL_DEX_GYARADOS, + NATIONAL_DEX_LAPRAS, + NATIONAL_DEX_DITTO, + NATIONAL_DEX_EEVEE, + NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_JOLTEON, + NATIONAL_DEX_FLAREON, + NATIONAL_DEX_PORYGON, + NATIONAL_DEX_OMANYTE, + NATIONAL_DEX_OMASTAR, + NATIONAL_DEX_KABUTO, + NATIONAL_DEX_KABUTOPS, + NATIONAL_DEX_AERODACTYL, + NATIONAL_DEX_SNORLAX, + NATIONAL_DEX_ARTICUNO, + NATIONAL_DEX_ZAPDOS, + NATIONAL_DEX_MOLTRES, + NATIONAL_DEX_DRATINI, + NATIONAL_DEX_DRAGONAIR, + NATIONAL_DEX_DRAGONITE, + NATIONAL_DEX_MEWTWO, + NATIONAL_DEX_MEW, + // Johto + NATIONAL_DEX_CHIKORITA, + NATIONAL_DEX_BAYLEEF, + NATIONAL_DEX_MEGANIUM, + NATIONAL_DEX_CYNDAQUIL, + NATIONAL_DEX_QUILAVA, + NATIONAL_DEX_TYPHLOSION, + NATIONAL_DEX_TOTODILE, + NATIONAL_DEX_CROCONAW, + NATIONAL_DEX_FERALIGATR, + NATIONAL_DEX_SENTRET, + NATIONAL_DEX_FURRET, + NATIONAL_DEX_HOOTHOOT, + NATIONAL_DEX_NOCTOWL, + NATIONAL_DEX_LEDYBA, + NATIONAL_DEX_LEDIAN, + NATIONAL_DEX_SPINARAK, + NATIONAL_DEX_ARIADOS, + NATIONAL_DEX_CROBAT, + NATIONAL_DEX_CHINCHOU, + NATIONAL_DEX_LANTURN, + NATIONAL_DEX_PICHU, + NATIONAL_DEX_CLEFFA, + NATIONAL_DEX_IGGLYBUFF, + NATIONAL_DEX_TOGEPI, + NATIONAL_DEX_TOGETIC, + NATIONAL_DEX_NATU, + NATIONAL_DEX_XATU, + NATIONAL_DEX_MAREEP, + NATIONAL_DEX_FLAAFFY, + NATIONAL_DEX_AMPHAROS, + NATIONAL_DEX_BELLOSSOM, + NATIONAL_DEX_MARILL, + NATIONAL_DEX_AZUMARILL, + NATIONAL_DEX_SUDOWOODO, + NATIONAL_DEX_POLITOED, + NATIONAL_DEX_HOPPIP, + NATIONAL_DEX_SKIPLOOM, + NATIONAL_DEX_JUMPLUFF, + NATIONAL_DEX_AIPOM, + NATIONAL_DEX_SUNKERN, + NATIONAL_DEX_SUNFLORA, + NATIONAL_DEX_YANMA, + NATIONAL_DEX_WOOPER, + NATIONAL_DEX_QUAGSIRE, + NATIONAL_DEX_ESPEON, + NATIONAL_DEX_UMBREON, + NATIONAL_DEX_MURKROW, + NATIONAL_DEX_SLOWKING, + NATIONAL_DEX_MISDREAVUS, + NATIONAL_DEX_UNOWN, + NATIONAL_DEX_WOBBUFFET, + NATIONAL_DEX_GIRAFARIG, + NATIONAL_DEX_PINECO, + NATIONAL_DEX_FORRETRESS, + NATIONAL_DEX_DUNSPARCE, + NATIONAL_DEX_GLIGAR, + NATIONAL_DEX_STEELIX, + NATIONAL_DEX_SNUBBULL, + NATIONAL_DEX_GRANBULL, + NATIONAL_DEX_QWILFISH, + NATIONAL_DEX_SCIZOR, + NATIONAL_DEX_SHUCKLE, + NATIONAL_DEX_HERACROSS, + NATIONAL_DEX_SNEASEL, + NATIONAL_DEX_TEDDIURSA, + NATIONAL_DEX_URSARING, + NATIONAL_DEX_SLUGMA, + NATIONAL_DEX_MAGCARGO, + NATIONAL_DEX_SWINUB, + NATIONAL_DEX_PILOSWINE, + NATIONAL_DEX_CORSOLA, + NATIONAL_DEX_REMORAID, + NATIONAL_DEX_OCTILLERY, + NATIONAL_DEX_DELIBIRD, + NATIONAL_DEX_MANTINE, + NATIONAL_DEX_SKARMORY, + NATIONAL_DEX_HOUNDOUR, + NATIONAL_DEX_HOUNDOOM, + NATIONAL_DEX_KINGDRA, + NATIONAL_DEX_PHANPY, + NATIONAL_DEX_DONPHAN, + NATIONAL_DEX_PORYGON2, + NATIONAL_DEX_STANTLER, + NATIONAL_DEX_SMEARGLE, + NATIONAL_DEX_TYROGUE, + NATIONAL_DEX_HITMONTOP, + NATIONAL_DEX_SMOOCHUM, + NATIONAL_DEX_ELEKID, + NATIONAL_DEX_MAGBY, + NATIONAL_DEX_MILTANK, + NATIONAL_DEX_BLISSEY, + NATIONAL_DEX_RAIKOU, + NATIONAL_DEX_ENTEI, + NATIONAL_DEX_SUICUNE, + NATIONAL_DEX_LARVITAR, + NATIONAL_DEX_PUPITAR, + NATIONAL_DEX_TYRANITAR, + NATIONAL_DEX_LUGIA, + NATIONAL_DEX_HO_OH, + NATIONAL_DEX_CELEBI, + // Hoenn + NATIONAL_DEX_TREECKO, + NATIONAL_DEX_GROVYLE, + NATIONAL_DEX_SCEPTILE, + NATIONAL_DEX_TORCHIC, + NATIONAL_DEX_COMBUSKEN, + NATIONAL_DEX_BLAZIKEN, + NATIONAL_DEX_MUDKIP, + NATIONAL_DEX_MARSHTOMP, + NATIONAL_DEX_SWAMPERT, + NATIONAL_DEX_POOCHYENA, + NATIONAL_DEX_MIGHTYENA, + NATIONAL_DEX_ZIGZAGOON, + NATIONAL_DEX_LINOONE, + NATIONAL_DEX_WURMPLE, + NATIONAL_DEX_SILCOON, + NATIONAL_DEX_BEAUTIFLY, + NATIONAL_DEX_CASCOON, + NATIONAL_DEX_DUSTOX, + NATIONAL_DEX_LOTAD, + NATIONAL_DEX_LOMBRE, + NATIONAL_DEX_LUDICOLO, + NATIONAL_DEX_SEEDOT, + NATIONAL_DEX_NUZLEAF, + NATIONAL_DEX_SHIFTRY, + NATIONAL_DEX_TAILLOW, + NATIONAL_DEX_SWELLOW, + NATIONAL_DEX_WINGULL, + NATIONAL_DEX_PELIPPER, + NATIONAL_DEX_RALTS, + NATIONAL_DEX_KIRLIA, + NATIONAL_DEX_GARDEVOIR, + NATIONAL_DEX_SURSKIT, + NATIONAL_DEX_MASQUERAIN, + NATIONAL_DEX_SHROOMISH, + NATIONAL_DEX_BRELOOM, + NATIONAL_DEX_SLAKOTH, + NATIONAL_DEX_VIGOROTH, + NATIONAL_DEX_SLAKING, + NATIONAL_DEX_NINCADA, + NATIONAL_DEX_NINJASK, + NATIONAL_DEX_SHEDINJA, + NATIONAL_DEX_WHISMUR, + NATIONAL_DEX_LOUDRED, + NATIONAL_DEX_EXPLOUD, + NATIONAL_DEX_MAKUHITA, + NATIONAL_DEX_HARIYAMA, + NATIONAL_DEX_AZURILL, + NATIONAL_DEX_NOSEPASS, + NATIONAL_DEX_SKITTY, + NATIONAL_DEX_DELCATTY, + NATIONAL_DEX_SABLEYE, + NATIONAL_DEX_MAWILE, + NATIONAL_DEX_ARON, + NATIONAL_DEX_LAIRON, + NATIONAL_DEX_AGGRON, + NATIONAL_DEX_MEDITITE, + NATIONAL_DEX_MEDICHAM, + NATIONAL_DEX_ELECTRIKE, + NATIONAL_DEX_MANECTRIC, + NATIONAL_DEX_PLUSLE, + NATIONAL_DEX_MINUN, + NATIONAL_DEX_VOLBEAT, + NATIONAL_DEX_ILLUMISE, + NATIONAL_DEX_ROSELIA, + NATIONAL_DEX_GULPIN, + NATIONAL_DEX_SWALOT, + NATIONAL_DEX_CARVANHA, + NATIONAL_DEX_SHARPEDO, + NATIONAL_DEX_WAILMER, + NATIONAL_DEX_WAILORD, + NATIONAL_DEX_NUMEL, + NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_TORKOAL, + NATIONAL_DEX_SPOINK, + NATIONAL_DEX_GRUMPIG, + NATIONAL_DEX_SPINDA, + NATIONAL_DEX_TRAPINCH, + NATIONAL_DEX_VIBRAVA, + NATIONAL_DEX_FLYGON, + NATIONAL_DEX_CACNEA, + NATIONAL_DEX_CACTURNE, + NATIONAL_DEX_SWABLU, + NATIONAL_DEX_ALTARIA, + NATIONAL_DEX_ZANGOOSE, + NATIONAL_DEX_SEVIPER, + NATIONAL_DEX_LUNATONE, + NATIONAL_DEX_SOLROCK, + NATIONAL_DEX_BARBOACH, + NATIONAL_DEX_WHISCASH, + NATIONAL_DEX_CORPHISH, + NATIONAL_DEX_CRAWDAUNT, + NATIONAL_DEX_BALTOY, + NATIONAL_DEX_CLAYDOL, + NATIONAL_DEX_LILEEP, + NATIONAL_DEX_CRADILY, + NATIONAL_DEX_ANORITH, + NATIONAL_DEX_ARMALDO, + NATIONAL_DEX_FEEBAS, + NATIONAL_DEX_MILOTIC, + NATIONAL_DEX_CASTFORM, + NATIONAL_DEX_KECLEON, + NATIONAL_DEX_SHUPPET, + NATIONAL_DEX_BANETTE, + NATIONAL_DEX_DUSKULL, + NATIONAL_DEX_DUSCLOPS, + NATIONAL_DEX_TROPIUS, + NATIONAL_DEX_CHIMECHO, + NATIONAL_DEX_ABSOL, + NATIONAL_DEX_WYNAUT, + NATIONAL_DEX_SNORUNT, + NATIONAL_DEX_GLALIE, + NATIONAL_DEX_SPHEAL, + NATIONAL_DEX_SEALEO, + NATIONAL_DEX_WALREIN, + NATIONAL_DEX_CLAMPERL, + NATIONAL_DEX_HUNTAIL, + NATIONAL_DEX_GOREBYSS, + NATIONAL_DEX_RELICANTH, + NATIONAL_DEX_LUVDISC, + NATIONAL_DEX_BAGON, + NATIONAL_DEX_SHELGON, + NATIONAL_DEX_SALAMENCE, + NATIONAL_DEX_BELDUM, + NATIONAL_DEX_METANG, + NATIONAL_DEX_METAGROSS, + NATIONAL_DEX_REGIROCK, + NATIONAL_DEX_REGICE, + NATIONAL_DEX_REGISTEEL, + NATIONAL_DEX_LATIAS, + NATIONAL_DEX_LATIOS, + NATIONAL_DEX_KYOGRE, + NATIONAL_DEX_GROUDON, + NATIONAL_DEX_RAYQUAZA, + NATIONAL_DEX_JIRACHI, + NATIONAL_DEX_DEOXYS, + // Old Unown + NATIONAL_DEX_OLD_UNOWN_B, + NATIONAL_DEX_OLD_UNOWN_C, + NATIONAL_DEX_OLD_UNOWN_D, + NATIONAL_DEX_OLD_UNOWN_E, + NATIONAL_DEX_OLD_UNOWN_F, + NATIONAL_DEX_OLD_UNOWN_G, + NATIONAL_DEX_OLD_UNOWN_H, + NATIONAL_DEX_OLD_UNOWN_I, + NATIONAL_DEX_OLD_UNOWN_J, + NATIONAL_DEX_OLD_UNOWN_K, + NATIONAL_DEX_OLD_UNOWN_L, + NATIONAL_DEX_OLD_UNOWN_M, + NATIONAL_DEX_OLD_UNOWN_N, + NATIONAL_DEX_OLD_UNOWN_O, + NATIONAL_DEX_OLD_UNOWN_P, + NATIONAL_DEX_OLD_UNOWN_Q, + NATIONAL_DEX_OLD_UNOWN_R, + NATIONAL_DEX_OLD_UNOWN_S, + NATIONAL_DEX_OLD_UNOWN_T, + NATIONAL_DEX_OLD_UNOWN_U, + NATIONAL_DEX_OLD_UNOWN_V, + NATIONAL_DEX_OLD_UNOWN_W, + NATIONAL_DEX_OLD_UNOWN_X, + NATIONAL_DEX_OLD_UNOWN_Y, + NATIONAL_DEX_OLD_UNOWN_Z, +}; + +#define KANTO_DEX_COUNT NATIONAL_DEX_MEW +#define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI +#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS + +// Hoenn Pokedex order +enum { + HOENN_DEX_NONE, + HOENN_DEX_TREECKO, + HOENN_DEX_GROVYLE, + HOENN_DEX_SCEPTILE, + HOENN_DEX_TORCHIC, + HOENN_DEX_COMBUSKEN, + HOENN_DEX_BLAZIKEN, + HOENN_DEX_MUDKIP, + HOENN_DEX_MARSHTOMP, + HOENN_DEX_SWAMPERT, + HOENN_DEX_POOCHYENA, + HOENN_DEX_MIGHTYENA, + HOENN_DEX_ZIGZAGOON, + HOENN_DEX_LINOONE, + HOENN_DEX_WURMPLE, + HOENN_DEX_SILCOON, + HOENN_DEX_BEAUTIFLY, + HOENN_DEX_CASCOON, + HOENN_DEX_DUSTOX, + HOENN_DEX_LOTAD, + HOENN_DEX_LOMBRE, + HOENN_DEX_LUDICOLO, + HOENN_DEX_SEEDOT, + HOENN_DEX_NUZLEAF, + HOENN_DEX_SHIFTRY, + HOENN_DEX_TAILLOW, + HOENN_DEX_SWELLOW, + HOENN_DEX_WINGULL, + HOENN_DEX_PELIPPER, + HOENN_DEX_RALTS, + HOENN_DEX_KIRLIA, + HOENN_DEX_GARDEVOIR, + HOENN_DEX_SURSKIT, + HOENN_DEX_MASQUERAIN, + HOENN_DEX_SHROOMISH, + HOENN_DEX_BRELOOM, + HOENN_DEX_SLAKOTH, + HOENN_DEX_VIGOROTH, + HOENN_DEX_SLAKING, + HOENN_DEX_ABRA, + HOENN_DEX_KADABRA, + HOENN_DEX_ALAKAZAM, + HOENN_DEX_NINCADA, + HOENN_DEX_NINJASK, + HOENN_DEX_SHEDINJA, + HOENN_DEX_WHISMUR, + HOENN_DEX_LOUDRED, + HOENN_DEX_EXPLOUD, + HOENN_DEX_MAKUHITA, + HOENN_DEX_HARIYAMA, + HOENN_DEX_GOLDEEN, + HOENN_DEX_SEAKING, + HOENN_DEX_MAGIKARP, + HOENN_DEX_GYARADOS, + HOENN_DEX_AZURILL, + HOENN_DEX_MARILL, + HOENN_DEX_AZUMARILL, + HOENN_DEX_GEODUDE, + HOENN_DEX_GRAVELER, + HOENN_DEX_GOLEM, + HOENN_DEX_NOSEPASS, + HOENN_DEX_SKITTY, + HOENN_DEX_DELCATTY, + HOENN_DEX_ZUBAT, + HOENN_DEX_GOLBAT, + HOENN_DEX_CROBAT, + HOENN_DEX_TENTACOOL, + HOENN_DEX_TENTACRUEL, + HOENN_DEX_SABLEYE, + HOENN_DEX_MAWILE, + HOENN_DEX_ARON, + HOENN_DEX_LAIRON, + HOENN_DEX_AGGRON, + HOENN_DEX_MACHOP, + HOENN_DEX_MACHOKE, + HOENN_DEX_MACHAMP, + HOENN_DEX_MEDITITE, + HOENN_DEX_MEDICHAM, + HOENN_DEX_ELECTRIKE, + HOENN_DEX_MANECTRIC, + HOENN_DEX_PLUSLE, + HOENN_DEX_MINUN, + HOENN_DEX_MAGNEMITE, + HOENN_DEX_MAGNETON, + HOENN_DEX_VOLTORB, + HOENN_DEX_ELECTRODE, + HOENN_DEX_VOLBEAT, + HOENN_DEX_ILLUMISE, + HOENN_DEX_ODDISH, + HOENN_DEX_GLOOM, + HOENN_DEX_VILEPLUME, + HOENN_DEX_BELLOSSOM, + HOENN_DEX_DODUO, + HOENN_DEX_DODRIO, + HOENN_DEX_ROSELIA, + HOENN_DEX_GULPIN, + HOENN_DEX_SWALOT, + HOENN_DEX_CARVANHA, + HOENN_DEX_SHARPEDO, + HOENN_DEX_WAILMER, + HOENN_DEX_WAILORD, + HOENN_DEX_NUMEL, + HOENN_DEX_CAMERUPT, + HOENN_DEX_SLUGMA, + HOENN_DEX_MAGCARGO, + HOENN_DEX_TORKOAL, + HOENN_DEX_GRIMER, + HOENN_DEX_MUK, + HOENN_DEX_KOFFING, + HOENN_DEX_WEEZING, + HOENN_DEX_SPOINK, + HOENN_DEX_GRUMPIG, + HOENN_DEX_SANDSHREW, + HOENN_DEX_SANDSLASH, + HOENN_DEX_SPINDA, + HOENN_DEX_SKARMORY, + HOENN_DEX_TRAPINCH, + HOENN_DEX_VIBRAVA, + HOENN_DEX_FLYGON, + HOENN_DEX_CACNEA, + HOENN_DEX_CACTURNE, + HOENN_DEX_SWABLU, + HOENN_DEX_ALTARIA, + HOENN_DEX_ZANGOOSE, + HOENN_DEX_SEVIPER, + HOENN_DEX_LUNATONE, + HOENN_DEX_SOLROCK, + HOENN_DEX_BARBOACH, + HOENN_DEX_WHISCASH, + HOENN_DEX_CORPHISH, + HOENN_DEX_CRAWDAUNT, + HOENN_DEX_BALTOY, + HOENN_DEX_CLAYDOL, + HOENN_DEX_LILEEP, + HOENN_DEX_CRADILY, + HOENN_DEX_ANORITH, + HOENN_DEX_ARMALDO, + HOENN_DEX_IGGLYBUFF, + HOENN_DEX_JIGGLYPUFF, + HOENN_DEX_WIGGLYTUFF, + HOENN_DEX_FEEBAS, + HOENN_DEX_MILOTIC, + HOENN_DEX_CASTFORM, + HOENN_DEX_STARYU, + HOENN_DEX_STARMIE, + HOENN_DEX_KECLEON, + HOENN_DEX_SHUPPET, + HOENN_DEX_BANETTE, + HOENN_DEX_DUSKULL, + HOENN_DEX_DUSCLOPS, + HOENN_DEX_TROPIUS, + HOENN_DEX_CHIMECHO, + HOENN_DEX_ABSOL, + HOENN_DEX_VULPIX, + HOENN_DEX_NINETALES, + HOENN_DEX_PICHU, + HOENN_DEX_PIKACHU, + HOENN_DEX_RAICHU, + HOENN_DEX_PSYDUCK, + HOENN_DEX_GOLDUCK, + HOENN_DEX_WYNAUT, + HOENN_DEX_WOBBUFFET, + HOENN_DEX_NATU, + HOENN_DEX_XATU, + HOENN_DEX_GIRAFARIG, + HOENN_DEX_PHANPY, + HOENN_DEX_DONPHAN, + HOENN_DEX_PINSIR, + HOENN_DEX_HERACROSS, + HOENN_DEX_RHYHORN, + HOENN_DEX_RHYDON, + HOENN_DEX_SNORUNT, + HOENN_DEX_GLALIE, + HOENN_DEX_SPHEAL, + HOENN_DEX_SEALEO, + HOENN_DEX_WALREIN, + HOENN_DEX_CLAMPERL, + HOENN_DEX_HUNTAIL, + HOENN_DEX_GOREBYSS, + HOENN_DEX_RELICANTH, + HOENN_DEX_CORSOLA, + HOENN_DEX_CHINCHOU, + HOENN_DEX_LANTURN, + HOENN_DEX_LUVDISC, + HOENN_DEX_HORSEA, + HOENN_DEX_SEADRA, + HOENN_DEX_KINGDRA, + HOENN_DEX_BAGON, + HOENN_DEX_SHELGON, + HOENN_DEX_SALAMENCE, + HOENN_DEX_BELDUM, + HOENN_DEX_METANG, + HOENN_DEX_METAGROSS, + HOENN_DEX_REGIROCK, + HOENN_DEX_REGICE, + HOENN_DEX_REGISTEEL, + HOENN_DEX_LATIAS, + HOENN_DEX_LATIOS, + HOENN_DEX_KYOGRE, + HOENN_DEX_GROUDON, + HOENN_DEX_RAYQUAZA, + HOENN_DEX_JIRACHI, + HOENN_DEX_DEOXYS, + // End of Hoenn Dex (see HOENN_DEX_COUNT) + // Here below have values but are excluded from the Pokedex + HOENN_DEX_BULBASAUR, + HOENN_DEX_IVYSAUR, + HOENN_DEX_VENUSAUR, + HOENN_DEX_CHARMANDER, + HOENN_DEX_CHARMELEON, + HOENN_DEX_CHARIZARD, + HOENN_DEX_SQUIRTLE, + HOENN_DEX_WARTORTLE, + HOENN_DEX_BLASTOISE, + HOENN_DEX_CATERPIE, + HOENN_DEX_METAPOD, + HOENN_DEX_BUTTERFREE, + HOENN_DEX_WEEDLE, + HOENN_DEX_KAKUNA, + HOENN_DEX_BEEDRILL, + HOENN_DEX_PIDGEY, + HOENN_DEX_PIDGEOTTO, + HOENN_DEX_PIDGEOT, + HOENN_DEX_RATTATA, + HOENN_DEX_RATICATE, + HOENN_DEX_SPEAROW, + HOENN_DEX_FEAROW, + HOENN_DEX_EKANS, + HOENN_DEX_ARBOK, + HOENN_DEX_NIDORAN_F, + HOENN_DEX_NIDORINA, + HOENN_DEX_NIDOQUEEN, + HOENN_DEX_NIDORAN_M, + HOENN_DEX_NIDORINO, + HOENN_DEX_NIDOKING, + HOENN_DEX_CLEFAIRY, + HOENN_DEX_CLEFABLE, + HOENN_DEX_PARAS, + HOENN_DEX_PARASECT, + HOENN_DEX_VENONAT, + HOENN_DEX_VENOMOTH, + HOENN_DEX_DIGLETT, + HOENN_DEX_DUGTRIO, + HOENN_DEX_MEOWTH, + HOENN_DEX_PERSIAN, + HOENN_DEX_MANKEY, + HOENN_DEX_PRIMEAPE, + HOENN_DEX_GROWLITHE, + HOENN_DEX_ARCANINE, + HOENN_DEX_POLIWAG, + HOENN_DEX_POLIWHIRL, + HOENN_DEX_POLIWRATH, + HOENN_DEX_BELLSPROUT, + HOENN_DEX_WEEPINBELL, + HOENN_DEX_VICTREEBEL, + HOENN_DEX_PONYTA, + HOENN_DEX_RAPIDASH, + HOENN_DEX_SLOWPOKE, + HOENN_DEX_SLOWBRO, + HOENN_DEX_FARFETCHD, + HOENN_DEX_SEEL, + HOENN_DEX_DEWGONG, + HOENN_DEX_SHELLDER, + HOENN_DEX_CLOYSTER, + HOENN_DEX_GASTLY, + HOENN_DEX_HAUNTER, + HOENN_DEX_GENGAR, + HOENN_DEX_ONIX, + HOENN_DEX_DROWZEE, + HOENN_DEX_HYPNO, + HOENN_DEX_KRABBY, + HOENN_DEX_KINGLER, + HOENN_DEX_EXEGGCUTE, + HOENN_DEX_EXEGGUTOR, + HOENN_DEX_CUBONE, + HOENN_DEX_MAROWAK, + HOENN_DEX_HITMONLEE, + HOENN_DEX_HITMONCHAN, + HOENN_DEX_LICKITUNG, + HOENN_DEX_CHANSEY, + HOENN_DEX_TANGELA, + HOENN_DEX_KANGASKHAN, + HOENN_DEX_MR_MIME, + HOENN_DEX_SCYTHER, + HOENN_DEX_JYNX, + HOENN_DEX_ELECTABUZZ, + HOENN_DEX_MAGMAR, + HOENN_DEX_TAUROS, + HOENN_DEX_LAPRAS, + HOENN_DEX_DITTO, + HOENN_DEX_EEVEE, + HOENN_DEX_VAPOREON, + HOENN_DEX_JOLTEON, + HOENN_DEX_FLAREON, + HOENN_DEX_PORYGON, + HOENN_DEX_OMANYTE, + HOENN_DEX_OMASTAR, + HOENN_DEX_KABUTO, + HOENN_DEX_KABUTOPS, + HOENN_DEX_AERODACTYL, + HOENN_DEX_SNORLAX, + HOENN_DEX_ARTICUNO, + HOENN_DEX_ZAPDOS, + HOENN_DEX_MOLTRES, + HOENN_DEX_DRATINI, + HOENN_DEX_DRAGONAIR, + HOENN_DEX_DRAGONITE, + HOENN_DEX_MEWTWO, + HOENN_DEX_MEW, + HOENN_DEX_CHIKORITA, + HOENN_DEX_BAYLEEF, + HOENN_DEX_MEGANIUM, + HOENN_DEX_CYNDAQUIL, + HOENN_DEX_QUILAVA, + HOENN_DEX_TYPHLOSION, + HOENN_DEX_TOTODILE, + HOENN_DEX_CROCONAW, + HOENN_DEX_FERALIGATR, + HOENN_DEX_SENTRET, + HOENN_DEX_FURRET, + HOENN_DEX_HOOTHOOT, + HOENN_DEX_NOCTOWL, + HOENN_DEX_LEDYBA, + HOENN_DEX_LEDIAN, + HOENN_DEX_SPINARAK, + HOENN_DEX_ARIADOS, + HOENN_DEX_CLEFFA, + HOENN_DEX_TOGEPI, + HOENN_DEX_TOGETIC, + HOENN_DEX_MAREEP, + HOENN_DEX_FLAAFFY, + HOENN_DEX_AMPHAROS, + HOENN_DEX_SUDOWOODO, + HOENN_DEX_POLITOED, + HOENN_DEX_HOPPIP, + HOENN_DEX_SKIPLOOM, + HOENN_DEX_JUMPLUFF, + HOENN_DEX_AIPOM, + HOENN_DEX_SUNKERN, + HOENN_DEX_SUNFLORA, + HOENN_DEX_YANMA, + HOENN_DEX_WOOPER, + HOENN_DEX_QUAGSIRE, + HOENN_DEX_ESPEON, + HOENN_DEX_UMBREON, + HOENN_DEX_MURKROW, + HOENN_DEX_SLOWKING, + HOENN_DEX_MISDREAVUS, + HOENN_DEX_UNOWN, + HOENN_DEX_PINECO, + HOENN_DEX_FORRETRESS, + HOENN_DEX_DUNSPARCE, + HOENN_DEX_GLIGAR, + HOENN_DEX_STEELIX, + HOENN_DEX_SNUBBULL, + HOENN_DEX_GRANBULL, + HOENN_DEX_QWILFISH, + HOENN_DEX_SCIZOR, + HOENN_DEX_SHUCKLE, + HOENN_DEX_SNEASEL, + HOENN_DEX_TEDDIURSA, + HOENN_DEX_URSARING, + HOENN_DEX_SWINUB, + HOENN_DEX_PILOSWINE, + HOENN_DEX_REMORAID, + HOENN_DEX_OCTILLERY, + HOENN_DEX_DELIBIRD, + HOENN_DEX_MANTINE, + HOENN_DEX_HOUNDOUR, + HOENN_DEX_HOUNDOOM, + HOENN_DEX_PORYGON2, + HOENN_DEX_STANTLER, + HOENN_DEX_SMEARGLE, + HOENN_DEX_TYROGUE, + HOENN_DEX_HITMONTOP, + HOENN_DEX_SMOOCHUM, + HOENN_DEX_ELEKID, + HOENN_DEX_MAGBY, + HOENN_DEX_MILTANK, + HOENN_DEX_BLISSEY, + HOENN_DEX_RAIKOU, + HOENN_DEX_ENTEI, + HOENN_DEX_SUICUNE, + HOENN_DEX_LARVITAR, + HOENN_DEX_PUPITAR, + HOENN_DEX_TYRANITAR, + HOENN_DEX_LUGIA, + HOENN_DEX_HO_OH, + HOENN_DEX_CELEBI, + HOENN_DEX_OLD_UNOWN_B, + HOENN_DEX_OLD_UNOWN_C, + HOENN_DEX_OLD_UNOWN_D, + HOENN_DEX_OLD_UNOWN_E, + HOENN_DEX_OLD_UNOWN_F, + HOENN_DEX_OLD_UNOWN_G, + HOENN_DEX_OLD_UNOWN_H, + HOENN_DEX_OLD_UNOWN_I, + HOENN_DEX_OLD_UNOWN_J, + HOENN_DEX_OLD_UNOWN_K, + HOENN_DEX_OLD_UNOWN_L, + HOENN_DEX_OLD_UNOWN_M, + HOENN_DEX_OLD_UNOWN_N, + HOENN_DEX_OLD_UNOWN_O, + HOENN_DEX_OLD_UNOWN_P, + HOENN_DEX_OLD_UNOWN_Q, + HOENN_DEX_OLD_UNOWN_R, + HOENN_DEX_OLD_UNOWN_S, + HOENN_DEX_OLD_UNOWN_T, + HOENN_DEX_OLD_UNOWN_U, + HOENN_DEX_OLD_UNOWN_V, + HOENN_DEX_OLD_UNOWN_W, + HOENN_DEX_OLD_UNOWN_X, + HOENN_DEX_OLD_UNOWN_Y, + HOENN_DEX_OLD_UNOWN_Z, +}; + +#define HOENN_DEX_COUNT HOENN_DEX_DEOXYS + +#endif // GUARD_CONSTANTS_POKEDEX_H diff --git a/include/constants/species.h b/include/constants/species.h index 983e1a796..ec60c142e 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -447,847 +447,4 @@ #define SPECIES_UNOWN_EMARK (SPECIES_UNOWN_B + 25) #define SPECIES_UNOWN_QMARK (SPECIES_UNOWN_B + 26) -// National Dex Index Defines - -#define NATIONAL_DEX_NONE 0 -#define NATIONAL_DEX_BULBASAUR 1 -#define NATIONAL_DEX_IVYSAUR 2 -#define NATIONAL_DEX_VENUSAUR 3 -#define NATIONAL_DEX_CHARMANDER 4 -#define NATIONAL_DEX_CHARMELEON 5 -#define NATIONAL_DEX_CHARIZARD 6 -#define NATIONAL_DEX_SQUIRTLE 7 -#define NATIONAL_DEX_WARTORTLE 8 -#define NATIONAL_DEX_BLASTOISE 9 -#define NATIONAL_DEX_CATERPIE 10 -#define NATIONAL_DEX_METAPOD 11 -#define NATIONAL_DEX_BUTTERFREE 12 -#define NATIONAL_DEX_WEEDLE 13 -#define NATIONAL_DEX_KAKUNA 14 -#define NATIONAL_DEX_BEEDRILL 15 -#define NATIONAL_DEX_PIDGEY 16 -#define NATIONAL_DEX_PIDGEOTTO 17 -#define NATIONAL_DEX_PIDGEOT 18 -#define NATIONAL_DEX_RATTATA 19 -#define NATIONAL_DEX_RATICATE 20 -#define NATIONAL_DEX_SPEAROW 21 -#define NATIONAL_DEX_FEAROW 22 -#define NATIONAL_DEX_EKANS 23 -#define NATIONAL_DEX_ARBOK 24 -#define NATIONAL_DEX_PIKACHU 25 -#define NATIONAL_DEX_RAICHU 26 -#define NATIONAL_DEX_SANDSHREW 27 -#define NATIONAL_DEX_SANDSLASH 28 -#define NATIONAL_DEX_NIDORAN_F 29 -#define NATIONAL_DEX_NIDORINA 30 -#define NATIONAL_DEX_NIDOQUEEN 31 -#define NATIONAL_DEX_NIDORAN_M 32 -#define NATIONAL_DEX_NIDORINO 33 -#define NATIONAL_DEX_NIDOKING 34 -#define NATIONAL_DEX_CLEFAIRY 35 -#define NATIONAL_DEX_CLEFABLE 36 -#define NATIONAL_DEX_VULPIX 37 -#define NATIONAL_DEX_NINETALES 38 -#define NATIONAL_DEX_JIGGLYPUFF 39 -#define NATIONAL_DEX_WIGGLYTUFF 40 -#define NATIONAL_DEX_ZUBAT 41 -#define NATIONAL_DEX_GOLBAT 42 -#define NATIONAL_DEX_ODDISH 43 -#define NATIONAL_DEX_GLOOM 44 -#define NATIONAL_DEX_VILEPLUME 45 -#define NATIONAL_DEX_PARAS 46 -#define NATIONAL_DEX_PARASECT 47 -#define NATIONAL_DEX_VENONAT 48 -#define NATIONAL_DEX_VENOMOTH 49 -#define NATIONAL_DEX_DIGLETT 50 -#define NATIONAL_DEX_DUGTRIO 51 -#define NATIONAL_DEX_MEOWTH 52 -#define NATIONAL_DEX_PERSIAN 53 -#define NATIONAL_DEX_PSYDUCK 54 -#define NATIONAL_DEX_GOLDUCK 55 -#define NATIONAL_DEX_MANKEY 56 -#define NATIONAL_DEX_PRIMEAPE 57 -#define NATIONAL_DEX_GROWLITHE 58 -#define NATIONAL_DEX_ARCANINE 59 -#define NATIONAL_DEX_POLIWAG 60 -#define NATIONAL_DEX_POLIWHIRL 61 -#define NATIONAL_DEX_POLIWRATH 62 -#define NATIONAL_DEX_ABRA 63 -#define NATIONAL_DEX_KADABRA 64 -#define NATIONAL_DEX_ALAKAZAM 65 -#define NATIONAL_DEX_MACHOP 66 -#define NATIONAL_DEX_MACHOKE 67 -#define NATIONAL_DEX_MACHAMP 68 -#define NATIONAL_DEX_BELLSPROUT 69 -#define NATIONAL_DEX_WEEPINBELL 70 -#define NATIONAL_DEX_VICTREEBEL 71 -#define NATIONAL_DEX_TENTACOOL 72 -#define NATIONAL_DEX_TENTACRUEL 73 -#define NATIONAL_DEX_GEODUDE 74 -#define NATIONAL_DEX_GRAVELER 75 -#define NATIONAL_DEX_GOLEM 76 -#define NATIONAL_DEX_PONYTA 77 -#define NATIONAL_DEX_RAPIDASH 78 -#define NATIONAL_DEX_SLOWPOKE 79 -#define NATIONAL_DEX_SLOWBRO 80 -#define NATIONAL_DEX_MAGNEMITE 81 -#define NATIONAL_DEX_MAGNETON 82 -#define NATIONAL_DEX_FARFETCHD 83 -#define NATIONAL_DEX_DODUO 84 -#define NATIONAL_DEX_DODRIO 85 -#define NATIONAL_DEX_SEEL 86 -#define NATIONAL_DEX_DEWGONG 87 -#define NATIONAL_DEX_GRIMER 88 -#define NATIONAL_DEX_MUK 89 -#define NATIONAL_DEX_SHELLDER 90 -#define NATIONAL_DEX_CLOYSTER 91 -#define NATIONAL_DEX_GASTLY 92 -#define NATIONAL_DEX_HAUNTER 93 -#define NATIONAL_DEX_GENGAR 94 -#define NATIONAL_DEX_ONIX 95 -#define NATIONAL_DEX_DROWZEE 96 -#define NATIONAL_DEX_HYPNO 97 -#define NATIONAL_DEX_KRABBY 98 -#define NATIONAL_DEX_KINGLER 99 -#define NATIONAL_DEX_VOLTORB 100 -#define NATIONAL_DEX_ELECTRODE 101 -#define NATIONAL_DEX_EXEGGCUTE 102 -#define NATIONAL_DEX_EXEGGUTOR 103 -#define NATIONAL_DEX_CUBONE 104 -#define NATIONAL_DEX_MAROWAK 105 -#define NATIONAL_DEX_HITMONLEE 106 -#define NATIONAL_DEX_HITMONCHAN 107 -#define NATIONAL_DEX_LICKITUNG 108 -#define NATIONAL_DEX_KOFFING 109 -#define NATIONAL_DEX_WEEZING 110 -#define NATIONAL_DEX_RHYHORN 111 -#define NATIONAL_DEX_RHYDON 112 -#define NATIONAL_DEX_CHANSEY 113 -#define NATIONAL_DEX_TANGELA 114 -#define NATIONAL_DEX_KANGASKHAN 115 -#define NATIONAL_DEX_HORSEA 116 -#define NATIONAL_DEX_SEADRA 117 -#define NATIONAL_DEX_GOLDEEN 118 -#define NATIONAL_DEX_SEAKING 119 -#define NATIONAL_DEX_STARYU 120 -#define NATIONAL_DEX_STARMIE 121 -#define NATIONAL_DEX_MR_MIME 122 -#define NATIONAL_DEX_SCYTHER 123 -#define NATIONAL_DEX_JYNX 124 -#define NATIONAL_DEX_ELECTABUZZ 125 -#define NATIONAL_DEX_MAGMAR 126 -#define NATIONAL_DEX_PINSIR 127 -#define NATIONAL_DEX_TAUROS 128 -#define NATIONAL_DEX_MAGIKARP 129 -#define NATIONAL_DEX_GYARADOS 130 -#define NATIONAL_DEX_LAPRAS 131 -#define NATIONAL_DEX_DITTO 132 -#define NATIONAL_DEX_EEVEE 133 -#define NATIONAL_DEX_VAPOREON 134 -#define NATIONAL_DEX_JOLTEON 135 -#define NATIONAL_DEX_FLAREON 136 -#define NATIONAL_DEX_PORYGON 137 -#define NATIONAL_DEX_OMANYTE 138 -#define NATIONAL_DEX_OMASTAR 139 -#define NATIONAL_DEX_KABUTO 140 -#define NATIONAL_DEX_KABUTOPS 141 -#define NATIONAL_DEX_AERODACTYL 142 -#define NATIONAL_DEX_SNORLAX 143 -#define NATIONAL_DEX_ARTICUNO 144 -#define NATIONAL_DEX_ZAPDOS 145 -#define NATIONAL_DEX_MOLTRES 146 -#define NATIONAL_DEX_DRATINI 147 -#define NATIONAL_DEX_DRAGONAIR 148 -#define NATIONAL_DEX_DRAGONITE 149 -#define NATIONAL_DEX_MEWTWO 150 -#define NATIONAL_DEX_MEW 151 - -#define KANTO_DEX_COUNT NATIONAL_DEX_MEW - -#define NATIONAL_DEX_CHIKORITA 152 -#define NATIONAL_DEX_BAYLEEF 153 -#define NATIONAL_DEX_MEGANIUM 154 -#define NATIONAL_DEX_CYNDAQUIL 155 -#define NATIONAL_DEX_QUILAVA 156 -#define NATIONAL_DEX_TYPHLOSION 157 -#define NATIONAL_DEX_TOTODILE 158 -#define NATIONAL_DEX_CROCONAW 159 -#define NATIONAL_DEX_FERALIGATR 160 -#define NATIONAL_DEX_SENTRET 161 -#define NATIONAL_DEX_FURRET 162 -#define NATIONAL_DEX_HOOTHOOT 163 -#define NATIONAL_DEX_NOCTOWL 164 -#define NATIONAL_DEX_LEDYBA 165 -#define NATIONAL_DEX_LEDIAN 166 -#define NATIONAL_DEX_SPINARAK 167 -#define NATIONAL_DEX_ARIADOS 168 -#define NATIONAL_DEX_CROBAT 169 -#define NATIONAL_DEX_CHINCHOU 170 -#define NATIONAL_DEX_LANTURN 171 -#define NATIONAL_DEX_PICHU 172 -#define NATIONAL_DEX_CLEFFA 173 -#define NATIONAL_DEX_IGGLYBUFF 174 -#define NATIONAL_DEX_TOGEPI 175 -#define NATIONAL_DEX_TOGETIC 176 -#define NATIONAL_DEX_NATU 177 -#define NATIONAL_DEX_XATU 178 -#define NATIONAL_DEX_MAREEP 179 -#define NATIONAL_DEX_FLAAFFY 180 -#define NATIONAL_DEX_AMPHAROS 181 -#define NATIONAL_DEX_BELLOSSOM 182 -#define NATIONAL_DEX_MARILL 183 -#define NATIONAL_DEX_AZUMARILL 184 -#define NATIONAL_DEX_SUDOWOODO 185 -#define NATIONAL_DEX_POLITOED 186 -#define NATIONAL_DEX_HOPPIP 187 -#define NATIONAL_DEX_SKIPLOOM 188 -#define NATIONAL_DEX_JUMPLUFF 189 -#define NATIONAL_DEX_AIPOM 190 -#define NATIONAL_DEX_SUNKERN 191 -#define NATIONAL_DEX_SUNFLORA 192 -#define NATIONAL_DEX_YANMA 193 -#define NATIONAL_DEX_WOOPER 194 -#define NATIONAL_DEX_QUAGSIRE 195 -#define NATIONAL_DEX_ESPEON 196 -#define NATIONAL_DEX_UMBREON 197 -#define NATIONAL_DEX_MURKROW 198 -#define NATIONAL_DEX_SLOWKING 199 -#define NATIONAL_DEX_MISDREAVUS 200 -#define NATIONAL_DEX_UNOWN 201 -#define NATIONAL_DEX_WOBBUFFET 202 -#define NATIONAL_DEX_GIRAFARIG 203 -#define NATIONAL_DEX_PINECO 204 -#define NATIONAL_DEX_FORRETRESS 205 -#define NATIONAL_DEX_DUNSPARCE 206 -#define NATIONAL_DEX_GLIGAR 207 -#define NATIONAL_DEX_STEELIX 208 -#define NATIONAL_DEX_SNUBBULL 209 -#define NATIONAL_DEX_GRANBULL 210 -#define NATIONAL_DEX_QWILFISH 211 -#define NATIONAL_DEX_SCIZOR 212 -#define NATIONAL_DEX_SHUCKLE 213 -#define NATIONAL_DEX_HERACROSS 214 -#define NATIONAL_DEX_SNEASEL 215 -#define NATIONAL_DEX_TEDDIURSA 216 -#define NATIONAL_DEX_URSARING 217 -#define NATIONAL_DEX_SLUGMA 218 -#define NATIONAL_DEX_MAGCARGO 219 -#define NATIONAL_DEX_SWINUB 220 -#define NATIONAL_DEX_PILOSWINE 221 -#define NATIONAL_DEX_CORSOLA 222 -#define NATIONAL_DEX_REMORAID 223 -#define NATIONAL_DEX_OCTILLERY 224 -#define NATIONAL_DEX_DELIBIRD 225 -#define NATIONAL_DEX_MANTINE 226 -#define NATIONAL_DEX_SKARMORY 227 -#define NATIONAL_DEX_HOUNDOUR 228 -#define NATIONAL_DEX_HOUNDOOM 229 -#define NATIONAL_DEX_KINGDRA 230 -#define NATIONAL_DEX_PHANPY 231 -#define NATIONAL_DEX_DONPHAN 232 -#define NATIONAL_DEX_PORYGON2 233 -#define NATIONAL_DEX_STANTLER 234 -#define NATIONAL_DEX_SMEARGLE 235 -#define NATIONAL_DEX_TYROGUE 236 -#define NATIONAL_DEX_HITMONTOP 237 -#define NATIONAL_DEX_SMOOCHUM 238 -#define NATIONAL_DEX_ELEKID 239 -#define NATIONAL_DEX_MAGBY 240 -#define NATIONAL_DEX_MILTANK 241 -#define NATIONAL_DEX_BLISSEY 242 -#define NATIONAL_DEX_RAIKOU 243 -#define NATIONAL_DEX_ENTEI 244 -#define NATIONAL_DEX_SUICUNE 245 -#define NATIONAL_DEX_LARVITAR 246 -#define NATIONAL_DEX_PUPITAR 247 -#define NATIONAL_DEX_TYRANITAR 248 -#define NATIONAL_DEX_LUGIA 249 -#define NATIONAL_DEX_HO_OH 250 -#define NATIONAL_DEX_CELEBI 251 - -#define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI - -#define NATIONAL_DEX_TREECKO 252 -#define NATIONAL_DEX_GROVYLE 253 -#define NATIONAL_DEX_SCEPTILE 254 -#define NATIONAL_DEX_TORCHIC 255 -#define NATIONAL_DEX_COMBUSKEN 256 -#define NATIONAL_DEX_BLAZIKEN 257 -#define NATIONAL_DEX_MUDKIP 258 -#define NATIONAL_DEX_MARSHTOMP 259 -#define NATIONAL_DEX_SWAMPERT 260 -#define NATIONAL_DEX_POOCHYENA 261 -#define NATIONAL_DEX_MIGHTYENA 262 -#define NATIONAL_DEX_ZIGZAGOON 263 -#define NATIONAL_DEX_LINOONE 264 -#define NATIONAL_DEX_WURMPLE 265 -#define NATIONAL_DEX_SILCOON 266 -#define NATIONAL_DEX_BEAUTIFLY 267 -#define NATIONAL_DEX_CASCOON 268 -#define NATIONAL_DEX_DUSTOX 269 -#define NATIONAL_DEX_LOTAD 270 -#define NATIONAL_DEX_LOMBRE 271 -#define NATIONAL_DEX_LUDICOLO 272 -#define NATIONAL_DEX_SEEDOT 273 -#define NATIONAL_DEX_NUZLEAF 274 -#define NATIONAL_DEX_SHIFTRY 275 -#define NATIONAL_DEX_TAILLOW 276 -#define NATIONAL_DEX_SWELLOW 277 -#define NATIONAL_DEX_WINGULL 278 -#define NATIONAL_DEX_PELIPPER 279 -#define NATIONAL_DEX_RALTS 280 -#define NATIONAL_DEX_KIRLIA 281 -#define NATIONAL_DEX_GARDEVOIR 282 -#define NATIONAL_DEX_SURSKIT 283 -#define NATIONAL_DEX_MASQUERAIN 284 -#define NATIONAL_DEX_SHROOMISH 285 -#define NATIONAL_DEX_BRELOOM 286 -#define NATIONAL_DEX_SLAKOTH 287 -#define NATIONAL_DEX_VIGOROTH 288 -#define NATIONAL_DEX_SLAKING 289 -#define NATIONAL_DEX_NINCADA 290 -#define NATIONAL_DEX_NINJASK 291 -#define NATIONAL_DEX_SHEDINJA 292 -#define NATIONAL_DEX_WHISMUR 293 -#define NATIONAL_DEX_LOUDRED 294 -#define NATIONAL_DEX_EXPLOUD 295 -#define NATIONAL_DEX_MAKUHITA 296 -#define NATIONAL_DEX_HARIYAMA 297 -#define NATIONAL_DEX_AZURILL 298 -#define NATIONAL_DEX_NOSEPASS 299 -#define NATIONAL_DEX_SKITTY 300 -#define NATIONAL_DEX_DELCATTY 301 -#define NATIONAL_DEX_SABLEYE 302 -#define NATIONAL_DEX_MAWILE 303 -#define NATIONAL_DEX_ARON 304 -#define NATIONAL_DEX_LAIRON 305 -#define NATIONAL_DEX_AGGRON 306 -#define NATIONAL_DEX_MEDITITE 307 -#define NATIONAL_DEX_MEDICHAM 308 -#define NATIONAL_DEX_ELECTRIKE 309 -#define NATIONAL_DEX_MANECTRIC 310 -#define NATIONAL_DEX_PLUSLE 311 -#define NATIONAL_DEX_MINUN 312 -#define NATIONAL_DEX_VOLBEAT 313 -#define NATIONAL_DEX_ILLUMISE 314 -#define NATIONAL_DEX_ROSELIA 315 -#define NATIONAL_DEX_GULPIN 316 -#define NATIONAL_DEX_SWALOT 317 -#define NATIONAL_DEX_CARVANHA 318 -#define NATIONAL_DEX_SHARPEDO 319 -#define NATIONAL_DEX_WAILMER 320 -#define NATIONAL_DEX_WAILORD 321 -#define NATIONAL_DEX_NUMEL 322 -#define NATIONAL_DEX_CAMERUPT 323 -#define NATIONAL_DEX_TORKOAL 324 -#define NATIONAL_DEX_SPOINK 325 -#define NATIONAL_DEX_GRUMPIG 326 -#define NATIONAL_DEX_SPINDA 327 -#define NATIONAL_DEX_TRAPINCH 328 -#define NATIONAL_DEX_VIBRAVA 329 -#define NATIONAL_DEX_FLYGON 330 -#define NATIONAL_DEX_CACNEA 331 -#define NATIONAL_DEX_CACTURNE 332 -#define NATIONAL_DEX_SWABLU 333 -#define NATIONAL_DEX_ALTARIA 334 -#define NATIONAL_DEX_ZANGOOSE 335 -#define NATIONAL_DEX_SEVIPER 336 -#define NATIONAL_DEX_LUNATONE 337 -#define NATIONAL_DEX_SOLROCK 338 -#define NATIONAL_DEX_BARBOACH 339 -#define NATIONAL_DEX_WHISCASH 340 -#define NATIONAL_DEX_CORPHISH 341 -#define NATIONAL_DEX_CRAWDAUNT 342 -#define NATIONAL_DEX_BALTOY 343 -#define NATIONAL_DEX_CLAYDOL 344 -#define NATIONAL_DEX_LILEEP 345 -#define NATIONAL_DEX_CRADILY 346 -#define NATIONAL_DEX_ANORITH 347 -#define NATIONAL_DEX_ARMALDO 348 -#define NATIONAL_DEX_FEEBAS 349 -#define NATIONAL_DEX_MILOTIC 350 -#define NATIONAL_DEX_CASTFORM 351 -#define NATIONAL_DEX_KECLEON 352 -#define NATIONAL_DEX_SHUPPET 353 -#define NATIONAL_DEX_BANETTE 354 -#define NATIONAL_DEX_DUSKULL 355 -#define NATIONAL_DEX_DUSCLOPS 356 -#define NATIONAL_DEX_TROPIUS 357 -#define NATIONAL_DEX_CHIMECHO 358 -#define NATIONAL_DEX_ABSOL 359 -#define NATIONAL_DEX_WYNAUT 360 -#define NATIONAL_DEX_SNORUNT 361 -#define NATIONAL_DEX_GLALIE 362 -#define NATIONAL_DEX_SPHEAL 363 -#define NATIONAL_DEX_SEALEO 364 -#define NATIONAL_DEX_WALREIN 365 -#define NATIONAL_DEX_CLAMPERL 366 -#define NATIONAL_DEX_HUNTAIL 367 -#define NATIONAL_DEX_GOREBYSS 368 -#define NATIONAL_DEX_RELICANTH 369 -#define NATIONAL_DEX_LUVDISC 370 -#define NATIONAL_DEX_BAGON 371 -#define NATIONAL_DEX_SHELGON 372 -#define NATIONAL_DEX_SALAMENCE 373 -#define NATIONAL_DEX_BELDUM 374 -#define NATIONAL_DEX_METANG 375 -#define NATIONAL_DEX_METAGROSS 376 -#define NATIONAL_DEX_REGIROCK 377 -#define NATIONAL_DEX_REGICE 378 -#define NATIONAL_DEX_REGISTEEL 379 -#define NATIONAL_DEX_LATIAS 380 -#define NATIONAL_DEX_LATIOS 381 -#define NATIONAL_DEX_KYOGRE 382 -#define NATIONAL_DEX_GROUDON 383 -#define NATIONAL_DEX_RAYQUAZA 384 -#define NATIONAL_DEX_JIRACHI 385 -#define NATIONAL_DEX_DEOXYS 386 - -#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS - -#define NATIONAL_DEX_OLD_UNOWN_B (NATIONAL_DEX_COUNT + 1) -#define NATIONAL_DEX_OLD_UNOWN_C (NATIONAL_DEX_OLD_UNOWN_B + 1) -#define NATIONAL_DEX_OLD_UNOWN_D (NATIONAL_DEX_OLD_UNOWN_B + 2) -#define NATIONAL_DEX_OLD_UNOWN_E (NATIONAL_DEX_OLD_UNOWN_B + 3) -#define NATIONAL_DEX_OLD_UNOWN_F (NATIONAL_DEX_OLD_UNOWN_B + 4) -#define NATIONAL_DEX_OLD_UNOWN_G (NATIONAL_DEX_OLD_UNOWN_B + 5) -#define NATIONAL_DEX_OLD_UNOWN_H (NATIONAL_DEX_OLD_UNOWN_B + 6) -#define NATIONAL_DEX_OLD_UNOWN_I (NATIONAL_DEX_OLD_UNOWN_B + 7) -#define NATIONAL_DEX_OLD_UNOWN_J (NATIONAL_DEX_OLD_UNOWN_B + 8) -#define NATIONAL_DEX_OLD_UNOWN_K (NATIONAL_DEX_OLD_UNOWN_B + 9) -#define NATIONAL_DEX_OLD_UNOWN_L (NATIONAL_DEX_OLD_UNOWN_B + 10) -#define NATIONAL_DEX_OLD_UNOWN_M (NATIONAL_DEX_OLD_UNOWN_B + 11) -#define NATIONAL_DEX_OLD_UNOWN_N (NATIONAL_DEX_OLD_UNOWN_B + 12) -#define NATIONAL_DEX_OLD_UNOWN_O (NATIONAL_DEX_OLD_UNOWN_B + 13) -#define NATIONAL_DEX_OLD_UNOWN_P (NATIONAL_DEX_OLD_UNOWN_B + 14) -#define NATIONAL_DEX_OLD_UNOWN_Q (NATIONAL_DEX_OLD_UNOWN_B + 15) -#define NATIONAL_DEX_OLD_UNOWN_R (NATIONAL_DEX_OLD_UNOWN_B + 16) -#define NATIONAL_DEX_OLD_UNOWN_S (NATIONAL_DEX_OLD_UNOWN_B + 17) -#define NATIONAL_DEX_OLD_UNOWN_T (NATIONAL_DEX_OLD_UNOWN_B + 18) -#define NATIONAL_DEX_OLD_UNOWN_U (NATIONAL_DEX_OLD_UNOWN_B + 19) -#define NATIONAL_DEX_OLD_UNOWN_V (NATIONAL_DEX_OLD_UNOWN_B + 20) -#define NATIONAL_DEX_OLD_UNOWN_W (NATIONAL_DEX_OLD_UNOWN_B + 21) -#define NATIONAL_DEX_OLD_UNOWN_X (NATIONAL_DEX_OLD_UNOWN_B + 22) -#define NATIONAL_DEX_OLD_UNOWN_Y (NATIONAL_DEX_OLD_UNOWN_B + 23) -#define NATIONAL_DEX_OLD_UNOWN_Z (NATIONAL_DEX_OLD_UNOWN_B + 24) - -// Hoenn Dex Index Defines - -#define HOENN_DEX_NONE 0 -#define HOENN_DEX_TREECKO 1 -#define HOENN_DEX_GROVYLE 2 -#define HOENN_DEX_SCEPTILE 3 -#define HOENN_DEX_TORCHIC 4 -#define HOENN_DEX_COMBUSKEN 5 -#define HOENN_DEX_BLAZIKEN 6 -#define HOENN_DEX_MUDKIP 7 -#define HOENN_DEX_MARSHTOMP 8 -#define HOENN_DEX_SWAMPERT 9 -#define HOENN_DEX_POOCHYENA 10 -#define HOENN_DEX_MIGHTYENA 11 -#define HOENN_DEX_ZIGZAGOON 12 -#define HOENN_DEX_LINOONE 13 -#define HOENN_DEX_WURMPLE 14 -#define HOENN_DEX_SILCOON 15 -#define HOENN_DEX_BEAUTIFLY 16 -#define HOENN_DEX_CASCOON 17 -#define HOENN_DEX_DUSTOX 18 -#define HOENN_DEX_LOTAD 19 -#define HOENN_DEX_LOMBRE 20 -#define HOENN_DEX_LUDICOLO 21 -#define HOENN_DEX_SEEDOT 22 -#define HOENN_DEX_NUZLEAF 23 -#define HOENN_DEX_SHIFTRY 24 -#define HOENN_DEX_TAILLOW 25 -#define HOENN_DEX_SWELLOW 26 -#define HOENN_DEX_WINGULL 27 -#define HOENN_DEX_PELIPPER 28 -#define HOENN_DEX_RALTS 29 -#define HOENN_DEX_KIRLIA 30 -#define HOENN_DEX_GARDEVOIR 31 -#define HOENN_DEX_SURSKIT 32 -#define HOENN_DEX_MASQUERAIN 33 -#define HOENN_DEX_SHROOMISH 34 -#define HOENN_DEX_BRELOOM 35 -#define HOENN_DEX_SLAKOTH 36 -#define HOENN_DEX_VIGOROTH 37 -#define HOENN_DEX_SLAKING 38 -#define HOENN_DEX_ABRA 39 -#define HOENN_DEX_KADABRA 40 -#define HOENN_DEX_ALAKAZAM 41 -#define HOENN_DEX_NINCADA 42 -#define HOENN_DEX_NINJASK 43 -#define HOENN_DEX_SHEDINJA 44 -#define HOENN_DEX_WHISMUR 45 -#define HOENN_DEX_LOUDRED 46 -#define HOENN_DEX_EXPLOUD 47 -#define HOENN_DEX_MAKUHITA 48 -#define HOENN_DEX_HARIYAMA 49 -#define HOENN_DEX_GOLDEEN 50 -#define HOENN_DEX_SEAKING 51 -#define HOENN_DEX_MAGIKARP 52 -#define HOENN_DEX_GYARADOS 53 -#define HOENN_DEX_AZURILL 54 -#define HOENN_DEX_MARILL 55 -#define HOENN_DEX_AZUMARILL 56 -#define HOENN_DEX_GEODUDE 57 -#define HOENN_DEX_GRAVELER 58 -#define HOENN_DEX_GOLEM 59 -#define HOENN_DEX_NOSEPASS 60 -#define HOENN_DEX_SKITTY 61 -#define HOENN_DEX_DELCATTY 62 -#define HOENN_DEX_ZUBAT 63 -#define HOENN_DEX_GOLBAT 64 -#define HOENN_DEX_CROBAT 65 -#define HOENN_DEX_TENTACOOL 66 -#define HOENN_DEX_TENTACRUEL 67 -#define HOENN_DEX_SABLEYE 68 -#define HOENN_DEX_MAWILE 69 -#define HOENN_DEX_ARON 70 -#define HOENN_DEX_LAIRON 71 -#define HOENN_DEX_AGGRON 72 -#define HOENN_DEX_MACHOP 73 -#define HOENN_DEX_MACHOKE 74 -#define HOENN_DEX_MACHAMP 75 -#define HOENN_DEX_MEDITITE 76 -#define HOENN_DEX_MEDICHAM 77 -#define HOENN_DEX_ELECTRIKE 78 -#define HOENN_DEX_MANECTRIC 79 -#define HOENN_DEX_PLUSLE 80 -#define HOENN_DEX_MINUN 81 -#define HOENN_DEX_MAGNEMITE 82 -#define HOENN_DEX_MAGNETON 83 -#define HOENN_DEX_VOLTORB 84 -#define HOENN_DEX_ELECTRODE 85 -#define HOENN_DEX_VOLBEAT 86 -#define HOENN_DEX_ILLUMISE 87 -#define HOENN_DEX_ODDISH 88 -#define HOENN_DEX_GLOOM 89 -#define HOENN_DEX_VILEPLUME 90 -#define HOENN_DEX_BELLOSSOM 91 -#define HOENN_DEX_DODUO 92 -#define HOENN_DEX_DODRIO 93 -#define HOENN_DEX_ROSELIA 94 -#define HOENN_DEX_GULPIN 95 -#define HOENN_DEX_SWALOT 96 -#define HOENN_DEX_CARVANHA 97 -#define HOENN_DEX_SHARPEDO 98 -#define HOENN_DEX_WAILMER 99 -#define HOENN_DEX_WAILORD 100 -#define HOENN_DEX_NUMEL 101 -#define HOENN_DEX_CAMERUPT 102 -#define HOENN_DEX_SLUGMA 103 -#define HOENN_DEX_MAGCARGO 104 -#define HOENN_DEX_TORKOAL 105 -#define HOENN_DEX_GRIMER 106 -#define HOENN_DEX_MUK 107 -#define HOENN_DEX_KOFFING 108 -#define HOENN_DEX_WEEZING 109 -#define HOENN_DEX_SPOINK 110 -#define HOENN_DEX_GRUMPIG 111 -#define HOENN_DEX_SANDSHREW 112 -#define HOENN_DEX_SANDSLASH 113 -#define HOENN_DEX_SPINDA 114 -#define HOENN_DEX_SKARMORY 115 -#define HOENN_DEX_TRAPINCH 116 -#define HOENN_DEX_VIBRAVA 117 -#define HOENN_DEX_FLYGON 118 -#define HOENN_DEX_CACNEA 119 -#define HOENN_DEX_CACTURNE 120 -#define HOENN_DEX_SWABLU 121 -#define HOENN_DEX_ALTARIA 122 -#define HOENN_DEX_ZANGOOSE 123 -#define HOENN_DEX_SEVIPER 124 -#define HOENN_DEX_LUNATONE 125 -#define HOENN_DEX_SOLROCK 126 -#define HOENN_DEX_BARBOACH 127 -#define HOENN_DEX_WHISCASH 128 -#define HOENN_DEX_CORPHISH 129 -#define HOENN_DEX_CRAWDAUNT 130 -#define HOENN_DEX_BALTOY 131 -#define HOENN_DEX_CLAYDOL 132 -#define HOENN_DEX_LILEEP 133 -#define HOENN_DEX_CRADILY 134 -#define HOENN_DEX_ANORITH 135 -#define HOENN_DEX_ARMALDO 136 -#define HOENN_DEX_IGGLYBUFF 137 -#define HOENN_DEX_JIGGLYPUFF 138 -#define HOENN_DEX_WIGGLYTUFF 139 -#define HOENN_DEX_FEEBAS 140 -#define HOENN_DEX_MILOTIC 141 -#define HOENN_DEX_CASTFORM 142 -#define HOENN_DEX_STARYU 143 -#define HOENN_DEX_STARMIE 144 -#define HOENN_DEX_KECLEON 145 -#define HOENN_DEX_SHUPPET 146 -#define HOENN_DEX_BANETTE 147 -#define HOENN_DEX_DUSKULL 148 -#define HOENN_DEX_DUSCLOPS 149 -#define HOENN_DEX_TROPIUS 150 -#define HOENN_DEX_CHIMECHO 151 -#define HOENN_DEX_ABSOL 152 -#define HOENN_DEX_VULPIX 153 -#define HOENN_DEX_NINETALES 154 -#define HOENN_DEX_PICHU 155 -#define HOENN_DEX_PIKACHU 156 -#define HOENN_DEX_RAICHU 157 -#define HOENN_DEX_PSYDUCK 158 -#define HOENN_DEX_GOLDUCK 159 -#define HOENN_DEX_WYNAUT 160 -#define HOENN_DEX_WOBBUFFET 161 -#define HOENN_DEX_NATU 162 -#define HOENN_DEX_XATU 163 -#define HOENN_DEX_GIRAFARIG 164 -#define HOENN_DEX_PHANPY 165 -#define HOENN_DEX_DONPHAN 166 -#define HOENN_DEX_PINSIR 167 -#define HOENN_DEX_HERACROSS 168 -#define HOENN_DEX_RHYHORN 169 -#define HOENN_DEX_RHYDON 170 -#define HOENN_DEX_SNORUNT 171 -#define HOENN_DEX_GLALIE 172 -#define HOENN_DEX_SPHEAL 173 -#define HOENN_DEX_SEALEO 174 -#define HOENN_DEX_WALREIN 175 -#define HOENN_DEX_CLAMPERL 176 -#define HOENN_DEX_HUNTAIL 177 -#define HOENN_DEX_GOREBYSS 178 -#define HOENN_DEX_RELICANTH 179 -#define HOENN_DEX_CORSOLA 180 -#define HOENN_DEX_CHINCHOU 181 -#define HOENN_DEX_LANTURN 182 -#define HOENN_DEX_LUVDISC 183 -#define HOENN_DEX_HORSEA 184 -#define HOENN_DEX_SEADRA 185 -#define HOENN_DEX_KINGDRA 186 -#define HOENN_DEX_BAGON 187 -#define HOENN_DEX_SHELGON 188 -#define HOENN_DEX_SALAMENCE 189 -#define HOENN_DEX_BELDUM 190 -#define HOENN_DEX_METANG 191 -#define HOENN_DEX_METAGROSS 192 -#define HOENN_DEX_REGIROCK 193 -#define HOENN_DEX_REGICE 194 -#define HOENN_DEX_REGISTEEL 195 -#define HOENN_DEX_LATIAS 196 -#define HOENN_DEX_LATIOS 197 -#define HOENN_DEX_KYOGRE 198 -#define HOENN_DEX_GROUDON 199 -#define HOENN_DEX_RAYQUAZA 200 -#define HOENN_DEX_JIRACHI 201 -#define HOENN_DEX_DEOXYS 202 - -#define HOENN_DEX_COUNT HOENN_DEX_DEOXYS - -#define HOENN_DEX_BULBASAUR 203 -#define HOENN_DEX_IVYSAUR 204 -#define HOENN_DEX_VENUSAUR 205 -#define HOENN_DEX_CHARMANDER 206 -#define HOENN_DEX_CHARMELEON 207 -#define HOENN_DEX_CHARIZARD 208 -#define HOENN_DEX_SQUIRTLE 209 -#define HOENN_DEX_WARTORTLE 210 -#define HOENN_DEX_BLASTOISE 211 -#define HOENN_DEX_CATERPIE 212 -#define HOENN_DEX_METAPOD 213 -#define HOENN_DEX_BUTTERFREE 214 -#define HOENN_DEX_WEEDLE 215 -#define HOENN_DEX_KAKUNA 216 -#define HOENN_DEX_BEEDRILL 217 -#define HOENN_DEX_PIDGEY 218 -#define HOENN_DEX_PIDGEOTTO 219 -#define HOENN_DEX_PIDGEOT 220 -#define HOENN_DEX_RATTATA 221 -#define HOENN_DEX_RATICATE 222 -#define HOENN_DEX_SPEAROW 223 -#define HOENN_DEX_FEAROW 224 -#define HOENN_DEX_EKANS 225 -#define HOENN_DEX_ARBOK 226 -#define HOENN_DEX_NIDORAN_F 227 -#define HOENN_DEX_NIDORINA 228 -#define HOENN_DEX_NIDOQUEEN 229 -#define HOENN_DEX_NIDORAN_M 230 -#define HOENN_DEX_NIDORINO 231 -#define HOENN_DEX_NIDOKING 232 -#define HOENN_DEX_CLEFAIRY 233 -#define HOENN_DEX_CLEFABLE 234 -#define HOENN_DEX_PARAS 235 -#define HOENN_DEX_PARASECT 236 -#define HOENN_DEX_VENONAT 237 -#define HOENN_DEX_VENOMOTH 238 -#define HOENN_DEX_DIGLETT 239 -#define HOENN_DEX_DUGTRIO 240 -#define HOENN_DEX_MEOWTH 241 -#define HOENN_DEX_PERSIAN 242 -#define HOENN_DEX_MANKEY 243 -#define HOENN_DEX_PRIMEAPE 244 -#define HOENN_DEX_GROWLITHE 245 -#define HOENN_DEX_ARCANINE 246 -#define HOENN_DEX_POLIWAG 247 -#define HOENN_DEX_POLIWHIRL 248 -#define HOENN_DEX_POLIWRATH 249 -#define HOENN_DEX_BELLSPROUT 250 -#define HOENN_DEX_WEEPINBELL 251 -#define HOENN_DEX_VICTREEBEL 252 -#define HOENN_DEX_PONYTA 253 -#define HOENN_DEX_RAPIDASH 254 -#define HOENN_DEX_SLOWPOKE 255 -#define HOENN_DEX_SLOWBRO 256 -#define HOENN_DEX_FARFETCHD 257 -#define HOENN_DEX_SEEL 258 -#define HOENN_DEX_DEWGONG 259 -#define HOENN_DEX_SHELLDER 260 -#define HOENN_DEX_CLOYSTER 261 -#define HOENN_DEX_GASTLY 262 -#define HOENN_DEX_HAUNTER 263 -#define HOENN_DEX_GENGAR 264 -#define HOENN_DEX_ONIX 265 -#define HOENN_DEX_DROWZEE 266 -#define HOENN_DEX_HYPNO 267 -#define HOENN_DEX_KRABBY 268 -#define HOENN_DEX_KINGLER 269 -#define HOENN_DEX_EXEGGCUTE 270 -#define HOENN_DEX_EXEGGUTOR 271 -#define HOENN_DEX_CUBONE 272 -#define HOENN_DEX_MAROWAK 273 -#define HOENN_DEX_HITMONLEE 274 -#define HOENN_DEX_HITMONCHAN 275 -#define HOENN_DEX_LICKITUNG 276 -#define HOENN_DEX_CHANSEY 277 -#define HOENN_DEX_TANGELA 278 -#define HOENN_DEX_KANGASKHAN 279 -#define HOENN_DEX_MR_MIME 280 -#define HOENN_DEX_SCYTHER 281 -#define HOENN_DEX_JYNX 282 -#define HOENN_DEX_ELECTABUZZ 283 -#define HOENN_DEX_MAGMAR 284 -#define HOENN_DEX_TAUROS 285 -#define HOENN_DEX_LAPRAS 286 -#define HOENN_DEX_DITTO 287 -#define HOENN_DEX_EEVEE 288 -#define HOENN_DEX_VAPOREON 289 -#define HOENN_DEX_JOLTEON 290 -#define HOENN_DEX_FLAREON 291 -#define HOENN_DEX_PORYGON 292 -#define HOENN_DEX_OMANYTE 293 -#define HOENN_DEX_OMASTAR 294 -#define HOENN_DEX_KABUTO 295 -#define HOENN_DEX_KABUTOPS 296 -#define HOENN_DEX_AERODACTYL 297 -#define HOENN_DEX_SNORLAX 298 -#define HOENN_DEX_ARTICUNO 299 -#define HOENN_DEX_ZAPDOS 300 -#define HOENN_DEX_MOLTRES 301 -#define HOENN_DEX_DRATINI 302 -#define HOENN_DEX_DRAGONAIR 303 -#define HOENN_DEX_DRAGONITE 304 -#define HOENN_DEX_MEWTWO 305 -#define HOENN_DEX_MEW 306 -#define HOENN_DEX_CHIKORITA 307 -#define HOENN_DEX_BAYLEEF 308 -#define HOENN_DEX_MEGANIUM 309 -#define HOENN_DEX_CYNDAQUIL 310 -#define HOENN_DEX_QUILAVA 311 -#define HOENN_DEX_TYPHLOSION 312 -#define HOENN_DEX_TOTODILE 313 -#define HOENN_DEX_CROCONAW 314 -#define HOENN_DEX_FERALIGATR 315 -#define HOENN_DEX_SENTRET 316 -#define HOENN_DEX_FURRET 317 -#define HOENN_DEX_HOOTHOOT 318 -#define HOENN_DEX_NOCTOWL 319 -#define HOENN_DEX_LEDYBA 320 -#define HOENN_DEX_LEDIAN 321 -#define HOENN_DEX_SPINARAK 322 -#define HOENN_DEX_ARIADOS 323 -#define HOENN_DEX_CLEFFA 324 -#define HOENN_DEX_TOGEPI 325 -#define HOENN_DEX_TOGETIC 326 -#define HOENN_DEX_MAREEP 327 -#define HOENN_DEX_FLAAFFY 328 -#define HOENN_DEX_AMPHAROS 329 -#define HOENN_DEX_SUDOWOODO 330 -#define HOENN_DEX_POLITOED 331 -#define HOENN_DEX_HOPPIP 332 -#define HOENN_DEX_SKIPLOOM 333 -#define HOENN_DEX_JUMPLUFF 334 -#define HOENN_DEX_AIPOM 335 -#define HOENN_DEX_SUNKERN 336 -#define HOENN_DEX_SUNFLORA 337 -#define HOENN_DEX_YANMA 338 -#define HOENN_DEX_WOOPER 339 -#define HOENN_DEX_QUAGSIRE 340 -#define HOENN_DEX_ESPEON 341 -#define HOENN_DEX_UMBREON 342 -#define HOENN_DEX_MURKROW 343 -#define HOENN_DEX_SLOWKING 344 -#define HOENN_DEX_MISDREAVUS 345 -#define HOENN_DEX_UNOWN 346 -#define HOENN_DEX_PINECO 347 -#define HOENN_DEX_FORRETRESS 348 -#define HOENN_DEX_DUNSPARCE 349 -#define HOENN_DEX_GLIGAR 350 -#define HOENN_DEX_STEELIX 351 -#define HOENN_DEX_SNUBBULL 352 -#define HOENN_DEX_GRANBULL 353 -#define HOENN_DEX_QWILFISH 354 -#define HOENN_DEX_SCIZOR 355 -#define HOENN_DEX_SHUCKLE 356 -#define HOENN_DEX_SNEASEL 357 -#define HOENN_DEX_TEDDIURSA 358 -#define HOENN_DEX_URSARING 359 -#define HOENN_DEX_SWINUB 360 -#define HOENN_DEX_PILOSWINE 361 -#define HOENN_DEX_REMORAID 362 -#define HOENN_DEX_OCTILLERY 363 -#define HOENN_DEX_DELIBIRD 364 -#define HOENN_DEX_MANTINE 365 -#define HOENN_DEX_HOUNDOUR 366 -#define HOENN_DEX_HOUNDOOM 367 -#define HOENN_DEX_PORYGON2 368 -#define HOENN_DEX_STANTLER 369 -#define HOENN_DEX_SMEARGLE 370 -#define HOENN_DEX_TYROGUE 371 -#define HOENN_DEX_HITMONTOP 372 -#define HOENN_DEX_SMOOCHUM 373 -#define HOENN_DEX_ELEKID 374 -#define HOENN_DEX_MAGBY 375 -#define HOENN_DEX_MILTANK 376 -#define HOENN_DEX_BLISSEY 377 -#define HOENN_DEX_RAIKOU 378 -#define HOENN_DEX_ENTEI 379 -#define HOENN_DEX_SUICUNE 380 -#define HOENN_DEX_LARVITAR 381 -#define HOENN_DEX_PUPITAR 382 -#define HOENN_DEX_TYRANITAR 383 -#define HOENN_DEX_LUGIA 384 -#define HOENN_DEX_HO_OH 385 -#define HOENN_DEX_CELEBI 386 - -#define HOENN_DEX_OLD_UNOWN_B (HOENN_DEX_CELEBI + 1) -#define HOENN_DEX_OLD_UNOWN_C (HOENN_DEX_OLD_UNOWN_B + 1) -#define HOENN_DEX_OLD_UNOWN_D (HOENN_DEX_OLD_UNOWN_B + 2) -#define HOENN_DEX_OLD_UNOWN_E (HOENN_DEX_OLD_UNOWN_B + 3) -#define HOENN_DEX_OLD_UNOWN_F (HOENN_DEX_OLD_UNOWN_B + 4) -#define HOENN_DEX_OLD_UNOWN_G (HOENN_DEX_OLD_UNOWN_B + 5) -#define HOENN_DEX_OLD_UNOWN_H (HOENN_DEX_OLD_UNOWN_B + 6) -#define HOENN_DEX_OLD_UNOWN_I (HOENN_DEX_OLD_UNOWN_B + 7) -#define HOENN_DEX_OLD_UNOWN_J (HOENN_DEX_OLD_UNOWN_B + 8) -#define HOENN_DEX_OLD_UNOWN_K (HOENN_DEX_OLD_UNOWN_B + 9) -#define HOENN_DEX_OLD_UNOWN_L (HOENN_DEX_OLD_UNOWN_B + 10) -#define HOENN_DEX_OLD_UNOWN_M (HOENN_DEX_OLD_UNOWN_B + 11) -#define HOENN_DEX_OLD_UNOWN_N (HOENN_DEX_OLD_UNOWN_B + 12) -#define HOENN_DEX_OLD_UNOWN_O (HOENN_DEX_OLD_UNOWN_B + 13) -#define HOENN_DEX_OLD_UNOWN_P (HOENN_DEX_OLD_UNOWN_B + 14) -#define HOENN_DEX_OLD_UNOWN_Q (HOENN_DEX_OLD_UNOWN_B + 15) -#define HOENN_DEX_OLD_UNOWN_R (HOENN_DEX_OLD_UNOWN_B + 16) -#define HOENN_DEX_OLD_UNOWN_S (HOENN_DEX_OLD_UNOWN_B + 17) -#define HOENN_DEX_OLD_UNOWN_T (HOENN_DEX_OLD_UNOWN_B + 18) -#define HOENN_DEX_OLD_UNOWN_U (HOENN_DEX_OLD_UNOWN_B + 19) -#define HOENN_DEX_OLD_UNOWN_V (HOENN_DEX_OLD_UNOWN_B + 20) -#define HOENN_DEX_OLD_UNOWN_W (HOENN_DEX_OLD_UNOWN_B + 21) -#define HOENN_DEX_OLD_UNOWN_X (HOENN_DEX_OLD_UNOWN_B + 22) -#define HOENN_DEX_OLD_UNOWN_Y (HOENN_DEX_OLD_UNOWN_B + 23) -#define HOENN_DEX_OLD_UNOWN_Z (HOENN_DEX_OLD_UNOWN_B + 24) - #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 614ef9b83..16657a800 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -129,7 +129,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32); void MoveCoords(u8, s16 *, s16 *); bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *); u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *); -u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z); +u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation); void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType); u8 GetTrainerFacingDirectionMovementType(u8 direction); const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId); @@ -163,17 +163,15 @@ u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent); u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent); void TryOverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent, u8 movementType); void OverrideTemplateCoordsForObjectEvent(const struct ObjectEvent *objectEvent); -void ShiftStillObjectEventCoords(struct ObjectEvent *pObject); -void ObjectEventMoveDestCoords(struct ObjectEvent *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); +void ShiftStillObjectEventCoords(struct ObjectEvent *objEvent); +void ObjectEventMoveDestCoords(struct ObjectEvent *objEvent, u32 direction, s16 *x, s16 *y); u8 AddCameraObject(u8 linkedSpriteId); void UpdateObjectEventsForCameraUpdate(s16 x, s16 y); u8 GetWalkSlowMovementAction(u32); u8 GetJumpMovementAction(u32); -bool8 AreZCoordsCompatible(u8, u8); -u8 ZCoordToPriority(u8); -void ObjectEventUpdateZCoord(struct ObjectEvent *pObject); -void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); -bool8 IsZCoordMismatchAt(u8, s16, s16); +u8 ElevationToPriority(u8); +void ObjectEventUpdateElevation(struct ObjectEvent *objEvent); +void SetObjectSubpriorityByElevation(u8, struct Sprite *, u8); void UnfreezeObjectEvent(struct ObjectEvent *); u8 FindLockedObjectEventIndex(struct ObjectEvent *); void SetAndStartSpriteAnim(struct Sprite *, u8, u8); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 5ca7db858..21fa37fe6 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -30,7 +30,7 @@ void PlayerSetAnimId(u8 a, u8 b); bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction); void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction); u8 CheckForObjectEventCollision(struct ObjectEvent *a, s16 b, s16 c, u8 d, u8 e); -u8 PlayerGetZCoord(void); +u8 PlayerGetElevation(void); void SetPlayerAvatarTransitionFlags(u16 a); void CancelPlayerForcedMovement(void); void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d); diff --git a/include/fieldmap.h b/include/fieldmap.h index 28da8da2a..e7497f7bd 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -7,7 +7,7 @@ #define NUM_METATILES_TOTAL 1024 #define NUM_PALS_IN_PRIMARY 6 #define NUM_PALS_TOTAL 13 -#define MAX_MAP_DATA_SIZE 0x2800 +#define MAX_MAP_DATA_SIZE 10240 // Map coordinates are offset by 7 when using the map // buffer because it needs to load sufficient border @@ -29,10 +29,10 @@ void GetCameraCoords(u16*, u16*); bool8 MapGridIsImpassableAt(int, int); int GetMapBorderIdAt(int x, int y); bool32 CanCameraMoveInDirection(int direction); -u16 GetBehaviorByMetatileId(u16 metatileId); +u16 GetMetatileAttributesById(u16 metatileId); void GetCameraFocusCoords(u16 *x, u16 *y); u8 MapGridGetMetatileLayerTypeAt(int x, int y); -u8 MapGridGetZCoordAt(int x, int y); +u8 MapGridGetElevationAt(int x, int y); bool8 CameraMove(int deltaX, int deltaY); void SaveMapView(void); void SetCameraFocusCoords(u16 x, u16 y); diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index eeb79391b..a057c2da6 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -349,7 +349,7 @@ struct MusicPlayer { struct MusicPlayerInfo *info; struct MusicPlayerTrack *track; - u8 unk_8; + u8 numTracks; u16 unk_A; }; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a56480c96..98570f60d 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -1,13 +1,30 @@ #ifndef GUARD_GLOBAL_FIELDMAP_H #define GUARD_GLOBAL_FIELDMAP_H -#define METATILE_BEHAVIOR_MASK 0x00FF -#define METATILE_COLLISION_MASK 0x0C00 -#define METATILE_ID_MASK 0x03FF -#define METATILE_ID_UNDEFINED 0x03FF -#define METATILE_ELEVATION_SHIFT 12 -#define METATILE_COLLISION_SHIFT 10 -#define METATILE_ELEVATION_MASK 0xF000 +// Masks/shifts for blocks in the map grid +// Map grid blocks consist of a 10 bit metatile id, a 2 bit collision value, and a 4 bit elevation value +// This is the data stored in each data/layouts/*/map.bin file +#define MAPGRID_METATILE_ID_MASK 0x03FF // Bits 1-10 +#define MAPGRID_COLLISION_MASK 0x0C00 // Bits 11-12 +#define MAPGRID_ELEVATION_MASK 0xF000 // Bits 13-16 +#define MAPGRID_COLLISION_SHIFT 10 +#define MAPGRID_ELEVATION_SHIFT 12 + +// An undefined map grid block has all metatile id bits set and nothing else +#define MAPGRID_UNDEFINED MAPGRID_METATILE_ID_MASK + +// Masks/shifts for metatile attributes +// Metatile attributes consist of an 8 bit behavior value, 4 unused bits, and a 4 bit layer type value +// This is the data stored in each data/tilesets/*/*/metatile_attributes.bin file +#define METATILE_ATTR_BEHAVIOR_MASK 0x00FF // Bits 1-8 +#define METATILE_ATTR_LAYER_MASK 0xF000 // Bits 13-16 +#define METATILE_ATTR_LAYER_SHIFT 12 + +enum { + METATILE_LAYER_TYPE_NORMAL, // Metatile uses middle and top bg layers + METATILE_LAYER_TYPE_COVERED, // Metatile uses bottom and middle bg layers + METATILE_LAYER_TYPE_SPLIT, // Metatile uses bottom and top bg layers +}; #define METATILE_ID(tileset, name) (METATILE_##tileset##_##name) @@ -16,18 +33,6 @@ // for constructing large tiles, such as the Battle Pike's curtain tile. #define METATILE_ROW_WIDTH 8 -enum -{ - CONNECTION_INVALID = -1, - CONNECTION_NONE, - CONNECTION_SOUTH, - CONNECTION_NORTH, - CONNECTION_WEST, - CONNECTION_EAST, - CONNECTION_DIVE, - CONNECTION_EMERGE -}; - typedef void (*TilesetCB)(void); struct Tileset diff --git a/include/global.h b/include/global.h index b33749f79..0dc1d4bd4 100644 --- a/include/global.h +++ b/include/global.h @@ -9,6 +9,7 @@ #include "constants/flags.h" #include "constants/vars.h" #include "constants/species.h" +#include "constants/pokedex.h" #include "constants/berry.h" #include "constants/maps.h" #include "constants/pokemon.h" @@ -127,7 +128,9 @@ #define ROUND_BITS_TO_BYTES(numBits) DIV_ROUND_UP(numBits, 8) -#define DEX_FLAGS_NO ROUND_BITS_TO_BYTES(NUM_SPECIES) +// NUM_DEX_FLAG_BYTES allocates more flags than it needs to, as NUM_SPECIES includes the "old unown" +// values that don't appear in the Pokedex. NATIONAL_DEX_COUNT does not include these values. +#define NUM_DEX_FLAG_BYTES ROUND_BITS_TO_BYTES(NUM_SPECIES) #define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) #define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) @@ -184,8 +187,8 @@ struct Pokedex /*0x04*/ u32 unownPersonality; // set when you first see Unown /*0x08*/ u32 spindaPersonality; // set when you first see Spinda /*0x0C*/ u32 unknown3; - /*0x10*/ u8 owned[DEX_FLAGS_NO]; - /*0x44*/ u8 seen[DEX_FLAGS_NO]; + /*0x10*/ u8 owned[NUM_DEX_FLAG_BYTES]; + /*0x44*/ u8 seen[NUM_DEX_FLAG_BYTES]; }; struct PokemonJumpRecords @@ -973,7 +976,7 @@ struct SaveBlock1 /*0x690*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; /*0x790*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; /*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; - /*0x988*/ u8 seen1[DEX_FLAGS_NO]; + /*0x988*/ u8 seen1[NUM_DEX_FLAG_BYTES]; /*0x9BC*/ u16 berryBlenderRecords[3]; /*0x9C2*/ u8 unused_9C2[6]; /*0x9C8*/ u16 trainerRematchStepCounter; @@ -1029,7 +1032,7 @@ struct SaveBlock1 /*0x3718*/ u32 trainerHillTimes[4]; /*0x3728*/ struct RamScript ramScript; /*0x3B14*/ struct RecordMixingGift recordMixingGift; - /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; + /*0x3B24*/ u8 seen2[NUM_DEX_FLAG_BYTES]; /*0x3B58*/ LilycoveLady lilycoveLady; /*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20]; /*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; @@ -1045,7 +1048,7 @@ struct MapPosition { s16 x; s16 y; - s8 height; + s8 elevation; }; #endif // GUARD_GLOBAL_H diff --git a/include/graphics.h b/include/graphics.h index e2fe5cf77..0972743c5 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -5,31 +5,31 @@ extern const u32 gMessageBox_Gfx[]; extern const u16 gMessageBox_Pal[]; -// interface pokeballs -extern const u32 gInterfaceGfx_PokeBall[]; -extern const u32 gInterfacePal_PokeBall[]; -extern const u32 gInterfaceGfx_GreatBall[]; -extern const u32 gInterfacePal_GreatBall[]; -extern const u32 gInterfaceGfx_SafariBall[]; -extern const u32 gInterfacePal_SafariBall[]; -extern const u32 gInterfaceGfx_UltraBall[]; -extern const u32 gInterfacePal_UltraBall[]; -extern const u32 gInterfaceGfx_MasterBall[]; -extern const u32 gInterfacePal_MasterBall[]; -extern const u32 gInterfaceGfx_NetBall[]; -extern const u32 gInterfacePal_NetBall[]; -extern const u32 gInterfaceGfx_DiveBall[]; -extern const u32 gInterfacePal_DiveBall[]; -extern const u32 gInterfaceGfx_NestBall[]; -extern const u32 gInterfacePal_NestBall[]; -extern const u32 gInterfaceGfx_RepeatBall[]; -extern const u32 gInterfacePal_RepeatBall[]; -extern const u32 gInterfaceGfx_TimerBall[]; -extern const u32 gInterfacePal_TimerBall[]; -extern const u32 gInterfaceGfx_LuxuryBall[]; -extern const u32 gInterfacePal_LuxuryBall[]; -extern const u32 gInterfaceGfx_PremierBall[]; -extern const u32 gInterfacePal_PremierBall[]; +// pokeballs +extern const u32 gBallGfx_Poke[]; +extern const u32 gBallPal_Poke[]; +extern const u32 gBallGfx_Great[]; +extern const u32 gBallPal_Great[]; +extern const u32 gBallGfx_Safari[]; +extern const u32 gBallPal_Safari[]; +extern const u32 gBallGfx_Ultra[]; +extern const u32 gBallPal_Ultra[]; +extern const u32 gBallGfx_Master[]; +extern const u32 gBallPal_Master[]; +extern const u32 gBallGfx_Net[]; +extern const u32 gBallPal_Net[]; +extern const u32 gBallGfx_Dive[]; +extern const u32 gBallPal_Dive[]; +extern const u32 gBallGfx_Nest[]; +extern const u32 gBallPal_Nest[]; +extern const u32 gBallGfx_Repeat[]; +extern const u32 gBallPal_Repeat[]; +extern const u32 gBallGfx_Timer[]; +extern const u32 gBallPal_Timer[]; +extern const u32 gBallGfx_Luxury[]; +extern const u32 gBallPal_Luxury[]; +extern const u32 gBallGfx_Premier[]; +extern const u32 gBallPal_Premier[]; extern const u32 gOpenPokeballGfx[]; // pokemon gfx @@ -4035,16 +4035,16 @@ extern const u32 gPokenavRibbonsSummaryBg_Tilemap[]; extern const u32 gSummaryScreen_Gfx[]; extern const u32 gSummaryScreen_Pal[]; extern const u32 gSummaryPage_Info_Tilemap[]; -extern const u32 gSummaryPage_InfoCopy_Tilemap[]; +extern const u32 gSummaryPage_InfoEgg_Tilemap[]; extern const u32 gSummaryPage_Skills_Tilemap[]; extern const u32 gSummaryPage_BattleMoves_Tilemap[]; extern const u32 gSummaryPage_ContestMoves_Tilemap[]; extern const u16 gPPTextPalette[]; -extern const u16 gSummaryScreenWindow_Tilemap[]; extern const u32 gMoveTypes_Pal[]; -extern const u16 gSummaryScreenPowAcc_Tilemap[]; -extern const u16 gSummaryScreenAppealJam_Tilemap[]; +extern const u16 gSummaryScreen_MoveEffect_Battle_Tilemap[]; +extern const u16 gSummaryScreen_MoveEffect_Contest_Tilemap[]; +extern const u16 gSummaryScreen_MoveEffect_Cancel_Tilemap[]; extern const u32 gMoveTypes_Gfx[]; extern const u32 gSummaryMoveSelect_Gfx[]; @@ -4052,10 +4052,10 @@ extern const u32 gSummaryMoveSelect_Pal[]; extern const u32 gStatusGfx_Icons[]; extern const u32 gStatusPal_Icons[]; -extern const u32 gBuyMenuFrame_Gfx[]; -extern const u32 gBuyMenuFrame_Tilemap[]; -extern const u32 gMenuMoneyGfx[]; -extern const u32 gMenuMoneyPal[]; +extern const u32 gShopMenu_Gfx[]; +extern const u32 gShopMenu_Tilemap[]; +extern const u32 gShopMenu_Pal[]; +extern const u32 gShopMenuMoney_Gfx[]; extern const u32 gBattleInterface_BallStatusBarGfx[]; extern const u8 gBattleInterface_BallDisplayGfx[]; @@ -4094,8 +4094,8 @@ extern const u32 gBlankGfxCompressed[]; extern const u16 gBattleInterface_BallStatusBarPal[]; extern const u16 gBattleInterface_BallDisplayPal[]; -extern const u32 gBagSwapLineGfx[]; -extern const u32 gBagSwapLinePal[]; +extern const u32 gSwapLineGfx[]; +extern const u32 gSwapLinePal[]; extern const u32 gBattlePyramidBag_Gfx[]; extern const u32 gBattlePyramidBag_Pal[]; @@ -4121,11 +4121,11 @@ extern const u32 gDomeTourneyInfoCardBg_Tilemap[]; extern const u32 gDomeTourneyTree_Pal[]; extern const u32 gDomeTourneyTreeButtons_Pal[]; extern const u32 gDomeTourneyMatchCardBg_Pal[]; -extern const u32 gDomeTourneyBg_Gfx[]; +extern const u32 gDomeTourneyTree_Gfx[]; extern const u32 gDomeTourneyLine_Gfx[]; extern const u32 gDomeTourneyLineDown_Tilemap[]; extern const u32 gDomeTourneyLineUp_Tilemap[]; -extern const u32 gDomeTourneyLineMask_Tilemap[]; +extern const u32 gDomeTourneyTree_Tilemap[]; extern const u32 gDomeTourneyTreeButtons_Gfx[]; extern const u16 gTilesetAnims_BattleDomePals0_0[]; extern const u16 gTilesetAnims_BattleDomePals0_1[]; @@ -5002,7 +5002,7 @@ extern const u16 gUsePokeblockCondition_Pal[]; // Berry Crush extern const u32 gBerryCrush_Crusher_Gfx[]; extern const u16 gBerryCrush_Crusher_Pal[]; -extern const u32 gBerryCrush_Crusher_Tilemap[]; +extern const u32 gBerryCrush_TextWindows_Tilemap[]; // Pokenav extern const u32 gPokenavMessageBox_Gfx[]; diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 5895426cf..c2d0d23ee 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -57,7 +57,7 @@ bool8 MetatileBehavior_IsSecretBaseTree(u8); bool8 MetatileBehavior_IsSecretBaseShrub(u8); bool8 MetatileBehavior_IsSecretBasePC(u8); bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8); -bool8 MetatileBehavior_IsBlockDecoration(u8); +bool8 MetatileBehavior_IsSecretBaseTrainerSpot(u8); bool8 MetatileBehavior_IsSecretBaseImpassable(u8); bool8 MetatileBehavior_IsSecretBaseDecorationBase(u8); bool8 MetatileBehavior_IsSecretBasePoster(u8); diff --git a/include/overworld.h b/include/overworld.h index 38903693f..9f115a653 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -40,20 +40,18 @@ struct LinkPlayerObjectEvent u8 movementMode; }; -// Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; -extern u16 *gBGTilemapBuffers1; -extern u16 *gBGTilemapBuffers2; -extern u16 *gBGTilemapBuffers3; +extern u16 *gOverworldTilemapBuffer_Bg2; +extern u16 *gOverworldTilemapBuffer_Bg1; +extern u16 *gOverworldTilemapBuffer_Bg3; extern u16 gHeldKeyCodeToSend; extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; -// Exported ROM declarations extern const struct UCoords32 gDirectionToVectors[]; void DoWhiteOut(void); diff --git a/include/pokemon.h b/include/pokemon.h index 28460bbe6..8039a4fdd 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -239,10 +239,13 @@ struct BattleMove u8 flags; }; +#define SPINDA_SPOT_WIDTH 16 +#define SPINDA_SPOT_HEIGHT 16 + struct SpindaSpot { u8 x, y; - u16 image[16]; + u16 image[SPINDA_SPOT_HEIGHT]; }; struct __attribute__((packed)) LevelUpMove diff --git a/ld_script.txt b/ld_script.txt index 188a53385..eed4a3a06 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1250,10 +1250,10 @@ SECTIONS { src/libisagbprn.o(.rodata); } =0 - other_data : + multiboot_data : ALIGN(4) { - data/ereader_link_data.o(.rodata); + data/multiboot_ereader.o(.rodata); data/multiboot_berry_glitch_fix.o(.rodata); data/multiboot_pokemon_colosseum.o(.rodata); } =0 diff --git a/ld_script_modern.txt b/ld_script_modern.txt index ac62abe27..a988fe0cd 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -27,6 +27,7 @@ SECTIONS { /* .bss starts at 0x3000000 */ src/*.o(.bss); gflib/*.o(.bss); + data/*.o(.bss); *libc.a:*.o(.bss*); *libnosys.a:*.o(.bss*); @@ -111,10 +112,10 @@ SECTIONS { src/libisagbprn.o(.rodata); } =0 - other_data : + multiboot_data : ALIGN(4) { - data/ereader_link_data.o(.rodata); + data/multiboot_ereader.o(.rodata); data/multiboot_berry_glitch_fix.o(.rodata); data/multiboot_pokemon_colosseum.o(.rodata); } =0 diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc index 6c74a1352..5981a4d03 100644 --- a/sound/music_player_table.inc +++ b/sound/music_player_table.inc @@ -1,6 +1,32 @@ + .equiv TRACK_SIZE, 0x50 + .equiv NUM_TRACKS_BGM, 10 + .equiv NUM_TRACKS_SE1, 3 + .equiv NUM_TRACKS_SE2, 9 + .equiv NUM_TRACKS_SE3, 1 + + .bss + +gMPlayTrack_BGM:: + .space TRACK_SIZE * NUM_TRACKS_BGM + .size gMPlayTrack_BGM, .-gMPlayTrack_BGM + +gMPlayTrack_SE1:: + .space TRACK_SIZE * NUM_TRACKS_SE1 + .size gMPlayTrack_SE1, .-gMPlayTrack_SE1 + +gMPlayTrack_SE2:: + .space TRACK_SIZE * NUM_TRACKS_SE2 + .size gMPlayTrack_SE2, .-gMPlayTrack_SE2 + +gMPlayTrack_SE3:: + .space TRACK_SIZE * NUM_TRACKS_SE3 + .size gMPlayTrack_SE3, .-gMPlayTrack_SE3 + + .section .rodata + .align 2 gMPlayTable:: - music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 10, 0 - music_player gMPlayInfo_SE1, gMPlayTrack_SE1, 3, 1 - music_player gMPlayInfo_SE2, gMPlayTrack_SE2, 9, 1 - music_player gMPlayInfo_SE3, gMPlayTrack_SE3, 1, 0 + music_player gMPlayInfo_BGM, gMPlayTrack_BGM, NUM_TRACKS_BGM, 0 + music_player gMPlayInfo_SE1, gMPlayTrack_SE1, NUM_TRACKS_SE1, 1 + music_player gMPlayInfo_SE2, gMPlayTrack_SE2, NUM_TRACKS_SE2, 1 + music_player gMPlayInfo_SE3, gMPlayTrack_SE3, NUM_TRACKS_SE3, 0 diff --git a/src/battle_dome.c b/src/battle_dome.c index 2f77491c9..aadd85afd 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -5304,10 +5304,10 @@ static void Task_ShowTourneyTree(u8 taskId) break; case 2: sTilemapBuffer = AllocZeroed(BG_SCREEN_SIZE); - LZDecompressWram(gDomeTourneyLineMask_Tilemap, sTilemapBuffer); + LZDecompressWram(gDomeTourneyTree_Tilemap, sTilemapBuffer); SetBgTilemapBuffer(1, sTilemapBuffer); CopyBgTilemapBufferToVram(1); - DecompressAndLoadBgGfxUsingHeap(1, gDomeTourneyBg_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, gDomeTourneyTree_Gfx, 0x2000, 0, 0); DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLine_Gfx, 0x2000, 0, 0); DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLineDown_Tilemap, 0x2000, 0, 1); DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyLineUp_Tilemap, 0x2000, 0, 1); diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 247b8712f..787dc4740 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -2509,7 +2509,7 @@ static void Swap_Task_HandleYesNo(u8 taskId) } } -static void Swap_HandleQuitSwappingResposne(u8 taskId) +static void Swap_HandleQuitSwappingResponse(u8 taskId) { if (gTasks[taskId].tSaidYes == TRUE) { @@ -2533,8 +2533,8 @@ static void Swap_AskQuitSwapping(u8 taskId) Swap_PrintOnInfoWindow(gText_QuitSwapping); sFactorySwapScreen->monSwapped = FALSE; gTasks[taskId].tState = STATE_YESNO_SHOW; - gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_HandleQuitSwappingResposne) >> 16; - gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_HandleQuitSwappingResposne); + gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_HandleQuitSwappingResponse) >> 16; + gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_HandleQuitSwappingResponse); gTasks[taskId].func = Swap_Task_HandleYesNo; } } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index b10690ce4..154760396 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1239,7 +1239,7 @@ static u8 GetPostBattleDirectionHintTextIndex(int *hintType, u8 minDistanceForEx { for (x = 0; x < 32; x++) { - if ((map[x] & METATILE_ID_MASK) == METATILE_BattlePyramid_Exit) + if ((map[x] & MAPGRID_METATILE_ID_MASK) == METATILE_BattlePyramid_Exit) { x += MAP_OFFSET - gObjectEvents[gSelectedObjectEvent].initialCoords.x; y += MAP_OFFSET - gObjectEvents[gSelectedObjectEvent].initialCoords.y; @@ -1545,7 +1545,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio { for (x = 0; x < mapLayout->width; x++) { - if ((layoutMap[x] & METATILE_ID_MASK) != METATILE_BattlePyramid_Exit) + if ((layoutMap[x] & MAPGRID_METATILE_ID_MASK) != METATILE_BattlePyramid_Exit) { map[x] = layoutMap[x]; } @@ -1556,7 +1556,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + x; gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + y; } - map[x] = (layoutMap[x] & (METATILE_ELEVATION_MASK | METATILE_COLLISION_MASK)) | METATILE_BattlePyramid_Floor; + map[x] = (layoutMap[x] & (MAPGRID_ELEVATION_MASK | MAPGRID_COLLISION_MASK)) | METATILE_BattlePyramid_Floor; } else { diff --git a/src/berry_crush.c b/src/berry_crush.c index 9b8323e2d..e7a5df951 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1947,15 +1947,15 @@ static void DrawPlayerNameWindows(struct BerryCrushGame *game) static void CopyPlayerNameWindowGfxToBg(struct BerryCrushGame *game) { u8 i = 0; - u8 * crusherGfx; + u8 * windowGfx; - LZ77UnCompWram(gBerryCrush_Crusher_Tilemap, gDecompressionBuffer); + LZ77UnCompWram(gBerryCrush_TextWindows_Tilemap, gDecompressionBuffer); - for (crusherGfx = gDecompressionBuffer; i < game->playerCount; i++) + for (windowGfx = gDecompressionBuffer; i < game->playerCount; i++) { CopyToBgTilemapBufferRect( 3, - &crusherGfx[game->gfx.playerCoords[i]->playerId * 40], + &windowGfx[game->gfx.playerCoords[i]->playerId * 40], game->gfx.playerCoords[i]->windowGfxX, game->gfx.playerCoords[i]->windowGfxY, 10, diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 92b1f65d1..219454ab2 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -92,7 +92,7 @@ static const struct BgTemplate sBackgroundTemplates[] = } }; -static const u16 sFontPalette[] = INCBIN_U16("graphics/interface/berry_tag_screen.gbapal"); +static const u16 sFontPalette[] = INCBIN_U16("graphics/bag/berry_tag_screen.gbapal"); static const u8 sTextColors[2][3] = { diff --git a/src/bike.c b/src/bike.c index 5e7225ae7..978535d4f 100644 --- a/src/bike.c +++ b/src/bike.c @@ -110,7 +110,7 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) = }; // used with bikeFrameCounter from mach bike -static const u16 sMachBikeSpeeds[] = {BIKE_SPEED_NORMAL, BIKE_SPEED_FAST, BIKE_SPEED_FASTEST}; +static const u16 sMachBikeSpeeds[] = {PLAYER_SPEED_NORMAL, PLAYER_SPEED_FAST, PLAYER_SPEED_FASTEST}; // this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list. static const u8 sAcroBikeJumpTimerList[] = {4, 0}; @@ -149,7 +149,7 @@ static u8 GetMachBikeTransition(u8 *dirTraveling) if (*dirTraveling == 0) { *dirTraveling = direction; // update the direction, since below we either faced a direction or we started moving. - if (gPlayerAvatar.bikeSpeed == BIKE_SPEED_STANDING) + if (gPlayerAvatar.bikeSpeed == PLAYER_SPEED_STANDING) { gPlayerAvatar.runningState = NOT_MOVING; return MACH_TRANS_FACE_DIRECTION; @@ -161,7 +161,7 @@ static u8 GetMachBikeTransition(u8 *dirTraveling) // we need to check if the last traveled direction changed from the new direction as well as ensuring that we dont update the state while the player is moving: see the else check. if (*dirTraveling != direction && gPlayerAvatar.runningState != MOVING) { - if (gPlayerAvatar.bikeSpeed != BIKE_SPEED_STANDING) + if (gPlayerAvatar.bikeSpeed != PLAYER_SPEED_STANDING) { *dirTraveling = direction; // implement the new direction gPlayerAvatar.runningState = MOVING; @@ -248,7 +248,7 @@ static void MachBikeTransition_TrySlowDown(u8 direction) { u8 collision; - if (gPlayerAvatar.bikeSpeed != BIKE_SPEED_STANDING) + if (gPlayerAvatar.bikeSpeed != PLAYER_SPEED_STANDING) gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.bikeSpeed; collision = GetBikeCollision(direction); @@ -308,7 +308,7 @@ static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys) return ACRO_TRANS_FACE_DIRECTION; } } - if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.bikeSpeed == BIKE_SPEED_STANDING) + if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.bikeSpeed == PLAYER_SPEED_STANDING) { gPlayerAvatar.bikeSpeed++; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING; @@ -344,7 +344,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys if (*newDirection == AcroBike_GetJumpDirection()) { Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump. - gPlayerAvatar.bikeSpeed = BIKE_SPEED_NORMAL; + gPlayerAvatar.bikeSpeed = PLAYER_SPEED_NORMAL; if (*newDirection == GetOppositeDirection(direction)) { // do a turn jump. @@ -777,7 +777,7 @@ static void AcroBike_TryHistoryUpdate(u16 newKeys, u16 heldKeys) // newKeys is u else { Bike_UpdateDirTimerHistory(direction); - gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING; + gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING; } direction = heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON); // directions is reused for some reason. @@ -789,7 +789,7 @@ static void AcroBike_TryHistoryUpdate(u16 newKeys, u16 heldKeys) // newKeys is u else { Bike_UpdateABStartSelectHistory(direction); - gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING; + gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING; } } @@ -902,7 +902,7 @@ static bool8 IsRunningDisallowedByMetatile(u8 tile) { if (MetatileBehavior_IsRunningDisallowed(tile)) return TRUE; - if (MetatileBehavior_IsFortreeBridge(tile) && (PlayerGetZCoord() & 1) == 0) + if (MetatileBehavior_IsFortreeBridge(tile) && (PlayerGetElevation() & 1) == 0) return TRUE; return FALSE; } @@ -1061,7 +1061,7 @@ void BikeClearState(int newDirHistory, int newAbStartHistory) gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; gPlayerAvatar.newDirBackup = DIR_NONE; gPlayerAvatar.bikeFrameCounter = 0; - gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING; + gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING; gPlayerAvatar.directionHistory = newDirHistory; gPlayerAvatar.abStartSelectHistory = newAbStartHistory; @@ -1081,7 +1081,7 @@ void Bike_UpdateBikeCounterSpeed(u8 counter) static void Bike_SetBikeStill(void) { gPlayerAvatar.bikeFrameCounter = 0; - gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING; + gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING; } s16 GetPlayerSpeed(void) @@ -1094,11 +1094,11 @@ s16 GetPlayerSpeed(void) if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) return machSpeeds[gPlayerAvatar.bikeFrameCounter]; else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) - return BIKE_SPEED_FASTER; + return PLAYER_SPEED_FASTER; else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH)) - return BIKE_SPEED_FAST; + return PLAYER_SPEED_FAST; else - return BIKE_SPEED_NORMAL; + return PLAYER_SPEED_NORMAL; } void Bike_HandleBumpySlopeJump(void) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 26caa830d..876e6b4a7 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -80,9 +80,9 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt( 9 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft); MapGridSetMetatileIdAt(10 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid); MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopRight); - MapGridSetMetatileIdAt( 9 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt( 9 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | MAPGRID_COLLISION_MASK); MapGridSetMetatileIdAt(10 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomMid); - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | MAPGRID_COLLISION_MASK); DrawWholeMapView(); PlaySE(SE_BANG); FlagSet(FLAG_SYS_BRAILLE_DIG); @@ -207,9 +207,9 @@ static void DoBrailleRegirockEffect(void) MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid); MapGridSetMetatileIdAt(9 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopRight); - MapGridSetMetatileIdAt(7 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(7 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | MAPGRID_COLLISION_MASK); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomMid); - MapGridSetMetatileIdAt(9 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(9 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | MAPGRID_COLLISION_MASK); DrawWholeMapView(); PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); @@ -246,9 +246,9 @@ static void DoBrailleRegisteelEffect(void) MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid); MapGridSetMetatileIdAt(9 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopRight); - MapGridSetMetatileIdAt(7 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(7 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomLeft | MAPGRID_COLLISION_MASK); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomMid); - MapGridSetMetatileIdAt(9 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(9 + MAP_OFFSET, 20 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_BottomRight | MAPGRID_COLLISION_MASK); DrawWholeMapView(); PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); diff --git a/src/data/graphics/berries.h b/src/data/graphics/berries.h index eb3f9f4dc..e33384a84 100644 --- a/src/data/graphics/berries.h +++ b/src/data/graphics/berries.h @@ -1,10 +1,10 @@ -const u32 gBerryCheck_Gfx[] = INCBIN_U32("graphics/interface/check_berry.4bpp.lz"); -const u32 gBerryCheck_Pal[] = INCBIN_U32("graphics/interface/check_berry.gbapal.lz"); +const u32 gBerryCheck_Gfx[] = INCBIN_U32("graphics/bag/check_berry.4bpp.lz"); +const u32 gBerryCheck_Pal[] = INCBIN_U32("graphics/bag/check_berry.gbapal.lz"); -const u32 gBerryTag_Gfx[] = INCBIN_U32("graphics/interface/berry_tag.bin.lz"); -const u32 gBerryTag_Pal[] = INCBIN_U32("graphics/interface/berry_tag_title.bin.lz"); +const u32 gBerryTag_Gfx[] = INCBIN_U32("graphics/bag/berry_tag.bin.lz"); +const u32 gBerryTag_Pal[] = INCBIN_U32("graphics/bag/berry_tag_title.bin.lz"); -const u32 gBerryCheckCircle_Gfx[] = INCBIN_U32("graphics/interface/check_berry_circle.4bpp.lz"); +const u32 gBerryCheckCircle_Gfx[] = INCBIN_U32("graphics/bag/check_berry_circle.4bpp.lz"); const u32 gBerryPic_Cheri[] = INCBIN_U32("graphics/berries/cheri.4bpp.lz"); const u32 gBerryPic_Oran[] = INCBIN_U32("graphics/berries/oran.4bpp.lz"); diff --git a/src/data/graphics/interface_pokeballs.h b/src/data/graphics/interface_pokeballs.h deleted file mode 100644 index fe9a4e5be..000000000 --- a/src/data/graphics/interface_pokeballs.h +++ /dev/null @@ -1,37 +0,0 @@ -const u32 gInterfaceGfx_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.4bpp.lz"); -const u32 gInterfacePal_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.gbapal.lz"); - -const u32 gInterfaceGfx_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.4bpp.lz"); -const u32 gInterfacePal_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.gbapal.lz"); - -const u32 gInterfaceGfx_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.4bpp.lz"); -const u32 gInterfacePal_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.gbapal.lz"); - -const u32 gInterfaceGfx_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.4bpp.lz"); -const u32 gInterfacePal_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.gbapal.lz"); - -const u32 gInterfaceGfx_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.4bpp.lz"); -const u32 gInterfacePal_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.gbapal.lz"); - -const u32 gInterfaceGfx_NetBall[] = INCBIN_U32("graphics/interface/ball/net.4bpp.lz"); -const u32 gInterfacePal_NetBall[] = INCBIN_U32("graphics/interface/ball/net.gbapal.lz"); - -const u32 gInterfaceGfx_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.4bpp.lz"); -const u32 gInterfacePal_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.gbapal.lz"); - -const u32 gInterfaceGfx_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.4bpp.lz"); -const u32 gInterfacePal_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.gbapal.lz"); - -const u32 gInterfaceGfx_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.4bpp.lz"); -const u32 gInterfacePal_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.gbapal.lz"); - -const u32 gInterfaceGfx_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.4bpp.lz"); -const u32 gInterfacePal_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.gbapal.lz"); - -const u32 gInterfaceGfx_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.4bpp.lz"); -const u32 gInterfacePal_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.gbapal.lz"); - -const u32 gInterfaceGfx_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.4bpp.lz"); -const u32 gInterfacePal_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.gbapal.lz"); - -const u32 gOpenPokeballGfx[] = INCBIN_U32("graphics/interface/ball_open.4bpp.lz"); diff --git a/src/data/graphics/pokeballs.h b/src/data/graphics/pokeballs.h new file mode 100644 index 000000000..8203fca53 --- /dev/null +++ b/src/data/graphics/pokeballs.h @@ -0,0 +1,37 @@ +const u32 gBallGfx_Poke[] = INCBIN_U32("graphics/balls/poke.4bpp.lz"); +const u32 gBallPal_Poke[] = INCBIN_U32("graphics/balls/poke.gbapal.lz"); + +const u32 gBallGfx_Great[] = INCBIN_U32("graphics/balls/great.4bpp.lz"); +const u32 gBallPal_Great[] = INCBIN_U32("graphics/balls/great.gbapal.lz"); + +const u32 gBallGfx_Safari[] = INCBIN_U32("graphics/balls/safari.4bpp.lz"); +const u32 gBallPal_Safari[] = INCBIN_U32("graphics/balls/safari.gbapal.lz"); + +const u32 gBallGfx_Ultra[] = INCBIN_U32("graphics/balls/ultra.4bpp.lz"); +const u32 gBallPal_Ultra[] = INCBIN_U32("graphics/balls/ultra.gbapal.lz"); + +const u32 gBallGfx_Master[] = INCBIN_U32("graphics/balls/master.4bpp.lz"); +const u32 gBallPal_Master[] = INCBIN_U32("graphics/balls/master.gbapal.lz"); + +const u32 gBallGfx_Net[] = INCBIN_U32("graphics/balls/net.4bpp.lz"); +const u32 gBallPal_Net[] = INCBIN_U32("graphics/balls/net.gbapal.lz"); + +const u32 gBallGfx_Dive[] = INCBIN_U32("graphics/balls/dive.4bpp.lz"); +const u32 gBallPal_Dive[] = INCBIN_U32("graphics/balls/dive.gbapal.lz"); + +const u32 gBallGfx_Nest[] = INCBIN_U32("graphics/balls/nest.4bpp.lz"); +const u32 gBallPal_Nest[] = INCBIN_U32("graphics/balls/nest.gbapal.lz"); + +const u32 gBallGfx_Repeat[] = INCBIN_U32("graphics/balls/repeat.4bpp.lz"); +const u32 gBallPal_Repeat[] = INCBIN_U32("graphics/balls/repeat.gbapal.lz"); + +const u32 gBallGfx_Timer[] = INCBIN_U32("graphics/balls/timer.4bpp.lz"); +const u32 gBallPal_Timer[] = INCBIN_U32("graphics/balls/timer.gbapal.lz"); + +const u32 gBallGfx_Luxury[] = INCBIN_U32("graphics/balls/luxury.4bpp.lz"); +const u32 gBallPal_Luxury[] = INCBIN_U32("graphics/balls/luxury.gbapal.lz"); + +const u32 gBallGfx_Premier[] = INCBIN_U32("graphics/balls/premier.4bpp.lz"); +const u32 gBallPal_Premier[] = INCBIN_U32("graphics/balls/premier.gbapal.lz"); + +const u32 gOpenPokeballGfx[] = INCBIN_U32("graphics/balls/open.4bpp.lz"); diff --git a/src/data/party_menu.h b/src/data/party_menu.h index f3a8a50ec..f8093a9b6 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -1,3 +1,9 @@ +enum { + TAG_POKEBALL = 1200, + TAG_POKEBALL_SMALL, + TAG_STATUS_ICONS, +}; + static const struct BgTemplate sPartyMenuBgTemplates[] = { { @@ -112,8 +118,8 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = }; // Used only when both Cancel and Confirm are present -static const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); -static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); +static const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/party_menu/confirm_button.bin"); +static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/party_menu/cancel_button.bin"); // Text colors for BG, FG, and Shadow in that order static const u8 sFontColorTable[][3] = @@ -873,8 +879,8 @@ static const u8 *const sUnionRoomTradeMessages[] = [UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 - 1] = gText_CantTradeWithTrainer, }; -static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp"); -static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); +static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/party_menu/hold_icons.4bpp"); +static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/party_menu/hold_icons.gbapal"); static const struct OamData sOamData_HeldItem = { @@ -969,19 +975,19 @@ static const union AnimCmd *const sSpriteAnimTable_MenuPokeball[] = static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball = { - gPartyMenuPokeball_Gfx, 0x400, 0x04b0 + gPartyMenuPokeball_Gfx, 0x400, TAG_POKEBALL }; static const struct CompressedSpritePalette sSpritePalette_MenuPokeball = { - gPartyMenuPokeball_Pal, 0x04b0 + gPartyMenuPokeball_Pal, TAG_POKEBALL }; // Used for the pokeball sprite on each party slot / Cancel button static const struct SpriteTemplate sSpriteTemplate_MenuPokeball = { - .tileTag = 0x04b0, - .paletteTag = 0x04b0, + .tileTag = TAG_POKEBALL, + .paletteTag = TAG_POKEBALL, .oam = &sOamData_MenuPokeball, .anims = sSpriteAnimTable_MenuPokeball, .images = NULL, @@ -1055,14 +1061,14 @@ static const union AnimCmd *const sSpriteAnimTable_MenuPokeballSmall[] = static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeballSmall = { - gPartyMenuPokeballSmall_Gfx, 0x0300, 0x04b1 + gPartyMenuPokeballSmall_Gfx, 0x0300, TAG_POKEBALL_SMALL }; // Used for the pokeball sprite next to Cancel and Confirm when both are present, otherwise sSpriteTemplate_MenuPokeball is used static const struct SpriteTemplate sSpriteTemplate_MenuPokeballSmall = { - .tileTag = 1201, - .paletteTag = 1200, + .tileTag = TAG_POKEBALL_SMALL, + .paletteTag = TAG_POKEBALL, .oam = &sOamData_MenuPokeballSmall, .anims = sSpriteAnimTable_MenuPokeballSmall, .images = NULL, @@ -1149,18 +1155,18 @@ static const union AnimCmd *const sSpriteTemplate_StatusCondition[] = static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = { - gStatusGfx_Icons, 0x400, 1202 + gStatusGfx_Icons, 0x400, TAG_STATUS_ICONS }; static const struct CompressedSpritePalette sSpritePalette_StatusIcons = { - gStatusPal_Icons, 1202 + gStatusPal_Icons, TAG_STATUS_ICONS }; static const struct SpriteTemplate sSpriteTemplate_StatusIcons = { - .tileTag = 1202, - .paletteTag = 1202, + .tileTag = TAG_STATUS_ICONS, + .paletteTag = TAG_STATUS_ICONS, .oam = &sOamData_StatusCondition, .anims = sSpriteTemplate_StatusCondition, .images = NULL, diff --git a/src/decoration.c b/src/decoration.c index 118b4918e..7e102251a 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_0) +#define NUM_DECORATION_FLAGS (FLAG_DECORATION_14 - FLAG_DECORATION_1 + 1) #define tCursorX data[0] #define tCursorY data[1] @@ -440,7 +440,7 @@ static const struct YesNoFuncTable sStopPuttingAwayDecorationsYesNoFunctions = .noFunc = ContinuePuttingAwayDecorations, }; -static const u8 sDecorationPuttingAwayCursor[] = INCBIN_U8("graphics/misc/decoration_putting_away_cursor.4bpp"); +static const u8 sDecorationPuttingAwayCursor[] = INCBIN_U8("graphics/decorations/put_away_cursor.4bpp"); static const struct SpritePalette sSpritePal_PuttingAwayCursorBrendan = { @@ -1185,10 +1185,10 @@ static u16 GetDecorationElevation(u8 decoration, u8 tileIndex) switch (decoration) { case DECOR_STAND: - elevation = sDecorationStandElevations[tileIndex] << METATILE_ELEVATION_SHIFT; + elevation = sDecorationStandElevations[tileIndex] << MAPGRID_ELEVATION_SHIFT; return elevation; case DECOR_SLIDE: - elevation = sDecorationSlideElevation[tileIndex] << METATILE_ELEVATION_SHIFT; + elevation = sDecorationSlideElevation[tileIndex] << MAPGRID_ELEVATION_SHIFT; return elevation; default: return elevation; @@ -1199,7 +1199,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, { u16 i, j; s16 x, y; - u16 behavior; + u16 attributes; u16 impassableFlag; u16 overlapsWall; u16 elevation; @@ -1210,9 +1210,10 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, for (i = 0; i < decWidth; i++) { x = mapX + i; - behavior = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + gDecorations[decoration].tiles[j * decWidth + i]); - if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (behavior >> METATILE_ELEVATION_SHIFT))) - impassableFlag = METATILE_COLLISION_MASK; + attributes = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + gDecorations[decoration].tiles[j * decWidth + i]); + if (MetatileBehavior_IsSecretBaseImpassable(attributes & METATILE_ATTR_BEHAVIOR_MASK) == TRUE + || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (attributes >> METATILE_ATTR_LAYER_SHIFT) != METATILE_LAYER_TYPE_NORMAL)) + impassableFlag = MAPGRID_COLLISION_MASK; else impassableFlag = 0; @@ -1471,24 +1472,26 @@ static void AttemptCancelPlaceDecoration(u8 taskId) DisplayItemMessageOnField(taskId, gStringVar4, CancelDecoratingPrompt); } -// Note: behaviorBy is pre-anded with METATILE_ELEVATION_MASK. -static bool8 IsNonBlockNonElevated(u8 behaviorAt, u16 behaviorBy) +static bool8 IsSecretBaseTrainerSpot(u8 behaviorAt, u16 layerType) { - if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE || behaviorBy != 0) + if (!(MetatileBehavior_IsSecretBaseTrainerSpot(behaviorAt) == TRUE && layerType == METATILE_LAYER_TYPE_NORMAL)) return FALSE; return TRUE; } -static bool8 IsntInitialPosition(u8 taskId, s16 x, s16 y, u16 behaviorBy) +// Can't place decoration where the player was standing when they interacted with the PC +static bool8 IsntInitialPosition(u8 taskId, s16 x, s16 y, u16 layerType) { - if (x == gTasks[taskId].tInitialX + MAP_OFFSET && y == gTasks[taskId].tInitialY + MAP_OFFSET && behaviorBy != 0) + if (x == gTasks[taskId].tInitialX + MAP_OFFSET + && y == gTasks[taskId].tInitialY + MAP_OFFSET + && layerType != METATILE_LAYER_TYPE_NORMAL) return FALSE; return TRUE; } static bool8 IsFloorOrBoardAndHole(u16 behaviorAt, const struct Decoration *decoration) { - if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE) + if (MetatileBehavior_IsSecretBaseTrainerSpot(behaviorAt) != TRUE) { if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsSecretBaseHole(behaviorAt) == TRUE) return TRUE; @@ -1505,7 +1508,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) u8 i; u8 j; u8 behaviorAt; - u16 behaviorBy; + u16 layerType; u8 mapY; u8 mapX; s16 curY; @@ -1524,14 +1527,14 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].tCursorX + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK; + layerType = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ATTR_LAYER_MASK; if (!IsFloorOrBoardAndHole(behaviorAt, decoration)) return FALSE; - if (!IsntInitialPosition(taskId, curX, curY, behaviorBy)) + if (!IsntInitialPosition(taskId, curX, curY, layerType)) return FALSE; - behaviorAt = GetObjectEventIdByXYZ(curX, curY, 0); + behaviorAt = GetObjectEventIdByPosition(curX, curY, 0); if (behaviorAt != 0 && behaviorAt != OBJECT_EVENTS_COUNT) return FALSE; } @@ -1545,14 +1548,14 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].tCursorX + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK; - if (!MetatileBehavior_IsNormal(behaviorAt) && !IsNonBlockNonElevated(behaviorAt, behaviorBy)) + layerType = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ATTR_LAYER_MASK; + if (!MetatileBehavior_IsNormal(behaviorAt) && !IsSecretBaseTrainerSpot(behaviorAt, layerType)) return FALSE; - if (!IsntInitialPosition(taskId, curX, curY, behaviorBy)) + if (!IsntInitialPosition(taskId, curX, curY, layerType)) return FALSE; - if (GetObjectEventIdByXYZ(curX, curY, 0) != OBJECT_EVENTS_COUNT) + if (GetObjectEventIdByPosition(curX, curY, 0) != OBJECT_EVENTS_COUNT) return FALSE; } } @@ -1562,14 +1565,14 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].tCursorX + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[j]) & METATILE_ELEVATION_MASK; + layerType = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + decoration->tiles[j]) & METATILE_ATTR_LAYER_MASK; if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt)) return FALSE; - if (!IsntInitialPosition(taskId, curX, curY, behaviorBy)) + if (!IsntInitialPosition(taskId, curX, curY, layerType)) return FALSE; - behaviorAt = GetObjectEventIdByXYZ(curX, curY, 0); + behaviorAt = GetObjectEventIdByPosition(curX, curY, 0); if (behaviorAt != 0 && behaviorAt != OBJECT_EVENTS_COUNT) return FALSE; } @@ -1606,7 +1609,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) return FALSE; } - if (GetObjectEventIdByXYZ(curX, curY, 0) != OBJECT_EVENTS_COUNT) + if (GetObjectEventIdByPosition(curX, curY, 0) != OBJECT_EVENTS_COUNT) return FALSE; } break; diff --git a/src/diploma.c b/src/diploma.c index 76b4ae65c..ce31578dc 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -40,12 +40,12 @@ static void VBlankCB(void) static const u16 sDiplomaPalettes[][16] = { - INCBIN_U16("graphics/misc/diploma_national.gbapal"), - INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"), + INCBIN_U16("graphics/diploma/national.gbapal"), + INCBIN_U16("graphics/diploma/hoenn.gbapal"), }; -static const u32 sDiplomaTilemap[] = INCBIN_U32("graphics/misc/diploma_map.bin.lz"); -static const u32 sDiplomaTiles[] = INCBIN_U32("graphics/misc/diploma.4bpp.lz"); +static const u32 sDiplomaTilemap[] = INCBIN_U32("graphics/diploma/tilemap.bin.lz"); +static const u32 sDiplomaTiles[] = INCBIN_U32("graphics/diploma/tiles.4bpp.lz"); void CB2_ShowDiploma(void) { diff --git a/src/ereader_screen.c b/src/ereader_screen.c index f98a0247d..a22b85bab 100755 --- a/src/ereader_screen.c +++ b/src/ereader_screen.c @@ -41,8 +41,8 @@ static void Task_EReader(u8); struct EReaderData gEReaderData; -extern const u8 gEReaderLinkData_Start[]; -extern const u8 gEReaderLinkData_End[]; +extern const u8 gMultiBootProgram_EReader_Start[]; +extern const u8 gMultiBootProgram_EReader_End[]; static void EReader_Load(struct EReaderData *eReader, int size, u32 *data) { @@ -397,8 +397,8 @@ static void Task_EReader(u8 taskId) break; case ER_STATE_CONNECTING: AddTextPrinterToWindow1(gJPText_Connecting); - // XXX: This (u32*) cast is discarding the const qualifier from gEReaderLinkData_Start - EReader_Load(&gEReaderData, gEReaderLinkData_End - gEReaderLinkData_Start, (u32*)gEReaderLinkData_Start); + // XXX: This (u32*) cast is discarding the const qualifier from gMultiBootProgram_EReader_Start + EReader_Load(&gEReaderData, gMultiBootProgram_EReader_End - gMultiBootProgram_EReader_Start, (u32*)gMultiBootProgram_EReader_Start); data->state = ER_STATE_TRANSFER; break; case ER_STATE_TRANSFER: diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f219634e1..5281a692c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -114,7 +114,7 @@ static void GetGroundEffectFlags_Seaweed(struct ObjectEvent*, u32*); static void GetGroundEffectFlags_JumpLanding(struct ObjectEvent*, u32*); static u8 ObjectEventGetNearbyReflectionType(struct ObjectEvent*); static u8 GetReflectionTypeByMetatileBehavior(u32); -static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z); +static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*); static void DoTracksGroundEffect_None(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent*, struct Sprite*, u8); @@ -148,27 +148,29 @@ static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); static u16 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); -static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8); +static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); 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 struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, struct ObjectEventTemplate *, u8); static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); -static void InitSpriteForFigure8Anim(struct Sprite *sprite); -static bool8 AnimateSpriteInFigure8(struct Sprite *sprite); +static void InitSpriteForFigure8Anim(struct Sprite *); +static bool8 AnimateSpriteInFigure8(struct Sprite *); static void SpriteCB_VirtualObject(struct Sprite *); static void DoShadowFieldEffect(struct ObjectEvent *); static void SetJumpSpriteData(struct Sprite *, u8, u8, u8); -static void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction); -static bool8 UpdateWalkSlowAnim(struct Sprite *sprite); -static u8 DoJumpSpriteMovement(struct Sprite *sprite); -static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite); +static void SetWalkSlowSpriteData(struct Sprite *, u8); +static bool8 UpdateWalkSlowAnim(struct Sprite *); +static u8 DoJumpSpriteMovement(struct Sprite *); +static u8 DoJumpSpecialSpriteMovement(struct Sprite *); static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); -static bool8 NpcTakeStep(struct Sprite *sprite); +static bool8 NpcTakeStep(struct Sprite *); +static bool8 IsElevationMismatchAt(u8, s16, s16); +static bool8 AreElevationsCompatible(u8 a, u8 b); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -2207,7 +2209,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (!objectEvent->inanimate) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); - SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1); + SetObjectSubpriorityByElevation(objectEvent->previousElevation, sprite, 1); UpdateObjectEventVisibility(objectEvent, sprite); return objectEventId; } @@ -2372,8 +2374,8 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; } - InitObjectPriorityByZCoord(sprite, z); - SetObjectSubpriorityByZCoord(z, sprite, 1); + InitObjectPriorityByElevation(sprite, z); + SetObjectSubpriorityByElevation(z, sprite, 1); StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); } return spriteId; @@ -2515,7 +2517,7 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); ResetObjectEventFldEffData(objectEvent); - SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1); + SetObjectSubpriorityByElevation(objectEvent->previousElevation, sprite, 1); } } @@ -2908,7 +2910,7 @@ void UpdateObjectEventCoordsForCameraUpdate(void) } } -u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z) +u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation) { u8 i; @@ -2916,16 +2918,18 @@ u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z) { if (gObjectEvents[i].active) { - if (gObjectEvents[i].currentCoords.x == x && gObjectEvents[i].currentCoords.y == y && ObjectEventDoesZCoordMatch(&gObjectEvents[i], z)) + if (gObjectEvents[i].currentCoords.x == x + && gObjectEvents[i].currentCoords.y == y + && ObjectEventDoesElevationMatch(&gObjectEvents[i], elevation)) return i; } } return OBJECT_EVENTS_COUNT; } -static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *objectEvent, u8 z) +static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *objectEvent, u8 elevation) { - if (objectEvent->currentElevation != 0 && z != 0 && objectEvent->currentElevation != z) + if (objectEvent->currentElevation != 0 && elevation != 0 && objectEvent->currentElevation != elevation) return FALSE; return TRUE; @@ -5418,11 +5422,11 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) u8 direction = dir; if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; - else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) + else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == CONNECTION_INVALID || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) return COLLISION_IMPASSABLE; else if (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction)) return COLLISION_IMPASSABLE; - else if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y)) + else if (IsElevationMismatchAt(objectEvent->currentElevation, x, y)) return COLLISION_ELEVATION_MISMATCH; else if (DoesObjectCollideWithObjectAt(objectEvent, x, y)) return COLLISION_OBJECT_EVENT; @@ -5434,13 +5438,13 @@ u8 GetCollisionFlagsAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 d u8 flags = 0; if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) - flags |= 1; - if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))) - flags |= 2; - if (IsZCoordMismatchAt(objectEvent->currentElevation, x, y)) - flags |= 4; + flags |= 1 << (COLLISION_OUTSIDE_RANGE - 1); + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == CONNECTION_INVALID || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction) || (objectEvent->trackedByCamera && !CanCameraMoveInDirection(direction))) + flags |= 1 << (COLLISION_IMPASSABLE - 1); + if (IsElevationMismatchAt(objectEvent->currentElevation, x, y)) + flags |= 1 << (COLLISION_ELEVATION_MISMATCH - 1); if (DoesObjectCollideWithObjectAt(objectEvent, x, y)) - flags |= 8; + flags |= 1 << (COLLISION_OBJECT_EVENT - 1); return flags; } @@ -5492,7 +5496,7 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { - if (AreZCoordsCompatible(objectEvent->currentElevation, curObject->currentElevation)) + if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) return TRUE; } } @@ -8614,23 +8618,23 @@ static void SetObjectEventSpriteOamTableForLongGrass(struct ObjectEvent *objEven sprite->subspriteTableNum = 4; - if (ZCoordToPriority(objEvent->previousElevation) == 1) + if (ElevationToPriority(objEvent->previousElevation) == 1) sprite->subspriteTableNum = 5; } -bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y) +static bool8 IsElevationMismatchAt(u8 elevation, s16 x, s16 y) { - u8 mapZ; + u8 mapElevation; - if (z == 0) + if (elevation == 0) return FALSE; - mapZ = MapGridGetZCoordAt(x, y); + mapElevation = MapGridGetElevationAt(x, y); - if (mapZ == 0 || mapZ == 15) + if (mapElevation == 0 || mapElevation == 15) return FALSE; - if (mapZ != z) + if (mapElevation != elevation) return TRUE; return FALSE; @@ -8648,43 +8652,43 @@ static const u8 sElevationToSubspriteTableNum[] = { 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1, }; -void UpdateObjectEventZCoordAndPriority(struct ObjectEvent *objEvent, struct Sprite *sprite) +static void UpdateObjectEventElevationAndPriority(struct ObjectEvent *objEvent, struct Sprite *sprite) { if (objEvent->fixedPriority) return; - ObjectEventUpdateZCoord(objEvent); + ObjectEventUpdateElevation(objEvent); sprite->subspriteTableNum = sElevationToSubspriteTableNum[objEvent->previousElevation]; sprite->oam.priority = sElevationToPriority[objEvent->previousElevation]; } -static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z) +static void InitObjectPriorityByElevation(struct Sprite *sprite, u8 elevation) { - sprite->subspriteTableNum = sElevationToSubspriteTableNum[z]; - sprite->oam.priority = sElevationToPriority[z]; + sprite->subspriteTableNum = sElevationToSubspriteTableNum[elevation]; + sprite->oam.priority = sElevationToPriority[elevation]; } -u8 ZCoordToPriority(u8 z) +u8 ElevationToPriority(u8 elevation) { - return sElevationToPriority[z]; + return sElevationToPriority[elevation]; } -void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent) +void ObjectEventUpdateElevation(struct ObjectEvent *objEvent) { - u8 z = MapGridGetZCoordAt(objEvent->currentCoords.x, objEvent->currentCoords.y); - u8 z2 = MapGridGetZCoordAt(objEvent->previousCoords.x, objEvent->previousCoords.y); + u8 curElevation = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y); + u8 prevElevation = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y); - if (z == 0xF || z2 == 0xF) + if (curElevation == 15 || prevElevation == 15) return; - objEvent->currentElevation = z; + objEvent->currentElevation = curElevation; - if (z != 0 && z != 0xF) - objEvent->previousElevation = z; + if (curElevation != 0 && curElevation != 15) + objEvent->previousElevation = curElevation; } -void SetObjectSubpriorityByZCoord(u8 elevation, struct Sprite *sprite, u8 subpriority) +void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 subpriority) { s32 tmp = sprite->centerToCornerVecY; u32 tmpa = *(u16 *)&sprite->y; @@ -8699,10 +8703,10 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp if (objEvent->fixedPriority) return; - SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1); + SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1); } -bool8 AreZCoordsCompatible(u8 a, u8 b) +static bool8 AreElevationsCompatible(u8 a, u8 b) { if (a == 0 || b == 0) return TRUE; @@ -9068,7 +9072,7 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite if (objEvent->triggerGroundEffectsOnMove) { flags = 0; - UpdateObjectEventZCoordAndPriority(objEvent, sprite); + UpdateObjectEventElevationAndPriority(objEvent, sprite); GetAllGroundEffectFlags_OnSpawn(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); DoFlaggedGroundEffects(objEvent, sprite, flags); @@ -9084,7 +9088,7 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr if (objEvent->triggerGroundEffectsOnMove) { flags = 0; - UpdateObjectEventZCoordAndPriority(objEvent, sprite); + UpdateObjectEventElevationAndPriority(objEvent, sprite); GetAllGroundEffectFlags_OnBeginStep(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); filters_out_some_ground_effects(objEvent, &flags); @@ -9101,7 +9105,7 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent *objEvent, struct Sp if (objEvent->triggerGroundEffectsOnStop) { flags = 0; - UpdateObjectEventZCoordAndPriority(objEvent, sprite); + UpdateObjectEventElevationAndPriority(objEvent, sprite); GetAllGroundEffectFlags_OnFinishStep(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); FilterOutStepOnPuddleGroundEffectIfJumping(objEvent, &flags); @@ -9565,7 +9569,7 @@ void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible) static void SpriteCB_VirtualObject(struct Sprite *sprite) { VirtualObject_UpdateAnim(sprite); - SetObjectSubpriorityByZCoord(sprite->sVirtualObjElev, sprite, 1); + SetObjectSubpriorityByElevation(sprite->sVirtualObjElev, sprite, 1); UpdateObjectEventSpriteInvisibility(sprite, sprite->sInvisible); } diff --git a/src/field_camera.c b/src/field_camera.c index a36b6883c..0a00dcbee 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -14,7 +14,6 @@ EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE; -// Static type declarations struct FieldCameraOffset { u8 xPixelOffset; @@ -24,18 +23,16 @@ struct FieldCameraOffset bool8 copyBGToVRAM; }; -// static functions -static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout); -static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout); -static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout); -static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout); -static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *a, s32 x, s32 y); -static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout); -static void DrawMetatileAt(const struct MapLayout *mapLayout, u16, int, int); -static void DrawMetatile(s32 a, u16 *b, u16 c); +static void RedrawMapSliceNorth(struct FieldCameraOffset *, const struct MapLayout *); +static void RedrawMapSliceSouth(struct FieldCameraOffset *, const struct MapLayout *); +static void RedrawMapSliceEast(struct FieldCameraOffset *, const struct MapLayout *); +static void RedrawMapSliceWest(struct FieldCameraOffset *, const struct MapLayout *); +static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *, s32, s32); +static void DrawWholeMapViewInternal(int, int, const struct MapLayout *); +static void DrawMetatileAt(const struct MapLayout *, u16, int, int); +static void DrawMetatile(s32, u16 *, u16); static void CameraPanningCB_PanAhead(void); -// IWRAM bss vars static struct FieldCameraOffset sFieldCameraOffset; static s16 sHorizontalCameraPan; static s16 sVerticalCameraPan; @@ -46,7 +43,6 @@ struct CameraObject gFieldCamera; u16 gTotalCameraPixelOffsetY; u16 gTotalCameraPixelOffsetX; -// text static void ResetCameraOffset(struct FieldCameraOffset *cameraOffset) { cameraOffset->xTileOffset = 0; @@ -222,7 +218,7 @@ void DrawDoorMetatileAt(int x, int y, u16 *arr) if (offset >= 0) { - DrawMetatile(1, arr, offset); + DrawMetatile(METATILE_LAYER_TYPE_COVERED, arr, offset); sFieldCameraOffset.copyBGToVRAM = TRUE; } } @@ -244,66 +240,66 @@ static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x, DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * 8, offset); } -static void DrawMetatile(s32 metatileLayerType, u16 *metatiles, u16 offset) +static void DrawMetatile(s32 metatileLayerType, u16 *tiles, u16 offset) { switch (metatileLayerType) { - case 2: // LAYER_TYPE_ + case METATILE_LAYER_TYPE_SPLIT: // Draw metatile's bottom layer to the bottom background layer. - gBGTilemapBuffers3[offset] = metatiles[0]; - gBGTilemapBuffers3[offset + 1] = metatiles[1]; - gBGTilemapBuffers3[offset + 0x20] = metatiles[2]; - gBGTilemapBuffers3[offset + 0x21] = metatiles[3]; + gOverworldTilemapBuffer_Bg3[offset] = tiles[0]; + gOverworldTilemapBuffer_Bg3[offset + 1] = tiles[1]; + gOverworldTilemapBuffer_Bg3[offset + 0x20] = tiles[2]; + gOverworldTilemapBuffer_Bg3[offset + 0x21] = tiles[3]; // Draw transparent tiles to the middle background layer. - gBGTilemapBuffers1[offset] = 0; - gBGTilemapBuffers1[offset + 1] = 0; - gBGTilemapBuffers1[offset + 0x20] = 0; - gBGTilemapBuffers1[offset + 0x21] = 0; + gOverworldTilemapBuffer_Bg2[offset] = 0; + gOverworldTilemapBuffer_Bg2[offset + 1] = 0; + gOverworldTilemapBuffer_Bg2[offset + 0x20] = 0; + gOverworldTilemapBuffer_Bg2[offset + 0x21] = 0; // Draw metatile's top layer to the top background layer. - gBGTilemapBuffers2[offset] = metatiles[4]; - gBGTilemapBuffers2[offset + 1] = metatiles[5]; - gBGTilemapBuffers2[offset + 0x20] = metatiles[6]; - gBGTilemapBuffers2[offset + 0x21] = metatiles[7]; + gOverworldTilemapBuffer_Bg1[offset] = tiles[4]; + gOverworldTilemapBuffer_Bg1[offset + 1] = tiles[5]; + gOverworldTilemapBuffer_Bg1[offset + 0x20] = tiles[6]; + gOverworldTilemapBuffer_Bg1[offset + 0x21] = tiles[7]; break; - case 1: // LAYER_TYPE_COVERED_BY_OBJECTS + case METATILE_LAYER_TYPE_COVERED: // Draw metatile's bottom layer to the bottom background layer. - gBGTilemapBuffers3[offset] = metatiles[0]; - gBGTilemapBuffers3[offset + 1] = metatiles[1]; - gBGTilemapBuffers3[offset + 0x20] = metatiles[2]; - gBGTilemapBuffers3[offset + 0x21] = metatiles[3]; + gOverworldTilemapBuffer_Bg3[offset] = tiles[0]; + gOverworldTilemapBuffer_Bg3[offset + 1] = tiles[1]; + gOverworldTilemapBuffer_Bg3[offset + 0x20] = tiles[2]; + gOverworldTilemapBuffer_Bg3[offset + 0x21] = tiles[3]; // Draw metatile's top layer to the middle background layer. - gBGTilemapBuffers1[offset] = metatiles[4]; - gBGTilemapBuffers1[offset + 1] = metatiles[5]; - gBGTilemapBuffers1[offset + 0x20] = metatiles[6]; - gBGTilemapBuffers1[offset + 0x21] = metatiles[7]; + gOverworldTilemapBuffer_Bg2[offset] = tiles[4]; + gOverworldTilemapBuffer_Bg2[offset + 1] = tiles[5]; + gOverworldTilemapBuffer_Bg2[offset + 0x20] = tiles[6]; + gOverworldTilemapBuffer_Bg2[offset + 0x21] = tiles[7]; // Draw transparent tiles to the top background layer. - gBGTilemapBuffers2[offset] = 0; - gBGTilemapBuffers2[offset + 1] = 0; - gBGTilemapBuffers2[offset + 0x20] = 0; - gBGTilemapBuffers2[offset + 0x21] = 0; + gOverworldTilemapBuffer_Bg1[offset] = 0; + gOverworldTilemapBuffer_Bg1[offset + 1] = 0; + gOverworldTilemapBuffer_Bg1[offset + 0x20] = 0; + gOverworldTilemapBuffer_Bg1[offset + 0x21] = 0; break; - case 0: // LAYER_TYPE_NORMAL + case METATILE_LAYER_TYPE_NORMAL: // Draw garbage to the bottom background layer. - gBGTilemapBuffers3[offset] = 0x3014; - gBGTilemapBuffers3[offset + 1] = 0x3014; - gBGTilemapBuffers3[offset + 0x20] = 0x3014; - gBGTilemapBuffers3[offset + 0x21] = 0x3014; + gOverworldTilemapBuffer_Bg3[offset] = 0x3014; + gOverworldTilemapBuffer_Bg3[offset + 1] = 0x3014; + gOverworldTilemapBuffer_Bg3[offset + 0x20] = 0x3014; + gOverworldTilemapBuffer_Bg3[offset + 0x21] = 0x3014; // Draw metatile's bottom layer to the middle background layer. - gBGTilemapBuffers1[offset] = metatiles[0]; - gBGTilemapBuffers1[offset + 1] = metatiles[1]; - gBGTilemapBuffers1[offset + 0x20] = metatiles[2]; - gBGTilemapBuffers1[offset + 0x21] = metatiles[3]; + gOverworldTilemapBuffer_Bg2[offset] = tiles[0]; + gOverworldTilemapBuffer_Bg2[offset + 1] = tiles[1]; + gOverworldTilemapBuffer_Bg2[offset + 0x20] = tiles[2]; + gOverworldTilemapBuffer_Bg2[offset + 0x21] = tiles[3]; // Draw metatile's top layer to the top background layer, which covers object event sprites. - gBGTilemapBuffers2[offset] = metatiles[4]; - gBGTilemapBuffers2[offset + 1] = metatiles[5]; - gBGTilemapBuffers2[offset + 0x20] = metatiles[6]; - gBGTilemapBuffers2[offset + 0x21] = metatiles[7]; + gOverworldTilemapBuffer_Bg1[offset] = tiles[4]; + gOverworldTilemapBuffer_Bg1[offset + 1] = tiles[5]; + gOverworldTilemapBuffer_Bg1[offset + 0x20] = tiles[6]; + gOverworldTilemapBuffer_Bg1[offset + 0x21] = tiles[7]; break; } ScheduleBgCopyTilemapToVram(1); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index ce2e9e000..d57ebd350 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -95,7 +95,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) if ((tileTransitionState == T_TILE_CENTER && forcedMove == FALSE) || tileTransitionState == T_NOT_MOVING) { - if (GetPlayerSpeed() != 4) + if (GetPlayerSpeed() != PLAYER_SPEED_FASTEST) { if (newKeys & START_BUTTON) input->pressedStartButton = TRUE; @@ -227,7 +227,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) static void GetPlayerPosition(struct MapPosition *position) { PlayerGetDestCoords(&position->x, &position->y); - position->height = PlayerGetZCoord(); + position->elevation = PlayerGetElevation(); } static void GetInFrontOfPlayerPosition(struct MapPosition *position) @@ -236,10 +236,10 @@ static void GetInFrontOfPlayerPosition(struct MapPosition *position) GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y); PlayerGetDestCoords(&x, &y); - if (MapGridGetZCoordAt(x, y) != 0) - position->height = PlayerGetZCoord(); + if (MapGridGetElevationAt(x, y) != 0) + position->elevation = PlayerGetElevation(); else - position->height = 0; + position->elevation = 0; } static u16 GetPlayerCurMetatileBehavior(int runningState) @@ -297,9 +297,9 @@ const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatil s32 i; if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y))) - objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height); + objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation); else - objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height); + objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation); if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER) return NULL; @@ -321,14 +321,14 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 u8 objectEventId; const u8 *script; - objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height); + objectEventId = GetObjectEventIdByPosition(position->x, position->y, position->elevation); if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER) { if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE) return NULL; // Look for an object event on the other side of the counter. - objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height); + objectEventId = GetObjectEventIdByPosition(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->elevation); if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER) return NULL; } @@ -355,7 +355,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction) { - struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->height); + struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (bgEvent == NULL) return NULL; @@ -406,7 +406,7 @@ static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatileBehavior, u8 direction) { - s8 height; + s8 elevation; if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE) return EventScript_TV; @@ -449,8 +449,8 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me if (MetatileBehavior_IsTrainerHillTimer(metatileBehavior) == TRUE) return EventScript_TrainerHillTimer; - height = position->height; - if (height == MapGridGetZCoordAt(position->x, position->y)) + elevation = position->elevation; + if (elevation == MapGridGetElevationAt(position->x, position->y)) { if (MetatileBehavior_IsSecretBasePC(metatileBehavior) == TRUE) return SecretBase_EventScript_PC; @@ -537,7 +537,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB static bool8 TryStartCoordEventScript(struct MapPosition *position) { - u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->height); + u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (script == NULL) return FALSE; @@ -823,7 +823,7 @@ static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction) static s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosition *position) { - return GetWarpEventAtPosition(mapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->height); + return GetWarpEventAtPosition(mapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); } static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position) @@ -958,7 +958,7 @@ static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position) { - return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->height); + return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); } static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) diff --git a/src/field_effect.c b/src/field_effect.c index 951bc88f8..1f4f54555 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -245,32 +245,33 @@ extern u8 *gFieldEffectScriptPointers[]; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; static const u32 sNewGameBirch_Gfx[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); -static const u32 sUnusedBirchBeauty[] = INCBIN_U32("graphics/unused/intro_birch_beauty.4bpp"); +static const u32 sUnusedBirchBeauty[] = INCBIN_U32("graphics/birch_speech/unused_beauty.4bpp"); static const u16 sNewGameBirch_Pal[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); -static const u32 sPokeballGlow_Gfx[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp"); + +static const u32 sPokeballGlow_Gfx[] = INCBIN_U32("graphics/field_effects/pics/pokeball_glow.4bpp"); static const u16 sPokeballGlow_Pal[16] = INCBIN_U16("graphics/field_effects/palettes/pokeball_glow.gbapal"); -static const u32 sPokecenterMonitor0_Gfx[] = INCBIN_U32("graphics/misc/pokecenter_monitor/0.4bpp"); -static const u32 sPokecenterMonitor1_Gfx[] = INCBIN_U32("graphics/misc/pokecenter_monitor/1.4bpp"); -static const u32 sHofMonitorBig_Gfx[] = INCBIN_U32("graphics/misc/hof_monitor_big.4bpp"); -static const u8 sHofMonitorSmall_Gfx[] = INCBIN_U8("graphics/misc/hof_monitor_small.4bpp"); +static const u32 sPokecenterMonitor0_Gfx[] = INCBIN_U32("graphics/field_effects/pics/pokecenter_monitor/0.4bpp"); +static const u32 sPokecenterMonitor1_Gfx[] = INCBIN_U32("graphics/field_effects/pics/pokecenter_monitor/1.4bpp"); +static const u32 sHofMonitorBig_Gfx[] = INCBIN_U32("graphics/field_effects/pics/hof_monitor_big.4bpp"); +static const u8 sHofMonitorSmall_Gfx[] = INCBIN_U8("graphics/field_effects/pics/hof_monitor_small.4bpp"); static const u16 sHofMonitor_Pal[16] = INCBIN_U16("graphics/field_effects/palettes/hof_monitor.gbapal"); // Graphics for the lights streaking past your Pokemon when it uses a field move. -static const u32 sFieldMoveStreaksOutdoors_Gfx[] = INCBIN_U32("graphics/misc/field_move_streaks.4bpp"); -static const u16 sFieldMoveStreaksOutdoors_Pal[16] = INCBIN_U16("graphics/misc/field_move_streaks.gbapal"); -static const u16 sFieldMoveStreaksOutdoors_Tilemap[320] = INCBIN_U16("graphics/misc/field_move_streaks_map.bin"); +static const u32 sFieldMoveStreaksOutdoors_Gfx[] = INCBIN_U32("graphics/field_effects/pics/field_move_streaks.4bpp"); +static const u16 sFieldMoveStreaksOutdoors_Pal[16] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks.gbapal"); +static const u16 sFieldMoveStreaksOutdoors_Tilemap[320] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks.bin"); // The following light streaks effect is used when the map is indoors -static const u32 sFieldMoveStreaksIndoors_Gfx[] = INCBIN_U32("graphics/misc/darkness_field_move_streaks.4bpp"); -static const u16 sFieldMoveStreaksIndoors_Pal[16] = INCBIN_U16("graphics/misc/darkness_field_move_streaks.gbapal"); -static const u16 sFieldMoveStreaksIndoors_Tilemap[320] = INCBIN_U16("graphics/misc/darkness_field_move_streaks_map.bin"); +static const u32 sFieldMoveStreaksIndoors_Gfx[] = INCBIN_U32("graphics/field_effects/pics/field_move_streaks_indoors.4bpp"); +static const u16 sFieldMoveStreaksIndoors_Pal[16] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks_indoors.gbapal"); +static const u16 sFieldMoveStreaksIndoors_Tilemap[320] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks_indoors.bin"); -static const u16 sSpotlight_Pal[16] = INCBIN_U16("graphics/misc/spotlight.gbapal"); -static const u8 sSpotlight_Gfx[] = INCBIN_U8("graphics/misc/spotlight.4bpp"); -static const u8 sRockFragment_TopLeft[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_top_left.4bpp"); -static const u8 sRockFragment_TopRight[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_top_right.4bpp"); -static const u8 sRockFragment_BottomLeft[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_bottom_left.4bpp"); -static const u8 sRockFragment_BottomRight[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_bottom_right.4bpp"); +static const u16 sSpotlight_Pal[16] = INCBIN_U16("graphics/field_effects/pics/spotlight.gbapal"); +static const u8 sSpotlight_Gfx[] = INCBIN_U8("graphics/field_effects/pics/spotlight.4bpp"); +static const u8 sRockFragment_TopLeft[] = INCBIN_U8("graphics/field_effects/pics/deoxys_rock_fragment_top_left.4bpp"); +static const u8 sRockFragment_TopRight[] = INCBIN_U8("graphics/field_effects/pics/deoxys_rock_fragment_top_right.4bpp"); +static const u8 sRockFragment_BottomLeft[] = INCBIN_U8("graphics/field_effects/pics/deoxys_rock_fragment_bottom_left.4bpp"); +static const u8 sRockFragment_BottomRight[] = INCBIN_U8("graphics/field_effects/pics/deoxys_rock_fragment_bottom_right.4bpp"); bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) = { @@ -2686,7 +2687,7 @@ static void FieldMoveShowMonOutdoorsEffect_LoadGfx(struct Task *task) u16 delta = ((REG_BG0CNT >> 8) << 11); CpuCopy16(sFieldMoveStreaksOutdoors_Gfx, (void *)(VRAM + offset), 0x200); CpuFill32(0, (void *)(VRAM + delta), 0x800); - LoadPalette(sFieldMoveStreaksOutdoors_Pal, 0xf0, 0x20); + LoadPalette(sFieldMoveStreaksOutdoors_Pal, 0xf0, sizeof(sFieldMoveStreaksOutdoors_Pal)); LoadFieldMoveOutdoorStreaksTilemap(delta); task->tState++; } @@ -2849,7 +2850,7 @@ static void FieldMoveShowMonIndoorsEffect_LoadGfx(struct Task *task) task->data[12] = delta; CpuCopy16(sFieldMoveStreaksIndoors_Gfx, (void *)(VRAM + offset), 0x80); CpuFill32(0, (void *)(VRAM + delta), 0x800); - LoadPalette(sFieldMoveStreaksIndoors_Pal, 0xf0, 0x20); + LoadPalette(sFieldMoveStreaksIndoors_Pal, 0xf0, sizeof(sFieldMoveStreaksIndoors_Pal)); task->tState++; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index bb706ced4..a62f0bd30 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -359,7 +359,7 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; - // Metatile behavior var re-used + // Metatile behavior var re-used as subpriority metatileBehavior = 0; if (sprite->animCmdIndex == 0) metatileBehavior = 4; @@ -423,7 +423,7 @@ u32 FldEff_LongGrass(void) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); + sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]); sprite->sElevation = gFieldEffectArguments[2]; sprite->sX = gFieldEffectArguments[0]; sprite->sY = gFieldEffectArguments[1]; @@ -1162,7 +1162,7 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7]) { MoveCoords(i, &x, &y); - if (MapGridGetZCoordAt(x, y) == 3) + if (MapGridGetElevationAt(x, y) == 3) { sprite->data[5]++; break; @@ -1700,7 +1700,7 @@ void UpdateJumpImpactEffect(struct Sprite *sprite) else { UpdateObjectEventSpriteInvisibility(sprite, FALSE); - SetObjectSubpriorityByZCoord(sprite->sElevation, sprite, 0); + SetObjectSubpriorityByElevation(sprite->sElevation, sprite, 0); } } @@ -1712,14 +1712,14 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite) UpdateObjectEventSpriteInvisibility(sprite, FALSE); } -static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 offset) +static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevation, u8 subpriority) { u8 i; s16 var, xhi, lyhi, yhi, ylo; const struct ObjectEventGraphicsInfo *graphicsInfo; // Unused Variable struct Sprite *linkedSprite; - SetObjectSubpriorityByZCoord(z, sprite, offset); + SetObjectSubpriorityByElevation(elevation, sprite, subpriority); for (i = 0; i < OBJECT_EVENTS_COUNT; i ++) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index e2cf0bea1..0d3142ca8 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -31,6 +31,9 @@ #include "constants/songs.h" #include "constants/trainer_types.h" +#define NUM_FORCED_MOVEMENTS 18 +#define NUM_ACRO_BIKE_COLLISIONS 5 + static EWRAM_DATA u8 sSpinStartFacingDir = 0; EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {}; EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {}; @@ -140,9 +143,7 @@ static void AlignFishingAnimationFrames(void); static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *a1); -// .rodata - -static bool8 (*const sForcedMovementTestFuncs[])(u8) = +static bool8 (*const sForcedMovementTestFuncs[NUM_FORCED_MOVEMENTS])(u8) = { MetatileBehavior_IsTrickHouseSlipperyFloor, MetatileBehavior_IsIce_2, @@ -164,7 +165,8 @@ static bool8 (*const sForcedMovementTestFuncs[])(u8) = MetatileBehavior_IsMuddySlope, }; -static bool8 (*const sForcedMovementFuncs[])(void) = +// + 1 for ForcedMovement_None, which is excluded above +static bool8 (*const sForcedMovementFuncs[NUM_FORCED_MOVEMENTS + 1])(void) = { ForcedMovement_None, ForcedMovement_Slip, @@ -189,12 +191,12 @@ static bool8 (*const sForcedMovementFuncs[])(void) = static void (*const sPlayerNotOnBikeFuncs[])(u8, u16) = { - PlayerNotOnBikeNotMoving, - PlayerNotOnBikeTurningInPlace, - PlayerNotOnBikeMoving, + [NOT_MOVING] = PlayerNotOnBikeNotMoving, + [TURN_DIRECTION] = PlayerNotOnBikeTurningInPlace, + [MOVING] = PlayerNotOnBikeMoving, }; -static bool8 (*const sAcroBikeTrickMetatiles[])(u8) = +static bool8 (*const sAcroBikeTrickMetatiles[NUM_ACRO_BIKE_COLLISIONS])(u8) = { MetatileBehavior_IsBumpySlope, MetatileBehavior_IsIsolatedVerticalRail, @@ -203,7 +205,7 @@ static bool8 (*const sAcroBikeTrickMetatiles[])(u8) = MetatileBehavior_IsHorizontalRail, }; -static const u8 sAcroBikeTrickCollisionTypes[] = { +static const u8 sAcroBikeTrickCollisionTypes[NUM_ACRO_BIKE_COLLISIONS] = { COLLISION_WHEELIE_HOP, COLLISION_ISOLATED_VERTICAL_RAIL, COLLISION_ISOLATED_HORIZONTAL_RAIL, @@ -233,33 +235,41 @@ static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) = static const u8 sRivalAvatarGfxIds[][2] = { - {OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL}, - {OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE}, - {OBJ_EVENT_GFX_RIVAL_BRENDAN_ACRO_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE}, - {OBJ_EVENT_GFX_RIVAL_BRENDAN_SURFING, OBJ_EVENT_GFX_RIVAL_MAY_SURFING}, - {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, - {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE}, - {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, - {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING} + [PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL}, + [PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE}, + [PLAYER_AVATAR_STATE_ACRO_BIKE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_ACRO_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE}, + [PLAYER_AVATAR_STATE_SURFING] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_SURFING, OBJ_EVENT_GFX_RIVAL_MAY_SURFING}, + [PLAYER_AVATAR_STATE_UNDERWATER] = {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, + [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE}, + [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, + [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING} }; static const u8 sPlayerAvatarGfxIds[][2] = { - {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL}, - {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE}, - {OBJ_EVENT_GFX_BRENDAN_ACRO_BIKE, OBJ_EVENT_GFX_MAY_ACRO_BIKE}, - {OBJ_EVENT_GFX_BRENDAN_SURFING, OBJ_EVENT_GFX_MAY_SURFING}, - {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, - {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, - {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, - {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING}, + [PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL}, + [PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE}, + [PLAYER_AVATAR_STATE_ACRO_BIKE] = {OBJ_EVENT_GFX_BRENDAN_ACRO_BIKE, OBJ_EVENT_GFX_MAY_ACRO_BIKE}, + [PLAYER_AVATAR_STATE_SURFING] = {OBJ_EVENT_GFX_BRENDAN_SURFING, OBJ_EVENT_GFX_MAY_SURFING}, + [PLAYER_AVATAR_STATE_UNDERWATER] = {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, + [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, + [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, + [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING}, }; -static const u8 sFRLGAvatarGfxIds[] = {OBJ_EVENT_GFX_RED, OBJ_EVENT_GFX_LEAF}; +static const u8 sFRLGAvatarGfxIds[GENDER_COUNT] = +{ + [MALE] = OBJ_EVENT_GFX_RED, + [FEMALE] = OBJ_EVENT_GFX_LEAF +}; -static const u8 sRSAvatarGfxIds[] = {OBJ_EVENT_GFX_LINK_RS_BRENDAN, OBJ_EVENT_GFX_LINK_RS_MAY}; +static const u8 sRSAvatarGfxIds[GENDER_COUNT] = +{ + [MALE] = OBJ_EVENT_GFX_LINK_RS_BRENDAN, + [FEMALE] = OBJ_EVENT_GFX_LINK_RS_MAY +}; -static const u8 sPlayerAvatarGfxToStateFlag[2][5][2] = +static const u8 sPlayerAvatarGfxToStateFlag[GENDER_COUNT][5][2] = { [MALE] = { @@ -307,8 +317,6 @@ static bool8 (*const sPlayerAvatarSecretBaseMatSpin[])(struct Task *, struct Obj PlayerAvatar_SecretBaseMatSpinStep3, }; -// .text - void MovementType_Player(struct Sprite *sprite) { UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, ObjectEventCB2_NoMovement2); @@ -407,7 +415,7 @@ static u8 GetForcedMovementByMetatileBehavior(void) { u8 metatileBehavior = gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior; - for (i = 0; i < 18; i++) + for (i = 0; i < NUM_FORCED_MOVEMENTS; i++) { if (sForcedMovementTestFuncs[i](metatileBehavior)) return i + 1; @@ -430,7 +438,7 @@ static bool8 ForcedMovement_None(void) return FALSE; } -static u8 DoForcedMovement(u8 direction, void (*b)(u8)) +static bool8 DoForcedMovement(u8 direction, void (*moveFunc)(u8)) { struct PlayerAvatar *playerAvatar = &gPlayerAvatar; u8 collision = CheckForPlayerAvatarCollision(direction); @@ -441,7 +449,7 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8)) ForcedMovement_None(); if (collision < COLLISION_STOP_SURFING) { - return 0; + return FALSE; } else { @@ -449,23 +457,23 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8)) PlayerJumpLedge(direction); playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED_MOVE; playerAvatar->runningState = MOVING; - return 1; + return TRUE; } } else { playerAvatar->runningState = MOVING; - b(direction); - return 1; + moveFunc(direction); + return TRUE; } } -static u8 DoForcedMovementInCurrentDirection(void (*a)(u8)) +static bool8 DoForcedMovementInCurrentDirection(void (*moveFunc)(u8)) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; playerObjEvent->disableAnim = TRUE; - return DoForcedMovement(playerObjEvent->movementDirection, a); + return DoForcedMovement(playerObjEvent->movementDirection, moveFunc); } static bool8 ForcedMovement_Slip(void) @@ -513,13 +521,13 @@ static bool8 ForcedMovement_PushedEastByCurrent(void) return DoForcedMovement(DIR_EAST, PlayerRideWaterCurrent); } -static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8)) +static bool8 ForcedMovement_Slide(u8 direction, void (*moveFunc)(u8)) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; playerObjEvent->disableAnim = TRUE; playerObjEvent->facingDirectionLocked = TRUE; - return DoForcedMovement(direction, b); + return DoForcedMovement(direction, moveFunc); } static bool8 ForcedMovement_SlideSouth(void) @@ -558,7 +566,7 @@ static bool8 ForcedMovement_MuddySlope(void) { struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - if (playerObjEvent->movementDirection != DIR_NORTH || GetPlayerSpeed() <= 3) + if (playerObjEvent->movementDirection != DIR_NORTH || GetPlayerSpeed() < PLAYER_SPEED_FASTEST) { Bike_UpdateBikeCounterSpeed(0); playerObjEvent->facingDirectionLocked = TRUE; @@ -578,20 +586,11 @@ static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) static u8 CheckMovementInputNotOnBike(u8 direction) { if (direction == DIR_NONE) - { - gPlayerAvatar.runningState = NOT_MOVING; - return 0; - } + return gPlayerAvatar.runningState = NOT_MOVING; else if (direction != GetPlayerMovementDirection() && gPlayerAvatar.runningState != MOVING) - { - gPlayerAvatar.runningState = TURN_DIRECTION; - return 1; - } + return gPlayerAvatar.runningState = TURN_DIRECTION; else - { - gPlayerAvatar.runningState = MOVING; - return 2; - } + return gPlayerAvatar.runningState = MOVING; } static void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys) @@ -710,8 +709,8 @@ static u8 CheckForObjectEventStaticCollision(struct ObjectEvent *objectEvent, s1 static bool8 CanStopSurfing(s16 x, s16 y, u8 direction) { if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - && MapGridGetZCoordAt(x, y) == 3 - && GetObjectEventIdByXYZ(x, y, 3) == OBJECT_EVENTS_COUNT) + && MapGridGetElevationAt(x, y) == 3 + && GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT) { CreateStopSurfingTask(direction); return TRUE; @@ -756,7 +755,7 @@ static void CheckAcroBikeCollision(s16 x, s16 y, u8 metatileBehavior, u8 *collis { u8 i; - for (i = 0; i < ARRAY_COUNT(sAcroBikeTrickMetatiles); i++) + for (i = 0; i < NUM_ACRO_BIKE_COLLISIONS; i++) { if (sAcroBikeTrickMetatiles[i](metatileBehavior)) { @@ -1170,7 +1169,7 @@ u8 GetPlayerMovementDirection(void) return gObjectEvents[gPlayerAvatar.objectEventId].movementDirection; } -u8 PlayerGetZCoord(void) +u8 PlayerGetElevation(void) { return gObjectEvents[gPlayerAvatar.objectEventId].previousElevation; } @@ -1308,7 +1307,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void) MoveCoords(playerObjEvent->facingDirection, &x, &y); if (GetCollisionAtCoords(playerObjEvent, x, y, playerObjEvent->facingDirection) == COLLISION_ELEVATION_MISMATCH - && PlayerGetZCoord() == 3 + && PlayerGetElevation() == 3 && MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y))) return TRUE; else diff --git a/src/field_specials.c b/src/field_specials.c index 157282172..7ba75f047 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -650,10 +650,10 @@ void MauvilleGymSetDefaultBarriers(void) MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH2_On); break; case METATILE_MauvilleGym_GreenBeamH3_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH3_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH3_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_GreenBeamH4_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH4_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH4_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_RedBeamH1_On: MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH1_Off); @@ -674,37 +674,37 @@ void MauvilleGymSetDefaultBarriers(void) MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH2_On); break; case METATILE_MauvilleGym_RedBeamH3_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH3_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH3_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_RedBeamH4_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_GreenBeamV1_On: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_GreenBeamV2_On: MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_FloorTile); break; case METATILE_MauvilleGym_RedBeamV1_On: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_RedBeamV2_On: MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_FloorTile); break; case METATILE_MauvilleGym_PoleBottom_On: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV1_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV1_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_FloorTile: if (MapGridGetMetatileIdAt(x, y - 1) == METATILE_MauvilleGym_GreenBeamV1_On) - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV2_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV2_On | MAPGRID_COLLISION_MASK); else - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV2_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV2_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_PoleBottom_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV1_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV1_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_PoleTop_Off: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_PoleTop_On: MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_Off); @@ -755,10 +755,10 @@ void MauvilleGymDeactivatePuzzle(void) MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_Off); break; case METATILE_MauvilleGym_GreenBeamV1_On: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_RedBeamV1_On: - MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | MAPGRID_COLLISION_MASK); break; case METATILE_MauvilleGym_GreenBeamV2_On: case METATILE_MauvilleGym_RedBeamV2_On: @@ -867,8 +867,8 @@ static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId) } for (i = 0; i < nDoors; i++) { - MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET, metatileId | METATILE_COLLISION_MASK); - MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + 8) | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET, metatileId | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + 8) | MAPGRID_COLLISION_MASK); } DrawWholeMapView(); } @@ -1040,7 +1040,7 @@ static void PCTurnOnEffect_1(s16 isPcTurnedOn, s8 dx, s8 dy) else if (gSpecialVar_0x8004 == PC_LOCATION_MAYS_HOUSE) tileId = METATILE_BrendansMaysHouse_MayPC_On; } - MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + MAP_OFFSET, gSaveBlock1Ptr->pos.y + dy + MAP_OFFSET, tileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + MAP_OFFSET, gSaveBlock1Ptr->pos.y + dy + MAP_OFFSET, tileId | MAPGRID_COLLISION_MASK); } void DoPCTurnOffEffect(void) @@ -1075,7 +1075,7 @@ static void PCTurnOffEffect(void) tileId = METATILE_BrendansMaysHouse_BrendanPC_Off; else if (gSpecialVar_0x8004 == 2) tileId = METATILE_BrendansMaysHouse_MayPC_Off; - MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + MAP_OFFSET, gSaveBlock1Ptr->pos.y + dy + MAP_OFFSET, tileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + MAP_OFFSET, gSaveBlock1Ptr->pos.y + dy + MAP_OFFSET, tileId | MAPGRID_COLLISION_MASK); DrawWholeMapView(); } @@ -1106,13 +1106,13 @@ static void LotteryCornerComputerEffect(struct Task *task) task->data[3] = 0; if (task->data[4] != 0) { - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Normal | METATILE_COLLISION_MASK); - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Normal | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Normal | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Normal | MAPGRID_COLLISION_MASK); } else { - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Flash | METATILE_COLLISION_MASK); - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Flash | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Flash | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Flash | MAPGRID_COLLISION_MASK); } DrawWholeMapView(); task->data[4] ^= 1; @@ -1124,8 +1124,8 @@ static void LotteryCornerComputerEffect(struct Task *task) void EndLotteryCornerComputerEffect(void) { - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Normal | METATILE_COLLISION_MASK); - MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Normal | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_Shop_Laptop1_Normal | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(11 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_Shop_Laptop2_Normal | MAPGRID_COLLISION_MASK); DrawWholeMapView(); } @@ -1887,7 +1887,7 @@ static void Task_MoveElevatorWindowLights(u8 taskId) for (y = 0; y < 3; y++) { for (x = 0; x < 3; x++) - MapGridSetMetatileIdAt(x + MAP_OFFSET + 1, y + MAP_OFFSET, sElevatorWindowTiles_Ascending[y][data[0] % 3] | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x + MAP_OFFSET + 1, y + MAP_OFFSET, sElevatorWindowTiles_Ascending[y][data[0] % 3] | MAPGRID_COLLISION_MASK); } } // descending @@ -1896,7 +1896,7 @@ static void Task_MoveElevatorWindowLights(u8 taskId) for (y = 0; y < 3; y++) { for (x = 0; x < 3; x++) - MapGridSetMetatileIdAt(x + MAP_OFFSET + 1, y + MAP_OFFSET, sElevatorWindowTiles_Descending[y][data[0] % 3] | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x + MAP_OFFSET + 1, y + MAP_OFFSET, sElevatorWindowTiles_Descending[y][data[0] % 3] | MAPGRID_COLLISION_MASK); } } DrawWholeMapView(); @@ -3209,17 +3209,17 @@ void DoDeoxysRockInteraction(void) } static const u16 sDeoxysRockPalettes[][16] = { - INCBIN_U16("graphics/misc/deoxys1.gbapal"), - INCBIN_U16("graphics/misc/deoxys2.gbapal"), - INCBIN_U16("graphics/misc/deoxys3.gbapal"), - INCBIN_U16("graphics/misc/deoxys4.gbapal"), - INCBIN_U16("graphics/misc/deoxys5.gbapal"), - INCBIN_U16("graphics/misc/deoxys6.gbapal"), - INCBIN_U16("graphics/misc/deoxys7.gbapal"), - INCBIN_U16("graphics/misc/deoxys8.gbapal"), - INCBIN_U16("graphics/misc/deoxys9.gbapal"), - INCBIN_U16("graphics/misc/deoxys10.gbapal"), - INCBIN_U16("graphics/misc/deoxys11.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_1.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_2.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_3.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_4.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_5.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_6.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_7.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_8.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_9.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_10.gbapal"), + INCBIN_U16("graphics/field_effects/palettes/deoxys_rock_11.gbapal"), }; static const u8 sDeoxysRockCoords[][2] = { diff --git a/src/field_tasks.c b/src/field_tasks.c index 760d85369..8e8875993 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -445,8 +445,8 @@ static void PacifidlogBridgePerStepCallback(u8 taskId) static void TryLowerFortreeBridge(s16 x, s16 y) { - u8 z = PlayerGetZCoord(); - if (!(z & 1)) + u8 elevation = PlayerGetElevation(); + if (!(elevation & 1)) { switch (MapGridGetMetatileIdAt(x, y)) { @@ -462,8 +462,8 @@ static void TryLowerFortreeBridge(s16 x, s16 y) static void TryRaiseFortreeBridge(s16 x, s16 y) { - u8 z = PlayerGetZCoord(); - if (!(z & 1)) + u8 elevation = PlayerGetElevation(); + if (!(elevation & 1)) { switch (MapGridGetMetatileIdAt(x, y)) { @@ -488,7 +488,7 @@ static void FortreeBridgePerStepCallback(u8 taskId) { bool8 isFortreeBridgeCur; bool8 isFortreeBridgePrev; - u8 z, onBridgeElevation; + u8 elevation, onBridgeElevation; s16 x, y, prevX, prevY; s16 *data = gTasks[taskId].data; PlayerGetDestCoords(&x, &y); @@ -520,9 +520,9 @@ static void FortreeBridgePerStepCallback(u8 taskId) isFortreeBridgePrev = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(prevX, prevY)); // Make sure player isn't below bridge - z = PlayerGetZCoord(); + elevation = PlayerGetElevation(); onBridgeElevation = FALSE; - if ((u8)(z & 1) == 0) + if ((u8)(elevation & 1) == 0) onBridgeElevation = TRUE; if (onBridgeElevation && (isFortreeBridgeCur == TRUE || isFortreeBridgePrev == TRUE)) @@ -820,7 +820,7 @@ static void CrackedFloorPerStepCallback(u8 taskId) tPrevY = y; if (MetatileBehavior_IsCrackedFloor(behavior)) { - if (GetPlayerSpeed() != BIKE_SPEED_FASTEST) + if (GetPlayerSpeed() != PLAYER_SPEED_FASTEST) VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty if (tFloor1Delay == 0) diff --git a/src/fieldmap.c b/src/fieldmap.c index aff72c4c6..4dbf981cf 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -43,12 +43,12 @@ static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHead static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader); static void LoadSavedMapView(void); -static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode); +static bool8 SkipCopyingMetatileFromSavedMap(u16* mapBlock, u16 mapWidth, u8 yMode); static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y); static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection); static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset); -#define MapGridGetBorderTileAt(x, y) ({ \ +#define GetBorderBlockAt(x, y)({ \ u16 block; \ int i; \ u16 *border = gMapHeader.mapLayout->border; \ @@ -56,12 +56,12 @@ static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, i = (x + 1) & 1; \ i += ((y + 1) & 1) * 2; \ \ - block = gMapHeader.mapLayout->border[i] | METATILE_COLLISION_MASK; \ + block = gMapHeader.mapLayout->border[i] | MAPGRID_COLLISION_MASK; \ }) #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)) +#define GetMapGridBlockAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : GetBorderBlockAt(x, y)) struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection) { @@ -87,13 +87,13 @@ void InitMapFromSavedGame(void) void InitBattlePyramidMap(bool8 setPlayerPosition) { - CpuFastFill(METATILE_ID_UNDEFINED << 16 | METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition); } void InitTrainerHillMap(void) { - CpuFastFill(METATILE_ID_UNDEFINED << 16 | METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); GenerateTrainerHillFloorLayout(gBackupMapData); } @@ -103,7 +103,7 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) int width; int height; mapLayout = mapHeader->mapLayout; - CpuFastFill16(METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + CpuFastFill16(MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); gBackupMapLayout.map = gBackupMapData; width = mapLayout->width + MAP_OFFSET_W; gBackupMapLayout.width = width; @@ -342,46 +342,46 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead } } -u8 MapGridGetZCoordAt(int x, int y) +u8 MapGridGetElevationAt(int x, int y) { - u16 block = MapGridGetTileAt(x, y); + u16 block = GetMapGridBlockAt(x, y); - if (block == METATILE_ID_UNDEFINED) + if (block == MAPGRID_UNDEFINED) return 0; - return block >> METATILE_ELEVATION_SHIFT; + return block >> MAPGRID_ELEVATION_SHIFT; } bool8 MapGridIsImpassableAt(int x, int y) { - u16 block = MapGridGetTileAt(x, y); + u16 block = GetMapGridBlockAt(x, y); - if (block == METATILE_ID_UNDEFINED) + if (block == MAPGRID_UNDEFINED) return TRUE; - return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT; + return (block & MAPGRID_COLLISION_MASK) >> MAPGRID_COLLISION_SHIFT; } u32 MapGridGetMetatileIdAt(int x, int y) { - u16 block = MapGridGetTileAt(x, y); + u16 block = GetMapGridBlockAt(x, y); - if (block == METATILE_ID_UNDEFINED) - return MapGridGetBorderTileAt(x, y) & METATILE_ID_MASK; + if (block == MAPGRID_UNDEFINED) + return GetBorderBlockAt(x, y) & MAPGRID_METATILE_ID_MASK; - return block & METATILE_ID_MASK; + return block & MAPGRID_METATILE_ID_MASK; } u32 MapGridGetMetatileBehaviorAt(int x, int y) { u16 metatile = MapGridGetMetatileIdAt(x, y); - return GetBehaviorByMetatileId(metatile) & METATILE_BEHAVIOR_MASK; + return GetMetatileAttributesById(metatile) & METATILE_ATTR_BEHAVIOR_MASK; } u8 MapGridGetMetatileLayerTypeAt(int x, int y) { u16 metatile = MapGridGetMetatileIdAt(x, y); - return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT; + return (GetMetatileAttributesById(metatile) & METATILE_ATTR_LAYER_MASK) >> METATILE_ATTR_LAYER_SHIFT; } void MapGridSetMetatileIdAt(int x, int y, u16 metatile) @@ -390,7 +390,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile) if (AreCoordsWithinMapGridBounds(x, y)) { i = x + y * gBackupMapLayout.width; - gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK); + gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & MAPGRID_ELEVATION_MASK) | (metatile & ~MAPGRID_ELEVATION_MASK); } } @@ -404,7 +404,7 @@ void MapGridSetMetatileEntryAt(int x, int y, u16 metatile) } } -u16 GetBehaviorByMetatileId(u16 metatile) +u16 GetMetatileAttributesById(u16 metatile) { u16 *attributes; if (metatile < NUM_METATILES_IN_PRIMARY) @@ -565,7 +565,7 @@ static void MoveMapViewToBackup(u8 direction) int GetMapBorderIdAt(int x, int y) { - if (MapGridGetTileAt(x, y) == METATILE_ID_UNDEFINED) + if (GetMapGridBlockAt(x, y) == MAPGRID_UNDEFINED) return CONNECTION_INVALID; if (x >= (gBackupMapLayout.width - (MAP_OFFSET + 1))) @@ -817,23 +817,23 @@ void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable) if (AreCoordsWithinMapGridBounds(x, y)) { if (impassable) - gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK; + gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= MAPGRID_COLLISION_MASK; else - gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~METATILE_COLLISION_MASK; + gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~MAPGRID_COLLISION_MASK; } } -static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode) +static bool8 SkipCopyingMetatileFromSavedMap(u16* mapBlock, u16 mapWidth, u8 yMode) { if (yMode == 0xFF) return FALSE; if (yMode == 0) - mapMetatilePtr -= mapWidth; + mapBlock -= mapWidth; else - mapMetatilePtr += mapWidth; + mapBlock += mapWidth; - if (IsLargeBreakableDecoration(*mapMetatilePtr & METATILE_ID_MASK, yMode) == TRUE) + if (IsLargeBreakableDecoration(*mapBlock & MAPGRID_METATILE_ID_MASK, yMode) == TRUE) return TRUE; return FALSE; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index daa46ad76..9129c5208 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -181,7 +181,7 @@ bool8 SetUpFieldMove_Cut(void) for (j = 0; j < CUT_NORMAL_SIDE; j++) { x = j - 1 + gPlayerFacingPosition.x; - if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height) + if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.elevation) { tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE @@ -238,7 +238,7 @@ bool8 SetUpFieldMove_Cut(void) if (tileCuttable == TRUE) { - if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height) + if (MapGridGetElevationAt(x, y) == gPlayerFacingPosition.elevation) { u8 tileArrayId = ((sHyperCutStruct[i].y * 5) + 12) + (sHyperCutStruct[i].x); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c index 769e73562..0dc98c319 100644 --- a/src/fldeff_escalator.c +++ b/src/fldeff_escalator.c @@ -126,13 +126,13 @@ static void Task_DrawEscalator(u8 taskId) SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_1, 0); break; case 2: - SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_2, METATILE_COLLISION_MASK); + SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_2, MAPGRID_COLLISION_MASK); break; case 3: SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_3, 0); break; case 4: - SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_0, METATILE_COLLISION_MASK); + SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_0, MAPGRID_COLLISION_MASK); break; case 5: SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_1, 0); diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 9c166d008..a303b8423 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -61,13 +61,13 @@ static const struct FlashStruct sTransitionTypes[] = {}, }; -static const u16 sCaveTransitionPalette_White[] = INCBIN_U16("graphics/misc/cave_transition_white.gbapal"); -static const u16 sCaveTransitionPalette_Black[] = INCBIN_U16("graphics/misc/cave_transition_black.gbapal"); +static const u16 sCaveTransitionPalette_White[] = INCBIN_U16("graphics/cave_transition/white.gbapal"); +static const u16 sCaveTransitionPalette_Black[] = INCBIN_U16("graphics/cave_transition/black.gbapal"); -static const u16 sCaveTransitionPalette_Enter[] = INCBIN_U16("graphics/misc/cave_transition_enter.gbapal"); -static const u16 sCaveTransitionPalette_Exit[] = INCBIN_U16("graphics/misc/cave_transition_exit.gbapal"); -static const u32 sCaveTransitionTilemap[] = INCBIN_U32("graphics/misc/cave_transition_map.bin.lz"); -static const u32 sCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transition.4bpp.lz"); +static const u16 sCaveTransitionPalette_Enter[] = INCBIN_U16("graphics/cave_transition/enter.gbapal"); +static const u16 sCaveTransitionPalette_Exit[] = INCBIN_U16("graphics/cave_transition/exit.gbapal"); +static const u32 sCaveTransitionTilemap[] = INCBIN_U32("graphics/cave_transition/tilemap.bin.lz"); +static const u32 sCaveTransitionTiles[] = INCBIN_U32("graphics/cave_transition/tiles.4bpp.lz"); bool8 SetUpFieldMove_Flash(void) { diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index c01babb68..4f3f53fa6 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -840,9 +840,9 @@ void DoSecretBasePCTurnOffEffect(void) PlaySE(SE_PC_OFF); if (!VarGet(VAR_CURRENT_SECRET_BASE)) - MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | MAPGRID_COLLISION_MASK); else - MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_RegisterPC | MAPGRID_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); } @@ -1083,7 +1083,7 @@ static void SpriteCB_SandPillar_BreakTop(struct Sprite *sprite) PlaySE(SE_M_ROCK_THROW); if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == METATILE_SecretBase_SandOrnament_TopWall) - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_Wall_TopMid | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_Wall_TopMid | MAPGRID_COLLISION_MASK); else MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_SandOrnament_BrokenTop); @@ -1103,7 +1103,7 @@ static void SpriteCB_SandPillar_BreakBase(struct Sprite *sprite) } else { - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_SandOrnament_BrokenBase | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_SandOrnament_BrokenBase | MAPGRID_COLLISION_MASK); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); sprite->data[0] = 0; sprite->callback = SpriteCB_SandPillar_End; diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 1cadf051a..cfa5d57aa 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -19,7 +19,6 @@ #include "constants/map_types.h" #include "constants/songs.h" -// static functions static void Task_DoFieldMove_Init(u8 taskId); static void Task_DoFieldMove_ShowMonAfterPose(u8 taskId); static void Task_DoFieldMove_WaitForMon(u8 taskId); @@ -34,8 +33,8 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId) u8 objEventId; GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); - gPlayerFacingPosition.height = PlayerGetZCoord(); - objEventId = GetObjectEventIdByXYZ(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.height); + gPlayerFacingPosition.elevation = PlayerGetElevation(); + objEventId = GetObjectEventIdByPosition(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.elevation); if (gObjectEvents[objEventId].graphicsId != graphicsId) { return FALSE; diff --git a/src/graphics.c b/src/graphics.c index 47b82b6b7..9f708f18b 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -16,7 +16,7 @@ const u32 gUnusedPal_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.gbap const u32 gSmokescreenImpactTiles[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz"); const u32 gSmokescreenImpactPalette[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz"); -#include "data/graphics/interface_pokeballs.h" +#include "data/graphics/pokeballs.h" const u32 gBlankGfxCompressed[] = INCBIN_U32("graphics/interface/blank.4bpp.lz"); @@ -147,7 +147,7 @@ const u32 gBattleAnimSpriteGfx_ClawSlash[] = INCBIN_U32("graphics/battle_anims/s const u32 gBattleAnimSpriteGfx_Scratch3[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_3.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Scratch2[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_2.4bpp.lz"); -const u32 gPartyMenuHpBar_Gfx[] = INCBIN_U32("graphics/interface/party_menu_hpbar.4bpp.lz"); +const u32 gUnusedHpBar_Gfx[] = INCBIN_U32("graphics/battle_interface/hpbar_unused.4bpp.lz"); const u32 gBattleAnimSpriteGfx_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.4bpp.lz"); @@ -165,7 +165,7 @@ const u32 gBattleAnimSpriteGfx_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleInterfaceGfx_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz"); const u32 gBattleInterfacePal_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz"); -const u32 gBattleInterfaceGfx_BattleBar[] = INCBIN_U32("graphics/interface/battle_bar.4bpp.lz"); +const u32 gBattleInterfaceGfx_BattleBar[] = INCBIN_U32("graphics/battle_interface/battle_bar.4bpp.lz"); const u32 gBattleAnimSpriteGfx_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.4bpp.lz"); const u32 gBattleAnimSpritePal_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.gbapal.lz"); @@ -950,9 +950,9 @@ const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz") #include "data/graphics/battle_terrain.h" // Battle Dome -const u32 gDomeTourneyBg_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_bg.4bpp.lz"); +const u32 gDomeTourneyTree_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_tree.4bpp.lz"); const u32 gDomeTourneyLine_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines -const u32 gDomeTourneyLineMask_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_mask_map.bin.lz"); +const u32 gDomeTourneyTree_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_tree.bin.lz"); const u32 gDomeTourneyLineDown_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_down_map.bin.lz"); const u32 gDomeTourneyLineUp_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_up_map.bin.lz"); const u32 gDomeTourneyInfoCard_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card.4bpp.lz"); @@ -967,7 +967,7 @@ const u32 gBattleArenaJudgementSymbolsGfx[] = INCBIN_U32("graphics/battle_fronti const u32 gBattleArenaJudgementSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.gbapal.lz"); const u32 gBattleWindowTextPalette[] = INCBIN_U32("graphics/battle_interface/text.gbapal.lz"); -const u16 gPPTextPalette[] = INCBIN_U16("graphics/battle_frontier/text_pp.gbapal"); +const u16 gPPTextPalette[] = INCBIN_U16("graphics/battle_interface/text_pp.gbapal"); const u16 gTilesetAnims_BattleDomePals0_0[] = INCBIN_U16("graphics/battle_frontier/dome_anim1.gbapal"); const u16 gTilesetAnims_BattleDomePals0_1[] = INCBIN_U16("graphics/battle_frontier/dome_anim2.gbapal"); @@ -1112,13 +1112,13 @@ const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/spri const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz"); const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz"); -const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/interface/party_menu_bg.4bpp.lz"); -const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/interface/party_menu_bg.gbapal.lz"); -const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_bg.bin.lz"); +const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/party_menu/bg.4bpp.lz"); +const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/party_menu/bg.gbapal.lz"); +const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/party_menu/bg.bin.lz"); -const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball.4bpp.lz"); -const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused -const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/interface/party_menu_pokeball.gbapal.lz"); +const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball.4bpp.lz"); +const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball_small.4bpp.lz"); //unused +const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/party_menu/pokeball.gbapal.lz"); const u32 gStatusGfx_Icons[] = INCBIN_U32("graphics/interface/status_icons.4bpp.lz"); const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapal.lz"); @@ -1126,50 +1126,50 @@ const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapa const u32 gMoveTypes_Gfx[] = INCBIN_U32("graphics/types/move_types.4bpp.lz"); const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz"); -const u32 gSummaryMoveSelect_Gfx[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz"); -const u32 gSummaryMoveSelect_Pal[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.lz"); +const u32 gSummaryMoveSelect_Gfx[] = INCBIN_U32("graphics/summary_screen/move_select.4bpp.lz"); +const u32 gSummaryMoveSelect_Pal[] = INCBIN_U32("graphics/summary_screen/move_select.gbapal.lz"); -const u32 gSummaryScreen_Gfx[] = INCBIN_U32("graphics/interface/summary_screen.4bpp.lz"); -const u32 gSummaryScreen_Pal[] = INCBIN_U32("graphics/interface/summary_screen.gbapal.lz"); -const u32 gSummaryPage_Info_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_info.bin.lz"); -const u32 gSummaryPage_Skills_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_skills.bin.lz"); -const u32 gSummaryPage_BattleMoves_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_battle_moves.bin.lz"); -const u32 gSummaryPage_ContestMoves_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_contest_moves.bin.lz"); -const u32 gSummaryPage_InfoCopy_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_info_copy.bin.lz"); +const u32 gSummaryScreen_Gfx[] = INCBIN_U32("graphics/summary_screen/tiles.4bpp.lz"); +const u32 gSummaryScreen_Pal[] = INCBIN_U32("graphics/summary_screen/tiles.gbapal.lz"); +const u32 gSummaryPage_Info_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_info.bin.lz"); +const u32 gSummaryPage_Skills_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_skills.bin.lz"); +const u32 gSummaryPage_BattleMoves_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_battle_moves.bin.lz"); +const u32 gSummaryPage_ContestMoves_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_contest_moves.bin.lz"); +const u32 gSummaryPage_InfoEgg_Tilemap[] = INCBIN_U32("graphics/summary_screen/page_info_egg.bin.lz"); -const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz"); -const u32 gBagFemaleTiles[] = INCBIN_U32("graphics/misc/bag_female.4bpp.lz"); -const u32 gBagPalette[] = INCBIN_U32("graphics/misc/bag.gbapal.lz"); +const u32 gBagMaleTiles[] = INCBIN_U32("graphics/bag/bag_male.4bpp.lz"); +const u32 gBagFemaleTiles[] = INCBIN_U32("graphics/bag/bag_female.4bpp.lz"); +const u32 gBagPalette[] = INCBIN_U32("graphics/bag/bag.gbapal.lz"); -const u32 gBagScreenMale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_male.gbapal.lz"); -const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_female.gbapal.lz"); +const u32 gBagScreenMale_Pal[] = INCBIN_U32("graphics/bag/menu_male.gbapal.lz"); +const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/bag/menu_female.gbapal.lz"); -const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/interface/bag_screen.4bpp.lz"); -const u32 gBagScreen_GfxTileMap[] = INCBIN_U32("graphics/interface/bag_screen_tilemap.bin.lz"); +const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/bag/menu.4bpp.lz"); +const u32 gBagScreen_GfxTileMap[] = INCBIN_U32("graphics/bag/menu.bin.lz"); -const u32 gBattlePyramidBag_Gfx[] = INCBIN_U32("graphics/interface/bag_pyramid.4bpp.lz"); -const u32 gBattlePyramidBag_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second. -const u32 gBattlePyramidBagTilemap[] = INCBIN_U32("graphics/interface/bag_pyramid_tilemap.bin.lz"); -const u32 gBattlePyramidBagInterface_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid_interface.gbapal.lz"); +const u32 gBattlePyramidBag_Gfx[] = INCBIN_U32("graphics/bag/bag_pyramid.4bpp.lz"); +const u32 gBattlePyramidBag_Pal[] = INCBIN_U32("graphics/bag/bag_pyramid.gbapal.lz"); // female palette is first and male is second. +const u32 gBattlePyramidBagTilemap[] = INCBIN_U32("graphics/bag/menu_pyramid.bin.lz"); +const u32 gBattlePyramidBagInterface_Pal[] = INCBIN_U32("graphics/bag/menu_pyramid.gbapal.lz"); -const u32 gBagSwapLineGfx[] = INCBIN_U32("graphics/interface/bag_swap.4bpp.lz"); -const u32 gBagSwapLinePal[] = INCBIN_U32("graphics/interface/bag_swap.gbapal.lz"); +const u32 gSwapLineGfx[] = INCBIN_U32("graphics/interface/swap_line.4bpp.lz"); +const u32 gSwapLinePal[] = INCBIN_U32("graphics/interface/swap_line.gbapal.lz"); -const u32 gBuyMenuFrame_Gfx[] = INCBIN_U32("graphics/interface/mart_frame.4bpp.lz"); -const u32 gMenuMoneyPal[] = INCBIN_U32("graphics/interface/mart_frame.gbapal.lz"); -const u32 gBuyMenuFrame_Tilemap[] = INCBIN_U32("graphics/interface/mart_frame.bin.lz"); - -const u32 gMenuMoneyGfx[] = INCBIN_U32("graphics/interface/money.4bpp.lz"); +const u32 gShopMenu_Gfx[] = INCBIN_U32("graphics/shop/menu.4bpp.lz"); +const u32 gShopMenu_Pal[] = INCBIN_U32("graphics/shop/menu.gbapal.lz"); +const u32 gShopMenu_Tilemap[] = INCBIN_U32("graphics/shop/menu.bin.lz"); +const u32 gShopMenuMoney_Gfx[] = INCBIN_U32("graphics/shop/money.4bpp.lz"); // Pokeblock -const u32 gMenuPokeblock_Gfx[] = INCBIN_U32("graphics/interface/pokeblock_case_frame.4bpp.lz"); -const u32 gMenuPokeblock_Pal[] = INCBIN_U32("graphics/interface/pokeblock_case_frame.gbapal.lz"); +const u32 gMenuPokeblock_Gfx[] = INCBIN_U32("graphics/pokeblock/menu.4bpp.lz"); +const u32 gMenuPokeblock_Pal[] = INCBIN_U32("graphics/pokeblock/menu.gbapal.lz"); -const u32 gMenuPokeblockDevice_Gfx[] = INCBIN_U32("graphics/interface/pokeblock_device.4bpp.lz"); -const u32 gMenuPokeblockDevice_Pal[] = INCBIN_U32("graphics/interface/pokeblock_device.gbapal.lz"); +const u32 gMenuPokeblockDevice_Gfx[] = INCBIN_U32("graphics/pokeblock/device.4bpp.lz"); +const u32 gMenuPokeblockDevice_Pal[] = INCBIN_U32("graphics/pokeblock/device.gbapal.lz"); + +const u32 gMenuPokeblock_Tilemap[] = INCBIN_U32("graphics/pokeblock/menu.bin.lz"); -const u32 gMenuPokeblock_Tilemap[] = INCBIN_U32("graphics/interface/pokeblock.bin.lz"); const u32 gPokeblock_Gfx[] = INCBIN_U32("graphics/pokeblock/pokeblock.4bpp.lz"); const u32 gPokeblockRed_Pal[] = INCBIN_U32("graphics/pokeblock/red.gbapal.lz"); const u32 gPokeblockBlue_Pal[] = INCBIN_U32("graphics/pokeblock/blue.gbapal.lz"); @@ -1186,7 +1186,7 @@ const u32 gPokeblockBlack_Pal[] = INCBIN_U32("graphics/pokeblock/black.gbapal.lz const u32 gPokeblockWhite_Pal[] = INCBIN_U32("graphics/pokeblock/white.gbapal.lz"); const u32 gPokeblockGold_Pal[] = INCBIN_U32("graphics/pokeblock/gold.gbapal.lz"); -const u32 gPokeblockFeedBg_Tilemap[] = INCBIN_U32("graphics/interface/pokeblock_feeding_bg_map.bin.lz"); +const u32 gPokeblockFeedBg_Tilemap[] = INCBIN_U32("graphics/pokeblock/feeding_bg.bin.lz"); #include "data/graphics/berries.h" #include "data/graphics/rayquaza_scene.h" @@ -1259,9 +1259,9 @@ const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4b const u32 gPokedexSearchMenuNational_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_national.bin.lz"); const u32 gPokedexSearchMenuHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_hoenn.bin.lz"); -const u16 gSummaryScreenPowAcc_Tilemap[] = INCBIN_U16("graphics/interface/powacc_tilemap.bin"); -const u16 gSummaryScreenAppealJam_Tilemap[] = INCBIN_U16("graphics/interface/appealjam_tilemap.bin"); -const u16 gSummaryScreenWindow_Tilemap[] = INCBIN_U16("graphics/interface/summary.bin"); +const u16 gSummaryScreen_MoveEffect_Battle_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_battle.bin"); +const u16 gSummaryScreen_MoveEffect_Contest_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_contest.bin"); +const u16 gSummaryScreen_MoveEffect_Cancel_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_cancel.bin"); const u16 gIntroCopyright_Pal[] = INCBIN_U16("graphics/intro/copyright.gbapal"); const u32 gIntroCopyright_Gfx[] = INCBIN_U32("graphics/intro/copyright.4bpp.lz"); @@ -1270,14 +1270,12 @@ const u32 gIntroCopyright_Tilemap[] = INCBIN_U32("graphics/intro/copyright.bin.l const u16 gPokedexAreaScreenAreaUnknown_Pal[] = INCBIN_U16("graphics/pokedex/area_unknown.gbapal"); const u32 gPokedexAreaScreenAreaUnknown_Gfx[] = INCBIN_U32("graphics/pokedex/area_unknown.4bpp.lz"); -// seems to be fire red leftovers, but the menu elements is reused in the item menu for TM descriptions. - const u16 gMenuInfoElements1_Pal[] = INCBIN_U16("graphics/interface/menu_info1.gbapal"); const u16 gMenuInfoElements2_Pal[] = INCBIN_U16("graphics/interface/menu_info2.gbapal"); const u16 gMenuInfoElements3_Pal[] = INCBIN_U16("graphics/interface/menu_info3.gbapal"); -const u8 gMenuInfoElements_Gfx[] = INCBIN_U8("graphics/interface/menu_info.4bpp"); //the types are reused for item menu +const u8 gMenuInfoElements_Gfx[] = INCBIN_U8("graphics/interface/menu_info.4bpp"); -const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp"); +const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/bag/hm.4bpp"); // contest results screen @@ -1331,8 +1329,8 @@ const u32 gRegionMapCityZoomText_Gfx[] = INCBIN_U32("graphics/pokenav/city_zoom_ const u16 gPokenavConditionCancel_Pal[] = INCBIN_U16("graphics/pokenav/condition/cancel.gbapal"); const u8 gPokenavConditionCancel_Gfx[] = INCBIN_U8("graphics/pokenav/condition/cancel.4bpp"); -const u16 gMonMarkingsMenu_Pal[] = INCBIN_U16("graphics/misc/mon_markings_menu.gbapal"); -const u8 gMonMarkingsMenu_Gfx[] = INCBIN_U8("graphics/misc/mon_markings_menu.4bpp"); +const u16 gMonMarkingsMenu_Pal[] = INCBIN_U16("graphics/interface/mon_markings_menu.gbapal"); +const u8 gMonMarkingsMenu_Gfx[] = INCBIN_U8("graphics/interface/mon_markings_menu.4bpp"); const u16 gBerryBlenderMiscPalette[] = INCBIN_U16("graphics/berry_blender/misc.gbapal"); const u16 gBerryBlenderArrowPalette[] = INCBIN_U16("graphics/berry_blender/arrow.gbapal"); @@ -1449,9 +1447,9 @@ const u32 gTilesetTiles_General[] = INCBIN_U32("data/tilesets/primary/general/ti // trade/egg hatch -const u16 gTradeGba_Pal[] = INCBIN_U16("graphics/link/gba.gbapal"); -const u16 gTradeGba2_Pal[] = INCBIN_U16("graphics/link/gba_pal2.gbapal"); -const u8 gTradeGba_Gfx[] = INCBIN_U8("graphics/link/gba.4bpp"); +const u16 gTradeGba_Pal[] = INCBIN_U16("graphics/trade/gba.gbapal"); +const u16 gTradeGba2_Pal[] = INCBIN_U16("graphics/trade/gba_pal2.gbapal"); +const u8 gTradeGba_Gfx[] = INCBIN_U8("graphics/trade/gba.4bpp"); static const u16 sEmptyPal[16] = {0}; @@ -1523,7 +1521,7 @@ const u16 gFrontierPassCancelButtonHighlighted_Tilemap[] = INCBIN_U16("graphics/ // Berry Crush const u16 gBerryCrush_Crusher_Pal[] = INCBIN_U16("graphics/berry_crush/crusher.gbapal"); const u32 gBerryCrush_Crusher_Gfx[] = INCBIN_U32("graphics/berry_crush/crusher.4bpp.lz"); -const u32 gBerryCrush_Crusher_Tilemap[] = INCBIN_U32("graphics/berry_crush/crusher.bin.lz"); +const u32 gBerryCrush_TextWindows_Tilemap[] = INCBIN_U32("graphics/berry_crush/text_windows.bin.lz"); // random garbage at the end. static const u8 sEmpty3[0x54BAC] = {0}; diff --git a/src/item_menu.c b/src/item_menu.c index 56ef3cba3..9eaca9597 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -372,7 +372,7 @@ static const struct ScrollArrowsTemplate sBagScrollArrowsTemplate = { .palNum = 0, }; -static const u8 sRegisteredSelect_Gfx[] = INCBIN_U8("graphics/interface/select_button.4bpp"); +static const u8 sRegisteredSelect_Gfx[] = INCBIN_U8("graphics/bag/select_button.4bpp"); enum { COLORID_NORMAL, diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index 60de132b0..a5c265f90 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -33,8 +33,8 @@ static void SpriteCB_SwitchPocketRotatingBallInit(struct Sprite *sprite); static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite); // static const rom data -static const u16 gRotatingBall_Pal[] = INCBIN_U16("graphics/interface/bag_spinner.gbapal"); -static const u8 gRotatingBall[] = INCBIN_U8("graphics/interface/bag_spinner.4bpp"); +static const u16 sRotatingBall_Pal[] = INCBIN_U16("graphics/bag/rotating_ball.gbapal"); +static const u8 sRotatingBall_Gfx[] = INCBIN_U8("graphics/bag/rotating_ball.4bpp"); static const u8 gCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); static const u16 gCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); @@ -200,12 +200,12 @@ static const union AffineAnimCmd *const sRotatingBallAnimCmds_FullRotation[] = static const struct SpriteSheet sRotatingBallTable = { - gRotatingBall, 0x80, TAG_ROTATING_BALL_GFX + sRotatingBall_Gfx, 0x80, TAG_ROTATING_BALL_GFX }; static const struct SpritePalette sRotatingBallPaletteTable = { - gRotatingBall_Pal, TAG_ROTATING_BALL_GFX + sRotatingBall_Pal, TAG_ROTATING_BALL_GFX }; static const struct SpriteTemplate sRotatingBallSpriteTemplate = diff --git a/src/item_use.c b/src/item_use.c index 29ceb7cae..c9a7fe1c7 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -725,11 +725,11 @@ static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) static bool8 TryToWaterSudowoodo(void) { u16 x, y; - u8 z; + u8 elevation; u8 objId; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); - z = PlayerGetZCoord(); - objId = GetObjectEventIdByXYZ(x, y, z); + elevation = PlayerGetElevation(); + objId = GetObjectEventIdByPosition(x, y, elevation); if (objId == OBJECT_EVENTS_COUNT || gObjectEvents[objId].graphicsId != OBJ_EVENT_GFX_SUDOWOODO) return FALSE; else diff --git a/src/link.c b/src/link.c index 1084d4a6d..aa9a0d73d 100644 --- a/src/link.c +++ b/src/link.c @@ -158,13 +158,13 @@ static void DoSend(void); static void StopTimer(void); static void SendRecvDone(void); -static const u16 sWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal"); -static const u32 sWirelessLinkDisplayGfx[] = INCBIN_U32("graphics/interface/wireless_link_display.4bpp.lz"); -static const u32 sWirelessLinkDisplayTilemap[] = INCBIN_U32("graphics/interface/wireless_link_display.bin.lz"); -static const u16 sLinkTestDigitsPal[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal"); -static const u16 sLinkTestDigitsGfx[] = INCBIN_U16("graphics/interface/link_test_digits.4bpp"); +static const u16 sWirelessLinkDisplayPal[] = INCBIN_U16("graphics/link/wireless_display.gbapal"); +static const u32 sWirelessLinkDisplayGfx[] = INCBIN_U32("graphics/link/wireless_display.4bpp.lz"); +static const u32 sWirelessLinkDisplayTilemap[] = INCBIN_U32("graphics/link/wireless_display.bin.lz"); +static const u16 sLinkTestDigitsPal[] = INCBIN_U16("graphics/link/test_digits.gbapal"); +static const u16 sLinkTestDigitsGfx[] = INCBIN_U16("graphics/link/test_digits.4bpp"); static const u8 sUnusedTransparentWhite[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE}"); -static const u16 sCommErrorBg_Gfx[] = INCBIN_U16("graphics/interface/comm_error_bg.4bpp"); +static const u16 sCommErrorBg_Gfx[] = INCBIN_U16("graphics/link/comm_error_bg.4bpp"); static const struct BlockRequest sBlockRequests[] = { [BLOCK_REQ_SIZE_NONE] = {gBlockSendBuffer, 200}, [BLOCK_REQ_SIZE_200] = {gBlockSendBuffer, 200}, diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 571f305d0..1e1fe5b34 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -34,8 +34,8 @@ EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0; static u8 sSequenceArrayValOffset; -static const u16 sWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); -static const u32 sWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz"); +static const u16 sWirelessLinkIconPalette[] = INCBIN_U16("graphics/link/wireless_icon.gbapal"); +static const u32 sWirelessLinkIconPic[] = INCBIN_U32("graphics/link/wireless_icon.4bpp.lz"); // Most of the below two tables won't make sense with ASCII encoding. static const u8 sWireless_ASCIItoRSETable[256] = { diff --git a/src/m4a.c b/src/m4a.c index b159e3873..faeef83e7 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -83,7 +83,7 @@ void m4aSoundInit(void) for (i = 0; i < NUM_MUSIC_PLAYERS; i++) { struct MusicPlayerInfo *mplayInfo = gMPlayTable[i].info; - MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].unk_8); + MPlayOpen(mplayInfo, gMPlayTable[i].track, gMPlayTable[i].numTracks); mplayInfo->unk_B = gMPlayTable[i].unk_A; mplayInfo->memAccArea = gMPlayMemAccArea; } diff --git a/src/m4a_1.s b/src/m4a_1.s index f71a5546e..cc5d3238d 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -1910,27 +1910,7 @@ _081DDD90: .align 2, 0 @ Don't pad with nop. - .bss + .bss gDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM - .space 0x40 - .size gDecodingBuffer, .-gDecodingBuffer - - .global gMPlayTrack_BGM -gMPlayTrack_BGM: - .space 0x320 - .size gMPlayTrack_BGM, .-gMPlayTrack_BGM - - .global gMPlayTrack_SE1 -gMPlayTrack_SE1: - .space 0xF0 - .size gMPlayTrack_SE1, .-gMPlayTrack_SE1 - - .global gMPlayTrack_SE2 -gMPlayTrack_SE2: - .space 0x2D0 - .size gMPlayTrack_SE2, .-gMPlayTrack_SE2 - - .global gMPlayTrack_SE3 -gMPlayTrack_SE3: - .space 0x50 - .size gMPlayTrack_SE3, .-gMPlayTrack_SE3 + .space 0x40 + .size gDecodingBuffer, .-gDecodingBuffer diff --git a/src/main_menu.c b/src/main_menu.c index e7802b1e7..54a4f6891 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -403,8 +403,8 @@ static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] = DUMMY_WIN_TEMPLATE }; -static const u16 sMainMenuBgPal[] = INCBIN_U16("graphics/misc/main_menu_bg.gbapal"); -static const u16 sMainMenuTextPal[] = INCBIN_U16("graphics/misc/main_menu_text.gbapal"); +static const u16 sMainMenuBgPal[] = INCBIN_U16("graphics/interface/main_menu_bg.gbapal"); +static const u16 sMainMenuTextPal[] = INCBIN_U16("graphics/interface/main_menu_text.gbapal"); static const u8 sTextColor_Headers[] = {TEXT_DYNAMIC_COLOR_1, TEXT_DYNAMIC_COLOR_2, TEXT_DYNAMIC_COLOR_3}; static const u8 sTextColor_MenuInfo[] = {TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_WHITE, TEXT_DYNAMIC_COLOR_3}; diff --git a/src/map_name_popup.c b/src/map_name_popup.c index e44fb3383..8cf1a6bab 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -38,35 +38,35 @@ static EWRAM_DATA u8 sPopupTaskId = 0; // .rodata static const u8 sMapPopUp_Table[][960] = { - [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/interface/map_popup/wood.4bpp"), - [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/interface/map_popup/marble.4bpp"), - [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/interface/map_popup/stone.4bpp"), - [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/interface/map_popup/brick.4bpp"), - [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/interface/map_popup/underwater.4bpp"), - [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/interface/map_popup/stone2.4bpp"), + [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/map_popup/wood.4bpp"), + [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/map_popup/marble.4bpp"), + [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/map_popup/stone.4bpp"), + [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/map_popup/brick.4bpp"), + [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/map_popup/underwater.4bpp"), + [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/map_popup/stone2.4bpp"), }; static const u8 sMapPopUp_OutlineTable[][960] = { - [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/interface/map_popup/wood_outline.4bpp"), - [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/interface/map_popup/marble_outline.4bpp"), - [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/interface/map_popup/stone_outline.4bpp"), - [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/interface/map_popup/brick_outline.4bpp"), - [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/interface/map_popup/underwater_outline.4bpp"), - [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/interface/map_popup/stone2_outline.4bpp"), + [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/map_popup/wood_outline.4bpp"), + [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/map_popup/marble_outline.4bpp"), + [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/map_popup/stone_outline.4bpp"), + [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/map_popup/brick_outline.4bpp"), + [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/map_popup/underwater_outline.4bpp"), + [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/map_popup/stone2_outline.4bpp"), }; static const u16 sMapPopUp_PaletteTable[][16] = { - [MAPPOPUP_THEME_WOOD] = INCBIN_U16("graphics/interface/map_popup/wood.gbapal"), - [MAPPOPUP_THEME_MARBLE] = INCBIN_U16("graphics/interface/map_popup/marble_outline.gbapal"), - [MAPPOPUP_THEME_STONE] = INCBIN_U16("graphics/interface/map_popup/stone_outline.gbapal"), - [MAPPOPUP_THEME_BRICK] = INCBIN_U16("graphics/interface/map_popup/brick_outline.gbapal"), - [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U16("graphics/interface/map_popup/underwater_outline.gbapal"), - [MAPPOPUP_THEME_STONE2] = INCBIN_U16("graphics/interface/map_popup/stone2_outline.gbapal"), + [MAPPOPUP_THEME_WOOD] = INCBIN_U16("graphics/map_popup/wood.gbapal"), + [MAPPOPUP_THEME_MARBLE] = INCBIN_U16("graphics/map_popup/marble_outline.gbapal"), + [MAPPOPUP_THEME_STONE] = INCBIN_U16("graphics/map_popup/stone_outline.gbapal"), + [MAPPOPUP_THEME_BRICK] = INCBIN_U16("graphics/map_popup/brick_outline.gbapal"), + [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U16("graphics/map_popup/underwater_outline.gbapal"), + [MAPPOPUP_THEME_STONE2] = INCBIN_U16("graphics/map_popup/stone2_outline.gbapal"), }; -static const u16 sMapPopUp_Palette_Underwater[16] = INCBIN_U16("graphics/interface/map_popup/underwater.gbapal"); +static const u16 sMapPopUp_Palette_Underwater[16] = INCBIN_U16("graphics/map_popup/underwater.gbapal"); static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] = { diff --git a/src/menu_helpers.c b/src/menu_helpers.c index d5cf83bd2..e9f3e571f 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -71,12 +71,12 @@ static const union AnimCmd *const sAnims_SwapLine[] = static const struct CompressedSpriteSheet sSpriteSheet_SwapLine = { - gBagSwapLineGfx, 0x100, TAG_SWAP_LINE + gSwapLineGfx, 0x100, TAG_SWAP_LINE }; static const struct CompressedSpritePalette sSpritePalette_SwapLine = { - gBagSwapLinePal, TAG_SWAP_LINE + gSwapLinePal, TAG_SWAP_LINE }; static const struct SpriteTemplate sSpriteTemplate_SwapLine = diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 6b58e3f05..72d3ac632 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -2,254 +2,129 @@ #include "metatile_behavior.h" #include "constants/metatile_behaviors.h" -#define TILE_FLAG_ENCOUNTER_TILE 1 -#define TILE_FLAG_SURFABLE 2 +#define TILE_FLAG_HAS_ENCOUNTERS (1 << 0) +#define TILE_FLAG_SURFABLE (1 << 1) +#define TILE_FLAG_UNUSED (1 << 2) // Roughly all of the traversable metatiles. Set but never read -#define TILE_ATTRIBUTES(unused, surfable, wildEncounter) (((wildEncounter) ? 1 : 0) | ((surfable) ? 2 : 0) | ((unused) ? 4 : 0)) - -// wonder what the third flag is supposed to do -static const u8 sTileBitAttributes[] = +static const u8 sTileBitAttributes[NUM_METATILE_BEHAVIORS] = { - [MB_NORMAL] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_WALL] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_TALL_GRASS] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_LONG_GRASS] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_UNUSED_04] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_05] = TILE_ATTRIBUTES(FALSE, FALSE, TRUE), - [MB_DEEP_SAND] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_SHORT_GRASS] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_CAVE] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_LONG_GRASS_SOUTH_EDGE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_NO_RUNNING] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_INDOOR_ENCOUNTER] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_MOUNTAIN_TOP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BATTLE_PYRAMID_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_MOSSDEEP_GYM_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_MT_PYRE_HOLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_POND_WATER] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_SEMI_DEEP_WATER] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_DEEP_WATER] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_WATERFALL] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_SOOTOPOLIS_DEEP_WATER] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_OCEAN_WATER] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_PUDDLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SHALLOW_WATER] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_SOOTOPOLIS_DEEP_WATER] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_NO_SURFACING] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_UNUSED_SOOTOPOLIS_DEEP_WATER_2] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_STAIRS_OUTSIDE_ABANDONED_SHIP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SHOAL_CAVE_ENTRANCE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_1D] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_1E] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_1F] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_ICE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SAND] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SEAWEED] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_UNUSED_23] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_ASHGRASS] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_FOOTPRINTS] = TILE_ATTRIBUTES(TRUE, FALSE, TRUE), - [MB_THIN_ICE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_CRACKED_ICE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_HOT_SPRINGS] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_LAVARIDGE_GYM_B1F_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SEAWEED_NO_SURFACING] = TILE_ATTRIBUTES(TRUE, TRUE, TRUE), - [MB_REFLECTION_UNDER_BRIDGE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_2C] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_2D] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_2E] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_2F] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_IMPASSABLE_EAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_WEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_NORTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_SOUTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_NORTHEAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_NORTHWEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_SOUTHEAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_SOUTHWEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_JUMP_EAST] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_JUMP_WEST] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_JUMP_NORTH] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_JUMP_SOUTH] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_JUMP_NORTHEAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_JUMP_NORTHWEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_JUMP_SOUTHEAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_JUMP_SOUTHWEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WALK_EAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WALK_WEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WALK_NORTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WALK_SOUTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SLIDE_EAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SLIDE_WEST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SLIDE_NORTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SLIDE_SOUTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_TRICK_HOUSE_PUZZLE_8_FLOOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_49] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_4A] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_4B] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_4C] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_4D] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_4E] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_4F] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_EASTWARD_CURRENT] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_WESTWARD_CURRENT] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_NORTHWARD_CURRENT] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_SOUTHWARD_CURRENT] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_UNUSED_54] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_55] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_56] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_57] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_58] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_59] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5A] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5B] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5C] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5D] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5E] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_5F] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_NON_ANIMATED_DOOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_LADDER] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_EAST_ARROW_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WEST_ARROW_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_NORTH_ARROW_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SOUTH_ARROW_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_CRACKED_FLOOR_HOLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_AQUA_HIDEOUT_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_LAVARIDGE_GYM_1F_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_ANIMATED_DOOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UP_ESCALATOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_DOWN_ESCALATOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_WATER_DOOR] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_WATER_SOUTH_ARROW_WARP] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_DEEP_SOUTH_WARP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_6F] = TILE_ATTRIBUTES(TRUE, TRUE, FALSE), - [MB_BRIDGE_OVER_OCEAN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_LOW] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_MED] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_HIGH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_PACIFIDLOG_VERTICAL_LOG_TOP] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_PACIFIDLOG_VERTICAL_LOG_BOTTOM] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_PACIFIDLOG_HORIZONTAL_LOG_LEFT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_PACIFIDLOG_HORIZONTAL_LOG_RIGHT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_FORTREE_BRIDGE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_79] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_MED_EDGE_1] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_MED_EDGE_2] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_HIGH_EDGE_1] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BRIDGE_OVER_POND_HIGH_EDGE_2] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_BRIDGE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BIKE_BRIDGE_OVER_BARRIER] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_COUNTER] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_81] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_82] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_PC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_CABLE_BOX_RESULTS_1] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_REGION_MAP] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_TELEVISION] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_POKEBLOCK_FEEDER] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_88] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SLOT_MACHINE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_ROULETTE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_CLOSED_SOOTOPOLIS_DOOR] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_TRICK_HOUSE_PUZZLE_DOOR] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_PETALBURG_GYM_DOOR] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_RUNNING_SHOES_INSTRUCTION] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_QUESTIONNAIRE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_RED_CAVE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_RED_CAVE_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_BROWN_CAVE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_YELLOW_CAVE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_TREE_LEFT] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_SHRUB] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_SHRUB_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_BLUE_CAVE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_TREE_RIGHT] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_9E] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_9F] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_BERRY_TREE_SOIL] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A1] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A2] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A3] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A4] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A5] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A6] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A7] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A8] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_A9] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AA] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AB] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AD] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_AF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_PC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_REGISTER_PC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_UNUSED] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BLOCK_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_DECORATION] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_HOLDS_SMALL_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_B6] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_NORTH_WALL] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_BALLOON] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_IMPASSABLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_GLITTER_MAT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_JUMP_MAT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_SPIN_MAT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_SOUND_MAT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_BREAKABLE_DOOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_SAND_ORNAMENT] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_IMPASSABLE_SOUTH_AND_NORTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_IMPASSABLE_WEST_AND_EAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_HOLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_HOLDS_LARGE_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_TV_SHIELD] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_PLAYER_ROOM_PC_ON] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_SECRET_BASE_DECORATION_BASE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_POSTER] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_C8] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_C9] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CA] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CB] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CD] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_CF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_MUDDY_SLOPE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BUMPY_SLOPE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_CRACKED_FLOOR] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_ISOLATED_VERTICAL_RAIL] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_ISOLATED_HORIZONTAL_RAIL] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_VERTICAL_RAIL] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_HORIZONTAL_RAIL] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_UNUSED_D7] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_D8] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_D9] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DA] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DB] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DD] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_DF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_PICTURE_BOOK_SHELF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_BOOKSHELF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_POKEMON_CENTER_BOOKSHELF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_VASE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_TRASH_CAN] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SHOP_SHELF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_BLUEPRINT] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_CABLE_BOX_RESULTS_2] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_WIRELESS_BOX_RESULTS] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_TRAINER_HILL_TIMER] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SKY_PILLAR_CLOSED_DOOR] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_EB] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_EC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_ED] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_EE] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_UNUSED_EF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), + [MB_NORMAL] = TILE_FLAG_UNUSED, + [MB_TALL_GRASS] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_LONG_GRASS] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_UNUSED_05] = TILE_FLAG_HAS_ENCOUNTERS, + [MB_DEEP_SAND] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_SHORT_GRASS] = TILE_FLAG_UNUSED, + [MB_CAVE] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_LONG_GRASS_SOUTH_EDGE] = TILE_FLAG_UNUSED, + [MB_NO_RUNNING] = TILE_FLAG_UNUSED, + [MB_INDOOR_ENCOUNTER] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_MOUNTAIN_TOP] = TILE_FLAG_UNUSED, + [MB_BATTLE_PYRAMID_WARP] = TILE_FLAG_UNUSED, + [MB_MOSSDEEP_GYM_WARP] = TILE_FLAG_UNUSED, + [MB_MT_PYRE_HOLE] = TILE_FLAG_UNUSED, + [MB_POND_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_SEMI_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_WATERFALL] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_SOOTOPOLIS_DEEP_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_OCEAN_WATER] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_PUDDLE] = TILE_FLAG_UNUSED, + [MB_SHALLOW_WATER] = TILE_FLAG_UNUSED, + [MB_NO_SURFACING] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_STAIRS_OUTSIDE_ABANDONED_SHIP] = TILE_FLAG_UNUSED, + [MB_SHOAL_CAVE_ENTRANCE] = TILE_FLAG_UNUSED, + [MB_ICE] = TILE_FLAG_UNUSED, + [MB_SAND] = TILE_FLAG_UNUSED, + [MB_SEAWEED] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_UNUSED_23] = TILE_FLAG_UNUSED, + [MB_ASHGRASS] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_FOOTPRINTS] = TILE_FLAG_UNUSED | TILE_FLAG_HAS_ENCOUNTERS, + [MB_THIN_ICE] = TILE_FLAG_UNUSED, + [MB_CRACKED_ICE] = TILE_FLAG_UNUSED, + [MB_HOT_SPRINGS] = TILE_FLAG_UNUSED, + [MB_LAVARIDGE_GYM_B1F_WARP] = TILE_FLAG_UNUSED, + [MB_SEAWEED_NO_SURFACING] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE | TILE_FLAG_HAS_ENCOUNTERS, + [MB_REFLECTION_UNDER_BRIDGE] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_EAST] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_WEST] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_NORTH] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_SOUTH] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_NORTHEAST] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_NORTHWEST] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_SOUTHEAST] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_SOUTHWEST] = TILE_FLAG_UNUSED, + [MB_JUMP_NORTHEAST] = TILE_FLAG_UNUSED, + [MB_JUMP_NORTHWEST] = TILE_FLAG_UNUSED, + [MB_JUMP_SOUTHEAST] = TILE_FLAG_UNUSED, + [MB_JUMP_SOUTHWEST] = TILE_FLAG_UNUSED, + [MB_WALK_EAST] = TILE_FLAG_UNUSED, + [MB_WALK_WEST] = TILE_FLAG_UNUSED, + [MB_WALK_NORTH] = TILE_FLAG_UNUSED, + [MB_WALK_SOUTH] = TILE_FLAG_UNUSED, + [MB_SLIDE_EAST] = TILE_FLAG_UNUSED, + [MB_SLIDE_WEST] = TILE_FLAG_UNUSED, + [MB_SLIDE_NORTH] = TILE_FLAG_UNUSED, + [MB_SLIDE_SOUTH] = TILE_FLAG_UNUSED, + [MB_TRICK_HOUSE_PUZZLE_8_FLOOR] = TILE_FLAG_UNUSED, + [MB_UNUSED_49] = TILE_FLAG_UNUSED, + [MB_UNUSED_4A] = TILE_FLAG_UNUSED, + [MB_EASTWARD_CURRENT] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_WESTWARD_CURRENT] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_NORTHWARD_CURRENT] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_SOUTHWARD_CURRENT] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_NON_ANIMATED_DOOR] = TILE_FLAG_UNUSED, + [MB_LADDER] = TILE_FLAG_UNUSED, + [MB_EAST_ARROW_WARP] = TILE_FLAG_UNUSED, + [MB_WEST_ARROW_WARP] = TILE_FLAG_UNUSED, + [MB_NORTH_ARROW_WARP] = TILE_FLAG_UNUSED, + [MB_SOUTH_ARROW_WARP] = TILE_FLAG_UNUSED, + [MB_CRACKED_FLOOR_HOLE] = TILE_FLAG_UNUSED, + [MB_AQUA_HIDEOUT_WARP] = TILE_FLAG_UNUSED, + [MB_LAVARIDGE_GYM_1F_WARP] = TILE_FLAG_UNUSED, + [MB_ANIMATED_DOOR] = TILE_FLAG_UNUSED, + [MB_UP_ESCALATOR] = TILE_FLAG_UNUSED, + [MB_DOWN_ESCALATOR] = TILE_FLAG_UNUSED, + [MB_WATER_DOOR] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_WATER_SOUTH_ARROW_WARP] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_DEEP_SOUTH_WARP] = TILE_FLAG_UNUSED, + [MB_UNUSED_6F] = TILE_FLAG_UNUSED | TILE_FLAG_SURFABLE, + [MB_BRIDGE_OVER_POND_LOW] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_MED] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_HIGH] = TILE_FLAG_UNUSED, + [MB_PACIFIDLOG_VERTICAL_LOG_TOP] = TILE_FLAG_UNUSED, + [MB_PACIFIDLOG_VERTICAL_LOG_BOTTOM] = TILE_FLAG_UNUSED, + [MB_PACIFIDLOG_HORIZONTAL_LOG_LEFT] = TILE_FLAG_UNUSED, + [MB_PACIFIDLOG_HORIZONTAL_LOG_RIGHT] = TILE_FLAG_UNUSED, + [MB_FORTREE_BRIDGE] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_MED_EDGE_1] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_MED_EDGE_2] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_HIGH_EDGE_1] = TILE_FLAG_UNUSED, + [MB_BRIDGE_OVER_POND_HIGH_EDGE_2] = TILE_FLAG_UNUSED, + [MB_UNUSED_BRIDGE] = TILE_FLAG_UNUSED, + [MB_BIKE_BRIDGE_OVER_BARRIER] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_SCENERY] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_TRAINER_SPOT] = TILE_FLAG_UNUSED, + [MB_HOLDS_SMALL_DECORATION] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_BALLOON] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_IMPASSABLE] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_GLITTER_MAT] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_JUMP_MAT] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_SPIN_MAT] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_SOUND_MAT] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_BREAKABLE_DOOR] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_SOUTH_AND_NORTH] = TILE_FLAG_UNUSED, + [MB_IMPASSABLE_WEST_AND_EAST] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_HOLE] = TILE_FLAG_UNUSED, + [MB_HOLDS_LARGE_DECORATION] = TILE_FLAG_UNUSED, + [MB_SECRET_BASE_TV_SHIELD] = TILE_FLAG_UNUSED, + [MB_PLAYER_ROOM_PC_ON] = TILE_FLAG_UNUSED, + [MB_MUDDY_SLOPE] = TILE_FLAG_UNUSED, + [MB_BUMPY_SLOPE] = TILE_FLAG_UNUSED, + [MB_CRACKED_FLOOR] = TILE_FLAG_UNUSED, + [MB_ISOLATED_VERTICAL_RAIL] = TILE_FLAG_UNUSED, + [MB_ISOLATED_HORIZONTAL_RAIL] = TILE_FLAG_UNUSED, + [MB_VERTICAL_RAIL] = TILE_FLAG_UNUSED, + [MB_HORIZONTAL_RAIL] = TILE_FLAG_UNUSED, }; bool8 MetatileBehavior_IsATile(u8 metatileBehavior) @@ -259,7 +134,7 @@ bool8 MetatileBehavior_IsATile(u8 metatileBehavior) bool8 MetatileBehavior_IsEncounterTile(u8 metatileBehavior) { - if ((sTileBitAttributes[metatileBehavior] & TILE_FLAG_ENCOUNTER_TILE)) + if ((sTileBitAttributes[metatileBehavior] & TILE_FLAG_HAS_ENCOUNTERS)) return TRUE; else return FALSE; @@ -687,17 +562,19 @@ bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8 metatileBehavior) return FALSE; } -bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2(u8 metatileBehavior) +// Used by the rock/grass floor spaces that the secret base trainer is not standing on +bool8 MetatileBehavior_IsSecretBaseScenery1(u8 metatileBehavior) { - if (metatileBehavior == MB_SECRET_BASE_UNUSED) + if (metatileBehavior == MB_SECRET_BASE_SCENERY) return TRUE; else return FALSE; } -bool8 MetatileBehavior_IsBlockDecoration(u8 metatileBehavior) +// Used by the rock/grass floor space that the secret base trainer stands on +bool8 MetatileBehavior_IsSecretBaseTrainerSpot(u8 metatileBehavior) { - if (metatileBehavior == MB_BLOCK_DECORATION) + if (metatileBehavior == MB_SECRET_BASE_TRAINER_SPOT) return TRUE; else return FALSE; @@ -743,9 +620,9 @@ bool8 MetatileBehavior_IsSecretBaseNorthWall(u8 metatileBehavior) return FALSE; } -bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8 metatileBehavior) +bool8 MetatileBehavior_IsSecretBaseScenery2(u8 metatileBehavior) { - if (metatileBehavior == MB_SECRET_BASE_UNUSED) + if (metatileBehavior == MB_SECRET_BASE_SCENERY) return TRUE; else return FALSE; diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c index 178b6d5b7..4c72136d4 100644 --- a/src/minigame_countdown.c +++ b/src/minigame_countdown.c @@ -48,8 +48,8 @@ static void Task_StaticCountdown_Free(u8 taskId); static void Task_StaticCountdown_Start(u8 taskId); static void Task_StaticCountdown_Run(u8 taskId); -static const u16 s321Start_Static_Pal[] = INCBIN_U16("graphics/minigame_countdown/321start_static.gbapal"); -static const u32 s321Start_Static_Gfx[] = INCBIN_U32("graphics/minigame_countdown/321start_static.4bpp.lz"); +static const u16 s321Start_Static_Pal[] = INCBIN_U16("graphics/link/321start_static.gbapal"); +static const u32 s321Start_Static_Gfx[] = INCBIN_U32("graphics/link/321start_static.4bpp.lz"); static const struct CompressedSpriteSheet sSpriteSheet_321Start_Static[] = { @@ -374,8 +374,8 @@ static void CreateStartSprite(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subprior static void InitStartGraphic(u8 spriteId1, u8 spriteId2, u8 spriteId3); static void SpriteCB_Start(struct Sprite *sprite); -static const u16 s321Start_Pal[] = INCBIN_U16("graphics/minigame_countdown/321start.gbapal"); -static const u32 s321Start_Gfx[] = INCBIN_U32("graphics/minigame_countdown/321start.4bpp.lz"); +static const u16 s321Start_Pal[] = INCBIN_U16("graphics/link/321start.gbapal"); +static const u32 s321Start_Gfx[] = INCBIN_U32("graphics/link/321start.4bpp.lz"); #define tState data[0] #define tTilesTag data[2] diff --git a/src/mon_markings.c b/src/mon_markings.c index dbd5a2fa8..1e03179e9 100644 --- a/src/mon_markings.c +++ b/src/mon_markings.c @@ -22,8 +22,8 @@ static void SpriteCB_Marking(struct Sprite *); static void SpriteCB_Cursor(struct Sprite *); static struct Sprite *CreateMarkingComboSprite(u16, u16, const u16 *, u16); -static const u16 sMonMarkings_Pal[] = INCBIN_U16("graphics/misc/mon_markings.gbapal"); -static const u8 sMonMarkings_Gfx[] = INCBIN_U8("graphics/misc/mon_markings.4bpp"); +static const u16 sMonMarkings_Pal[] = INCBIN_U16("graphics/interface/mon_markings.gbapal"); +static const u8 sMonMarkings_Gfx[] = INCBIN_U8("graphics/interface/mon_markings.4bpp"); static const struct OamData sOamData_MenuWindow = { diff --git a/src/money.c b/src/money.c index c331462d4..5723974a8 100644 --- a/src/money.c +++ b/src/money.c @@ -58,14 +58,14 @@ static const struct SpriteTemplate sSpriteTemplate_MoneyLabel = static const struct CompressedSpriteSheet sSpriteSheet_MoneyLabel = { - .data = gMenuMoneyGfx, + .data = gShopMenuMoney_Gfx, .size = 256, .tag = MONEY_LABEL_TAG, }; static const struct CompressedSpritePalette sSpritePalette_MoneyLabel = { - .data = gMenuMoneyPal, + .data = gShopMenu_Pal, .tag = MONEY_LABEL_TAG }; @@ -132,7 +132,7 @@ void SubtractMoneyFromVar0x8005(void) void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed) { - PrintMoneyAmount(windowId, 0x26, 1, amount, speed); + PrintMoneyAmount(windowId, 38, 1, amount, speed); } void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) @@ -146,7 +146,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) txtPtr = gStringVar4; while (strLength-- > 0) - *(txtPtr++) = 0x77; + *(txtPtr++) = CHAR_SPACER; StringExpandPlaceholders(txtPtr, gText_PokedollarVar1); AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, x, y, speed, NULL); diff --git a/src/naming_screen.c b/src/naming_screen.c index 5aef44f14..0019a51b1 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1408,10 +1408,10 @@ static void NamingScreen_CreatePlayerIcon(void) u8 rivalGfxId; u8 spriteId; - rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, sNamingScreen->monSpecies); + rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, sNamingScreen->monSpecies); spriteId = CreateObjectGraphicsSprite(rivalGfxId, SpriteCallbackDummy, 56, 37, 0); gSprites[spriteId].oam.priority = 3; - StartSpriteAnim(&gSprites[spriteId], 4); + StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_SOUTH); } static void NamingScreen_CreatePCIcon(void) @@ -1438,7 +1438,7 @@ static void NamingScreen_CreateWaldaDadIcon(void) spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MAN_1, SpriteCallbackDummy, 56, 37, 0); gSprites[spriteId].oam.priority = 3; - StartSpriteAnim(&gSprites[spriteId], 4); + StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_SOUTH); } //-------------------------------------------------- diff --git a/src/option_menu.c b/src/option_menu.c index e66bddd7f..2991913d7 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -79,9 +79,9 @@ static void DrawBgWindowFrames(void); EWRAM_DATA static bool8 sArrowPressed = FALSE; -static const u16 sOptionMenuText_Pal[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal"); +static const u16 sOptionMenuText_Pal[] = INCBIN_U16("graphics/interface/option_menu_text.gbapal"); // note: this is only used in the Japanese release -static const u8 sEqualSignGfx[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp"); +static const u8 sEqualSignGfx[] = INCBIN_U8("graphics/interface/option_menu_equals_sign.4bpp"); static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = { diff --git a/src/overworld.c b/src/overworld.c index b6726f9d5..ec494832a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -185,9 +185,9 @@ static u16 (*sPlayerKeyInterceptCallback)(u32); static bool8 sReceivingFromLink; static u8 sRfuKeepAliveTimer; -u16 *gBGTilemapBuffers1; -u16 *gBGTilemapBuffers2; -u16 *gBGTilemapBuffers3; +u16 *gOverworldTilemapBuffer_Bg2; +u16 *gOverworldTilemapBuffer_Bg1; +u16 *gOverworldTilemapBuffer_Bg3; u16 gHeldKeyCodeToSend; void (*gFieldCallback)(void); bool8 (*gFieldCallback2)(void); @@ -1399,12 +1399,12 @@ static void InitOverworldBgs(void) SetBgAttribute(1, BG_ATTR_MOSAIC, 1); SetBgAttribute(2, BG_ATTR_MOSAIC, 1); SetBgAttribute(3, BG_ATTR_MOSAIC, 1); - gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE); - gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE); - gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE); - SetBgTilemapBuffer(1, gBGTilemapBuffers2); - SetBgTilemapBuffer(2, gBGTilemapBuffers1); - SetBgTilemapBuffer(3, gBGTilemapBuffers3); + gOverworldTilemapBuffer_Bg1 = AllocZeroed(BG_SCREEN_SIZE); + gOverworldTilemapBuffer_Bg2 = AllocZeroed(BG_SCREEN_SIZE); + gOverworldTilemapBuffer_Bg3 = AllocZeroed(BG_SCREEN_SIZE); + SetBgTilemapBuffer(1, gOverworldTilemapBuffer_Bg1); + SetBgTilemapBuffer(2, gOverworldTilemapBuffer_Bg2); + SetBgTilemapBuffer(3, gOverworldTilemapBuffer_Bg3); InitStandardTextBoxWindows(); } @@ -1412,12 +1412,9 @@ void CleanupOverworldWindowsAndTilemaps(void) { ClearMirageTowerPulseBlendEffect(); FreeAllOverworldWindowBuffers(); - if (gBGTilemapBuffers3) - FREE_AND_SET_NULL(gBGTilemapBuffers3); - if (gBGTilemapBuffers1) - FREE_AND_SET_NULL(gBGTilemapBuffers1); - if (gBGTilemapBuffers2) - FREE_AND_SET_NULL(gBGTilemapBuffers2); + TRY_FREE_AND_SET_NULL(gOverworldTilemapBuffer_Bg3); + TRY_FREE_AND_SET_NULL(gOverworldTilemapBuffer_Bg2); + TRY_FREE_AND_SET_NULL(gOverworldTilemapBuffer_Bg1); } static void ResetSafariZoneFlag_(void) @@ -2717,7 +2714,7 @@ static void LoadCableClubPlayer(s32 linkPlayerId, s32 myPlayerId, struct CableCl GetLinkPlayerCoords(linkPlayerId, &x, &y); trainer->pos.x = x; trainer->pos.y = y; - trainer->pos.height = GetLinkPlayerElevation(linkPlayerId); + trainer->pos.elevation = GetLinkPlayerElevation(linkPlayerId); trainer->metatileBehavior = MapGridGetMetatileBehaviorAt(x, y); } @@ -2770,7 +2767,7 @@ static const u8 *TryInteractWithPlayer(struct CableClubPlayer *player) otherPlayerPos = player->pos; otherPlayerPos.x += gDirectionToVectors[player->facing].x; otherPlayerPos.y += gDirectionToVectors[player->facing].y; - otherPlayerPos.height = 0; + otherPlayerPos.elevation = 0; linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y); if (linkPlayerId != MAX_LINK_PLAYERS) @@ -2980,7 +2977,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 objEvent->previousCoords.y = y; SetSpritePosToMapCoords(x, y, &objEvent->initialCoords.x, &objEvent->initialCoords.y); objEvent->initialCoords.x += 8; - ObjectEventUpdateZCoord(objEvent); + ObjectEventUpdateElevation(objEvent); } static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) @@ -3120,7 +3117,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer { objEvent->directionSequenceIndex = 16; ShiftObjectEventCoords(objEvent, x, y); - ObjectEventUpdateZCoord(objEvent); + ObjectEventUpdateElevation(objEvent); return TRUE; } } @@ -3226,8 +3223,8 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) struct ObjectEvent *objEvent = &gObjectEvents[linkPlayerObjEvent->objEventId]; sprite->x = objEvent->initialCoords.x; sprite->y = objEvent->initialCoords.y; - SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1); - sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation); + SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1); + sprite->oam.priority = ElevationToPriority(objEvent->previousElevation); if (linkPlayerObjEvent->movementMode == MOVEMENT_MODE_FREE) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent))); diff --git a/src/pokeball.c b/src/pokeball.c index cb68d6883..a9ccd42d6 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -59,34 +59,34 @@ static u16 GetBattlerPokeballItemId(u8 battlerId); const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT] = { - [BALL_POKE] = {gInterfaceGfx_PokeBall, 384, GFX_TAG_POKEBALL}, - [BALL_GREAT] = {gInterfaceGfx_GreatBall, 384, GFX_TAG_GREATBALL}, - [BALL_SAFARI] = {gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARIBALL}, - [BALL_ULTRA] = {gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRABALL}, - [BALL_MASTER] = {gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTERBALL}, - [BALL_NET] = {gInterfaceGfx_NetBall, 384, GFX_TAG_NETBALL}, - [BALL_DIVE] = {gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVEBALL}, - [BALL_NEST] = {gInterfaceGfx_NestBall, 384, GFX_TAG_NESTBALL}, - [BALL_REPEAT] = {gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEATBALL}, - [BALL_TIMER] = {gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMERBALL}, - [BALL_LUXURY] = {gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURYBALL}, - [BALL_PREMIER] = {gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIERBALL}, + [BALL_POKE] = {gBallGfx_Poke, 384, GFX_TAG_POKEBALL}, + [BALL_GREAT] = {gBallGfx_Great, 384, GFX_TAG_GREATBALL}, + [BALL_SAFARI] = {gBallGfx_Safari, 384, GFX_TAG_SAFARIBALL}, + [BALL_ULTRA] = {gBallGfx_Ultra, 384, GFX_TAG_ULTRABALL}, + [BALL_MASTER] = {gBallGfx_Master, 384, GFX_TAG_MASTERBALL}, + [BALL_NET] = {gBallGfx_Net, 384, GFX_TAG_NETBALL}, + [BALL_DIVE] = {gBallGfx_Dive, 384, GFX_TAG_DIVEBALL}, + [BALL_NEST] = {gBallGfx_Nest, 384, GFX_TAG_NESTBALL}, + [BALL_REPEAT] = {gBallGfx_Repeat, 384, GFX_TAG_REPEATBALL}, + [BALL_TIMER] = {gBallGfx_Timer, 384, GFX_TAG_TIMERBALL}, + [BALL_LUXURY] = {gBallGfx_Luxury, 384, GFX_TAG_LUXURYBALL}, + [BALL_PREMIER] = {gBallGfx_Premier, 384, GFX_TAG_PREMIERBALL}, }; const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] = { - [BALL_POKE] = {gInterfacePal_PokeBall, GFX_TAG_POKEBALL}, - [BALL_GREAT] = {gInterfacePal_GreatBall, GFX_TAG_GREATBALL}, - [BALL_SAFARI] = {gInterfacePal_SafariBall, GFX_TAG_SAFARIBALL}, - [BALL_ULTRA] = {gInterfacePal_UltraBall, GFX_TAG_ULTRABALL}, - [BALL_MASTER] = {gInterfacePal_MasterBall, GFX_TAG_MASTERBALL}, - [BALL_NET] = {gInterfacePal_NetBall, GFX_TAG_NETBALL}, - [BALL_DIVE] = {gInterfacePal_DiveBall, GFX_TAG_DIVEBALL}, - [BALL_NEST] = {gInterfacePal_NestBall, GFX_TAG_NESTBALL}, - [BALL_REPEAT] = {gInterfacePal_RepeatBall, GFX_TAG_REPEATBALL}, - [BALL_TIMER] = {gInterfacePal_TimerBall, GFX_TAG_TIMERBALL}, - [BALL_LUXURY] = {gInterfacePal_LuxuryBall, GFX_TAG_LUXURYBALL}, - [BALL_PREMIER] = {gInterfacePal_PremierBall, GFX_TAG_PREMIERBALL}, + [BALL_POKE] = {gBallPal_Poke, GFX_TAG_POKEBALL}, + [BALL_GREAT] = {gBallPal_Great, GFX_TAG_GREATBALL}, + [BALL_SAFARI] = {gBallPal_Safari, GFX_TAG_SAFARIBALL}, + [BALL_ULTRA] = {gBallPal_Ultra, GFX_TAG_ULTRABALL}, + [BALL_MASTER] = {gBallPal_Master, GFX_TAG_MASTERBALL}, + [BALL_NET] = {gBallPal_Net, GFX_TAG_NETBALL}, + [BALL_DIVE] = {gBallPal_Dive, GFX_TAG_DIVEBALL}, + [BALL_NEST] = {gBallPal_Nest, GFX_TAG_NESTBALL}, + [BALL_REPEAT] = {gBallPal_Repeat, GFX_TAG_REPEATBALL}, + [BALL_TIMER] = {gBallPal_Timer, GFX_TAG_TIMERBALL}, + [BALL_LUXURY] = {gBallPal_Luxury, GFX_TAG_LUXURYBALL}, + [BALL_PREMIER] = {gBallPal_Premier, GFX_TAG_PREMIERBALL}, }; static const struct OamData sBallOamData = @@ -204,6 +204,7 @@ static const union AffineAnimCmd *const sAffineAnim_BallRotate[] = const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = { + [BALL_POKE] = { .tileTag = GFX_TAG_POKEBALL, .paletteTag = GFX_TAG_POKEBALL, @@ -213,6 +214,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_GREAT] = { .tileTag = GFX_TAG_GREATBALL, .paletteTag = GFX_TAG_GREATBALL, @@ -222,6 +224,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_SAFARI] = { .tileTag = GFX_TAG_SAFARIBALL, .paletteTag = GFX_TAG_SAFARIBALL, @@ -231,6 +234,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_ULTRA] = { .tileTag = GFX_TAG_ULTRABALL, .paletteTag = GFX_TAG_ULTRABALL, @@ -240,6 +244,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_MASTER] = { .tileTag = GFX_TAG_MASTERBALL, .paletteTag = GFX_TAG_MASTERBALL, @@ -249,6 +254,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_NET] = { .tileTag = GFX_TAG_NETBALL, .paletteTag = GFX_TAG_NETBALL, @@ -258,6 +264,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_DIVE] = { .tileTag = GFX_TAG_DIVEBALL, .paletteTag = GFX_TAG_DIVEBALL, @@ -267,6 +274,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_NEST] = { .tileTag = GFX_TAG_NESTBALL, .paletteTag = GFX_TAG_NESTBALL, @@ -276,6 +284,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_REPEAT] = { .tileTag = GFX_TAG_REPEATBALL, .paletteTag = GFX_TAG_REPEATBALL, @@ -285,6 +294,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_TIMER] = { .tileTag = GFX_TAG_TIMERBALL, .paletteTag = GFX_TAG_TIMERBALL, @@ -294,6 +304,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_LUXURY] = { .tileTag = GFX_TAG_LUXURYBALL, .paletteTag = GFX_TAG_LUXURYBALL, @@ -303,6 +314,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_BallThrow, }, + [BALL_PREMIER] = { .tileTag = GFX_TAG_PREMIERBALL, .paletteTag = GFX_TAG_PREMIERBALL, diff --git a/src/pokedex.c b/src/pokedex.c index b41937302..206782e59 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1512,7 +1512,7 @@ void ResetPokedex(void) gSaveBlock2Ptr->pokedex.spindaPersonality = 0; gSaveBlock2Ptr->pokedex.unknown3 = 0; DisableNationalPokedex(); - for (i = 0; i < DEX_FLAGS_NO; i++) + for (i = 0; i < NUM_DEX_FLAG_BYTES; i++) { gSaveBlock2Ptr->pokedex.owned[i] = 0; gSaveBlock2Ptr->pokedex.seen[i] = 0; diff --git a/src/pokemon.c b/src/pokemon.c index 939c2429d..08a6fd0f9 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -88,11 +88,14 @@ static const struct CombinedMove sCombinedMoves[2] = {0xFFFF, 0xFFFF, 0xFFFF} }; +// NOTE: The order of the elements in the 3 arrays below is irrelevant. +// To reorder the pokedex, see the values in include/constants/pokedex.h. + #define SPECIES_TO_HOENN(name) [SPECIES_##name - 1] = HOENN_DEX_##name #define SPECIES_TO_NATIONAL(name) [SPECIES_##name - 1] = NATIONAL_DEX_##name #define HOENN_TO_NATIONAL(name) [HOENN_DEX_##name - 1] = NATIONAL_DEX_##name - // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex) +// Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex) static const u16 sSpeciesToHoennPokedexNum[NUM_SPECIES - 1] = { SPECIES_TO_HOENN(BULBASAUR), @@ -508,7 +511,7 @@ static const u16 sSpeciesToHoennPokedexNum[NUM_SPECIES - 1] = SPECIES_TO_HOENN(CHIMECHO), }; - // Assigns all species to the National Dex Index (Summary No. for National Dex) +// Assigns all species to the National Dex Index (Summary No. for National Dex) static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = { SPECIES_TO_NATIONAL(BULBASAUR), @@ -924,7 +927,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = SPECIES_TO_NATIONAL(CHIMECHO), }; - // Assigns all Hoenn Dex Indexes to a National Dex Index +// Assigns all Hoenn Dex Indexes to a National Dex Index static const u16 sHoennToNationalOrder[NUM_SPECIES - 1] = { HOENN_TO_NATIONAL(TREECKO), @@ -1342,10 +1345,10 @@ static const u16 sHoennToNationalOrder[NUM_SPECIES - 1] = const struct SpindaSpot gSpindaSpotGraphics[] = { - {16, 7, INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, - {40, 8, INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, - {22, 25, INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, - {34, 26, INCBIN_U16("graphics/spinda_spots/spot_3.bin")} + {.x = 16, .y = 7, .image = INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, + {.x = 40, .y = 8, .image = INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, + {.x = 22, .y = 25, .image = INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, + {.x = 34, .y = 26, .image = INCBIN_U16("graphics/spinda_spots/spot_3.bin")} }; #include "data/pokemon/item_effects.h" @@ -5650,42 +5653,81 @@ u16 SpeciesToCryId(u16 species) return gSpeciesIdToCryId[species - (SPECIES_TREECKO - 1)]; } -#define DRAW_SPINDA_SPOTS \ +// Spots can be drawn on Spinda's color indexes 1, 2, or 3 +#define FIRST_SPOT_COLOR 1 +#define LAST_SPOT_COLOR 3 + +// To draw a spot pixel, add 4 to the color index +#define SPOT_COLOR_ADJUSTMENT 4 +/* + The macro below handles drawing the randomly-placed spots on Spinda's front sprite. + Spinda has 4 spots, each with an entry in gSpindaSpotGraphics. Each entry contains + a base x and y coordinate for the spot and a 16x16 binary image. Each bit in the image + determines whether that pixel should be considered part of the spot. + + The position of each spot is randomized using the Spinda's personality. The entire 32 bit + personality value is used, 4 bits for each coordinate of the 4 spots. If the personality + value is 0x87654321, then 0x1 will be used for the 1st spot's x coord, 0x2 will be used for + the 1st spot's y coord, 0x3 will be used for the 2nd spot's x coord, and so on. Each + coordinate is calculated as (baseCoord + (given 4 bits of personality) - 8). In effect this + means each spot can start at any position -8 to +7 off of its base coordinates (256 possibilities). + + The macro then loops over the 16x16 spot image. For each bit in the spot's binary image, if + the bit is set then it's part of the spot; try to draw it. A pixel is drawn on Spinda if the + pixel on Spinda satisfies the following formula: ((u8)(colorIndex - 1) <= 2). The -1 excludes + transparent pixels, as these are index 0. Therefore only colors 1, 2, or 3 on Spinda will + allow a spot to be drawn. These color indexes are Spinda's light brown body colors. To create + the spot it adds 4 to the color index, so Spinda's spots will be colors 5, 6, and 7. + + The above is done two different ways in the macro: one with << 4, and one without. This + is because Spinda's sprite is a 4 bits per pixel image, but the pointer to Spinda's pixels + (destPixels) is an 8 bit pointer, so it addresses two pixels. Shifting by 4 accesses the 2nd + of these pixels, so this is done every other time. +*/ +#define DRAW_SPINDA_SPOTS(personality, dest) \ { \ - int i; \ - for (i = 0; i < 4; i++) \ + s32 i; \ + for (i = 0; i < (s32)ARRAY_COUNT(gSpindaSpotGraphics); i++) \ { \ - int j; \ + s32 row; \ u8 x = gSpindaSpotGraphics[i].x + ((personality & 0x0F) - 8); \ u8 y = gSpindaSpotGraphics[i].y + (((personality & 0xF0) >> 4) - 8); \ \ - for (j = 0; j < 16; j++) \ + for (row = 0; row < SPINDA_SPOT_HEIGHT; row++) \ { \ - int k; \ - s32 row = gSpindaSpotGraphics[i].image[j]; \ + s32 column; \ + s32 spotPixelRow = gSpindaSpotGraphics[i].image[row]; \ \ - for (k = x; k < x + 16; k++) \ + for (column = x; column < x + SPINDA_SPOT_WIDTH; column++) \ { \ - u8 *val = dest + ((k / 8) * 32) + \ - ((k % 8) / 2) + \ - ((y >> 3) << 8) + \ - ((y & 7) << 2); \ + /* Get target pixels on Spinda's sprite */ \ + u8 *destPixels = dest + ((column / 8) * TILE_SIZE_4BPP) + \ + ((column % 8) / 2) + \ + ((y / 8) * TILE_SIZE_4BPP * 8) + \ + ((y % 8) * 4); \ \ - if (row & 1) \ + /* Is this pixel in the 16x16 spot image part of the spot? */ \ + if (spotPixelRow & 1) \ { \ - if (k & 1) \ + /* destPixels addressess two pixels, alternate which */ \ + /* of the two pixels is being considered for drawing */ \ + if (column & 1) \ { \ - if ((u8)((*val & 0xF0) - 0x10) <= 0x20) \ - *val += 0x40; \ + /* Draw spot pixel if this is Spinda's body color */ \ + if ((u8)((*destPixels & 0xF0) - (FIRST_SPOT_COLOR << 4))\ + <= ((LAST_SPOT_COLOR - FIRST_SPOT_COLOR) << 4))\ + *destPixels += (SPOT_COLOR_ADJUSTMENT << 4); \ } \ else \ { \ - if ((u8)((*val & 0xF) - 0x01) <= 0x02) \ - *val += 0x04; \ + /* Draw spot pixel if this is Spinda's body color */ \ + if ((u8)((*destPixels & 0xF) - FIRST_SPOT_COLOR) \ + <= (LAST_SPOT_COLOR - FIRST_SPOT_COLOR)) \ + *destPixels += SPOT_COLOR_ADJUSTMENT; \ } \ } \ \ - row >>= 1; \ + spotPixelRow >>= 1; \ } \ \ y++; \ @@ -5702,13 +5744,13 @@ static void DrawSpindaSpotsUnused(u16 species, u32 personality, u8 *dest) if (species == SPECIES_SPINDA && dest != gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT] && dest != gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_RIGHT]) - DRAW_SPINDA_SPOTS; + DRAW_SPINDA_SPOTS(personality, dest); } void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, bool8 isFrontPic) { if (species == SPECIES_SPINDA && isFrontPic) - DRAW_SPINDA_SPOTS; + DRAW_SPINDA_SPOTS(personality, dest); } void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index c5918338e..70d84b7e4 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -331,6 +331,13 @@ enum { TILEMAPID_COUNT }; +// Window IDs for sWindowTemplates +enum { + WIN_DISPLAY_INFO, + WIN_MESSAGE, + WIN_ITEM_DESC, +}; + struct Wallpaper { const u32 *tiles; @@ -940,49 +947,31 @@ static const union AffineAnimCmd *const sAffineAnims_ChooseBoxMenu[] = static const u8 sChooseBoxMenu_TextColors[] = {TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5}; static const u8 sText_OutOf30[] = _("/30"); -static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal"); -static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); -static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); -static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz"); -static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz"); -static const u16 sDisplayMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/display_menu.gbapal"); // Unused -static const u32 sDisplayMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/display_menu.bin.lz"); - -static const u16 sPkmnData_Tilemap[] = -{ - 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, - 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, -}; - +static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal"); +static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); +static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); +static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz"); +static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz"); +static const u16 sDisplayMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/display_menu.gbapal"); // Unused +static const u32 sDisplayMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/display_menu.bin.lz"); +static const u16 sPkmnData_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data.bin"); // sInterface_Pal - parts of the display frame, "PkmnData"'s normal color, Close Box -static const u16 sInterface_Pal[] = INCBIN_U16("graphics/pokemon_storage/interface.gbapal"); -static const u16 sPkmnDataGray_Pal[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data_gray.gbapal"); -static const u16 sBg_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg.gbapal"); -static const u16 sBgMoveItems_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg_move_items.gbapal"); - -static const u16 sCloseBoxButton_Tilemap[] = -{ - 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182, - 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, - 0x018a, 0x018b, 0x018c, 0x018d -}; -static const u16 sPartySlotFilled_Tilemap[] = -{ - 0x1140, 0x1141, 0x1141, 0x1142, 0x1150, 0x1151, 0x1151, 0x1152, 0x1160, 0x1161, 0x1161, 0x1162, -}; -static const u16 sPartySlotEmpty_Tilemap[] = -{ - 0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165, -}; - -static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal"); -static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp"); -static const u16 sUnused_Pal[] = INCBIN_U16("graphics/pokemon_storage/unused.gbapal"); -static const u16 sUnknown_Pal[] = INCBIN_U16("graphics/pokemon_storage/unknown.gbapal"); +static const u16 sInterface_Pal[] = INCBIN_U16("graphics/pokemon_storage/interface.gbapal"); +static const u16 sPkmnDataGray_Pal[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data_gray.gbapal"); +static const u16 sBg_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg.gbapal"); +static const u16 sBgMoveItems_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg_move_items.gbapal"); +static const u16 sCloseBoxButton_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/close_box_button.bin"); +static const u16 sPartySlotFilled_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_filled.bin"); +static const u16 sPartySlotEmpty_Tilemap[] = INCBIN_U16("graphics/pokemon_storage/party_slot_empty.bin"); +static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal"); +static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp"); +static const u16 sUnused_Pal[] = INCBIN_U16("graphics/pokemon_storage/unused.gbapal"); +static const u16 sTextWindows_Pal[] = INCBIN_U16("graphics/pokemon_storage/text_windows.gbapal"); static const struct WindowTemplate sWindowTemplates[] = { - { + // The panel below the currently displayed Pokémon + [WIN_DISPLAY_INFO] = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 11, @@ -991,7 +980,7 @@ static const struct WindowTemplate sWindowTemplates[] = .paletteNum = 3, .baseBlock = 0xC0, }, - { + [WIN_MESSAGE] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 17, @@ -1000,7 +989,7 @@ static const struct WindowTemplate sWindowTemplates[] = .paletteNum = 15, .baseBlock = 0x14, }, - { + [WIN_ITEM_DESC] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 13, @@ -1350,7 +1339,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero windowId = AddWindow(&winTemplate); FillWindowPixelBuffer(windowId, PIXEL_FILL(zero2)); tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); - tileData2 = (winTemplate.width * 32) + tileData1; + tileData2 = (winTemplate.width * TILE_SIZE_4BPP) + tileData1; if (!zero1) txtColor[0] = TEXT_COLOR_TRANSPARENT; @@ -1386,7 +1375,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero // Unused static void UnusedDrawTextWindow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor) { - u32 tileSize; + u32 tilesSize; u8 windowId; u8 txtColor[3]; u8 *tileData1, *tileData2; @@ -1394,17 +1383,17 @@ static void UnusedDrawTextWindow(const u8 *string, void *dst, u16 offset, u8 bgC winTemplate.width = StringLength_Multibyte(string); winTemplate.height = 2; - tileSize = winTemplate.width * 32; + tilesSize = winTemplate.width * TILE_SIZE_4BPP; windowId = AddWindow(&winTemplate); FillWindowPixelBuffer(windowId, PIXEL_FILL(bgColor)); tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); - tileData2 = (winTemplate.width * 32) + tileData1; + tileData2 = (winTemplate.width * TILE_SIZE_4BPP) + tileData1; txtColor[0] = bgColor; txtColor[1] = fgColor; txtColor[2] = shadowColor; AddTextPrinterParameterized4(windowId, FONT_NORMAL, 0, 2, 0, 0, txtColor, TEXT_SKIP_DRAW, string); - CpuCopy16(tileData1, dst, tileSize); - CpuCopy16(tileData2, dst + offset, tileSize); + CpuCopy16(tileData1, dst, tilesSize); + CpuCopy16(tileData2, dst + offset, tilesSize); RemoveWindow(windowId); } @@ -2138,10 +2127,10 @@ static void Task_InitPokeStorage(u8 taskId) } break; case 2: - PutWindowTilemap(0); - ClearWindowTilemap(1); + PutWindowTilemap(WIN_DISPLAY_INFO); + ClearWindowTilemap(WIN_MESSAGE); CpuFill32(0, (void *)VRAM, 0x200); - LoadUserWindowBorderGfx(1, 0xB, 0xE0); + LoadUserWindowBorderGfx(WIN_MESSAGE, 0xB, 0xE0); break; case 3: ResetAllBgCoords(); @@ -3864,7 +3853,7 @@ static void InitPalettesAndSprites(void) { LoadPalette(sInterface_Pal, 0, sizeof(sInterface_Pal)); LoadPalette(sPkmnDataGray_Pal, 0x20, sizeof(sPkmnDataGray_Pal)); - LoadPalette(sUnknown_Pal, 0xF0, sizeof(sUnknown_Pal)); + LoadPalette(sTextWindows_Pal, 0xF0, sizeof(sTextWindows_Pal)); if (sStorage->boxOption != OPTION_MOVE_ITEMS) LoadPalette(sBg_Pal, 0x30, sizeof(sBg_Pal)); else @@ -3972,7 +3961,7 @@ static void CreateDisplayMonSprite(void) sStorage->displayMonSprite = &gSprites[spriteId]; sStorage->displayMonPalOffset = palSlot * 16 + 0x100; - sStorage->displayMonTilePtr = (void*) OBJ_VRAM0 + tileStart * 32; + sStorage->displayMonTilePtr = (void*) OBJ_VRAM0 + tileStart * TILE_SIZE_4BPP; } while (0); if (sStorage->displayMonSprite == NULL) @@ -4003,23 +3992,23 @@ static void LoadDisplayMonGfx(u16 species, u32 pid) static void PrintDisplayMonInfo(void) { - FillWindowPixelBuffer(0, PIXEL_FILL(1)); + FillWindowPixelBuffer(WIN_DISPLAY_INFO, PIXEL_FILL(1)); if (sStorage->boxOption != OPTION_MOVE_ITEMS) { - AddTextPrinterParameterized(0, FONT_NORMAL, sStorage->displayMonNameText, 6, 0, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 15, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 29, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_SMALL, sStorage->displayMonItemName, 6, 43, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_NORMAL, sStorage->displayMonNameText, 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 15, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 29, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SMALL, sStorage->displayMonItemName, 6, 43, TEXT_SKIP_DRAW, NULL); } else { - AddTextPrinterParameterized(0, FONT_SMALL, sStorage->displayMonItemName, 6, 0, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_NORMAL, sStorage->displayMonNameText, 6, 13, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 28, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(0, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 42, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SMALL, sStorage->displayMonItemName, 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_NORMAL, sStorage->displayMonNameText, 6, 13, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 28, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 42, TEXT_SKIP_DRAW, NULL); } - CopyWindowToVram(0, COPYWIN_GFX); + CopyWindowToVram(WIN_DISPLAY_INFO, COPYWIN_GFX); if (sStorage->displayMonSpecies != SPECIES_NONE) { UpdateMonMarkingTiles(sStorage->displayMonMarkings, sStorage->markingComboTilesPtr); @@ -4280,7 +4269,7 @@ static void UpdateBoxToSendMons(void) static void InitPokeStorageBg0(void) { SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29)); - LoadUserWindowBorderGfx(1, 2, 208); + LoadUserWindowBorderGfx(WIN_MESSAGE, 2, 208); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); CopyBgTilemapBufferToVram(0); } @@ -4319,11 +4308,11 @@ static void PrintMessage(u8 id) } DynamicPlaceholderTextUtil_ExpandPlaceholders(sStorage->messageText, sMessages[id].text); - FillWindowPixelBuffer(1, PIXEL_FILL(1)); - AddTextPrinterParameterized(1, FONT_NORMAL, sStorage->messageText, 0, 1, TEXT_SKIP_DRAW, NULL); - DrawTextBorderOuter(1, 2, 14); - PutWindowTilemap(1); - CopyWindowToVram(1, COPYWIN_GFX); + FillWindowPixelBuffer(WIN_MESSAGE, PIXEL_FILL(1)); + AddTextPrinterParameterized(WIN_MESSAGE, FONT_NORMAL, sStorage->messageText, 0, 1, TEXT_SKIP_DRAW, NULL); + DrawTextBorderOuter(WIN_MESSAGE, 2, 14); + PutWindowTilemap(WIN_MESSAGE); + CopyWindowToVram(WIN_MESSAGE, COPYWIN_GFX); ScheduleBgCopyTilemapToVram(0); } @@ -4335,7 +4324,7 @@ static void ShowYesNoWindow(s8 cursorPos) static void ClearBottomWindow(void) { - ClearStdWindowAndFrameToTransparent(1, FALSE); + ClearStdWindowAndFrameToTransparent(WIN_MESSAGE, FALSE); ScheduleBgCopyTilemapToVram(0); } @@ -5132,7 +5121,7 @@ static u16 TryLoadMonIconTiles(u16 species) sStorage->iconSpeciesList[i] = species; sStorage->numIconsPerSpecies[i]++; offset = 16 * i; - CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + offset * 32, 0x200); + CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + offset * TILE_SIZE_4BPP, 0x200); return offset; } @@ -8757,7 +8746,7 @@ static void CreateItemIconSprites(void) { spriteSheet.tag = GFXTAG_ITEM_ICON_0 + i; LoadCompressedSpriteSheet(&spriteSheet); - sStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void*)(OBJ_VRAM0); + sStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void*)(OBJ_VRAM0); sStorage->itemIcons[i].palIndex = AllocSpritePalette(PALTAG_ITEM_ICON_0 + i); sStorage->itemIcons[i].palIndex *= 16; sStorage->itemIcons[i].palIndex += 0x100; @@ -9203,8 +9192,8 @@ static void PrintItemDescription(void) else description = ItemId_GetDescription(sStorage->displayMonItemId); - FillWindowPixelBuffer(2, PIXEL_FILL(1)); - AddTextPrinterParameterized5(2, FONT_NORMAL, description, 4, 0, 0, NULL, 0, 1); + FillWindowPixelBuffer(WIN_ITEM_DESC, PIXEL_FILL(1)); + AddTextPrinterParameterized5(WIN_ITEM_DESC, FONT_NORMAL, description, 4, 0, 0, NULL, 0, 1); } static void InitItemInfoWindow(void) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index c5aeb6b47..10c69a422 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -365,7 +365,7 @@ struct TilemapCtrl u8 field_9; }; -static const u16 sStatusTilemap[] = INCBIN_U16("graphics/interface/status_tilemap.bin"); +static const u16 sStatusTilemap[] = INCBIN_U16("graphics/summary_screen/status_tilemap.bin"); static const struct TilemapCtrl sStatusTilemapCtrl1 = { sStatusTilemap, 1, 10, 2, 0, 18 @@ -376,11 +376,11 @@ static const struct TilemapCtrl sStatusTilemapCtrl2 = }; static const struct TilemapCtrl sBattleMoveTilemapCtrl = { - gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45 + gSummaryScreen_MoveEffect_Battle_Tilemap, 0, 10, 7, 0, 45 }; static const struct TilemapCtrl sContestMoveTilemapCtrl = { - gSummaryScreenAppealJam_Tilemap, 0, 10, 7, 0, 45 + gSummaryScreen_MoveEffect_Contest_Tilemap, 0, 10, 7, 0, 45 }; static const s8 sMultiBattleOrder[] = {0, 2, 3, 1, 4, 5}; static const struct WindowTemplate sSummaryTemplate[] = @@ -701,8 +701,8 @@ static const u8 sTextColors[][3] = {0, 7, 8} }; -static const u8 sSummaryAButtonBitmap[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); -static const u8 sSummaryBButtonBitmap[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp"); +static const u8 sAButton_Gfx[] = INCBIN_U8("graphics/summary_screen/a_button.4bpp"); +static const u8 sBButton_Gfx[] = INCBIN_U8("graphics/summary_screen/b_button.4bpp"); static void (*const sTextPrinterFunctions[])(void) = { @@ -1071,7 +1071,7 @@ static const struct SpriteTemplate sSpriteTemplate_StatusCondition = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const u16 sSummaryMarkingsPalette[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); +static const u16 sMarkings_Pal[] = INCBIN_U16("graphics/summary_screen/markings.gbapal"); // code void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) @@ -1312,7 +1312,7 @@ static bool8 DecompressGraphics(void) } break; case 2: - LZDecompressWram(gSummaryPage_InfoCopy_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]); + LZDecompressWram(gSummaryPage_InfoEgg_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]); sMonSummaryScreen->switchCounter++; break; case 3: @@ -2551,6 +2551,7 @@ static void Task_ShowStatusWindow(u8 taskId) } } +// Toggles the "Cancel" window that appears when selecting a move static void TilemapFiveMovesDisplay(u16 *dst, u16 palette, bool8 remove) { u16 i, id; @@ -2561,18 +2562,18 @@ static void TilemapFiveMovesDisplay(u16 *dst, u16 palette, bool8 remove) { for (i = 0; i < 20; i++) { - dst[id + i] = gSummaryScreenWindow_Tilemap[i] + palette; - dst[id + i + 0x20] = gSummaryScreenWindow_Tilemap[i] + palette; - dst[id + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 20] + palette; + dst[id + i] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i] + palette; + dst[id + i + 0x20] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i] + palette; + dst[id + i + 0x40] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i + 20] + palette; } } else // Remove { for (i = 0; i < 20; i++) { - dst[id + i] = gSummaryScreenWindow_Tilemap[i + 20] + palette; - dst[id + i + 0x20] = gSummaryScreenWindow_Tilemap[i + 40] + palette; - dst[id + i + 0x40] = gSummaryScreenWindow_Tilemap[i + 40] + palette; + dst[id + i] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i + 20] + palette; + dst[id + i + 0x20] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i + 40] + palette; + dst[id + i + 0x40] = gSummaryScreen_MoveEffect_Cancel_Tilemap[i + 40] + palette; } } } @@ -2788,8 +2789,8 @@ static void PrintGenderSymbol(struct Pokemon *mon, u16 species) static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) { - // sSummaryBButtonBitmap - 0x80 = sSummaryAButtonBitmap - BlitBitmapToWindow(windowId, (bButton) ? sSummaryBButtonBitmap : sSummaryBButtonBitmap - 0x80, x, 0, 16, 16); + // sBButton_Gfx - sizeof(sBButton_Gfx) = sAButton_Gfx + BlitBitmapToWindow(windowId, (bButton) ? sBButton_Gfx : sBButton_Gfx - sizeof(sBButton_Gfx), x, 0, 16, 16); } static void PrintPageNamesAndStats(void) @@ -4011,7 +4012,7 @@ static void StopPokemonAnimations(void) // A subtle effect, this function stops static void CreateMonMarkingsSprite(struct Pokemon *mon) { - struct Sprite *sprite = CreateMonMarkingAllCombosSprite(TAG_MON_MARKINGS, TAG_MON_MARKINGS, sSummaryMarkingsPalette); + struct Sprite *sprite = CreateMonMarkingAllCombosSprite(TAG_MON_MARKINGS, TAG_MON_MARKINGS, sMarkings_Pal); sMonSummaryScreen->markingsSprite = sprite; if (sprite != NULL) diff --git a/src/region_map.c b/src/region_map.c index 0dc902674..09e2d69bf 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1516,28 +1516,26 @@ static void UnhideRegionMapPlayerIcon(void) } } +#define sY data[0] +#define sX data[1] +#define sVisible data[2] +#define sTimer data[7] + static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite) { sprite->x2 = -2 * gRegionMap->scrollX; sprite->y2 = -2 * gRegionMap->scrollY; - sprite->data[0] = sprite->y + sprite->y2 + sprite->centerToCornerVecY; - sprite->data[1] = sprite->x + sprite->x2 + sprite->centerToCornerVecX; - if (sprite->data[0] < -8 || sprite->data[0] > 0xa8 || sprite->data[1] < -8 || sprite->data[1] > 0xf8) - { - sprite->data[2] = FALSE; - } + sprite->sY = sprite->y + sprite->y2 + sprite->centerToCornerVecY; + sprite->sX = sprite->x + sprite->x2 + sprite->centerToCornerVecX; + if (sprite->sY < -8 || sprite->sY > DISPLAY_HEIGHT + 8 || sprite->sX < -8 || sprite->sX > DISPLAY_WIDTH + 8) + sprite->sVisible = FALSE; else - { - sprite->data[2] = TRUE; - } - if (sprite->data[2] == TRUE) - { + sprite->sVisible = TRUE; + + if (sprite->sVisible == TRUE) SpriteCB_PlayerIcon(sprite); - } else - { sprite->invisible = TRUE; - } } static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite) @@ -1549,9 +1547,9 @@ static void SpriteCB_PlayerIcon(struct Sprite *sprite) { if (gRegionMap->blinkPlayerIcon) { - if (++sprite->data[7] > 16) + if (++sprite->sTimer > 16) { - sprite->data[7] = 0; + sprite->sTimer = 0; sprite->invisible = sprite->invisible ? FALSE : TRUE; } } @@ -1567,6 +1565,11 @@ void TrySetPlayerIconBlink(void) gRegionMap->blinkPlayerIcon = TRUE; } +#undef sY +#undef sX +#undef sVisible +#undef sTimer + u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength) { u8 *str; @@ -1709,7 +1712,7 @@ void CB2_OpenFlyMap(void) gMain.state++; break; case 7: - LoadPalette(sRegionMapFramePal, 0x10, 0x20); + LoadPalette(sRegionMapFramePal, 0x10, sizeof(sRegionMapFramePal)); PutWindowTilemap(2); FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized(2, FONT_NORMAL, gText_FlyToWhere, 0, 1, 0, NULL); diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 23fbb3e1d..f839d22c3 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -219,14 +219,14 @@ static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = {10, 19, GATE_SHAPE_L3, GATE_ORIENTATION_180}, }; -static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/misc/rotating_gate_1.4bpp"); -static const u8 sRotatingGateTiles_2[] = INCBIN_U8("graphics/misc/rotating_gate_2.4bpp"); -static const u8 sRotatingGateTiles_3[] = INCBIN_U8("graphics/misc/rotating_gate_3.4bpp"); -static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/misc/rotating_gate_4.4bpp"); -static const u8 sRotatingGateTiles_5[] = INCBIN_U8("graphics/misc/rotating_gate_5.4bpp"); -static const u8 sRotatingGateTiles_6[] = INCBIN_U8("graphics/misc/rotating_gate_6.4bpp"); -static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/misc/rotating_gate_7.4bpp"); -static const u8 sRotatingGateTiles_8[] = INCBIN_U8("graphics/misc/rotating_gate_8.4bpp"); +static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/l1.4bpp"); +static const u8 sRotatingGateTiles_2[] = INCBIN_U8("graphics/rotating_gates/l2.4bpp"); +static const u8 sRotatingGateTiles_3[] = INCBIN_U8("graphics/rotating_gates/l3.4bpp"); +static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/l4.4bpp"); +static const u8 sRotatingGateTiles_5[] = INCBIN_U8("graphics/rotating_gates/t1.4bpp"); +static const u8 sRotatingGateTiles_6[] = INCBIN_U8("graphics/rotating_gates/t2.4bpp"); +static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/t3.4bpp"); +static const u8 sRotatingGateTiles_8[] = INCBIN_U8("graphics/rotating_gates/t4.4bpp"); static const struct OamData sOamData_RotatingGateLarge = { @@ -684,13 +684,11 @@ static void RotatingGate_LoadPuzzleConfig(void) { case PUZZLE_FORTREE_CITY_GYM: gRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; - gRotatingGate_PuzzleCount = - sizeof(sRotatingGate_FortreePuzzleConfig) / sizeof(struct RotatingGatePuzzle); + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); break; case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: gRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; - gRotatingGate_PuzzleCount = - sizeof(sRotatingGate_TrickHousePuzzleConfig) / sizeof(struct RotatingGatePuzzle); + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); break; case PUZZLE_NONE: default: @@ -698,9 +696,7 @@ static void RotatingGate_LoadPuzzleConfig(void) } for (i = 0; i < ROTATING_GATE_PUZZLE_MAX - 1; i++) - { gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; - } } static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) @@ -773,7 +769,7 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) { affineAnimation = orientation + 4; - if (GetPlayerSpeed() != 1) + if (GetPlayerSpeed() != PLAYER_SPEED_NORMAL) affineAnimation += 8; PlaySE(SE_ROTATING_GATE); @@ -783,7 +779,7 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) { affineAnimation = orientation + 8; - if (GetPlayerSpeed() != 1) + if (GetPlayerSpeed() != PLAYER_SPEED_NORMAL) affineAnimation += 8; PlaySE(SE_ROTATING_GATE); diff --git a/src/scrcmd.c b/src/scrcmd.c index 0e70b4537..9f771a4d7 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -999,7 +999,7 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) +bool8 ScrCmd_applymovementat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); const void *movementScript = (const void *)ScriptReadWord(ctx); @@ -1028,7 +1028,7 @@ bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovementat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup; @@ -1052,7 +1052,7 @@ bool8 ScrCmd_removeobject(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) +bool8 ScrCmd_removeobjectat(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1070,7 +1070,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) +bool8 ScrCmd_addobjectat(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1108,7 +1108,7 @@ bool8 ScrCmd_copyobjectxytoperm(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_showobject_at(struct ScriptContext *ctx) +bool8 ScrCmd_showobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1118,7 +1118,7 @@ bool8 ScrCmd_showobject_at(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hideobject_at(struct ScriptContext *ctx) +bool8 ScrCmd_hideobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -2046,7 +2046,7 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) if (!isImpassable) MapGridSetMetatileIdAt(x, y, tileId); else - MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, tileId | MAPGRID_COLLISION_MASK); return FALSE; } diff --git a/src/secret_base.c b/src/secret_base.c index 8fc97141f..9398c4bb2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -305,7 +305,7 @@ static void FindMetatileIdMapCoords(s16 *x, s16 *y, u16 metatileId) { for (i = 0; i < mapLayout->width; i++) { - if ((mapLayout->map[j * mapLayout->width + i] & METATILE_ID_MASK) == metatileId) + if ((mapLayout->map[j * mapLayout->width + i] & MAPGRID_METATILE_ID_MASK) == metatileId) { *x = i; *y = j; @@ -330,7 +330,7 @@ void ToggleSecretBaseEntranceMetatile(void) { if (sSecretBaseEntranceMetatiles[i].closedMetatileId == metatileId) { - MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | MAPGRID_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); return; } @@ -341,7 +341,7 @@ void ToggleSecretBaseEntranceMetatile(void) { if (sSecretBaseEntranceMetatiles[i].openMetatileId == metatileId) { - MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].closedMetatileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].closedMetatileId | MAPGRID_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); return; } @@ -396,7 +396,7 @@ void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events) { if (sSecretBaseEntranceMetatiles[i].closedMetatileId == tile_id) { - MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | MAPGRID_COLLISION_MASK); break; } } @@ -475,7 +475,7 @@ static void EnterNewlyCreatedSecretBase_StartFadeIn(void) FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); x += MAP_OFFSET; y += MAP_OFFSET; - MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | MAPGRID_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); FadeInFromBlack(); CreateTask(EnterNewlyCreatedSecretBase_WaitFadeIn, 0); @@ -536,13 +536,13 @@ void InitSecretBaseAppearance(bool8 hidePC) { // Another player's secret base. Change PC type to the "Register" PC. FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); - MapGridSetMetatileIdAt(x + MAP_OFFSET, y + MAP_OFFSET, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x + MAP_OFFSET, y + MAP_OFFSET, METATILE_SecretBase_RegisterPC | MAPGRID_COLLISION_MASK); } else if (hidePC == TRUE && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { // Change PC to regular ground tile. FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); - MapGridSetMetatileIdAt(x + MAP_OFFSET, y + MAP_OFFSET, METATILE_SecretBase_Ground | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x + MAP_OFFSET, y + MAP_OFFSET, METATILE_SecretBase_Ground | MAPGRID_COLLISION_MASK); } } } @@ -838,7 +838,7 @@ static void ClosePlayerSecretBaseEntrance(void) { MapGridSetMetatileIdAt(events->bgEvents[i].x + MAP_OFFSET, events->bgEvents[i].y + MAP_OFFSET, - sSecretBaseEntranceMetatiles[j].closedMetatileId | METATILE_COLLISION_MASK); + sSecretBaseEntranceMetatiles[j].closedMetatileId | MAPGRID_COLLISION_MASK); break; } } diff --git a/src/shop.c b/src/shop.c index f41ae315f..700a53e37 100755 --- a/src/shop.c +++ b/src/shop.c @@ -674,9 +674,9 @@ static void BuyMenuInitBgs(void) static void BuyMenuDecompressBgGraphics(void) { - DecompressAndCopyTileDataToVram(1, gBuyMenuFrame_Gfx, 0x3A0, 0x3E3, 0); - LZDecompressWram(gBuyMenuFrame_Tilemap, sShopData->tilemapBuffers[0]); - LoadCompressedPalette(gMenuMoneyPal, 0xC0, 0x20); + DecompressAndCopyTileDataToVram(1, gShopMenu_Gfx, 0x3A0, 0x3E3, 0); + LZDecompressWram(gShopMenu_Tilemap, sShopData->tilemapBuffers[0]); + LoadCompressedPalette(gShopMenu_Pal, 0xC0, 0x20); } static void BuyMenuInitWindows(void) @@ -743,7 +743,7 @@ static void BuyMenuDrawMapBg(void) if (BuyMenuCheckForOverlapWithMenuBg(i, j) == TRUE) metatileLayerType = MapGridGetMetatileLayerTypeAt(x + i, y + j); else - metatileLayerType = 1; + metatileLayerType = METATILE_LAYER_TYPE_COVERED; if (metatile < NUM_METATILES_IN_PRIMARY) { @@ -764,15 +764,15 @@ static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLaye switch (metatileLayerType) { - case 0: + case METATILE_LAYER_TYPE_NORMAL: BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[3], offset1, offset2, src); BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[1], offset1, offset2, src + 4); break; - case 1: + case METATILE_LAYER_TYPE_COVERED: BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[2], offset1, offset2, src); BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[3], offset1, offset2, src + 4); break; - case 2: + case METATILE_LAYER_TYPE_SPLIT: BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[2], offset1, offset2, src); BuyMenuDrawMapMetatileLayer(sShopData->tilemapBuffers[1], offset1, offset2, src + 4); break; @@ -866,7 +866,7 @@ static void BuyMenuDrawObjectEvents(void) static bool8 BuyMenuCheckIfObjectEventOverlapsMenuBg(s16 *object) { - if (!BuyMenuCheckForOverlapWithMenuBg(object[X_COORD], object[Y_COORD] + 2) && object[LAYER_TYPE] != MB_SECRET_BASE_WALL) + if (!BuyMenuCheckForOverlapWithMenuBg(object[X_COORD], object[Y_COORD] + 2) && object[LAYER_TYPE] != METATILE_LAYER_TYPE_COVERED) { return TRUE; } diff --git a/src/starter_choose.c b/src/starter_choose.c index ca393c4d8..81a88e771 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -53,17 +53,17 @@ static u16 sStarterLabelWindowId; const u16 gBirchBagGrassPal[][16] = { - INCBIN_U16("graphics/misc/birch_bag.gbapal"), - INCBIN_U16("graphics/misc/birch_grass.gbapal"), + INCBIN_U16("graphics/starter_choose/birch_bag.gbapal"), + INCBIN_U16("graphics/starter_choose/birch_grass.gbapal"), }; -static const u16 sPokeballSelection_Pal[] = INCBIN_U16("graphics/misc/pokeball_selection.gbapal"); -static const u16 sStarterCircle_Pal[] = INCBIN_U16("graphics/misc/starter_circle.gbapal"); -const u32 gBirchBagTilemap[] = INCBIN_U32("graphics/misc/birch_bag_map.bin.lz"); -const u32 gBirchGrassTilemap[] = INCBIN_U32("graphics/misc/birch_grass_map.bin.lz"); -const u32 gBirchHelpGfx[] = INCBIN_U32("graphics/misc/birch_help.4bpp.lz"); // Birch bag and grass combined -const u32 gPokeballSelection_Gfx[] = INCBIN_U32("graphics/misc/pokeball_selection.4bpp.lz"); -static const u32 sStarterCircle_Gfx[] = INCBIN_U32("graphics/misc/starter_circle.4bpp.lz"); +static const u16 sPokeballSelection_Pal[] = INCBIN_U16("graphics/starter_choose/pokeball_selection.gbapal"); +static const u16 sStarterCircle_Pal[] = INCBIN_U16("graphics/starter_choose/starter_circle.gbapal"); +const u32 gBirchBagTilemap[] = INCBIN_U32("graphics/starter_choose/birch_bag.bin.lz"); +const u32 gBirchGrassTilemap[] = INCBIN_U32("graphics/starter_choose/birch_grass.bin.lz"); +const u32 gBirchHelpGfx[] = INCBIN_U32("graphics/starter_choose/birch_help.4bpp.lz"); // Birch bag and grass combined +const u32 gPokeballSelection_Gfx[] = INCBIN_U32("graphics/starter_choose/pokeball_selection.4bpp.lz"); +static const u32 sStarterCircle_Gfx[] = INCBIN_U32("graphics/starter_choose/starter_circle.4bpp.lz"); static const struct WindowTemplate sWindowTemplates[] = { diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 3ada262e5..39c6202a0 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -199,7 +199,7 @@ static const u16 *const *const sPrizeListSets[] = sPrizeLists2 }; -static const u16 sEReader_Pal[] = INCBIN_U16("graphics/misc/trainer_hill_ereader.gbapal"); +static const u16 sEReader_Pal[] = INCBIN_U16("graphics/trainer_hill/ereader.gbapal"); static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; static const struct TrHillTag *const sDataPerTag[] = @@ -677,9 +677,9 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride i impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1); metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + NUM_METATILES_IN_PRIMARY; - elevation = 3 << METATILE_ELEVATION_SHIFT; + elevation = 3 << MAPGRID_ELEVATION_SHIFT; - return ((impassable << METATILE_COLLISION_SHIFT) & METATILE_COLLISION_MASK) | elevation | (metatile & METATILE_ID_MASK); + return ((impassable << MAPGRID_COLLISION_SHIFT) & MAPGRID_COLLISION_MASK) | elevation | (metatile & MAPGRID_METATILE_ID_MASK); } void GenerateTrainerHillFloorLayout(u16 *mapArg) diff --git a/src/trainer_see.c b/src/trainer_see.c index ce06c5e9c..dc6c3b917 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -59,9 +59,9 @@ bool8 gTrainerApproachedPlayer; EWRAM_DATA u8 gApproachingTrainerId = 0; // const rom data -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"); +static const u8 sEmotion_ExclamationMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_exclamation.4bpp"); +static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_question.4bpp"); +static const u8 sEmotion_HeartGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_heart.4bpp"); static u8 (*const sDirectionalApproachDistanceFuncs[])(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) = { @@ -367,8 +367,6 @@ static u8 GetTrainerApproachDistanceEast(struct ObjectEvent *trainerObj, s16 ran return 0; } -#define COLLISION_MASK (~1) - static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 approachDistance, u8 direction) { s16 x, y; @@ -385,8 +383,9 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap MoveCoords(direction, &x, &y); for (i = 0; i < approachDistance - 1; i++, MoveCoords(direction, &x, &y)) { + // Check for collisions on approach, ignoring the "out of range" collision for regular movement collision = GetCollisionFlagsAtCoords(trainerObj, x, y, direction); - if (collision != 0 && (collision & COLLISION_MASK)) + if (collision != 0 && (collision & ~(1 << (COLLISION_OUTSIDE_RANGE - 1)))) return 0; } diff --git a/src/tv.c b/src/tv.c index 710b98968..b9d064026 100644 --- a/src/tv.c +++ b/src/tv.c @@ -852,7 +852,7 @@ void UpdateTVScreensOnMap(int width, int height) } } -static void SetTVMetatilesOnMap(int width, int height, u16 tileId) +static void SetTVMetatilesOnMap(int width, int height, u16 metatileId) { int x; int y; @@ -862,7 +862,7 @@ static void SetTVMetatilesOnMap(int width, int height, u16 tileId) for (x = 0; x < width; x++) { if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION) - MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, metatileId | MAPGRID_COLLISION_MASK); } } } diff --git a/src/wallclock.c b/src/wallclock.c index 759b1d11f..5e0fae3a1 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -41,6 +41,8 @@ static void SpriteCB_HourHand(struct Sprite *sprite); static void SpriteCB_PMIndicator(struct Sprite *sprite); static void SpriteCB_AMIndicator(struct Sprite *sprite); +#define sTaskId data[0] + #define tMinuteHandAngle data[0] #define tHourHandAngle data[1] #define tHours data[2] @@ -696,21 +698,21 @@ void CB2_StartWallClock(void) gTasks[taskId].tHourHandAngle = 300; spriteId = CreateSprite(&sSpriteTemplate_MinuteHand, 120, 80, 1); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 0; spriteId = CreateSprite(&sSpriteTemplate_HourHand, 120, 80, 0); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 1; spriteId = CreateSprite(&sSpriteTemplate_PM, 120, 80, 2); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].data[1] = 45; spriteId = CreateSprite(&sSpriteTemplate_AM, 120, 80, 2); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].data[1] = 90; WallClockInit(); @@ -744,21 +746,21 @@ void CB2_ViewWallClock(void) } spriteId = CreateSprite(&sSpriteTemplate_MinuteHand, 120, 80, 1); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 0; spriteId = CreateSprite(&sSpriteTemplate_HourHand, 120, 80, 0); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 1; spriteId = CreateSprite(&sSpriteTemplate_PM, 120, 80, 2); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].data[1] = angle1; spriteId = CreateSprite(&sSpriteTemplate_AM, 120, 80, 2); - gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].data[1] = angle2; WallClockInit(); @@ -1015,7 +1017,7 @@ static void InitClockWithRtc(u8 taskId) static void SpriteCB_MinuteHand(struct Sprite *sprite) { - u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle; + u16 angle = gTasks[sprite->sTaskId].tMinuteHandAngle; s16 sin = Sin2(angle) / 16; s16 cos = Cos2(angle) / 16; u16 x, y; @@ -1035,7 +1037,7 @@ static void SpriteCB_MinuteHand(struct Sprite *sprite) static void SpriteCB_HourHand(struct Sprite *sprite) { - u16 angle = gTasks[sprite->data[0]].tHourHandAngle; + u16 angle = gTasks[sprite->sTaskId].tHourHandAngle; s16 sin = Sin2(angle) / 16; s16 cos = Cos2(angle) / 16; u16 x, y; @@ -1053,58 +1055,44 @@ static void SpriteCB_HourHand(struct Sprite *sprite) sprite->y2 = y; } +#define sAngle data[1] + static void SpriteCB_PMIndicator(struct Sprite *sprite) { - if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM) + if (gTasks[sprite->sTaskId].tPeriod != PERIOD_AM) { - if (sprite->data[1] >= 60 && sprite->data[1] < 90) - { - sprite->data[1] += 5; - } - if (sprite->data[1] < 60) - { - sprite->data[1]++; - } + if (sprite->sAngle >= 60 && sprite->sAngle < 90) + sprite->sAngle += 5; + if (sprite->sAngle < 60) + sprite->sAngle++; } else { - if (sprite->data[1] >= 46 && sprite->data[1] < 76) - { - sprite->data[1] -= 5; - } - if (sprite->data[1] > 75) - { - sprite->data[1]--; - } + if (sprite->sAngle >= 46 && sprite->sAngle < 76) + sprite->sAngle -= 5; + if (sprite->sAngle > 75) + sprite->sAngle--; } - sprite->x2 = Cos2(sprite->data[1]) * 30 / 0x1000; - sprite->y2 = Sin2(sprite->data[1]) * 30 / 0x1000; + sprite->x2 = Cos2(sprite->sAngle) * 30 / 0x1000; + sprite->y2 = Sin2(sprite->sAngle) * 30 / 0x1000; } static void SpriteCB_AMIndicator(struct Sprite *sprite) { - if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM) + if (gTasks[sprite->sTaskId].tPeriod != PERIOD_AM) { - if (sprite->data[1] >= 105 && sprite->data[1] < 135) - { - sprite->data[1] += 5; - } - if (sprite->data[1] < 105) - { - sprite->data[1]++; - } + if (sprite->sAngle >= 105 && sprite->sAngle < 135) + sprite->sAngle += 5; + if (sprite->sAngle < 105) + sprite->sAngle++; } else { - if (sprite->data[1] >= 91 && sprite->data[1] < 121) - { - sprite->data[1] -= 5; - } - if (sprite->data[1] > 120) - { - sprite->data[1]--; - } + if (sprite->sAngle >= 91 && sprite->sAngle < 121) + sprite->sAngle -= 5; + if (sprite->sAngle > 120) + sprite->sAngle--; } - sprite->x2 = Cos2(sprite->data[1]) * 30 / 0x1000; - sprite->y2 = Sin2(sprite->data[1]) * 30 / 0x1000; + sprite->x2 = Cos2(sprite->sAngle) * 30 / 0x1000; + sprite->y2 = Sin2(sprite->sAngle) * 30 / 0x1000; } diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index ffb86488a..1fbd83fcd 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -51,9 +51,9 @@ static void Task_WirelessCommunicationScreen(u8); static void WCSS_AddTextPrinterParameterized(u8, u8, const u8 *, u8, u8, u8); static bool32 UpdateCommunicationCounts(u32 *, u32 *, u32 *, u8); -static const u16 sBgTiles_Pal[] = INCBIN_U16("graphics/interface/wireless_info_screen.gbapal"); -static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/interface/wireless_info_screen.4bpp.lz"); -static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/interface/wireless_info_screen.bin.lz"); +static const u16 sBgTiles_Pal[] = INCBIN_U16("graphics/link/wireless_info_screen.gbapal"); +static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/link/wireless_info_screen.4bpp.lz"); +static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/link/wireless_info_screen.bin.lz"); static const struct BgTemplate sBgTemplates[] = { { diff --git a/sym_bss.txt b/sym_bss.txt index 75da960bf..3a23e7478 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -55,6 +55,7 @@ .include "src/ereader_helpers.o" .include "src/faraway_island.o" .include "src/m4a_1.o" + .include "data/sound_data.o" .include "src/agb_flash.o" .include "src/siirtc.o" .include "*libgcc.a:dp-bit.o" diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index d767b469e..3eab98f2b 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -230,7 +230,7 @@ string generate_map_events_text(Json map_data) { text << bgs_label << ":\n"; for (auto &bg_event : map_data["bg_events"].array_items()) { if (bg_event["type"] == "sign") { - text << "\tbg_event " + text << "\tbg_sign_event " << bg_event["x"].int_value() << ", " << bg_event["y"].int_value() << ", " << bg_event["elevation"].int_value() << ", " From 35de8b1c0694308b0e1f12712853cdeae8ef9821 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Fri, 11 Feb 2022 11:09:34 -0800 Subject: [PATCH 19/71] Squashed commit of the following: commit fabad022015fe260e9e21cbffee87c1f1ae3649a Merge: 087244104 eb07617a2 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Thu Feb 10 16:03:45 2022 -0800 Merge branch 'pret:master' into master commit eb07617a2007edcd775ea4f1ee508bc1d76a9d7b Merge: 7d2344c07 a86a27918 Author: GriffinR Date: Wed Feb 9 08:34:10 2022 -0500 Merge pull request #1623 from kiliwily/master Update money.c commit a86a279184ce1013ca0b41a079419192ac07e736 Author: kiliwily <69381603+kiliwily@users.noreply.github.com> Date: Sun Feb 6 16:25:56 2022 +0100 Update money.c commit 7d2344c07bea9a46993a92d4611fba80545acdd2 Merge: f494238a9 dc7d86f02 Author: GriffinR Date: Wed Feb 2 22:09:36 2022 -0500 Merge pull request #1616 from GriffinRichards/missing-req Add missing :req, remove old macros commit f494238a9d1f8f486891845a43983e187dbeadf0 Merge: e30b16f0f 1ff0b0efa Author: GriffinR Date: Sun Jan 30 23:00:05 2022 -0500 Merge pull request #1621 from GriffinRichards/constants-collision Add missing collision constant usage commit 1ff0b0efa96180a774273a4c222a805237e6e7c6 Author: GriffinR Date: Sat Jan 29 21:13:46 2022 -0500 Add missing collision constant usage commit e30b16f0fd1c5e7b81e5ca62064869fa036e5a58 Author: GriffinR Date: Wed Jan 26 21:50:15 2022 -0500 Fix Swap_HandleQuitSwappingResposne typo commit 2efbd5f549bd03cfdaea2c84d48d5fb706034464 Merge: 4188dd405 3d0326106 Author: GriffinR Date: Wed Jan 26 17:51:56 2022 -0500 Merge pull request #1608 from GriffinRichards/fix-fieldmap Fix some incorrect fieldmap names commit 4188dd405c07943da9fb6d5c048d5845a94e0669 Merge: 9f2b6ab2f 6470b0d00 Author: GriffinR Date: Wed Jan 26 17:44:26 2022 -0500 Merge pull request #1620 from LOuroboros/gBallSpriteTemplates Used ball constants in gBallSpriteTemplates commit 6470b0d0044c0db27f53a10dede99db7bf51a9fd Author: LOuroboros Date: Wed Jan 26 18:36:21 2022 -0300 Used ball constants in gBallSpriteTemplates commit dc7d86f026c01682bd024fabb0ce206eacb81c35 Author: GriffinR Date: Sun Jan 23 19:26:22 2022 -0500 Add new macro comments commit 2495d1813239cd8d888c160b08c23500ba4759a7 Author: GriffinR Date: Sun Jan 23 18:51:56 2022 -0500 Add missing :req, remove old macros commit 9f2b6ab2f2b7d5937342cef3166a652d882f1d94 Merge: 79dfac92c 2cc301603 Author: GriffinR Date: Sat Jan 22 21:41:37 2022 -0500 Merge pull request #1613 from Kurausukun/m4asymbols Move M4A Track Definitions commit 2cc301603e47ece925deeceaf3c363b7250781ce Author: Kurausukun Date: Sat Jan 22 21:30:39 2022 -0500 lmao whitespace commit 0872441048b8243ad61c25826bf28d0bf315728b Merge: 3c46f3194 79dfac92c Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sat Jan 22 18:28:09 2022 -0800 Merge branch 'pret:master' into master commit 3b756bfb3dd23bbdb2fb74606c0b064e92002a45 Author: Kurausukun Date: Sat Jan 22 20:38:41 2022 -0500 fix compilation on modern commit 317e302147672d97bfcfa73efeb8372d797cee95 Author: Kurausukun Date: Sat Jan 22 19:43:11 2022 -0500 fix inconsistent indentation commit 04013fbdf2e3d06ba27ec25111c54798d92bc31d Author: Kurausukun Date: Sat Jan 22 19:41:31 2022 -0500 forgot we could do this commit a83e41b2ccf87fe8b396280b34f71328b191a861 Author: Kurausukun Date: Sat Jan 22 19:37:46 2022 -0500 move m4a track definitions commit 3d0326106ed683911da66eee1bf94becadc7a2db Author: GriffinR Date: Fri Jan 21 12:48:19 2022 -0500 Z coord / height -> elevation commit 79dfac92c9bdd7ea25e31f152c01041eb1ad25b4 Merge: 874317268 30d970441 Author: GriffinR Date: Fri Jan 21 09:55:43 2022 -0500 Merge pull request #1604 from GriffinRichards/clean-spinda Document Spinda spot algorithm commit fb81d9ad4a19b7d653e44787e5647bda794757fd Author: GriffinR Date: Thu Jan 20 23:26:39 2022 -0500 Correct map data comment commit 874317268616ce045afcfcfc8ecafe6480081398 Merge: 062cdbe01 7d75e1631 Author: GriffinR Date: Thu Jan 20 12:11:27 2022 -0500 Merge pull request #1612 from AsparagusEduardo/pret_misc Small documentation and cleanup commit 7d75e16312381074fe4e31cf28f2e5b405a9bc59 Author: Eduardo Quezada D'Ottone Date: Thu Jan 20 12:25:48 2022 -0300 Small documentation and cleanup commit 062cdbe01cbbce5845daba7d1b880c716f3beff8 Merge: a7e6045d7 bd43b905b Author: GriffinR Date: Thu Jan 20 08:53:44 2022 -0500 Merge pull request #1599 from GriffinRichards/fix-tilemaps Break up graphics/interface and graphics/misc commit a7e6045d71d2d21c4fa5a494d112c6b38226eaec Merge: 69759b2d1 f899a02ac Author: GriffinR Date: Wed Jan 19 22:17:37 2022 -0500 Merge pull request #1597 from GriffinRichards/misc-cleanup Miscellaneous fixes commit c4f33f2b2bbddaafff817721d9266273ee619162 Author: GriffinR Date: Wed Jan 19 12:54:55 2022 -0500 TRAVERSABLE->UNUSED, rename MB_SECRET_BASE_OBSTACLE commit e682c12519377741bc55fa55c6b9deb963614ed6 Author: GriffinR Date: Wed Jan 19 12:39:11 2022 -0500 sTileBitAttributes to sparse array, rename MB_UNNUSED_CAVE commit e3b49604d4d8981c9fa599cbc23874ac61036c9e Author: GriffinR Date: Wed Jan 19 10:59:37 2022 -0500 Use metatile layer constants in shop commit 8200fda14e5cddabcd2a4aaddf4f558cfbf898fb Author: GriffinR Date: Wed Jan 19 10:56:54 2022 -0500 Fix decorations metatile attribute names commit a8b466dc80eb22146c6bc517d44fdc133a646555 Author: GriffinR Date: Wed Jan 19 10:15:32 2022 -0500 Disambiguate fieldmap names commit f127e64a3ca2899510622f012bc3823da2c5cd23 Author: GriffinR Date: Wed Jan 19 09:37:12 2022 -0500 Name overworld tilemaps for their bg, add layer type constants commit 30d970441839e8b2473f6962ab9b70f4f8422507 Author: GriffinR Date: Mon Jan 17 17:27:17 2022 -0500 Specify unsigned in spot comment commit 313f14ed63f52b6b4371cabe858c5cde5705cc0f Author: GriffinR Date: Mon Jan 17 17:00:18 2022 -0500 Add Spinda spot color constants commit 177863da4728237c8fef4e6b69417d91d1b003cd Author: GriffinR Date: Mon Jan 17 16:04:02 2022 -0500 Fix typo commit 225147a94f8baf30c6e7db7084c5b8663d52ca3c Author: GriffinR Date: Mon Jan 17 13:19:52 2022 -0500 Document Spinda spot algorithm commit 69759b2d128ea27f3bc9ebdb7e58ea3698d0a491 Merge: 14a11899c 8b920691e Author: GriffinR Date: Sun Jan 16 17:44:58 2022 -0500 Merge pull request #1601 from GriffinRichards/fix-decor-flag Fix FLAG_DECORATION_0 name commit 14a11899cfcc8a053b6fed45356b524097c8aa70 Merge: dad413276 a4d31da92 Author: GriffinR Date: Sun Jan 16 17:37:26 2022 -0500 Merge pull request #1603 from LOuroboros/patch-2 Updated the value of MAX_MAP_DATA_SIZE commit a4d31da9233f238be28c397d7f83c2028bcdffb7 Author: LOuroboros Date: Sun Jan 16 19:22:28 2022 -0300 Updated the value of MAX_MAP_DATA_SIZE commit dad4132762e56eadfa0fe5d7c243587def429f38 Merge: 60162a98b 429d53b95 Author: GriffinR Date: Sun Jan 16 14:03:20 2022 -0500 Merge pull request #1596 from GriffinRichards/player-avatar-arr-const Add missing array constants in field_player_avatar commit 60162a98b9251fda33f4a84912e75ea7dd309eac Merge: 755d9143a 6d6ff9126 Author: GriffinR Date: Sun Jan 16 13:55:16 2022 -0500 Merge pull request #1602 from GriffinRichards/charmap-quote Allow right single quotation mark in charmap commit 6d6ff9126854d5439fb859a74fbe8db4e4d0f96e Author: GriffinR Date: Sun Jan 16 10:29:15 2022 -0500 Allow right single quotation mark in charmap commit 755d9143a6c727d64f4a31418d4c4fdb1a47e110 Merge: 9ded1eb14 fd7457b05 Author: GriffinR Date: Sat Jan 15 12:20:22 2022 -0500 Merge pull request #1600 from GriffinRichards/remove-berry-fix Remove berry fix commit bd43b905b7ce5489224d3a2144504df6f7687f1f Author: GriffinR Date: Fri Jan 14 12:39:00 2022 -0500 Apply palettes to some field effect pngs commit 4dec9b83a3a0b424284dae02506d159931cc1408 Author: GriffinR Date: Fri Jan 14 12:29:30 2022 -0500 Move more graphics out of misc commit 9ded1eb14e4ce38724fccf4f9304913e8f3f4969 Merge: fa2d25d36 1a33187ba Author: GriffinR Date: Fri Jan 14 09:12:05 2022 -0500 Merge pull request #1598 from atasro2/master Give sensical names to Unused_AdjustBgMosaic commit 1a33187badc9e5530f75be99957bfea9daf3f2ff Author: MCboy <16516292+atasro2@users.noreply.github.com> Date: Fri Jan 14 13:48:46 2022 +0330 Move enum to bg.h commit 998900bd1b8394edaeafe7c32debcda62cf06561 Author: MCboy <16516292+atasro2@users.noreply.github.com> Date: Fri Jan 14 13:37:27 2022 +0330 Give sensical names to Unused_AdjustBgMosaic commit fd7457b05a1b109ae42cb4a956266b6acebb5644 Author: GriffinR Date: Thu Jan 13 15:26:20 2022 -0500 Remove berry fix commit f899a02ac642e66ab9b6baa28903921863529171 Author: GriffinR Date: Wed Jan 12 18:34:21 2022 -0500 Use MON_GIVEN_TO_ constants for givemon commit 01af8e877f039a0e1427de5e52442602446719cc Author: GriffinR Date: Tue Jan 11 14:18:22 2022 -0500 Move starter choose out of interface/misc commit 694aa3c65dd4d926616dcab414e8c1647f357c54 Author: GriffinR Date: Tue Jan 11 11:59:24 2022 -0500 Move balls, shop, link, map popups, and bag out of interface commit fa2d25d3665fd499efdc439a79ac05f647a3e5c2 Merge: 4024b3f1b ca9bc34be Author: GriffinR Date: Tue Jan 11 12:26:02 2022 -0500 Merge pull request #1594 from GriffinRichards/pokestorage-clean Misc pokemon_storage_system cleanup commit d782d3544dd3c43ac2034df4a9a445d7ccda1982 Author: GriffinR Date: Tue Jan 11 11:46:58 2022 -0500 Move pokeblock graphics out of interface commit 565dd243098013c8665bc7f95106e2b5657e4e82 Author: GriffinR Date: Tue Jan 11 11:37:13 2022 -0500 Move party menu graphics out of interface commit 7103839a615463eeadeb671ad75436dd2e4a52e3 Author: GriffinR Date: Tue Jan 11 11:14:59 2022 -0500 Move summary screen graphics out of interface, fix some names commit fde18b47746b577c4d2037ab065ce66062da2a67 Author: GriffinR Date: Tue Jan 11 10:42:00 2022 -0500 Fix berry crusher graphics name commit 0a78cb5c9edf7d6b39297a5b4c874d59c6a69b39 Author: GriffinR Date: Tue Jan 11 10:04:47 2022 -0500 Fix some battle dome graphics names commit 49418f8c017bf012e738527c14b3a92edec54d3e Author: GriffinR Date: Tue Jan 11 02:19:20 2022 -0500 Add missing commas commit 3a6c633905c3fddb893aa6484a2cce4f0135ca26 Author: GriffinR Date: Tue Jan 11 02:16:25 2022 -0500 Add seteventmon commit 110fbc559cc658179e127117c68d9eea9474a61a Author: GriffinR Date: Tue Jan 11 02:08:14 2022 -0500 Make item optional for givemon and setwildbattle commit 4024b3f1b3a9d51e42fc8a49cf361bd22484c82f Merge: ded202136 d4111d552 Author: GriffinR Date: Mon Jan 10 14:56:26 2022 -0500 Merge pull request #1590 from GriffinRichards/dex-enum Convert pokedex defines to enums commit 3c46f3194eaf4235ad5cfaa53966559a84214c41 Merge: 4375a8014 ded202136 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sun Jan 9 13:54:52 2022 -0800 Merge branch 'pret:master' into master commit 429d53b95c6e7555931486fd2f713d9182a7f150 Author: GriffinR Date: Sun Jan 9 11:12:35 2022 -0500 Use runningState directly in CheckMovementInputNotOnBike commit 8b920691e6a7ac3b14cd553cc3020ded2f1ca4d9 Author: GriffinR Date: Sun Jan 9 01:31:42 2022 -0500 Fix FLAG_DECORATION_0 name commit 4375a8014263138684e797894d9fb72d9103a129 Merge: a499e8dc7 30dbf3f85 Author: WiserVisor <63819738+WiserVisor@users.noreply.github.com> Date: Sat Jan 8 21:47:19 2022 -0800 Merge branch 'pret:master' into master commit 8f1a760937a7ac10da18b1bdb980cb7687e1789e Author: GriffinR Date: Sat Jan 8 23:53:55 2022 -0500 Add missing array constants in field_player_avatar commit ca9bc34bea71d12e335e2a009580b3a8b4d01e65 Author: GriffinR Date: Fri Jan 7 17:26:23 2022 -0500 Clean up pokemon_storage_system graphics commit 5cbe572607dbed0dfd4937fa05e115da99ef9e69 Author: GriffinR Date: Fri Jan 7 17:02:12 2022 -0500 Add window constants in pokemon_storage_system commit d4111d55208d0f6ded77352859f6460a0c41e7e5 Author: GriffinR Date: Wed Jan 5 14:50:19 2022 -0500 Add comment about pokedex reordering commit 5d033c2e4d5001c65e85fdcf5c780e5b88307063 Author: GriffinR Date: Wed Jan 5 12:18:49 2022 -0500 Convert pokedex defines to enums commit ce55e58ad83e57b7e1fde7eeb3c3c94365fe0f12 Author: GriffinR Date: Tue Jan 4 10:09:42 2022 -0500 Misc cleanup --- src/event_object_movement.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5281a692c..a90a13858 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2246,7 +2246,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) { struct ObjectEventTemplate objectEventTemplate; @@ -2257,7 +2257,7 @@ u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 objectEventTemplate.inConnection = 0; objectEventTemplate.x = x; objectEventTemplate.y = y; - objectEventTemplate.elevation = z; + objectEventTemplate.elevation = elevation; objectEventTemplate.movementType = movementBehavior; objectEventTemplate.movementRangeX = 0; objectEventTemplate.movementRangeY = 0; @@ -2336,7 +2336,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(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -2363,7 +2363,7 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = z; + sprite->sVirtualObjElev = elevation; if (graphicsInfo->paletteSlot == 10) LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); else if (graphicsInfo->paletteSlot >= 16) @@ -2374,8 +2374,8 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; } - InitObjectPriorityByElevation(sprite, z); - SetObjectSubpriorityByElevation(z, sprite, 1); + InitObjectPriorityByElevation(sprite, elevation); + SetObjectSubpriorityByElevation(elevation, sprite, 1); StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); } return spriteId; From b24f44bee3ee84b31d011f357e6062ce0f917db2 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 16 Mar 2022 22:20:11 -0700 Subject: [PATCH 20/71] Added a shrinking into/growing out of Pokeball animation Still don't know how to get rid of that occasionally visual glitch with the sparkle, nor do I know how to get the follower to continue its animation immediately upon entering a building. --- asm/macros/event.inc | 5 + .../scripts.inc | 1 + data/scripts/pkmn_center_nurse.inc | 9 +- gflib/sprite.c | 4 +- .../field_effects/pics/expanding_sparkle.png | Bin 0 -> 299 bytes graphics/object_events/palettes/dive_ball.pal | 19 + .../object_events/palettes/great_ball.pal | 19 + .../object_events/palettes/luxury_ball.pal | 19 + .../object_events/palettes/master_ball.pal | 19 + graphics/object_events/palettes/nest_ball.pal | 19 + graphics/object_events/palettes/net_ball.pal | 19 + .../object_events/palettes/premier_ball.pal | 19 + .../object_events/palettes/repeat_ball.pal | 19 + .../object_events/palettes/safari_ball.pal | 19 + .../object_events/palettes/timer_ball.pal | 19 + .../object_events/palettes/ultra_ball.pal | 19 + .../object_events/pics/misc/dive_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/great_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/luxury_ball.png | Bin 0 -> 207 bytes .../object_events/pics/misc/master_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/nest_ball.png | Bin 0 -> 210 bytes graphics/object_events/pics/misc/net_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/premier_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/repeat_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/safari_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/timer_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/ultra_ball.png | Bin 0 -> 210 bytes include/constants/event_object_movement.h | 2 + include/constants/event_objects.h | 16 +- include/overworld.h | 3 + spritesheet_rules.mk | 3 + src/bike.c | 65 +- .../movement_action_func_tables.h | 8 + src/data/object_events/object_event_anims.h | 119 +++ .../object_events/object_event_graphics.h | 23 + .../object_event_graphics_info.h | 844 ++++++++--------- .../object_event_graphics_info_pointers.h | 28 +- .../object_events/object_event_pic_tables.h | 53 ++ src/event_object_movement.c | 447 +++++++++ src/field_control_avatar.c | 25 - src/field_effect.c | 72 +- src/field_player_avatar.c | 11 +- src/field_screen_effect.c | 1 + src/follow_me.c | 6 +- src/overworld.c | 860 +++++++++++++++++- src/scrcmd.c | 2 +- 46 files changed, 2223 insertions(+), 593 deletions(-) create mode 100644 graphics/field_effects/pics/expanding_sparkle.png create mode 100644 graphics/object_events/palettes/dive_ball.pal create mode 100644 graphics/object_events/palettes/great_ball.pal create mode 100644 graphics/object_events/palettes/luxury_ball.pal create mode 100644 graphics/object_events/palettes/master_ball.pal create mode 100644 graphics/object_events/palettes/nest_ball.pal create mode 100644 graphics/object_events/palettes/net_ball.pal create mode 100644 graphics/object_events/palettes/premier_ball.pal create mode 100644 graphics/object_events/palettes/repeat_ball.pal create mode 100644 graphics/object_events/palettes/safari_ball.pal create mode 100644 graphics/object_events/palettes/timer_ball.pal create mode 100644 graphics/object_events/palettes/ultra_ball.pal create mode 100644 graphics/object_events/pics/misc/dive_ball.png create mode 100644 graphics/object_events/pics/misc/great_ball.png create mode 100644 graphics/object_events/pics/misc/luxury_ball.png create mode 100644 graphics/object_events/pics/misc/master_ball.png create mode 100644 graphics/object_events/pics/misc/nest_ball.png create mode 100644 graphics/object_events/pics/misc/net_ball.png create mode 100644 graphics/object_events/pics/misc/premier_ball.png create mode 100644 graphics/object_events/pics/misc/repeat_ball.png create mode 100644 graphics/object_events/pics/misc/safari_ball.png create mode 100644 graphics/object_events/pics/misc/timer_ball.png create mode 100644 graphics/object_events/pics/misc/ultra_ball.png diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 6358714eb..a3052dfc4 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1979,3 +1979,8 @@ .macro showfollower callnative ShowFollower .endm + + .macro followerintopokeball + setvar VAR_UNUSED_0x8014, 0 + callnative FollowerIntoPokeball + .endm diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 67a354342..e86635090 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -141,6 +141,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 addobject 7 + hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB setfollower 7, 0x7E updatefollowerpokemongraphic releaseall diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index c08acd26a..6066a66a9 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,7 +33,8 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - hidefollower + followerintopokeball + call_if_eq VAR_UNUSED_0x8014, 1, EventScript_FollowerIntoPokeballDelay applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL @@ -42,7 +43,11 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn:: waitmovement 0 special HealPlayerParty updatefollowerpokemongraphic - showfollower + return + +EventScript_FollowerIntoPokeballDelay:: + delay 21 + setvar VAR_UNUSED_0x8014, 0 return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: diff --git a/gflib/sprite.c b/gflib/sprite.c index a16249e6e..56243ee75 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1040,7 +1040,7 @@ void AnimCmd_frame(struct Sprite *sprite) sprite->animDelayCounter = duration; if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) { if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; @@ -1083,7 +1083,7 @@ void AnimCmd_jump(struct Sprite *sprite) sprite->animDelayCounter = duration; if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) { if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; diff --git a/graphics/field_effects/pics/expanding_sparkle.png b/graphics/field_effects/pics/expanding_sparkle.png new file mode 100644 index 0000000000000000000000000000000000000000..21fc700eb4f1685a28ee2d69e938a114f7dba1d2 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#`Z@%sP&|JiT<=Un~o zb@cy#1_H=h@2opeFK2;AWHAE+w=f7ZGR&GI0Tf*5>EamT(fM|oBUgihfGh9b0}0|C zdJ`@%cD<`#9>ZGaIPvG@Q`>`ISbtuo@;rybZKwQqSH3SBmX#;OZk&GNEdNU#^DD9q z!TaBCSa_z~d#8_5yPklSn`$Wg;RgbW8)i9**W`PvI=Wm7W2}9^xKBu8QJm-R26gSu z@Wl;@yS%oPbH{TYNmUJU$(pM0$6tQMlnd{Rw@v!bpJ2V-;6L{aAGNkUGut`Ww>|gM Q0y>t#)78&qol`;+01`TVV*mgE literal 0 HcmV?d00001 diff --git a/graphics/object_events/palettes/dive_ball.pal b/graphics/object_events/palettes/dive_ball.pal new file mode 100644 index 000000000..03d8740a5 --- /dev/null +++ b/graphics/object_events/palettes/dive_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +221 205 241 +11 117 245 +71 151 249 +15 47 85 +1 1 1 +249 249 249 +187 155 227 +57 49 69 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/great_ball.pal b/graphics/object_events/palettes/great_ball.pal new file mode 100644 index 000000000..552f0b9e8 --- /dev/null +++ b/graphics/object_events/palettes/great_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +75 75 123 +249 249 249 +155 43 37 +1 1 1 +55 65 169 +5 1 77 +255 255 255 +205 205 223 +87 97 201 +207 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/luxury_ball.pal b/graphics/object_events/palettes/luxury_ball.pal new file mode 100644 index 000000000..319242f49 --- /dev/null +++ b/graphics/object_events/palettes/luxury_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +249 231 71 +69 65 59 +177 63 33 +107 31 13 +215 75 41 +47 47 47 +105 97 87 +255 255 255 +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/palettes/master_ball.pal b/graphics/object_events/palettes/master_ball.pal new file mode 100644 index 000000000..72ac65599 --- /dev/null +++ b/graphics/object_events/palettes/master_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +191 1 159 +249 249 249 +75 75 123 +205 205 223 +117 49 207 +63 41 95 +1 1 1 +151 101 219 +255 1 211 +217 201 241 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/nest_ball.pal b/graphics/object_events/palettes/nest_ball.pal new file mode 100644 index 000000000..0f868af50 --- /dev/null +++ b/graphics/object_events/palettes/nest_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +89 133 59 +157 157 189 +249 249 249 +211 211 75 +75 75 123 +1 1 1 +47 77 27 +119 177 79 +205 205 223 +225 225 127 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/net_ball.pal b/graphics/object_events/palettes/net_ball.pal new file mode 100644 index 000000000..d14a3f13f --- /dev/null +++ b/graphics/object_events/palettes/net_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +49 131 143 +1 1 1 +17 57 63 +65 175 191 +205 205 223 +75 75 123 +105 97 87 +249 249 249 +157 157 189 +193 185 209 +69 65 59 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/premier_ball.pal b/graphics/object_events/palettes/premier_ball.pal new file mode 100644 index 000000000..f871d2bdd --- /dev/null +++ b/graphics/object_events/palettes/premier_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +51 49 49 +223 223 223 +155 43 37 +191 191 191 +249 249 249 +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/graphics/object_events/palettes/repeat_ball.pal b/graphics/object_events/palettes/repeat_ball.pal new file mode 100644 index 000000000..641e5fb81 --- /dev/null +++ b/graphics/object_events/palettes/repeat_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +241 149 79 +157 157 189 +69 65 59 +249 249 249 +105 97 87 +213 171 43 +1 1 1 +107 53 11 +235 113 21 +205 205 223 +223 191 97 +75 75 123 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/safari_ball.pal b/graphics/object_events/palettes/safari_ball.pal new file mode 100644 index 000000000..4f7ae21c2 --- /dev/null +++ b/graphics/object_events/palettes/safari_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +63 131 63 +157 157 189 +249 249 249 +1 1 1 +75 75 123 +245 159 105 +249 197 167 +17 55 17 +83 173 83 +205 205 223 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/timer_ball.pal b/graphics/object_events/palettes/timer_ball.pal new file mode 100644 index 000000000..e4c93a648 --- /dev/null +++ b/graphics/object_events/palettes/timer_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +69 65 59 +249 249 249 +105 97 87 +1 1 1 +105 33 17 +75 75 123 +193 185 209 +215 75 41 +225 121 95 +47 47 47 +205 205 223 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/ultra_ball.pal b/graphics/object_events/palettes/ultra_ball.pal new file mode 100644 index 000000000..253c8a380 --- /dev/null +++ b/graphics/object_events/palettes/ultra_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +217 139 7 +157 157 189 +69 65 59 +249 249 249 +1 1 1 +75 75 123 +47 47 47 +249 171 39 +205 205 223 +105 97 87 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/dive_ball.png b/graphics/object_events/pics/misc/dive_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..54b5557c2898dbc66f495de826ee04d99d0b835c GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%ch1&wk`C{pvpb zC%=9uBO~L_pFelcer##z3RHy#JQU7e0}62#ctjR6FmMZlFeAgPITAoY4^J1z5RRG2 z2?~N|=5Q{w44tFaAURpf%H$xEl&+kwf}$D!<|orw6q-#f1JCF%94YV?@n$rXaJmx| mb8uIL?;K_Yw$?T!X?}*k?7Y!Q0VbC~c6++|xvX>zyoafQXW0gaiy^E6i%kPe tn2sb|$mq>rdYv@u;z|ZX4^PgU6%5fQ__mgN9-jxY)zj6_Wt~$(69DZDMIHbE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/luxury_ball.png b/graphics/object_events/pics/misc/luxury_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f1268193c0a7c540286d2c4e191f7541dc5fe4 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R=W};gN9&FDirMnK z*S$6M_4P9o!~g&P4^)B)Zhp5s1{CEi@Q5sCVBi)8VMc~ob0mO*uAVNAAsjQ46BGoO zEOpG7_Nj>7KzZ-g9Xu|ZMMX7NsxwHgab4y1icw+W0*A!V2^`Ux3pP|TMHFUQL>My9 ft_oyY)d+Ot>hC<$cY5gTe~DWM4f2i!S% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/master_ball.png b/graphics/object_events/pics/misc/master_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..cb76bf8516dcfa72a824fc3cf9067b1220c2a916 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%cim8R!4}`P19G z`s~^JrH1G2HRBl>8KdhL7qAX9f)T6SZL#j?~bsb&n4I=Q_Co*%Q~loCICvsND}}6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/nest_ball.png b/graphics/object_events/pics/misc/nest_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..88f36f8b621116aa60f5d880ff41eca587e5ccfe GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5vekO-+`T`4{=9tI z+uOUEk&#i~SGs(o|Jk$mA3m)A|NlQwEgV>Srgn^rzTrREZFEAz@&0yTYyfW7UPKoU(cXoZU)0`sw-2Q sC3r60-n6}`bmO^uk_?6#CL%X07!2?5$1rVpdkkc&r>mdKI;Vst0EU)AHvj+t literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/net_ball.png b/graphics/object_events/pics/misc/net_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..65c302d7285a1dfc20cc5892c4dadb0224fd70c0 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`u(_X+kx|gn-f{i@ zvuE#ndsk;BhX4HebMD-|2X|g{b+rEf|36SU1l*0DvIfZFEbxddW?R literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/premier_ball.png b/graphics/object_events/pics/misc/premier_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..cb007754ed460ef2522f23ecb93e1d491777eec2 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`*wFC){rj`ERrl}T z|MTZhpbQ=$q4@bPP@1#ABeIx*f$s{U1Rb@1A z);QrRsIy?vlSeEgWGiF#=H@iqo^_|muU{&jsUJ=Dxb3<4Hcv~14e4E*{ T^S|_hoX6nl>gTe~DWM4fJ0mq& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/repeat_ball.png b/graphics/object_events/pics/misc/repeat_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..98f84b22f19e2aa2e1ff60635d87e6eb8578a84e GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN9MBTL1j{ zGcz&#>S}F9M#gMY?$?E)XV2chzdzC2yZZnC|3Do;aLZNaH@*n*^S7ee71-ulHs{zd%=jhjy!q(16(AcuUHx3vIVCg!0Cn_7 A8UO$Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/safari_ball.png b/graphics/object_events/pics/misc/safari_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..0663ccb2519587d0e330b2863b05cd76b9a9c049 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`zS(~6+`T`4{$yli z^!Bd)IzRL0(dB~Xg28Kp&z`;i|NnoWS~!qWJdz3Ia29w(7Bet#3xhBt!>lBe>UL>UY)4a zXJll|R21~~u0FW);&pG$hn4aA`ub}%W!Z9;BK|%1%J>G>o_fE@UFgA1KYe(z8`7s_@@Tn-}G2`oAp^fpYCJ2J8^mO%eS?83{1OVGF BM(Y3o literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/ultra_ball.png b/graphics/object_events/pics/misc/ultra_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20e316e8000dfc42e003c17391f87ea8e7b666 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RW;grXxqDq5t$+Uf z$;im)?Om;}um5wk`q{JhGZVxA|NjqE3kNO!EeSvlXMsm#F#`j)FbFd;%$g$s6!h?P zaSY*@nVg^?IAywX#<#vcCWFO?PH&La*|6bs0GG;&NmS_~%=xOsv^eHje5v8{A# smf*P=y?A?L>Bh77W-=IR=mdKI;Vst03-oHZ2$lO literal 0 HcmV?d00001 diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 317c5f6a2..c3d775714 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -249,6 +249,8 @@ #define MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST 0xA1 #define MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST 0xA2 #define MOVEMENT_ACTION_FOLLOWING_POKEMON_WALKSOUTH 0xA3 +#define MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK 0xA4 +#define MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW 0xA5 #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index de7d7b1ec..37e29655b 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -264,7 +264,7 @@ #define OBJ_EVENT_GFX_FEAROW 260 #define OBJ_EVENT_GFX_EKANS 261 #define OBJ_EVENT_GFX_ARBOK 262 -#define OBJ_EVENT_GFX_PIKACHU_FOLLOW 263 +#define OBJ_EVENT_GFX_PIKACHU_FOLLOWER 263 #define OBJ_EVENT_GFX_RAICHU 264 #define OBJ_EVENT_GFX_SANDSHREW 265 #define OBJ_EVENT_GFX_SANDSLASH 266 @@ -491,6 +491,20 @@ #define OBJ_EVENT_GFX_LUGIA_FOLLOWER 487 #define OBJ_EVENT_GFX_HOOH_FOLLOWER 488 #define OBJ_EVENT_GFX_CELEBI 489 + +#define OBJ_EVENT_GFX_GREAT_BALL 490 +#define OBJ_EVENT_GFX_ULTRA_BALL 491 +#define OBJ_EVENT_GFX_MASTER_BALL 492 +#define OBJ_EVENT_GFX_SAFARI_BALL 493 +#define OBJ_EVENT_GFX_NET_BALL 494 +#define OBJ_EVENT_GFX_DIVE_BALL 495 +#define OBJ_EVENT_GFX_NEST_BALL 496 +#define OBJ_EVENT_GFX_REPEAT_BALL 497 +#define OBJ_EVENT_GFX_TIMER_BALL 498 +#define OBJ_EVENT_GFX_LUXURY_BALL 499 +#define OBJ_EVENT_GFX_PREMIER_BALL 500 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 501 + // Jump in numbers due to SPECIES_OLD_UNOWN constants #define OBJ_EVENT_GFX_TREECKO 515 #define OBJ_EVENT_GFX_GROVYLE 516 diff --git a/include/overworld.h b/include/overworld.h index 9f115a653..b50367cfa 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -155,5 +155,8 @@ bool32 Overworld_SendKeysToLinkIsRunning(void); bool32 IsSendingKeysOverCable(void); void ClearLinkPlayerObjectEvents(void); void UpdateFollowerPokemonGraphic(void); +void FollowerPokeballSparkle(void); +void FollowerIntoPokeball(void); +bool8 IsBigSprite(u16); #endif // GUARD_OVERWORLD_H diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 96251bce6..18ef68000 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1932,3 +1932,6 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 1 + +$(FLDEFFGFXDIR)/expanding_sparkle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/src/bike.c b/src/bike.c index 978535d4f..b1dd7cfe2 100644 --- a/src/bike.c +++ b/src/bike.c @@ -973,80 +973,17 @@ bool8 IsPlayerNotUsingAcroBikeOnBumpySlope(void) void GetOnOffBike(u8 transitionFlags) { - struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - bool8 followerPlaced = FALSE; gUnusedBikeCameraAheadPanback = FALSE; if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { - if (gSaveBlock2Ptr->follower.inProgress) - { - if (!(player->currentCoords.x == follower->currentCoords.x && player->currentCoords.y == follower->currentCoords.y)) - { - follower->currentCoords = player->currentCoords; - gSprites[follower->spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[follower->spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - } - ObjectEventClearHeldMovement(follower); - - // First, check to see if the follower can appear behind the player - if (player->facingDirection == DIR_NORTH) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) - { - ObjectEventSetHeldMovement(follower, 8); - followerPlaced = TRUE; - } - } - else if (player->facingDirection == DIR_SOUTH) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) - { - ObjectEventSetHeldMovement(follower, 9); - followerPlaced = TRUE; - } - } - else if (player->facingDirection == DIR_EAST) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) - { - ObjectEventSetHeldMovement(follower, 10); - followerPlaced = TRUE; - } - } - // Don't need to check playerDirection due to else-if chain - else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) - { - ObjectEventSetHeldMovement(follower, 11); - followerPlaced = TRUE; - } - - // If follower can't appear behind player, then check if they can appear south, north, west, or east of player. - if (!followerPlaced) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) - ObjectEventSetHeldMovement(follower, 8); - else if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) - ObjectEventSetHeldMovement(follower, 9); - else if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) - ObjectEventSetHeldMovement(follower, 10); - else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) - ObjectEventSetHeldMovement(follower, 11); - } - follower->invisible = FALSE; - } - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); Overworld_ClearSavedMusic(); Overworld_PlaySpecialMapMusic(); } else { - if (gSaveBlock2Ptr->follower.inProgress) - { - follower->invisible = TRUE; - } + FollowerIntoPokeball(); SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 6f06d86bc..e6e737ce4 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -266,6 +266,10 @@ u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *, struct u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceUp[])(struct ObjectEvent *, struct Sprite *); @@ -431,6 +435,8 @@ u8 (*const gMovementActionFuncs_FollowingPokemon_FaceSouth[])(struct ObjectEvent u8 (*const gMovementActionFuncs_FollowingPokemon_FaceNorth[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FollowingPokemon_FaceWest[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_Shrink[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_Grow[])(struct ObjectEvent *, struct Sprite *); u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { [MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown, @@ -596,6 +602,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACENORTH] = gMovementActionFuncs_FollowingPokemon_FaceNorth, [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST] = gMovementActionFuncs_FollowingPokemon_FaceWest, [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST] = gMovementActionFuncs_FollowingPokemon_FaceEast, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK] = gMovementActionFuncs_FollowingPokemon_Shrink, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW] = gMovementActionFuncs_FollowingPokemon_Grow, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index 4b794dbcd..c90b791c6 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -1579,6 +1579,125 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_Rayquaza[ gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza, }; +static const union AffineAnimCmd Following_Pokemon_Shrink[] = +{ + AFFINEANIMCMD_FRAME(-25, -25, 0, 10), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Grow[] = +{ + AFFINEANIMCMD_FRAME(-256, -256, 0, 1), + AFFINEANIMCMD_FRAME(4, 4, 0, 1), + AFFINEANIMCMD_FRAME(28, 28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Shrink_Right[] = +{ + AFFINEANIMCMD_FRAME(-512, 0, 0, 1), + AFFINEANIMCMD_FRAME(28, -28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Grow_Right[] = +{ + AFFINEANIMCMD_FRAME(-256, -256, 0, 1), + AFFINEANIMCMD_FRAME(-4, 4, 0, 1), + AFFINEANIMCMD_FRAME(-28, 28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const FollowerAffineTable[] = { + Following_Pokemon_Shrink, + Following_Pokemon_Grow, + Following_Pokemon_Shrink_Right, + Following_Pokemon_Grow_Right, +}; + +static const union AnimCmd ExpandingSparkle[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(2, 3), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(5, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const ExpandingSparkleTable[] = +{ + ExpandingSparkle, +}; + +static const union AffineAnimCmd North[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd NorthEast[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -32, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd East[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -64, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd SouthEast[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -96, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd South[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -128, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd SouthWest[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 96, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd West[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 64, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd NorthWest[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 32, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const ExpandingSparkleAffineTable[] = { + North, + NorthEast, + East, + SouthEast, + South, + SouthWest, + West, + NorthWest, +}; + // For animations with alternating steps static const struct StepAnimTable sStepAnimTables[] = { { diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 7100c4608..7be3af4a8 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -125,6 +125,28 @@ const u32 gObjectEventPic_Man4[] = INCBIN_U32("graphics/object_events/pics/peopl const u32 gObjectEventPic_Man5[] = INCBIN_U32("graphics/object_events/pics/people/man_5.4bpp"); const u32 gObjectEventPic_Nurse[] = INCBIN_U32("graphics/object_events/pics/people/nurse.4bpp"); const u32 gObjectEventPic_ItemBall[] = INCBIN_U32("graphics/object_events/pics/misc/item_ball.4bpp"); +const u32 gObjectEventPic_GreatBall[] = INCBIN_U32("graphics/object_events/pics/misc/great_ball.4bpp"); +const u16 gObjectEventPal_GreatBall[] = INCBIN_U16("graphics/object_events/palettes/great_ball.gbapal"); +const u32 gObjectEventPic_UltraBall[] = INCBIN_U32("graphics/object_events/pics/misc/ultra_ball.4bpp"); +const u16 gObjectEventPal_UltraBall[] = INCBIN_U16("graphics/object_events/palettes/ultra_ball.gbapal"); +const u32 gObjectEventPic_MasterBall[] = INCBIN_U32("graphics/object_events/pics/misc/master_ball.4bpp"); +const u16 gObjectEventPal_MasterBall[] = INCBIN_U16("graphics/object_events/palettes/master_ball.gbapal"); +const u32 gObjectEventPic_SafariBall[] = INCBIN_U32("graphics/object_events/pics/misc/safari_ball.4bpp"); +const u16 gObjectEventPal_SafariBall[] = INCBIN_U16("graphics/object_events/palettes/safari_ball.gbapal"); +const u32 gObjectEventPic_NetBall[] = INCBIN_U32("graphics/object_events/pics/misc/net_ball.4bpp"); +const u16 gObjectEventPal_NetBall[] = INCBIN_U16("graphics/object_events/palettes/net_ball.gbapal"); +const u32 gObjectEventPic_DiveBall[] = INCBIN_U32("graphics/object_events/pics/misc/dive_ball.4bpp"); +const u16 gObjectEventPal_DiveBall[] = INCBIN_U16("graphics/object_events/palettes/dive_ball.gbapal"); +const u32 gObjectEventPic_NestBall[] = INCBIN_U32("graphics/object_events/pics/misc/nest_ball.4bpp"); +const u16 gObjectEventPal_NestBall[] = INCBIN_U16("graphics/object_events/palettes/nest_ball.gbapal"); +const u32 gObjectEventPic_RepeatBall[] = INCBIN_U32("graphics/object_events/pics/misc/repeat_ball.4bpp"); +const u16 gObjectEventPal_RepeatBall[] = INCBIN_U16("graphics/object_events/palettes/repeat_ball.gbapal"); +const u32 gObjectEventPic_TimerBall[] = INCBIN_U32("graphics/object_events/pics/misc/timer_ball.4bpp"); +const u16 gObjectEventPal_TimerBall[] = INCBIN_U16("graphics/object_events/palettes/timer_ball.gbapal"); +const u32 gObjectEventPic_LuxuryBall[] = INCBIN_U32("graphics/object_events/pics/misc/luxury_ball.4bpp"); +const u16 gObjectEventPal_LuxuryBall[] = INCBIN_U16("graphics/object_events/palettes/luxury_ball.gbapal"); +const u32 gObjectEventPic_PremierBall[] = INCBIN_U32("graphics/object_events/pics/misc/premier_ball.4bpp"); +const u16 gObjectEventPal_PremierBall[] = INCBIN_U16("graphics/object_events/palettes/premier_ball.gbapal"); const u32 gObjectEventPic_ProfBirch[] = INCBIN_U32("graphics/object_events/pics/people/prof_birch.4bpp"); const u32 gObjectEventPic_ReporterM[] = INCBIN_U32("graphics/object_events/pics/people/reporter_m.4bpp"); const u32 gObjectEventPic_ReporterF[] = INCBIN_U32("graphics/object_events/pics/people/reporter_f.4bpp"); @@ -332,6 +354,7 @@ const u32 gFieldEffectObjectPic_AshPuff[] = INCBIN_U32("graphics/field_effects/p const u32 gFieldEffectObjectPic_AshLaunch[] = INCBIN_U32("graphics/field_effects/pics/ash_launch.4bpp"); const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/field_effects/pics/bubbles.4bpp"); const u32 gFieldEffectObjectPic_SmallSparkle[] = INCBIN_U32("graphics/field_effects/pics/small_sparkle.4bpp"); +const u32 gFieldEffectObjectPic_ExpandingSparkle[] = INCBIN_U32("graphics/field_effects/pics/expanding_sparkle.4bpp"); const u16 gFieldEffectPal_SmallSparkle[] = INCBIN_U16("graphics/field_effects/palettes/small_sparkle.gbapal"); const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/field_effects/pics/bird.4bpp"); const u32 gObjectEventPic_Juan[] = INCBIN_U32("graphics/object_events/pics/people/gym_leaders/juan.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 8ee03030a..5e361ed5e 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -59,6 +59,18 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Nurse, sPicTable_Nurse, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ItemBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreatBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_GREAT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GreatBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UltraBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_ULTRA_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UltraBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MasterBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_MASTER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MasterBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SafariBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_SAFARI_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SafariBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NetBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NET_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_NetBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiveBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DIVE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DiveBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NestBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NEST_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_NestBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_REPEAT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_RepeatBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_TIMER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TimerBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LUXURY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LuxuryBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PREMIER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PremierBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle = {TAG_NONE, FLDEFF_PAL_TAG_SMALL_SPARKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, ExpandingSparkleTable, sPicTable_ExpandingSparkle, ExpandingSparkleAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; @@ -244,421 +256,421 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = 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_Lugia, 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_HoOh, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bulbasaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur = {0xFFFF, OBJ_EVENT_PAL_TAG_IVYSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ivysaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur = {0xFFFF, OBJ_EVENT_PAL_TAG_VENUSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venusaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMANDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmander, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMELEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmeleon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSLASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandslash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_F, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_F, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFAIRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_ODDISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_VILEPLUME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_PSYDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_GROWLITHE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWRATH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_ALAKAZAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLSPROUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_RAPIDASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_DROWZEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_MAROWAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYHORN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARYU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTABUZZ, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bulbasaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur = {0xFFFF, OBJ_EVENT_PAL_TAG_IVYSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ivysaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur = {0xFFFF, OBJ_EVENT_PAL_TAG_VENUSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venusaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMANDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmander, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMELEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmeleon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charizard, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_METAPOD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_KAKUNA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSLASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandslash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_F, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_F, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFAIRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_ZUBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_ODDISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_VILEPLUME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARASECT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_PSYDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_GROWLITHE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWRATH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_ALAKAZAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLSPROUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GEODUDE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_RAPIDASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNETON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_DEWGONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_GRIMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_ONIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_DROWZEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KRABBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRODE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_MAROWAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEZING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYHORN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARYU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTABUZZ, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_DITTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, FollowerAffineTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIKORITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava = {0xFFFF, OBJ_EVENT_PAL_TAG_QUILAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quilava, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion = {0xFFFF, OBJ_EVENT_PAL_TAG_TYPHLOSION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Typhlosion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile = {0xFFFF, OBJ_EVENT_PAL_TAG_TOTODILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Totodile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw = {0xFFFF, OBJ_EVENT_PAL_TAG_CROCONAW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croconaw, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr = {0xFFFF, OBJ_EVENT_PAL_TAG_FERALIGATR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feraligatr, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret = {0xFFFF, OBJ_EVENT_PAL_TAG_SENTRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sentret, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Furret, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot = {0xFFFF, OBJ_EVENT_PAL_TAG_HOOTHOOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoothoot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl = {0xFFFF, OBJ_EVENT_PAL_TAG_NOCTOWL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Noctowl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDYBA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledyba, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledian, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINARAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinarak, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados = {0xFFFF, OBJ_EVENT_PAL_TAG_ARIADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ariados, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat = {0xFFFF, OBJ_EVENT_PAL_TAG_CROBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crobat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINCHOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chinchou, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn = {0xFFFF, OBJ_EVENT_PAL_TAG_LANTURN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lanturn, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, OBJ_EVENT_PAL_TAG_PICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pichu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_MARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip = {0xFFFF, OBJ_EVENT_PAL_TAG_HOPPIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoppip, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom = {0xFFFF, OBJ_EVENT_PAL_TAG_SKIPLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skiploom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff = {0xFFFF, OBJ_EVENT_PAL_TAG_JUMPLUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jumpluff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aipom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_WOOPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_STEELIX, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor = {0xFFFF, OBJ_EVENT_PAL_TAG_SCIZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scizor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUCKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuckle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFFF, OBJ_EVENT_PAL_TAG_HERACROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heracross, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_SLUGMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola = {0xFFFF, OBJ_EVENT_PAL_TAG_CORSOLA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corsola, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid = {0xFFFF, OBJ_EVENT_PAL_TAG_REMORAID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Remoraid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFFF, OBJ_EVENT_PAL_TAG_OCTILLERY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Octillery, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan = {0xFFFF, OBJ_EVENT_PAL_TAG_DONPHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Donphan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler = {0xFFFF, OBJ_EVENT_PAL_TAG_STANTLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stantler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle = {0xFFFF, OBJ_EVENT_PAL_TAG_SMEARGLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smeargle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue = {0xFFFF, OBJ_EVENT_PAL_TAG_TYROGUE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyrogue, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONTOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmontop, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum = {0xFFFF, OBJ_EVENT_PAL_TAG_SMOOCHUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smoochum, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Elekid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magby, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank = {0xFFFF, OBJ_EVENT_PAL_TAG_MILTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Miltank, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey = {0xFFFF, OBJ_EVENT_PAL_TAG_BLISSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blissey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, OBJ_EVENT_PAL_TAG_RAIKOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raikou, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_PUPITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, OBJ_EVENT_PAL_TAG_CELEBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Celebi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIKORITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava = {0xFFFF, OBJ_EVENT_PAL_TAG_QUILAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quilava, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion = {0xFFFF, OBJ_EVENT_PAL_TAG_TYPHLOSION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Typhlosion, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile = {0xFFFF, OBJ_EVENT_PAL_TAG_TOTODILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Totodile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw = {0xFFFF, OBJ_EVENT_PAL_TAG_CROCONAW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croconaw, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr = {0xFFFF, OBJ_EVENT_PAL_TAG_FERALIGATR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feraligatr, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret = {0xFFFF, OBJ_EVENT_PAL_TAG_SENTRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sentret, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Furret, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot = {0xFFFF, OBJ_EVENT_PAL_TAG_HOOTHOOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoothoot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl = {0xFFFF, OBJ_EVENT_PAL_TAG_NOCTOWL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Noctowl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDYBA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledyba, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledian, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINARAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinarak, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados = {0xFFFF, OBJ_EVENT_PAL_TAG_ARIADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ariados, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat = {0xFFFF, OBJ_EVENT_PAL_TAG_CROBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crobat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINCHOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chinchou, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn = {0xFFFF, OBJ_EVENT_PAL_TAG_LANTURN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lanturn, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, OBJ_EVENT_PAL_TAG_PICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pichu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGETIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_MARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip = {0xFFFF, OBJ_EVENT_PAL_TAG_HOPPIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoppip, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom = {0xFFFF, OBJ_EVENT_PAL_TAG_SKIPLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skiploom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff = {0xFFFF, OBJ_EVENT_PAL_TAG_JUMPLUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jumpluff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aipom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_WOOPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_UNOWN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_STEELIX, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor = {0xFFFF, OBJ_EVENT_PAL_TAG_SCIZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scizor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUCKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuckle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFFF, OBJ_EVENT_PAL_TAG_HERACROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heracross, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_SLUGMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola = {0xFFFF, OBJ_EVENT_PAL_TAG_CORSOLA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corsola, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid = {0xFFFF, OBJ_EVENT_PAL_TAG_REMORAID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Remoraid, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFFF, OBJ_EVENT_PAL_TAG_OCTILLERY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Octillery, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan = {0xFFFF, OBJ_EVENT_PAL_TAG_DONPHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Donphan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon2, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler = {0xFFFF, OBJ_EVENT_PAL_TAG_STANTLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stantler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle = {0xFFFF, OBJ_EVENT_PAL_TAG_SMEARGLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smeargle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue = {0xFFFF, OBJ_EVENT_PAL_TAG_TYROGUE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyrogue, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONTOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmontop, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum = {0xFFFF, OBJ_EVENT_PAL_TAG_SMOOCHUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smoochum, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Elekid, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magby, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank = {0xFFFF, OBJ_EVENT_PAL_TAG_MILTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Miltank, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey = {0xFFFF, OBJ_EVENT_PAL_TAG_BLISSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blissey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, OBJ_EVENT_PAL_TAG_RAIKOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raikou, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_PUPITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, OBJ_EVENT_PAL_TAG_CELEBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Celebi, FollowerAffineTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Treecko = {0xFFFF, OBJ_EVENT_PAL_TAG_TREECKO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Treecko, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grovyle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROVYLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grovyle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sceptile = {0xFFFF, OBJ_EVENT_PAL_TAG_SCEPTILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sceptile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_TORCHIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combusken = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combusken, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blaziken = {0xFFFF, OBJ_EVENT_PAL_TAG_BLAZIKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blaziken, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mudkip = {0xFFFF, OBJ_EVENT_PAL_TAG_MUDKIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mudkip, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swampert = {0xFFFF, OBJ_EVENT_PAL_TAG_SWAMPERT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swampert, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poochyena_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mightyena = {0xFFFF, OBJ_EVENT_PAL_TAG_MIGHTYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mightyena, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zigzagoon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Linoone = {0xFFFF, OBJ_EVENT_PAL_TAG_LINOONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Linoone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wurmple = {0xFFFF, OBJ_EVENT_PAL_TAG_WURMPLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wurmple, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_SILCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beautifly = {0xFFFF, OBJ_EVENT_PAL_TAG_BEAUTIFLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beautifly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cascoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cascoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dustox = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSTOX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dustox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lotad = {0xFFFF, OBJ_EVENT_PAL_TAG_LOTAD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lotad, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lombre = {0xFFFF, OBJ_EVENT_PAL_TAG_LOMBRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lombre, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ludicolo = {0xFFFF, OBJ_EVENT_PAL_TAG_LUDICOLO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ludicolo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seedot = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEDOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seedot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nuzleaf = {0xFFFF, OBJ_EVENT_PAL_TAG_NUZLEAF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nuzleaf, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shiftry = {0xFFFF, OBJ_EVENT_PAL_TAG_SHIFTRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shiftry, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Taillow = {0xFFFF, OBJ_EVENT_PAL_TAG_TAILLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Taillow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swellow = {0xFFFF, OBJ_EVENT_PAL_TAG_SWELLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swellow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_WINGULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wingull_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pelipper = {0xFFFF, OBJ_EVENT_PAL_TAG_PELIPPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pelipper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_RALTS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KIRLIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gardevoir = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gardevoir, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Surskit = {0xFFFF, OBJ_EVENT_PAL_TAG_SURSKIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Surskit, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Masquerain = {0xFFFF, OBJ_EVENT_PAL_TAG_MASQUERAIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Masquerain, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shroomish = {0xFFFF, OBJ_EVENT_PAL_TAG_SHROOMISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shroomish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Breloom = {0xFFFF, OBJ_EVENT_PAL_TAG_BRELOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Breloom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slakoth = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slakoth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vigoroth_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vigoroth_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slaking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nincada = {0xFFFF, OBJ_EVENT_PAL_TAG_NINCADA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nincada, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninjask = {0xFFFF, OBJ_EVENT_PAL_TAG_NINJASK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninjask, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shedinja = {0xFFFF, OBJ_EVENT_PAL_TAG_SHEDINJA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shedinja, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whismur = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISMUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whismur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_LOUDRED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exploud = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exploud, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Makuhita = {0xFFFF, OBJ_EVENT_PAL_TAG_MAKUHITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Makuhita, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hariyama = {0xFFFF, OBJ_EVENT_PAL_TAG_HARIYAMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hariyama, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azurill_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nosepass = {0xFFFF, OBJ_EVENT_PAL_TAG_NOSEPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nosepass, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SKITTY_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delcatty = {0xFFFF, OBJ_EVENT_PAL_TAG_DELCATTY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delcatty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sableye = {0xFFFF, OBJ_EVENT_PAL_TAG_SABLEYE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sableye, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mawile = {0xFFFF, OBJ_EVENT_PAL_TAG_MAWILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mawile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_ARON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lairon = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lairon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aggron = {0xFFFF, OBJ_EVENT_PAL_TAG_AGGRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aggron, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meditite = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDITITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meditite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Medicham = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDICHAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Medicham, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrike = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRIKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manectric = {0xFFFF, OBJ_EVENT_PAL_TAG_MANECTRIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manectric, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_PLUSLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Minun = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Minun, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Volbeat = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLBEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Volbeat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Illumise = {0xFFFF, OBJ_EVENT_PAL_TAG_ILLUMISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Illumise, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roselia = {0xFFFF, OBJ_EVENT_PAL_TAG_ROSELIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Roselia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gulpin = {0xFFFF, OBJ_EVENT_PAL_TAG_GULPIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gulpin, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swalot = {0xFFFF, OBJ_EVENT_PAL_TAG_SWALOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swalot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carvanha = {0xFFFF, OBJ_EVENT_PAL_TAG_CARVANHA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Carvanha, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sharpedo = {0xFFFF, OBJ_EVENT_PAL_TAG_SHARPEDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sharpedo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailmer = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailmer, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailord = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILORD, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailord, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Numel = {0xFFFF, OBJ_EVENT_PAL_TAG_NUMEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Numel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camerupt = {0xFFFF, OBJ_EVENT_PAL_TAG_CAMERUPT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Camerupt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torkoal = {0xFFFF, OBJ_EVENT_PAL_TAG_TORKOAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torkoal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spoink = {0xFFFF, OBJ_EVENT_PAL_TAG_SPOINK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spoink, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grumpig = {0xFFFF, OBJ_EVENT_PAL_TAG_GRUMPIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grumpig, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinda = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINDA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinda, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trapinch = {0xFFFF, OBJ_EVENT_PAL_TAG_TRAPINCH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Trapinch, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vibrava = {0xFFFF, OBJ_EVENT_PAL_TAG_VIBRAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vibrava, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flygon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flygon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacnea = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacnea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACTURNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_SWABLU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zangoose = {0xFFFF, OBJ_EVENT_PAL_TAG_ZANGOOSE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zangoose, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seviper = {0xFFFF, OBJ_EVENT_PAL_TAG_SEVIPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seviper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_LUNATONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Solrock = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Solrock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Barboach = {0xFFFF, OBJ_EVENT_PAL_TAG_BARBOACH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Barboach, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whiscash = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISCASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whiscash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corphish = {0xFFFF, OBJ_EVENT_PAL_TAG_CORPHISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corphish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crawdaunt = {0xFFFF, OBJ_EVENT_PAL_TAG_CRAWDAUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crawdaunt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Baltoy = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Baltoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Claydol = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAYDOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Claydol, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lileep = {0xFFFF, OBJ_EVENT_PAL_TAG_LILEEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lileep, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cradily = {0xFFFF, OBJ_EVENT_PAL_TAG_CRADILY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cradily, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anorith = {0xFFFF, OBJ_EVENT_PAL_TAG_ANORITH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Anorith, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Armaldo = {0xFFFF, OBJ_EVENT_PAL_TAG_ARMALDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Armaldo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feebas = {0xFFFF, OBJ_EVENT_PAL_TAG_FEEBAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feebas, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Milotic = {0xFFFF, OBJ_EVENT_PAL_TAG_MILOTIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Milotic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KECLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kecleon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUPPET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Banette = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Banette, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Duskull = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Duskull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSCLOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusclops_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tropius = {0xFFFF, OBJ_EVENT_PAL_TAG_TROPIUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tropius, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimecho = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIMECHO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chimecho, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Absol = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Absol, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wynaut = {0xFFFF, OBJ_EVENT_PAL_TAG_WYNAUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wynaut, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorunt = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorunt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glalie = {0xFFFF, OBJ_EVENT_PAL_TAG_GLALIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glalie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spheal = {0xFFFF, OBJ_EVENT_PAL_TAG_SPHEAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spheal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sealeo = {0xFFFF, OBJ_EVENT_PAL_TAG_SEALEO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sealeo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Walrein = {0xFFFF, OBJ_EVENT_PAL_TAG_WALREIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Walrein, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clamperl = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAMPERL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clamperl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Huntail = {0xFFFF, OBJ_EVENT_PAL_TAG_HUNTAIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Huntail, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gorebyss = {0xFFFF, OBJ_EVENT_PAL_TAG_GOREBYSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gorebyss, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Relicanth = {0xFFFF, OBJ_EVENT_PAL_TAG_RELICANTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Relicanth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luvdisc = {0xFFFF, OBJ_EVENT_PAL_TAG_LUVDISC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luvdisc, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bagon = {0xFFFF, OBJ_EVENT_PAL_TAG_BAGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bagon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shelgon = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shelgon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Salamence = {0xFFFF, OBJ_EVENT_PAL_TAG_SALAMENCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Salamence, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beldum = {0xFFFF, OBJ_EVENT_PAL_TAG_BELDUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beldum, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metang = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metang, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METAGROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regirock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGICE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regice, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGISTEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Registeel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latias, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kyogre_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Groudon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_RAYQUAZA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_Rayquaza, gObjectEventPicTable_Rayquaza_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jirachi = {0xFFFF, OBJ_EVENT_PAL_TAG_JIRACHI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jirachi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Normal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Attack, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Defense, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Speed, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Treecko = {0xFFFF, OBJ_EVENT_PAL_TAG_TREECKO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Treecko, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grovyle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROVYLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grovyle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sceptile = {0xFFFF, OBJ_EVENT_PAL_TAG_SCEPTILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sceptile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_TORCHIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combusken = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combusken, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blaziken = {0xFFFF, OBJ_EVENT_PAL_TAG_BLAZIKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blaziken, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mudkip = {0xFFFF, OBJ_EVENT_PAL_TAG_MUDKIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mudkip, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marshtomp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swampert = {0xFFFF, OBJ_EVENT_PAL_TAG_SWAMPERT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swampert, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poochyena_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mightyena = {0xFFFF, OBJ_EVENT_PAL_TAG_MIGHTYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mightyena, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zigzagoon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Linoone = {0xFFFF, OBJ_EVENT_PAL_TAG_LINOONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Linoone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wurmple = {0xFFFF, OBJ_EVENT_PAL_TAG_WURMPLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wurmple, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_SILCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beautifly = {0xFFFF, OBJ_EVENT_PAL_TAG_BEAUTIFLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beautifly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cascoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cascoon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dustox = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSTOX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dustox, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lotad = {0xFFFF, OBJ_EVENT_PAL_TAG_LOTAD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lotad, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lombre = {0xFFFF, OBJ_EVENT_PAL_TAG_LOMBRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lombre, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ludicolo = {0xFFFF, OBJ_EVENT_PAL_TAG_LUDICOLO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ludicolo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seedot = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEDOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seedot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nuzleaf = {0xFFFF, OBJ_EVENT_PAL_TAG_NUZLEAF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nuzleaf, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shiftry = {0xFFFF, OBJ_EVENT_PAL_TAG_SHIFTRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shiftry, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Taillow = {0xFFFF, OBJ_EVENT_PAL_TAG_TAILLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Taillow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swellow = {0xFFFF, OBJ_EVENT_PAL_TAG_SWELLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swellow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_WINGULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wingull_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pelipper = {0xFFFF, OBJ_EVENT_PAL_TAG_PELIPPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pelipper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_RALTS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KIRLIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gardevoir = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gardevoir, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Surskit = {0xFFFF, OBJ_EVENT_PAL_TAG_SURSKIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Surskit, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Masquerain = {0xFFFF, OBJ_EVENT_PAL_TAG_MASQUERAIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Masquerain, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shroomish = {0xFFFF, OBJ_EVENT_PAL_TAG_SHROOMISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shroomish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Breloom = {0xFFFF, OBJ_EVENT_PAL_TAG_BRELOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Breloom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slakoth = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slakoth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vigoroth_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vigoroth_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slaking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nincada = {0xFFFF, OBJ_EVENT_PAL_TAG_NINCADA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nincada, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninjask = {0xFFFF, OBJ_EVENT_PAL_TAG_NINJASK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninjask, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shedinja = {0xFFFF, OBJ_EVENT_PAL_TAG_SHEDINJA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shedinja, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whismur = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISMUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whismur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_LOUDRED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exploud = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exploud, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Makuhita = {0xFFFF, OBJ_EVENT_PAL_TAG_MAKUHITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Makuhita, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hariyama = {0xFFFF, OBJ_EVENT_PAL_TAG_HARIYAMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hariyama, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azurill_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nosepass = {0xFFFF, OBJ_EVENT_PAL_TAG_NOSEPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nosepass, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SKITTY_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delcatty = {0xFFFF, OBJ_EVENT_PAL_TAG_DELCATTY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delcatty, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sableye = {0xFFFF, OBJ_EVENT_PAL_TAG_SABLEYE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sableye, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mawile = {0xFFFF, OBJ_EVENT_PAL_TAG_MAWILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mawile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_ARON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lairon = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lairon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aggron = {0xFFFF, OBJ_EVENT_PAL_TAG_AGGRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aggron, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meditite = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDITITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meditite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Medicham = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDICHAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Medicham, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrike = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRIKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrike, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manectric = {0xFFFF, OBJ_EVENT_PAL_TAG_MANECTRIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manectric, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_PLUSLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Minun = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Minun, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Volbeat = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLBEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Volbeat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Illumise = {0xFFFF, OBJ_EVENT_PAL_TAG_ILLUMISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Illumise, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roselia = {0xFFFF, OBJ_EVENT_PAL_TAG_ROSELIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Roselia, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gulpin = {0xFFFF, OBJ_EVENT_PAL_TAG_GULPIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gulpin, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swalot = {0xFFFF, OBJ_EVENT_PAL_TAG_SWALOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swalot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carvanha = {0xFFFF, OBJ_EVENT_PAL_TAG_CARVANHA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Carvanha, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sharpedo = {0xFFFF, OBJ_EVENT_PAL_TAG_SHARPEDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sharpedo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailmer = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailmer, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailord = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILORD, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailord, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Numel = {0xFFFF, OBJ_EVENT_PAL_TAG_NUMEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Numel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camerupt = {0xFFFF, OBJ_EVENT_PAL_TAG_CAMERUPT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Camerupt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torkoal = {0xFFFF, OBJ_EVENT_PAL_TAG_TORKOAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torkoal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spoink = {0xFFFF, OBJ_EVENT_PAL_TAG_SPOINK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spoink, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grumpig = {0xFFFF, OBJ_EVENT_PAL_TAG_GRUMPIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grumpig, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinda = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINDA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinda, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trapinch = {0xFFFF, OBJ_EVENT_PAL_TAG_TRAPINCH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Trapinch, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vibrava = {0xFFFF, OBJ_EVENT_PAL_TAG_VIBRAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vibrava, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flygon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flygon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacnea = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacnea, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACTURNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_SWABLU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Altaria, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zangoose = {0xFFFF, OBJ_EVENT_PAL_TAG_ZANGOOSE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zangoose, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seviper = {0xFFFF, OBJ_EVENT_PAL_TAG_SEVIPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seviper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_LUNATONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Solrock = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Solrock, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Barboach = {0xFFFF, OBJ_EVENT_PAL_TAG_BARBOACH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Barboach, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whiscash = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISCASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whiscash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corphish = {0xFFFF, OBJ_EVENT_PAL_TAG_CORPHISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corphish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crawdaunt = {0xFFFF, OBJ_EVENT_PAL_TAG_CRAWDAUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crawdaunt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Baltoy = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Baltoy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Claydol = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAYDOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Claydol, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lileep = {0xFFFF, OBJ_EVENT_PAL_TAG_LILEEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lileep, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cradily = {0xFFFF, OBJ_EVENT_PAL_TAG_CRADILY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cradily, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anorith = {0xFFFF, OBJ_EVENT_PAL_TAG_ANORITH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Anorith, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Armaldo = {0xFFFF, OBJ_EVENT_PAL_TAG_ARMALDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Armaldo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feebas = {0xFFFF, OBJ_EVENT_PAL_TAG_FEEBAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feebas, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Milotic = {0xFFFF, OBJ_EVENT_PAL_TAG_MILOTIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Milotic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KECLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kecleon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUPPET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Banette = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Banette, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Duskull = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Duskull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSCLOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusclops_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tropius = {0xFFFF, OBJ_EVENT_PAL_TAG_TROPIUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tropius, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimecho = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIMECHO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chimecho, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Absol = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Absol, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wynaut = {0xFFFF, OBJ_EVENT_PAL_TAG_WYNAUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wynaut, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorunt = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorunt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glalie = {0xFFFF, OBJ_EVENT_PAL_TAG_GLALIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glalie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spheal = {0xFFFF, OBJ_EVENT_PAL_TAG_SPHEAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spheal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sealeo = {0xFFFF, OBJ_EVENT_PAL_TAG_SEALEO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sealeo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Walrein = {0xFFFF, OBJ_EVENT_PAL_TAG_WALREIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Walrein, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clamperl = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAMPERL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clamperl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Huntail = {0xFFFF, OBJ_EVENT_PAL_TAG_HUNTAIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Huntail, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gorebyss = {0xFFFF, OBJ_EVENT_PAL_TAG_GOREBYSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gorebyss, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Relicanth = {0xFFFF, OBJ_EVENT_PAL_TAG_RELICANTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Relicanth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luvdisc = {0xFFFF, OBJ_EVENT_PAL_TAG_LUVDISC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luvdisc, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bagon = {0xFFFF, OBJ_EVENT_PAL_TAG_BAGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bagon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shelgon = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shelgon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Salamence = {0xFFFF, OBJ_EVENT_PAL_TAG_SALAMENCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Salamence, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beldum = {0xFFFF, OBJ_EVENT_PAL_TAG_BELDUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beldum, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metang = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metang, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METAGROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regirock, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGICE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regice, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGISTEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Registeel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latias, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latios, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kyogre_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Groudon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_RAYQUAZA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_Rayquaza, gObjectEventPicTable_Rayquaza_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jirachi = {0xFFFF, OBJ_EVENT_PAL_TAG_JIRACHI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jirachi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Normal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Attack, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Defense, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Speed, FollowerAffineTable}; 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 ba89de67a..07f37a0f5 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -58,6 +58,18 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreatBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UltraBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MasterBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SafariBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NetBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiveBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NestBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages; @@ -268,7 +280,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follower; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash; @@ -723,6 +735,18 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F] = &gObjectEventGraphicsInfo_CyclingTriathleteF, [OBJ_EVENT_GFX_NURSE] = &gObjectEventGraphicsInfo_Nurse, [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_ItemBall, + [OBJ_EVENT_GFX_GREAT_BALL] = &gObjectEventGraphicsInfo_GreatBall, + [OBJ_EVENT_GFX_ULTRA_BALL] = &gObjectEventGraphicsInfo_UltraBall, + [OBJ_EVENT_GFX_MASTER_BALL] = &gObjectEventGraphicsInfo_MasterBall, + [OBJ_EVENT_GFX_SAFARI_BALL] = &gObjectEventGraphicsInfo_SafariBall, + [OBJ_EVENT_GFX_NEST_BALL] = &gObjectEventGraphicsInfo_NestBall, + [OBJ_EVENT_GFX_DIVE_BALL] = &gObjectEventGraphicsInfo_DiveBall, + [OBJ_EVENT_GFX_NET_BALL] = &gObjectEventGraphicsInfo_NetBall, + [OBJ_EVENT_GFX_REPEAT_BALL] = &gObjectEventGraphicsInfo_RepeatBall, + [OBJ_EVENT_GFX_TIMER_BALL] = &gObjectEventGraphicsInfo_TimerBall, + [OBJ_EVENT_GFX_LUXURY_BALL] = &gObjectEventGraphicsInfo_LuxuryBall, + [OBJ_EVENT_GFX_PREMIER_BALL] = &gObjectEventGraphicsInfo_PremierBall, + [OBJ_EVENT_GFX_EXPANDING_SPARKLE] = &gObjectEventGraphicsInfo_ExpandingSparkle, [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, @@ -926,7 +950,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_FEAROW] = &gObjectEventGraphicsInfo_Fearow, [OBJ_EVENT_GFX_EKANS] = &gObjectEventGraphicsInfo_Ekans, [OBJ_EVENT_GFX_ARBOK] = &gObjectEventGraphicsInfo_Arbok, - [OBJ_EVENT_GFX_PIKACHU_FOLLOW] = &gObjectEventGraphicsInfo_Pikachu_Follow, + [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, [OBJ_EVENT_GFX_RAICHU] = &gObjectEventGraphicsInfo_Raichu, [OBJ_EVENT_GFX_SANDSHREW] = &gObjectEventGraphicsInfo_Sandshrew, [OBJ_EVENT_GFX_SANDSLASH] = &gObjectEventGraphicsInfo_Sandslash, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index d8b72bef9..fb5a7259e 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -747,6 +747,59 @@ static const struct SpriteFrameImage sPicTable_ItemBall[] = { obj_frame_tiles(gObjectEventPic_ItemBall), }; +static const struct SpriteFrameImage sPicTable_GreatBall[] = { + obj_frame_tiles(gObjectEventPic_GreatBall), +}; + +static const struct SpriteFrameImage sPicTable_UltraBall[] = { + obj_frame_tiles(gObjectEventPic_UltraBall), +}; + +static const struct SpriteFrameImage sPicTable_MasterBall[] = { + obj_frame_tiles(gObjectEventPic_MasterBall), +}; + +static const struct SpriteFrameImage sPicTable_SafariBall[] = { + obj_frame_tiles(gObjectEventPic_SafariBall), +}; + +static const struct SpriteFrameImage sPicTable_NetBall[] = { + obj_frame_tiles(gObjectEventPic_NetBall), +}; + +static const struct SpriteFrameImage sPicTable_DiveBall[] = { + obj_frame_tiles(gObjectEventPic_DiveBall), +}; + +static const struct SpriteFrameImage sPicTable_NestBall[] = { + obj_frame_tiles(gObjectEventPic_NestBall), +}; + +static const struct SpriteFrameImage sPicTable_RepeatBall[] = { + obj_frame_tiles(gObjectEventPic_RepeatBall), +}; + +static const struct SpriteFrameImage sPicTable_TimerBall[] = { + obj_frame_tiles(gObjectEventPic_TimerBall), +}; + +static const struct SpriteFrameImage sPicTable_LuxuryBall[] = { + obj_frame_tiles(gObjectEventPic_LuxuryBall), +}; + +static const struct SpriteFrameImage sPicTable_PremierBall[] = { + obj_frame_tiles(gObjectEventPic_PremierBall), +}; + +static const struct SpriteFrameImage sPicTable_ExpandingSparkle[] = { + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 0), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 1), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 2), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 3), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 4), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 5), +}; + static const struct SpriteFrameImage sPicTable_ProfBirch[] = { overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 0), overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a4dff6419..ff71f08b3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -11,11 +11,13 @@ #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" +#include "field_specials.h" #include "fieldmap.h" #include "mauville_old_man.h" #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "pokemon.h" #include "random.h" #include "sprite.h" #include "task.h" @@ -833,6 +835,17 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x105B #define OBJ_EVENT_PAL_TAG_JIRACHI 0x105A #define OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER 0x1059 +#define OBJ_EVENT_PAL_TAG_GREAT_BALL 0x1058 +#define OBJ_EVENT_PAL_TAG_ULTRA_BALL 0x1057 +#define OBJ_EVENT_PAL_TAG_MASTER_BALL 0x1056 +#define OBJ_EVENT_PAL_TAG_SAFARI_BALL 0x1055 +#define OBJ_EVENT_PAL_TAG_NET_BALL 0x1054 +#define OBJ_EVENT_PAL_TAG_DIVE_BALL 0x1053 +#define OBJ_EVENT_PAL_TAG_NEST_BALL 0x1052 +#define OBJ_EVENT_PAL_TAG_REPEAT_BALL 0x1051 +#define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1050 +#define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x104F +#define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x104E #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -1265,6 +1278,18 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Rayquaza, OBJ_EVENT_PAL_TAG_RAYQUAZA}, {gObjectEventPal_Jirachi, OBJ_EVENT_PAL_TAG_JIRACHI}, {gObjectEventPal_Deoxys_Follower, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER}, + {gObjectEventPal_GreatBall, OBJ_EVENT_PAL_TAG_GREAT_BALL}, + {gObjectEventPal_UltraBall, OBJ_EVENT_PAL_TAG_ULTRA_BALL}, + {gObjectEventPal_MasterBall, OBJ_EVENT_PAL_TAG_MASTER_BALL}, + {gObjectEventPal_SafariBall, OBJ_EVENT_PAL_TAG_SAFARI_BALL}, + {gObjectEventPal_NetBall, OBJ_EVENT_PAL_TAG_NET_BALL}, + {gObjectEventPal_DiveBall, OBJ_EVENT_PAL_TAG_DIVE_BALL}, + {gObjectEventPal_NestBall, OBJ_EVENT_PAL_TAG_NEST_BALL}, + {gObjectEventPal_RepeatBall, OBJ_EVENT_PAL_TAG_REPEAT_BALL}, + {gObjectEventPal_TimerBall, OBJ_EVENT_PAL_TAG_TIMER_BALL}, + {gObjectEventPal_LuxuryBall, OBJ_EVENT_PAL_TAG_LUXURY_BALL}, + {gObjectEventPal_PremierBall, OBJ_EVENT_PAL_TAG_PREMIER_BALL}, + {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE}, {}, }; @@ -9809,6 +9834,18 @@ u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent MovementAction_Finish, }; +u8 (*const gMovementActionFuncs_FollowingPokemon_Shrink[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_Shrink_Step0, + MovementAction_FollowingPokemon_Shrink_Step1, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_Grow[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_Grow_Step0, + MovementAction_FollowingPokemon_Grow_Step1, + MovementAction_Finish, +}; + u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { bool32 ableToStore = FALSE; @@ -10059,6 +10096,416 @@ u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *objectEven return FALSE; } +static void PokeballCallback(struct Sprite *sprite) +{ + if (++sprite->data[0] == 21) + DestroySprite(sprite); +} + +u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + s16 x = objectEvent->currentCoords.x; + s16 y = objectEvent->currentCoords.y; + u8 spriteId; + bool8 playerPriority; + + sprite->data[7] = 1; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + + if (objectEvent->facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 0); + + if (y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is to the east or west of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); + playerPriority = FALSE; + } + else if (y < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is north of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); + playerPriority = TRUE; + } + else // If follower is south of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); + playerPriority = FALSE; + } + + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) + { + case 1: // Master Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &PokeballCallback, x, y, 2); + break; + case 2: // Ultra Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &PokeballCallback, x, y, 2); + break; + case 3: // Great Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &PokeballCallback, x, y, 2); + break; + case 5: // Safari Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &PokeballCallback, x, y, 2); + break; + case 6: // Net Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &PokeballCallback, x, y, 2); + break; + case 7: // Dive Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &PokeballCallback, x, y, 2); + break; + case 8: // Nest Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &PokeballCallback, x, y, 2); + break; + case 9: // Repeat Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &PokeballCallback, x, y, 2); + break; + case 10: // Timer Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &PokeballCallback, x, y, 2); + break; + case 11: // Luxury Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &PokeballCallback, x, y, 2); + break; + case 12: // Premier Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); + break; + default: // PokeBall + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &PokeballCallback, x, y, 2); + break; + } + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].data[0] = 0; + } + + if (playerPriority) + { + gSprites[gPlayerAvatar.spriteId].oam.priority = 1; + gSprites[gPlayerAvatar.spriteId].subpriority = 1; + gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = TRUE; + } + + sprite->oam.priority = 1; + sprite->subpriority = 1; + + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7]++; + + if (objectEvent->currentCoords.x > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // east side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 8) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 7; + break; + case DIR_WEST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 += 1 - sprite->data[7]; + else + sprite->x2 -= sprite->data[7]; + } + else if (sprite->data[7] == 6) + sprite->x2 += -5; + else + sprite->x2 += 1 - sprite->data[7]; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 2; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] * 2 + 3; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 4; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] * 2 + 5; + else + sprite->y2 = sprite->data[7] * 2 + 6; + } + else + { + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + } + } + else if (objectEvent->currentCoords.x < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // west side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 -= 2 - sprite->data[7]; + else + sprite->x2 += sprite->data[7] - 1; + } + else if (sprite->data[7] == 6) + sprite->x2 -= -4; + else + sprite->x2 -= 2 - sprite->data[7]; + break; + case DIR_WEST: + if (sprite->data[7] < 9) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 8; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 2; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] * 2 + 3; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 4; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] * 2 + 5; + else + sprite->y2 = sprite->data[7] * 2 + 6; + } + else + { + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + } + } + else if (objectEvent->currentCoords.y > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // south side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 7) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 6; + break; + case DIR_WEST: + if (sprite->data[7] < 8) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 7; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] + 3; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] + 4; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] + 5; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] + 6; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] + 7; + else + sprite->y2 = sprite->data[7] + 8; + } + else + sprite->y2 = 1; + } + else // north side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 7) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 6; + break; + case DIR_WEST: + if (sprite->data[7] < 8) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 7; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 2; + else + sprite->y2 = sprite->data[7] * 2 + 3; + } + else + { + if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7]; + else + sprite->y2 = 6; + } + } + + if (sprite->data[7] >= 11) + { + gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; + objectEvent->invisible = TRUE; + sprite->data[2]++; + } + + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7] = 11; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + + if (gObjectEvents[gPlayerAvatar.objectEventId].facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) + StartSpriteAffineAnim(sprite, 3); + else + StartSpriteAffineAnim(sprite, 1); + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + sprite->y2 = 6; + sprite->x2 = 0; + break; + case DIR_NORTH: + sprite->y2 = 1; + sprite->x2 = 0; + break; + case DIR_EAST: + sprite->y2 = 10; + sprite->x2 += 9; + break; + case DIR_WEST: + sprite->y2 = 10; + sprite->x2 -= 9; + break; + } + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7]--; + + if (sprite->data[7] == 10) + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7]; + else + sprite->y2 = 6; + break; + case DIR_NORTH: + sprite->y2 = 1; + break; + case DIR_WEST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 += 1 - sprite->data[7]; + else + sprite->x2 -= sprite->data[7]; + } + else if (sprite->data[7] == 6) + sprite->x2 += -5; + else + sprite->x2 += 1 - sprite->data[7]; + + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + + break; + case DIR_EAST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 -= 2 - sprite->data[7]; + else + sprite->x2 += sprite->data[7] - 1; + } + else if (sprite->data[7] == 6) + sprite->x2 -= -4; + else + sprite->x2 -= 2 - sprite->data[7]; + + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] > 9) + sprite->y2 -= (11 - sprite->data[7]) + 2; + else if (sprite->data[7] > 7) + sprite->y2 -= (11 - sprite->data[7]) + 3; + else if (sprite->data[7] > 6) + sprite->y2 -= (11 - sprite->data[7]) + 4; + else if (sprite->data[7] > 4) + sprite->y2 -= (11 - sprite->data[7]) + 5; + else if (sprite->data[7] > 3) + sprite->y2 -= (11 - sprite->data[7]) + 6; + else + sprite->y2 -= (11 - sprite->data[7]) + 7; + } + + if (sprite->data[7] <= 1) + { + // Set y2 of the 64x64 sprites back to 0, and compensate with y. + if (IsBigSprite(objectEvent->graphicsId)) + { + sprite->y -= 16; + sprite->y2 = 0; + } + + sprite->data[2]++; + sprite->oam.affineMode = 0; + } + + return FALSE; +} + // though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it. u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *sprite) { diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index d57ebd350..1bcf7b403 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -158,31 +158,6 @@ int ProcessPlayerFieldInput(struct FieldInput *input) IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); - if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT - && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0) - { - switch(playerDirection) - { - case 1: // South - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y - 16; - break; - case 2: // North - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y + 16; - break; - case 3: // West - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x + 16; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - break; - case 4: // East - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x - 16; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - break; - } - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; - } - if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } diff --git a/src/field_effect.c b/src/field_effect.c index 1f4f54555..885c80b47 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1358,45 +1358,11 @@ static void Task_UseFly(u8 taskId) gFieldEffectArguments[0] = 0; FieldEffectStart(FLDEFF_USE_FLY); - - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) - { - // Move South - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); - } - else - { - // Move North - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); - } - } - else - { - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - // Move East - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); - } - else - { - // Move West - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); - } - } - } + FollowerIntoPokeball(); task->data[0]++; } - if (gSaveBlock2Ptr->follower.inProgress && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId])) - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; - if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -3078,38 +3044,7 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) SetPlayerAvatarFieldMove(); ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; - - if(gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - - if(objectEvent->currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - if(objectEvent->currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) - { - // Move South - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); - } - else - { - // Move North - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); - } - } - else - { - if(objectEvent->currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - // Move East - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); - } - else - { - // Move West - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); - } - } - } + FollowerIntoPokeball(); } } @@ -3122,9 +3057,6 @@ static void SurfFieldEffect_ShowMon(struct Task *task) gFieldEffectArguments[0] = task->tMonId | SHOW_MON_CRY_NO_DUCKING; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->tState++; - - if (gSaveBlock2Ptr->follower.inProgress) - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 0d3142ca8..b08288ffa 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -611,6 +611,9 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) { if (collision == COLLISION_LEDGE_JUMP) { + if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE) + gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_2_DOWN; + FollowerPokeballSparkle(); PlayerJumpLedge(direction); return; } @@ -638,12 +641,14 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) { + FollowerPokeballSparkle(); PlayerRun(direction); gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; return; } else { + FollowerPokeballSparkle(); PlayerWalkNormal(direction); } } @@ -1662,12 +1667,6 @@ static void Task_WaitStopSurfing(u8 taskId) ScriptContext2_Disable(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); DestroyTask(taskId); - - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], playerObjEvent->facingDirection + 7); - } } } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 9f562131d..119f20dea 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -421,6 +421,7 @@ static void Task_ExitNonDoor(u8 taskId) { UnfreezeObjectEvents(); ScriptContext2_Disable(); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 2; DestroyTask(taskId); } break; diff --git a/src/follow_me.c b/src/follow_me.c index 96a7f8fc3..1071972f0 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -306,7 +306,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) }*/ ObjectEventClearHeldMovementIfActive(follower); - ObjectEventSetHeldMovement(follower, newState); + ObjectEventSetHeldMovement(follower, newState); PlayerLogCoordinates(player); switch (newState) @@ -413,7 +413,7 @@ static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 dire case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: // If the follower is invisible due to bike riding, just walk - if(follower->invisible == FALSE) + if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) { // Ledge jump if (((newState - direction) >= MOVEMENT_ACTION_JUMP_2_DOWN && (newState - direction) <= MOVEMENT_ACTION_JUMP_2_RIGHT) @@ -500,7 +500,7 @@ static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 dire gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN; RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: - if(gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE) + if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_DOWN; RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); diff --git a/src/overworld.c b/src/overworld.c index ec494832a..468b316e4 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -49,6 +49,7 @@ #include "script_pokemon_util.h" #include "secret_base.h" #include "sound.h" +#include "sprite.h" #include "start_menu.h" #include "task.h" #include "tileset_anims.h" @@ -68,6 +69,7 @@ #include "constants/trainer_hill.h" #include "constants/weather.h" #include "constants/event_object_movement.h" +#include "constants/event_objects.h" struct CableClubPlayer { @@ -205,6 +207,399 @@ EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; +static const u8 FollowerSparkleCoords[][6] = +{ + {15, 9, 15, 9, 11, 9}, // Bulbasaur + {15, 11, 15, 9, 10, 9}, // Ivysaur + {16, 13, 16, 12, 13, 13}, // Venusaur + {16, 9, 16, 10, 11, 9}, // Charmander + {15, 12, 15, 10, 10, 11}, // Charmeleon + {16, 13, 16, 13, 16, 13}, // Charizard + {15, 9, 15, 9, 7, 9}, // Squirtle + {16, 10, 15, 9, 9, 11}, // Wartortle + {16, 13, 16, 13, 14, 12}, // Blastoise + {15, 10, 15, 9, 9, 10}, // Caterpie + {16, 10, 16, 11, 8, 10}, // Metapod + {16, 13, 16, 13, 12, 12}, // Butterfree + {16, 10, 16, 10, 8, 9}, // Weedle + {15, 10, 15, 10, 8, 10}, // Kakuna + {15, 13, 15, 15, 9, 13}, // Beedrill + {15, 8, 15, 8, 7, 8}, // Pidgey + {15, 16, 15, 15, 11, 14}, // Pidgeotto + {16, 17, 16, 17, 15, 16}, // Pidgeot + {16, 11, 16, 9, 9, 8}, // Rattata + {16, 12, 16, 9, 11, 8}, // Raticate + {16, 8, 16, 8, 10, 8}, // Spearow + {16, 15, 16, 16, 15, 19}, // Fearow + {16, 10, 13, 11, 9, 10}, // Ekans + {15, 12, 14, 13, 13, 12}, // Arbok + {16, 10, 16, 9, 8, 10}, // Pikachu + {13, 12, 20, 12, 14, 11}, // Raichu + {16, 9, 16, 9, 9, 9}, // Sandshrew + {15, 11, 15, 11, 10, 11}, // Sandslash + {16, 9, 16, 9, 7, 9}, // Nidoran_F + {15, 10, 15, 10, 11, 10}, // Nidorina + {16, 12, 16, 12, 13, 12}, // Nidoqueen + {16, 9, 16, 9, 8, 8}, // Nidoran_M + {16, 10, 16, 11, 11, 9}, // Nidorino + {16, 12, 16, 12, 14, 12}, // Nidoking + {15, 9, 16, 9, 7, 9}, // Clefairy + {16, 11, 16, 11, 9, 11}, // Clefable + {15, 11, 15, 11, 12, 9}, // Vulpix + {15, 13, 15, 14, 13, 11}, // Ninetales + {15, 9, 15, 9, 7, 9}, // Jigglypuff + {15, 11, 15, 11, 8, 11}, // Wigglytuff + {15, 12, 15, 13, 10, 11}, // Zubat + {16, 12, 16, 12, 12, 12}, // Golbat + {15, 8, 15, 8, 7, 8}, // Oddish + {16, 10, 16, 10, 9, 11}, // Gloom + {16, 10, 16, 10, 11, 10}, // Vileplume + {16, 9, 16, 8, 9, 9}, // Paras + {15, 13, 16, 12, 12, 12}, // Parasect + {16, 10, 16, 10, 11, 10}, // Venonat + {15, 14, 15, 14, 13, 14}, // Venomoth + {15, 7, 16, 7, 7, 7}, // Diglett + {16, 11, 16, 11, 11, 11}, // Dugtrio + {16, 13, 15, 11, 11, 9}, // Meowth + {15, 14, 15, 12, 13, 9}, // Persian + {15, 10, 15, 10, 7, 10}, // Psyduck + {15, 12, 15, 12, 8, 11}, // Golduck + {15, 9, 15, 9, 9, 9}, // Mankey + {15, 11, 15, 11, 9, 12}, // Primeape + {16, 11, 16, 11, 9, 10}, // Growlithe + {15, 15, 15, 15, 16, 12}, // Arcanine + {16, 9, 16, 9, 9, 9}, // Poliwag + {16, 9, 16, 9, 7, 10}, // Poliwhirl + {15, 11, 15, 11, 10, 11}, // Poliwrath + {15, 11, 15, 11, 11, 12}, // Abra + {15, 11, 16, 11, 12, 11}, // Kadabra + {16, 12, 16, 13, 11, 13}, // Alakazam + {15, 9, 15, 9, 8, 10}, // Machop + {15, 12, 15, 12, 8, 12}, // Machoke + {16, 13, 16, 13, 12, 12}, // Machamp + {15, 11, 15, 11, 7, 10}, // Bellsprout + {15, 11, 15, 10, 7, 11}, // Weepinbell + {15, 14, 15, 14, 14, 13}, // Victreebel + {16, 10, 16, 10, 9, 10}, // Tentacool + {15, 13, 15, 13, 13, 12}, // Tentacruel + {15, 10, 15, 10, 7, 11}, // Geodude + {15, 9, 15, 9, 10, 11}, // Graveler + {15, 11, 15, 11, 12, 11}, // Golem + {15, 12, 15, 12, 11, 11}, // Ponyta + {15, 15, 15, 14, 15, 13}, // Rapidash + {15, 11, 15, 9, 12, 8}, // Slowpoke + {16, 11, 16, 11, 14, 11}, // Slowbro + {15, 10, 15, 10, 8, 11}, // Magnemite + {15, 15, 15, 15, 10, 15}, // Magneton + {16, 11, 16, 11, 8, 11}, // Farfetch'd + {15, 11, 15, 11, 9, 12}, // Doduo + {16, 16, 15, 16, 15, 15}, // Dodrio + {15, 11, 15, 11, 13, 10}, // Seel + {15, 13, 15, 12, 15, 12}, // Dewgong + {16, 9, 16, 9, 9, 10}, // Grimer + {15, 11, 15, 11, 11, 11}, // Muk + {15, 9, 15, 8, 7, 9}, // Shellder + {15, 13, 15, 13, 13, 14}, // Cloyster + {15, 15, 16, 15, 10, 14}, // Gastly + {16, 13, 16, 13, 10, 14}, // Haunter + {15, 11, 15, 11, 9, 11}, // Gengar + {16, 15, 15, 16, 13, 16}, // Onix + {16, 10, 16, 10, 10, 11}, // Drowzee + {16, 12, 16, 12, 10, 12}, // Hypno + {16, 9, 16, 9, 13, 7}, // Krabby + {16, 13, 16, 12, 16, 13}, // Kingler + {15, 9, 15, 9, 7, 9}, // Voltorb + {16, 12, 16, 12, 13, 12}, // Electrode + {16, 13, 16, 11, 14, 12}, // Exeggcute + {16, 15, 16, 14, 12, 14}, // Exeggutor + {14, 10, 16, 10, 9, 11}, // Cubone + {14, 11, 16, 11, 10, 12}, // Marowak + {15, 11, 15, 11, 9, 11}, // Hitmonlee + {16, 12, 16, 11, 9, 11}, // Hitmonchan + {15, 11, 15, 11, 12, 10}, // Lickitung + {17, 13, 17, 13, 12, 12}, // Koffing + {15, 14, 16, 14, 13, 13}, // Weezing + {15, 12, 15, 11, 14, 9}, // Rhyhorn + {16, 12, 16, 12, 16, 12}, // Rhydon + {15, 10, 15, 10, 10, 10}, // Chansey + {16, 11, 16, 11, 10, 10}, // Tangela + {16, 12, 16, 12, 12, 13}, // Kangaskhan + {15, 9, 15, 9, 9, 9}, // Horsea + {15, 13, 15, 13, 11, 12}, // Seadra + {15, 11, 15, 10, 12, 9}, // Goldeen + {15, 13, 15, 11, 14, 13}, // Seaking + {16, 10, 16, 10, 8, 10}, // Staryu + {16, 12, 16, 12, 9, 13}, // Starmie + {16, 11, 16, 10, 10, 12}, // Mr. Mime + {15, 13, 15, 13, 12, 13}, // Scyther + {16, 13, 16, 12, 11, 13}, // Jynx + {16, 12, 16, 12, 12, 12}, // Electabuzz + {15, 13, 15, 13, 12, 12}, // Magmar + {15, 12, 15, 12, 11, 12}, // Pinsir + {15, 15, 16, 12, 15, 11}, // Tauros + {16, 10, 16, 11, 12, 10}, // Magikarp + {16, 16, 16, 16, 15, 16}, // Gyarados + {16, 12, 16, 13, 14, 13}, // Lapras + {16, 8, 16, 8, 9, 7}, // Ditto + {15, 9, 15, 9, 11, 9}, // Eevee + {15, 15, 15, 12, 15, 11}, // Vaporeon + {15, 12, 15, 11, 14, 10}, // Jolteon + {15, 13, 15, 12, 14, 11}, // Flareon + {15, 10, 15, 10, 12, 9}, // Porygon + {15, 10, 15, 10, 10, 9}, // Omanyte + {15, 12, 15, 12, 12, 11}, // Omastar + {15, 8, 15, 8, 9, 8}, // Kabuto + {16, 11, 15, 11, 11, 12}, // Kabutops + {15, 16, 15, 16, 16, 15}, // Aerodactyl + {16, 14, 16, 14, 12, 15}, // Snorlax + {15, 17, 15, 16, 14, 17}, // Articuno + {15, 18, 15, 17, 14, 15}, // Zapdos + {15, 16, 15, 17, 15, 17}, // Moltres + {17, 12, 14, 11, 12, 11}, // Dratini + {18, 15, 14, 15, 14, 14}, // Dragonair + {15, 16, 15, 16, 13, 15}, // Dragonite + {15, 15, 15, 14, 13, 14}, // Mewtwo + {16, 13, 16, 11, 13, 13}, // Mew + {16, 10, 15, 10, 9, 10}, // Chikorita + {16, 13, 15, 14, 13, 13}, // Bayleef + {15, 14, 15, 15, 14, 15}, // Meganium + {16, 11, 16, 10, 12, 9}, // Cyndaquil + {15, 13, 15, 14, 15, 10}, // Quilava + {15, 14, 15, 14, 14, 13}, // Typhlosion + {16, 10, 16, 10, 10, 10}, // Totodile + {15, 13, 15, 14, 13, 13}, // Croconaw + {15, 15, 15, 15, 15, 15}, // Feraligatr + {15, 10, 15, 10, 12, 9}, // Sentret + {15, 14, 15, 13, 15, 11}, // Furret + {16, 10, 16, 10, 10, 10}, // Hoothoot + {15, 13, 15, 14, 14, 16}, // Noctowl + {15, 14, 15, 12, 13, 12}, // Ledyba + {16, 12, 16, 13, 13, 16}, // Ledian + {15, 9, 15, 9, 11, 7}, // Spinarak + {15, 13, 15, 12, 15, 13}, // Ariados + {15, 13, 15, 13, 12, 15}, // Crobat + {16, 8, 16, 8, 10, 8}, // Chinchou + {16, 14, 16, 13, 15, 11}, // Lanturn + {15, 9, 15, 9, 9, 9}, // Pichu + {16, 8, 16, 8, 9, 8}, // Cleffa + {15, 9, 15, 9, 8, 9}, // Igglybuff + {16, 9, 16, 9, 9, 9}, // Togepi + {15, 14, 15, 15, 10, 13}, // Togetic + {16, 8, 16, 8, 9, 9}, // Natu + {16, 12, 16, 12, 12, 12}, // Xatu + {16, 11, 15, 10, 12, 10}, // Mareep + {18, 12, 15, 11, 12, 11}, // Flaaffy + {16, 13, 16, 13, 13, 13}, // Ampharos + {15, 10, 15, 10, 8, 10}, // Bellossom + {19, 8, 12, 8, 12, 9}, // Marill + {18, 10, 13, 10, 12, 11}, // Azumarill + {16, 12, 16, 12, 10, 12}, // Sudowoodo + {15, 12, 15, 12, 9, 12}, // Politoed + {16, 12, 16, 12, 9, 12}, // Hoppip + {15, 10, 15, 10, 9, 13}, // Skiploom + {16, 14, 16, 14, 9, 13}, // Jumpluff + {16, 12, 16, 11, 13, 11}, // Aipom + {16, 8, 16, 8, 7, 9}, // Sunkern + {15, 11, 15, 11, 7, 11}, // Sunflora + {16, 15, 16, 15, 15, 13}, // Yanma + {16, 8, 16, 8, 8, 8}, // Wooper + {17, 11, 15, 11, 12, 11}, // Quagsire + {15, 14, 15, 12, 13, 12}, // Espeon + {15, 13, 15, 12, 14, 11}, // Umbreon + {15, 10, 15, 10, 9, 10}, // Murkrow + {16, 14, 16, 14, 10, 13}, // Slowking + {16, 14, 16, 13, 11, 13}, // Misdreavus + {15, 10, 15, 10, 7, 11}, // Unown (A) + {16, 11, 16, 11, 10, 11}, // Wobbuffet + {16, 13, 16, 13, 15, 13}, // Girafarig + {16, 9, 16, 9, 8, 9}, // Pineco + {16, 10, 16, 10, 11, 10}, // Forretress + {15, 13, 15, 9, 13, 8}, // Dunsparce + {15, 12, 15, 12, 11, 13}, // Gligar + {33, 17, 32, 19, 36, 17}, // Steelix + {16, 10, 16, 10, 10, 10}, // Snubbull + {16, 12, 16, 12, 10, 13}, // Granbull + {16, 12, 16, 10, 14, 9}, // Qwilfish + {16, 13, 16, 12, 12, 13}, // Scizor + {16, 10, 16, 11, 11, 10}, // Shuckle + {15, 13, 15, 13, 12, 14}, // Heracross + {17, 10, 15, 10, 9, 10}, // Sneasel + {15, 10, 15, 10, 9, 10}, // Teddiursa + {16, 13, 16, 13, 11, 14}, // Ursaring + {15, 11, 16, 11, 11, 10}, // Slugma + {16, 13, 14, 12, 15, 11}, // Magcargo + {15, 8, 15, 8, 11, 8}, // Swinub + {15, 11, 15, 12, 12, 11}, // Piloswine + {16, 9, 16, 9, 10, 10}, // Corsola + {16, 10, 16, 10, 13, 7}, // Remoraid + {15, 11, 15, 12, 11, 11}, // Ocitllery + {16, 10, 15, 10, 9, 11}, // Delibird + {16, 15, 16, 15, 16, 16}, // Mantine + {15, 13, 15, 16, 15, 16}, // Skarmory + {16, 9, 16, 10, 11, 10}, // Houndour + {15, 12, 15, 13, 14, 12}, // Houndoom + {16, 14, 16, 14, 14, 13}, // Kingdra + {16, 9, 16, 9, 11, 9}, // Phanpy + {16, 11, 16, 11, 15, 12}, // Donphan + {16, 11, 16, 12, 13, 12}, // Porygon2 + {16, 14, 15, 14, 12, 15}, // Stantler + {14, 11, 18, 11, 9, 11}, // Smeargle + {15, 10, 15, 10, 8, 10}, // Tyrogue + {15, 12, 15, 12, 9, 11}, // Hitmontop + {15, 10, 15, 10, 9, 10}, // Smoochum + {15, 10, 15, 10, 8, 10}, // Elekid + {16, 10, 16, 10, 8, 10}, // Magby + {16, 11, 16, 11, 12, 11}, // Miltank + {16, 11, 16, 11, 11, 12}, // Blissey + {15, 15, 15, 13, 15, 13}, // Raikou + {15, 15, 15, 13, 15, 12}, // Entei + {15, 15, 15, 13, 16, 12}, // Suicune + {15, 10, 15, 10, 10, 10}, // Larvitar + {15, 11, 15, 11, 8, 11}, // Pupitar + {15, 14, 15, 14, 14, 13}, // Tyranitar + {32, 21, 32, 23, 40, 21}, // Lugia + {32, 22, 31, 22, 38, 24}, // Ho-oh + {16, 14, 16, 14, 9, 14}, // Celebi + {15, 9, 15, 9, 9, 9}, // Treecko + {16, 11, 16, 11, 11, 11}, // Grovyle + {15, 13, 15, 13, 15, 14}, // Sceptile + {15, 10, 15, 10, 8, 10}, // Torchic + {15, 11, 15, 11, 8, 11}, // Combusken + {16, 13, 16, 13, 12, 13}, // Blaziken + {15, 9, 15, 9, 10, 9}, // Mudkip + {15, 10, 15, 10, 9, 10}, // Marshtomp + {15, 13, 15, 13, 15, 13}, // Swampert + {15, 10, 15, 10, 12, 10}, // Poochyena + {16, 14, 16, 12, 15, 12}, // Mightyena + {16, 12, 16, 10, 14, 9}, // Zigzagoon + {16, 13, 14, 10, 15, 8}, // Linoone + {15, 10, 15, 11, 11, 9}, // Wurmple + {16, 8, 16, 8, 10, 8}, // Silcoon + {16, 13, 16, 13, 13, 12}, // Beautifly + {16, 8, 16, 8, 10, 8}, // Cascoon + {15, 11, 15, 11, 12, 15}, // Dustox + {15, 9, 15, 9, 10, 9}, // Lotad + {15, 12, 15, 12, 10, 11}, // Lombre + {16, 14, 16, 14, 13, 14}, // Ludicolo + {15, 9, 15, 9, 8, 9}, // Seedot + {15, 12, 15, 12, 9, 12}, // Nuzleaf + {16, 12, 16, 12, 13, 12}, // Shiftry + {15, 9, 15, 8, 12, 8}, // Nincada + {15, 12, 15, 12, 12, 12}, // Ninjask + {16, 13, 16, 14, 12, 13}, // Shedinja + {15, 9, 15, 9, 10, 8}, // Taillow + {15, 13, 15, 12, 16, 15}, // Swellow + {15, 9, 15, 9, 10, 9}, // Shroomish + {16, 12, 16, 12, 12, 12}, // Breloom + {16, 10, 16, 10, 9, 11}, // Spinda + {15, 11, 15, 10, 12, 13}, // Wingull + {16, 14, 16, 14, 14, 13}, // Pelipper + {15, 9, 15, 9, 10, 9}, // Surskit + {16, 14, 16, 15, 10, 14}, // Masquerain + {16, 11, 16, 11, 13, 11}, // Wailmer + {32, 19, 32, 18, 38, 12}, // Wailord + {15, 10, 15, 9, 12, 9}, // Skitty + {16, 13, 16, 12, 13, 12}, // Delcatty + {16, 11, 16, 11, 10, 11}, // Kecleon + {16, 11, 16, 11, 7, 11}, // Baltoy + {16, 14, 16, 14, 11, 13}, // Claydol + {15, 11, 15, 11, 11, 11}, // Nosepass + {16, 10, 16, 11, 15, 10}, // Torkoal + {16, 9, 16, 9, 9, 10}, // Sableye + {15, 9, 16, 9, 9, 11}, // Barboach + {15, 10, 15, 11, 14, 9}, // Whiscash + {16, 9, 16, 9, 8, 9}, // Luvdisc + {15, 10, 15, 11, 11, 10}, // Corphish + {16, 13, 16, 13, 13, 12}, // Crawdaunt + {16, 9, 16, 9, 10, 9}, // Feebas + {19, 13, 11, 12, 14, 13}, // Milotic + {15, 12, 15, 12, 11, 11}, // Carvanha + {16, 14, 16, 12, 13, 14}, // Sharpedo + {16, 8, 16, 8, 10, 8}, // Trapinch + {16, 13, 16, 11, 15, 14}, // Vibrava + {16, 17, 16, 17, 15, 14}, // Flygon + {16, 10, 16, 10, 9, 11}, // Makuhita + {14, 14, 14, 13, 14, 13}, // Hariyama + {15, 11, 15, 9, 13, 8}, // Electrike + {15, 13, 15, 13, 14, 13}, // Manectric + {15, 12, 15, 12, 15, 12}, // Numel + {15, 14, 15, 14, 17, 12}, // Camerupt + {15, 9, 15, 9, 11, 9}, // Spheal + {15, 12, 15, 13, 15, 12}, // Sealeo + {15, 13, 15, 14, 16, 14}, // Walrein + {15, 9, 15, 9, 8, 9}, // Cacnea + {15, 12, 15, 12, 11, 12}, // Cacturne + {15, 9, 15, 9, 9, 9}, // Snorunt + {16, 12, 16, 12, 11, 14}, // Glalie + {16, 11, 16, 11, 10, 11}, // Lunatone + {16, 13, 16, 13, 8, 13}, // Solrock + {17, 9, 14, 8, 13, 7}, // Azurill + {15, 11, 15, 11, 8, 10}, // Spoink + {15, 11, 15, 11, 11, 11}, // Grumpig + {15, 9, 15, 9, 9, 9}, // Plusle + {15, 9, 15, 9, 9, 9}, // Minun + {17, 11, 14, 11, 13, 11}, // Mawile + {15, 12, 15, 11, 8, 11}, // Meditite + {15, 13, 15, 13, 8, 13}, // Medicham + {16, 12, 16, 11, 11, 10}, // Swablu + {16, 16, 16, 16, 14, 15}, // Altaria + {16, 10, 16, 10, 10, 9}, // Wynaut + {16, 12, 16, 11, 9, 12}, // Duskull + {15, 13, 15, 13, 13, 13}, // Dusclops + {15, 10, 15, 10, 8, 10}, // Roselia + {15, 9, 15, 9, 12, 8}, // Slakoth + {16, 11, 16, 11, 14, 11}, // Vigoroth + {16, 15, 16, 14, 14, 14}, // Slaking + {16, 9, 16, 9, 10, 9}, // Gulpin + {16, 14, 16, 14, 14, 14}, // Swalot + {16, 13, 16, 13, 16, 13}, // Tropius + {16, 8, 16, 8, 8, 8}, // Whismur + {16, 11, 16, 11, 9, 12}, // Loudred + {16, 14, 16, 14, 17, 15}, // Exploud + {15, 8, 15, 8, 8, 9}, // Clamperl + {18, 15, 11, 14, 14, 14}, // Huntail + {17, 16, 12, 14, 15, 11}, // Gorebyss + {14, 14, 16, 14, 15, 13}, // Absol + {15, 11, 15, 11, 8, 11}, // Shuppet + {17, 10, 16, 10, 9, 10}, // Banette + {18, 14, 14, 14, 16, 10}, // Seviper + {15, 12, 15, 12, 13, 12}, // Zangoose + {15, 13, 15, 12, 14, 10}, // Relicanth + {16, 8, 16, 8, 9, 8}, // Aron + {15, 13, 15, 12, 16, 10}, // Lairon + {15, 15, 15, 14, 16, 14}, // Aggron + {15, 11, 15, 10, 7, 10}, // Castform + {15, 14, 15, 14, 12, 12}, // Volbeat + {16, 13, 16, 13, 11, 12}, // Illumise + {16, 11, 16, 12, 10, 11}, // Lileep + {16, 15, 16, 15, 12, 15}, // Cradily + {16, 11, 16, 10, 14, 9}, // Anorith + {15, 13, 15, 12, 13, 13}, // Armaldo + {15, 9, 15, 9, 9, 9}, // Ralts + {15, 11, 15, 11, 9, 11}, // Kirlia + {16, 12, 16, 13, 10, 12}, // Gardevoir + {16, 11, 16, 11, 10, 10}, // Bagon + {16, 10, 16, 10, 11, 10}, // Shelgon + {16, 14, 16, 13, 16, 13}, // Salamence + {15, 13, 15, 12, 12, 12}, // Beldum + {16, 14, 16, 13, 15, 13}, // Metang + {16, 14, 16, 14, 13, 13}, // Metagross + {15, 14, 15, 14, 11, 14}, // Regirock + {15, 13, 15, 13, 12, 13}, // Regice + {16, 13, 16, 13, 10, 13}, // Registeel + {16, 17, 16, 15, 16, 14}, // Kyogre + {15, 16, 16, 16, 16, 16}, // Groudon + {16, 17, 16, 16, 16, 16}, // Rayquaza + {16, 15, 16, 14, 16, 15}, // Latias + {16, 15, 16, 14, 15, 15}, // Latios + {15, 13, 15, 13, 10, 12}, // Jirachi + {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) + {16, 11, 16, 11, 7, 11}, // Chimecho + {16, 15, 16, 15, 12, 13}, // Deoxys (Speed) + {16, 13, 16, 13, 10, 13}, // Deoxys (Defense) + {16, 14, 16, 14, 10, 14}, // Deoxys (Attack) +}; + static const struct WarpData sDummyWarpData = { .mapGroup = MAP_GROUP(UNDEFINED), @@ -3245,7 +3640,7 @@ void UpdateFollowerPokemonGraphic(void) // If so, the following Pokemon needs to change. u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - + if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) { // Sets the follower's graphic data to the proper following Pokemon graphic data @@ -3279,3 +3674,466 @@ void UpdateFollowerPokemonGraphic(void) } } } + +static void SparkleCallback(struct Sprite *sprite) +{ + if (++sprite->data[0] >= 19) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void BigSparkleCallback(struct Sprite *sprite) +{ + if (sprite->data[0] % 2 == 0) + { + switch(sprite->data[7]) + { + // North Sparkle + case 0: + sprite->x++; + break; + // NorthEast Sparkle + case 1: + if (sprite->data[0] % 4 == 0) + sprite->y++; + else + sprite->x++; + break; + // East sparkle + case 2: + sprite->y++; + break; + // SouthEast Sparkle + case 3: + if (sprite->data[0] % 4 == 0) + sprite->y++; + else + sprite->x--; + break; + // South Sparkle + case 4: + sprite->x--; + break; + // SouthWest Sparkle + case 5: + if (sprite->data[0] % 4 == 0) + sprite->y--; + else + sprite->x--; + break; + // West Sparkle + case 6: + sprite->y--; + break; + // NorthWest Sparkle + case 7: + if (sprite->data[0] % 4 == 0) + sprite->y--; + else + sprite->x++; + break; + } + } + + if (++sprite->data[0] >= 19) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +bool8 IsBigSprite(u16 graphicsId) +{ + switch(graphicsId) + { + case OBJ_EVENT_GFX_STEELIX: + case OBJ_EVENT_GFX_LUGIA_FOLLOWER: + case OBJ_EVENT_GFX_HOOH_FOLLOWER: + case OBJ_EVENT_GFX_WAILORD: + return TRUE; + default: + return FALSE; + } +} + +static void SparklePokeballCallback(struct Sprite *sprite) +{ + sprite->data[0]++; + + if (sprite->data[0] >= 10) + { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + s16 x = gSprites[follower->spriteId].x; + s16 y = gSprites[follower->spriteId].y; + u8 spriteId; + u16 graphicsId; + + DestroySprite(sprite); + + gSprites[follower->spriteId].oam.priority = ElevationToPriority(follower->previousElevation); + gSprites[gPlayerAvatar.spriteId].oam.priority = ElevationToPriority(player->previousElevation); + player->fixedPriority = FALSE; + + // Shift the location of the sparkle, depending on which way the follower will be facing + // Gen 3 OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) + graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239 - 25; + else + graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239; + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + x -= 16 - FollowerSparkleCoords[graphicsId][0]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][1]; + + break; + case DIR_NORTH: + x -= 16 - FollowerSparkleCoords[graphicsId][2]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][3]; + + break; + case DIR_EAST: + x += 7 - FollowerSparkleCoords[graphicsId][4]; // 7 looks better than 8 + if (IsBigSprite(follower->graphicsId)) + x += 16; + + y += 16 - FollowerSparkleCoords[graphicsId][5]; + + break; + case DIR_WEST: + x -= 8 - FollowerSparkleCoords[graphicsId][4]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][5]; + + break; + } + + if (IsBigSprite(follower->graphicsId)) + { + // North sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + } + + // NorthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 1; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 1); + } + + // East sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 2; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 2); + } + + // SouthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 3; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 3); + } + + // South sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 4; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 4); + } + + // SouthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 5; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 5); + } + + // West sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 6; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 6); + } + + // NorthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 7; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 7); + } + } + else + { + // North sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + } + + // NorthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 1); + } + + // East sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 2); + } + + // SouthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 3); + } + + // South sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 4); + } + + // SouthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 5); + } + + // West sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 6); + } + + // NorthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 7); + } + } + } +} + +void FollowerPokeballSparkle(void) +{ + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && gSaveBlock2Ptr->follower.inProgress) + { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + s16 x = player->currentCoords.x; + s16 y = player->currentCoords.y; + u8 spriteId; + + switch(player->facingDirection) + { + case DIR_SOUTH: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); + gSprites[follower->spriteId].y = y - 4; + break; + case DIR_NORTH: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); + gSprites[follower->spriteId].y = y; + break; + case DIR_EAST: + case DIR_WEST: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); + gSprites[follower->spriteId].y = y - 8; + break; + } + gSprites[follower->spriteId].x = x; + + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) + { + case 1: // Master Ball + spriteId = CreateObjectGraphicsSprite(492, &SparklePokeballCallback, x, y, 2); + break; + case 2: // Ultra Ball + spriteId = CreateObjectGraphicsSprite(491, &SparklePokeballCallback, x, y, 2); + break; + case 3: // Great Ball + spriteId = CreateObjectGraphicsSprite(490, &SparklePokeballCallback, x, y, 2); + break; + case 5: // Safari Ball + spriteId = CreateObjectGraphicsSprite(493, &SparklePokeballCallback, x, y, 2); + break; + case 6: // Net Ball + spriteId = CreateObjectGraphicsSprite(494, &SparklePokeballCallback, x, y, 2); + break; + case 7: // Dive Ball + spriteId = CreateObjectGraphicsSprite(495, &SparklePokeballCallback, x, y, 2); + break; + case 8: // Nest Ball + spriteId = CreateObjectGraphicsSprite(496, &SparklePokeballCallback, x, y, 2); + break; + case 9: // Repeat Ball + spriteId = CreateObjectGraphicsSprite(497, &SparklePokeballCallback, x, y, 2); + break; + case 10: // Timer Ball + spriteId = CreateObjectGraphicsSprite(498, &SparklePokeballCallback, x, y, 2); + break; + case 11: // Luxury Ball + spriteId = CreateObjectGraphicsSprite(499, &SparklePokeballCallback, x, y, 2); + break; + case 12: // Premier Ball + spriteId = CreateObjectGraphicsSprite(500, &SparklePokeballCallback, x, y, 2); + break; + default: // PokeBall, at default rather than 4 in case of item_expansion + spriteId = CreateObjectGraphicsSprite(59, &SparklePokeballCallback, x, y, 2); + break; + } + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].data[0] = 0; + } + + follower->currentCoords.x = player->currentCoords.x; + follower->currentCoords.y = player->currentCoords.y; + follower->facingDirection = player->facingDirection; + + gSprites[follower->spriteId].animNum = player->facingDirection - 1; + + if (player->facingDirection == DIR_NORTH) + { + gSprites[follower->spriteId].oam.priority = 0; + gSprites[follower->spriteId].subpriority = 0; + gSprites[gPlayerAvatar.spriteId].oam.priority = 1; + gSprites[gPlayerAvatar.spriteId].subpriority = 1; + } + else + { + gSprites[follower->spriteId].oam.priority = 1; + gSprites[follower->spriteId].subpriority = 1; + gSprites[gPlayerAvatar.spriteId].oam.priority = 0; + gSprites[gPlayerAvatar.spriteId].subpriority = 0; + } + player->fixedPriority = TRUE; + + SeekSpriteAnim(&gSprites[follower->spriteId], 0); + ObjectEventForceSetHeldMovement(follower, 0xA5); + } +} + +void FollowerIntoPokeball(void) +{ + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0xA4); + gSpecialVar_Unused_0x8014 = 1; + } +} diff --git a/src/scrcmd.c b/src/scrcmd.c index 127d8b19c..d8d543df4 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2361,7 +2361,7 @@ bool8 ScrCmd_pokemonfaceplayer(struct ScriptContext *ctx) bool8 ScrCmd_setfollower(struct ScriptContext *ctx) { u8 localId = ScriptReadByte(ctx); - u8 flags = ScriptReadByte(ctx); + u16 flags = ScriptReadHalfword(ctx); SetUpFollowerSprite(localId, flags); return FALSE; From 4e511f6149642c3a2b89f3519cc8e51a6a0c3234 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 16 Mar 2022 23:24:09 -0700 Subject: [PATCH 21/71] Added shrinking into/growing out of Pokeball animation. Still don't know how to fix weird pink glitch with sparkle, nor do I know how to get the follower to immediately re-enter animation after walking into a building. --- asm/macros/event.inc | 5 + .../scripts.inc | 1 + data/scripts/pkmn_center_nurse.inc | 9 +- gflib/sprite.c | 4 +- .../field_effects/pics/expanding_sparkle.png | Bin 0 -> 299 bytes graphics/object_events/palettes/dive_ball.pal | 19 + .../object_events/palettes/great_ball.pal | 19 + .../object_events/palettes/luxury_ball.pal | 19 + .../object_events/palettes/master_ball.pal | 19 + graphics/object_events/palettes/nest_ball.pal | 19 + graphics/object_events/palettes/net_ball.pal | 19 + .../object_events/palettes/premier_ball.pal | 19 + .../object_events/palettes/repeat_ball.pal | 19 + .../object_events/palettes/safari_ball.pal | 19 + .../object_events/palettes/timer_ball.pal | 19 + .../object_events/palettes/ultra_ball.pal | 19 + .../object_events/pics/misc/dive_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/great_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/luxury_ball.png | Bin 0 -> 207 bytes .../object_events/pics/misc/master_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/nest_ball.png | Bin 0 -> 210 bytes graphics/object_events/pics/misc/net_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/premier_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/repeat_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/safari_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/timer_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/ultra_ball.png | Bin 0 -> 210 bytes include/constants/event_object_movement.h | 2 + include/constants/event_objects.h | 16 +- include/overworld.h | 3 + spritesheet_rules.mk | 3 + src/bike.c | 65 +- .../movement_action_func_tables.h | 8 + src/data/object_events/object_event_anims.h | 119 +++ .../object_events/object_event_graphics.h | 23 + .../object_event_graphics_info.h | 844 ++++++++--------- .../object_event_graphics_info_pointers.h | 28 +- .../object_events/object_event_pic_tables.h | 53 ++ src/event_object_movement.c | 447 +++++++++ src/field_control_avatar.c | 25 - src/field_effect.c | 72 +- src/field_player_avatar.c | 11 +- src/field_screen_effect.c | 1 + src/follow_me.c | 6 +- src/overworld.c | 862 +++++++++++++++++- src/scrcmd.c | 2 +- 46 files changed, 2225 insertions(+), 593 deletions(-) create mode 100644 graphics/field_effects/pics/expanding_sparkle.png create mode 100644 graphics/object_events/palettes/dive_ball.pal create mode 100644 graphics/object_events/palettes/great_ball.pal create mode 100644 graphics/object_events/palettes/luxury_ball.pal create mode 100644 graphics/object_events/palettes/master_ball.pal create mode 100644 graphics/object_events/palettes/nest_ball.pal create mode 100644 graphics/object_events/palettes/net_ball.pal create mode 100644 graphics/object_events/palettes/premier_ball.pal create mode 100644 graphics/object_events/palettes/repeat_ball.pal create mode 100644 graphics/object_events/palettes/safari_ball.pal create mode 100644 graphics/object_events/palettes/timer_ball.pal create mode 100644 graphics/object_events/palettes/ultra_ball.pal create mode 100644 graphics/object_events/pics/misc/dive_ball.png create mode 100644 graphics/object_events/pics/misc/great_ball.png create mode 100644 graphics/object_events/pics/misc/luxury_ball.png create mode 100644 graphics/object_events/pics/misc/master_ball.png create mode 100644 graphics/object_events/pics/misc/nest_ball.png create mode 100644 graphics/object_events/pics/misc/net_ball.png create mode 100644 graphics/object_events/pics/misc/premier_ball.png create mode 100644 graphics/object_events/pics/misc/repeat_ball.png create mode 100644 graphics/object_events/pics/misc/safari_ball.png create mode 100644 graphics/object_events/pics/misc/timer_ball.png create mode 100644 graphics/object_events/pics/misc/ultra_ball.png diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 6358714eb..a3052dfc4 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1979,3 +1979,8 @@ .macro showfollower callnative ShowFollower .endm + + .macro followerintopokeball + setvar VAR_UNUSED_0x8014, 0 + callnative FollowerIntoPokeball + .endm diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 67a354342..efa55aabb 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -141,6 +141,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 addobject 7 + hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB setfollower 7, 0x7E updatefollowerpokemongraphic releaseall diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index c08acd26a..b5067775c 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,7 +33,8 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - hidefollower + followerintopokeball + call_if_eq VAR_UNUSED_0x8014, 1, EventScript_FollowerIntoPokeballDelay applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL @@ -42,7 +43,11 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn:: waitmovement 0 special HealPlayerParty updatefollowerpokemongraphic - showfollower + return + +EventScript_FollowerIntoPokeballDelay:: + delay 21 + setvar VAR_UNUSED_0x8014, 0 return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: diff --git a/gflib/sprite.c b/gflib/sprite.c index a16249e6e..56243ee75 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1040,7 +1040,7 @@ void AnimCmd_frame(struct Sprite *sprite) sprite->animDelayCounter = duration; if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) { if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; @@ -1083,7 +1083,7 @@ void AnimCmd_jump(struct Sprite *sprite) sprite->animDelayCounter = duration; if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId)) + && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) { if(sprite->animCmdIndex % 2 == 1) sprite->y2 = 0; diff --git a/graphics/field_effects/pics/expanding_sparkle.png b/graphics/field_effects/pics/expanding_sparkle.png new file mode 100644 index 0000000000000000000000000000000000000000..21fc700eb4f1685a28ee2d69e938a114f7dba1d2 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#`Z@%sP&|JiT<=Un~o zb@cy#1_H=h@2opeFK2;AWHAE+w=f7ZGR&GI0Tf*5>EamT(fM|oBUgihfGh9b0}0|C zdJ`@%cD<`#9>ZGaIPvG@Q`>`ISbtuo@;rybZKwQqSH3SBmX#;OZk&GNEdNU#^DD9q z!TaBCSa_z~d#8_5yPklSn`$Wg;RgbW8)i9**W`PvI=Wm7W2}9^xKBu8QJm-R26gSu z@Wl;@yS%oPbH{TYNmUJU$(pM0$6tQMlnd{Rw@v!bpJ2V-;6L{aAGNkUGut`Ww>|gM Q0y>t#)78&qol`;+01`TVV*mgE literal 0 HcmV?d00001 diff --git a/graphics/object_events/palettes/dive_ball.pal b/graphics/object_events/palettes/dive_ball.pal new file mode 100644 index 000000000..03d8740a5 --- /dev/null +++ b/graphics/object_events/palettes/dive_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +221 205 241 +11 117 245 +71 151 249 +15 47 85 +1 1 1 +249 249 249 +187 155 227 +57 49 69 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/great_ball.pal b/graphics/object_events/palettes/great_ball.pal new file mode 100644 index 000000000..552f0b9e8 --- /dev/null +++ b/graphics/object_events/palettes/great_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +75 75 123 +249 249 249 +155 43 37 +1 1 1 +55 65 169 +5 1 77 +255 255 255 +205 205 223 +87 97 201 +207 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/luxury_ball.pal b/graphics/object_events/palettes/luxury_ball.pal new file mode 100644 index 000000000..319242f49 --- /dev/null +++ b/graphics/object_events/palettes/luxury_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +249 231 71 +69 65 59 +177 63 33 +107 31 13 +215 75 41 +47 47 47 +105 97 87 +255 255 255 +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/palettes/master_ball.pal b/graphics/object_events/palettes/master_ball.pal new file mode 100644 index 000000000..72ac65599 --- /dev/null +++ b/graphics/object_events/palettes/master_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +191 1 159 +249 249 249 +75 75 123 +205 205 223 +117 49 207 +63 41 95 +1 1 1 +151 101 219 +255 1 211 +217 201 241 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/nest_ball.pal b/graphics/object_events/palettes/nest_ball.pal new file mode 100644 index 000000000..0f868af50 --- /dev/null +++ b/graphics/object_events/palettes/nest_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +89 133 59 +157 157 189 +249 249 249 +211 211 75 +75 75 123 +1 1 1 +47 77 27 +119 177 79 +205 205 223 +225 225 127 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/net_ball.pal b/graphics/object_events/palettes/net_ball.pal new file mode 100644 index 000000000..d14a3f13f --- /dev/null +++ b/graphics/object_events/palettes/net_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +49 131 143 +1 1 1 +17 57 63 +65 175 191 +205 205 223 +75 75 123 +105 97 87 +249 249 249 +157 157 189 +193 185 209 +69 65 59 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/premier_ball.pal b/graphics/object_events/palettes/premier_ball.pal new file mode 100644 index 000000000..f871d2bdd --- /dev/null +++ b/graphics/object_events/palettes/premier_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +51 49 49 +223 223 223 +155 43 37 +191 191 191 +249 249 249 +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/graphics/object_events/palettes/repeat_ball.pal b/graphics/object_events/palettes/repeat_ball.pal new file mode 100644 index 000000000..641e5fb81 --- /dev/null +++ b/graphics/object_events/palettes/repeat_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +241 149 79 +157 157 189 +69 65 59 +249 249 249 +105 97 87 +213 171 43 +1 1 1 +107 53 11 +235 113 21 +205 205 223 +223 191 97 +75 75 123 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/safari_ball.pal b/graphics/object_events/palettes/safari_ball.pal new file mode 100644 index 000000000..4f7ae21c2 --- /dev/null +++ b/graphics/object_events/palettes/safari_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +63 131 63 +157 157 189 +249 249 249 +1 1 1 +75 75 123 +245 159 105 +249 197 167 +17 55 17 +83 173 83 +205 205 223 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/timer_ball.pal b/graphics/object_events/palettes/timer_ball.pal new file mode 100644 index 000000000..e4c93a648 --- /dev/null +++ b/graphics/object_events/palettes/timer_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +69 65 59 +249 249 249 +105 97 87 +1 1 1 +105 33 17 +75 75 123 +193 185 209 +215 75 41 +225 121 95 +47 47 47 +205 205 223 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/ultra_ball.pal b/graphics/object_events/palettes/ultra_ball.pal new file mode 100644 index 000000000..253c8a380 --- /dev/null +++ b/graphics/object_events/palettes/ultra_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +217 139 7 +157 157 189 +69 65 59 +249 249 249 +1 1 1 +75 75 123 +47 47 47 +249 171 39 +205 205 223 +105 97 87 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/dive_ball.png b/graphics/object_events/pics/misc/dive_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..54b5557c2898dbc66f495de826ee04d99d0b835c GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%ch1&wk`C{pvpb zC%=9uBO~L_pFelcer##z3RHy#JQU7e0}62#ctjR6FmMZlFeAgPITAoY4^J1z5RRG2 z2?~N|=5Q{w44tFaAURpf%H$xEl&+kwf}$D!<|orw6q-#f1JCF%94YV?@n$rXaJmx| mb8uIL?;K_Yw$?T!X?}*k?7Y!Q0VbC~c6++|xvX>zyoafQXW0gaiy^E6i%kPe tn2sb|$mq>rdYv@u;z|ZX4^PgU6%5fQ__mgN9-jxY)zj6_Wt~$(69DZDMIHbE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/luxury_ball.png b/graphics/object_events/pics/misc/luxury_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f1268193c0a7c540286d2c4e191f7541dc5fe4 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R=W};gN9&FDirMnK z*S$6M_4P9o!~g&P4^)B)Zhp5s1{CEi@Q5sCVBi)8VMc~ob0mO*uAVNAAsjQ46BGoO zEOpG7_Nj>7KzZ-g9Xu|ZMMX7NsxwHgab4y1icw+W0*A!V2^`Ux3pP|TMHFUQL>My9 ft_oyY)d+Ot>hC<$cY5gTe~DWM4f2i!S% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/master_ball.png b/graphics/object_events/pics/misc/master_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..cb76bf8516dcfa72a824fc3cf9067b1220c2a916 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%cim8R!4}`P19G z`s~^JrH1G2HRBl>8KdhL7qAX9f)T6SZL#j?~bsb&n4I=Q_Co*%Q~loCICvsND}}6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/nest_ball.png b/graphics/object_events/pics/misc/nest_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..88f36f8b621116aa60f5d880ff41eca587e5ccfe GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5vekO-+`T`4{=9tI z+uOUEk&#i~SGs(o|Jk$mA3m)A|NlQwEgV>Srgn^rzTrREZFEAz@&0yTYyfW7UPKoU(cXoZU)0`sw-2Q sC3r60-n6}`bmO^uk_?6#CL%X07!2?5$1rVpdkkc&r>mdKI;Vst0EU)AHvj+t literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/net_ball.png b/graphics/object_events/pics/misc/net_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..65c302d7285a1dfc20cc5892c4dadb0224fd70c0 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`u(_X+kx|gn-f{i@ zvuE#ndsk;BhX4HebMD-|2X|g{b+rEf|36SU1l*0DvIfZFEbxddW?R literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/premier_ball.png b/graphics/object_events/pics/misc/premier_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..cb007754ed460ef2522f23ecb93e1d491777eec2 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`*wFC){rj`ERrl}T z|MTZhpbQ=$q4@bPP@1#ABeIx*f$s{U1Rb@1A z);QrRsIy?vlSeEgWGiF#=H@iqo^_|muU{&jsUJ=Dxb3<4Hcv~14e4E*{ T^S|_hoX6nl>gTe~DWM4fJ0mq& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/repeat_ball.png b/graphics/object_events/pics/misc/repeat_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..98f84b22f19e2aa2e1ff60635d87e6eb8578a84e GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN9MBTL1j{ zGcz&#>S}F9M#gMY?$?E)XV2chzdzC2yZZnC|3Do;aLZNaH@*n*^S7ee71-ulHs{zd%=jhjy!q(16(AcuUHx3vIVCg!0Cn_7 A8UO$Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/safari_ball.png b/graphics/object_events/pics/misc/safari_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..0663ccb2519587d0e330b2863b05cd76b9a9c049 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`zS(~6+`T`4{$yli z^!Bd)IzRL0(dB~Xg28Kp&z`;i|NnoWS~!qWJdz3Ia29w(7Bet#3xhBt!>lBe>UL>UY)4a zXJll|R21~~u0FW);&pG$hn4aA`ub}%W!Z9;BK|%1%J>G>o_fE@UFgA1KYe(z8`7s_@@Tn-}G2`oAp^fpYCJ2J8^mO%eS?83{1OVGF BM(Y3o literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/ultra_ball.png b/graphics/object_events/pics/misc/ultra_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20e316e8000dfc42e003c17391f87ea8e7b666 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RW;grXxqDq5t$+Uf z$;im)?Om;}um5wk`q{JhGZVxA|NjqE3kNO!EeSvlXMsm#F#`j)FbFd;%$g$s6!h?P zaSY*@nVg^?IAywX#<#vcCWFO?PH&La*|6bs0GG;&NmS_~%=xOsv^eHje5v8{A# smf*P=y?A?L>Bh77W-=IR=mdKI;Vst03-oHZ2$lO literal 0 HcmV?d00001 diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 317c5f6a2..c3d775714 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -249,6 +249,8 @@ #define MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST 0xA1 #define MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST 0xA2 #define MOVEMENT_ACTION_FOLLOWING_POKEMON_WALKSOUTH 0xA3 +#define MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK 0xA4 +#define MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW 0xA5 #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 13299e012..f16e2475e 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -264,7 +264,7 @@ #define OBJ_EVENT_GFX_FEAROW 260 #define OBJ_EVENT_GFX_EKANS 261 #define OBJ_EVENT_GFX_ARBOK 262 -#define OBJ_EVENT_GFX_PIKACHU_FOLLOW 263 +#define OBJ_EVENT_GFX_PIKACHU_FOLLOWER 263 #define OBJ_EVENT_GFX_RAICHU 264 #define OBJ_EVENT_GFX_SANDSHREW 265 #define OBJ_EVENT_GFX_SANDSLASH 266 @@ -491,6 +491,20 @@ #define OBJ_EVENT_GFX_LUGIA_FOLLOWER 487 #define OBJ_EVENT_GFX_HOOH_FOLLOWER 488 #define OBJ_EVENT_GFX_CELEBI 489 + +#define OBJ_EVENT_GFX_GREAT_BALL 490 +#define OBJ_EVENT_GFX_ULTRA_BALL 491 +#define OBJ_EVENT_GFX_MASTER_BALL 492 +#define OBJ_EVENT_GFX_SAFARI_BALL 493 +#define OBJ_EVENT_GFX_NET_BALL 494 +#define OBJ_EVENT_GFX_DIVE_BALL 495 +#define OBJ_EVENT_GFX_NEST_BALL 496 +#define OBJ_EVENT_GFX_REPEAT_BALL 497 +#define OBJ_EVENT_GFX_TIMER_BALL 498 +#define OBJ_EVENT_GFX_LUXURY_BALL 499 +#define OBJ_EVENT_GFX_PREMIER_BALL 500 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 501 + // Jump in numbers due to SPECIES_OLD_UNOWN constants #define OBJ_EVENT_GFX_TREECKO 515 #define OBJ_EVENT_GFX_GROVYLE 516 diff --git a/include/overworld.h b/include/overworld.h index 9f115a653..b50367cfa 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -155,5 +155,8 @@ bool32 Overworld_SendKeysToLinkIsRunning(void); bool32 IsSendingKeysOverCable(void); void ClearLinkPlayerObjectEvents(void); void UpdateFollowerPokemonGraphic(void); +void FollowerPokeballSparkle(void); +void FollowerIntoPokeball(void); +bool8 IsBigSprite(u16); #endif // GUARD_OVERWORLD_H diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 96251bce6..18ef68000 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1932,3 +1932,6 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 1 + +$(FLDEFFGFXDIR)/expanding_sparkle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/src/bike.c b/src/bike.c index 978535d4f..b1dd7cfe2 100644 --- a/src/bike.c +++ b/src/bike.c @@ -973,80 +973,17 @@ bool8 IsPlayerNotUsingAcroBikeOnBumpySlope(void) void GetOnOffBike(u8 transitionFlags) { - struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - bool8 followerPlaced = FALSE; gUnusedBikeCameraAheadPanback = FALSE; if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { - if (gSaveBlock2Ptr->follower.inProgress) - { - if (!(player->currentCoords.x == follower->currentCoords.x && player->currentCoords.y == follower->currentCoords.y)) - { - follower->currentCoords = player->currentCoords; - gSprites[follower->spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[follower->spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - } - ObjectEventClearHeldMovement(follower); - - // First, check to see if the follower can appear behind the player - if (player->facingDirection == DIR_NORTH) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) - { - ObjectEventSetHeldMovement(follower, 8); - followerPlaced = TRUE; - } - } - else if (player->facingDirection == DIR_SOUTH) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) - { - ObjectEventSetHeldMovement(follower, 9); - followerPlaced = TRUE; - } - } - else if (player->facingDirection == DIR_EAST) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) - { - ObjectEventSetHeldMovement(follower, 10); - followerPlaced = TRUE; - } - } - // Don't need to check playerDirection due to else-if chain - else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) - { - ObjectEventSetHeldMovement(follower, 11); - followerPlaced = TRUE; - } - - // If follower can't appear behind player, then check if they can appear south, north, west, or east of player. - if (!followerPlaced) - { - if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y + 1, DIR_SOUTH)) - ObjectEventSetHeldMovement(follower, 8); - else if (!GetCollisionAtCoords(player, player->currentCoords.x, player->currentCoords.y - 1, DIR_NORTH)) - ObjectEventSetHeldMovement(follower, 9); - else if (!GetCollisionAtCoords(player, player->currentCoords.x - 1, player->currentCoords.y, DIR_WEST)) - ObjectEventSetHeldMovement(follower, 10); - else if (!GetCollisionAtCoords(player, player->currentCoords.x + 1, player->currentCoords.y, DIR_EAST)) - ObjectEventSetHeldMovement(follower, 11); - } - follower->invisible = FALSE; - } - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); Overworld_ClearSavedMusic(); Overworld_PlaySpecialMapMusic(); } else { - if (gSaveBlock2Ptr->follower.inProgress) - { - follower->invisible = TRUE; - } + FollowerIntoPokeball(); SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 6f06d86bc..e6e737ce4 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -266,6 +266,10 @@ u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *, struct u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FaceUp[])(struct ObjectEvent *, struct Sprite *); @@ -431,6 +435,8 @@ u8 (*const gMovementActionFuncs_FollowingPokemon_FaceSouth[])(struct ObjectEvent u8 (*const gMovementActionFuncs_FollowingPokemon_FaceNorth[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FollowingPokemon_FaceWest[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_Shrink[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_FollowingPokemon_Grow[])(struct ObjectEvent *, struct Sprite *); u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { [MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown, @@ -596,6 +602,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACENORTH] = gMovementActionFuncs_FollowingPokemon_FaceNorth, [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST] = gMovementActionFuncs_FollowingPokemon_FaceWest, [MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST] = gMovementActionFuncs_FollowingPokemon_FaceEast, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK] = gMovementActionFuncs_FollowingPokemon_Shrink, + [MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW] = gMovementActionFuncs_FollowingPokemon_Grow, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index 4b794dbcd..c90b791c6 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -1579,6 +1579,125 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_Rayquaza[ gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza, }; +static const union AffineAnimCmd Following_Pokemon_Shrink[] = +{ + AFFINEANIMCMD_FRAME(-25, -25, 0, 10), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Grow[] = +{ + AFFINEANIMCMD_FRAME(-256, -256, 0, 1), + AFFINEANIMCMD_FRAME(4, 4, 0, 1), + AFFINEANIMCMD_FRAME(28, 28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Shrink_Right[] = +{ + AFFINEANIMCMD_FRAME(-512, 0, 0, 1), + AFFINEANIMCMD_FRAME(28, -28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd Following_Pokemon_Grow_Right[] = +{ + AFFINEANIMCMD_FRAME(-256, -256, 0, 1), + AFFINEANIMCMD_FRAME(-4, 4, 0, 1), + AFFINEANIMCMD_FRAME(-28, 28, 0, 9), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const FollowerAffineTable[] = { + Following_Pokemon_Shrink, + Following_Pokemon_Grow, + Following_Pokemon_Shrink_Right, + Following_Pokemon_Grow_Right, +}; + +static const union AnimCmd ExpandingSparkle[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(2, 3), + ANIMCMD_FRAME(3, 3), + ANIMCMD_FRAME(4, 3), + ANIMCMD_FRAME(5, 3), + ANIMCMD_END, +}; + +static const union AnimCmd *const ExpandingSparkleTable[] = +{ + ExpandingSparkle, +}; + +static const union AffineAnimCmd North[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd NorthEast[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -32, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd East[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -64, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd SouthEast[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -96, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd South[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -128, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd SouthWest[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 96, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd West[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 64, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd NorthWest[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 32, 1), + AFFINEANIMCMD_FRAME(0, 0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const ExpandingSparkleAffineTable[] = { + North, + NorthEast, + East, + SouthEast, + South, + SouthWest, + West, + NorthWest, +}; + // For animations with alternating steps static const struct StepAnimTable sStepAnimTables[] = { { diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 27fd47866..4cca10825 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -125,6 +125,28 @@ const u32 gObjectEventPic_Man4[] = INCBIN_U32("graphics/object_events/pics/peopl const u32 gObjectEventPic_Man5[] = INCBIN_U32("graphics/object_events/pics/people/man_5.4bpp"); const u32 gObjectEventPic_Nurse[] = INCBIN_U32("graphics/object_events/pics/people/nurse.4bpp"); const u32 gObjectEventPic_ItemBall[] = INCBIN_U32("graphics/object_events/pics/misc/item_ball.4bpp"); +const u32 gObjectEventPic_GreatBall[] = INCBIN_U32("graphics/object_events/pics/misc/great_ball.4bpp"); +const u16 gObjectEventPal_GreatBall[] = INCBIN_U16("graphics/object_events/palettes/great_ball.gbapal"); +const u32 gObjectEventPic_UltraBall[] = INCBIN_U32("graphics/object_events/pics/misc/ultra_ball.4bpp"); +const u16 gObjectEventPal_UltraBall[] = INCBIN_U16("graphics/object_events/palettes/ultra_ball.gbapal"); +const u32 gObjectEventPic_MasterBall[] = INCBIN_U32("graphics/object_events/pics/misc/master_ball.4bpp"); +const u16 gObjectEventPal_MasterBall[] = INCBIN_U16("graphics/object_events/palettes/master_ball.gbapal"); +const u32 gObjectEventPic_SafariBall[] = INCBIN_U32("graphics/object_events/pics/misc/safari_ball.4bpp"); +const u16 gObjectEventPal_SafariBall[] = INCBIN_U16("graphics/object_events/palettes/safari_ball.gbapal"); +const u32 gObjectEventPic_NetBall[] = INCBIN_U32("graphics/object_events/pics/misc/net_ball.4bpp"); +const u16 gObjectEventPal_NetBall[] = INCBIN_U16("graphics/object_events/palettes/net_ball.gbapal"); +const u32 gObjectEventPic_DiveBall[] = INCBIN_U32("graphics/object_events/pics/misc/dive_ball.4bpp"); +const u16 gObjectEventPal_DiveBall[] = INCBIN_U16("graphics/object_events/palettes/dive_ball.gbapal"); +const u32 gObjectEventPic_NestBall[] = INCBIN_U32("graphics/object_events/pics/misc/nest_ball.4bpp"); +const u16 gObjectEventPal_NestBall[] = INCBIN_U16("graphics/object_events/palettes/nest_ball.gbapal"); +const u32 gObjectEventPic_RepeatBall[] = INCBIN_U32("graphics/object_events/pics/misc/repeat_ball.4bpp"); +const u16 gObjectEventPal_RepeatBall[] = INCBIN_U16("graphics/object_events/palettes/repeat_ball.gbapal"); +const u32 gObjectEventPic_TimerBall[] = INCBIN_U32("graphics/object_events/pics/misc/timer_ball.4bpp"); +const u16 gObjectEventPal_TimerBall[] = INCBIN_U16("graphics/object_events/palettes/timer_ball.gbapal"); +const u32 gObjectEventPic_LuxuryBall[] = INCBIN_U32("graphics/object_events/pics/misc/luxury_ball.4bpp"); +const u16 gObjectEventPal_LuxuryBall[] = INCBIN_U16("graphics/object_events/palettes/luxury_ball.gbapal"); +const u32 gObjectEventPic_PremierBall[] = INCBIN_U32("graphics/object_events/pics/misc/premier_ball.4bpp"); +const u16 gObjectEventPal_PremierBall[] = INCBIN_U16("graphics/object_events/palettes/premier_ball.gbapal"); const u32 gObjectEventPic_ProfBirch[] = INCBIN_U32("graphics/object_events/pics/people/prof_birch.4bpp"); const u32 gObjectEventPic_ReporterM[] = INCBIN_U32("graphics/object_events/pics/people/reporter_m.4bpp"); const u32 gObjectEventPic_ReporterF[] = INCBIN_U32("graphics/object_events/pics/people/reporter_f.4bpp"); @@ -331,6 +353,7 @@ const u32 gFieldEffectObjectPic_AshPuff[] = INCBIN_U32("graphics/field_effects/p const u32 gFieldEffectObjectPic_AshLaunch[] = INCBIN_U32("graphics/field_effects/pics/ash_launch.4bpp"); const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/field_effects/pics/bubbles.4bpp"); const u32 gFieldEffectObjectPic_SmallSparkle[] = INCBIN_U32("graphics/field_effects/pics/small_sparkle.4bpp"); +const u32 gFieldEffectObjectPic_ExpandingSparkle[] = INCBIN_U32("graphics/field_effects/pics/expanding_sparkle.4bpp"); const u16 gFieldEffectPal_SmallSparkle[] = INCBIN_U16("graphics/field_effects/palettes/small_sparkle.gbapal"); const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/field_effects/pics/bird.4bpp"); const u32 gObjectEventPic_Juan[] = INCBIN_U32("graphics/object_events/pics/people/gym_leaders/juan.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index eba944bcb..061305dfe 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -59,6 +59,18 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Nurse, sPicTable_Nurse, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ItemBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreatBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_GREAT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GreatBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UltraBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_ULTRA_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UltraBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MasterBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_MASTER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MasterBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SafariBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_SAFARI_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SafariBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NetBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NET_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_NetBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiveBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DIVE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DiveBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NestBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NEST_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_NestBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_REPEAT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_RepeatBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_TIMER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TimerBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LUXURY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LuxuryBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PREMIER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PremierBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle = {TAG_NONE, FLDEFF_PAL_TAG_SMALL_SPARKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, ExpandingSparkleTable, sPicTable_ExpandingSparkle, ExpandingSparkleAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; @@ -244,421 +256,421 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = 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_Lugia, 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_HoOh, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bulbasaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur = {0xFFFF, OBJ_EVENT_PAL_TAG_IVYSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ivysaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur = {0xFFFF, OBJ_EVENT_PAL_TAG_VENUSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venusaur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMANDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmander, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMELEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmeleon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charizard, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSLASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandslash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_F, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_F, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bulbasaur = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bulbasaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ivysaur = {0xFFFF, OBJ_EVENT_PAL_TAG_IVYSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ivysaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venusaur = {0xFFFF, OBJ_EVENT_PAL_TAG_VENUSAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venusaur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmander = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMANDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmander, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charmeleon = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARMELEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charmeleon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Charizard = {0xFFFF, OBJ_EVENT_PAL_TAG_CHARIZARD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Charizard, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Squirtle = {0xFFFF, OBJ_EVENT_PAL_TAG_SQUIRTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Squirtle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wartortle = {0xFFFF, OBJ_EVENT_PAL_TAG_WARTORTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wartortle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blastoise = {0xFFFF, OBJ_EVENT_PAL_TAG_BLASTOISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blastoise, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Caterpie = {0xFFFF, OBJ_EVENT_PAL_TAG_CATERPIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Caterpie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metapod = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metapod, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Butterfree = {0xFFFF, OBJ_EVENT_PAL_TAG_BUTTERFREE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Butterfree, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weedle = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weedle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kakuna = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEDLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kakuna, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beedrill = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beedrill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgey = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeotto = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOTTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeotto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pidgeot = {0xFFFF, OBJ_EVENT_PAL_TAG_PIDGEOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pidgeot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rattata = {0xFFFF, OBJ_EVENT_PAL_TAG_RATTATA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rattata, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raticate = {0xFFFF, OBJ_EVENT_PAL_TAG_RATICATE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raticate, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow = {0xFFFF, OBJ_EVENT_PAL_TAG_SPEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spearow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow = {0xFFFF, OBJ_EVENT_PAL_TAG_FEAROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Fearow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans = {0xFFFF, OBJ_EVENT_PAL_TAG_EKANS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ekans, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arbok, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_PIKACHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pikachu_Follow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu = {0xFFFF, OBJ_EVENT_PAL_TAG_RAICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raichu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSHREW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandshrew, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash = {0xFFFF, OBJ_EVENT_PAL_TAG_SANDSLASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sandslash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_F = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_F, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_F, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorina = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORINA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorina, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoqueen = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOQUEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoqueen, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoran_M = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoran_M, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidorino = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDORAN_M, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidorino, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nidoking = {0xFFFF, OBJ_EVENT_PAL_TAG_NIDOKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nidoking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefairy = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefairy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clefable = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFABLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clefable, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vulpix = {0xFFFF, OBJ_EVENT_PAL_TAG_VULPIX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vulpix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninetales = {0xFFFF, OBJ_EVENT_PAL_TAG_NINETALES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninetales, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jigglypuff = {0xFFFF, OBJ_EVENT_PAL_TAG_JIGGLYPUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jigglypuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wigglytuff = {0xFFFF, OBJ_EVENT_PAL_TAG_WIGGLYTUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wigglytuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zubat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zubat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golbat = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golbat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Oddish = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Oddish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gloom = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gloom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vileplume = {0xFFFF, OBJ_EVENT_PAL_TAG_GLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vileplume, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Paras = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Paras, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Parasect = {0xFFFF, OBJ_EVENT_PAL_TAG_PARAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Parasect, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venonat = {0xFFFF, OBJ_EVENT_PAL_TAG_VENONAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venonat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Venomoth = {0xFFFF, OBJ_EVENT_PAL_TAG_VENOMOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Venomoth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Diglett = {0xFFFF, OBJ_EVENT_PAL_TAG_DIGLETT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Diglett, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dugtrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DUGTRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dugtrio, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meowth = {0xFFFF, OBJ_EVENT_PAL_TAG_MEOWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meowth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Persian = {0xFFFF, OBJ_EVENT_PAL_TAG_PERSIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Persian, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Psyduck = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Psyduck, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golduck = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDUCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golduck, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mankey = {0xFFFF, OBJ_EVENT_PAL_TAG_MANKEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mankey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Primeape = {0xFFFF, OBJ_EVENT_PAL_TAG_PRIMEAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Primeape, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Growlithe = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Growlithe, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arcanine = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCANINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arcanine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwag = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWAG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwag, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwhirl = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwhirl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poliwrath = {0xFFFF, OBJ_EVENT_PAL_TAG_POLIWHIRL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poliwrath, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abra = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kadabra = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kadabra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Alakazam = {0xFFFF, OBJ_EVENT_PAL_TAG_KADABRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Alakazam, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machop = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machop, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machoke = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machoke, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Machamp = {0xFFFF, OBJ_EVENT_PAL_TAG_MACHAMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Machamp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellsprout = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellsprout, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weepinbell = {0xFFFF, OBJ_EVENT_PAL_TAG_WEEPINBELL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weepinbell, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Victreebel = {0xFFFF, OBJ_EVENT_PAL_TAG_VICTREEBEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Victreebel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacool = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACOOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacool, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tentacruel = {0xFFFF, OBJ_EVENT_PAL_TAG_TENTACRUEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tentacruel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Geodude = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Geodude, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Graveler = {0xFFFF, OBJ_EVENT_PAL_TAG_GRAVELER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Graveler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Golem = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLEM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Golem, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ponyta = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ponyta, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rapidash = {0xFFFF, OBJ_EVENT_PAL_TAG_PONYTA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rapidash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowpoke = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWPOKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowpoke, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowbro = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWBRO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowbro, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnemite = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnemite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magneton = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEMITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magneton, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Farfetchd = {0xFFFF, OBJ_EVENT_PAL_TAG_FARFETCHD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Farfetchd, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Doduo = {0xFFFF, OBJ_EVENT_PAL_TAG_DODUO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Doduo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dodrio = {0xFFFF, OBJ_EVENT_PAL_TAG_DODRIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dodrio, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seel = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dewgong = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dewgong, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grimer = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grimer, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Muk = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Muk, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellder = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLDER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellder, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cloyster = {0xFFFF, OBJ_EVENT_PAL_TAG_CLOYSTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cloyster, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastly = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Haunter = {0xFFFF, OBJ_EVENT_PAL_TAG_HAUNTER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Haunter, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gengar = {0xFFFF, OBJ_EVENT_PAL_TAG_GENGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gengar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Onix = {0xFFFF, OBJ_EVENT_PAL_TAG_BEEDRILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Onix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drowzee = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drowzee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hypno = {0xFFFF, OBJ_EVENT_PAL_TAG_HYPNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hypno, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Krabby = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth, gObjectEventPicTable_Krabby, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingler = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Kingler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Voltorb = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Voltorb, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrode = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLTORB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrode, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggcute = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggcute, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exeggutor = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGUTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exeggutor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cubone = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Cubone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marowak = {0xFFFF, OBJ_EVENT_PAL_TAG_CUBONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Marowak, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonlee = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONLEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonlee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmonchan = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONCHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmonchan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickitung = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKITUNG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickitung, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Koffing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Koffing, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weezing = {0xFFFF, OBJ_EVENT_PAL_TAG_KOFFING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Weezing, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyhorn = {0xFFFF, OBJ_EVENT_PAL_TAG_BULBASAUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyhorn, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhydon = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhydon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chansey = {0xFFFF, OBJ_EVENT_PAL_TAG_CHANSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chansey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangela = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGELA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangela, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kangaskhan = {0xFFFF, OBJ_EVENT_PAL_TAG_KANGASKHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kangaskhan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Horsea = {0xFFFF, OBJ_EVENT_PAL_TAG_HORSEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Horsea, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seadra = {0xFFFF, OBJ_EVENT_PAL_TAG_SEADRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seadra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Goldeen = {0xFFFF, OBJ_EVENT_PAL_TAG_GOLDEEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Goldeen, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SEAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seaking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staryu = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staryu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starmie = {0xFFFF, OBJ_EVENT_PAL_TAG_STARMIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starmie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mr_Mime = {0xFFFF, OBJ_EVENT_PAL_TAG_MR_MIME, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mr_Mime, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scyther = {0xFFFF, OBJ_EVENT_PAL_TAG_SCYTHER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scyther, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jynx = {0xFFFF, OBJ_EVENT_PAL_TAG_JYNX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jynx, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electabuzz = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electabuzz, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pinsir = {0xFFFF, OBJ_EVENT_PAL_TAG_PINSIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pinsir, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tauros = {0xFFFF, OBJ_EVENT_PAL_TAG_TAUROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tauros, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magikarp = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGIKARP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magikarp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gyarados = {0xFFFF, OBJ_EVENT_PAL_TAG_GYARADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gyarados, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lapras = {0xFFFF, OBJ_EVENT_PAL_TAG_LAPRAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lapras, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ditto = {0xFFFF, OBJ_EVENT_PAL_TAG_ARBOK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ditto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Eevee = {0xFFFF, OBJ_EVENT_PAL_TAG_EEVEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Eevee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vaporeon = {0xFFFF, OBJ_EVENT_PAL_TAG_VAPOREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vaporeon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jolteon = {0xFFFF, OBJ_EVENT_PAL_TAG_JOLTEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jolteon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flareon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flareon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omanyte = {0xFFFF, OBJ_EVENT_PAL_TAG_OMANYTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omanyte, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Omastar = {0xFFFF, OBJ_EVENT_PAL_TAG_OMASTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Omastar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabuto = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabuto, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kabutops = {0xFFFF, OBJ_EVENT_PAL_TAG_KABUTOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kabutops, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aerodactyl = {0xFFFF, OBJ_EVENT_PAL_TAG_AERODACTYL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aerodactyl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorlax = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorlax, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Articuno = {0xFFFF, OBJ_EVENT_PAL_TAG_ARTICUNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Articuno, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zapdos = {0xFFFF, OBJ_EVENT_PAL_TAG_ZAPDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zapdos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Moltres = {0xFFFF, OBJ_EVENT_PAL_TAG_MOLTRES, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Moltres, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dratini = {0xFFFF, OBJ_EVENT_PAL_TAG_DRATINI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dratini, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonair = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONAIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonair, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dragonite = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAGONITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dragonite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mewtwo = {0xFFFF, OBJ_EVENT_PAL_TAG_MEWTWO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mewtwo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_MEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mew_Follower, FollowerAffineTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava = {0xFFFF, OBJ_EVENT_PAL_TAG_QUILAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quilava, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion = {0xFFFF, OBJ_EVENT_PAL_TAG_TYPHLOSION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Typhlosion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile = {0xFFFF, OBJ_EVENT_PAL_TAG_TOTODILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Totodile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw = {0xFFFF, OBJ_EVENT_PAL_TAG_CROCONAW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croconaw, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr = {0xFFFF, OBJ_EVENT_PAL_TAG_FERALIGATR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feraligatr, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret = {0xFFFF, OBJ_EVENT_PAL_TAG_SENTRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sentret, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Furret, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot = {0xFFFF, OBJ_EVENT_PAL_TAG_HOOTHOOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoothoot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl = {0xFFFF, OBJ_EVENT_PAL_TAG_NOCTOWL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Noctowl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDYBA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledyba, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledian, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINARAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinarak, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados = {0xFFFF, OBJ_EVENT_PAL_TAG_ARIADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ariados, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat = {0xFFFF, OBJ_EVENT_PAL_TAG_CROBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crobat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINCHOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chinchou, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn = {0xFFFF, OBJ_EVENT_PAL_TAG_LANTURN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lanturn, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, OBJ_EVENT_PAL_TAG_PICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pichu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip = {0xFFFF, OBJ_EVENT_PAL_TAG_HOPPIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoppip, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom = {0xFFFF, OBJ_EVENT_PAL_TAG_SKIPLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skiploom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff = {0xFFFF, OBJ_EVENT_PAL_TAG_JUMPLUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jumpluff, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aipom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor = {0xFFFF, OBJ_EVENT_PAL_TAG_SCIZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scizor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUCKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuckle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFFF, OBJ_EVENT_PAL_TAG_HERACROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heracross, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola = {0xFFFF, OBJ_EVENT_PAL_TAG_CORSOLA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corsola, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid = {0xFFFF, OBJ_EVENT_PAL_TAG_REMORAID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Remoraid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFFF, OBJ_EVENT_PAL_TAG_OCTILLERY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Octillery, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan = {0xFFFF, OBJ_EVENT_PAL_TAG_DONPHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Donphan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler = {0xFFFF, OBJ_EVENT_PAL_TAG_STANTLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stantler, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle = {0xFFFF, OBJ_EVENT_PAL_TAG_SMEARGLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smeargle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue = {0xFFFF, OBJ_EVENT_PAL_TAG_TYROGUE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyrogue, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONTOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmontop, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum = {0xFFFF, OBJ_EVENT_PAL_TAG_SMOOCHUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smoochum, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Elekid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magby, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank = {0xFFFF, OBJ_EVENT_PAL_TAG_MILTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Miltank, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey = {0xFFFF, OBJ_EVENT_PAL_TAG_BLISSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blissey, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, OBJ_EVENT_PAL_TAG_RAIKOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raikou, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, OBJ_EVENT_PAL_TAG_CELEBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Celebi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chikorita = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chikorita, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bayleef = {0xFFFF, OBJ_EVENT_PAL_TAG_BAYLEEF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bayleef, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meganium = {0xFFFF, OBJ_EVENT_PAL_TAG_MEGANIUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meganium, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cyndaquil = {0xFFFF, OBJ_EVENT_PAL_TAG_CYNDAQUIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cyndaquil, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quilava = {0xFFFF, OBJ_EVENT_PAL_TAG_QUILAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quilava, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Typhlosion = {0xFFFF, OBJ_EVENT_PAL_TAG_TYPHLOSION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Typhlosion, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Totodile = {0xFFFF, OBJ_EVENT_PAL_TAG_TOTODILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Totodile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croconaw = {0xFFFF, OBJ_EVENT_PAL_TAG_CROCONAW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croconaw, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feraligatr = {0xFFFF, OBJ_EVENT_PAL_TAG_FERALIGATR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feraligatr, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sentret = {0xFFFF, OBJ_EVENT_PAL_TAG_SENTRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sentret, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Furret = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Furret, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoothoot = {0xFFFF, OBJ_EVENT_PAL_TAG_HOOTHOOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoothoot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noctowl = {0xFFFF, OBJ_EVENT_PAL_TAG_NOCTOWL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Noctowl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledyba = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDYBA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledyba, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ledian = {0xFFFF, OBJ_EVENT_PAL_TAG_LEDIAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ledian, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinarak = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINARAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinarak, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ariados = {0xFFFF, OBJ_EVENT_PAL_TAG_ARIADOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ariados, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crobat = {0xFFFF, OBJ_EVENT_PAL_TAG_CROBAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crobat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chinchou = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINCHOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chinchou, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lanturn = {0xFFFF, OBJ_EVENT_PAL_TAG_LANTURN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lanturn, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pichu = {0xFFFF, OBJ_EVENT_PAL_TAG_PICHU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pichu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cleffa = {0xFFFF, OBJ_EVENT_PAL_TAG_CLEFFA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cleffa, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Igglybuff = {0xFFFF, OBJ_EVENT_PAL_TAG_IGGLYBUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Igglybuff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togepi = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togepi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togetic = {0xFFFF, OBJ_EVENT_PAL_TAG_MUK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togetic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Natu = {0xFFFF, OBJ_EVENT_PAL_TAG_NATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Natu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Xatu = {0xFFFF, OBJ_EVENT_PAL_TAG_XATU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Xatu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mareep = {0xFFFF, OBJ_EVENT_PAL_TAG_MAREEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mareep, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flaaffy = {0xFFFF, OBJ_EVENT_PAL_TAG_FLAAFFY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flaaffy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ampharos = {0xFFFF, OBJ_EVENT_PAL_TAG_AMPHAROS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ampharos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bellossom = {0xFFFF, OBJ_EVENT_PAL_TAG_BELLOSSOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bellossom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marill = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZUMARILL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azumarill, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_SUDOWOODO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sudowoodo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Politoed = {0xFFFF, OBJ_EVENT_PAL_TAG_POLITOED, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Politoed, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hoppip = {0xFFFF, OBJ_EVENT_PAL_TAG_HOPPIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hoppip, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skiploom = {0xFFFF, OBJ_EVENT_PAL_TAG_SKIPLOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skiploom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jumpluff = {0xFFFF, OBJ_EVENT_PAL_TAG_JUMPLUFF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jumpluff, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aipom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunkern = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNKERN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunkern, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sunflora = {0xFFFF, OBJ_EVENT_PAL_TAG_SUNFLORA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sunflora, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanma = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanma, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wooper = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wooper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Quagsire = {0xFFFF, OBJ_EVENT_PAL_TAG_QUAGSIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Quagsire, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Espeon = {0xFFFF, OBJ_EVENT_PAL_TAG_ESPEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Espeon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Umbreon = {0xFFFF, OBJ_EVENT_PAL_TAG_UMBREON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Umbreon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Murkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_MURKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Murkrow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slowking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLOWKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slowking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Misdreavus = {0xFFFF, OBJ_EVENT_PAL_TAG_MISDREAVUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Misdreavus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_A = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_A, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_B = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_B, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_C = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_C, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_D = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_D, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_E = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_E, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_F = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_F, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_G = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_G, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_H = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_H, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_I = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_I, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_J = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_J, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_K = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_K, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_L = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_L, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_M = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_M, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_N = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_N, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_O = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_O, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_P = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_P, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Q = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Q, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_R = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_R, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_S = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_S, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_T = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_T, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_U = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_U, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_V = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_V, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_W = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_W, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_X = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_X, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Y = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Y, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Z = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Z, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Exclamation = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Exclamation, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Unown_Question = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Unown_Question, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wobbuffet = {0xFFFF, OBJ_EVENT_PAL_TAG_WOBBUFFET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wobbuffet, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girafarig = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRAFARIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Girafarig, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pineco = {0xFFFF, OBJ_EVENT_PAL_TAG_PINECO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pineco, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Forretress = {0xFFFF, OBJ_EVENT_PAL_TAG_FORRETRESS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Forretress, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dunsparce = {0xFFFF, OBJ_EVENT_PAL_TAG_DUNSPARCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dunsparce, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gligar = {0xFFFF, OBJ_EVENT_PAL_TAG_GLIGAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gligar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steelix = {0xFFFF, OBJ_EVENT_PAL_TAG_EXEGGCUTE, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Steelix, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snubbull = {0xFFFF, OBJ_EVENT_PAL_TAG_SNUBBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snubbull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Granbull = {0xFFFF, OBJ_EVENT_PAL_TAG_GRANBULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Granbull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Qwilfish = {0xFFFF, OBJ_EVENT_PAL_TAG_QWILFISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Qwilfish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scizor = {0xFFFF, OBJ_EVENT_PAL_TAG_SCIZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Scizor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuckle = {0xFFFF, OBJ_EVENT_PAL_TAG_SHUCKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuckle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heracross = {0xFFFF, OBJ_EVENT_PAL_TAG_HERACROSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heracross, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sneasel = {0xFFFF, OBJ_EVENT_PAL_TAG_SNEASEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Sneasel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teddiursa = {0xFFFF, OBJ_EVENT_PAL_TAG_TEDDIURSA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Teddiursa, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ursaring = {0xFFFF, OBJ_EVENT_PAL_TAG_URSARING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ursaring, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slugma = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slugma, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magcargo = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGCARGO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Magcargo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swinub = {0xFFFF, OBJ_EVENT_PAL_TAG_SWINUB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swinub, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piloswine = {0xFFFF, OBJ_EVENT_PAL_TAG_PILOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piloswine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corsola = {0xFFFF, OBJ_EVENT_PAL_TAG_CORSOLA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corsola, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Remoraid = {0xFFFF, OBJ_EVENT_PAL_TAG_REMORAID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Remoraid, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Octillery = {0xFFFF, OBJ_EVENT_PAL_TAG_OCTILLERY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Octillery, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delibird = {0xFFFF, OBJ_EVENT_PAL_TAG_DELIBIRD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delibird, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantine = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skarmory = {0xFFFF, OBJ_EVENT_PAL_TAG_SKARMORY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skarmory, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndour = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndour, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Houndoom = {0xFFFF, OBJ_EVENT_PAL_TAG_HOUNDOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Houndoom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kingdra = {0xFFFF, OBJ_EVENT_PAL_TAG_KINGDRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kingdra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phanpy = {0xFFFF, OBJ_EVENT_PAL_TAG_PHANPY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phanpy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Donphan = {0xFFFF, OBJ_EVENT_PAL_TAG_DONPHAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Donphan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Porygon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGON2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Porygon2, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stantler = {0xFFFF, OBJ_EVENT_PAL_TAG_STANTLER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stantler, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smeargle = {0xFFFF, OBJ_EVENT_PAL_TAG_SMEARGLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smeargle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyrogue = {0xFFFF, OBJ_EVENT_PAL_TAG_TYROGUE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyrogue, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hitmontop = {0xFFFF, OBJ_EVENT_PAL_TAG_HITMONTOP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hitmontop, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Smoochum = {0xFFFF, OBJ_EVENT_PAL_TAG_SMOOCHUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Smoochum, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Elekid = {0xFFFF, OBJ_EVENT_PAL_TAG_ELEKID, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Elekid, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magby = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGBY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magby, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Miltank = {0xFFFF, OBJ_EVENT_PAL_TAG_MILTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Miltank, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blissey = {0xFFFF, OBJ_EVENT_PAL_TAG_BLISSEY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blissey, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raikou = {0xFFFF, OBJ_EVENT_PAL_TAG_RAIKOU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Raikou, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Entei = {0xFFFF, OBJ_EVENT_PAL_TAG_ENTEI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Entei, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Suicune = {0xFFFF, OBJ_EVENT_PAL_TAG_SUICUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Suicune, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Larvitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Larvitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pupitar = {0xFFFF, OBJ_EVENT_PAL_TAG_LARVITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pupitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tyranitar = {0xFFFF, OBJ_EVENT_PAL_TAG_TYRANITAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tyranitar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lugia_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_HoOh_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Celebi = {0xFFFF, OBJ_EVENT_PAL_TAG_CELEBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Celebi, FollowerAffineTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Treecko = {0xFFFF, OBJ_EVENT_PAL_TAG_TREECKO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Treecko, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grovyle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROVYLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grovyle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sceptile = {0xFFFF, OBJ_EVENT_PAL_TAG_SCEPTILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sceptile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combusken = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combusken, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blaziken = {0xFFFF, OBJ_EVENT_PAL_TAG_BLAZIKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blaziken, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mudkip = {0xFFFF, OBJ_EVENT_PAL_TAG_MUDKIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mudkip, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marshtomp, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swampert = {0xFFFF, OBJ_EVENT_PAL_TAG_SWAMPERT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swampert, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poochyena_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mightyena = {0xFFFF, OBJ_EVENT_PAL_TAG_MIGHTYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mightyena, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zigzagoon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Linoone = {0xFFFF, OBJ_EVENT_PAL_TAG_LINOONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Linoone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wurmple = {0xFFFF, OBJ_EVENT_PAL_TAG_WURMPLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wurmple, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beautifly = {0xFFFF, OBJ_EVENT_PAL_TAG_BEAUTIFLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beautifly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cascoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cascoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dustox = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSTOX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dustox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lotad = {0xFFFF, OBJ_EVENT_PAL_TAG_LOTAD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lotad, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lombre = {0xFFFF, OBJ_EVENT_PAL_TAG_LOMBRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lombre, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ludicolo = {0xFFFF, OBJ_EVENT_PAL_TAG_LUDICOLO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ludicolo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seedot = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEDOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seedot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nuzleaf = {0xFFFF, OBJ_EVENT_PAL_TAG_NUZLEAF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nuzleaf, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shiftry = {0xFFFF, OBJ_EVENT_PAL_TAG_SHIFTRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shiftry, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Taillow = {0xFFFF, OBJ_EVENT_PAL_TAG_TAILLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Taillow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swellow = {0xFFFF, OBJ_EVENT_PAL_TAG_SWELLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swellow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_WINGULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wingull_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pelipper = {0xFFFF, OBJ_EVENT_PAL_TAG_PELIPPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pelipper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gardevoir = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gardevoir, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Surskit = {0xFFFF, OBJ_EVENT_PAL_TAG_SURSKIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Surskit, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Masquerain = {0xFFFF, OBJ_EVENT_PAL_TAG_MASQUERAIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Masquerain, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shroomish = {0xFFFF, OBJ_EVENT_PAL_TAG_SHROOMISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shroomish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Breloom = {0xFFFF, OBJ_EVENT_PAL_TAG_BRELOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Breloom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slakoth = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slakoth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vigoroth_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vigoroth_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slaking, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nincada = {0xFFFF, OBJ_EVENT_PAL_TAG_NINCADA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nincada, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninjask = {0xFFFF, OBJ_EVENT_PAL_TAG_NINJASK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninjask, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shedinja = {0xFFFF, OBJ_EVENT_PAL_TAG_SHEDINJA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shedinja, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whismur = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISMUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whismur, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exploud = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exploud, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Makuhita = {0xFFFF, OBJ_EVENT_PAL_TAG_MAKUHITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Makuhita, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hariyama = {0xFFFF, OBJ_EVENT_PAL_TAG_HARIYAMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hariyama, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azurill_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nosepass = {0xFFFF, OBJ_EVENT_PAL_TAG_NOSEPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nosepass, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delcatty = {0xFFFF, OBJ_EVENT_PAL_TAG_DELCATTY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delcatty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sableye = {0xFFFF, OBJ_EVENT_PAL_TAG_SABLEYE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sableye, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mawile = {0xFFFF, OBJ_EVENT_PAL_TAG_MAWILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mawile, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lairon = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lairon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aggron = {0xFFFF, OBJ_EVENT_PAL_TAG_AGGRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aggron, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meditite = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDITITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meditite, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Medicham = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDICHAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Medicham, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrike = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRIKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manectric = {0xFFFF, OBJ_EVENT_PAL_TAG_MANECTRIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manectric, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Minun = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Minun, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Volbeat = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLBEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Volbeat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Illumise = {0xFFFF, OBJ_EVENT_PAL_TAG_ILLUMISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Illumise, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roselia = {0xFFFF, OBJ_EVENT_PAL_TAG_ROSELIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Roselia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gulpin = {0xFFFF, OBJ_EVENT_PAL_TAG_GULPIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gulpin, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swalot = {0xFFFF, OBJ_EVENT_PAL_TAG_SWALOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swalot, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carvanha = {0xFFFF, OBJ_EVENT_PAL_TAG_CARVANHA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Carvanha, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sharpedo = {0xFFFF, OBJ_EVENT_PAL_TAG_SHARPEDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sharpedo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailmer = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailmer, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailord = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILORD, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailord, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Numel = {0xFFFF, OBJ_EVENT_PAL_TAG_NUMEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Numel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camerupt = {0xFFFF, OBJ_EVENT_PAL_TAG_CAMERUPT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Camerupt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torkoal = {0xFFFF, OBJ_EVENT_PAL_TAG_TORKOAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torkoal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spoink = {0xFFFF, OBJ_EVENT_PAL_TAG_SPOINK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spoink, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grumpig = {0xFFFF, OBJ_EVENT_PAL_TAG_GRUMPIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grumpig, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinda = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINDA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinda, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trapinch = {0xFFFF, OBJ_EVENT_PAL_TAG_TRAPINCH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Trapinch, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vibrava = {0xFFFF, OBJ_EVENT_PAL_TAG_VIBRAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vibrava, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flygon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flygon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacnea = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacnea, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Altaria, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zangoose = {0xFFFF, OBJ_EVENT_PAL_TAG_ZANGOOSE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zangoose, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seviper = {0xFFFF, OBJ_EVENT_PAL_TAG_SEVIPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seviper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Solrock = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Solrock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Barboach = {0xFFFF, OBJ_EVENT_PAL_TAG_BARBOACH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Barboach, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whiscash = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISCASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whiscash, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corphish = {0xFFFF, OBJ_EVENT_PAL_TAG_CORPHISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corphish, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crawdaunt = {0xFFFF, OBJ_EVENT_PAL_TAG_CRAWDAUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crawdaunt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Baltoy = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Baltoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Claydol = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAYDOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Claydol, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lileep = {0xFFFF, OBJ_EVENT_PAL_TAG_LILEEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lileep, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cradily = {0xFFFF, OBJ_EVENT_PAL_TAG_CRADILY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cradily, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anorith = {0xFFFF, OBJ_EVENT_PAL_TAG_ANORITH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Anorith, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Armaldo = {0xFFFF, OBJ_EVENT_PAL_TAG_ARMALDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Armaldo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feebas = {0xFFFF, OBJ_EVENT_PAL_TAG_FEEBAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feebas, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Milotic = {0xFFFF, OBJ_EVENT_PAL_TAG_MILOTIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Milotic, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KECLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kecleon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Banette = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Banette, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Duskull = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Duskull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSCLOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusclops_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tropius = {0xFFFF, OBJ_EVENT_PAL_TAG_TROPIUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tropius, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimecho = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIMECHO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chimecho, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Absol = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Absol, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wynaut = {0xFFFF, OBJ_EVENT_PAL_TAG_WYNAUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wynaut, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorunt = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorunt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glalie = {0xFFFF, OBJ_EVENT_PAL_TAG_GLALIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glalie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spheal = {0xFFFF, OBJ_EVENT_PAL_TAG_SPHEAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spheal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sealeo = {0xFFFF, OBJ_EVENT_PAL_TAG_SEALEO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sealeo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Walrein = {0xFFFF, OBJ_EVENT_PAL_TAG_WALREIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Walrein, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clamperl = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAMPERL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clamperl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Huntail = {0xFFFF, OBJ_EVENT_PAL_TAG_HUNTAIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Huntail, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gorebyss = {0xFFFF, OBJ_EVENT_PAL_TAG_GOREBYSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gorebyss, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Relicanth = {0xFFFF, OBJ_EVENT_PAL_TAG_RELICANTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Relicanth, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luvdisc = {0xFFFF, OBJ_EVENT_PAL_TAG_LUVDISC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luvdisc, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bagon = {0xFFFF, OBJ_EVENT_PAL_TAG_BAGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bagon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shelgon = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shelgon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Salamence = {0xFFFF, OBJ_EVENT_PAL_TAG_SALAMENCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Salamence, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beldum = {0xFFFF, OBJ_EVENT_PAL_TAG_BELDUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beldum, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metang = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metang, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regirock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGICE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regice, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGISTEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Registeel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latias, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kyogre_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Groudon_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_RAYQUAZA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_Rayquaza, gObjectEventPicTable_Rayquaza_Follower, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jirachi = {0xFFFF, OBJ_EVENT_PAL_TAG_JIRACHI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jirachi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Normal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Attack, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Defense, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Speed, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Treecko = {0xFFFF, OBJ_EVENT_PAL_TAG_TREECKO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Treecko, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grovyle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROVYLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grovyle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sceptile = {0xFFFF, OBJ_EVENT_PAL_TAG_SCEPTILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sceptile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torchic = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torchic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combusken = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBUSKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combusken, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Blaziken = {0xFFFF, OBJ_EVENT_PAL_TAG_BLAZIKEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Blaziken, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mudkip = {0xFFFF, OBJ_EVENT_PAL_TAG_MUDKIP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mudkip, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Marshtomp = {0xFFFF, OBJ_EVENT_PAL_TAG_MARSHTOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Marshtomp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swampert = {0xFFFF, OBJ_EVENT_PAL_TAG_SWAMPERT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swampert, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Poochyena_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mightyena = {0xFFFF, OBJ_EVENT_PAL_TAG_MIGHTYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mightyena, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zigzagoon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Linoone = {0xFFFF, OBJ_EVENT_PAL_TAG_LINOONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Linoone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wurmple = {0xFFFF, OBJ_EVENT_PAL_TAG_WURMPLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wurmple, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Silcoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Silcoon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beautifly = {0xFFFF, OBJ_EVENT_PAL_TAG_BEAUTIFLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beautifly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cascoon = {0xFFFF, OBJ_EVENT_PAL_TAG_CASCOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cascoon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dustox = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSTOX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dustox, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lotad = {0xFFFF, OBJ_EVENT_PAL_TAG_LOTAD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lotad, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lombre = {0xFFFF, OBJ_EVENT_PAL_TAG_LOMBRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lombre, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ludicolo = {0xFFFF, OBJ_EVENT_PAL_TAG_LUDICOLO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ludicolo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seedot = {0xFFFF, OBJ_EVENT_PAL_TAG_SEEDOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seedot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nuzleaf = {0xFFFF, OBJ_EVENT_PAL_TAG_NUZLEAF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nuzleaf, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shiftry = {0xFFFF, OBJ_EVENT_PAL_TAG_SHIFTRY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shiftry, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Taillow = {0xFFFF, OBJ_EVENT_PAL_TAG_TAILLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Taillow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swellow = {0xFFFF, OBJ_EVENT_PAL_TAG_SWELLOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swellow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_WINGULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wingull_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pelipper = {0xFFFF, OBJ_EVENT_PAL_TAG_PELIPPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pelipper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ralts = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ralts, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kirlia_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gardevoir = {0xFFFF, OBJ_EVENT_PAL_TAG_GARDEVOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gardevoir, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Surskit = {0xFFFF, OBJ_EVENT_PAL_TAG_SURSKIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Surskit, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Masquerain = {0xFFFF, OBJ_EVENT_PAL_TAG_MASQUERAIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Masquerain, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shroomish = {0xFFFF, OBJ_EVENT_PAL_TAG_SHROOMISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shroomish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Breloom = {0xFFFF, OBJ_EVENT_PAL_TAG_BRELOOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Breloom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slakoth = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKOTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slakoth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vigoroth_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vigoroth_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Slaking = {0xFFFF, OBJ_EVENT_PAL_TAG_SLAKING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Slaking, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nincada = {0xFFFF, OBJ_EVENT_PAL_TAG_NINCADA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nincada, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ninjask = {0xFFFF, OBJ_EVENT_PAL_TAG_NINJASK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ninjask, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shedinja = {0xFFFF, OBJ_EVENT_PAL_TAG_SHEDINJA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shedinja, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whismur = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISMUR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whismur, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Loudred = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Loudred, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Exploud = {0xFFFF, OBJ_EVENT_PAL_TAG_EXPLOUD, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Exploud, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Makuhita = {0xFFFF, OBJ_EVENT_PAL_TAG_MAKUHITA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Makuhita, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hariyama = {0xFFFF, OBJ_EVENT_PAL_TAG_HARIYAMA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hariyama, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azurill_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nosepass = {0xFFFF, OBJ_EVENT_PAL_TAG_NOSEPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Nosepass, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_FURRET, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skitty_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Delcatty = {0xFFFF, OBJ_EVENT_PAL_TAG_DELCATTY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Delcatty, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sableye = {0xFFFF, OBJ_EVENT_PAL_TAG_SABLEYE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sableye, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mawile = {0xFFFF, OBJ_EVENT_PAL_TAG_MAWILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mawile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aron = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aron, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lairon = {0xFFFF, OBJ_EVENT_PAL_TAG_LAIRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lairon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Aggron = {0xFFFF, OBJ_EVENT_PAL_TAG_AGGRON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Aggron, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Meditite = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDITITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Meditite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Medicham = {0xFFFF, OBJ_EVENT_PAL_TAG_MEDICHAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Medicham, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electrike = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTRIKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electrike, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manectric = {0xFFFF, OBJ_EVENT_PAL_TAG_MANECTRIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manectric, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Plusle = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Plusle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Minun = {0xFFFF, OBJ_EVENT_PAL_TAG_MINUN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Minun, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Volbeat = {0xFFFF, OBJ_EVENT_PAL_TAG_VOLBEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Volbeat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Illumise = {0xFFFF, OBJ_EVENT_PAL_TAG_ILLUMISE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Illumise, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roselia = {0xFFFF, OBJ_EVENT_PAL_TAG_ROSELIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Roselia, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gulpin = {0xFFFF, OBJ_EVENT_PAL_TAG_GULPIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gulpin, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swalot = {0xFFFF, OBJ_EVENT_PAL_TAG_SWALOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swalot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carvanha = {0xFFFF, OBJ_EVENT_PAL_TAG_CARVANHA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Carvanha, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sharpedo = {0xFFFF, OBJ_EVENT_PAL_TAG_SHARPEDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sharpedo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailmer = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILMER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailmer, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wailord = {0xFFFF, OBJ_EVENT_PAL_TAG_WAILORD, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wailord, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Numel = {0xFFFF, OBJ_EVENT_PAL_TAG_NUMEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Numel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camerupt = {0xFFFF, OBJ_EVENT_PAL_TAG_CAMERUPT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Camerupt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torkoal = {0xFFFF, OBJ_EVENT_PAL_TAG_TORKOAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torkoal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spoink = {0xFFFF, OBJ_EVENT_PAL_TAG_SPOINK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spoink, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grumpig = {0xFFFF, OBJ_EVENT_PAL_TAG_GRUMPIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grumpig, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spinda = {0xFFFF, OBJ_EVENT_PAL_TAG_SPINDA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spinda, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trapinch = {0xFFFF, OBJ_EVENT_PAL_TAG_TRAPINCH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Trapinch, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vibrava = {0xFFFF, OBJ_EVENT_PAL_TAG_VIBRAVA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vibrava, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flygon = {0xFFFF, OBJ_EVENT_PAL_TAG_FLYGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Flygon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacnea = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacnea, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cacturne = {0xFFFF, OBJ_EVENT_PAL_TAG_CACNEA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cacturne, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Swablu = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Swablu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Altaria = {0xFFFF, OBJ_EVENT_PAL_TAG_ALTARIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Altaria, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zangoose = {0xFFFF, OBJ_EVENT_PAL_TAG_ZANGOOSE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Zangoose, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Seviper = {0xFFFF, OBJ_EVENT_PAL_TAG_SEVIPER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Seviper, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lunatone = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lunatone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Solrock = {0xFFFF, OBJ_EVENT_PAL_TAG_SOLROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Solrock, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Barboach = {0xFFFF, OBJ_EVENT_PAL_TAG_BARBOACH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Barboach, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Whiscash = {0xFFFF, OBJ_EVENT_PAL_TAG_WHISCASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Whiscash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Corphish = {0xFFFF, OBJ_EVENT_PAL_TAG_CORPHISH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Corphish, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Crawdaunt = {0xFFFF, OBJ_EVENT_PAL_TAG_CRAWDAUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Crawdaunt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Baltoy = {0xFFFF, OBJ_EVENT_PAL_TAG_BALTOY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Baltoy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Claydol = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAYDOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Claydol, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lileep = {0xFFFF, OBJ_EVENT_PAL_TAG_LILEEP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lileep, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cradily = {0xFFFF, OBJ_EVENT_PAL_TAG_CRADILY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cradily, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anorith = {0xFFFF, OBJ_EVENT_PAL_TAG_ANORITH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Anorith, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Armaldo = {0xFFFF, OBJ_EVENT_PAL_TAG_ARMALDO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Armaldo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Feebas = {0xFFFF, OBJ_EVENT_PAL_TAG_FEEBAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Feebas, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Milotic = {0xFFFF, OBJ_EVENT_PAL_TAG_MILOTIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Milotic, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Castform = {0xFFFF, OBJ_EVENT_PAL_TAG_AZURILL_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Castform, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_KECLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kecleon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shuppet = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shuppet, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Banette = {0xFFFF, OBJ_EVENT_PAL_TAG_BANETTE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Banette, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Duskull = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKULL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Duskull, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSCLOPS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusclops_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tropius = {0xFFFF, OBJ_EVENT_PAL_TAG_TROPIUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tropius, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimecho = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIMECHO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chimecho, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Absol = {0xFFFF, OBJ_EVENT_PAL_TAG_ABSOL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Absol, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wynaut = {0xFFFF, OBJ_EVENT_PAL_TAG_WYNAUT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wynaut, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snorunt = {0xFFFF, OBJ_EVENT_PAL_TAG_SNORUNT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snorunt, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glalie = {0xFFFF, OBJ_EVENT_PAL_TAG_GLALIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glalie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spheal = {0xFFFF, OBJ_EVENT_PAL_TAG_SPHEAL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spheal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sealeo = {0xFFFF, OBJ_EVENT_PAL_TAG_SEALEO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Sealeo, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Walrein = {0xFFFF, OBJ_EVENT_PAL_TAG_WALREIN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Walrein, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Clamperl = {0xFFFF, OBJ_EVENT_PAL_TAG_CLAMPERL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Clamperl, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Huntail = {0xFFFF, OBJ_EVENT_PAL_TAG_HUNTAIL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Huntail, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gorebyss = {0xFFFF, OBJ_EVENT_PAL_TAG_GOREBYSS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gorebyss, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Relicanth = {0xFFFF, OBJ_EVENT_PAL_TAG_RELICANTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Relicanth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luvdisc = {0xFFFF, OBJ_EVENT_PAL_TAG_LUVDISC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luvdisc, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bagon = {0xFFFF, OBJ_EVENT_PAL_TAG_BAGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bagon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shelgon = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELGON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shelgon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Salamence = {0xFFFF, OBJ_EVENT_PAL_TAG_SALAMENCE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Salamence, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beldum = {0xFFFF, OBJ_EVENT_PAL_TAG_BELDUM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Beldum, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metang = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metang, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Metagross = {0xFFFF, OBJ_EVENT_PAL_TAG_METANG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Metagross, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIROCK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regirock, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGICE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regice, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_REGISTEEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Registeel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latias, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_LATIOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Latios, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kyogre_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Groudon_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza_Follower = {0xFFFF, OBJ_EVENT_PAL_TAG_RAYQUAZA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_Rayquaza, gObjectEventPicTable_Rayquaza_Follower, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Jirachi = {0xFFFF, OBJ_EVENT_PAL_TAG_JIRACHI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Jirachi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Normal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Attack, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Defense, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Speed, FollowerAffineTable}; 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 2fb2550de..54c9d92e5 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -58,6 +58,18 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GreatBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UltraBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MasterBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SafariBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NetBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiveBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NestBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages; @@ -268,7 +280,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spearow; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fearow; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ekans; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arbok; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu_Follower; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Raichu; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandshrew; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sandslash; @@ -723,6 +735,18 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F] = &gObjectEventGraphicsInfo_CyclingTriathleteF, [OBJ_EVENT_GFX_NURSE] = &gObjectEventGraphicsInfo_Nurse, [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_ItemBall, + [OBJ_EVENT_GFX_GREAT_BALL] = &gObjectEventGraphicsInfo_GreatBall, + [OBJ_EVENT_GFX_ULTRA_BALL] = &gObjectEventGraphicsInfo_UltraBall, + [OBJ_EVENT_GFX_MASTER_BALL] = &gObjectEventGraphicsInfo_MasterBall, + [OBJ_EVENT_GFX_SAFARI_BALL] = &gObjectEventGraphicsInfo_SafariBall, + [OBJ_EVENT_GFX_NEST_BALL] = &gObjectEventGraphicsInfo_NestBall, + [OBJ_EVENT_GFX_DIVE_BALL] = &gObjectEventGraphicsInfo_DiveBall, + [OBJ_EVENT_GFX_NET_BALL] = &gObjectEventGraphicsInfo_NetBall, + [OBJ_EVENT_GFX_REPEAT_BALL] = &gObjectEventGraphicsInfo_RepeatBall, + [OBJ_EVENT_GFX_TIMER_BALL] = &gObjectEventGraphicsInfo_TimerBall, + [OBJ_EVENT_GFX_LUXURY_BALL] = &gObjectEventGraphicsInfo_LuxuryBall, + [OBJ_EVENT_GFX_PREMIER_BALL] = &gObjectEventGraphicsInfo_PremierBall, + [OBJ_EVENT_GFX_EXPANDING_SPARKLE] = &gObjectEventGraphicsInfo_ExpandingSparkle, [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, @@ -926,7 +950,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_FEAROW] = &gObjectEventGraphicsInfo_Fearow, [OBJ_EVENT_GFX_EKANS] = &gObjectEventGraphicsInfo_Ekans, [OBJ_EVENT_GFX_ARBOK] = &gObjectEventGraphicsInfo_Arbok, - [OBJ_EVENT_GFX_PIKACHU_FOLLOW] = &gObjectEventGraphicsInfo_Pikachu_Follow, + [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, [OBJ_EVENT_GFX_RAICHU] = &gObjectEventGraphicsInfo_Raichu, [OBJ_EVENT_GFX_SANDSHREW] = &gObjectEventGraphicsInfo_Sandshrew, [OBJ_EVENT_GFX_SANDSLASH] = &gObjectEventGraphicsInfo_Sandslash, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index d8b72bef9..fb5a7259e 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -747,6 +747,59 @@ static const struct SpriteFrameImage sPicTable_ItemBall[] = { obj_frame_tiles(gObjectEventPic_ItemBall), }; +static const struct SpriteFrameImage sPicTable_GreatBall[] = { + obj_frame_tiles(gObjectEventPic_GreatBall), +}; + +static const struct SpriteFrameImage sPicTable_UltraBall[] = { + obj_frame_tiles(gObjectEventPic_UltraBall), +}; + +static const struct SpriteFrameImage sPicTable_MasterBall[] = { + obj_frame_tiles(gObjectEventPic_MasterBall), +}; + +static const struct SpriteFrameImage sPicTable_SafariBall[] = { + obj_frame_tiles(gObjectEventPic_SafariBall), +}; + +static const struct SpriteFrameImage sPicTable_NetBall[] = { + obj_frame_tiles(gObjectEventPic_NetBall), +}; + +static const struct SpriteFrameImage sPicTable_DiveBall[] = { + obj_frame_tiles(gObjectEventPic_DiveBall), +}; + +static const struct SpriteFrameImage sPicTable_NestBall[] = { + obj_frame_tiles(gObjectEventPic_NestBall), +}; + +static const struct SpriteFrameImage sPicTable_RepeatBall[] = { + obj_frame_tiles(gObjectEventPic_RepeatBall), +}; + +static const struct SpriteFrameImage sPicTable_TimerBall[] = { + obj_frame_tiles(gObjectEventPic_TimerBall), +}; + +static const struct SpriteFrameImage sPicTable_LuxuryBall[] = { + obj_frame_tiles(gObjectEventPic_LuxuryBall), +}; + +static const struct SpriteFrameImage sPicTable_PremierBall[] = { + obj_frame_tiles(gObjectEventPic_PremierBall), +}; + +static const struct SpriteFrameImage sPicTable_ExpandingSparkle[] = { + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 0), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 1), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 2), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 3), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 4), + overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 5), +}; + static const struct SpriteFrameImage sPicTable_ProfBirch[] = { overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 0), overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index db5820143..d5657861a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -11,11 +11,13 @@ #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" +#include "field_specials.h" #include "fieldmap.h" #include "mauville_old_man.h" #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "pokemon.h" #include "random.h" #include "sprite.h" #include "task.h" @@ -780,6 +782,17 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x1090 #define OBJ_EVENT_PAL_TAG_JIRACHI 0x108F #define OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER 0x108E +#define OBJ_EVENT_PAL_TAG_GREAT_BALL 0x1058 +#define OBJ_EVENT_PAL_TAG_ULTRA_BALL 0x1057 +#define OBJ_EVENT_PAL_TAG_MASTER_BALL 0x1056 +#define OBJ_EVENT_PAL_TAG_SAFARI_BALL 0x1055 +#define OBJ_EVENT_PAL_TAG_NET_BALL 0x1054 +#define OBJ_EVENT_PAL_TAG_DIVE_BALL 0x1053 +#define OBJ_EVENT_PAL_TAG_NEST_BALL 0x1052 +#define OBJ_EVENT_PAL_TAG_REPEAT_BALL 0x1051 +#define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1050 +#define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x104F +#define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x104E #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -1159,6 +1172,18 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Rayquaza, OBJ_EVENT_PAL_TAG_RAYQUAZA}, {gObjectEventPal_Jirachi, OBJ_EVENT_PAL_TAG_JIRACHI}, {gObjectEventPal_Deoxys_Follower, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER}, + {gObjectEventPal_GreatBall, OBJ_EVENT_PAL_TAG_GREAT_BALL}, + {gObjectEventPal_UltraBall, OBJ_EVENT_PAL_TAG_ULTRA_BALL}, + {gObjectEventPal_MasterBall, OBJ_EVENT_PAL_TAG_MASTER_BALL}, + {gObjectEventPal_SafariBall, OBJ_EVENT_PAL_TAG_SAFARI_BALL}, + {gObjectEventPal_NetBall, OBJ_EVENT_PAL_TAG_NET_BALL}, + {gObjectEventPal_DiveBall, OBJ_EVENT_PAL_TAG_DIVE_BALL}, + {gObjectEventPal_NestBall, OBJ_EVENT_PAL_TAG_NEST_BALL}, + {gObjectEventPal_RepeatBall, OBJ_EVENT_PAL_TAG_REPEAT_BALL}, + {gObjectEventPal_TimerBall, OBJ_EVENT_PAL_TAG_TIMER_BALL}, + {gObjectEventPal_LuxuryBall, OBJ_EVENT_PAL_TAG_LUXURY_BALL}, + {gObjectEventPal_PremierBall, OBJ_EVENT_PAL_TAG_PREMIER_BALL}, + {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE}, {}, }; @@ -9703,6 +9728,18 @@ u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent MovementAction_Finish, }; +u8 (*const gMovementActionFuncs_FollowingPokemon_Shrink[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_Shrink_Step0, + MovementAction_FollowingPokemon_Shrink_Step1, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_FollowingPokemon_Grow[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_FollowingPokemon_Grow_Step0, + MovementAction_FollowingPokemon_Grow_Step1, + MovementAction_Finish, +}; + u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { bool32 ableToStore = FALSE; @@ -9953,6 +9990,416 @@ u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *objectEven return FALSE; } +static void PokeballCallback(struct Sprite *sprite) +{ + if (++sprite->data[0] == 21) + DestroySprite(sprite); +} + +u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + s16 x = objectEvent->currentCoords.x; + s16 y = objectEvent->currentCoords.y; + u8 spriteId; + bool8 playerPriority; + + sprite->data[7] = 1; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + + if (objectEvent->facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 0); + + if (y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is to the east or west of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); + playerPriority = FALSE; + } + else if (y < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is north of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); + playerPriority = TRUE; + } + else // If follower is south of player + { + SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); + playerPriority = FALSE; + } + + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) + { + case 1: // Master Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &PokeballCallback, x, y, 2); + break; + case 2: // Ultra Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &PokeballCallback, x, y, 2); + break; + case 3: // Great Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &PokeballCallback, x, y, 2); + break; + case 5: // Safari Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &PokeballCallback, x, y, 2); + break; + case 6: // Net Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &PokeballCallback, x, y, 2); + break; + case 7: // Dive Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &PokeballCallback, x, y, 2); + break; + case 8: // Nest Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &PokeballCallback, x, y, 2); + break; + case 9: // Repeat Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &PokeballCallback, x, y, 2); + break; + case 10: // Timer Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &PokeballCallback, x, y, 2); + break; + case 11: // Luxury Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &PokeballCallback, x, y, 2); + break; + case 12: // Premier Ball + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); + break; + default: // PokeBall + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &PokeballCallback, x, y, 2); + break; + } + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].data[0] = 0; + } + + if (playerPriority) + { + gSprites[gPlayerAvatar.spriteId].oam.priority = 1; + gSprites[gPlayerAvatar.spriteId].subpriority = 1; + gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = TRUE; + } + + sprite->oam.priority = 1; + sprite->subpriority = 1; + + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7]++; + + if (objectEvent->currentCoords.x > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // east side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 8) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 7; + break; + case DIR_WEST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 += 1 - sprite->data[7]; + else + sprite->x2 -= sprite->data[7]; + } + else if (sprite->data[7] == 6) + sprite->x2 += -5; + else + sprite->x2 += 1 - sprite->data[7]; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 2; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] * 2 + 3; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 4; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] * 2 + 5; + else + sprite->y2 = sprite->data[7] * 2 + 6; + } + else + { + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + } + } + else if (objectEvent->currentCoords.x < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // west side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 -= 2 - sprite->data[7]; + else + sprite->x2 += sprite->data[7] - 1; + } + else if (sprite->data[7] == 6) + sprite->x2 -= -4; + else + sprite->x2 -= 2 - sprite->data[7]; + break; + case DIR_WEST: + if (sprite->data[7] < 9) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 8; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 2; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] * 2 + 3; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 4; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] * 2 + 5; + else + sprite->y2 = sprite->data[7] * 2 + 6; + } + else + { + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + } + } + else if (objectEvent->currentCoords.y > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // south side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 7) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 6; + break; + case DIR_WEST: + if (sprite->data[7] < 8) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 7; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 3) + sprite->y2 = sprite->data[7] + 3; + else if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] + 4; + else if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7] + 5; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] + 6; + else if (sprite->data[7] < 9) + sprite->y2 = sprite->data[7] + 7; + else + sprite->y2 = sprite->data[7] + 8; + } + else + sprite->y2 = 1; + } + else // north side + { + switch(objectEvent->facingDirection) + { + case DIR_EAST: + if (sprite->data[7] < 7) + sprite->x2 += sprite->data[7] - 1; + else + sprite->x2 += 6; + break; + case DIR_WEST: + if (sprite->data[7] < 8) + sprite->x2 -= sprite->data[7] - 1; + else + sprite->x2 -= 7; + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] < 5) + sprite->y2 = sprite->data[7] * 2 + 1; + else if (sprite->data[7] < 8) + sprite->y2 = sprite->data[7] * 2 + 2; + else + sprite->y2 = sprite->data[7] * 2 + 3; + } + else + { + if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7]; + else + sprite->y2 = 6; + } + } + + if (sprite->data[7] >= 11) + { + gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; + objectEvent->invisible = TRUE; + sprite->data[2]++; + } + + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7] = 11; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + + if (gObjectEvents[gPlayerAvatar.objectEventId].facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) + StartSpriteAffineAnim(sprite, 3); + else + StartSpriteAffineAnim(sprite, 1); + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + sprite->y2 = 6; + sprite->x2 = 0; + break; + case DIR_NORTH: + sprite->y2 = 1; + sprite->x2 = 0; + break; + case DIR_EAST: + sprite->y2 = 10; + sprite->x2 += 9; + break; + case DIR_WEST: + sprite->y2 = 10; + sprite->x2 -= 9; + break; + } + sprite->data[2]++; + return FALSE; +} + +u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[7]--; + + if (sprite->data[7] == 10) + gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + if (sprite->data[7] < 6) + sprite->y2 = sprite->data[7]; + else + sprite->y2 = 6; + break; + case DIR_NORTH: + sprite->y2 = 1; + break; + case DIR_WEST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 += 1 - sprite->data[7]; + else + sprite->x2 -= sprite->data[7]; + } + else if (sprite->data[7] == 6) + sprite->x2 += -5; + else + sprite->x2 += 1 - sprite->data[7]; + + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + + break; + case DIR_EAST: + if (sprite->data[7] <= 5) + { + if (sprite->data[7] > 3) + sprite->x2 -= 2 - sprite->data[7]; + else + sprite->x2 += sprite->data[7] - 1; + } + else if (sprite->data[7] == 6) + sprite->x2 -= -4; + else + sprite->x2 -= 2 - sprite->data[7]; + + if (sprite->data[7] >= 10) + sprite->y2 = 10; + else + sprite->y2 = sprite->data[7]; + + break; + } + + // Adjust the height of the 64x64 sprites differently + if (IsBigSprite(objectEvent->graphicsId)) + { + if (sprite->data[7] > 9) + sprite->y2 -= (11 - sprite->data[7]) + 2; + else if (sprite->data[7] > 7) + sprite->y2 -= (11 - sprite->data[7]) + 3; + else if (sprite->data[7] > 6) + sprite->y2 -= (11 - sprite->data[7]) + 4; + else if (sprite->data[7] > 4) + sprite->y2 -= (11 - sprite->data[7]) + 5; + else if (sprite->data[7] > 3) + sprite->y2 -= (11 - sprite->data[7]) + 6; + else + sprite->y2 -= (11 - sprite->data[7]) + 7; + } + + if (sprite->data[7] <= 1) + { + // Set y2 of the 64x64 sprites back to 0, and compensate with y. + if (IsBigSprite(objectEvent->graphicsId)) + { + sprite->y -= 16; + sprite->y2 = 0; + } + + sprite->data[2]++; + sprite->oam.affineMode = 0; + } + + return FALSE; +} + // though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it. u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *sprite) { diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index d57ebd350..1bcf7b403 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -158,31 +158,6 @@ int ProcessPlayerFieldInput(struct FieldInput *input) IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); - if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT - && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0) - { - switch(playerDirection) - { - case 1: // South - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y - 16; - break; - case 2: // North - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y + 16; - break; - case 3: // West - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x + 16; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - break; - case 4: // East - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x = gSprites[gPlayerAvatar.spriteId].x - 16; - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].y = gSprites[gPlayerAvatar.spriteId].y; - break; - } - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; - } - if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } diff --git a/src/field_effect.c b/src/field_effect.c index 1f4f54555..885c80b47 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1358,45 +1358,11 @@ static void Task_UseFly(u8 taskId) gFieldEffectArguments[0] = 0; FieldEffectStart(FLDEFF_USE_FLY); - - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) - { - // Move South - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); - } - else - { - // Move North - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); - } - } - else - { - if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - // Move East - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); - } - else - { - // Move West - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); - } - } - } + FollowerIntoPokeball(); task->data[0]++; } - if (gSaveBlock2Ptr->follower.inProgress && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId])) - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; - if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -3078,38 +3044,7 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) SetPlayerAvatarFieldMove(); ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; - - if(gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - - if(objectEvent->currentCoords.x == gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - if(objectEvent->currentCoords.y > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.y) - { - // Move South - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 8); - } - else - { - // Move North - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 9); - } - } - else - { - if(objectEvent->currentCoords.x > gObjectEvents[gSaveBlock2Ptr->follower.objId].currentCoords.x) - { - // Move East - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 11); - } - else - { - // Move West - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 10); - } - } - } + FollowerIntoPokeball(); } } @@ -3122,9 +3057,6 @@ static void SurfFieldEffect_ShowMon(struct Task *task) gFieldEffectArguments[0] = task->tMonId | SHOW_MON_CRY_NO_DUCKING; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->tState++; - - if (gSaveBlock2Ptr->follower.inProgress) - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 0d3142ca8..b08288ffa 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -611,6 +611,9 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) { if (collision == COLLISION_LEDGE_JUMP) { + if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE) + gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_2_DOWN; + FollowerPokeballSparkle(); PlayerJumpLedge(direction); return; } @@ -638,12 +641,14 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) { + FollowerPokeballSparkle(); PlayerRun(direction); gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; return; } else { + FollowerPokeballSparkle(); PlayerWalkNormal(direction); } } @@ -1662,12 +1667,6 @@ static void Task_WaitStopSurfing(u8 taskId) ScriptContext2_Disable(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); DestroyTask(taskId); - - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], playerObjEvent->facingDirection + 7); - } } } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 9f562131d..119f20dea 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -421,6 +421,7 @@ static void Task_ExitNonDoor(u8 taskId) { UnfreezeObjectEvents(); ScriptContext2_Disable(); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 2; DestroyTask(taskId); } break; diff --git a/src/follow_me.c b/src/follow_me.c index 96a7f8fc3..1071972f0 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -306,7 +306,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) }*/ ObjectEventClearHeldMovementIfActive(follower); - ObjectEventSetHeldMovement(follower, newState); + ObjectEventSetHeldMovement(follower, newState); PlayerLogCoordinates(player); switch (newState) @@ -413,7 +413,7 @@ static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 dire case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: // If the follower is invisible due to bike riding, just walk - if(follower->invisible == FALSE) + if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) { // Ledge jump if (((newState - direction) >= MOVEMENT_ACTION_JUMP_2_DOWN && (newState - direction) <= MOVEMENT_ACTION_JUMP_2_RIGHT) @@ -500,7 +500,7 @@ static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 dire gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN; RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: - if(gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE) + if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_DOWN; RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); diff --git a/src/overworld.c b/src/overworld.c index 2548ab42f..ee4f6be9a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -50,6 +50,7 @@ #include "script_pokemon_util.h" #include "secret_base.h" #include "sound.h" +#include "sprite.h" #include "start_menu.h" #include "task.h" #include "tileset_anims.h" @@ -69,6 +70,7 @@ #include "constants/trainer_hill.h" #include "constants/weather.h" #include "constants/event_object_movement.h" +#include "constants/event_objects.h" struct CableClubPlayer { @@ -206,6 +208,399 @@ EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; +static const u8 FollowerSparkleCoords[][6] = +{ + {15, 9, 15, 9, 11, 9}, // Bulbasaur + {15, 11, 15, 9, 10, 9}, // Ivysaur + {16, 13, 16, 12, 13, 13}, // Venusaur + {16, 9, 16, 10, 11, 9}, // Charmander + {15, 12, 15, 10, 10, 11}, // Charmeleon + {16, 13, 16, 13, 16, 13}, // Charizard + {15, 9, 15, 9, 7, 9}, // Squirtle + {16, 10, 15, 9, 9, 11}, // Wartortle + {16, 13, 16, 13, 14, 12}, // Blastoise + {15, 10, 15, 9, 9, 10}, // Caterpie + {16, 10, 16, 11, 8, 10}, // Metapod + {16, 13, 16, 13, 12, 12}, // Butterfree + {16, 10, 16, 10, 8, 9}, // Weedle + {15, 10, 15, 10, 8, 10}, // Kakuna + {15, 13, 15, 15, 9, 13}, // Beedrill + {15, 8, 15, 8, 7, 8}, // Pidgey + {15, 16, 15, 15, 11, 14}, // Pidgeotto + {16, 17, 16, 17, 15, 16}, // Pidgeot + {16, 11, 16, 9, 9, 8}, // Rattata + {16, 12, 16, 9, 11, 8}, // Raticate + {16, 8, 16, 8, 10, 8}, // Spearow + {16, 15, 16, 16, 15, 19}, // Fearow + {16, 10, 13, 11, 9, 10}, // Ekans + {15, 12, 14, 13, 13, 12}, // Arbok + {16, 10, 16, 9, 8, 10}, // Pikachu + {13, 12, 20, 12, 14, 11}, // Raichu + {16, 9, 16, 9, 9, 9}, // Sandshrew + {15, 11, 15, 11, 10, 11}, // Sandslash + {16, 9, 16, 9, 7, 9}, // Nidoran_F + {15, 10, 15, 10, 11, 10}, // Nidorina + {16, 12, 16, 12, 13, 12}, // Nidoqueen + {16, 9, 16, 9, 8, 8}, // Nidoran_M + {16, 10, 16, 11, 11, 9}, // Nidorino + {16, 12, 16, 12, 14, 12}, // Nidoking + {15, 9, 16, 9, 7, 9}, // Clefairy + {16, 11, 16, 11, 9, 11}, // Clefable + {15, 11, 15, 11, 12, 9}, // Vulpix + {15, 13, 15, 14, 13, 11}, // Ninetales + {15, 9, 15, 9, 7, 9}, // Jigglypuff + {15, 11, 15, 11, 8, 11}, // Wigglytuff + {15, 12, 15, 13, 10, 11}, // Zubat + {16, 12, 16, 12, 12, 12}, // Golbat + {15, 8, 15, 8, 7, 8}, // Oddish + {16, 10, 16, 10, 9, 11}, // Gloom + {16, 10, 16, 10, 11, 10}, // Vileplume + {16, 9, 16, 8, 9, 9}, // Paras + {15, 13, 16, 12, 12, 12}, // Parasect + {16, 10, 16, 10, 11, 10}, // Venonat + {15, 14, 15, 14, 13, 14}, // Venomoth + {15, 7, 16, 7, 7, 7}, // Diglett + {16, 11, 16, 11, 11, 11}, // Dugtrio + {16, 13, 15, 11, 11, 9}, // Meowth + {15, 14, 15, 12, 13, 9}, // Persian + {15, 10, 15, 10, 7, 10}, // Psyduck + {15, 12, 15, 12, 8, 11}, // Golduck + {15, 9, 15, 9, 9, 9}, // Mankey + {15, 11, 15, 11, 9, 12}, // Primeape + {16, 11, 16, 11, 9, 10}, // Growlithe + {15, 15, 15, 15, 16, 12}, // Arcanine + {16, 9, 16, 9, 9, 9}, // Poliwag + {16, 9, 16, 9, 7, 10}, // Poliwhirl + {15, 11, 15, 11, 10, 11}, // Poliwrath + {15, 11, 15, 11, 11, 12}, // Abra + {15, 11, 16, 11, 12, 11}, // Kadabra + {16, 12, 16, 13, 11, 13}, // Alakazam + {15, 9, 15, 9, 8, 10}, // Machop + {15, 12, 15, 12, 8, 12}, // Machoke + {16, 13, 16, 13, 12, 12}, // Machamp + {15, 11, 15, 11, 7, 10}, // Bellsprout + {15, 11, 15, 10, 7, 11}, // Weepinbell + {15, 14, 15, 14, 14, 13}, // Victreebel + {16, 10, 16, 10, 9, 10}, // Tentacool + {15, 13, 15, 13, 13, 12}, // Tentacruel + {15, 10, 15, 10, 7, 11}, // Geodude + {15, 9, 15, 9, 10, 11}, // Graveler + {15, 11, 15, 11, 12, 11}, // Golem + {15, 12, 15, 12, 11, 11}, // Ponyta + {15, 15, 15, 14, 15, 13}, // Rapidash + {15, 11, 15, 9, 12, 8}, // Slowpoke + {16, 11, 16, 11, 14, 11}, // Slowbro + {15, 10, 15, 10, 8, 11}, // Magnemite + {15, 15, 15, 15, 10, 15}, // Magneton + {16, 11, 16, 11, 8, 11}, // Farfetch'd + {15, 11, 15, 11, 9, 12}, // Doduo + {16, 16, 15, 16, 15, 15}, // Dodrio + {15, 11, 15, 11, 13, 10}, // Seel + {15, 13, 15, 12, 15, 12}, // Dewgong + {16, 9, 16, 9, 9, 10}, // Grimer + {15, 11, 15, 11, 11, 11}, // Muk + {15, 9, 15, 8, 7, 9}, // Shellder + {15, 13, 15, 13, 13, 14}, // Cloyster + {15, 15, 16, 15, 10, 14}, // Gastly + {16, 13, 16, 13, 10, 14}, // Haunter + {15, 11, 15, 11, 9, 11}, // Gengar + {16, 15, 15, 16, 13, 16}, // Onix + {16, 10, 16, 10, 10, 11}, // Drowzee + {16, 12, 16, 12, 10, 12}, // Hypno + {16, 9, 16, 9, 13, 7}, // Krabby + {16, 13, 16, 12, 16, 13}, // Kingler + {15, 9, 15, 9, 7, 9}, // Voltorb + {16, 12, 16, 12, 13, 12}, // Electrode + {16, 13, 16, 11, 14, 12}, // Exeggcute + {16, 15, 16, 14, 12, 14}, // Exeggutor + {14, 10, 16, 10, 9, 11}, // Cubone + {14, 11, 16, 11, 10, 12}, // Marowak + {15, 11, 15, 11, 9, 11}, // Hitmonlee + {16, 12, 16, 11, 9, 11}, // Hitmonchan + {15, 11, 15, 11, 12, 10}, // Lickitung + {17, 13, 17, 13, 12, 12}, // Koffing + {15, 14, 16, 14, 13, 13}, // Weezing + {15, 12, 15, 11, 14, 9}, // Rhyhorn + {16, 12, 16, 12, 16, 12}, // Rhydon + {15, 10, 15, 10, 10, 10}, // Chansey + {16, 11, 16, 11, 10, 10}, // Tangela + {16, 12, 16, 12, 12, 13}, // Kangaskhan + {15, 9, 15, 9, 9, 9}, // Horsea + {15, 13, 15, 13, 11, 12}, // Seadra + {15, 11, 15, 10, 12, 9}, // Goldeen + {15, 13, 15, 11, 14, 13}, // Seaking + {16, 10, 16, 10, 8, 10}, // Staryu + {16, 12, 16, 12, 9, 13}, // Starmie + {16, 11, 16, 10, 10, 12}, // Mr. Mime + {15, 13, 15, 13, 12, 13}, // Scyther + {16, 13, 16, 12, 11, 13}, // Jynx + {16, 12, 16, 12, 12, 12}, // Electabuzz + {15, 13, 15, 13, 12, 12}, // Magmar + {15, 12, 15, 12, 11, 12}, // Pinsir + {15, 15, 16, 12, 15, 11}, // Tauros + {16, 10, 16, 11, 12, 10}, // Magikarp + {16, 16, 16, 16, 15, 16}, // Gyarados + {16, 12, 16, 13, 14, 13}, // Lapras + {16, 8, 16, 8, 9, 7}, // Ditto + {15, 9, 15, 9, 11, 9}, // Eevee + {15, 15, 15, 12, 15, 11}, // Vaporeon + {15, 12, 15, 11, 14, 10}, // Jolteon + {15, 13, 15, 12, 14, 11}, // Flareon + {15, 10, 15, 10, 12, 9}, // Porygon + {15, 10, 15, 10, 10, 9}, // Omanyte + {15, 12, 15, 12, 12, 11}, // Omastar + {15, 8, 15, 8, 9, 8}, // Kabuto + {16, 11, 15, 11, 11, 12}, // Kabutops + {15, 16, 15, 16, 16, 15}, // Aerodactyl + {16, 14, 16, 14, 12, 15}, // Snorlax + {15, 17, 15, 16, 14, 17}, // Articuno + {15, 18, 15, 17, 14, 15}, // Zapdos + {15, 16, 15, 17, 15, 17}, // Moltres + {17, 12, 14, 11, 12, 11}, // Dratini + {18, 15, 14, 15, 14, 14}, // Dragonair + {15, 16, 15, 16, 13, 15}, // Dragonite + {15, 15, 15, 14, 13, 14}, // Mewtwo + {16, 13, 16, 11, 13, 13}, // Mew + {16, 10, 15, 10, 9, 10}, // Chikorita + {16, 13, 15, 14, 13, 13}, // Bayleef + {15, 14, 15, 15, 14, 15}, // Meganium + {16, 11, 16, 10, 12, 9}, // Cyndaquil + {15, 13, 15, 14, 15, 10}, // Quilava + {15, 14, 15, 14, 14, 13}, // Typhlosion + {16, 10, 16, 10, 10, 10}, // Totodile + {15, 13, 15, 14, 13, 13}, // Croconaw + {15, 15, 15, 15, 15, 15}, // Feraligatr + {15, 10, 15, 10, 12, 9}, // Sentret + {15, 14, 15, 13, 15, 11}, // Furret + {16, 10, 16, 10, 10, 10}, // Hoothoot + {15, 13, 15, 14, 14, 16}, // Noctowl + {15, 14, 15, 12, 13, 12}, // Ledyba + {16, 12, 16, 13, 13, 16}, // Ledian + {15, 9, 15, 9, 11, 7}, // Spinarak + {15, 13, 15, 12, 15, 13}, // Ariados + {15, 13, 15, 13, 12, 15}, // Crobat + {16, 8, 16, 8, 10, 8}, // Chinchou + {16, 14, 16, 13, 15, 11}, // Lanturn + {15, 9, 15, 9, 9, 9}, // Pichu + {16, 8, 16, 8, 9, 8}, // Cleffa + {15, 9, 15, 9, 8, 9}, // Igglybuff + {16, 9, 16, 9, 9, 9}, // Togepi + {15, 14, 15, 15, 10, 13}, // Togetic + {16, 8, 16, 8, 9, 9}, // Natu + {16, 12, 16, 12, 12, 12}, // Xatu + {16, 11, 15, 10, 12, 10}, // Mareep + {18, 12, 15, 11, 12, 11}, // Flaaffy + {16, 13, 16, 13, 13, 13}, // Ampharos + {15, 10, 15, 10, 8, 10}, // Bellossom + {19, 8, 12, 8, 12, 9}, // Marill + {18, 10, 13, 10, 12, 11}, // Azumarill + {16, 12, 16, 12, 10, 12}, // Sudowoodo + {15, 12, 15, 12, 9, 12}, // Politoed + {16, 12, 16, 12, 9, 12}, // Hoppip + {15, 10, 15, 10, 9, 13}, // Skiploom + {16, 14, 16, 14, 9, 13}, // Jumpluff + {16, 12, 16, 11, 13, 11}, // Aipom + {16, 8, 16, 8, 7, 9}, // Sunkern + {15, 11, 15, 11, 7, 11}, // Sunflora + {16, 15, 16, 15, 15, 13}, // Yanma + {16, 8, 16, 8, 8, 8}, // Wooper + {17, 11, 15, 11, 12, 11}, // Quagsire + {15, 14, 15, 12, 13, 12}, // Espeon + {15, 13, 15, 12, 14, 11}, // Umbreon + {15, 10, 15, 10, 9, 10}, // Murkrow + {16, 14, 16, 14, 10, 13}, // Slowking + {16, 14, 16, 13, 11, 13}, // Misdreavus + {15, 10, 15, 10, 7, 11}, // Unown (A) + {16, 11, 16, 11, 10, 11}, // Wobbuffet + {16, 13, 16, 13, 15, 13}, // Girafarig + {16, 9, 16, 9, 8, 9}, // Pineco + {16, 10, 16, 10, 11, 10}, // Forretress + {15, 13, 15, 9, 13, 8}, // Dunsparce + {15, 12, 15, 12, 11, 13}, // Gligar + {33, 17, 32, 19, 36, 17}, // Steelix + {16, 10, 16, 10, 10, 10}, // Snubbull + {16, 12, 16, 12, 10, 13}, // Granbull + {16, 12, 16, 10, 14, 9}, // Qwilfish + {16, 13, 16, 12, 12, 13}, // Scizor + {16, 10, 16, 11, 11, 10}, // Shuckle + {15, 13, 15, 13, 12, 14}, // Heracross + {17, 10, 15, 10, 9, 10}, // Sneasel + {15, 10, 15, 10, 9, 10}, // Teddiursa + {16, 13, 16, 13, 11, 14}, // Ursaring + {15, 11, 16, 11, 11, 10}, // Slugma + {16, 13, 14, 12, 15, 11}, // Magcargo + {15, 8, 15, 8, 11, 8}, // Swinub + {15, 11, 15, 12, 12, 11}, // Piloswine + {16, 9, 16, 9, 10, 10}, // Corsola + {16, 10, 16, 10, 13, 7}, // Remoraid + {15, 11, 15, 12, 11, 11}, // Ocitllery + {16, 10, 15, 10, 9, 11}, // Delibird + {16, 15, 16, 15, 16, 16}, // Mantine + {15, 13, 15, 16, 15, 16}, // Skarmory + {16, 9, 16, 10, 11, 10}, // Houndour + {15, 12, 15, 13, 14, 12}, // Houndoom + {16, 14, 16, 14, 14, 13}, // Kingdra + {16, 9, 16, 9, 11, 9}, // Phanpy + {16, 11, 16, 11, 15, 12}, // Donphan + {16, 11, 16, 12, 13, 12}, // Porygon2 + {16, 14, 15, 14, 12, 15}, // Stantler + {14, 11, 18, 11, 9, 11}, // Smeargle + {15, 10, 15, 10, 8, 10}, // Tyrogue + {15, 12, 15, 12, 9, 11}, // Hitmontop + {15, 10, 15, 10, 9, 10}, // Smoochum + {15, 10, 15, 10, 8, 10}, // Elekid + {16, 10, 16, 10, 8, 10}, // Magby + {16, 11, 16, 11, 12, 11}, // Miltank + {16, 11, 16, 11, 11, 12}, // Blissey + {15, 15, 15, 13, 15, 13}, // Raikou + {15, 15, 15, 13, 15, 12}, // Entei + {15, 15, 15, 13, 16, 12}, // Suicune + {15, 10, 15, 10, 10, 10}, // Larvitar + {15, 11, 15, 11, 8, 11}, // Pupitar + {15, 14, 15, 14, 14, 13}, // Tyranitar + {32, 21, 32, 23, 40, 21}, // Lugia + {32, 22, 31, 22, 38, 24}, // Ho-oh + {16, 14, 16, 14, 9, 14}, // Celebi + {15, 9, 15, 9, 9, 9}, // Treecko + {16, 11, 16, 11, 11, 11}, // Grovyle + {15, 13, 15, 13, 15, 14}, // Sceptile + {15, 10, 15, 10, 8, 10}, // Torchic + {15, 11, 15, 11, 8, 11}, // Combusken + {16, 13, 16, 13, 12, 13}, // Blaziken + {15, 9, 15, 9, 10, 9}, // Mudkip + {15, 10, 15, 10, 9, 10}, // Marshtomp + {15, 13, 15, 13, 15, 13}, // Swampert + {15, 10, 15, 10, 12, 10}, // Poochyena + {16, 14, 16, 12, 15, 12}, // Mightyena + {16, 12, 16, 10, 14, 9}, // Zigzagoon + {16, 13, 14, 10, 15, 8}, // Linoone + {15, 10, 15, 11, 11, 9}, // Wurmple + {16, 8, 16, 8, 10, 8}, // Silcoon + {16, 13, 16, 13, 13, 12}, // Beautifly + {16, 8, 16, 8, 10, 8}, // Cascoon + {15, 11, 15, 11, 12, 15}, // Dustox + {15, 9, 15, 9, 10, 9}, // Lotad + {15, 12, 15, 12, 10, 11}, // Lombre + {16, 14, 16, 14, 13, 14}, // Ludicolo + {15, 9, 15, 9, 8, 9}, // Seedot + {15, 12, 15, 12, 9, 12}, // Nuzleaf + {16, 12, 16, 12, 13, 12}, // Shiftry + {15, 9, 15, 8, 12, 8}, // Nincada + {15, 12, 15, 12, 12, 12}, // Ninjask + {16, 13, 16, 14, 12, 13}, // Shedinja + {15, 9, 15, 9, 10, 8}, // Taillow + {15, 13, 15, 12, 16, 15}, // Swellow + {15, 9, 15, 9, 10, 9}, // Shroomish + {16, 12, 16, 12, 12, 12}, // Breloom + {16, 10, 16, 10, 9, 11}, // Spinda + {15, 11, 15, 10, 12, 13}, // Wingull + {16, 14, 16, 14, 14, 13}, // Pelipper + {15, 9, 15, 9, 10, 9}, // Surskit + {16, 14, 16, 15, 10, 14}, // Masquerain + {16, 11, 16, 11, 13, 11}, // Wailmer + {32, 19, 32, 18, 38, 12}, // Wailord + {15, 10, 15, 9, 12, 9}, // Skitty + {16, 13, 16, 12, 13, 12}, // Delcatty + {16, 11, 16, 11, 10, 11}, // Kecleon + {16, 11, 16, 11, 7, 11}, // Baltoy + {16, 14, 16, 14, 11, 13}, // Claydol + {15, 11, 15, 11, 11, 11}, // Nosepass + {16, 10, 16, 11, 15, 10}, // Torkoal + {16, 9, 16, 9, 9, 10}, // Sableye + {15, 9, 16, 9, 9, 11}, // Barboach + {15, 10, 15, 11, 14, 9}, // Whiscash + {16, 9, 16, 9, 8, 9}, // Luvdisc + {15, 10, 15, 11, 11, 10}, // Corphish + {16, 13, 16, 13, 13, 12}, // Crawdaunt + {16, 9, 16, 9, 10, 9}, // Feebas + {19, 13, 11, 12, 14, 13}, // Milotic + {15, 12, 15, 12, 11, 11}, // Carvanha + {16, 14, 16, 12, 13, 14}, // Sharpedo + {16, 8, 16, 8, 10, 8}, // Trapinch + {16, 13, 16, 11, 15, 14}, // Vibrava + {16, 17, 16, 17, 15, 14}, // Flygon + {16, 10, 16, 10, 9, 11}, // Makuhita + {14, 14, 14, 13, 14, 13}, // Hariyama + {15, 11, 15, 9, 13, 8}, // Electrike + {15, 13, 15, 13, 14, 13}, // Manectric + {15, 12, 15, 12, 15, 12}, // Numel + {15, 14, 15, 14, 17, 12}, // Camerupt + {15, 9, 15, 9, 11, 9}, // Spheal + {15, 12, 15, 13, 15, 12}, // Sealeo + {15, 13, 15, 14, 16, 14}, // Walrein + {15, 9, 15, 9, 8, 9}, // Cacnea + {15, 12, 15, 12, 11, 12}, // Cacturne + {15, 9, 15, 9, 9, 9}, // Snorunt + {16, 12, 16, 12, 11, 14}, // Glalie + {16, 11, 16, 11, 10, 11}, // Lunatone + {16, 13, 16, 13, 8, 13}, // Solrock + {17, 9, 14, 8, 13, 7}, // Azurill + {15, 11, 15, 11, 8, 10}, // Spoink + {15, 11, 15, 11, 11, 11}, // Grumpig + {15, 9, 15, 9, 9, 9}, // Plusle + {15, 9, 15, 9, 9, 9}, // Minun + {17, 11, 14, 11, 13, 11}, // Mawile + {15, 12, 15, 11, 8, 11}, // Meditite + {15, 13, 15, 13, 8, 13}, // Medicham + {16, 12, 16, 11, 11, 10}, // Swablu + {16, 16, 16, 16, 14, 15}, // Altaria + {16, 10, 16, 10, 10, 9}, // Wynaut + {16, 12, 16, 11, 9, 12}, // Duskull + {15, 13, 15, 13, 13, 13}, // Dusclops + {15, 10, 15, 10, 8, 10}, // Roselia + {15, 9, 15, 9, 12, 8}, // Slakoth + {16, 11, 16, 11, 14, 11}, // Vigoroth + {16, 15, 16, 14, 14, 14}, // Slaking + {16, 9, 16, 9, 10, 9}, // Gulpin + {16, 14, 16, 14, 14, 14}, // Swalot + {16, 13, 16, 13, 16, 13}, // Tropius + {16, 8, 16, 8, 8, 8}, // Whismur + {16, 11, 16, 11, 9, 12}, // Loudred + {16, 14, 16, 14, 17, 15}, // Exploud + {15, 8, 15, 8, 8, 9}, // Clamperl + {18, 15, 11, 14, 14, 14}, // Huntail + {17, 16, 12, 14, 15, 11}, // Gorebyss + {14, 14, 16, 14, 15, 13}, // Absol + {15, 11, 15, 11, 8, 11}, // Shuppet + {17, 10, 16, 10, 9, 10}, // Banette + {18, 14, 14, 14, 16, 10}, // Seviper + {15, 12, 15, 12, 13, 12}, // Zangoose + {15, 13, 15, 12, 14, 10}, // Relicanth + {16, 8, 16, 8, 9, 8}, // Aron + {15, 13, 15, 12, 16, 10}, // Lairon + {15, 15, 15, 14, 16, 14}, // Aggron + {15, 11, 15, 10, 7, 10}, // Castform + {15, 14, 15, 14, 12, 12}, // Volbeat + {16, 13, 16, 13, 11, 12}, // Illumise + {16, 11, 16, 12, 10, 11}, // Lileep + {16, 15, 16, 15, 12, 15}, // Cradily + {16, 11, 16, 10, 14, 9}, // Anorith + {15, 13, 15, 12, 13, 13}, // Armaldo + {15, 9, 15, 9, 9, 9}, // Ralts + {15, 11, 15, 11, 9, 11}, // Kirlia + {16, 12, 16, 13, 10, 12}, // Gardevoir + {16, 11, 16, 11, 10, 10}, // Bagon + {16, 10, 16, 10, 11, 10}, // Shelgon + {16, 14, 16, 13, 16, 13}, // Salamence + {15, 13, 15, 12, 12, 12}, // Beldum + {16, 14, 16, 13, 15, 13}, // Metang + {16, 14, 16, 14, 13, 13}, // Metagross + {15, 14, 15, 14, 11, 14}, // Regirock + {15, 13, 15, 13, 12, 13}, // Regice + {16, 13, 16, 13, 10, 13}, // Registeel + {16, 17, 16, 15, 16, 14}, // Kyogre + {15, 16, 16, 16, 16, 16}, // Groudon + {16, 17, 16, 16, 16, 16}, // Rayquaza + {16, 15, 16, 14, 16, 15}, // Latias + {16, 15, 16, 14, 15, 15}, // Latios + {15, 13, 15, 13, 10, 12}, // Jirachi + {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) + {16, 11, 16, 11, 7, 11}, // Chimecho + {16, 15, 16, 15, 12, 13}, // Deoxys (Speed) + {16, 13, 16, 13, 10, 13}, // Deoxys (Defense) + {16, 14, 16, 14, 10, 14}, // Deoxys (Attack) +}; + static const struct WarpData sDummyWarpData = { .mapGroup = MAP_GROUP(UNDEFINED), @@ -3246,7 +3641,7 @@ void UpdateFollowerPokemonGraphic(void) // If so, the following Pokemon needs to change. u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - + // If the lead Pokemon is Unown, use the correct sprite if (leadMonGraphicId == 439) { @@ -3289,3 +3684,468 @@ void UpdateFollowerPokemonGraphic(void) } } } + +static void SparkleCallback(struct Sprite *sprite) +{ + if (++sprite->data[0] >= 19) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +static void BigSparkleCallback(struct Sprite *sprite) +{ + if (sprite->data[0] % 2 == 0) + { + switch(sprite->data[7]) + { + // North Sparkle + case 0: + sprite->x++; + break; + // NorthEast Sparkle + case 1: + if (sprite->data[0] % 4 == 0) + sprite->y++; + else + sprite->x++; + break; + // East sparkle + case 2: + sprite->y++; + break; + // SouthEast Sparkle + case 3: + if (sprite->data[0] % 4 == 0) + sprite->y++; + else + sprite->x--; + break; + // South Sparkle + case 4: + sprite->x--; + break; + // SouthWest Sparkle + case 5: + if (sprite->data[0] % 4 == 0) + sprite->y--; + else + sprite->x--; + break; + // West Sparkle + case 6: + sprite->y--; + break; + // NorthWest Sparkle + case 7: + if (sprite->data[0] % 4 == 0) + sprite->y--; + else + sprite->x++; + break; + } + } + + if (++sprite->data[0] >= 19) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +bool8 IsBigSprite(u16 graphicsId) +{ + switch(graphicsId) + { + case OBJ_EVENT_GFX_STEELIX: + case OBJ_EVENT_GFX_LUGIA_FOLLOWER: + case OBJ_EVENT_GFX_HOOH_FOLLOWER: + case OBJ_EVENT_GFX_WAILORD: + return TRUE; + default: + return FALSE; + } +} + +static void SparklePokeballCallback(struct Sprite *sprite) +{ + sprite->data[0]++; + + if (sprite->data[0] >= 10) + { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + s16 x = gSprites[follower->spriteId].x; + s16 y = gSprites[follower->spriteId].y; + u8 spriteId; + u16 graphicsId; + + DestroySprite(sprite); + + gSprites[follower->spriteId].oam.priority = ElevationToPriority(follower->previousElevation); + gSprites[gPlayerAvatar.spriteId].oam.priority = ElevationToPriority(player->previousElevation); + player->fixedPriority = FALSE; + + // Shift the location of the sparkle, depending on which way the follower will be facing + // Account for the other Unown forms + if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_DEOXYS_SPEED) + graphicsId = 200; + else if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) // Gen 3 OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239 - 25; + else + graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239; + + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) + { + case DIR_SOUTH: + x -= 16 - FollowerSparkleCoords[graphicsId][0]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][1]; + + break; + case DIR_NORTH: + x -= 16 - FollowerSparkleCoords[graphicsId][2]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][3]; + + break; + case DIR_EAST: + x += 7 - FollowerSparkleCoords[graphicsId][4]; // 7 looks better than 8 + if (IsBigSprite(follower->graphicsId)) + x += 16; + + y += 16 - FollowerSparkleCoords[graphicsId][5]; + + break; + case DIR_WEST: + x -= 8 - FollowerSparkleCoords[graphicsId][4]; + if (IsBigSprite(follower->graphicsId)) + x -= 16; + + y += 16 - FollowerSparkleCoords[graphicsId][5]; + + break; + } + + if (IsBigSprite(follower->graphicsId)) + { + // North sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + } + + // NorthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 1; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 1); + } + + // East sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 2; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 2); + } + + // SouthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 3; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 3); + } + + // South sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 4; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 4); + } + + // SouthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 5; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 5); + } + + // West sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 6; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 6); + } + + // NorthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[7] = 7; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 7); + } + } + else + { + // North sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 0); + } + + // NorthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 1); + } + + // East sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 2); + } + + // SouthEast sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 3); + } + + // South sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 4); + } + + // SouthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 5); + } + + // West sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 6); + } + + // NorthWest sparkle + spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], 7); + } + } + } +} + +void FollowerPokeballSparkle(void) +{ + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && gSaveBlock2Ptr->follower.inProgress) + { + struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + s16 x = player->currentCoords.x; + s16 y = player->currentCoords.y; + u8 spriteId; + + switch(player->facingDirection) + { + case DIR_SOUTH: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); + gSprites[follower->spriteId].y = y - 4; + break; + case DIR_NORTH: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); + gSprites[follower->spriteId].y = y; + break; + case DIR_EAST: + case DIR_WEST: + SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); + gSprites[follower->spriteId].y = y - 8; + break; + } + gSprites[follower->spriteId].x = x; + + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) + { + case 1: // Master Ball + spriteId = CreateObjectGraphicsSprite(492, &SparklePokeballCallback, x, y, 2); + break; + case 2: // Ultra Ball + spriteId = CreateObjectGraphicsSprite(491, &SparklePokeballCallback, x, y, 2); + break; + case 3: // Great Ball + spriteId = CreateObjectGraphicsSprite(490, &SparklePokeballCallback, x, y, 2); + break; + case 5: // Safari Ball + spriteId = CreateObjectGraphicsSprite(493, &SparklePokeballCallback, x, y, 2); + break; + case 6: // Net Ball + spriteId = CreateObjectGraphicsSprite(494, &SparklePokeballCallback, x, y, 2); + break; + case 7: // Dive Ball + spriteId = CreateObjectGraphicsSprite(495, &SparklePokeballCallback, x, y, 2); + break; + case 8: // Nest Ball + spriteId = CreateObjectGraphicsSprite(496, &SparklePokeballCallback, x, y, 2); + break; + case 9: // Repeat Ball + spriteId = CreateObjectGraphicsSprite(497, &SparklePokeballCallback, x, y, 2); + break; + case 10: // Timer Ball + spriteId = CreateObjectGraphicsSprite(498, &SparklePokeballCallback, x, y, 2); + break; + case 11: // Luxury Ball + spriteId = CreateObjectGraphicsSprite(499, &SparklePokeballCallback, x, y, 2); + break; + case 12: // Premier Ball + spriteId = CreateObjectGraphicsSprite(500, &SparklePokeballCallback, x, y, 2); + break; + default: // PokeBall, at default rather than 4 in case of item_expansion + spriteId = CreateObjectGraphicsSprite(59, &SparklePokeballCallback, x, y, 2); + break; + } + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].data[0] = 0; + } + + follower->currentCoords.x = player->currentCoords.x; + follower->currentCoords.y = player->currentCoords.y; + follower->facingDirection = player->facingDirection; + + gSprites[follower->spriteId].animNum = player->facingDirection - 1; + + if (player->facingDirection == DIR_NORTH) + { + gSprites[follower->spriteId].oam.priority = 0; + gSprites[follower->spriteId].subpriority = 0; + gSprites[gPlayerAvatar.spriteId].oam.priority = 1; + gSprites[gPlayerAvatar.spriteId].subpriority = 1; + } + else + { + gSprites[follower->spriteId].oam.priority = 1; + gSprites[follower->spriteId].subpriority = 1; + gSprites[gPlayerAvatar.spriteId].oam.priority = 0; + gSprites[gPlayerAvatar.spriteId].subpriority = 0; + } + player->fixedPriority = TRUE; + + SeekSpriteAnim(&gSprites[follower->spriteId], 0); + ObjectEventForceSetHeldMovement(follower, 0xA5); + } +} + +void FollowerIntoPokeball(void) +{ + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0xA4); + gSpecialVar_Unused_0x8014 = 1; + } +} diff --git a/src/scrcmd.c b/src/scrcmd.c index 127d8b19c..d8d543df4 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2361,7 +2361,7 @@ bool8 ScrCmd_pokemonfaceplayer(struct ScriptContext *ctx) bool8 ScrCmd_setfollower(struct ScriptContext *ctx) { u8 localId = ScriptReadByte(ctx); - u8 flags = ScriptReadByte(ctx); + u16 flags = ScriptReadHalfword(ctx); SetUpFollowerSprite(localId, flags); return FALSE; From ef6f39d32f1d60c7780305789afb3a25deca0f16 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 22 Mar 2022 12:16:41 -0700 Subject: [PATCH 22/71] obj_event constants account for expansion, all functions use constants This allows for discrepancies between expansion and non-expansion projects, as well as projects that have extra object events that offset stuff. --- include/constants/event_objects.h | 190 ++++++++++++++++++++++++++++++ src/event_object_movement.c | 22 ++-- src/overworld.c | 51 ++++---- 3 files changed, 227 insertions(+), 36 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index f16e2475e..df6f2091e 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -492,6 +492,8 @@ #define OBJ_EVENT_GFX_HOOH_FOLLOWER 488 #define OBJ_EVENT_GFX_CELEBI 489 +#ifndef POKEMON_EXPANSION + #define OBJ_EVENT_GFX_GREAT_BALL 490 #define OBJ_EVENT_GFX_ULTRA_BALL 491 #define OBJ_EVENT_GFX_MASTER_BALL 492 @@ -676,6 +678,194 @@ #define NUM_OBJ_EVENT_GFX 680 +#else +// There are no OLD_UNOWN constants in the pokemon_expansion + +#define OBJ_EVENT_GFX_TREECKO 490 +#define OBJ_EVENT_GFX_GROVYLE 491 +#define OBJ_EVENT_GFX_SCEPTILE 492 +#define OBJ_EVENT_GFX_TORCHIC 493 +#define OBJ_EVENT_GFX_COMBUSKEN 494 +#define OBJ_EVENT_GFX_BLAZIKEN 495 +#define OBJ_EVENT_GFX_MUDKIP 496 +#define OBJ_EVENT_GFX_MARSHTOMP 497 +#define OBJ_EVENT_GFX_SWAMPERT 498 +#define OBJ_EVENT_GFX_POOCHYENA_FOLLOWER 499 +#define OBJ_EVENT_GFX_MIGHTYENA 500 +#define OBJ_EVENT_GFX_ZIGZAGOON_FOLLOWER 501 +#define OBJ_EVENT_GFX_LINOONE 502 +#define OBJ_EVENT_GFX_WURMPLE 503 +#define OBJ_EVENT_GFX_SILCOON 504 +#define OBJ_EVENT_GFX_BEAUTIFLY 505 +#define OBJ_EVENT_GFX_CASCOON 506 +#define OBJ_EVENT_GFX_DUSTOX 507 +#define OBJ_EVENT_GFX_LOTAD 508 +#define OBJ_EVENT_GFX_LOMBRE 509 +#define OBJ_EVENT_GFX_LUDICOLO 510 +#define OBJ_EVENT_GFX_SEEDOT 511 +#define OBJ_EVENT_GFX_NUZLEAF 512 +#define OBJ_EVENT_GFX_SHIFTRY 513 +#define OBJ_EVENT_GFX_NINCADA 514 +#define OBJ_EVENT_GFX_NINJASK 515 +#define OBJ_EVENT_GFX_SHEDINJA 516 +#define OBJ_EVENT_GFX_TAILLOW 517 +#define OBJ_EVENT_GFX_SWELLOW 518 +#define OBJ_EVENT_GFX_SHROOMISH 519 +#define OBJ_EVENT_GFX_BRELOOM 520 +#define OBJ_EVENT_GFX_SPINDA 521 +#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 522 +#define OBJ_EVENT_GFX_PELIPPER 523 +#define OBJ_EVENT_GFX_SURSKIT 524 +#define OBJ_EVENT_GFX_MASQUERAIN 525 +#define OBJ_EVENT_GFX_WAILMER 526 +#define OBJ_EVENT_GFX_WAILORD 527 +#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 528 +#define OBJ_EVENT_GFX_DELCATTY 529 +#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 530 +#define OBJ_EVENT_GFX_BALTOY 531 +#define OBJ_EVENT_GFX_CLAYDOL 532 +#define OBJ_EVENT_GFX_NOSEPASS 533 +#define OBJ_EVENT_GFX_TORKOAL 534 +#define OBJ_EVENT_GFX_SABLEYE 535 +#define OBJ_EVENT_GFX_BARBOACH 536 +#define OBJ_EVENT_GFX_WHISCASH 537 +#define OBJ_EVENT_GFX_LUVDISC 538 +#define OBJ_EVENT_GFX_CORPHISH 539 +#define OBJ_EVENT_GFX_CRAWDAUNT 540 +#define OBJ_EVENT_GFX_FEEBAS 541 +#define OBJ_EVENT_GFX_MILOTIC 542 +#define OBJ_EVENT_GFX_CARVANHA 543 +#define OBJ_EVENT_GFX_SHARPEDO 544 +#define OBJ_EVENT_GFX_TRAPINCH 545 +#define OBJ_EVENT_GFX_VIBRAVA 546 +#define OBJ_EVENT_GFX_FLYGON 547 +#define OBJ_EVENT_GFX_MAKUHITA 548 +#define OBJ_EVENT_GFX_HARIYAMA 549 +#define OBJ_EVENT_GFX_ELECTRIKE 550 +#define OBJ_EVENT_GFX_MANECTRIC 551 +#define OBJ_EVENT_GFX_NUMEL 552 +#define OBJ_EVENT_GFX_CAMERUPT 553 +#define OBJ_EVENT_GFX_SPHEAL 554 +#define OBJ_EVENT_GFX_SEALEO 555 +#define OBJ_EVENT_GFX_WALREIN 556 +#define OBJ_EVENT_GFX_CACNEA 557 +#define OBJ_EVENT_GFX_CACTURNE 558 +#define OBJ_EVENT_GFX_SNORUNT 559 +#define OBJ_EVENT_GFX_GLALIE 560 +#define OBJ_EVENT_GFX_LUNATONE 561 +#define OBJ_EVENT_GFX_SOLROCK 562 +#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 563 +#define OBJ_EVENT_GFX_SPOINK 564 +#define OBJ_EVENT_GFX_GRUMPIG 565 +#define OBJ_EVENT_GFX_PLUSLE 566 +#define OBJ_EVENT_GFX_MINUN 567 +#define OBJ_EVENT_GFX_MAWILE 568 +#define OBJ_EVENT_GFX_MEDITITE 569 +#define OBJ_EVENT_GFX_MEDICHAM 570 +#define OBJ_EVENT_GFX_SWABLU 571 +#define OBJ_EVENT_GFX_ALTARIA 572 +#define OBJ_EVENT_GFX_WYNAUT 573 +#define OBJ_EVENT_GFX_DUSKULL 574 +#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 575 +#define OBJ_EVENT_GFX_ROSELIA 576 +#define OBJ_EVENT_GFX_SLAKOTH 577 +#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 578 +#define OBJ_EVENT_GFX_SLAKING 579 +#define OBJ_EVENT_GFX_GULPIN 580 +#define OBJ_EVENT_GFX_SWALOT 581 +#define OBJ_EVENT_GFX_TROPIUS 582 +#define OBJ_EVENT_GFX_WHISMUR 583 +#define OBJ_EVENT_GFX_LOUDRED 584 +#define OBJ_EVENT_GFX_EXPLOUD 585 +#define OBJ_EVENT_GFX_CLAMPERL 586 +#define OBJ_EVENT_GFX_HUNTAIL 587 +#define OBJ_EVENT_GFX_GOREBYSS 588 +#define OBJ_EVENT_GFX_ABSOL 589 +#define OBJ_EVENT_GFX_SHUPPET 590 +#define OBJ_EVENT_GFX_BANETTE 591 +#define OBJ_EVENT_GFX_SEVIPER 592 +#define OBJ_EVENT_GFX_ZANGOOSE 593 +#define OBJ_EVENT_GFX_RELICANTH 594 +#define OBJ_EVENT_GFX_ARON 595 +#define OBJ_EVENT_GFX_LAIRON 596 +#define OBJ_EVENT_GFX_AGGRON 597 +#define OBJ_EVENT_GFX_CASTFORM 598 +#define OBJ_EVENT_GFX_VOLBEAT 599 +#define OBJ_EVENT_GFX_ILLUMISE 600 +#define OBJ_EVENT_GFX_LILEEP 601 +#define OBJ_EVENT_GFX_CRADILY 602 +#define OBJ_EVENT_GFX_ANORITH 603 +#define OBJ_EVENT_GFX_ARMALDO 604 +#define OBJ_EVENT_GFX_RALTS 605 +#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 606 +#define OBJ_EVENT_GFX_GARDEVOIR 607 +#define OBJ_EVENT_GFX_BAGON 608 +#define OBJ_EVENT_GFX_SHELGON 609 +#define OBJ_EVENT_GFX_SALAMENCE 610 +#define OBJ_EVENT_GFX_BELDUM 611 +#define OBJ_EVENT_GFX_METANG 612 +#define OBJ_EVENT_GFX_METAGROSS 613 +#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 614 +#define OBJ_EVENT_GFX_REGICE_FOLLOWER 615 +#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 616 +#define OBJ_EVENT_GFX_KYOGRE 617 +#define OBJ_EVENT_GFX_GROUDON 618 +#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 619 +#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 620 +#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 621 +#define OBJ_EVENT_GFX_JIRACHI 622 +#define OBJ_EVENT_GFX_DEOXYS_NORMAL 623 +#define OBJ_EVENT_GFX_CHIMECHO 624 + +// Other forms +#define OBJ_EVENT_GFX_DEOXYS_ATTACK 625 +#define OBJ_EVENT_GFX_DEOXYS_DEFENSE 626 +#define OBJ_EVENT_GFX_DEOXYS_SPEED 627 +#define OBJ_EVENT_GFX_UNOWN_B 628 +#define OBJ_EVENT_GFX_UNOWN_C 629 +#define OBJ_EVENT_GFX_UNOWN_D 630 +#define OBJ_EVENT_GFX_UNOWN_E 631 +#define OBJ_EVENT_GFX_UNOWN_F 632 +#define OBJ_EVENT_GFX_UNOWN_G 633 +#define OBJ_EVENT_GFX_UNOWN_H 634 +#define OBJ_EVENT_GFX_UNOWN_I 635 +#define OBJ_EVENT_GFX_UNOWN_J 636 +#define OBJ_EVENT_GFX_UNOWN_K 637 +#define OBJ_EVENT_GFX_UNOWN_L 638 +#define OBJ_EVENT_GFX_UNOWN_M 639 +#define OBJ_EVENT_GFX_UNOWN_N 640 +#define OBJ_EVENT_GFX_UNOWN_O 641 +#define OBJ_EVENT_GFX_UNOWN_P 642 +#define OBJ_EVENT_GFX_UNOWN_Q 643 +#define OBJ_EVENT_GFX_UNOWN_R 644 +#define OBJ_EVENT_GFX_UNOWN_S 645 +#define OBJ_EVENT_GFX_UNOWN_T 646 +#define OBJ_EVENT_GFX_UNOWN_U 647 +#define OBJ_EVENT_GFX_UNOWN_V 648 +#define OBJ_EVENT_GFX_UNOWN_W 649 +#define OBJ_EVENT_GFX_UNOWN_X 650 +#define OBJ_EVENT_GFX_UNOWN_Y 651 +#define OBJ_EVENT_GFX_UNOWN_Z 652 +#define OBJ_EVENT_GFX_UNOWN_EXCLAMATION 653 +#define OBJ_EVENT_GFX_UNOWN_QUESTION 654 + +#define OBJ_EVENT_GFX_GREAT_BALL 655 +#define OBJ_EVENT_GFX_ULTRA_BALL 656 +#define OBJ_EVENT_GFX_MASTER_BALL 657 +#define OBJ_EVENT_GFX_SAFARI_BALL 658 +#define OBJ_EVENT_GFX_NET_BALL 659 +#define OBJ_EVENT_GFX_DIVE_BALL 660 +#define OBJ_EVENT_GFX_NEST_BALL 661 +#define OBJ_EVENT_GFX_REPEAT_BALL 662 +#define OBJ_EVENT_GFX_TIMER_BALL 663 +#define OBJ_EVENT_GFX_LUXURY_BALL 664 +#define OBJ_EVENT_GFX_PREMIER_BALL 665 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 666 + +#define NUM_OBJ_EVENT_GFX 667 + +#endif + // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d5657861a..a8d254c70 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10030,37 +10030,37 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { - case 1: // Master Ball + case ITEM_MASTER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &PokeballCallback, x, y, 2); break; - case 2: // Ultra Ball + case ITEM_ULTRA_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &PokeballCallback, x, y, 2); break; - case 3: // Great Ball + case ITEM_GREAT_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &PokeballCallback, x, y, 2); break; - case 5: // Safari Ball + case ITEM_SAFARI_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &PokeballCallback, x, y, 2); break; - case 6: // Net Ball + case ITEM_NET_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &PokeballCallback, x, y, 2); break; - case 7: // Dive Ball + case ITEM_DIVE_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &PokeballCallback, x, y, 2); break; - case 8: // Nest Ball + case ITEM_NEST_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &PokeballCallback, x, y, 2); break; - case 9: // Repeat Ball + case ITEM_REPEAT_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &PokeballCallback, x, y, 2); break; - case 10: // Timer Ball + case ITEM_TIMER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &PokeballCallback, x, y, 2); break; - case 11: // Luxury Ball + case ITEM_LUXURY_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &PokeballCallback, x, y, 2); break; - case 12: // Premier Ball + case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); break; default: // PokeBall diff --git a/src/overworld.c b/src/overworld.c index ee4f6be9a..bd6f7f2a1 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -71,6 +71,7 @@ #include "constants/weather.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" +#include "constants/items.h" struct CableClubPlayer { @@ -3639,7 +3640,7 @@ void UpdateFollowerPokemonGraphic(void) { // Loaded in case the player changed the species of the Pokemon in the lead of the party. // If so, the following Pokemon needs to change. - u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; + u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + OBJ_EVENT_GFX_BULBASAUR - 1; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; // If the lead Pokemon is Unown, use the correct sprite @@ -4069,41 +4070,41 @@ void FollowerPokeballSparkle(void) switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { - case 1: // Master Ball - spriteId = CreateObjectGraphicsSprite(492, &SparklePokeballCallback, x, y, 2); + case ITEM_MASTER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &SparklePokeballCallback, x, y, 2); break; - case 2: // Ultra Ball - spriteId = CreateObjectGraphicsSprite(491, &SparklePokeballCallback, x, y, 2); + case ITEM_ULTRA_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &SparklePokeballCallback, x, y, 2); break; - case 3: // Great Ball - spriteId = CreateObjectGraphicsSprite(490, &SparklePokeballCallback, x, y, 2); + case ITEM_GREAT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &SparklePokeballCallback, x, y, 2); break; - case 5: // Safari Ball - spriteId = CreateObjectGraphicsSprite(493, &SparklePokeballCallback, x, y, 2); + case ITEM_SAFARI_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &SparklePokeballCallback, x, y, 2); break; - case 6: // Net Ball - spriteId = CreateObjectGraphicsSprite(494, &SparklePokeballCallback, x, y, 2); + case ITEM_NET_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &SparklePokeballCallback, x, y, 2); break; - case 7: // Dive Ball - spriteId = CreateObjectGraphicsSprite(495, &SparklePokeballCallback, x, y, 2); + case ITEM_DIVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &SparklePokeballCallback, x, y, 2); break; - case 8: // Nest Ball - spriteId = CreateObjectGraphicsSprite(496, &SparklePokeballCallback, x, y, 2); + case ITEM_NEST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &SparklePokeballCallback, x, y, 2); break; - case 9: // Repeat Ball - spriteId = CreateObjectGraphicsSprite(497, &SparklePokeballCallback, x, y, 2); + case ITEM_REPEAT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &SparklePokeballCallback, x, y, 2); break; - case 10: // Timer Ball - spriteId = CreateObjectGraphicsSprite(498, &SparklePokeballCallback, x, y, 2); + case ITEM_TIMER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &SparklePokeballCallback, x, y, 2); break; - case 11: // Luxury Ball - spriteId = CreateObjectGraphicsSprite(499, &SparklePokeballCallback, x, y, 2); + case ITEM_LUXURY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &SparklePokeballCallback, x, y, 2); break; - case 12: // Premier Ball - spriteId = CreateObjectGraphicsSprite(500, &SparklePokeballCallback, x, y, 2); + case ITEM_PREMIER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &SparklePokeballCallback, x, y, 2); break; - default: // PokeBall, at default rather than 4 in case of item_expansion - spriteId = CreateObjectGraphicsSprite(59, &SparklePokeballCallback, x, y, 2); + default: // PokeBall + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; } From 52c4a9c8682daccde35d7c3869ff2a042cd5ee8b Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 22 Mar 2022 13:09:44 -0700 Subject: [PATCH 23/71] obj_event constants account for expansion, constants are used more This allows for expansion projects to work with this project, as well as accounts for if extra object events are added, offsetting some of the follower's/pokeball's constants. --- include/constants/event_objects.h | 157 ++++++++++++++++++++++++++++++ src/event_object_movement.c | 22 ++--- src/overworld.c | 51 +++++----- 3 files changed, 194 insertions(+), 36 deletions(-) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 37e29655b..e7c58663e 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -492,6 +492,8 @@ #define OBJ_EVENT_GFX_HOOH_FOLLOWER 488 #define OBJ_EVENT_GFX_CELEBI 489 +#ifndef POKEMON_EXPANSION + #define OBJ_EVENT_GFX_GREAT_BALL 490 #define OBJ_EVENT_GFX_ULTRA_BALL 491 #define OBJ_EVENT_GFX_MASTER_BALL 492 @@ -644,6 +646,161 @@ #define NUM_OBJ_EVENT_GFX 650 +#else +// There are no OLD_UNOWN constants in the pokemon_expansion + +#define OBJ_EVENT_GFX_TREECKO 490 +#define OBJ_EVENT_GFX_GROVYLE 491 +#define OBJ_EVENT_GFX_SCEPTILE 492 +#define OBJ_EVENT_GFX_TORCHIC 493 +#define OBJ_EVENT_GFX_COMBUSKEN 494 +#define OBJ_EVENT_GFX_BLAZIKEN 495 +#define OBJ_EVENT_GFX_MUDKIP 496 +#define OBJ_EVENT_GFX_MARSHTOMP 497 +#define OBJ_EVENT_GFX_SWAMPERT 498 +#define OBJ_EVENT_GFX_POOCHYENA_FOLLOWER 499 +#define OBJ_EVENT_GFX_MIGHTYENA 500 +#define OBJ_EVENT_GFX_ZIGZAGOON_FOLLOWER 501 +#define OBJ_EVENT_GFX_LINOONE 502 +#define OBJ_EVENT_GFX_WURMPLE 503 +#define OBJ_EVENT_GFX_SILCOON 504 +#define OBJ_EVENT_GFX_BEAUTIFLY 505 +#define OBJ_EVENT_GFX_CASCOON 506 +#define OBJ_EVENT_GFX_DUSTOX 507 +#define OBJ_EVENT_GFX_LOTAD 508 +#define OBJ_EVENT_GFX_LOMBRE 509 +#define OBJ_EVENT_GFX_LUDICOLO 510 +#define OBJ_EVENT_GFX_SEEDOT 511 +#define OBJ_EVENT_GFX_NUZLEAF 512 +#define OBJ_EVENT_GFX_SHIFTRY 513 +#define OBJ_EVENT_GFX_NINCADA 514 +#define OBJ_EVENT_GFX_NINJASK 515 +#define OBJ_EVENT_GFX_SHEDINJA 516 +#define OBJ_EVENT_GFX_TAILLOW 517 +#define OBJ_EVENT_GFX_SWELLOW 518 +#define OBJ_EVENT_GFX_SHROOMISH 519 +#define OBJ_EVENT_GFX_BRELOOM 520 +#define OBJ_EVENT_GFX_SPINDA 521 +#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 522 +#define OBJ_EVENT_GFX_PELIPPER 523 +#define OBJ_EVENT_GFX_SURSKIT 524 +#define OBJ_EVENT_GFX_MASQUERAIN 525 +#define OBJ_EVENT_GFX_WAILMER 526 +#define OBJ_EVENT_GFX_WAILORD 527 +#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 528 +#define OBJ_EVENT_GFX_DELCATTY 529 +#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 530 +#define OBJ_EVENT_GFX_BALTOY 531 +#define OBJ_EVENT_GFX_CLAYDOL 532 +#define OBJ_EVENT_GFX_NOSEPASS 533 +#define OBJ_EVENT_GFX_TORKOAL 534 +#define OBJ_EVENT_GFX_SABLEYE 535 +#define OBJ_EVENT_GFX_BARBOACH 536 +#define OBJ_EVENT_GFX_WHISCASH 537 +#define OBJ_EVENT_GFX_LUVDISC 538 +#define OBJ_EVENT_GFX_CORPHISH 539 +#define OBJ_EVENT_GFX_CRAWDAUNT 540 +#define OBJ_EVENT_GFX_FEEBAS 541 +#define OBJ_EVENT_GFX_MILOTIC 542 +#define OBJ_EVENT_GFX_CARVANHA 543 +#define OBJ_EVENT_GFX_SHARPEDO 544 +#define OBJ_EVENT_GFX_TRAPINCH 545 +#define OBJ_EVENT_GFX_VIBRAVA 546 +#define OBJ_EVENT_GFX_FLYGON 547 +#define OBJ_EVENT_GFX_MAKUHITA 548 +#define OBJ_EVENT_GFX_HARIYAMA 549 +#define OBJ_EVENT_GFX_ELECTRIKE 550 +#define OBJ_EVENT_GFX_MANECTRIC 551 +#define OBJ_EVENT_GFX_NUMEL 552 +#define OBJ_EVENT_GFX_CAMERUPT 553 +#define OBJ_EVENT_GFX_SPHEAL 554 +#define OBJ_EVENT_GFX_SEALEO 555 +#define OBJ_EVENT_GFX_WALREIN 556 +#define OBJ_EVENT_GFX_CACNEA 557 +#define OBJ_EVENT_GFX_CACTURNE 558 +#define OBJ_EVENT_GFX_SNORUNT 559 +#define OBJ_EVENT_GFX_GLALIE 560 +#define OBJ_EVENT_GFX_LUNATONE 561 +#define OBJ_EVENT_GFX_SOLROCK 562 +#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 563 +#define OBJ_EVENT_GFX_SPOINK 564 +#define OBJ_EVENT_GFX_GRUMPIG 565 +#define OBJ_EVENT_GFX_PLUSLE 566 +#define OBJ_EVENT_GFX_MINUN 567 +#define OBJ_EVENT_GFX_MAWILE 568 +#define OBJ_EVENT_GFX_MEDITITE 569 +#define OBJ_EVENT_GFX_MEDICHAM 570 +#define OBJ_EVENT_GFX_SWABLU 571 +#define OBJ_EVENT_GFX_ALTARIA 572 +#define OBJ_EVENT_GFX_WYNAUT 573 +#define OBJ_EVENT_GFX_DUSKULL 574 +#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 575 +#define OBJ_EVENT_GFX_ROSELIA 576 +#define OBJ_EVENT_GFX_SLAKOTH 577 +#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 578 +#define OBJ_EVENT_GFX_SLAKING 579 +#define OBJ_EVENT_GFX_GULPIN 580 +#define OBJ_EVENT_GFX_SWALOT 581 +#define OBJ_EVENT_GFX_TROPIUS 582 +#define OBJ_EVENT_GFX_WHISMUR 583 +#define OBJ_EVENT_GFX_LOUDRED 584 +#define OBJ_EVENT_GFX_EXPLOUD 585 +#define OBJ_EVENT_GFX_CLAMPERL 586 +#define OBJ_EVENT_GFX_HUNTAIL 587 +#define OBJ_EVENT_GFX_GOREBYSS 588 +#define OBJ_EVENT_GFX_ABSOL 589 +#define OBJ_EVENT_GFX_SHUPPET 590 +#define OBJ_EVENT_GFX_BANETTE 591 +#define OBJ_EVENT_GFX_SEVIPER 592 +#define OBJ_EVENT_GFX_ZANGOOSE 593 +#define OBJ_EVENT_GFX_RELICANTH 594 +#define OBJ_EVENT_GFX_ARON 595 +#define OBJ_EVENT_GFX_LAIRON 596 +#define OBJ_EVENT_GFX_AGGRON 597 +#define OBJ_EVENT_GFX_CASTFORM 598 +#define OBJ_EVENT_GFX_VOLBEAT 599 +#define OBJ_EVENT_GFX_ILLUMISE 600 +#define OBJ_EVENT_GFX_LILEEP 601 +#define OBJ_EVENT_GFX_CRADILY 602 +#define OBJ_EVENT_GFX_ANORITH 603 +#define OBJ_EVENT_GFX_ARMALDO 604 +#define OBJ_EVENT_GFX_RALTS 605 +#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 606 +#define OBJ_EVENT_GFX_GARDEVOIR 607 +#define OBJ_EVENT_GFX_BAGON 608 +#define OBJ_EVENT_GFX_SHELGON 609 +#define OBJ_EVENT_GFX_SALAMENCE 610 +#define OBJ_EVENT_GFX_BELDUM 611 +#define OBJ_EVENT_GFX_METANG 612 +#define OBJ_EVENT_GFX_METAGROSS 613 +#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 614 +#define OBJ_EVENT_GFX_REGICE_FOLLOWER 615 +#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 616 +#define OBJ_EVENT_GFX_KYOGRE 617 +#define OBJ_EVENT_GFX_GROUDON 618 +#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 619 +#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 620 +#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 621 +#define OBJ_EVENT_GFX_JIRACHI 622 +#define OBJ_EVENT_GFX_DEOXYS_NORMAL 623 +#define OBJ_EVENT_GFX_CHIMECHO 624 + +#define OBJ_EVENT_GFX_GREAT_BALL 625 +#define OBJ_EVENT_GFX_ULTRA_BALL 626 +#define OBJ_EVENT_GFX_MASTER_BALL 627 +#define OBJ_EVENT_GFX_SAFARI_BALL 628 +#define OBJ_EVENT_GFX_NET_BALL 629 +#define OBJ_EVENT_GFX_DIVE_BALL 630 +#define OBJ_EVENT_GFX_NEST_BALL 631 +#define OBJ_EVENT_GFX_REPEAT_BALL 632 +#define OBJ_EVENT_GFX_TIMER_BALL 633 +#define OBJ_EVENT_GFX_LUXURY_BALL 634 +#define OBJ_EVENT_GFX_PREMIER_BALL 635 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 636 + +#define NUM_OBJ_EVENT_GFX 637 + +#endif // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ff71f08b3..95125d225 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10136,37 +10136,37 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { - case 1: // Master Ball + case ITEM_MASTER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &PokeballCallback, x, y, 2); break; - case 2: // Ultra Ball + case ITEM_ULTRA_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &PokeballCallback, x, y, 2); break; - case 3: // Great Ball + case ITEM_GREAT_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &PokeballCallback, x, y, 2); break; - case 5: // Safari Ball + case ITEM_SAFARI_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &PokeballCallback, x, y, 2); break; - case 6: // Net Ball + case ITEM_NET_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &PokeballCallback, x, y, 2); break; - case 7: // Dive Ball + case ITEM_DIVE_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &PokeballCallback, x, y, 2); break; - case 8: // Nest Ball + case ITEM_NEST_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &PokeballCallback, x, y, 2); break; - case 9: // Repeat Ball + case ITEM_REPEAT_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &PokeballCallback, x, y, 2); break; - case 10: // Timer Ball + case ITEM_TIMER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &PokeballCallback, x, y, 2); break; - case 11: // Luxury Ball + case ITEM_LUXURY_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &PokeballCallback, x, y, 2); break; - case 12: // Premier Ball + case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); break; default: // PokeBall diff --git a/src/overworld.c b/src/overworld.c index 468b316e4..8cd1ca3fd 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -70,6 +70,7 @@ #include "constants/weather.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" +#include "constants/items.h" struct CableClubPlayer { @@ -3638,7 +3639,7 @@ void UpdateFollowerPokemonGraphic(void) { // Loaded in case the player changed the species of the Pokemon in the lead of the party. // If so, the following Pokemon needs to change. - u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + 238; + u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + OBJ_EVENT_GFX_BULBASAUR - 1; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) @@ -4057,41 +4058,41 @@ void FollowerPokeballSparkle(void) switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { - case 1: // Master Ball - spriteId = CreateObjectGraphicsSprite(492, &SparklePokeballCallback, x, y, 2); + case ITEM_MASTER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &SparklePokeballCallback, x, y, 2); break; - case 2: // Ultra Ball - spriteId = CreateObjectGraphicsSprite(491, &SparklePokeballCallback, x, y, 2); + case ITEM_ULTRA_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &SparklePokeballCallback, x, y, 2); break; - case 3: // Great Ball - spriteId = CreateObjectGraphicsSprite(490, &SparklePokeballCallback, x, y, 2); + case ITEM_GREAT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &SparklePokeballCallback, x, y, 2); break; - case 5: // Safari Ball - spriteId = CreateObjectGraphicsSprite(493, &SparklePokeballCallback, x, y, 2); + case ITEM_SAFARI_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &SparklePokeballCallback, x, y, 2); break; - case 6: // Net Ball - spriteId = CreateObjectGraphicsSprite(494, &SparklePokeballCallback, x, y, 2); + case ITEM_NET_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &SparklePokeballCallback, x, y, 2); break; - case 7: // Dive Ball - spriteId = CreateObjectGraphicsSprite(495, &SparklePokeballCallback, x, y, 2); + case ITEM_DIVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &SparklePokeballCallback, x, y, 2); break; - case 8: // Nest Ball - spriteId = CreateObjectGraphicsSprite(496, &SparklePokeballCallback, x, y, 2); + case ITEM_NEST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &SparklePokeballCallback, x, y, 2); break; - case 9: // Repeat Ball - spriteId = CreateObjectGraphicsSprite(497, &SparklePokeballCallback, x, y, 2); + case ITEM_REPEAT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &SparklePokeballCallback, x, y, 2); break; - case 10: // Timer Ball - spriteId = CreateObjectGraphicsSprite(498, &SparklePokeballCallback, x, y, 2); + case ITEM_TIMER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &SparklePokeballCallback, x, y, 2); break; - case 11: // Luxury Ball - spriteId = CreateObjectGraphicsSprite(499, &SparklePokeballCallback, x, y, 2); + case ITEM_LUXURY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &SparklePokeballCallback, x, y, 2); break; - case 12: // Premier Ball - spriteId = CreateObjectGraphicsSprite(500, &SparklePokeballCallback, x, y, 2); + case ITEM_PREMIER_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &SparklePokeballCallback, x, y, 2); break; - default: // PokeBall, at default rather than 4 in case of item_expansion - spriteId = CreateObjectGraphicsSprite(59, &SparklePokeballCallback, x, y, 2); + default: // PokeBall + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; } From 8ee84b5843ed365c7db2b7a05b1d44bbea8705f3 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 23 Mar 2022 11:55:08 -0700 Subject: [PATCH 24/71] More constants in use for dynamism --- src/overworld.c | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index 8cd1ca3fd..9cfba5a10 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3779,11 +3779,13 @@ static void SparklePokeballCallback(struct Sprite *sprite) player->fixedPriority = FALSE; // Shift the location of the sparkle, depending on which way the follower will be facing - // Gen 3 OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + #ifndef POKEMON_EXPANSION + // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) - graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239 - 25; + graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR - 25; else - graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239; + #endif + graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR; switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { @@ -3824,7 +3826,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) if (IsBigSprite(follower->graphicsId)) { // North sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3837,7 +3839,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3850,7 +3852,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // East sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3863,7 +3865,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3876,7 +3878,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // South sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3889,7 +3891,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3902,7 +3904,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // West sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3915,7 +3917,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3930,7 +3932,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) else { // North sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3942,7 +3944,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3954,7 +3956,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // East sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3966,7 +3968,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3978,7 +3980,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // South sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3990,7 +3992,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4002,7 +4004,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // West sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4014,7 +4016,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4126,7 +4128,7 @@ void FollowerPokeballSparkle(void) player->fixedPriority = TRUE; SeekSpriteAnim(&gSprites[follower->spriteId], 0); - ObjectEventForceSetHeldMovement(follower, 0xA5); + ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); } } @@ -4134,7 +4136,7 @@ void FollowerIntoPokeball(void) { if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) { - ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0xA4); + ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } } From 7d5659ddca596b8d24a37c4bc75b3bed738cb35d Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 23 Mar 2022 12:03:50 -0700 Subject: [PATCH 25/71] Used more constants for dynamism --- src/overworld.c | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index bd6f7f2a1..b51cba268 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3792,10 +3792,12 @@ static void SparklePokeballCallback(struct Sprite *sprite) // Account for the other Unown forms if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_DEOXYS_SPEED) graphicsId = 200; - else if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) // Gen 3 OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. - graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239 - 25; + #ifndef POKEMON_EXPANSION + else if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR - 25; + #endif else - graphicsId = gSaveBlock2Ptr->follower.graphicsId - 239; + graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR; switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { @@ -3836,7 +3838,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) if (IsBigSprite(follower->graphicsId)) { // North sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3849,7 +3851,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3862,7 +3864,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // East sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3875,7 +3877,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3888,7 +3890,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // South sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3901,7 +3903,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3914,7 +3916,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // West sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3927,7 +3929,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &BigSparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3942,7 +3944,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) else { // North sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3954,7 +3956,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3966,7 +3968,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // East sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3978,7 +3980,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -3990,7 +3992,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // South sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4002,7 +4004,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4014,7 +4016,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // West sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4026,7 +4028,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) } // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(501, &SparkleCallback, x, y, 0); + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; @@ -4138,7 +4140,7 @@ void FollowerPokeballSparkle(void) player->fixedPriority = TRUE; SeekSpriteAnim(&gSprites[follower->spriteId], 0); - ObjectEventForceSetHeldMovement(follower, 0xA5); + ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); } } @@ -4146,7 +4148,7 @@ void FollowerIntoPokeball(void) { if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) { - ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0xA4); + ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } } From 2baef470a1a114d573941d65b2374260100ff7d8 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Thu, 24 Mar 2022 00:37:45 -0700 Subject: [PATCH 26/71] Added item_expansion pokeball sprites. --- .../object_events/palettes/cherish_ball.pal | 19 +++++ .../object_events/palettes/dream_ball.pal | 19 +++++ graphics/object_events/palettes/dusk_ball.pal | 19 +++++ graphics/object_events/palettes/fast_ball.pal | 19 +++++ .../object_events/palettes/friend_ball.pal | 19 +++++ graphics/object_events/palettes/heal_ball.pal | 19 +++++ .../object_events/palettes/heavy_ball.pal | 19 +++++ .../object_events/palettes/level_ball.pal | 19 +++++ graphics/object_events/palettes/love_ball.pal | 19 +++++ graphics/object_events/palettes/lure_ball.pal | 19 +++++ graphics/object_events/palettes/moon_ball.pal | 19 +++++ graphics/object_events/palettes/park_ball.pal | 19 +++++ .../object_events/palettes/quick_ball.pal | 19 +++++ .../object_events/palettes/sport_ball.pal | 19 +++++ .../object_events/pics/misc/cherish_ball.png | Bin 0 -> 203 bytes .../object_events/pics/misc/dream_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/dusk_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/fast_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/friend_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/heal_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/heavy_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/level_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/love_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/lure_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/moon_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/park_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/quick_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/sport_ball.png | Bin 0 -> 211 bytes include/constants/event_objects.h | 37 +++++++-- .../object_events/object_event_graphics.h | 28 +++++++ .../object_event_graphics_info.h | 14 ++++ .../object_event_graphics_info_pointers.h | 28 +++++++ .../object_events/object_event_pic_tables.h | 56 ++++++++++++++ src/event_object_movement.c | 72 ++++++++++++++++++ src/overworld.c | 44 +++++++++++ 35 files changed, 540 insertions(+), 5 deletions(-) create mode 100644 graphics/object_events/palettes/cherish_ball.pal create mode 100644 graphics/object_events/palettes/dream_ball.pal create mode 100644 graphics/object_events/palettes/dusk_ball.pal create mode 100644 graphics/object_events/palettes/fast_ball.pal create mode 100644 graphics/object_events/palettes/friend_ball.pal create mode 100644 graphics/object_events/palettes/heal_ball.pal create mode 100644 graphics/object_events/palettes/heavy_ball.pal create mode 100644 graphics/object_events/palettes/level_ball.pal create mode 100644 graphics/object_events/palettes/love_ball.pal create mode 100644 graphics/object_events/palettes/lure_ball.pal create mode 100644 graphics/object_events/palettes/moon_ball.pal create mode 100644 graphics/object_events/palettes/park_ball.pal create mode 100644 graphics/object_events/palettes/quick_ball.pal create mode 100644 graphics/object_events/palettes/sport_ball.pal create mode 100644 graphics/object_events/pics/misc/cherish_ball.png create mode 100644 graphics/object_events/pics/misc/dream_ball.png create mode 100644 graphics/object_events/pics/misc/dusk_ball.png create mode 100644 graphics/object_events/pics/misc/fast_ball.png create mode 100644 graphics/object_events/pics/misc/friend_ball.png create mode 100644 graphics/object_events/pics/misc/heal_ball.png create mode 100644 graphics/object_events/pics/misc/heavy_ball.png create mode 100644 graphics/object_events/pics/misc/level_ball.png create mode 100644 graphics/object_events/pics/misc/love_ball.png create mode 100644 graphics/object_events/pics/misc/lure_ball.png create mode 100644 graphics/object_events/pics/misc/moon_ball.png create mode 100644 graphics/object_events/pics/misc/park_ball.png create mode 100644 graphics/object_events/pics/misc/quick_ball.png create mode 100644 graphics/object_events/pics/misc/sport_ball.png diff --git a/graphics/object_events/palettes/cherish_ball.pal b/graphics/object_events/palettes/cherish_ball.pal new file mode 100644 index 000000000..f2e72ff06 --- /dev/null +++ b/graphics/object_events/palettes/cherish_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +95 15 1 +69 65 59 +193 55 31 +249 249 249 +225 87 63 +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/graphics/object_events/palettes/dream_ball.pal b/graphics/object_events/palettes/dream_ball.pal new file mode 100644 index 000000000..a691977ce --- /dev/null +++ b/graphics/object_events/palettes/dream_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +219 133 171 +247 41 129 +1 1 1 +107 83 141 +55 37 79 +193 185 209 +249 103 165 +249 249 249 +139 115 173 +95 31 61 +233 183 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/dusk_ball.pal b/graphics/object_events/palettes/dusk_ball.pal new file mode 100644 index 000000000..0be0a538c --- /dev/null +++ b/graphics/object_events/palettes/dusk_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +63 163 63 +45 115 45 +185 33 1 +47 47 47 +69 65 59 +105 97 87 +217 73 1 +249 249 249 +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/palettes/fast_ball.pal b/graphics/object_events/palettes/fast_ball.pal new file mode 100644 index 000000000..9d9b9d86c --- /dev/null +++ b/graphics/object_events/palettes/fast_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +241 149 79 +157 157 189 +91 69 1 +249 249 249 +213 171 43 +1 1 1 +75 75 123 +101 43 1 +235 113 21 +205 205 223 +223 191 97 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/friend_ball.pal b/graphics/object_events/palettes/friend_ball.pal new file mode 100644 index 000000000..a155698a8 --- /dev/null +++ b/graphics/object_events/palettes/friend_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +107 149 43 +157 157 189 +45 75 1 +249 249 249 +75 75 123 +141 199 57 +1 1 1 +195 79 61 +209 123 109 +247 223 17 +205 205 223 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/heal_ball.pal b/graphics/object_events/palettes/heal_ball.pal new file mode 100644 index 000000000..f5b6713c1 --- /dev/null +++ b/graphics/object_events/palettes/heal_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +129 47 107 +253 237 225 +87 135 201 +249 199 167 +245 41 189 +249 249 249 +249 103 209 +193 185 209 +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/palettes/heavy_ball.pal b/graphics/object_events/palettes/heavy_ball.pal new file mode 100644 index 000000000..2c8781c6b --- /dev/null +++ b/graphics/object_events/palettes/heavy_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +95 133 225 +27 53 115 +1 1 1 +69 65 59 +205 205 223 +39 93 217 +249 249 249 +47 47 47 +157 157 189 +105 97 87 +75 75 123 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/level_ball.pal b/graphics/object_events/palettes/level_ball.pal new file mode 100644 index 000000000..80e49c9cc --- /dev/null +++ b/graphics/object_events/palettes/level_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +233 131 119 +69 65 59 +1 1 1 +105 97 87 +205 205 223 +157 157 189 +215 119 41 +249 249 249 +47 47 47 +225 79 63 +75 75 123 +225 153 95 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/love_ball.pal b/graphics/object_events/palettes/love_ball.pal new file mode 100644 index 000000000..e8e8e8a0d --- /dev/null +++ b/graphics/object_events/palettes/love_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +1 1 1 +75 75 123 +205 205 223 +255 191 229 +159 65 129 +249 249 249 +93 1 63 +255 129 201 +191 97 161 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/lure_ball.pal b/graphics/object_events/palettes/lure_ball.pal new file mode 100644 index 000000000..e156e3232 --- /dev/null +++ b/graphics/object_events/palettes/lure_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +43 153 213 +75 75 123 +205 205 223 +207 49 69 +1 1 1 +219 101 115 +249 249 249 +1 53 81 +33 115 159 +157 157 189 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/moon_ball.pal b/graphics/object_events/palettes/moon_ball.pal new file mode 100644 index 000000000..ac8987a4c --- /dev/null +++ b/graphics/object_events/palettes/moon_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +245 193 11 +21 181 235 +93 71 1 +249 249 249 +157 157 189 +1 85 111 +101 119 155 +1 1 1 +41 51 71 +205 205 223 +249 209 71 +75 75 123 +81 201 239 +75 89 117 +255 255 255 diff --git a/graphics/object_events/palettes/park_ball.pal b/graphics/object_events/palettes/park_ball.pal new file mode 100644 index 000000000..00d4cf5ad --- /dev/null +++ b/graphics/object_events/palettes/park_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +235 193 21 +97 77 3 +75 75 123 +205 205 223 +249 249 249 +249 137 49 +241 209 79 +41 105 201 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/quick_ball.pal b/graphics/object_events/palettes/quick_ball.pal new file mode 100644 index 000000000..28ce5c50b --- /dev/null +++ b/graphics/object_events/palettes/quick_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +191 191 1 +41 141 215 +1 1 1 +157 157 189 +35 75 107 +255 255 1 +95 169 225 +249 249 249 +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/palettes/sport_ball.pal b/graphics/object_events/palettes/sport_ball.pal new file mode 100644 index 000000000..a107ed002 --- /dev/null +++ b/graphics/object_events/palettes/sport_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +213 171 43 +157 157 189 +193 63 31 +249 249 249 +1 1 1 +75 75 123 +83 21 7 +223 191 97 +205 205 223 +225 95 63 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/cherish_ball.png b/graphics/object_events/pics/misc/cherish_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb64441ce90ce07441f947a33f5ee6991f8d3cd GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5o}bax(fXjd{Li01 zABNilW$=Jg7xsh!r8x^cB8wRqxP?KOkzv*x380{(r;B3<$IRpe1wjrjr;KA40vHXP zuUxeda4}|Wmzu5BkTRurO0PqakJ~E8Qv!ll6*h1*Pna}G$z^xu28LCQKnIrXWm^`} RWc?K608dvxmvv4FO#r>$Gxq=h literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/dream_ball.png b/graphics/object_events/pics/misc/dream_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba9da213cd26f74ef0b43cc0c2300cab5bb0eb1 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RcI)cznvIN%jM>4x z=BoY&cV7INzVzqMpWVf47bg*#837H^PTeOt7=k=5*-*c3KS!+a65DP|0v60=mfn_VJW&rafH scIZ-4kM?7Io%D5%5QCwHiO9_gh6oA1bBm5m-2$@J)78&qol`;+05sb`IsgCw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/dusk_ball.png b/graphics/object_events/pics/misc/dusk_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..70bfbf9ae258989f39dfb8914776d326a47a6674 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`ezCo7vF=VqMtyyK zS4Zp2#PFM*j6Z+=1S-J<9LFE90!29sJR*x37`TN&n2}-D90{PHlc$Sg2*=Fi1O>qz zI~+2mxfrq=9NwrK!lE-_%8FHNLP=twW?Uu=oik>Mvp2g$w4CkkJ+SKTq_aT^x0qdJ c19)2)82Be}USj1~XbZB~)78&qol`;+0NDF9jsO4v literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/fast_ball.png b/graphics/object_events/pics/misc/fast_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..198542370d10ec0ef1741f16bd38e11bd7a46e45 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN5EOGXDJe z^Xh7CMn*<&@9I=-#@B_SXV2chzd!N+|NlVc5RkaV^caxES>O>_%)r1c48n{Iv*t(u z1-(37978x}CMPHemXtVT@V)HiO>kSByo9AA?VhGZ@ixW@2e*|*rIj#EI5=Fr(Jd)$(dk@2v;p@xab%?gGG-}# z<&<&kQxT(qv(3q^0y+V!(25$xa#QCUM|I3%^|D- aye&Y-9^{NwW?~0f!QkoY=d#Wzp$PzO#5(o> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/heavy_ball.png b/graphics/object_events/pics/misc/heavy_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..e866a3edf8988094c8efbcf418c8abb88715cae8 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5zV)HBX)z-sqpPF! z*|Yc6V{iWa`BPtCf9~A9nTg@v-qrvA{|73E01Mdz{y-LIfk$L90|U1(2s1Lwnj--e z^z?Lb4B?oWoS-0BQsR)&7rI*N0MAh^am5V{9aCm2dvsKGZtk4UIN@M!lI6`x=8nP} wMVoj#4sLk9;cVsxy>~MfODnLwz1N##!{Ey)$ggF!>>kKYPgg&ebxsLQ0Q0;>Y5)KL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/level_ball.png b/graphics/object_events/pics/misc/level_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..e873bc17c96e91ec1cf668c55bb08b2373ed7a21 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RWplZ!qctNVV`gIb z*|YcO&fR;xT=VD8pZfax5B=@Ey{jM2jQ{`tKTrn{yz-u$4x~5>JR*x37`TN&n2}-D z90{PHr>Bc!2*=Fi1O>q}b2t}T#>S{MNCro3u{p@pE+hW3p=CzD`0VQv43c-ArJXz~ z?a*^N?c_EEw!`;MZ`*!w*N)`%c?}Xzopr0PTBA A9{>OV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/love_ball.png b/graphics/object_events/pics/misc/love_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..a37c20132eda511d2f675858aaeeb5764273aeb0 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%chMjEvsi)o0J% z|G)p~e8+3MW|}60toV`{F7 uxdP1xt0sR-+n|^BUYAXvxu@1Hkx zWn^T$om%|!=TAn{K*i$ubLZ~;|NlQwEgaZBKb8yRa29w(7Bet#3xhBt!>l;7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/moon_ball.png b/graphics/object_events/pics/misc/moon_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..13b8c195c888882b2a52738a16d0713ecb95b536 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R>p^bOt*>L<8Gru# zId|?}#?buK^4W}xjGD&oXV2dMdC}e5yE^dXd+*57|NsAUC(jWA>g6o(h%9Dc;1&j9 zMuu5)B!Gfmo-U3d95a&>6a*#Cw_M2CeOkRia_7CKsR@nV+n>&BZn4nI{9>EWU{oa%C> z{{(_g!;csJH8W5C|NkGT3Jv&siQWbZaTa()7Bet#3xhBt!>lQL70(Y)*K0-pp&PIV+hC0zopr04HWRjsO4v literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/sport_ball.png b/graphics/object_events/pics/misc/sport_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..d50da2e5137fb22d814784e4fa8f9432748393ea GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R>T2z|bN3#!m;d?m zCnF=Hw|8~0DEs~WiD%E=e;9B7|NnoWS~$4nr!oo1;VkfoEM{Qf76xHPhFNnYfP$W$ zE{-7_Gm{e(1gA`Q&iE!8%bMUeb^61i4F?{D9t%@YymoX^V;G|YTXeyMRhdj38%;e- urH&+=xF@xjcTIQhw{t8Vj+vP!jxjSt_6e}fGCkZ2vewhp&t;ucLK6U=%0=z~ literal 0 HcmV?d00001 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index df6f2091e..1f4256ae1 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -505,7 +505,20 @@ #define OBJ_EVENT_GFX_TIMER_BALL 498 #define OBJ_EVENT_GFX_LUXURY_BALL 499 #define OBJ_EVENT_GFX_PREMIER_BALL 500 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 501 +#define OBJ_EVENT_GFX_HEAL_BALL 501 +#define OBJ_EVENT_GFX_DUSK_BALL 502 +#define OBJ_EVENT_GFX_QUICK_BALL 503 +#define OBJ_EVENT_GFX_LEVEL_BALL 504 +#define OBJ_EVENT_GFX_LURE_BALL 505 +#define OBJ_EVENT_GFX_MOON_BALL 506 +#define OBJ_EVENT_GFX_FRIEND_BALL 507 +#define OBJ_EVENT_GFX_LOVE_BALL 508 +#define OBJ_EVENT_GFX_FAST_BALL 509 +#define OBJ_EVENT_GFX_HEAVY_BALL 510 +#define OBJ_EVENT_GFX_DREAM_BALL 511 +#define OBJ_EVENT_GFX_SPORT_BALL 512 +#define OBJ_EVENT_GFX_PARK_BALL 513 +#define OBJ_EVENT_GFX_CHERISH_BALL 514 // Jump in numbers due to SPECIES_OLD_UNOWN constants #define OBJ_EVENT_GFX_TREECKO 515 @@ -676,7 +689,7 @@ #define OBJ_EVENT_GFX_UNOWN_EXCLAMATION 678 #define OBJ_EVENT_GFX_UNOWN_QUESTION 679 -#define NUM_OBJ_EVENT_GFX 680 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 680 #else // There are no OLD_UNOWN constants in the pokemon_expansion @@ -860,12 +873,26 @@ #define OBJ_EVENT_GFX_TIMER_BALL 663 #define OBJ_EVENT_GFX_LUXURY_BALL 664 #define OBJ_EVENT_GFX_PREMIER_BALL 665 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 666 - -#define NUM_OBJ_EVENT_GFX 667 +#define OBJ_EVENT_GFX_HEAL_BALL 666 +#define OBJ_EVENT_GFX_DUSK_BALL 667 +#define OBJ_EVENT_GFX_QUICK_BALL 668 +#define OBJ_EVENT_GFX_LEVEL_BALL 669 +#define OBJ_EVENT_GFX_LURE_BALL 670 +#define OBJ_EVENT_GFX_MOON_BALL 671 +#define OBJ_EVENT_GFX_FRIEND_BALL 672 +#define OBJ_EVENT_GFX_LOVE_BALL 673 +#define OBJ_EVENT_GFX_FAST_BALL 674 +#define OBJ_EVENT_GFX_HEAVY_BALL 675 +#define OBJ_EVENT_GFX_DREAM_BALL 676 +#define OBJ_EVENT_GFX_SPORT_BALL 677 +#define OBJ_EVENT_GFX_PARK_BALL 678 +#define OBJ_EVENT_GFX_CHERISH_BALL 679 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 680 #endif +#define NUM_OBJ_EVENT_GFX 681 + // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 4cca10825..f05510ff8 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -147,6 +147,34 @@ const u32 gObjectEventPic_LuxuryBall[] = INCBIN_U32("graphics/object_events/pics const u16 gObjectEventPal_LuxuryBall[] = INCBIN_U16("graphics/object_events/palettes/luxury_ball.gbapal"); const u32 gObjectEventPic_PremierBall[] = INCBIN_U32("graphics/object_events/pics/misc/premier_ball.4bpp"); const u16 gObjectEventPal_PremierBall[] = INCBIN_U16("graphics/object_events/palettes/premier_ball.gbapal"); +const u32 gObjectEventPic_HealBall[] = INCBIN_U32("graphics/object_events/pics/misc/heal_ball.4bpp"); +const u16 gObjectEventPal_HealBall[] = INCBIN_U16("graphics/object_events/palettes/heal_ball.gbapal"); +const u32 gObjectEventPic_DuskBall[] = INCBIN_U32("graphics/object_events/pics/misc/dusk_ball.4bpp"); +const u16 gObjectEventPal_DuskBall[] = INCBIN_U16("graphics/object_events/palettes/dusk_ball.gbapal"); +const u32 gObjectEventPic_QuickBall[] = INCBIN_U32("graphics/object_events/pics/misc/quick_ball.4bpp"); +const u16 gObjectEventPal_QuickBall[] = INCBIN_U16("graphics/object_events/palettes/quick_ball.gbapal"); +const u32 gObjectEventPic_LevelBall[] = INCBIN_U32("graphics/object_events/pics/misc/level_ball.4bpp"); +const u16 gObjectEventPal_LevelBall[] = INCBIN_U16("graphics/object_events/palettes/level_ball.gbapal"); +const u32 gObjectEventPic_LureBall[] = INCBIN_U32("graphics/object_events/pics/misc/lure_ball.4bpp"); +const u16 gObjectEventPal_LureBall[] = INCBIN_U16("graphics/object_events/palettes/lure_ball.gbapal"); +const u32 gObjectEventPic_MoonBall[] = INCBIN_U32("graphics/object_events/pics/misc/moon_ball.4bpp"); +const u16 gObjectEventPal_MoonBall[] = INCBIN_U16("graphics/object_events/palettes/moon_ball.gbapal"); +const u32 gObjectEventPic_FriendBall[] = INCBIN_U32("graphics/object_events/pics/misc/friend_ball.4bpp"); +const u16 gObjectEventPal_FriendBall[] = INCBIN_U16("graphics/object_events/palettes/friend_ball.gbapal"); +const u32 gObjectEventPic_LoveBall[] = INCBIN_U32("graphics/object_events/pics/misc/love_ball.4bpp"); +const u16 gObjectEventPal_LoveBall[] = INCBIN_U16("graphics/object_events/palettes/love_ball.gbapal"); +const u32 gObjectEventPic_FastBall[] = INCBIN_U32("graphics/object_events/pics/misc/fast_ball.4bpp"); +const u16 gObjectEventPal_FastBall[] = INCBIN_U16("graphics/object_events/palettes/fast_ball.gbapal"); +const u32 gObjectEventPic_HeavyBall[] = INCBIN_U32("graphics/object_events/pics/misc/heavy_ball.4bpp"); +const u16 gObjectEventPal_HeavyBall[] = INCBIN_U16("graphics/object_events/palettes/heavy_ball.gbapal"); +const u32 gObjectEventPic_DreamBall[] = INCBIN_U32("graphics/object_events/pics/misc/dream_ball.4bpp"); +const u16 gObjectEventPal_DreamBall[] = INCBIN_U16("graphics/object_events/palettes/dream_ball.gbapal"); +const u32 gObjectEventPic_SportBall[] = INCBIN_U32("graphics/object_events/pics/misc/sport_ball.4bpp"); +const u16 gObjectEventPal_SportBall[] = INCBIN_U16("graphics/object_events/palettes/sport_ball.gbapal"); +const u32 gObjectEventPic_ParkBall[] = INCBIN_U32("graphics/object_events/pics/misc/park_ball.4bpp"); +const u16 gObjectEventPal_ParkBall[] = INCBIN_U16("graphics/object_events/palettes/park_ball.gbapal"); +const u32 gObjectEventPic_CherishBall[] = INCBIN_U32("graphics/object_events/pics/misc/cherish_ball.4bpp"); +const u16 gObjectEventPal_CherishBall[] = INCBIN_U16("graphics/object_events/palettes/cherish_ball.gbapal"); const u32 gObjectEventPic_ProfBirch[] = INCBIN_U32("graphics/object_events/pics/people/prof_birch.4bpp"); const u32 gObjectEventPic_ReporterM[] = INCBIN_U32("graphics/object_events/pics/people/reporter_m.4bpp"); const u32 gObjectEventPic_ReporterF[] = INCBIN_U32("graphics/object_events/pics/people/reporter_f.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 061305dfe..093b0c858 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -70,6 +70,20 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall = {TAG_ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_TIMER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TimerBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LUXURY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LuxuryBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PREMIER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PremierBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HealBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_HEAL_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_HealBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DUSK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DuskBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuickBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_QUICK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_QuickBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LevelBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LEVEL_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LevelBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LureBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LURE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LureBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MoonBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_MOON_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MoonBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FriendBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_FRIEND_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FriendBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LoveBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LOVE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LoveBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FastBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_FAST_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FastBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HeavyBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_HEAVY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_HeavyBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DreamBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DREAM_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DreamBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SportBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_SPORT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SportBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ParkBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PARK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ParkBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CherishBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_CHERISH_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_CherishBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle = {TAG_NONE, FLDEFF_PAL_TAG_SMALL_SPARKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, ExpandingSparkleTable, sPicTable_ExpandingSparkle, ExpandingSparkleAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; 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 54c9d92e5..1214eaec2 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -69,6 +69,20 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HealBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuickBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LevelBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LureBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MoonBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FriendBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LoveBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FastBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HeavyBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DreamBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SportBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ParkBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CherishBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; @@ -746,6 +760,20 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_TIMER_BALL] = &gObjectEventGraphicsInfo_TimerBall, [OBJ_EVENT_GFX_LUXURY_BALL] = &gObjectEventGraphicsInfo_LuxuryBall, [OBJ_EVENT_GFX_PREMIER_BALL] = &gObjectEventGraphicsInfo_PremierBall, + [OBJ_EVENT_GFX_HEAL_BALL] = &gObjectEventGraphicsInfo_HealBall, + [OBJ_EVENT_GFX_DUSK_BALL] = &gObjectEventGraphicsInfo_DuskBall, + [OBJ_EVENT_GFX_QUICK_BALL] = &gObjectEventGraphicsInfo_QuickBall, + [OBJ_EVENT_GFX_LEVEL_BALL] = &gObjectEventGraphicsInfo_LevelBall, + [OBJ_EVENT_GFX_LURE_BALL] = &gObjectEventGraphicsInfo_LureBall, + [OBJ_EVENT_GFX_MOON_BALL] = &gObjectEventGraphicsInfo_MoonBall, + [OBJ_EVENT_GFX_FRIEND_BALL] = &gObjectEventGraphicsInfo_FriendBall, + [OBJ_EVENT_GFX_LOVE_BALL] = &gObjectEventGraphicsInfo_LoveBall, + [OBJ_EVENT_GFX_FAST_BALL] = &gObjectEventGraphicsInfo_FastBall, + [OBJ_EVENT_GFX_HEAVY_BALL] = &gObjectEventGraphicsInfo_HeavyBall, + [OBJ_EVENT_GFX_DREAM_BALL] = &gObjectEventGraphicsInfo_DreamBall, + [OBJ_EVENT_GFX_SPORT_BALL] = &gObjectEventGraphicsInfo_SportBall, + [OBJ_EVENT_GFX_PARK_BALL] = &gObjectEventGraphicsInfo_ParkBall, + [OBJ_EVENT_GFX_CHERISH_BALL] = &gObjectEventGraphicsInfo_CherishBall, [OBJ_EVENT_GFX_EXPANDING_SPARKLE] = &gObjectEventGraphicsInfo_ExpandingSparkle, [OBJ_EVENT_GFX_BERRY_TREE] = &gObjectEventGraphicsInfo_BerryTree, [OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES] = &gObjectEventGraphicsInfo_BerryTreeEarlyStages, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index fb5a7259e..567639606 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -791,6 +791,62 @@ static const struct SpriteFrameImage sPicTable_PremierBall[] = { obj_frame_tiles(gObjectEventPic_PremierBall), }; +static const struct SpriteFrameImage sPicTable_HealBall[] = { + obj_frame_tiles(gObjectEventPic_HealBall), +}; + +static const struct SpriteFrameImage sPicTable_DuskBall[] = { + obj_frame_tiles(gObjectEventPic_DuskBall), +}; + +static const struct SpriteFrameImage sPicTable_QuickBall[] = { + obj_frame_tiles(gObjectEventPic_QuickBall), +}; + +static const struct SpriteFrameImage sPicTable_LevelBall[] = { + obj_frame_tiles(gObjectEventPic_LevelBall), +}; + +static const struct SpriteFrameImage sPicTable_LureBall[] = { + obj_frame_tiles(gObjectEventPic_LureBall), +}; + +static const struct SpriteFrameImage sPicTable_MoonBall[] = { + obj_frame_tiles(gObjectEventPic_MoonBall), +}; + +static const struct SpriteFrameImage sPicTable_FriendBall[] = { + obj_frame_tiles(gObjectEventPic_FriendBall), +}; + +static const struct SpriteFrameImage sPicTable_LoveBall[] = { + obj_frame_tiles(gObjectEventPic_LoveBall), +}; + +static const struct SpriteFrameImage sPicTable_FastBall[] = { + obj_frame_tiles(gObjectEventPic_FastBall), +}; + +static const struct SpriteFrameImage sPicTable_HeavyBall[] = { + obj_frame_tiles(gObjectEventPic_HeavyBall), +}; + +static const struct SpriteFrameImage sPicTable_DreamBall[] = { + obj_frame_tiles(gObjectEventPic_DreamBall), +}; + +static const struct SpriteFrameImage sPicTable_SportBall[] = { + obj_frame_tiles(gObjectEventPic_SportBall), +}; + +static const struct SpriteFrameImage sPicTable_ParkBall[] = { + obj_frame_tiles(gObjectEventPic_ParkBall), +}; + +static const struct SpriteFrameImage sPicTable_CherishBall[] = { + obj_frame_tiles(gObjectEventPic_CherishBall), +}; + static const struct SpriteFrameImage sPicTable_ExpandingSparkle[] = { overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 0), overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a8d254c70..cd1ed6094 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -793,6 +793,20 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1050 #define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x104F #define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x104E +#define OBJ_EVENT_PAL_TAG_HEAL_BALL 0x104D +#define OBJ_EVENT_PAL_TAG_DUSK_BALL 0x104C +#define OBJ_EVENT_PAL_TAG_QUICK_BALL 0x104B +#define OBJ_EVENT_PAL_TAG_LEVEL_BALL 0x104A +#define OBJ_EVENT_PAL_TAG_LURE_BALL 0x1049 +#define OBJ_EVENT_PAL_TAG_MOON_BALL 0x1048 +#define OBJ_EVENT_PAL_TAG_FRIEND_BALL 0x1047 +#define OBJ_EVENT_PAL_TAG_LOVE_BALL 0x1046 +#define OBJ_EVENT_PAL_TAG_FAST_BALL 0x1045 +#define OBJ_EVENT_PAL_TAG_HEAVY_BALL 0x1044 +#define OBJ_EVENT_PAL_TAG_DREAM_BALL 0x1043 +#define OBJ_EVENT_PAL_TAG_SPORT_BALL 0x1042 +#define OBJ_EVENT_PAL_TAG_PARK_BALL 0x1041 +#define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1040 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -1183,6 +1197,20 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_TimerBall, OBJ_EVENT_PAL_TAG_TIMER_BALL}, {gObjectEventPal_LuxuryBall, OBJ_EVENT_PAL_TAG_LUXURY_BALL}, {gObjectEventPal_PremierBall, OBJ_EVENT_PAL_TAG_PREMIER_BALL}, + {gObjectEventPal_HealBall, OBJ_EVENT_PAL_TAG_HEAL_BALL}, + {gObjectEventPal_DuskBall, OBJ_EVENT_PAL_TAG_DUSK_BALL}, + {gObjectEventPal_QuickBall, OBJ_EVENT_PAL_TAG_QUICK_BALL}, + {gObjectEventPal_LevelBall, OBJ_EVENT_PAL_TAG_LEVEL_BALL}, + {gObjectEventPal_LureBall, OBJ_EVENT_PAL_TAG_LURE_BALL}, + {gObjectEventPal_MoonBall, OBJ_EVENT_PAL_TAG_MOON_BALL}, + {gObjectEventPal_FriendBall, OBJ_EVENT_PAL_TAG_FRIEND_BALL}, + {gObjectEventPal_LoveBall, OBJ_EVENT_PAL_TAG_LOVE_BALL}, + {gObjectEventPal_FastBall, OBJ_EVENT_PAL_TAG_FAST_BALL}, + {gObjectEventPal_HeavyBall, OBJ_EVENT_PAL_TAG_HEAVY_BALL}, + {gObjectEventPal_DreamBall, OBJ_EVENT_PAL_TAG_DREAM_BALL}, + {gObjectEventPal_SportBall, OBJ_EVENT_PAL_TAG_SPORT_BALL}, + {gObjectEventPal_ParkBall, OBJ_EVENT_PAL_TAG_PARK_BALL}, + {gObjectEventPal_CherishBall, OBJ_EVENT_PAL_TAG_CHERISH_BALL}, {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE}, {}, }; @@ -10063,6 +10091,50 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); break; + #ifdef ITEM_EXPANSION + case ITEM_HEAL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_DUSK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_QUICK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LEVEL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LURE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_MOON_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_FRIEND_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LOVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_FAST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_HEAVY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_DREAM_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_SPORT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_PARK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_CHERISH_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &PokeballCallback, x, y, 2); + break; + #endif default: // PokeBall spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &PokeballCallback, x, y, 2); break; diff --git a/src/overworld.c b/src/overworld.c index b51cba268..7216222c6 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -4105,6 +4105,50 @@ void FollowerPokeballSparkle(void) case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &SparklePokeballCallback, x, y, 2); break; + #ifdef ITEM_EXPANSION + case ITEM_HEAL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_DUSK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_QUICK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LEVEL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LURE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_MOON_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_FRIEND_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LOVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_FAST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_HEAVY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_DREAM_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_SPORT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_PARK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_CHERISH_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &SparklePokeballCallback, x, y, 2); + break; + #endif default: // PokeBall spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; From c87ce46e9c5e2a36947afb48ac73c92658662bac Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Thu, 24 Mar 2022 00:52:06 -0700 Subject: [PATCH 27/71] Added item_expansion pokeball sprites. --- .../object_events/palettes/cherish_ball.pal | 19 +++++ .../object_events/palettes/dream_ball.pal | 19 +++++ graphics/object_events/palettes/dusk_ball.pal | 19 +++++ graphics/object_events/palettes/fast_ball.pal | 19 +++++ .../object_events/palettes/friend_ball.pal | 19 +++++ graphics/object_events/palettes/heal_ball.pal | 19 +++++ .../object_events/palettes/heavy_ball.pal | 19 +++++ .../object_events/palettes/level_ball.pal | 19 +++++ graphics/object_events/palettes/love_ball.pal | 19 +++++ graphics/object_events/palettes/lure_ball.pal | 19 +++++ graphics/object_events/palettes/moon_ball.pal | 19 +++++ graphics/object_events/palettes/park_ball.pal | 19 +++++ .../object_events/palettes/quick_ball.pal | 19 +++++ .../object_events/palettes/sport_ball.pal | 19 +++++ .../object_events/pics/misc/cherish_ball.png | Bin 0 -> 203 bytes .../object_events/pics/misc/dream_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/dusk_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/fast_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/friend_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/heal_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/heavy_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/level_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/love_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/lure_ball.png | Bin 0 -> 211 bytes .../object_events/pics/misc/moon_ball.png | Bin 0 -> 212 bytes .../object_events/pics/misc/park_ball.png | Bin 0 -> 210 bytes .../object_events/pics/misc/quick_ball.png | Bin 0 -> 204 bytes .../object_events/pics/misc/sport_ball.png | Bin 0 -> 211 bytes include/constants/event_objects.h | 37 +++++++-- .../object_events/object_event_graphics.h | 28 +++++++ .../object_event_graphics_info.h | 14 ++++ .../object_event_graphics_info_pointers.h | 28 +++++++ .../object_events/object_event_pic_tables.h | 56 ++++++++++++++ src/event_object_movement.c | 72 ++++++++++++++++++ src/overworld.c | 44 +++++++++++ 35 files changed, 540 insertions(+), 5 deletions(-) create mode 100644 graphics/object_events/palettes/cherish_ball.pal create mode 100644 graphics/object_events/palettes/dream_ball.pal create mode 100644 graphics/object_events/palettes/dusk_ball.pal create mode 100644 graphics/object_events/palettes/fast_ball.pal create mode 100644 graphics/object_events/palettes/friend_ball.pal create mode 100644 graphics/object_events/palettes/heal_ball.pal create mode 100644 graphics/object_events/palettes/heavy_ball.pal create mode 100644 graphics/object_events/palettes/level_ball.pal create mode 100644 graphics/object_events/palettes/love_ball.pal create mode 100644 graphics/object_events/palettes/lure_ball.pal create mode 100644 graphics/object_events/palettes/moon_ball.pal create mode 100644 graphics/object_events/palettes/park_ball.pal create mode 100644 graphics/object_events/palettes/quick_ball.pal create mode 100644 graphics/object_events/palettes/sport_ball.pal create mode 100644 graphics/object_events/pics/misc/cherish_ball.png create mode 100644 graphics/object_events/pics/misc/dream_ball.png create mode 100644 graphics/object_events/pics/misc/dusk_ball.png create mode 100644 graphics/object_events/pics/misc/fast_ball.png create mode 100644 graphics/object_events/pics/misc/friend_ball.png create mode 100644 graphics/object_events/pics/misc/heal_ball.png create mode 100644 graphics/object_events/pics/misc/heavy_ball.png create mode 100644 graphics/object_events/pics/misc/level_ball.png create mode 100644 graphics/object_events/pics/misc/love_ball.png create mode 100644 graphics/object_events/pics/misc/lure_ball.png create mode 100644 graphics/object_events/pics/misc/moon_ball.png create mode 100644 graphics/object_events/pics/misc/park_ball.png create mode 100644 graphics/object_events/pics/misc/quick_ball.png create mode 100644 graphics/object_events/pics/misc/sport_ball.png diff --git a/graphics/object_events/palettes/cherish_ball.pal b/graphics/object_events/palettes/cherish_ball.pal new file mode 100644 index 000000000..f2e72ff06 --- /dev/null +++ b/graphics/object_events/palettes/cherish_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +95 15 1 +69 65 59 +193 55 31 +249 249 249 +225 87 63 +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/graphics/object_events/palettes/dream_ball.pal b/graphics/object_events/palettes/dream_ball.pal new file mode 100644 index 000000000..a691977ce --- /dev/null +++ b/graphics/object_events/palettes/dream_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +219 133 171 +247 41 129 +1 1 1 +107 83 141 +55 37 79 +193 185 209 +249 103 165 +249 249 249 +139 115 173 +95 31 61 +233 183 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/dusk_ball.pal b/graphics/object_events/palettes/dusk_ball.pal new file mode 100644 index 000000000..0be0a538c --- /dev/null +++ b/graphics/object_events/palettes/dusk_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +63 163 63 +45 115 45 +185 33 1 +47 47 47 +69 65 59 +105 97 87 +217 73 1 +249 249 249 +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/palettes/fast_ball.pal b/graphics/object_events/palettes/fast_ball.pal new file mode 100644 index 000000000..9d9b9d86c --- /dev/null +++ b/graphics/object_events/palettes/fast_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +241 149 79 +157 157 189 +91 69 1 +249 249 249 +213 171 43 +1 1 1 +75 75 123 +101 43 1 +235 113 21 +205 205 223 +223 191 97 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/friend_ball.pal b/graphics/object_events/palettes/friend_ball.pal new file mode 100644 index 000000000..a155698a8 --- /dev/null +++ b/graphics/object_events/palettes/friend_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +107 149 43 +157 157 189 +45 75 1 +249 249 249 +75 75 123 +141 199 57 +1 1 1 +195 79 61 +209 123 109 +247 223 17 +205 205 223 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/heal_ball.pal b/graphics/object_events/palettes/heal_ball.pal new file mode 100644 index 000000000..f5b6713c1 --- /dev/null +++ b/graphics/object_events/palettes/heal_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +129 47 107 +253 237 225 +87 135 201 +249 199 167 +245 41 189 +249 249 249 +249 103 209 +193 185 209 +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/palettes/heavy_ball.pal b/graphics/object_events/palettes/heavy_ball.pal new file mode 100644 index 000000000..2c8781c6b --- /dev/null +++ b/graphics/object_events/palettes/heavy_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +95 133 225 +27 53 115 +1 1 1 +69 65 59 +205 205 223 +39 93 217 +249 249 249 +47 47 47 +157 157 189 +105 97 87 +75 75 123 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/level_ball.pal b/graphics/object_events/palettes/level_ball.pal new file mode 100644 index 000000000..80e49c9cc --- /dev/null +++ b/graphics/object_events/palettes/level_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +233 131 119 +69 65 59 +1 1 1 +105 97 87 +205 205 223 +157 157 189 +215 119 41 +249 249 249 +47 47 47 +225 79 63 +75 75 123 +225 153 95 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/love_ball.pal b/graphics/object_events/palettes/love_ball.pal new file mode 100644 index 000000000..e8e8e8a0d --- /dev/null +++ b/graphics/object_events/palettes/love_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +157 157 189 +1 1 1 +75 75 123 +205 205 223 +255 191 229 +159 65 129 +249 249 249 +93 1 63 +255 129 201 +191 97 161 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/lure_ball.pal b/graphics/object_events/palettes/lure_ball.pal new file mode 100644 index 000000000..e156e3232 --- /dev/null +++ b/graphics/object_events/palettes/lure_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +43 153 213 +75 75 123 +205 205 223 +207 49 69 +1 1 1 +219 101 115 +249 249 249 +1 53 81 +33 115 159 +157 157 189 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/moon_ball.pal b/graphics/object_events/palettes/moon_ball.pal new file mode 100644 index 000000000..ac8987a4c --- /dev/null +++ b/graphics/object_events/palettes/moon_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +245 193 11 +21 181 235 +93 71 1 +249 249 249 +157 157 189 +1 85 111 +101 119 155 +1 1 1 +41 51 71 +205 205 223 +249 209 71 +75 75 123 +81 201 239 +75 89 117 +255 255 255 diff --git a/graphics/object_events/palettes/park_ball.pal b/graphics/object_events/palettes/park_ball.pal new file mode 100644 index 000000000..00d4cf5ad --- /dev/null +++ b/graphics/object_events/palettes/park_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +235 193 21 +97 77 3 +75 75 123 +205 205 223 +249 249 249 +249 137 49 +241 209 79 +41 105 201 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/quick_ball.pal b/graphics/object_events/palettes/quick_ball.pal new file mode 100644 index 000000000..28ce5c50b --- /dev/null +++ b/graphics/object_events/palettes/quick_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +191 191 1 +41 141 215 +1 1 1 +157 157 189 +35 75 107 +255 255 1 +95 169 225 +249 249 249 +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/palettes/sport_ball.pal b/graphics/object_events/palettes/sport_ball.pal new file mode 100644 index 000000000..a107ed002 --- /dev/null +++ b/graphics/object_events/palettes/sport_ball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 165 +213 171 43 +157 157 189 +193 63 31 +249 249 249 +1 1 1 +75 75 123 +83 21 7 +223 191 97 +205 205 223 +225 95 63 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/cherish_ball.png b/graphics/object_events/pics/misc/cherish_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb64441ce90ce07441f947a33f5ee6991f8d3cd GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5o}bax(fXjd{Li01 zABNilW$=Jg7xsh!r8x^cB8wRqxP?KOkzv*x380{(r;B3<$IRpe1wjrjr;KA40vHXP zuUxeda4}|Wmzu5BkTRurO0PqakJ~E8Qv!ll6*h1*Pna}G$z^xu28LCQKnIrXWm^`} RWc?K608dvxmvv4FO#r>$Gxq=h literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/dream_ball.png b/graphics/object_events/pics/misc/dream_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba9da213cd26f74ef0b43cc0c2300cab5bb0eb1 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RcI)cznvIN%jM>4x z=BoY&cV7INzVzqMpWVf47bg*#837H^PTeOt7=k=5*-*c3KS!+a65DP|0v60=mfn_VJW&rafH scIZ-4kM?7Io%D5%5QCwHiO9_gh6oA1bBm5m-2$@J)78&qol`;+05sb`IsgCw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/dusk_ball.png b/graphics/object_events/pics/misc/dusk_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..70bfbf9ae258989f39dfb8914776d326a47a6674 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`ezCo7vF=VqMtyyK zS4Zp2#PFM*j6Z+=1S-J<9LFE90!29sJR*x37`TN&n2}-D90{PHlc$Sg2*=Fi1O>qz zI~+2mxfrq=9NwrK!lE-_%8FHNLP=twW?Uu=oik>Mvp2g$w4CkkJ+SKTq_aT^x0qdJ c19)2)82Be}USj1~XbZB~)78&qol`;+0NDF9jsO4v literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/fast_ball.png b/graphics/object_events/pics/misc/fast_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..198542370d10ec0ef1741f16bd38e11bd7a46e45 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN5EOGXDJe z^Xh7CMn*<&@9I=-#@B_SXV2chzd!N+|NlVc5RkaV^caxES>O>_%)r1c48n{Iv*t(u z1-(37978x}CMPHemXtVT@V)HiO>kSByo9AA?VhGZ@ixW@2e*|*rIj#EI5=Fr(Jd)$(dk@2v;p@xab%?gGG-}# z<&<&kQxT(qv(3q^0y+V!(25$xa#QCUM|I3%^|D- aye&Y-9^{NwW?~0f!QkoY=d#Wzp$PzO#5(o> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/heavy_ball.png b/graphics/object_events/pics/misc/heavy_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..e866a3edf8988094c8efbcf418c8abb88715cae8 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5zV)HBX)z-sqpPF! z*|Yc6V{iWa`BPtCf9~A9nTg@v-qrvA{|73E01Mdz{y-LIfk$L90|U1(2s1Lwnj--e z^z?Lb4B?oWoS-0BQsR)&7rI*N0MAh^am5V{9aCm2dvsKGZtk4UIN@M!lI6`x=8nP} wMVoj#4sLk9;cVsxy>~MfODnLwz1N##!{Ey)$ggF!>>kKYPgg&ebxsLQ0Q0;>Y5)KL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/level_ball.png b/graphics/object_events/pics/misc/level_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..e873bc17c96e91ec1cf668c55bb08b2373ed7a21 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RWplZ!qctNVV`gIb z*|YcO&fR;xT=VD8pZfax5B=@Ey{jM2jQ{`tKTrn{yz-u$4x~5>JR*x37`TN&n2}-D z90{PHr>Bc!2*=Fi1O>q}b2t}T#>S{MNCro3u{p@pE+hW3p=CzD`0VQv43c-ArJXz~ z?a*^N?c_EEw!`;MZ`*!w*N)`%c?}Xzopr0PTBA A9{>OV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/love_ball.png b/graphics/object_events/pics/misc/love_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..a37c20132eda511d2f675858aaeeb5764273aeb0 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%chMjEvsi)o0J% z|G)p~e8+3MW|}60toV`{F7 uxdP1xt0sR-+n|^BUYAXvxu@1Hkx zWn^T$om%|!=TAn{K*i$ubLZ~;|NlQwEgaZBKb8yRa29w(7Bet#3xhBt!>l;7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/moon_ball.png b/graphics/object_events/pics/misc/moon_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..13b8c195c888882b2a52738a16d0713ecb95b536 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R>p^bOt*>L<8Gru# zId|?}#?buK^4W}xjGD&oXV2dMdC}e5yE^dXd+*57|NsAUC(jWA>g6o(h%9Dc;1&j9 zMuu5)B!Gfmo-U3d95a&>6a*#Cw_M2CeOkRia_7CKsR@nV+n>&BZn4nI{9>EWU{oa%C> z{{(_g!;csJH8W5C|NkGT3Jv&siQWbZaTa()7Bet#3xhBt!>lQL70(Y)*K0-pp&PIV+hC0zopr04HWRjsO4v literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/misc/sport_ball.png b/graphics/object_events/pics/misc/sport_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..d50da2e5137fb22d814784e4fa8f9432748393ea GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R>T2z|bN3#!m;d?m zCnF=Hw|8~0DEs~WiD%E=e;9B7|NnoWS~$4nr!oo1;VkfoEM{Qf76xHPhFNnYfP$W$ zE{-7_Gm{e(1gA`Q&iE!8%bMUeb^61i4F?{D9t%@YymoX^V;G|YTXeyMRhdj38%;e- urH&+=xF@xjcTIQhw{t8Vj+vP!jxjSt_6e}fGCkZ2vewhp&t;ucLK6U=%0=z~ literal 0 HcmV?d00001 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index e7c58663e..864c744b7 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -505,7 +505,20 @@ #define OBJ_EVENT_GFX_TIMER_BALL 498 #define OBJ_EVENT_GFX_LUXURY_BALL 499 #define OBJ_EVENT_GFX_PREMIER_BALL 500 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 501 +#define OBJ_EVENT_GFX_HEAL_BALL 501 +#define OBJ_EVENT_GFX_DUSK_BALL 502 +#define OBJ_EVENT_GFX_QUICK_BALL 503 +#define OBJ_EVENT_GFX_LEVEL_BALL 504 +#define OBJ_EVENT_GFX_LURE_BALL 505 +#define OBJ_EVENT_GFX_MOON_BALL 506 +#define OBJ_EVENT_GFX_FRIEND_BALL 507 +#define OBJ_EVENT_GFX_LOVE_BALL 508 +#define OBJ_EVENT_GFX_FAST_BALL 509 +#define OBJ_EVENT_GFX_HEAVY_BALL 510 +#define OBJ_EVENT_GFX_DREAM_BALL 511 +#define OBJ_EVENT_GFX_SPORT_BALL 512 +#define OBJ_EVENT_GFX_PARK_BALL 513 +#define OBJ_EVENT_GFX_CHERISH_BALL 514 // Jump in numbers due to SPECIES_OLD_UNOWN constants #define OBJ_EVENT_GFX_TREECKO 515 @@ -644,7 +657,7 @@ #define OBJ_EVENT_GFX_DEOXYS_NORMAL 648 #define OBJ_EVENT_GFX_CHIMECHO 649 -#define NUM_OBJ_EVENT_GFX 650 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 650 #else // There are no OLD_UNOWN constants in the pokemon_expansion @@ -796,12 +809,26 @@ #define OBJ_EVENT_GFX_TIMER_BALL 633 #define OBJ_EVENT_GFX_LUXURY_BALL 634 #define OBJ_EVENT_GFX_PREMIER_BALL 635 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 636 - -#define NUM_OBJ_EVENT_GFX 637 +#define OBJ_EVENT_GFX_HEAL_BALL 636 +#define OBJ_EVENT_GFX_DUSK_BALL 637 +#define OBJ_EVENT_GFX_QUICK_BALL 638 +#define OBJ_EVENT_GFX_LEVEL_BALL 639 +#define OBJ_EVENT_GFX_LURE_BALL 640 +#define OBJ_EVENT_GFX_MOON_BALL 641 +#define OBJ_EVENT_GFX_FRIEND_BALL 642 +#define OBJ_EVENT_GFX_LOVE_BALL 643 +#define OBJ_EVENT_GFX_FAST_BALL 644 +#define OBJ_EVENT_GFX_HEAVY_BALL 645 +#define OBJ_EVENT_GFX_DREAM_BALL 646 +#define OBJ_EVENT_GFX_SPORT_BALL 647 +#define OBJ_EVENT_GFX_PARK_BALL 648 +#define OBJ_EVENT_GFX_CHERISH_BALL 649 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 650 #endif +#define NUM_OBJ_EVENT_GFX 651 + // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. // More info about them in include/constants/vars.h diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 7be3af4a8..58e2fd011 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -147,6 +147,34 @@ const u32 gObjectEventPic_LuxuryBall[] = INCBIN_U32("graphics/object_events/pics const u16 gObjectEventPal_LuxuryBall[] = INCBIN_U16("graphics/object_events/palettes/luxury_ball.gbapal"); const u32 gObjectEventPic_PremierBall[] = INCBIN_U32("graphics/object_events/pics/misc/premier_ball.4bpp"); const u16 gObjectEventPal_PremierBall[] = INCBIN_U16("graphics/object_events/palettes/premier_ball.gbapal"); +const u32 gObjectEventPic_HealBall[] = INCBIN_U32("graphics/object_events/pics/misc/heal_ball.4bpp"); +const u16 gObjectEventPal_HealBall[] = INCBIN_U16("graphics/object_events/palettes/heal_ball.gbapal"); +const u32 gObjectEventPic_DuskBall[] = INCBIN_U32("graphics/object_events/pics/misc/dusk_ball.4bpp"); +const u16 gObjectEventPal_DuskBall[] = INCBIN_U16("graphics/object_events/palettes/dusk_ball.gbapal"); +const u32 gObjectEventPic_QuickBall[] = INCBIN_U32("graphics/object_events/pics/misc/quick_ball.4bpp"); +const u16 gObjectEventPal_QuickBall[] = INCBIN_U16("graphics/object_events/palettes/quick_ball.gbapal"); +const u32 gObjectEventPic_LevelBall[] = INCBIN_U32("graphics/object_events/pics/misc/level_ball.4bpp"); +const u16 gObjectEventPal_LevelBall[] = INCBIN_U16("graphics/object_events/palettes/level_ball.gbapal"); +const u32 gObjectEventPic_LureBall[] = INCBIN_U32("graphics/object_events/pics/misc/lure_ball.4bpp"); +const u16 gObjectEventPal_LureBall[] = INCBIN_U16("graphics/object_events/palettes/lure_ball.gbapal"); +const u32 gObjectEventPic_MoonBall[] = INCBIN_U32("graphics/object_events/pics/misc/moon_ball.4bpp"); +const u16 gObjectEventPal_MoonBall[] = INCBIN_U16("graphics/object_events/palettes/moon_ball.gbapal"); +const u32 gObjectEventPic_FriendBall[] = INCBIN_U32("graphics/object_events/pics/misc/friend_ball.4bpp"); +const u16 gObjectEventPal_FriendBall[] = INCBIN_U16("graphics/object_events/palettes/friend_ball.gbapal"); +const u32 gObjectEventPic_LoveBall[] = INCBIN_U32("graphics/object_events/pics/misc/love_ball.4bpp"); +const u16 gObjectEventPal_LoveBall[] = INCBIN_U16("graphics/object_events/palettes/love_ball.gbapal"); +const u32 gObjectEventPic_FastBall[] = INCBIN_U32("graphics/object_events/pics/misc/fast_ball.4bpp"); +const u16 gObjectEventPal_FastBall[] = INCBIN_U16("graphics/object_events/palettes/fast_ball.gbapal"); +const u32 gObjectEventPic_HeavyBall[] = INCBIN_U32("graphics/object_events/pics/misc/heavy_ball.4bpp"); +const u16 gObjectEventPal_HeavyBall[] = INCBIN_U16("graphics/object_events/palettes/heavy_ball.gbapal"); +const u32 gObjectEventPic_DreamBall[] = INCBIN_U32("graphics/object_events/pics/misc/dream_ball.4bpp"); +const u16 gObjectEventPal_DreamBall[] = INCBIN_U16("graphics/object_events/palettes/dream_ball.gbapal"); +const u32 gObjectEventPic_SportBall[] = INCBIN_U32("graphics/object_events/pics/misc/sport_ball.4bpp"); +const u16 gObjectEventPal_SportBall[] = INCBIN_U16("graphics/object_events/palettes/sport_ball.gbapal"); +const u32 gObjectEventPic_ParkBall[] = INCBIN_U32("graphics/object_events/pics/misc/park_ball.4bpp"); +const u16 gObjectEventPal_ParkBall[] = INCBIN_U16("graphics/object_events/palettes/park_ball.gbapal"); +const u32 gObjectEventPic_CherishBall[] = INCBIN_U32("graphics/object_events/pics/misc/cherish_ball.4bpp"); +const u16 gObjectEventPal_CherishBall[] = INCBIN_U16("graphics/object_events/palettes/cherish_ball.gbapal"); const u32 gObjectEventPic_ProfBirch[] = INCBIN_U32("graphics/object_events/pics/people/prof_birch.4bpp"); const u32 gObjectEventPic_ReporterM[] = INCBIN_U32("graphics/object_events/pics/people/reporter_m.4bpp"); const u32 gObjectEventPic_ReporterF[] = INCBIN_U32("graphics/object_events/pics/people/reporter_f.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 5e361ed5e..c5c8e3f34 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -70,6 +70,20 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall = {TAG_ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_TIMER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TimerBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LUXURY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LuxuryBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PREMIER_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PremierBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HealBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_HEAL_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_HealBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DUSK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DuskBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuickBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_QUICK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_QuickBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LevelBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LEVEL_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LevelBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LureBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LURE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LureBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MoonBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_MOON_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MoonBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FriendBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_FRIEND_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FriendBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LoveBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_LOVE_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LoveBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FastBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_FAST_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FastBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HeavyBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_HEAVY_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_HeavyBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DreamBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_DREAM_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DreamBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SportBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_SPORT_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SportBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ParkBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_PARK_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ParkBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CherishBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_CHERISH_BALL, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_CherishBall, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle = {TAG_NONE, FLDEFF_PAL_TAG_SMALL_SPARKLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, ExpandingSparkleTable, sPicTable_ExpandingSparkle, ExpandingSparkleAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; 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 07f37a0f5..1f7aa0348 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -69,6 +69,20 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RepeatBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TimerBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LuxuryBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PremierBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HealBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuickBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LevelBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LureBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MoonBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FriendBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LoveBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FastBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HeavyBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DreamBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SportBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ParkBall; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CherishBall; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpandingSparkle; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; @@ -746,6 +760,20 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_TIMER_BALL] = &gObjectEventGraphicsInfo_TimerBall, [OBJ_EVENT_GFX_LUXURY_BALL] = &gObjectEventGraphicsInfo_LuxuryBall, [OBJ_EVENT_GFX_PREMIER_BALL] = &gObjectEventGraphicsInfo_PremierBall, + [OBJ_EVENT_GFX_HEAL_BALL] = &gObjectEventGraphicsInfo_HealBall, + [OBJ_EVENT_GFX_DUSK_BALL] = &gObjectEventGraphicsInfo_DuskBall, + [OBJ_EVENT_GFX_QUICK_BALL] = &gObjectEventGraphicsInfo_QuickBall, + [OBJ_EVENT_GFX_LEVEL_BALL] = &gObjectEventGraphicsInfo_LevelBall, + [OBJ_EVENT_GFX_LURE_BALL] = &gObjectEventGraphicsInfo_LureBall, + [OBJ_EVENT_GFX_MOON_BALL] = &gObjectEventGraphicsInfo_MoonBall, + [OBJ_EVENT_GFX_FRIEND_BALL] = &gObjectEventGraphicsInfo_FriendBall, + [OBJ_EVENT_GFX_LOVE_BALL] = &gObjectEventGraphicsInfo_LoveBall, + [OBJ_EVENT_GFX_FAST_BALL] = &gObjectEventGraphicsInfo_FastBall, + [OBJ_EVENT_GFX_HEAVY_BALL] = &gObjectEventGraphicsInfo_HeavyBall, + [OBJ_EVENT_GFX_DREAM_BALL] = &gObjectEventGraphicsInfo_DreamBall, + [OBJ_EVENT_GFX_SPORT_BALL] = &gObjectEventGraphicsInfo_SportBall, + [OBJ_EVENT_GFX_PARK_BALL] = &gObjectEventGraphicsInfo_ParkBall, + [OBJ_EVENT_GFX_CHERISH_BALL] = &gObjectEventGraphicsInfo_CherishBall, [OBJ_EVENT_GFX_EXPANDING_SPARKLE] = &gObjectEventGraphicsInfo_ExpandingSparkle, [OBJ_EVENT_GFX_BERRY_TREE] = &gObjectEventGraphicsInfo_BerryTree, [OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES] = &gObjectEventGraphicsInfo_BerryTreeEarlyStages, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index fb5a7259e..567639606 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -791,6 +791,62 @@ static const struct SpriteFrameImage sPicTable_PremierBall[] = { obj_frame_tiles(gObjectEventPic_PremierBall), }; +static const struct SpriteFrameImage sPicTable_HealBall[] = { + obj_frame_tiles(gObjectEventPic_HealBall), +}; + +static const struct SpriteFrameImage sPicTable_DuskBall[] = { + obj_frame_tiles(gObjectEventPic_DuskBall), +}; + +static const struct SpriteFrameImage sPicTable_QuickBall[] = { + obj_frame_tiles(gObjectEventPic_QuickBall), +}; + +static const struct SpriteFrameImage sPicTable_LevelBall[] = { + obj_frame_tiles(gObjectEventPic_LevelBall), +}; + +static const struct SpriteFrameImage sPicTable_LureBall[] = { + obj_frame_tiles(gObjectEventPic_LureBall), +}; + +static const struct SpriteFrameImage sPicTable_MoonBall[] = { + obj_frame_tiles(gObjectEventPic_MoonBall), +}; + +static const struct SpriteFrameImage sPicTable_FriendBall[] = { + obj_frame_tiles(gObjectEventPic_FriendBall), +}; + +static const struct SpriteFrameImage sPicTable_LoveBall[] = { + obj_frame_tiles(gObjectEventPic_LoveBall), +}; + +static const struct SpriteFrameImage sPicTable_FastBall[] = { + obj_frame_tiles(gObjectEventPic_FastBall), +}; + +static const struct SpriteFrameImage sPicTable_HeavyBall[] = { + obj_frame_tiles(gObjectEventPic_HeavyBall), +}; + +static const struct SpriteFrameImage sPicTable_DreamBall[] = { + obj_frame_tiles(gObjectEventPic_DreamBall), +}; + +static const struct SpriteFrameImage sPicTable_SportBall[] = { + obj_frame_tiles(gObjectEventPic_SportBall), +}; + +static const struct SpriteFrameImage sPicTable_ParkBall[] = { + obj_frame_tiles(gObjectEventPic_ParkBall), +}; + +static const struct SpriteFrameImage sPicTable_CherishBall[] = { + obj_frame_tiles(gObjectEventPic_CherishBall), +}; + static const struct SpriteFrameImage sPicTable_ExpandingSparkle[] = { overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 0), overworld_frame(gFieldEffectObjectPic_ExpandingSparkle, 4, 4, 1), diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 95125d225..25aeff76b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -846,6 +846,20 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1050 #define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x104F #define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x104E +#define OBJ_EVENT_PAL_TAG_HEAL_BALL 0x104D +#define OBJ_EVENT_PAL_TAG_DUSK_BALL 0x104C +#define OBJ_EVENT_PAL_TAG_QUICK_BALL 0x104B +#define OBJ_EVENT_PAL_TAG_LEVEL_BALL 0x104A +#define OBJ_EVENT_PAL_TAG_LURE_BALL 0x1049 +#define OBJ_EVENT_PAL_TAG_MOON_BALL 0x1048 +#define OBJ_EVENT_PAL_TAG_FRIEND_BALL 0x1047 +#define OBJ_EVENT_PAL_TAG_LOVE_BALL 0x1046 +#define OBJ_EVENT_PAL_TAG_FAST_BALL 0x1045 +#define OBJ_EVENT_PAL_TAG_HEAVY_BALL 0x1044 +#define OBJ_EVENT_PAL_TAG_DREAM_BALL 0x1043 +#define OBJ_EVENT_PAL_TAG_SPORT_BALL 0x1042 +#define OBJ_EVENT_PAL_TAG_PARK_BALL 0x1041 +#define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1040 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -1289,6 +1303,20 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_TimerBall, OBJ_EVENT_PAL_TAG_TIMER_BALL}, {gObjectEventPal_LuxuryBall, OBJ_EVENT_PAL_TAG_LUXURY_BALL}, {gObjectEventPal_PremierBall, OBJ_EVENT_PAL_TAG_PREMIER_BALL}, + {gObjectEventPal_HealBall, OBJ_EVENT_PAL_TAG_HEAL_BALL}, + {gObjectEventPal_DuskBall, OBJ_EVENT_PAL_TAG_DUSK_BALL}, + {gObjectEventPal_QuickBall, OBJ_EVENT_PAL_TAG_QUICK_BALL}, + {gObjectEventPal_LevelBall, OBJ_EVENT_PAL_TAG_LEVEL_BALL}, + {gObjectEventPal_LureBall, OBJ_EVENT_PAL_TAG_LURE_BALL}, + {gObjectEventPal_MoonBall, OBJ_EVENT_PAL_TAG_MOON_BALL}, + {gObjectEventPal_FriendBall, OBJ_EVENT_PAL_TAG_FRIEND_BALL}, + {gObjectEventPal_LoveBall, OBJ_EVENT_PAL_TAG_LOVE_BALL}, + {gObjectEventPal_FastBall, OBJ_EVENT_PAL_TAG_FAST_BALL}, + {gObjectEventPal_HeavyBall, OBJ_EVENT_PAL_TAG_HEAVY_BALL}, + {gObjectEventPal_DreamBall, OBJ_EVENT_PAL_TAG_DREAM_BALL}, + {gObjectEventPal_SportBall, OBJ_EVENT_PAL_TAG_SPORT_BALL}, + {gObjectEventPal_ParkBall, OBJ_EVENT_PAL_TAG_PARK_BALL}, + {gObjectEventPal_CherishBall, OBJ_EVENT_PAL_TAG_CHERISH_BALL}, {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE}, {}, }; @@ -10169,6 +10197,50 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); break; + #ifdef ITEM_EXPANSION + case ITEM_HEAL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_DUSK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_QUICK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LEVEL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LURE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_MOON_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_FRIEND_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_LOVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_FAST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_HEAVY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_DREAM_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_SPORT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_PARK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &PokeballCallback, x, y, 2); + break; + case ITEM_CHERISH_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &PokeballCallback, x, y, 2); + break; + #endif default: // PokeBall spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &PokeballCallback, x, y, 2); break; diff --git a/src/overworld.c b/src/overworld.c index 9cfba5a10..244a7bce1 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -4093,6 +4093,50 @@ void FollowerPokeballSparkle(void) case ITEM_PREMIER_BALL: spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &SparklePokeballCallback, x, y, 2); break; + #ifdef ITEM_EXPANSION + case ITEM_HEAL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_DUSK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_QUICK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LEVEL_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LURE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_MOON_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_FRIEND_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_LOVE_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_FAST_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_HEAVY_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_DREAM_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_SPORT_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_PARK_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &SparklePokeballCallback, x, y, 2); + break; + case ITEM_CHERISH_BALL: + spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &SparklePokeballCallback, x, y, 2); + break; + #endif default: // PokeBall spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; From 376129f973ac336e060a960ba8e5acea79f5b90f Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Thu, 24 Mar 2022 01:03:24 -0700 Subject: [PATCH 28/71] Fixed palette tag constants --- src/event_object_movement.c | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index cd1ed6094..502f23b02 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -782,31 +782,31 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x1090 #define OBJ_EVENT_PAL_TAG_JIRACHI 0x108F #define OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER 0x108E -#define OBJ_EVENT_PAL_TAG_GREAT_BALL 0x1058 -#define OBJ_EVENT_PAL_TAG_ULTRA_BALL 0x1057 -#define OBJ_EVENT_PAL_TAG_MASTER_BALL 0x1056 -#define OBJ_EVENT_PAL_TAG_SAFARI_BALL 0x1055 -#define OBJ_EVENT_PAL_TAG_NET_BALL 0x1054 -#define OBJ_EVENT_PAL_TAG_DIVE_BALL 0x1053 -#define OBJ_EVENT_PAL_TAG_NEST_BALL 0x1052 -#define OBJ_EVENT_PAL_TAG_REPEAT_BALL 0x1051 -#define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1050 -#define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x104F -#define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x104E -#define OBJ_EVENT_PAL_TAG_HEAL_BALL 0x104D -#define OBJ_EVENT_PAL_TAG_DUSK_BALL 0x104C -#define OBJ_EVENT_PAL_TAG_QUICK_BALL 0x104B -#define OBJ_EVENT_PAL_TAG_LEVEL_BALL 0x104A -#define OBJ_EVENT_PAL_TAG_LURE_BALL 0x1049 -#define OBJ_EVENT_PAL_TAG_MOON_BALL 0x1048 -#define OBJ_EVENT_PAL_TAG_FRIEND_BALL 0x1047 -#define OBJ_EVENT_PAL_TAG_LOVE_BALL 0x1046 -#define OBJ_EVENT_PAL_TAG_FAST_BALL 0x1045 -#define OBJ_EVENT_PAL_TAG_HEAVY_BALL 0x1044 -#define OBJ_EVENT_PAL_TAG_DREAM_BALL 0x1043 -#define OBJ_EVENT_PAL_TAG_SPORT_BALL 0x1042 -#define OBJ_EVENT_PAL_TAG_PARK_BALL 0x1041 -#define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1040 +#define OBJ_EVENT_PAL_TAG_GREAT_BALL 0x108D +#define OBJ_EVENT_PAL_TAG_ULTRA_BALL 0x108C +#define OBJ_EVENT_PAL_TAG_MASTER_BALL 0x108B +#define OBJ_EVENT_PAL_TAG_SAFARI_BALL 0x108A +#define OBJ_EVENT_PAL_TAG_NET_BALL 0x1089 +#define OBJ_EVENT_PAL_TAG_DIVE_BALL 0x1088 +#define OBJ_EVENT_PAL_TAG_NEST_BALL 0x1087 +#define OBJ_EVENT_PAL_TAG_REPEAT_BALL 0x1086 +#define OBJ_EVENT_PAL_TAG_TIMER_BALL 0x1085 +#define OBJ_EVENT_PAL_TAG_LUXURY_BALL 0x1084 +#define OBJ_EVENT_PAL_TAG_PREMIER_BALL 0x1083 +#define OBJ_EVENT_PAL_TAG_HEAL_BALL 0x1082 +#define OBJ_EVENT_PAL_TAG_DUSK_BALL 0x1081 +#define OBJ_EVENT_PAL_TAG_QUICK_BALL 0x1080 +#define OBJ_EVENT_PAL_TAG_LEVEL_BALL 0x107F +#define OBJ_EVENT_PAL_TAG_LURE_BALL 0x107E +#define OBJ_EVENT_PAL_TAG_MOON_BALL 0x107D +#define OBJ_EVENT_PAL_TAG_FRIEND_BALL 0x107C +#define OBJ_EVENT_PAL_TAG_LOVE_BALL 0x107B +#define OBJ_EVENT_PAL_TAG_FAST_BALL 0x107A +#define OBJ_EVENT_PAL_TAG_HEAVY_BALL 0x1079 +#define OBJ_EVENT_PAL_TAG_DREAM_BALL 0x1078 +#define OBJ_EVENT_PAL_TAG_SPORT_BALL 0x1077 +#define OBJ_EVENT_PAL_TAG_PARK_BALL 0x1076 +#define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1075 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" From 0ed7064e624fb27340d4c4882bf4a9c7dfd9f0c1 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sat, 26 Mar 2022 16:04:41 -0700 Subject: [PATCH 29/71] Reordered constants and used constants in IsFlyingPokemonGraphic Pokemon_expansion reorders the species constants, so the object event constants need to be reordered as well. Changing IsFlyingPokemonGraphic to use constants makes sure that the proper sprites do/don't bounce, regardless of how the constants are organized. --- gflib/sprite.c | 83 +++++------ include/constants/event_objects.h | 220 +++++++++++++++--------------- 2 files changed, 152 insertions(+), 151 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 56243ee75..411e7d3b8 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -3,6 +3,7 @@ #include "main.h" #include "palette.h" #include "global.fieldmap.h" +#include "constants/event_objects.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -975,47 +976,47 @@ bool8 IsFlyingPokemonGraphic(u16 graphicsId) { switch(graphicsId) { - case 250: - case 253: - case 255: - case 256: - case 260: - case 279: - case 280: - case 287: - case 380: - case 382: - case 383: - case 384: - case 387: - case 402: - case 403: - case 404: - case 407: - case 414: - case 425: - case 426: - case 427: - case 431: - case 464: - case 465: - case 487: - case 488: - case 489: - case 530: - case 532: - case 543: - case 547: - case 548: - case 550: - case 572: - case 596: - case 597: - case 624: - case 625: - case 642: - case 645: - case 646: + case OBJ_EVENT_GFX_BUTTERFREE: + case OBJ_EVENT_GFX_BEEDRILL: + case OBJ_EVENT_GFX_PIDGEOTTO: + case OBJ_EVENT_GFX_PIDGEOT: + case OBJ_EVENT_GFX_FEAROW: + case OBJ_EVENT_GFX_ZUBAT: + case OBJ_EVENT_GFX_GOLBAT: + case OBJ_EVENT_GFX_VENOMOTH: + case OBJ_EVENT_GFX_AERODACTYL: + case OBJ_EVENT_GFX_ARTICUNO: + case OBJ_EVENT_GFX_ZAPDOS: + case OBJ_EVENT_GFX_MOLTRES: + case OBJ_EVENT_GFX_DRAGONITE: + case OBJ_EVENT_GFX_NOCTOWL: + case OBJ_EVENT_GFX_LEDYBA: + case OBJ_EVENT_GFX_LEDIAN: + case OBJ_EVENT_GFX_CROBAT: + case OBJ_EVENT_GFX_TOGETIC: + case OBJ_EVENT_GFX_HOPPIP: + case OBJ_EVENT_GFX_SKIPLOOM: + case OBJ_EVENT_GFX_JUMPLUFF: + case OBJ_EVENT_GFX_YANMA: + case OBJ_EVENT_GFX_MANTINE: + case OBJ_EVENT_GFX_SKARMORY: + case OBJ_EVENT_GFX_LUGIA_FOLLOWER: + case OBJ_EVENT_GFX_HOOH_FOLLOWER: + case OBJ_EVENT_GFX_CELEBI: + case OBJ_EVENT_GFX_BEAUTIFLY: + case OBJ_EVENT_GFX_DUSTOX: + case OBJ_EVENT_GFX_SWELLOW: + case OBJ_EVENT_GFX_WINGULL_FOLLOWER: + case OBJ_EVENT_GFX_PELIPPER: + case OBJ_EVENT_GFX_MASQUERAIN: + case OBJ_EVENT_GFX_FLYGON: + case OBJ_EVENT_GFX_SWABLU: + case OBJ_EVENT_GFX_ALTARIA: + case OBJ_EVENT_GFX_VOLBEAT: + case OBJ_EVENT_GFX_ILLUMISE: + case OBJ_EVENT_GFX_KYOGRE: + case OBJ_EVENT_GFX_LATIAS_FOLLOWER: + case OBJ_EVENT_GFX_LATIOS_FOLLOWER: return TRUE; default: return FALSE; diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 864c744b7..83b157ba7 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -660,7 +660,7 @@ #define OBJ_EVENT_GFX_EXPANDING_SPARKLE 650 #else -// There are no OLD_UNOWN constants in the pokemon_expansion +// There are no OLD_UNOWN constants in the pokemon_expansion, and the species constants are ordered differently #define OBJ_EVENT_GFX_TREECKO 490 #define OBJ_EVENT_GFX_GROVYLE 491 @@ -686,117 +686,117 @@ #define OBJ_EVENT_GFX_SEEDOT 511 #define OBJ_EVENT_GFX_NUZLEAF 512 #define OBJ_EVENT_GFX_SHIFTRY 513 -#define OBJ_EVENT_GFX_NINCADA 514 -#define OBJ_EVENT_GFX_NINJASK 515 -#define OBJ_EVENT_GFX_SHEDINJA 516 -#define OBJ_EVENT_GFX_TAILLOW 517 -#define OBJ_EVENT_GFX_SWELLOW 518 -#define OBJ_EVENT_GFX_SHROOMISH 519 -#define OBJ_EVENT_GFX_BRELOOM 520 -#define OBJ_EVENT_GFX_SPINDA 521 -#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 522 -#define OBJ_EVENT_GFX_PELIPPER 523 -#define OBJ_EVENT_GFX_SURSKIT 524 -#define OBJ_EVENT_GFX_MASQUERAIN 525 -#define OBJ_EVENT_GFX_WAILMER 526 -#define OBJ_EVENT_GFX_WAILORD 527 -#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 528 -#define OBJ_EVENT_GFX_DELCATTY 529 -#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 530 -#define OBJ_EVENT_GFX_BALTOY 531 -#define OBJ_EVENT_GFX_CLAYDOL 532 -#define OBJ_EVENT_GFX_NOSEPASS 533 -#define OBJ_EVENT_GFX_TORKOAL 534 -#define OBJ_EVENT_GFX_SABLEYE 535 -#define OBJ_EVENT_GFX_BARBOACH 536 -#define OBJ_EVENT_GFX_WHISCASH 537 -#define OBJ_EVENT_GFX_LUVDISC 538 -#define OBJ_EVENT_GFX_CORPHISH 539 -#define OBJ_EVENT_GFX_CRAWDAUNT 540 -#define OBJ_EVENT_GFX_FEEBAS 541 -#define OBJ_EVENT_GFX_MILOTIC 542 -#define OBJ_EVENT_GFX_CARVANHA 543 -#define OBJ_EVENT_GFX_SHARPEDO 544 -#define OBJ_EVENT_GFX_TRAPINCH 545 -#define OBJ_EVENT_GFX_VIBRAVA 546 -#define OBJ_EVENT_GFX_FLYGON 547 -#define OBJ_EVENT_GFX_MAKUHITA 548 -#define OBJ_EVENT_GFX_HARIYAMA 549 -#define OBJ_EVENT_GFX_ELECTRIKE 550 -#define OBJ_EVENT_GFX_MANECTRIC 551 -#define OBJ_EVENT_GFX_NUMEL 552 -#define OBJ_EVENT_GFX_CAMERUPT 553 -#define OBJ_EVENT_GFX_SPHEAL 554 -#define OBJ_EVENT_GFX_SEALEO 555 -#define OBJ_EVENT_GFX_WALREIN 556 -#define OBJ_EVENT_GFX_CACNEA 557 -#define OBJ_EVENT_GFX_CACTURNE 558 -#define OBJ_EVENT_GFX_SNORUNT 559 -#define OBJ_EVENT_GFX_GLALIE 560 -#define OBJ_EVENT_GFX_LUNATONE 561 -#define OBJ_EVENT_GFX_SOLROCK 562 -#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 563 -#define OBJ_EVENT_GFX_SPOINK 564 -#define OBJ_EVENT_GFX_GRUMPIG 565 -#define OBJ_EVENT_GFX_PLUSLE 566 -#define OBJ_EVENT_GFX_MINUN 567 -#define OBJ_EVENT_GFX_MAWILE 568 -#define OBJ_EVENT_GFX_MEDITITE 569 -#define OBJ_EVENT_GFX_MEDICHAM 570 +#define OBJ_EVENT_GFX_TAILLOW 514 +#define OBJ_EVENT_GFX_SWELLOW 515 +#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 516 +#define OBJ_EVENT_GFX_PELIPPER 517 +#define OBJ_EVENT_GFX_RALTS 518 +#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 519 +#define OBJ_EVENT_GFX_GARDEVOIR 520 +#define OBJ_EVENT_GFX_SURSKIT 521 +#define OBJ_EVENT_GFX_MASQUERAIN 522 +#define OBJ_EVENT_GFX_SHROOMISH 523 +#define OBJ_EVENT_GFX_BRELOOM 524 +#define OBJ_EVENT_GFX_SLAKOTH 525 +#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 526 +#define OBJ_EVENT_GFX_SLAKING 527 +#define OBJ_EVENT_GFX_NINCADA 528 +#define OBJ_EVENT_GFX_NINJASK 529 +#define OBJ_EVENT_GFX_SHEDINJA 530 +#define OBJ_EVENT_GFX_WHISMUR 531 +#define OBJ_EVENT_GFX_LOUDRED 532 +#define OBJ_EVENT_GFX_EXPLOUD 533 +#define OBJ_EVENT_GFX_MAKUHITA 534 +#define OBJ_EVENT_GFX_HARIYAMA 535 +#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 536 +#define OBJ_EVENT_GFX_NOSEPASS 537 +#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 538 +#define OBJ_EVENT_GFX_DELCATTY 539 +#define OBJ_EVENT_GFX_SABLEYE 540 +#define OBJ_EVENT_GFX_MAWILE 541 +#define OBJ_EVENT_GFX_ARON 542 +#define OBJ_EVENT_GFX_LAIRON 543 +#define OBJ_EVENT_GFX_AGGRON 544 +#define OBJ_EVENT_GFX_MEDITITE 545 +#define OBJ_EVENT_GFX_MEDICHAM 546 +#define OBJ_EVENT_GFX_ELECTRIKE 547 +#define OBJ_EVENT_GFX_MANECTRIC 548 +#define OBJ_EVENT_GFX_PLUSLE 549 +#define OBJ_EVENT_GFX_MINUN 550 +#define OBJ_EVENT_GFX_VOLBEAT 551 +#define OBJ_EVENT_GFX_ILLUMISE 552 +#define OBJ_EVENT_GFX_ROSELIA 553 +#define OBJ_EVENT_GFX_GULPIN 554 +#define OBJ_EVENT_GFX_SWALOT 555 +#define OBJ_EVENT_GFX_CARVANHA 556 +#define OBJ_EVENT_GFX_SHARPEDO 557 +#define OBJ_EVENT_GFX_WAILMER 558 +#define OBJ_EVENT_GFX_WAILORD 559 +#define OBJ_EVENT_GFX_NUMEL 560 +#define OBJ_EVENT_GFX_CAMERUPT 561 +#define OBJ_EVENT_GFX_TORKOAL 562 +#define OBJ_EVENT_GFX_SPOINK 563 +#define OBJ_EVENT_GFX_GRUMPIG 564 +#define OBJ_EVENT_GFX_SPINDA 565 +#define OBJ_EVENT_GFX_TRAPINCH 566 +#define OBJ_EVENT_GFX_VIBRAVA 567 +#define OBJ_EVENT_GFX_FLYGON 568 +#define OBJ_EVENT_GFX_CACNEA 569 +#define OBJ_EVENT_GFX_CACTURNE 570 #define OBJ_EVENT_GFX_SWABLU 571 #define OBJ_EVENT_GFX_ALTARIA 572 -#define OBJ_EVENT_GFX_WYNAUT 573 -#define OBJ_EVENT_GFX_DUSKULL 574 -#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 575 -#define OBJ_EVENT_GFX_ROSELIA 576 -#define OBJ_EVENT_GFX_SLAKOTH 577 -#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 578 -#define OBJ_EVENT_GFX_SLAKING 579 -#define OBJ_EVENT_GFX_GULPIN 580 -#define OBJ_EVENT_GFX_SWALOT 581 -#define OBJ_EVENT_GFX_TROPIUS 582 -#define OBJ_EVENT_GFX_WHISMUR 583 -#define OBJ_EVENT_GFX_LOUDRED 584 -#define OBJ_EVENT_GFX_EXPLOUD 585 -#define OBJ_EVENT_GFX_CLAMPERL 586 -#define OBJ_EVENT_GFX_HUNTAIL 587 -#define OBJ_EVENT_GFX_GOREBYSS 588 -#define OBJ_EVENT_GFX_ABSOL 589 -#define OBJ_EVENT_GFX_SHUPPET 590 -#define OBJ_EVENT_GFX_BANETTE 591 -#define OBJ_EVENT_GFX_SEVIPER 592 -#define OBJ_EVENT_GFX_ZANGOOSE 593 -#define OBJ_EVENT_GFX_RELICANTH 594 -#define OBJ_EVENT_GFX_ARON 595 -#define OBJ_EVENT_GFX_LAIRON 596 -#define OBJ_EVENT_GFX_AGGRON 597 -#define OBJ_EVENT_GFX_CASTFORM 598 -#define OBJ_EVENT_GFX_VOLBEAT 599 -#define OBJ_EVENT_GFX_ILLUMISE 600 -#define OBJ_EVENT_GFX_LILEEP 601 -#define OBJ_EVENT_GFX_CRADILY 602 -#define OBJ_EVENT_GFX_ANORITH 603 -#define OBJ_EVENT_GFX_ARMALDO 604 -#define OBJ_EVENT_GFX_RALTS 605 -#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 606 -#define OBJ_EVENT_GFX_GARDEVOIR 607 -#define OBJ_EVENT_GFX_BAGON 608 -#define OBJ_EVENT_GFX_SHELGON 609 -#define OBJ_EVENT_GFX_SALAMENCE 610 -#define OBJ_EVENT_GFX_BELDUM 611 -#define OBJ_EVENT_GFX_METANG 612 -#define OBJ_EVENT_GFX_METAGROSS 613 -#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 614 -#define OBJ_EVENT_GFX_REGICE_FOLLOWER 615 -#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 616 -#define OBJ_EVENT_GFX_KYOGRE 617 -#define OBJ_EVENT_GFX_GROUDON 618 -#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 619 -#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 620 -#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 621 -#define OBJ_EVENT_GFX_JIRACHI 622 -#define OBJ_EVENT_GFX_DEOXYS_NORMAL 623 -#define OBJ_EVENT_GFX_CHIMECHO 624 +#define OBJ_EVENT_GFX_ZANGOOSE 573 +#define OBJ_EVENT_GFX_SEVIPER 574 +#define OBJ_EVENT_GFX_LUNATONE 575 +#define OBJ_EVENT_GFX_SOLROCK 576 +#define OBJ_EVENT_GFX_BARBOACH 577 +#define OBJ_EVENT_GFX_WHISCASH 578 +#define OBJ_EVENT_GFX_CORPHISH 579 +#define OBJ_EVENT_GFX_CRAWDAUNT 580 +#define OBJ_EVENT_GFX_BALTOY 581 +#define OBJ_EVENT_GFX_CLAYDOL 582 +#define OBJ_EVENT_GFX_LILEEP 583 +#define OBJ_EVENT_GFX_CRADILY 584 +#define OBJ_EVENT_GFX_ANORITH 585 +#define OBJ_EVENT_GFX_ARMALDO 586 +#define OBJ_EVENT_GFX_FEEBAS 587 +#define OBJ_EVENT_GFX_MILOTIC 588 +#define OBJ_EVENT_GFX_CASTFORM 589 +#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 590 +#define OBJ_EVENT_GFX_SHUPPET 591 +#define OBJ_EVENT_GFX_BANETTE 592 +#define OBJ_EVENT_GFX_DUSKULL 593 +#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 594 +#define OBJ_EVENT_GFX_TROPIUS 595 +#define OBJ_EVENT_GFX_CHIMECHO 596 +#define OBJ_EVENT_GFX_ABSOL 597 +#define OBJ_EVENT_GFX_WYNAUT 598 +#define OBJ_EVENT_GFX_SNORUNT 599 +#define OBJ_EVENT_GFX_GLALIE 600 +#define OBJ_EVENT_GFX_SPHEAL 601 +#define OBJ_EVENT_GFX_SEALEO 602 +#define OBJ_EVENT_GFX_WALREIN 603 +#define OBJ_EVENT_GFX_CLAMPERL 604 +#define OBJ_EVENT_GFX_HUNTAIL 605 +#define OBJ_EVENT_GFX_GOREBYSS 606 +#define OBJ_EVENT_GFX_RELICANTH 607 +#define OBJ_EVENT_GFX_LUVDISC 608 +#define OBJ_EVENT_GFX_BAGON 609 +#define OBJ_EVENT_GFX_SHELGON 610 +#define OBJ_EVENT_GFX_SALAMENCE 611 +#define OBJ_EVENT_GFX_BELDUM 612 +#define OBJ_EVENT_GFX_METANG 613 +#define OBJ_EVENT_GFX_METAGROSS 614 +#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 615 +#define OBJ_EVENT_GFX_REGICE_FOLLOWER 616 +#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 617 +#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 618 +#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 619 +#define OBJ_EVENT_GFX_KYOGRE 620 +#define OBJ_EVENT_GFX_GROUDON 621 +#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 622 +#define OBJ_EVENT_GFX_JIRACHI 623 +#define OBJ_EVENT_GFX_DEOXYS_NORMAL 624 #define OBJ_EVENT_GFX_GREAT_BALL 625 #define OBJ_EVENT_GFX_ULTRA_BALL 626 From 04a4cc0987750e023b7a2c2f8f56f016672bf161 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sat, 26 Mar 2022 16:10:30 -0700 Subject: [PATCH 30/71] Reordered constants and changed IsFlyingPokemonGraphic Species constants are reordered in pokemon_expansion, and IsFlyingGraphic now uses constants, so the proper sprites will/will not bounce, regardless of how the constants are ordered. --- gflib/sprite.c | 83 +++++------ include/constants/event_objects.h | 220 +++++++++++++++--------------- 2 files changed, 152 insertions(+), 151 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 56243ee75..411e7d3b8 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -3,6 +3,7 @@ #include "main.h" #include "palette.h" #include "global.fieldmap.h" +#include "constants/event_objects.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -975,47 +976,47 @@ bool8 IsFlyingPokemonGraphic(u16 graphicsId) { switch(graphicsId) { - case 250: - case 253: - case 255: - case 256: - case 260: - case 279: - case 280: - case 287: - case 380: - case 382: - case 383: - case 384: - case 387: - case 402: - case 403: - case 404: - case 407: - case 414: - case 425: - case 426: - case 427: - case 431: - case 464: - case 465: - case 487: - case 488: - case 489: - case 530: - case 532: - case 543: - case 547: - case 548: - case 550: - case 572: - case 596: - case 597: - case 624: - case 625: - case 642: - case 645: - case 646: + case OBJ_EVENT_GFX_BUTTERFREE: + case OBJ_EVENT_GFX_BEEDRILL: + case OBJ_EVENT_GFX_PIDGEOTTO: + case OBJ_EVENT_GFX_PIDGEOT: + case OBJ_EVENT_GFX_FEAROW: + case OBJ_EVENT_GFX_ZUBAT: + case OBJ_EVENT_GFX_GOLBAT: + case OBJ_EVENT_GFX_VENOMOTH: + case OBJ_EVENT_GFX_AERODACTYL: + case OBJ_EVENT_GFX_ARTICUNO: + case OBJ_EVENT_GFX_ZAPDOS: + case OBJ_EVENT_GFX_MOLTRES: + case OBJ_EVENT_GFX_DRAGONITE: + case OBJ_EVENT_GFX_NOCTOWL: + case OBJ_EVENT_GFX_LEDYBA: + case OBJ_EVENT_GFX_LEDIAN: + case OBJ_EVENT_GFX_CROBAT: + case OBJ_EVENT_GFX_TOGETIC: + case OBJ_EVENT_GFX_HOPPIP: + case OBJ_EVENT_GFX_SKIPLOOM: + case OBJ_EVENT_GFX_JUMPLUFF: + case OBJ_EVENT_GFX_YANMA: + case OBJ_EVENT_GFX_MANTINE: + case OBJ_EVENT_GFX_SKARMORY: + case OBJ_EVENT_GFX_LUGIA_FOLLOWER: + case OBJ_EVENT_GFX_HOOH_FOLLOWER: + case OBJ_EVENT_GFX_CELEBI: + case OBJ_EVENT_GFX_BEAUTIFLY: + case OBJ_EVENT_GFX_DUSTOX: + case OBJ_EVENT_GFX_SWELLOW: + case OBJ_EVENT_GFX_WINGULL_FOLLOWER: + case OBJ_EVENT_GFX_PELIPPER: + case OBJ_EVENT_GFX_MASQUERAIN: + case OBJ_EVENT_GFX_FLYGON: + case OBJ_EVENT_GFX_SWABLU: + case OBJ_EVENT_GFX_ALTARIA: + case OBJ_EVENT_GFX_VOLBEAT: + case OBJ_EVENT_GFX_ILLUMISE: + case OBJ_EVENT_GFX_KYOGRE: + case OBJ_EVENT_GFX_LATIAS_FOLLOWER: + case OBJ_EVENT_GFX_LATIOS_FOLLOWER: return TRUE; default: return FALSE; diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 1f4256ae1..b2b6a2c6c 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -692,7 +692,7 @@ #define OBJ_EVENT_GFX_EXPANDING_SPARKLE 680 #else -// There are no OLD_UNOWN constants in the pokemon_expansion +// There are no OLD_UNOWN constants in the pokemon_expansion, and the species constants are reordered #define OBJ_EVENT_GFX_TREECKO 490 #define OBJ_EVENT_GFX_GROVYLE 491 @@ -718,117 +718,117 @@ #define OBJ_EVENT_GFX_SEEDOT 511 #define OBJ_EVENT_GFX_NUZLEAF 512 #define OBJ_EVENT_GFX_SHIFTRY 513 -#define OBJ_EVENT_GFX_NINCADA 514 -#define OBJ_EVENT_GFX_NINJASK 515 -#define OBJ_EVENT_GFX_SHEDINJA 516 -#define OBJ_EVENT_GFX_TAILLOW 517 -#define OBJ_EVENT_GFX_SWELLOW 518 -#define OBJ_EVENT_GFX_SHROOMISH 519 -#define OBJ_EVENT_GFX_BRELOOM 520 -#define OBJ_EVENT_GFX_SPINDA 521 -#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 522 -#define OBJ_EVENT_GFX_PELIPPER 523 -#define OBJ_EVENT_GFX_SURSKIT 524 -#define OBJ_EVENT_GFX_MASQUERAIN 525 -#define OBJ_EVENT_GFX_WAILMER 526 -#define OBJ_EVENT_GFX_WAILORD 527 -#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 528 -#define OBJ_EVENT_GFX_DELCATTY 529 -#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 530 -#define OBJ_EVENT_GFX_BALTOY 531 -#define OBJ_EVENT_GFX_CLAYDOL 532 -#define OBJ_EVENT_GFX_NOSEPASS 533 -#define OBJ_EVENT_GFX_TORKOAL 534 -#define OBJ_EVENT_GFX_SABLEYE 535 -#define OBJ_EVENT_GFX_BARBOACH 536 -#define OBJ_EVENT_GFX_WHISCASH 537 -#define OBJ_EVENT_GFX_LUVDISC 538 -#define OBJ_EVENT_GFX_CORPHISH 539 -#define OBJ_EVENT_GFX_CRAWDAUNT 540 -#define OBJ_EVENT_GFX_FEEBAS 541 -#define OBJ_EVENT_GFX_MILOTIC 542 -#define OBJ_EVENT_GFX_CARVANHA 543 -#define OBJ_EVENT_GFX_SHARPEDO 544 -#define OBJ_EVENT_GFX_TRAPINCH 545 -#define OBJ_EVENT_GFX_VIBRAVA 546 -#define OBJ_EVENT_GFX_FLYGON 547 -#define OBJ_EVENT_GFX_MAKUHITA 548 -#define OBJ_EVENT_GFX_HARIYAMA 549 -#define OBJ_EVENT_GFX_ELECTRIKE 550 -#define OBJ_EVENT_GFX_MANECTRIC 551 -#define OBJ_EVENT_GFX_NUMEL 552 -#define OBJ_EVENT_GFX_CAMERUPT 553 -#define OBJ_EVENT_GFX_SPHEAL 554 -#define OBJ_EVENT_GFX_SEALEO 555 -#define OBJ_EVENT_GFX_WALREIN 556 -#define OBJ_EVENT_GFX_CACNEA 557 -#define OBJ_EVENT_GFX_CACTURNE 558 -#define OBJ_EVENT_GFX_SNORUNT 559 -#define OBJ_EVENT_GFX_GLALIE 560 -#define OBJ_EVENT_GFX_LUNATONE 561 -#define OBJ_EVENT_GFX_SOLROCK 562 -#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 563 -#define OBJ_EVENT_GFX_SPOINK 564 -#define OBJ_EVENT_GFX_GRUMPIG 565 -#define OBJ_EVENT_GFX_PLUSLE 566 -#define OBJ_EVENT_GFX_MINUN 567 -#define OBJ_EVENT_GFX_MAWILE 568 -#define OBJ_EVENT_GFX_MEDITITE 569 -#define OBJ_EVENT_GFX_MEDICHAM 570 +#define OBJ_EVENT_GFX_TAILLOW 514 +#define OBJ_EVENT_GFX_SWELLOW 515 +#define OBJ_EVENT_GFX_WINGULL_FOLLOWER 516 +#define OBJ_EVENT_GFX_PELIPPER 517 +#define OBJ_EVENT_GFX_RALTS 518 +#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 519 +#define OBJ_EVENT_GFX_GARDEVOIR 520 +#define OBJ_EVENT_GFX_SURSKIT 521 +#define OBJ_EVENT_GFX_MASQUERAIN 522 +#define OBJ_EVENT_GFX_SHROOMISH 523 +#define OBJ_EVENT_GFX_BRELOOM 524 +#define OBJ_EVENT_GFX_SLAKOTH 525 +#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 526 +#define OBJ_EVENT_GFX_SLAKING 527 +#define OBJ_EVENT_GFX_NINCADA 528 +#define OBJ_EVENT_GFX_NINJASK 529 +#define OBJ_EVENT_GFX_SHEDINJA 530 +#define OBJ_EVENT_GFX_WHISMUR 531 +#define OBJ_EVENT_GFX_LOUDRED 532 +#define OBJ_EVENT_GFX_EXPLOUD 533 +#define OBJ_EVENT_GFX_MAKUHITA 534 +#define OBJ_EVENT_GFX_HARIYAMA 535 +#define OBJ_EVENT_GFX_AZURILL_FOLLOWER 536 +#define OBJ_EVENT_GFX_NOSEPASS 537 +#define OBJ_EVENT_GFX_SKITTY_FOLLOWER 538 +#define OBJ_EVENT_GFX_DELCATTY 539 +#define OBJ_EVENT_GFX_SABLEYE 540 +#define OBJ_EVENT_GFX_MAWILE 541 +#define OBJ_EVENT_GFX_ARON 542 +#define OBJ_EVENT_GFX_LAIRON 543 +#define OBJ_EVENT_GFX_AGGRON 544 +#define OBJ_EVENT_GFX_MEDITITE 545 +#define OBJ_EVENT_GFX_MEDICHAM 546 +#define OBJ_EVENT_GFX_ELECTRIKE 547 +#define OBJ_EVENT_GFX_MANECTRIC 548 +#define OBJ_EVENT_GFX_PLUSLE 549 +#define OBJ_EVENT_GFX_MINUN 550 +#define OBJ_EVENT_GFX_VOLBEAT 551 +#define OBJ_EVENT_GFX_ILLUMISE 552 +#define OBJ_EVENT_GFX_ROSELIA 553 +#define OBJ_EVENT_GFX_GULPIN 554 +#define OBJ_EVENT_GFX_SWALOT 555 +#define OBJ_EVENT_GFX_CARVANHA 556 +#define OBJ_EVENT_GFX_SHARPEDO 557 +#define OBJ_EVENT_GFX_WAILMER 558 +#define OBJ_EVENT_GFX_WAILORD 559 +#define OBJ_EVENT_GFX_NUMEL 560 +#define OBJ_EVENT_GFX_CAMERUPT 561 +#define OBJ_EVENT_GFX_TORKOAL 562 +#define OBJ_EVENT_GFX_SPOINK 563 +#define OBJ_EVENT_GFX_GRUMPIG 564 +#define OBJ_EVENT_GFX_SPINDA 565 +#define OBJ_EVENT_GFX_TRAPINCH 566 +#define OBJ_EVENT_GFX_VIBRAVA 567 +#define OBJ_EVENT_GFX_FLYGON 568 +#define OBJ_EVENT_GFX_CACNEA 569 +#define OBJ_EVENT_GFX_CACTURNE 570 #define OBJ_EVENT_GFX_SWABLU 571 #define OBJ_EVENT_GFX_ALTARIA 572 -#define OBJ_EVENT_GFX_WYNAUT 573 -#define OBJ_EVENT_GFX_DUSKULL 574 -#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 575 -#define OBJ_EVENT_GFX_ROSELIA 576 -#define OBJ_EVENT_GFX_SLAKOTH 577 -#define OBJ_EVENT_GFX_VIGOROTH_FOLLOWER 578 -#define OBJ_EVENT_GFX_SLAKING 579 -#define OBJ_EVENT_GFX_GULPIN 580 -#define OBJ_EVENT_GFX_SWALOT 581 -#define OBJ_EVENT_GFX_TROPIUS 582 -#define OBJ_EVENT_GFX_WHISMUR 583 -#define OBJ_EVENT_GFX_LOUDRED 584 -#define OBJ_EVENT_GFX_EXPLOUD 585 -#define OBJ_EVENT_GFX_CLAMPERL 586 -#define OBJ_EVENT_GFX_HUNTAIL 587 -#define OBJ_EVENT_GFX_GOREBYSS 588 -#define OBJ_EVENT_GFX_ABSOL 589 -#define OBJ_EVENT_GFX_SHUPPET 590 -#define OBJ_EVENT_GFX_BANETTE 591 -#define OBJ_EVENT_GFX_SEVIPER 592 -#define OBJ_EVENT_GFX_ZANGOOSE 593 -#define OBJ_EVENT_GFX_RELICANTH 594 -#define OBJ_EVENT_GFX_ARON 595 -#define OBJ_EVENT_GFX_LAIRON 596 -#define OBJ_EVENT_GFX_AGGRON 597 -#define OBJ_EVENT_GFX_CASTFORM 598 -#define OBJ_EVENT_GFX_VOLBEAT 599 -#define OBJ_EVENT_GFX_ILLUMISE 600 -#define OBJ_EVENT_GFX_LILEEP 601 -#define OBJ_EVENT_GFX_CRADILY 602 -#define OBJ_EVENT_GFX_ANORITH 603 -#define OBJ_EVENT_GFX_ARMALDO 604 -#define OBJ_EVENT_GFX_RALTS 605 -#define OBJ_EVENT_GFX_KIRLIA_FOLLOWER 606 -#define OBJ_EVENT_GFX_GARDEVOIR 607 -#define OBJ_EVENT_GFX_BAGON 608 -#define OBJ_EVENT_GFX_SHELGON 609 -#define OBJ_EVENT_GFX_SALAMENCE 610 -#define OBJ_EVENT_GFX_BELDUM 611 -#define OBJ_EVENT_GFX_METANG 612 -#define OBJ_EVENT_GFX_METAGROSS 613 -#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 614 -#define OBJ_EVENT_GFX_REGICE_FOLLOWER 615 -#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 616 -#define OBJ_EVENT_GFX_KYOGRE 617 -#define OBJ_EVENT_GFX_GROUDON 618 -#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 619 -#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 620 -#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 621 -#define OBJ_EVENT_GFX_JIRACHI 622 -#define OBJ_EVENT_GFX_DEOXYS_NORMAL 623 -#define OBJ_EVENT_GFX_CHIMECHO 624 +#define OBJ_EVENT_GFX_ZANGOOSE 573 +#define OBJ_EVENT_GFX_SEVIPER 574 +#define OBJ_EVENT_GFX_LUNATONE 575 +#define OBJ_EVENT_GFX_SOLROCK 576 +#define OBJ_EVENT_GFX_BARBOACH 577 +#define OBJ_EVENT_GFX_WHISCASH 578 +#define OBJ_EVENT_GFX_CORPHISH 579 +#define OBJ_EVENT_GFX_CRAWDAUNT 580 +#define OBJ_EVENT_GFX_BALTOY 581 +#define OBJ_EVENT_GFX_CLAYDOL 582 +#define OBJ_EVENT_GFX_LILEEP 583 +#define OBJ_EVENT_GFX_CRADILY 584 +#define OBJ_EVENT_GFX_ANORITH 585 +#define OBJ_EVENT_GFX_ARMALDO 586 +#define OBJ_EVENT_GFX_FEEBAS 587 +#define OBJ_EVENT_GFX_MILOTIC 588 +#define OBJ_EVENT_GFX_CASTFORM 589 +#define OBJ_EVENT_GFX_KECLEON_FOLLOWER 590 +#define OBJ_EVENT_GFX_SHUPPET 591 +#define OBJ_EVENT_GFX_BANETTE 592 +#define OBJ_EVENT_GFX_DUSKULL 593 +#define OBJ_EVENT_GFX_DUSCLOPS_FOLLOWER 594 +#define OBJ_EVENT_GFX_TROPIUS 595 +#define OBJ_EVENT_GFX_CHIMECHO 596 +#define OBJ_EVENT_GFX_ABSOL 597 +#define OBJ_EVENT_GFX_WYNAUT 598 +#define OBJ_EVENT_GFX_SNORUNT 599 +#define OBJ_EVENT_GFX_GLALIE 600 +#define OBJ_EVENT_GFX_SPHEAL 601 +#define OBJ_EVENT_GFX_SEALEO 602 +#define OBJ_EVENT_GFX_WALREIN 603 +#define OBJ_EVENT_GFX_CLAMPERL 604 +#define OBJ_EVENT_GFX_HUNTAIL 605 +#define OBJ_EVENT_GFX_GOREBYSS 606 +#define OBJ_EVENT_GFX_RELICANTH 607 +#define OBJ_EVENT_GFX_LUVDISC 608 +#define OBJ_EVENT_GFX_BAGON 609 +#define OBJ_EVENT_GFX_SHELGON 610 +#define OBJ_EVENT_GFX_SALAMENCE 611 +#define OBJ_EVENT_GFX_BELDUM 612 +#define OBJ_EVENT_GFX_METANG 613 +#define OBJ_EVENT_GFX_METAGROSS 614 +#define OBJ_EVENT_GFX_REGIROCK_FOLLOWER 615 +#define OBJ_EVENT_GFX_REGICE_FOLLOWER 616 +#define OBJ_EVENT_GFX_REGISTEEL_FOLLOWER 617 +#define OBJ_EVENT_GFX_LATIAS_FOLLOWER 618 +#define OBJ_EVENT_GFX_LATIOS_FOLLOWER 619 +#define OBJ_EVENT_GFX_KYOGRE 620 +#define OBJ_EVENT_GFX_GROUDON 621 +#define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 622 +#define OBJ_EVENT_GFX_JIRACHI 623 +#define OBJ_EVENT_GFX_DEOXYS_NORMAL 624 // Other forms #define OBJ_EVENT_GFX_DEOXYS_ATTACK 625 From 4f18a3fa89cd40a6cbfa9c1c0b5c812fa2885363 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 27 Mar 2022 22:13:59 -0700 Subject: [PATCH 31/71] Fixed glitch when going in/out of pokeball a lot Before this fix, if the follower did their into/out of pokeball animation enough times without the map being reloaded, both the follower and the sparkle sprites would start to glitch out a lot. This fixes that. --- 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 25aeff76b..956a15770 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10445,6 +10445,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, if (sprite->data[7] >= 11) { + FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; @@ -10571,8 +10572,8 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->y2 = 0; } + FreeSpriteOamMatrix(sprite); sprite->data[2]++; - sprite->oam.affineMode = 0; } return FALSE; From 01ab4280f3a0fb25f074a0448eea96fc217968a2 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 27 Mar 2022 22:17:06 -0700 Subject: [PATCH 32/71] Fixed glitch when follower goes in/out of pokeball a lot Before this fix, if the follower went into/out of their pokeball enough times, both the follower and the sparkles would start glitching out whenever the into/out of animation played. This fixes that. --- 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 502f23b02..a5578eaad 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10339,6 +10339,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, if (sprite->data[7] >= 11) { + FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; @@ -10465,8 +10466,8 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->y2 = 0; } + FreeSpriteOamMatrix(sprite); sprite->data[2]++; - sprite->oam.affineMode = 0; } return FALSE; From 96db459f469fd79649879e63dad03d17d9546d9b Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Mon, 28 Mar 2022 00:30:43 -0700 Subject: [PATCH 33/71] Accounted for expansion in FollowerSparkleCoords Added check to make sure the sparkle coordinates for each follower was in the correct order, depending on expansion. --- src/overworld.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/src/overworld.c b/src/overworld.c index 244a7bce1..1d962b76e 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -485,6 +485,7 @@ static const u8 FollowerSparkleCoords[][6] = {15, 9, 15, 9, 8, 9}, // Seedot {15, 12, 15, 12, 9, 12}, // Nuzleaf {16, 12, 16, 12, 13, 12}, // Shiftry +#ifndef POKEMON_EXPANSION {15, 9, 15, 8, 12, 8}, // Nincada {15, 12, 15, 12, 12, 12}, // Ninjask {16, 13, 16, 14, 12, 13}, // Shedinja @@ -596,6 +597,119 @@ static const u8 FollowerSparkleCoords[][6] = {15, 13, 15, 13, 10, 12}, // Jirachi {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) {16, 11, 16, 11, 7, 11}, // Chimecho +#else + {15, 9, 15, 9, 10, 8}, // Taillow + {15, 13, 15, 12, 16, 15}, // Swellow + {15, 11, 15, 10, 12, 13}, // Wingull + {16, 14, 16, 14, 14, 13}, // Pelipper + {9, 15, 9, 9, 9}, // Ralts + {15, 11, 15, 11, 9, 11}, // Kirlia + {16, 12, 16, 13, 10, 12}, // Gardevoir + {15, 9, 15, 9, 10, 9}, // Surskit + {16, 14, 16, 15, 10, 14}, // Masquerain + {15, 9, 15, 9, 10, 9}, // Shroomish + {16, 12, 16, 12, 12, 12}, // Breloom + {15, 9, 15, 9, 12, 8}, // Slakoth + {16, 11, 16, 11, 14, 11}, // Vigoroth + {16, 15, 16, 14, 14, 14}, // Slaking + {15, 9, 15, 8, 12, 8}, // Nincada + {15, 12, 15, 12, 12, 12}, // Ninjask + {16, 13, 16, 14, 12, 13}, // Shedinja + {16, 8, 16, 8, 8, 8}, // Whismur + {16, 11, 16, 11, 9, 12}, // Loudred + {16, 14, 16, 14, 17, 15}, // Exploud + {16, 10, 16, 10, 9, 11}, // Makuhita + {14, 14, 14, 13, 14, 13}, // Hariyama + {17, 9, 14, 8, 13, 7}, // Azurill + {15, 11, 15, 11, 11, 11}, // Nosepass + {15, 10, 15, 9, 12, 9}, // Skitty + {16, 13, 16, 12, 13, 12}, // Delcatty + {16, 9, 16, 9, 9, 10}, // Sableye + {17, 11, 14, 11, 13, 11}, // Mawile + {16, 8, 16, 8, 9, 8}, // Aron + {15, 13, 15, 12, 16, 10}, // Lairon + {15, 15, 15, 14, 16, 14}, // Aggron + {15, 12, 15, 11, 8, 11}, // Meditite + {15, 13, 15, 13, 8, 13}, // Medicham + {15, 11, 15, 9, 13, 8}, // Electrike + {15, 13, 15, 13, 14, 13}, // Manectric + {15, 9, 15, 9, 9, 9}, // Plusle + {15, 9, 15, 9, 9, 9}, // Minun + {15, 14, 15, 14, 12, 12}, // Volbeat + {16, 13, 16, 13, 11, 12}, // Illumise + {15, 10, 15, 10, 8, 10}, // Roselia + {16, 9, 16, 9, 10, 9}, // Gulpin + {16, 14, 16, 14, 14, 14}, // Swalot + {15, 12, 15, 12, 11, 11}, // Carvanha + {16, 14, 16, 12, 13, 14}, // Sharpedo + {16, 11, 16, 11, 13, 11}, // Wailmer + {32, 19, 32, 18, 38, 12}, // Wailord + {15, 12, 15, 12, 15, 12}, // Numel + {15, 14, 15, 14, 17, 12}, // Camerupt + {16, 10, 16, 11, 15, 10}, // Torkoal + {15, 11, 15, 11, 8, 10}, // Spoink + {15, 11, 15, 11, 11, 11}, // Grumpig + {16, 10, 16, 10, 9, 11}, // Spinda + {16, 8, 16, 8, 10, 8}, // Trapinch + {16, 13, 16, 11, 15, 14}, // Vibrava + {16, 17, 16, 17, 15, 14}, // Flygon + {15, 9, 15, 9, 8, 9}, // Cacnea + {15, 12, 15, 12, 11, 12}, // Cacturne + {16, 12, 16, 11, 11, 10}, // Swablu + {16, 16, 16, 16, 14, 15}, // Altaria + {15, 12, 15, 12, 13, 12}, // Zangoose + {18, 14, 14, 14, 16, 10}, // Seviper + {16, 11, 16, 11, 10, 11}, // Lunatone + {16, 13, 16, 13, 8, 13}, // Solrock + {15, 9, 16, 9, 9, 11}, // Barboach + {15, 10, 15, 11, 14, 9}, // Whiscash + {15, 10, 15, 11, 11, 10}, // Corphish + {16, 13, 16, 13, 13, 12}, // Crawdaunt + {16, 11, 16, 11, 7, 11}, // Baltoy + {16, 14, 16, 14, 11, 13}, // Claydol + {16, 11, 16, 12, 10, 11}, // Lileep + {16, 15, 16, 15, 12, 15}, // Cradily + {16, 11, 16, 10, 14, 9}, // Anorith + {15, 13, 15, 12, 13, 13}, // Armaldo + {16, 9, 16, 9, 10, 9}, // Feebas + {19, 13, 11, 12, 14, 13}, // Milotic + {15, 11, 15, 10, 7, 10}, // Castform + {16, 11, 16, 11, 10, 11}, // Kecleon + {15, 11, 15, 11, 8, 11}, // Shuppet + {17, 10, 16, 10, 9, 10}, // Banette + {16, 12, 16, 11, 9, 12}, // Duskull + {15, 13, 15, 13, 13, 13}, // Dusclops + {16, 13, 16, 13, 16, 13}, // Tropius + {16, 11, 16, 11, 7, 11}, // Chimecho + {14, 14, 16, 14, 15, 13}, // Absol + {16, 10, 16, 10, 10, 9}, // Wynaut + {15, 9, 15, 9, 9, 9}, // Snorunt + {16, 12, 16, 12, 11, 14}, // Glalie + {15, 9, 15, 9, 11, 9}, // Spheal + {15, 12, 15, 13, 15, 12}, // Sealeo + {15, 13, 15, 14, 16, 14}, // Walrein + {15, 8, 15, 8, 8, 9}, // Clamperl + {18, 15, 11, 14, 14, 14}, // Huntail + {17, 16, 12, 14, 15, 11}, // Gorebyss + {15, 13, 15, 12, 14, 10}, // Relicanth + {16, 9, 16, 9, 8, 9}, // Luvdisc + {16, 11, 16, 11, 10, 10}, // Bagon + {16, 10, 16, 10, 11, 10}, // Shelgon + {16, 14, 16, 13, 16, 13}, // Salamence + {15, 13, 15, 12, 12, 12}, // Beldum + {16, 14, 16, 13, 15, 13}, // Metang + {16, 14, 16, 14, 13, 13}, // Metagross + {15, 14, 15, 14, 11, 14}, // Regirock + {15, 13, 15, 13, 12, 13}, // Regice + {16, 13, 16, 13, 10, 13}, // Registeel + {16, 15, 16, 14, 16, 15}, // Latias + {16, 15, 16, 14, 15, 15}, // Latios + {16, 17, 16, 15, 16, 14}, // Kyogre + {15, 16, 16, 16, 16, 16}, // Groudon + {16, 17, 16, 16, 16, 16}, // Rayquaza + {15, 13, 15, 13, 10, 12}, // Jirachi + {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) +#endif {16, 15, 16, 15, 12, 13}, // Deoxys (Speed) {16, 13, 16, 13, 10, 13}, // Deoxys (Defense) {16, 14, 16, 14, 10, 14}, // Deoxys (Attack) From 557e517bbbda0fbc89564334c9327af9c59a6610 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Mon, 28 Mar 2022 01:14:22 -0700 Subject: [PATCH 34/71] Accounted for expansion in FollowerSparkleCoords Added check to make sure the sparkle coordinates for each follower was in the correct order, depending on expansion. --- src/overworld.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/src/overworld.c b/src/overworld.c index 7216222c6..ba83cec2d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -486,6 +486,7 @@ static const u8 FollowerSparkleCoords[][6] = {15, 9, 15, 9, 8, 9}, // Seedot {15, 12, 15, 12, 9, 12}, // Nuzleaf {16, 12, 16, 12, 13, 12}, // Shiftry +#ifndef POKEMON_EXPANSION {15, 9, 15, 8, 12, 8}, // Nincada {15, 12, 15, 12, 12, 12}, // Ninjask {16, 13, 16, 14, 12, 13}, // Shedinja @@ -597,6 +598,119 @@ static const u8 FollowerSparkleCoords[][6] = {15, 13, 15, 13, 10, 12}, // Jirachi {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) {16, 11, 16, 11, 7, 11}, // Chimecho +#else + {15, 9, 15, 9, 10, 8}, // Taillow + {15, 13, 15, 12, 16, 15}, // Swellow + {15, 11, 15, 10, 12, 13}, // Wingull + {16, 14, 16, 14, 14, 13}, // Pelipper + {9, 15, 9, 9, 9}, // Ralts + {15, 11, 15, 11, 9, 11}, // Kirlia + {16, 12, 16, 13, 10, 12}, // Gardevoir + {15, 9, 15, 9, 10, 9}, // Surskit + {16, 14, 16, 15, 10, 14}, // Masquerain + {15, 9, 15, 9, 10, 9}, // Shroomish + {16, 12, 16, 12, 12, 12}, // Breloom + {15, 9, 15, 9, 12, 8}, // Slakoth + {16, 11, 16, 11, 14, 11}, // Vigoroth + {16, 15, 16, 14, 14, 14}, // Slaking + {15, 9, 15, 8, 12, 8}, // Nincada + {15, 12, 15, 12, 12, 12}, // Ninjask + {16, 13, 16, 14, 12, 13}, // Shedinja + {16, 8, 16, 8, 8, 8}, // Whismur + {16, 11, 16, 11, 9, 12}, // Loudred + {16, 14, 16, 14, 17, 15}, // Exploud + {16, 10, 16, 10, 9, 11}, // Makuhita + {14, 14, 14, 13, 14, 13}, // Hariyama + {17, 9, 14, 8, 13, 7}, // Azurill + {15, 11, 15, 11, 11, 11}, // Nosepass + {15, 10, 15, 9, 12, 9}, // Skitty + {16, 13, 16, 12, 13, 12}, // Delcatty + {16, 9, 16, 9, 9, 10}, // Sableye + {17, 11, 14, 11, 13, 11}, // Mawile + {16, 8, 16, 8, 9, 8}, // Aron + {15, 13, 15, 12, 16, 10}, // Lairon + {15, 15, 15, 14, 16, 14}, // Aggron + {15, 12, 15, 11, 8, 11}, // Meditite + {15, 13, 15, 13, 8, 13}, // Medicham + {15, 11, 15, 9, 13, 8}, // Electrike + {15, 13, 15, 13, 14, 13}, // Manectric + {15, 9, 15, 9, 9, 9}, // Plusle + {15, 9, 15, 9, 9, 9}, // Minun + {15, 14, 15, 14, 12, 12}, // Volbeat + {16, 13, 16, 13, 11, 12}, // Illumise + {15, 10, 15, 10, 8, 10}, // Roselia + {16, 9, 16, 9, 10, 9}, // Gulpin + {16, 14, 16, 14, 14, 14}, // Swalot + {15, 12, 15, 12, 11, 11}, // Carvanha + {16, 14, 16, 12, 13, 14}, // Sharpedo + {16, 11, 16, 11, 13, 11}, // Wailmer + {32, 19, 32, 18, 38, 12}, // Wailord + {15, 12, 15, 12, 15, 12}, // Numel + {15, 14, 15, 14, 17, 12}, // Camerupt + {16, 10, 16, 11, 15, 10}, // Torkoal + {15, 11, 15, 11, 8, 10}, // Spoink + {15, 11, 15, 11, 11, 11}, // Grumpig + {16, 10, 16, 10, 9, 11}, // Spinda + {16, 8, 16, 8, 10, 8}, // Trapinch + {16, 13, 16, 11, 15, 14}, // Vibrava + {16, 17, 16, 17, 15, 14}, // Flygon + {15, 9, 15, 9, 8, 9}, // Cacnea + {15, 12, 15, 12, 11, 12}, // Cacturne + {16, 12, 16, 11, 11, 10}, // Swablu + {16, 16, 16, 16, 14, 15}, // Altaria + {15, 12, 15, 12, 13, 12}, // Zangoose + {18, 14, 14, 14, 16, 10}, // Seviper + {16, 11, 16, 11, 10, 11}, // Lunatone + {16, 13, 16, 13, 8, 13}, // Solrock + {15, 9, 16, 9, 9, 11}, // Barboach + {15, 10, 15, 11, 14, 9}, // Whiscash + {15, 10, 15, 11, 11, 10}, // Corphish + {16, 13, 16, 13, 13, 12}, // Crawdaunt + {16, 11, 16, 11, 7, 11}, // Baltoy + {16, 14, 16, 14, 11, 13}, // Claydol + {16, 11, 16, 12, 10, 11}, // Lileep + {16, 15, 16, 15, 12, 15}, // Cradily + {16, 11, 16, 10, 14, 9}, // Anorith + {15, 13, 15, 12, 13, 13}, // Armaldo + {16, 9, 16, 9, 10, 9}, // Feebas + {19, 13, 11, 12, 14, 13}, // Milotic + {15, 11, 15, 10, 7, 10}, // Castform + {16, 11, 16, 11, 10, 11}, // Kecleon + {15, 11, 15, 11, 8, 11}, // Shuppet + {17, 10, 16, 10, 9, 10}, // Banette + {16, 12, 16, 11, 9, 12}, // Duskull + {15, 13, 15, 13, 13, 13}, // Dusclops + {16, 13, 16, 13, 16, 13}, // Tropius + {16, 11, 16, 11, 7, 11}, // Chimecho + {14, 14, 16, 14, 15, 13}, // Absol + {16, 10, 16, 10, 10, 9}, // Wynaut + {15, 9, 15, 9, 9, 9}, // Snorunt + {16, 12, 16, 12, 11, 14}, // Glalie + {15, 9, 15, 9, 11, 9}, // Spheal + {15, 12, 15, 13, 15, 12}, // Sealeo + {15, 13, 15, 14, 16, 14}, // Walrein + {15, 8, 15, 8, 8, 9}, // Clamperl + {18, 15, 11, 14, 14, 14}, // Huntail + {17, 16, 12, 14, 15, 11}, // Gorebyss + {15, 13, 15, 12, 14, 10}, // Relicanth + {16, 9, 16, 9, 8, 9}, // Luvdisc + {16, 11, 16, 11, 10, 10}, // Bagon + {16, 10, 16, 10, 11, 10}, // Shelgon + {16, 14, 16, 13, 16, 13}, // Salamence + {15, 13, 15, 12, 12, 12}, // Beldum + {16, 14, 16, 13, 15, 13}, // Metang + {16, 14, 16, 14, 13, 13}, // Metagross + {15, 14, 15, 14, 11, 14}, // Regirock + {15, 13, 15, 13, 12, 13}, // Regice + {16, 13, 16, 13, 10, 13}, // Registeel + {16, 15, 16, 14, 16, 15}, // Latias + {16, 15, 16, 14, 15, 15}, // Latios + {16, 17, 16, 15, 16, 14}, // Kyogre + {15, 16, 16, 16, 16, 16}, // Groudon + {16, 17, 16, 16, 16, 16}, // Rayquaza + {15, 13, 15, 13, 10, 12}, // Jirachi + {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) +#endif {16, 15, 16, 15, 12, 13}, // Deoxys (Speed) {16, 13, 16, 13, 10, 13}, // Deoxys (Defense) {16, 14, 16, 14, 10, 14}, // Deoxys (Attack) From 2836e8471bab96c69e92ba73c339bdb4b747f645 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 29 Mar 2022 16:05:10 -0700 Subject: [PATCH 35/71] Fixed shallow water bug with followers Before this fix, if the follower shrunk into its pokeball while standing on shallow water, the rippling effect would still be happening. This fixes that. --- src/event_object_movement.c | 8 ++++++++ src/field_effect_helpers.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 956a15770..33009337a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10573,6 +10573,14 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s } FreeSpriteOamMatrix(sprite); + + // Make sure water ripples at the feet of the follower if they are appearing on top of shallow water. + if (MetatileBehavior_IsShallowFlowingWater(MapGridGetMetatileBehaviorAt(objectEvent->currentCoords.x, objectEvent->currentCoords.y))) + { + objectEvent->inShallowFlowingWater = TRUE; + StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); + } + sprite->data[2]++; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4c597c1cb..c33e4905a 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -820,7 +820,8 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) struct Sprite *linkedSprite; struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater + || (gObjectEvents[objectEventId].invisible && objectEventId == gSaveBlock2Ptr->follower.objId && gSaveBlock2Ptr->follower.inProgress)) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } From 07310bdfe5baf94d863df6f6a742d17fd7ae82d7 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 29 Mar 2022 16:07:58 -0700 Subject: [PATCH 36/71] Fixed shallow water bug with followers Before this fix, if the follower shrunk into its pokeball while standing on shallow water, the rippling effect would still be happening. This fixes that. --- src/event_object_movement.c | 8 ++++++++ src/field_effect_helpers.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a5578eaad..936d1ace3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -10467,6 +10467,14 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s } FreeSpriteOamMatrix(sprite); + + // Make sure water ripples at the feet of the follower if they are appearing on top of shallow water. + if (MetatileBehavior_IsShallowFlowingWater(MapGridGetMetatileBehaviorAt(objectEvent->currentCoords.x, objectEvent->currentCoords.y))) + { + objectEvent->inShallowFlowingWater = TRUE; + StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); + } + sprite->data[2]++; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4c597c1cb..c33e4905a 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -820,7 +820,8 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) struct Sprite *linkedSprite; struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater + || (gObjectEvents[objectEventId].invisible && objectEventId == gSaveBlock2Ptr->follower.objId && gSaveBlock2Ptr->follower.inProgress)) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } From c4ebbef330e4c7adbb423fbe40d5e82f50f666a3 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 29 Mar 2022 17:44:09 -0700 Subject: [PATCH 37/71] Fixed ledge jump running frame glitch Before this fix, if the next step the player after jumping down a ledge is a running step, the player would be waiting in their running sprite rather than their standing sprite. This fixes that. --- src/follow_me.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/follow_me.c b/src/follow_me.c index 1071972f0..c1bd932c6 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -326,11 +326,11 @@ RESET: static void Task_ReallowPlayerMovement(u8 taskId) { bool8 animStatus = ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetFollowerMapObjId()]); - if (animStatus == 0) + if (animStatus == 0 && gObjectEvents[GetFollowerMapObjId()].movementActionId != MOVEMENT_ACTION_FOLLOWING_POKEMON) { - /*if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running*/ + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running return; } From e752b8caaa872d9d6d8075324ce98859e5bff265 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 29 Mar 2022 18:07:54 -0700 Subject: [PATCH 38/71] Fixed ledge jump running frame glitch Before this fix, if the next step the player after jumping down a ledge is a running step, the player would be waiting in their running sprite rather than their standing sprite. This fixes that. --- src/follow_me.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/follow_me.c b/src/follow_me.c index 1071972f0..c1bd932c6 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -326,11 +326,11 @@ RESET: static void Task_ReallowPlayerMovement(u8 taskId) { bool8 animStatus = ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetFollowerMapObjId()]); - if (animStatus == 0) + if (animStatus == 0 && gObjectEvents[GetFollowerMapObjId()].movementActionId != MOVEMENT_ACTION_FOLLOWING_POKEMON) { - /*if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running*/ + SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running return; } From 3421fdb1edb16cb546782bf6e0ca36a70b7ed539 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 5 Jul 2022 23:09:19 -0700 Subject: [PATCH 39/71] Added Gen 4 and fixed some bugs overworld.c: Fixed bug where, upon reloading a save with the follower present, the follower wouldn't go into the pokeball. event_object_movement.c, overworld.c: Fixed bug where follower would glitch out when the player immediately starts running after dismounting from their bike or immediately starts riding when they mount their bike. Fix forces player to stand still until follower sprite affine animation is complete. follow_me.c: Fixed bug where follower would appear if the player steps out of a door, gets on their bike, and rides away. field_player_avatar.c: Fixed bug where, upon reloading a save when the follower is present, the player couldn't run, even if they had the running shoes. --- gflib/sprite.c | 4 + .../palettes/followers/abomasnow.pal | 19 + .../palettes/followers/ambipom.pal | 19 + .../palettes/followers/arceus_bug.pal | 19 + .../palettes/followers/arceus_dark.pal | 19 + .../palettes/followers/arceus_dragon.pal | 19 + .../palettes/followers/arceus_electric.pal | 19 + .../palettes/followers/arceus_fighting.pal | 19 + .../palettes/followers/arceus_fire.pal | 19 + .../palettes/followers/arceus_flying.pal | 19 + .../palettes/followers/arceus_ghost.pal | 19 + .../palettes/followers/arceus_grass.pal | 19 + .../palettes/followers/arceus_ground.pal | 19 + .../palettes/followers/arceus_ice.pal | 19 + .../palettes/followers/arceus_normal.pal | 19 + .../palettes/followers/arceus_poison.pal | 19 + .../palettes/followers/arceus_psychic.pal | 19 + .../palettes/followers/arceus_rock.pal | 19 + .../palettes/followers/arceus_steel.pal | 19 + .../palettes/followers/arceus_water.pal | 19 + .../palettes/followers/azelf.pal | 19 + .../palettes/followers/bastiodon.pal | 19 + .../palettes/followers/bibarel.pal | 19 + .../palettes/followers/bidoof.pal | 19 + .../palettes/followers/bonsly.pal | 19 + .../palettes/followers/bronzong.pal | 19 + .../palettes/followers/bronzor.pal | 19 + .../palettes/followers/budew.pal | 19 + .../palettes/followers/buizel.pal | 19 + .../palettes/followers/buneary.pal | 19 + .../palettes/followers/burmy.pal | 19 + .../palettes/followers/burmy_sand.pal | 19 + .../palettes/followers/burmy_trash.pal | 19 + .../palettes/followers/carnivine.pal | 19 + .../palettes/followers/chatot.pal | 19 + .../palettes/followers/cherrim.pal | 19 + .../palettes/followers/cherubi.pal | 19 + .../palettes/followers/chimchar.pal | 19 + .../palettes/followers/chingling.pal | 19 + .../palettes/followers/combee.pal | 19 + .../palettes/followers/cranidos.pal | 19 + .../palettes/followers/cresselia.pal | 19 + .../palettes/followers/croagunk.pal | 19 + .../palettes/followers/darkrai.pal | 19 + .../palettes/followers/dialga.pal | 19 + .../palettes/followers/drapion.pal | 19 + .../palettes/followers/drifblim.pal | 19 + .../palettes/followers/drifloon.pal | 19 + .../palettes/followers/dusknoir.pal | 19 + .../palettes/followers/electivire.pal | 19 + .../palettes/followers/empoleon.pal | 19 + .../palettes/followers/finneon.pal | 19 + .../palettes/followers/floatzel.pal | 19 + .../palettes/followers/froslass.pal | 19 + .../palettes/followers/gabite.pal | 19 + .../palettes/followers/gallade.pal | 19 + .../palettes/followers/garchomp.pal | 19 + .../palettes/followers/gastrodon_east.pal | 19 + .../palettes/followers/gastrodon_west.pal | 19 + .../palettes/followers/gible.pal | 19 + .../palettes/followers/giratina_normal.pal | 19 + .../palettes/followers/giratina_origin.pal | 19 + .../palettes/followers/glaceon.pal | 19 + .../palettes/followers/glameow.pal | 19 + .../palettes/followers/gliscor.pal | 19 + .../palettes/followers/grotle.pal | 19 + .../palettes/followers/happiny.pal | 19 + .../palettes/followers/heatran.pal | 19 + .../palettes/followers/hippopotas.pal | 19 + .../palettes/followers/hippowdon.pal | 19 + .../palettes/followers/honchkrow.pal | 19 + .../palettes/followers/infernape.pal | 19 + .../palettes/followers/kricketot.pal | 19 + .../palettes/followers/kricketune.pal | 19 + .../palettes/followers/leafeon.pal | 19 + .../palettes/followers/lickilicky.pal | 19 + .../palettes/followers/lopunny.pal | 19 + .../palettes/followers/lucario.pal | 19 + .../palettes/followers/lumineon.pal | 19 + .../palettes/followers/luxio.pal | 19 + .../palettes/followers/luxray.pal | 19 + .../palettes/followers/magmortar.pal | 19 + .../palettes/followers/magnezone.pal | 19 + .../palettes/followers/mamoswine.pal | 19 + .../palettes/followers/manaphy.pal | 19 + .../palettes/followers/mantyke.pal | 19 + .../palettes/followers/mesprit.pal | 19 + .../palettes/followers/mime_jr.pal | 19 + .../palettes/followers/mismagius.pal | 19 + .../palettes/followers/monferno.pal | 19 + .../palettes/followers/mothim.pal | 19 + .../palettes/followers/munchlax.pal | 19 + .../palettes/followers/pachirisu.pal | 19 + .../palettes/followers/palkia.pal | 19 + .../palettes/followers/phione.pal | 19 + .../palettes/followers/piplup.pal | 19 + .../palettes/followers/porygonz.pal | 19 + .../palettes/followers/prinplup.pal | 19 + .../palettes/followers/probopass.pal | 19 + .../palettes/followers/purugly.pal | 19 + .../palettes/followers/rampardos.pal | 19 + .../palettes/followers/regigigas.pal | 19 + .../palettes/followers/rhyperior.pal | 19 + .../palettes/followers/riolu.pal | 19 + .../palettes/followers/roserade.pal | 19 + .../palettes/followers/rotom_base.pal | 19 + .../palettes/followers/rotom_fan.pal | 19 + .../palettes/followers/rotom_frost.pal | 19 + .../palettes/followers/rotom_heat.pal | 19 + .../palettes/followers/rotom_mow.pal | 19 + .../palettes/followers/rotom_wash.pal | 19 + .../palettes/followers/shaymin_land.pal | 19 + .../palettes/followers/shaymin_sky.pal | 19 + .../palettes/followers/shellos_east.pal | 19 + .../palettes/followers/shellos_west.pal | 19 + .../palettes/followers/shieldon.pal | 19 + .../palettes/followers/shinx.pal | 19 + .../palettes/followers/skorupi.pal | 19 + .../palettes/followers/skuntank.pal | 19 + .../palettes/followers/snover.pal | 19 + .../palettes/followers/spiritomb.pal | 19 + .../palettes/followers/staraptor.pal | 19 + .../palettes/followers/staravia.pal | 19 + .../palettes/followers/starly.pal | 19 + .../palettes/followers/stunky.pal | 19 + .../palettes/followers/tangrowth.pal | 19 + .../palettes/followers/togekiss.pal | 19 + .../palettes/followers/torterra.pal | 19 + .../palettes/followers/toxicroak.pal | 19 + .../palettes/followers/turtwig.pal | 19 + .../object_events/palettes/followers/uxie.pal | 19 + .../palettes/followers/vespiquen.pal | 19 + .../palettes/followers/weavile.pal | 19 + .../palettes/followers/wormadam.pal | 19 + .../palettes/followers/wormadam_sand.pal | 19 + .../palettes/followers/wormadam_trash.pal | 19 + .../palettes/followers/yanmega.pal | 19 + .../pics/pokemon/followers/abomasnow.png | Bin 0 -> 1052 bytes .../pics/pokemon/followers/ambipom.png | Bin 0 -> 1175 bytes .../pics/pokemon/followers/arceus.png | Bin 0 -> 1399 bytes .../pics/pokemon/followers/azelf.png | Bin 0 -> 767 bytes .../pics/pokemon/followers/bastiodon.png | Bin 0 -> 829 bytes .../pics/pokemon/followers/bibarel.png | Bin 0 -> 853 bytes .../pics/pokemon/followers/bidoof.png | Bin 0 -> 541 bytes .../pics/pokemon/followers/bonsly.png | Bin 0 -> 454 bytes .../pics/pokemon/followers/bronzong.png | Bin 0 -> 696 bytes .../pics/pokemon/followers/bronzor.png | Bin 0 -> 371 bytes .../pics/pokemon/followers/budew.png | Bin 0 -> 421 bytes .../pics/pokemon/followers/buizel.png | Bin 0 -> 719 bytes .../pics/pokemon/followers/buneary.png | Bin 0 -> 675 bytes .../pics/pokemon/followers/burmy.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/burmy_sand.png | Bin 0 -> 504 bytes .../pics/pokemon/followers/burmy_trash.png | Bin 0 -> 505 bytes .../pics/pokemon/followers/carnivine.png | Bin 0 -> 759 bytes .../pics/pokemon/followers/chatot.png | Bin 0 -> 557 bytes .../pics/pokemon/followers/cherrim.png | Bin 0 -> 475 bytes .../pics/pokemon/followers/cherubi.png | Bin 0 -> 578 bytes .../pics/pokemon/followers/chimchar.png | Bin 0 -> 634 bytes .../pics/pokemon/followers/chingling.png | Bin 0 -> 554 bytes .../pics/pokemon/followers/combee.png | Bin 0 -> 527 bytes .../pics/pokemon/followers/cranidos.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/cresselia.png | Bin 0 -> 972 bytes .../pics/pokemon/followers/croagunk.png | Bin 0 -> 555 bytes .../pics/pokemon/followers/darkrai.png | Bin 0 -> 1058 bytes .../pics/pokemon/followers/dialga.png | Bin 0 -> 1686 bytes .../pics/pokemon/followers/drapion.png | Bin 0 -> 1059 bytes .../pics/pokemon/followers/drifblim.png | Bin 0 -> 611 bytes .../pics/pokemon/followers/drifloon.png | Bin 0 -> 411 bytes .../pics/pokemon/followers/dusknoir.png | Bin 0 -> 938 bytes .../pics/pokemon/followers/electivire.png | Bin 0 -> 1021 bytes .../pics/pokemon/followers/empoleon.png | Bin 0 -> 824 bytes .../pics/pokemon/followers/finneon.png | Bin 0 -> 595 bytes .../pics/pokemon/followers/floatzel.png | Bin 0 -> 928 bytes .../pics/pokemon/followers/froslass.png | Bin 0 -> 773 bytes .../pics/pokemon/followers/gabite.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/gallade.png | Bin 0 -> 823 bytes .../pics/pokemon/followers/garchomp.png | Bin 0 -> 1162 bytes .../pics/pokemon/followers/gastrodon_east.png | Bin 0 -> 887 bytes .../pics/pokemon/followers/gastrodon_west.png | Bin 0 -> 896 bytes .../pics/pokemon/followers/gible.png | Bin 0 -> 615 bytes .../pokemon/followers/giratina_normal.png | Bin 0 -> 2291 bytes .../pokemon/followers/giratina_origin.png | Bin 0 -> 2017 bytes .../pics/pokemon/followers/glaceon.png | Bin 0 -> 729 bytes .../pics/pokemon/followers/glameow.png | Bin 0 -> 556 bytes .../pics/pokemon/followers/gliscor.png | Bin 0 -> 993 bytes .../pics/pokemon/followers/grotle.png | Bin 0 -> 689 bytes .../pics/pokemon/followers/happiny.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/heatran.png | Bin 0 -> 1128 bytes .../pics/pokemon/followers/hippopotas.png | Bin 0 -> 662 bytes .../pics/pokemon/followers/hippowdon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/honchkrow.png | Bin 0 -> 727 bytes .../pics/pokemon/followers/infernape.png | Bin 0 -> 1108 bytes .../pics/pokemon/followers/kricketot.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/kricketune.png | Bin 0 -> 847 bytes .../pics/pokemon/followers/leafeon.png | Bin 0 -> 741 bytes .../pics/pokemon/followers/lickilicky.png | Bin 0 -> 711 bytes .../pics/pokemon/followers/lopunny.png | Bin 0 -> 797 bytes .../pics/pokemon/followers/lucario.png | Bin 0 -> 787 bytes .../pics/pokemon/followers/lumineon.png | Bin 0 -> 763 bytes .../pics/pokemon/followers/luxio.png | Bin 0 -> 744 bytes .../pics/pokemon/followers/luxray.png | Bin 0 -> 796 bytes .../pics/pokemon/followers/magmortar.png | Bin 0 -> 1083 bytes .../pics/pokemon/followers/magnezone.png | Bin 0 -> 756 bytes .../pics/pokemon/followers/mamoswine.png | Bin 0 -> 880 bytes .../pics/pokemon/followers/manaphy.png | Bin 0 -> 553 bytes .../pics/pokemon/followers/mantyke.png | Bin 0 -> 644 bytes .../pics/pokemon/followers/mesprit.png | Bin 0 -> 803 bytes .../pics/pokemon/followers/mime_jr.png | Bin 0 -> 524 bytes .../pics/pokemon/followers/mismagius.png | Bin 0 -> 929 bytes .../pics/pokemon/followers/monferno.png | Bin 0 -> 809 bytes .../pics/pokemon/followers/mothim.png | Bin 0 -> 999 bytes .../pics/pokemon/followers/munchlax.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/pachirisu.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/palkia.png | Bin 0 -> 2116 bytes .../pics/pokemon/followers/phione.png | Bin 0 -> 569 bytes .../pics/pokemon/followers/piplup.png | Bin 0 -> 477 bytes .../pics/pokemon/followers/porygonz.png | Bin 0 -> 647 bytes .../pics/pokemon/followers/prinplup.png | Bin 0 -> 681 bytes .../pics/pokemon/followers/probopass.png | Bin 0 -> 1012 bytes .../pics/pokemon/followers/purugly.png | Bin 0 -> 765 bytes .../pics/pokemon/followers/rampardos.png | Bin 0 -> 904 bytes .../pics/pokemon/followers/regigigas.png | Bin 0 -> 1836 bytes .../pics/pokemon/followers/rhyperior.png | Bin 0 -> 994 bytes .../pics/pokemon/followers/riolu.png | Bin 0 -> 618 bytes .../pics/pokemon/followers/roserade.png | Bin 0 -> 956 bytes .../pics/pokemon/followers/rotom_base.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/rotom_fan.png | Bin 0 -> 695 bytes .../pics/pokemon/followers/rotom_frost.png | Bin 0 -> 619 bytes .../pics/pokemon/followers/rotom_heat.png | Bin 0 -> 563 bytes .../pics/pokemon/followers/rotom_mow.png | Bin 0 -> 754 bytes .../pics/pokemon/followers/rotom_wash.png | Bin 0 -> 845 bytes .../pics/pokemon/followers/shaymin_land.png | Bin 0 -> 485 bytes .../pics/pokemon/followers/shaymin_sky.png | Bin 0 -> 1030 bytes .../pics/pokemon/followers/shellos_east.png | Bin 0 -> 603 bytes .../pics/pokemon/followers/shellos_west.png | Bin 0 -> 583 bytes .../pics/pokemon/followers/shieldon.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/shinx.png | Bin 0 -> 567 bytes .../pics/pokemon/followers/skorupi.png | Bin 0 -> 686 bytes .../pics/pokemon/followers/skuntank.png | Bin 0 -> 752 bytes .../pics/pokemon/followers/snover.png | Bin 0 -> 750 bytes .../pics/pokemon/followers/spiritomb.png | Bin 0 -> 804 bytes .../pics/pokemon/followers/staraptor.png | Bin 0 -> 1180 bytes .../pics/pokemon/followers/staravia.png | Bin 0 -> 985 bytes .../pics/pokemon/followers/starly.png | Bin 0 -> 479 bytes .../pics/pokemon/followers/stunky.png | Bin 0 -> 597 bytes .../pics/pokemon/followers/tangrowth.png | Bin 0 -> 1042 bytes .../pics/pokemon/followers/togekiss.png | Bin 0 -> 733 bytes .../pics/pokemon/followers/torterra.png | Bin 0 -> 1245 bytes .../pics/pokemon/followers/toxicroak.png | Bin 0 -> 665 bytes .../pics/pokemon/followers/turtwig.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/uxie.png | Bin 0 -> 770 bytes .../pics/pokemon/followers/vespiquen.png | Bin 0 -> 883 bytes .../pics/pokemon/followers/weavile.png | Bin 0 -> 663 bytes .../pics/pokemon/followers/wormadam.png | Bin 0 -> 703 bytes .../pics/pokemon/followers/wormadam_sand.png | Bin 0 -> 705 bytes .../pics/pokemon/followers/wormadam_trash.png | Bin 0 -> 731 bytes .../pics/pokemon/followers/yanmega.png | Bin 0 -> 1089 bytes include/constants/event_objects.h | 271 +++- spritesheet_rules.mk | 360 ++++++ .../object_events/object_event_graphics.h | 256 ++++ .../object_event_graphics_info.h | 137 +++ .../object_event_graphics_info_pointers.h | 243 ++++ .../object_events/object_event_pic_tables.h | 1086 +++++++++++++++++ src/event_object_movement.c | 279 ++++- src/field_player_avatar.c | 2 +- src/follow_me.c | 21 +- src/overworld.c | 10 +- 267 files changed, 5213 insertions(+), 40 deletions(-) create mode 100644 graphics/object_events/palettes/followers/abomasnow.pal create mode 100644 graphics/object_events/palettes/followers/ambipom.pal create mode 100644 graphics/object_events/palettes/followers/arceus_bug.pal create mode 100644 graphics/object_events/palettes/followers/arceus_dark.pal create mode 100644 graphics/object_events/palettes/followers/arceus_dragon.pal create mode 100644 graphics/object_events/palettes/followers/arceus_electric.pal create mode 100644 graphics/object_events/palettes/followers/arceus_fighting.pal create mode 100644 graphics/object_events/palettes/followers/arceus_fire.pal create mode 100644 graphics/object_events/palettes/followers/arceus_flying.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ghost.pal create mode 100644 graphics/object_events/palettes/followers/arceus_grass.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ground.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ice.pal create mode 100644 graphics/object_events/palettes/followers/arceus_normal.pal create mode 100644 graphics/object_events/palettes/followers/arceus_poison.pal create mode 100644 graphics/object_events/palettes/followers/arceus_psychic.pal create mode 100644 graphics/object_events/palettes/followers/arceus_rock.pal create mode 100644 graphics/object_events/palettes/followers/arceus_steel.pal create mode 100644 graphics/object_events/palettes/followers/arceus_water.pal create mode 100644 graphics/object_events/palettes/followers/azelf.pal create mode 100644 graphics/object_events/palettes/followers/bastiodon.pal create mode 100644 graphics/object_events/palettes/followers/bibarel.pal create mode 100644 graphics/object_events/palettes/followers/bidoof.pal create mode 100644 graphics/object_events/palettes/followers/bonsly.pal create mode 100644 graphics/object_events/palettes/followers/bronzong.pal create mode 100644 graphics/object_events/palettes/followers/bronzor.pal create mode 100644 graphics/object_events/palettes/followers/budew.pal create mode 100644 graphics/object_events/palettes/followers/buizel.pal create mode 100644 graphics/object_events/palettes/followers/buneary.pal create mode 100644 graphics/object_events/palettes/followers/burmy.pal create mode 100644 graphics/object_events/palettes/followers/burmy_sand.pal create mode 100644 graphics/object_events/palettes/followers/burmy_trash.pal create mode 100644 graphics/object_events/palettes/followers/carnivine.pal create mode 100644 graphics/object_events/palettes/followers/chatot.pal create mode 100644 graphics/object_events/palettes/followers/cherrim.pal create mode 100644 graphics/object_events/palettes/followers/cherubi.pal create mode 100644 graphics/object_events/palettes/followers/chimchar.pal create mode 100644 graphics/object_events/palettes/followers/chingling.pal create mode 100644 graphics/object_events/palettes/followers/combee.pal create mode 100644 graphics/object_events/palettes/followers/cranidos.pal create mode 100644 graphics/object_events/palettes/followers/cresselia.pal create mode 100644 graphics/object_events/palettes/followers/croagunk.pal create mode 100644 graphics/object_events/palettes/followers/darkrai.pal create mode 100644 graphics/object_events/palettes/followers/dialga.pal create mode 100644 graphics/object_events/palettes/followers/drapion.pal create mode 100644 graphics/object_events/palettes/followers/drifblim.pal create mode 100644 graphics/object_events/palettes/followers/drifloon.pal create mode 100644 graphics/object_events/palettes/followers/dusknoir.pal create mode 100644 graphics/object_events/palettes/followers/electivire.pal create mode 100644 graphics/object_events/palettes/followers/empoleon.pal create mode 100644 graphics/object_events/palettes/followers/finneon.pal create mode 100644 graphics/object_events/palettes/followers/floatzel.pal create mode 100644 graphics/object_events/palettes/followers/froslass.pal create mode 100644 graphics/object_events/palettes/followers/gabite.pal create mode 100644 graphics/object_events/palettes/followers/gallade.pal create mode 100644 graphics/object_events/palettes/followers/garchomp.pal create mode 100644 graphics/object_events/palettes/followers/gastrodon_east.pal create mode 100644 graphics/object_events/palettes/followers/gastrodon_west.pal create mode 100644 graphics/object_events/palettes/followers/gible.pal create mode 100644 graphics/object_events/palettes/followers/giratina_normal.pal create mode 100644 graphics/object_events/palettes/followers/giratina_origin.pal create mode 100644 graphics/object_events/palettes/followers/glaceon.pal create mode 100644 graphics/object_events/palettes/followers/glameow.pal create mode 100644 graphics/object_events/palettes/followers/gliscor.pal create mode 100644 graphics/object_events/palettes/followers/grotle.pal create mode 100644 graphics/object_events/palettes/followers/happiny.pal create mode 100644 graphics/object_events/palettes/followers/heatran.pal create mode 100644 graphics/object_events/palettes/followers/hippopotas.pal create mode 100644 graphics/object_events/palettes/followers/hippowdon.pal create mode 100644 graphics/object_events/palettes/followers/honchkrow.pal create mode 100644 graphics/object_events/palettes/followers/infernape.pal create mode 100644 graphics/object_events/palettes/followers/kricketot.pal create mode 100644 graphics/object_events/palettes/followers/kricketune.pal create mode 100644 graphics/object_events/palettes/followers/leafeon.pal create mode 100644 graphics/object_events/palettes/followers/lickilicky.pal create mode 100644 graphics/object_events/palettes/followers/lopunny.pal create mode 100644 graphics/object_events/palettes/followers/lucario.pal create mode 100644 graphics/object_events/palettes/followers/lumineon.pal create mode 100644 graphics/object_events/palettes/followers/luxio.pal create mode 100644 graphics/object_events/palettes/followers/luxray.pal create mode 100644 graphics/object_events/palettes/followers/magmortar.pal create mode 100644 graphics/object_events/palettes/followers/magnezone.pal create mode 100644 graphics/object_events/palettes/followers/mamoswine.pal create mode 100644 graphics/object_events/palettes/followers/manaphy.pal create mode 100644 graphics/object_events/palettes/followers/mantyke.pal create mode 100644 graphics/object_events/palettes/followers/mesprit.pal create mode 100644 graphics/object_events/palettes/followers/mime_jr.pal create mode 100644 graphics/object_events/palettes/followers/mismagius.pal create mode 100644 graphics/object_events/palettes/followers/monferno.pal create mode 100644 graphics/object_events/palettes/followers/mothim.pal create mode 100644 graphics/object_events/palettes/followers/munchlax.pal create mode 100644 graphics/object_events/palettes/followers/pachirisu.pal create mode 100644 graphics/object_events/palettes/followers/palkia.pal create mode 100644 graphics/object_events/palettes/followers/phione.pal create mode 100644 graphics/object_events/palettes/followers/piplup.pal create mode 100644 graphics/object_events/palettes/followers/porygonz.pal create mode 100644 graphics/object_events/palettes/followers/prinplup.pal create mode 100644 graphics/object_events/palettes/followers/probopass.pal create mode 100644 graphics/object_events/palettes/followers/purugly.pal create mode 100644 graphics/object_events/palettes/followers/rampardos.pal create mode 100644 graphics/object_events/palettes/followers/regigigas.pal create mode 100644 graphics/object_events/palettes/followers/rhyperior.pal create mode 100644 graphics/object_events/palettes/followers/riolu.pal create mode 100644 graphics/object_events/palettes/followers/roserade.pal create mode 100644 graphics/object_events/palettes/followers/rotom_base.pal create mode 100644 graphics/object_events/palettes/followers/rotom_fan.pal create mode 100644 graphics/object_events/palettes/followers/rotom_frost.pal create mode 100644 graphics/object_events/palettes/followers/rotom_heat.pal create mode 100644 graphics/object_events/palettes/followers/rotom_mow.pal create mode 100644 graphics/object_events/palettes/followers/rotom_wash.pal create mode 100644 graphics/object_events/palettes/followers/shaymin_land.pal create mode 100644 graphics/object_events/palettes/followers/shaymin_sky.pal create mode 100644 graphics/object_events/palettes/followers/shellos_east.pal create mode 100644 graphics/object_events/palettes/followers/shellos_west.pal create mode 100644 graphics/object_events/palettes/followers/shieldon.pal create mode 100644 graphics/object_events/palettes/followers/shinx.pal create mode 100644 graphics/object_events/palettes/followers/skorupi.pal create mode 100644 graphics/object_events/palettes/followers/skuntank.pal create mode 100644 graphics/object_events/palettes/followers/snover.pal create mode 100644 graphics/object_events/palettes/followers/spiritomb.pal create mode 100644 graphics/object_events/palettes/followers/staraptor.pal create mode 100644 graphics/object_events/palettes/followers/staravia.pal create mode 100644 graphics/object_events/palettes/followers/starly.pal create mode 100644 graphics/object_events/palettes/followers/stunky.pal create mode 100644 graphics/object_events/palettes/followers/tangrowth.pal create mode 100644 graphics/object_events/palettes/followers/togekiss.pal create mode 100644 graphics/object_events/palettes/followers/torterra.pal create mode 100644 graphics/object_events/palettes/followers/toxicroak.pal create mode 100644 graphics/object_events/palettes/followers/turtwig.pal create mode 100644 graphics/object_events/palettes/followers/uxie.pal create mode 100644 graphics/object_events/palettes/followers/vespiquen.pal create mode 100644 graphics/object_events/palettes/followers/weavile.pal create mode 100644 graphics/object_events/palettes/followers/wormadam.pal create mode 100644 graphics/object_events/palettes/followers/wormadam_sand.pal create mode 100644 graphics/object_events/palettes/followers/wormadam_trash.pal create mode 100644 graphics/object_events/palettes/followers/yanmega.pal create mode 100644 graphics/object_events/pics/pokemon/followers/abomasnow.png create mode 100644 graphics/object_events/pics/pokemon/followers/ambipom.png create mode 100644 graphics/object_events/pics/pokemon/followers/arceus.png create mode 100644 graphics/object_events/pics/pokemon/followers/azelf.png create mode 100644 graphics/object_events/pics/pokemon/followers/bastiodon.png create mode 100644 graphics/object_events/pics/pokemon/followers/bibarel.png create mode 100644 graphics/object_events/pics/pokemon/followers/bidoof.png create mode 100644 graphics/object_events/pics/pokemon/followers/bonsly.png create mode 100644 graphics/object_events/pics/pokemon/followers/bronzong.png create mode 100644 graphics/object_events/pics/pokemon/followers/bronzor.png create mode 100644 graphics/object_events/pics/pokemon/followers/budew.png create mode 100644 graphics/object_events/pics/pokemon/followers/buizel.png create mode 100644 graphics/object_events/pics/pokemon/followers/buneary.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy_sand.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy_trash.png create mode 100644 graphics/object_events/pics/pokemon/followers/carnivine.png create mode 100644 graphics/object_events/pics/pokemon/followers/chatot.png create mode 100644 graphics/object_events/pics/pokemon/followers/cherrim.png create mode 100644 graphics/object_events/pics/pokemon/followers/cherubi.png create mode 100644 graphics/object_events/pics/pokemon/followers/chimchar.png create mode 100644 graphics/object_events/pics/pokemon/followers/chingling.png create mode 100644 graphics/object_events/pics/pokemon/followers/combee.png create mode 100644 graphics/object_events/pics/pokemon/followers/cranidos.png create mode 100644 graphics/object_events/pics/pokemon/followers/cresselia.png create mode 100644 graphics/object_events/pics/pokemon/followers/croagunk.png create mode 100644 graphics/object_events/pics/pokemon/followers/darkrai.png create mode 100644 graphics/object_events/pics/pokemon/followers/dialga.png create mode 100644 graphics/object_events/pics/pokemon/followers/drapion.png create mode 100644 graphics/object_events/pics/pokemon/followers/drifblim.png create mode 100644 graphics/object_events/pics/pokemon/followers/drifloon.png create mode 100644 graphics/object_events/pics/pokemon/followers/dusknoir.png create mode 100644 graphics/object_events/pics/pokemon/followers/electivire.png create mode 100644 graphics/object_events/pics/pokemon/followers/empoleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/finneon.png create mode 100644 graphics/object_events/pics/pokemon/followers/floatzel.png create mode 100644 graphics/object_events/pics/pokemon/followers/froslass.png create mode 100644 graphics/object_events/pics/pokemon/followers/gabite.png create mode 100644 graphics/object_events/pics/pokemon/followers/gallade.png create mode 100644 graphics/object_events/pics/pokemon/followers/garchomp.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_east.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_west.png create mode 100644 graphics/object_events/pics/pokemon/followers/gible.png create mode 100644 graphics/object_events/pics/pokemon/followers/giratina_normal.png create mode 100644 graphics/object_events/pics/pokemon/followers/giratina_origin.png create mode 100644 graphics/object_events/pics/pokemon/followers/glaceon.png create mode 100644 graphics/object_events/pics/pokemon/followers/glameow.png create mode 100644 graphics/object_events/pics/pokemon/followers/gliscor.png create mode 100644 graphics/object_events/pics/pokemon/followers/grotle.png create mode 100644 graphics/object_events/pics/pokemon/followers/happiny.png create mode 100644 graphics/object_events/pics/pokemon/followers/heatran.png create mode 100644 graphics/object_events/pics/pokemon/followers/hippopotas.png create mode 100644 graphics/object_events/pics/pokemon/followers/hippowdon.png create mode 100644 graphics/object_events/pics/pokemon/followers/honchkrow.png create mode 100644 graphics/object_events/pics/pokemon/followers/infernape.png create mode 100644 graphics/object_events/pics/pokemon/followers/kricketot.png create mode 100644 graphics/object_events/pics/pokemon/followers/kricketune.png create mode 100644 graphics/object_events/pics/pokemon/followers/leafeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/lickilicky.png create mode 100644 graphics/object_events/pics/pokemon/followers/lopunny.png create mode 100644 graphics/object_events/pics/pokemon/followers/lucario.png create mode 100644 graphics/object_events/pics/pokemon/followers/lumineon.png create mode 100644 graphics/object_events/pics/pokemon/followers/luxio.png create mode 100644 graphics/object_events/pics/pokemon/followers/luxray.png create mode 100644 graphics/object_events/pics/pokemon/followers/magmortar.png create mode 100644 graphics/object_events/pics/pokemon/followers/magnezone.png create mode 100644 graphics/object_events/pics/pokemon/followers/mamoswine.png create mode 100644 graphics/object_events/pics/pokemon/followers/manaphy.png create mode 100644 graphics/object_events/pics/pokemon/followers/mantyke.png create mode 100644 graphics/object_events/pics/pokemon/followers/mesprit.png create mode 100644 graphics/object_events/pics/pokemon/followers/mime_jr.png create mode 100644 graphics/object_events/pics/pokemon/followers/mismagius.png create mode 100644 graphics/object_events/pics/pokemon/followers/monferno.png create mode 100644 graphics/object_events/pics/pokemon/followers/mothim.png create mode 100644 graphics/object_events/pics/pokemon/followers/munchlax.png create mode 100644 graphics/object_events/pics/pokemon/followers/pachirisu.png create mode 100644 graphics/object_events/pics/pokemon/followers/palkia.png create mode 100644 graphics/object_events/pics/pokemon/followers/phione.png create mode 100644 graphics/object_events/pics/pokemon/followers/piplup.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygonz.png create mode 100644 graphics/object_events/pics/pokemon/followers/prinplup.png create mode 100644 graphics/object_events/pics/pokemon/followers/probopass.png create mode 100644 graphics/object_events/pics/pokemon/followers/purugly.png create mode 100644 graphics/object_events/pics/pokemon/followers/rampardos.png create mode 100644 graphics/object_events/pics/pokemon/followers/regigigas.png create mode 100644 graphics/object_events/pics/pokemon/followers/rhyperior.png create mode 100644 graphics/object_events/pics/pokemon/followers/riolu.png create mode 100644 graphics/object_events/pics/pokemon/followers/roserade.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_base.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_fan.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_frost.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_heat.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_mow.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_wash.png create mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_land.png create mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_sky.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellos_east.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellos_west.png create mode 100644 graphics/object_events/pics/pokemon/followers/shieldon.png create mode 100644 graphics/object_events/pics/pokemon/followers/shinx.png create mode 100644 graphics/object_events/pics/pokemon/followers/skorupi.png create mode 100644 graphics/object_events/pics/pokemon/followers/skuntank.png create mode 100644 graphics/object_events/pics/pokemon/followers/snover.png create mode 100644 graphics/object_events/pics/pokemon/followers/spiritomb.png create mode 100644 graphics/object_events/pics/pokemon/followers/staraptor.png create mode 100644 graphics/object_events/pics/pokemon/followers/staravia.png create mode 100644 graphics/object_events/pics/pokemon/followers/starly.png create mode 100644 graphics/object_events/pics/pokemon/followers/stunky.png create mode 100644 graphics/object_events/pics/pokemon/followers/tangrowth.png create mode 100644 graphics/object_events/pics/pokemon/followers/togekiss.png create mode 100644 graphics/object_events/pics/pokemon/followers/torterra.png create mode 100644 graphics/object_events/pics/pokemon/followers/toxicroak.png create mode 100644 graphics/object_events/pics/pokemon/followers/turtwig.png create mode 100644 graphics/object_events/pics/pokemon/followers/uxie.png create mode 100644 graphics/object_events/pics/pokemon/followers/vespiquen.png create mode 100644 graphics/object_events/pics/pokemon/followers/weavile.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_sand.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_trash.png create mode 100644 graphics/object_events/pics/pokemon/followers/yanmega.png diff --git a/gflib/sprite.c b/gflib/sprite.c index 411e7d3b8..07ac316e3 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -1017,6 +1017,10 @@ bool8 IsFlyingPokemonGraphic(u16 graphicsId) case OBJ_EVENT_GFX_KYOGRE: case OBJ_EVENT_GFX_LATIAS_FOLLOWER: case OBJ_EVENT_GFX_LATIOS_FOLLOWER: + case OBJ_EVENT_GFX_STARAVIA: + case OBJ_EVENT_GFX_STARAPTOR: + case OBJ_EVENT_GFX_MOTHIM: + case OBJ_EVENT_GFX_TOGEKISS: return TRUE; default: return FALSE; diff --git a/graphics/object_events/palettes/followers/abomasnow.pal b/graphics/object_events/palettes/followers/abomasnow.pal new file mode 100644 index 000000000..ddb58d170 --- /dev/null +++ b/graphics/object_events/palettes/followers/abomasnow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 65 +193 137 209 +121 121 153 +185 193 209 +49 73 57 +1 1 1 +217 217 233 +49 153 73 +161 169 201 +81 81 81 +233 233 249 +145 121 153 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ambipom.pal b/graphics/object_events/palettes/followers/ambipom.pal new file mode 100644 index 000000000..c4b6f24dc --- /dev/null +++ b/graphics/object_events/palettes/followers/ambipom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 97 +217 201 145 +201 73 105 +97 81 65 +169 129 241 +185 201 225 +1 1 1 +153 105 201 +57 49 97 +105 65 153 +233 233 249 +97 97 97 +233 217 161 +201 177 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_bug.pal b/graphics/object_events/palettes/followers/arceus_bug.pal new file mode 100644 index 000000000..5b16119d2 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_bug.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 113 201 +121 129 145 +49 89 41 +145 217 121 +201 209 225 +89 97 113 +249 161 249 +41 97 41 +161 177 201 +113 161 57 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dark.pal b/graphics/object_events/palettes/followers/arceus_dark.pal new file mode 100644 index 000000000..411065d58 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_dark.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +16 136 0 +88 56 56 +32 40 48 +72 80 96 +200 208 224 +56 32 32 +0 142 15 +248 128 3 +160 176 200 +24 40 56 +16 48 64 +64 72 72 +112 120 144 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dragon.pal b/graphics/object_events/palettes/followers/arceus_dragon.pal new file mode 100644 index 000000000..5ba8310c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_dragon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 9 0 +96 136 120 +112 8 128 +176 80 216 +201 209 225 +64 104 88 +0 14 0 +192 128 3 +161 177 201 +144 32 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_electric.pal b/graphics/object_events/palettes/followers/arceus_electric.pal new file mode 100644 index 000000000..a3efd313c --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_electric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +200 96 0 +136 128 88 +128 112 0 +248 232 88 +201 209 225 +112 96 56 +232 128 0 +192 128 3 +161 177 201 +216 192 56 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fighting.pal b/graphics/object_events/palettes/followers/arceus_fighting.pal new file mode 100644 index 000000000..c81b5a5b1 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_fighting.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +176 112 0 +121 129 145 +104 24 8 +192 88 32 +201 209 225 +89 97 113 +232 176 0 +192 128 3 +161 177 201 +152 56 32 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fire.pal b/graphics/object_events/palettes/followers/arceus_fire.pal new file mode 100644 index 000000000..f8b616e47 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_fire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +200 120 0 +144 96 88 +160 24 16 +240 96 16 +201 209 225 +128 32 32 +248 224 0 +192 128 3 +161 177 201 +208 48 16 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_flying.pal b/graphics/object_events/palettes/followers/arceus_flying.pal new file mode 100644 index 000000000..fceaad45d --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_flying.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +160 160 168 +121 129 145 +72 80 136 +144 152 208 +201 209 225 +89 97 113 +232 240 240 +40 128 152 +161 177 201 +104 112 168 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ghost.pal b/graphics/object_events/palettes/followers/arceus_ghost.pal new file mode 100644 index 000000000..d114a0e09 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ghost.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +160 32 0 +104 80 144 +88 40 144 +160 96 224 +201 209 225 +80 48 136 +232 64 0 +248 248 56 +161 177 201 +120 80 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_grass.pal b/graphics/object_events/palettes/followers/arceus_grass.pal new file mode 100644 index 000000000..410680501 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_grass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +192 176 0 +88 144 112 +40 104 48 +88 200 56 +201 209 225 +56 112 80 +248 224 0 +192 128 3 +161 177 201 +64 152 48 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ground.pal b/graphics/object_events/palettes/followers/arceus_ground.pal new file mode 100644 index 000000000..05cb67bd0 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ground.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 128 144 +136 112 80 +136 64 0 +192 136 56 +201 209 225 +104 88 56 +176 176 192 +192 128 3 +161 177 201 +168 104 24 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ice.pal b/graphics/object_events/palettes/followers/arceus_ice.pal new file mode 100644 index 000000000..ca2c82422 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 128 136 +72 136 168 +40 96 128 +160 248 248 +201 209 225 +40 96 128 +224 224 232 +192 128 3 +161 177 201 +120 192 248 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_normal.pal b/graphics/object_events/palettes/followers/arceus_normal.pal new file mode 100644 index 000000000..27bb0d302 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 129 65 +121 129 145 +105 97 25 +233 209 25 +201 209 225 +89 97 113 +57 177 89 +241 65 65 +161 177 201 +177 153 25 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_poison.pal b/graphics/object_events/palettes/followers/arceus_poison.pal new file mode 100644 index 000000000..6822a6e3c --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_poison.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +192 96 208 +121 129 145 +80 24 96 +176 96 184 +201 209 225 +89 97 113 +240 160 232 +192 128 3 +161 177 201 +128 48 144 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_psychic.pal b/graphics/object_events/palettes/followers/arceus_psychic.pal new file mode 100644 index 000000000..ccbce5040 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_psychic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 9 0 +121 129 145 +152 0 3 +232 72 112 +201 209 225 +89 97 113 +0 14 0 +192 128 3 +161 177 201 +192 24 72 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_rock.pal b/graphics/object_events/palettes/followers/arceus_rock.pal new file mode 100644 index 000000000..0f0209f19 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_rock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +176 152 80 +121 129 145 +96 88 48 +144 136 96 +201 209 225 +89 97 113 +216 192 120 +64 80 64 +161 177 201 +112 104 64 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_steel.pal b/graphics/object_events/palettes/followers/arceus_steel.pal new file mode 100644 index 000000000..0720ec239 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_steel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +168 160 0 +121 129 145 +88 88 96 +192 192 208 +201 209 225 +89 97 113 +232 224 0 +96 104 96 +161 177 201 +128 128 136 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_water.pal b/graphics/object_events/palettes/followers/arceus_water.pal new file mode 100644 index 000000000..7abe36e2f --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_water.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +48 128 64 +72 112 192 +16 56 112 +24 128 232 +201 209 225 +40 104 136 +56 176 88 +240 64 64 +161 177 201 +16 120 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/azelf.pal b/graphics/object_events/palettes/followers/azelf.pal new file mode 100644 index 000000000..300aab16d --- /dev/null +++ b/graphics/object_events/palettes/followers/azelf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 33 +113 129 177 +33 65 113 +145 185 209 +169 41 1 +1 1 1 +249 169 153 +49 113 177 +73 73 89 +249 177 17 +233 233 249 +33 89 169 +233 65 33 +177 209 249 +73 129 209 diff --git a/graphics/object_events/palettes/followers/bastiodon.pal b/graphics/object_events/palettes/followers/bastiodon.pal new file mode 100644 index 000000000..7285edf74 --- /dev/null +++ b/graphics/object_events/palettes/followers/bastiodon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 105 73 +121 121 121 +225 169 33 +57 57 57 +1 1 1 +249 185 65 +97 97 97 +193 145 49 +201 201 201 +153 153 153 +73 73 73 +249 185 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bibarel.pal b/graphics/object_events/palettes/followers/bibarel.pal new file mode 100644 index 000000000..8c6e3b227 --- /dev/null +++ b/graphics/object_events/palettes/followers/bibarel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 65 +185 185 193 +1 1 1 +73 57 33 +137 137 137 +193 161 65 +89 81 65 +49 49 49 +233 233 249 +153 25 41 +233 209 129 +201 161 97 +177 137 57 +57 57 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bidoof.pal b/graphics/object_events/palettes/followers/bidoof.pal new file mode 100644 index 000000000..3d8d227c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/bidoof.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 65 +185 185 193 +73 57 33 +1 1 1 +193 161 65 +89 81 65 +153 25 41 +233 233 249 +233 209 129 +201 161 97 +57 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bonsly.pal b/graphics/object_events/palettes/followers/bonsly.pal new file mode 100644 index 000000000..50e1d53b2 --- /dev/null +++ b/graphics/object_events/palettes/followers/bonsly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 113 73 +201 169 1 +193 97 161 +25 81 17 +1 1 1 +73 153 65 +89 65 17 +225 193 1 +185 153 89 +121 209 121 +113 89 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzong.pal b/graphics/object_events/palettes/followers/bronzong.pal new file mode 100644 index 000000000..978ed89dc --- /dev/null +++ b/graphics/object_events/palettes/followers/bronzong.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 113 105 +73 161 153 +33 57 49 +153 169 169 +129 49 57 +49 137 129 +49 97 89 +1 1 1 +145 193 201 +97 153 153 +41 73 65 +161 49 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzor.pal b/graphics/object_events/palettes/followers/bronzor.pal new file mode 100644 index 000000000..9db457be9 --- /dev/null +++ b/graphics/object_events/palettes/followers/bronzor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 17 +65 121 153 +41 65 65 +1 1 1 +33 81 97 +73 153 193 +233 201 1 +41 97 121 +89 177 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/budew.pal b/graphics/object_events/palettes/followers/budew.pal new file mode 100644 index 000000000..381d462e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/budew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 9 +217 209 57 +33 57 17 +145 113 33 +1 1 1 +65 65 65 +145 201 105 +89 145 17 +201 153 17 +169 217 145 +33 81 9 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/buizel.pal b/graphics/object_events/palettes/followers/buizel.pal new file mode 100644 index 000000000..bed60a6b3 --- /dev/null +++ b/graphics/object_events/palettes/followers/buizel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +1 1 1 +161 97 41 +241 225 129 +249 193 33 +65 97 121 +177 193 209 +89 57 49 +73 137 193 +233 233 249 +217 185 73 +201 145 1 +113 113 113 +201 105 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/buneary.pal b/graphics/object_events/palettes/followers/buneary.pal new file mode 100644 index 000000000..1e81873ab --- /dev/null +++ b/graphics/object_events/palettes/followers/buneary.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 65 +233 217 169 +201 161 65 +57 49 33 +97 81 65 +209 121 121 +1 1 1 +145 81 89 +233 233 249 +185 145 89 +233 193 137 +81 81 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy.pal b/graphics/object_events/palettes/followers/burmy.pal new file mode 100644 index 000000000..3d8350f7d --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +81 169 25 +41 73 41 +1 1 1 +249 177 1 +49 49 49 +185 121 65 +137 209 57 +97 97 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_sand.pal b/graphics/object_events/palettes/followers/burmy_sand.pal new file mode 100644 index 000000000..b25ba769d --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy_sand.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 177 1 +153 145 97 +201 193 137 +97 81 65 +161 161 161 +49 49 49 +1 1 1 +233 217 137 +97 97 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_trash.pal b/graphics/object_events/palettes/followers/burmy_trash.pal new file mode 100644 index 000000000..2471c2b33 --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy_trash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 177 1 +97 97 97 +1 1 1 +97 49 65 +137 137 137 +49 49 49 +249 169 169 +169 57 105 +217 121 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/carnivine.pal b/graphics/object_events/palettes/followers/carnivine.pal new file mode 100644 index 000000000..7eed39a29 --- /dev/null +++ b/graphics/object_events/palettes/followers/carnivine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +177 185 193 +41 73 17 +129 169 65 +81 97 41 +201 153 17 +73 145 25 +145 73 49 +233 233 249 +105 41 41 +1 1 1 +153 201 89 +57 57 57 +137 97 25 +105 137 49 diff --git a/graphics/object_events/palettes/followers/chatot.pal b/graphics/object_events/palettes/followers/chatot.pal new file mode 100644 index 000000000..c61576eaf --- /dev/null +++ b/graphics/object_events/palettes/followers/chatot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 137 33 +33 129 201 +57 57 57 +129 121 121 +33 81 113 +233 233 249 +161 129 9 +217 129 177 +1 1 1 +145 57 113 +249 169 25 +89 89 89 +153 161 169 +177 57 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cherrim.pal b/graphics/object_events/palettes/followers/cherrim.pal new file mode 100644 index 000000000..4c7ecbf5d --- /dev/null +++ b/graphics/object_events/palettes/followers/cherrim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 97 17 +113 65 137 +81 41 57 +81 65 97 +81 153 25 +153 73 193 +185 73 121 +65 41 73 +1 1 1 +129 57 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cherubi.pal b/graphics/object_events/palettes/followers/cherubi.pal new file mode 100644 index 000000000..7aa77baf7 --- /dev/null +++ b/graphics/object_events/palettes/followers/cherubi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +41 73 17 +233 233 249 +129 57 89 +81 41 57 +1 1 1 +225 97 145 +73 153 17 +177 25 97 +185 73 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chimchar.pal b/graphics/object_events/palettes/followers/chimchar.pal new file mode 100644 index 000000000..1226c2a99 --- /dev/null +++ b/graphics/object_events/palettes/followers/chimchar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +105 57 41 +1 1 1 +241 57 41 +193 145 73 +193 193 193 +129 81 41 +185 97 17 +249 233 169 +249 193 1 +233 233 249 +217 185 113 +129 17 17 +209 81 65 +161 89 81 diff --git a/graphics/object_events/palettes/followers/chingling.pal b/graphics/object_events/palettes/followers/chingling.pal new file mode 100644 index 000000000..c027c84d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/chingling.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 41 +1 1 1 +65 65 65 +193 201 209 +137 105 33 +249 193 1 +225 233 241 +137 25 25 +249 249 153 +193 57 57 +89 89 89 +249 225 9 +233 233 249 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/combee.pal b/graphics/object_events/palettes/followers/combee.pal new file mode 100644 index 000000000..53ea130b4 --- /dev/null +++ b/graphics/object_events/palettes/followers/combee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 25 +73 65 41 +153 185 233 +89 105 129 +249 217 121 +153 105 17 +1 1 1 +169 89 49 +49 49 49 +233 177 57 +201 217 233 +201 105 41 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cranidos.pal b/graphics/object_events/palettes/followers/cranidos.pal new file mode 100644 index 000000000..7a36c9215 --- /dev/null +++ b/graphics/object_events/palettes/followers/cranidos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +113 113 113 +201 201 201 +57 57 57 +89 129 233 +145 9 3 +1 1 1 +65 89 153 +233 233 249 +49 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cresselia.pal b/graphics/object_events/palettes/followers/cresselia.pal new file mode 100644 index 000000000..549a1ca73 --- /dev/null +++ b/graphics/object_events/palettes/followers/cresselia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 73 +81 105 161 +89 145 225 +81 65 33 +249 233 169 +1 1 1 +161 73 113 +105 89 57 +105 41 57 +249 169 225 +233 233 249 +217 105 169 +241 193 97 +65 65 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/croagunk.pal b/graphics/object_events/palettes/followers/croagunk.pal new file mode 100644 index 000000000..6e43319e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/croagunk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 129 9 +129 129 129 +57 73 129 +193 89 1 +1 1 1 +249 217 57 +49 49 49 +193 153 1 +201 201 201 +89 129 209 +49 97 193 +49 49 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/darkrai.pal b/graphics/object_events/palettes/followers/darkrai.pal new file mode 100644 index 000000000..a379b5238 --- /dev/null +++ b/graphics/object_events/palettes/followers/darkrai.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 169 +65 65 81 +249 249 249 +49 153 193 +153 49 65 +249 73 65 +49 49 49 +1 1 1 +193 193 225 +97 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dialga.pal b/graphics/object_events/palettes/followers/dialga.pal new file mode 100644 index 000000000..0a252f361 --- /dev/null +++ b/graphics/object_events/palettes/followers/dialga.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +17 17 17 +33 65 105 +185 201 217 +185 33 17 +97 161 193 +97 121 137 +217 233 249 +41 57 73 +241 81 65 +65 129 249 +137 161 177 +33 89 145 +57 121 177 +153 209 241 +0 0 0 diff --git a/graphics/object_events/palettes/followers/drapion.pal b/graphics/object_events/palettes/followers/drapion.pal new file mode 100644 index 000000000..5c02aa8d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/drapion.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +33 121 113 +105 65 113 +177 185 193 +49 41 57 +169 137 201 +41 161 153 +129 89 169 +73 49 81 +233 233 249 +1 1 1 +33 33 41 +121 129 137 +81 33 73 +145 97 161 +0 0 0 diff --git a/graphics/object_events/palettes/followers/drifblim.pal b/graphics/object_events/palettes/followers/drifblim.pal new file mode 100644 index 000000000..1cd025435 --- /dev/null +++ b/graphics/object_events/palettes/followers/drifblim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 57 +89 65 121 +153 121 225 +217 17 41 +49 49 49 +129 129 153 +129 97 185 +89 89 113 +233 233 249 +209 177 89 +1 1 1 +169 161 201 +105 17 25 +65 65 65 +105 105 129 diff --git a/graphics/object_events/palettes/followers/drifloon.pal b/graphics/object_events/palettes/followers/drifloon.pal new file mode 100644 index 000000000..57bb7a2ff --- /dev/null +++ b/graphics/object_events/palettes/followers/drifloon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 57 +169 137 225 +89 65 121 +225 177 89 +233 233 249 +129 97 185 +65 65 65 +169 161 201 +1 1 1 +89 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dusknoir.pal b/graphics/object_events/palettes/followers/dusknoir.pal new file mode 100644 index 000000000..35fe7b837 --- /dev/null +++ b/graphics/object_events/palettes/followers/dusknoir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 97 9 +121 121 121 +49 49 49 +1 1 1 +241 177 1 +145 33 33 +201 129 17 +209 97 97 +81 81 81 +161 161 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/electivire.pal b/graphics/object_events/palettes/followers/electivire.pal new file mode 100644 index 000000000..85b21aa79 --- /dev/null +++ b/graphics/object_events/palettes/followers/electivire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 17 +65 57 33 +145 145 145 +177 9 3 +89 89 89 +193 193 209 +49 49 49 +241 209 1 +249 233 121 +241 97 113 +233 233 249 +73 25 33 +113 89 25 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/empoleon.pal b/graphics/object_events/palettes/followers/empoleon.pal new file mode 100644 index 000000000..8ebe2c905 --- /dev/null +++ b/graphics/object_events/palettes/followers/empoleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 137 25 +81 129 161 +57 57 97 +121 193 241 +97 81 33 +1 1 1 +233 233 249 +41 41 41 +249 201 89 +65 73 145 +185 193 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/finneon.pal b/graphics/object_events/palettes/followers/finneon.pal new file mode 100644 index 000000000..b5bd33caf --- /dev/null +++ b/graphics/object_events/palettes/followers/finneon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 161 +49 57 65 +1 1 1 +73 97 97 +169 65 113 +161 209 217 +105 1 1 +241 121 161 +249 185 209 +49 73 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/floatzel.pal b/graphics/object_events/palettes/followers/floatzel.pal new file mode 100644 index 000000000..eccd4ed4b --- /dev/null +++ b/graphics/object_events/palettes/followers/floatzel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 129 1 +129 65 33 +73 137 193 +89 89 89 +241 225 129 +161 97 1 +249 193 33 +1 1 1 +233 233 249 +57 49 41 +169 185 201 +209 185 97 +233 113 49 +65 97 121 +185 73 33 diff --git a/graphics/object_events/palettes/followers/froslass.pal b/graphics/object_events/palettes/followers/froslass.pal new file mode 100644 index 000000000..07f7c145f --- /dev/null +++ b/graphics/object_events/palettes/followers/froslass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 225 9 +57 121 153 +81 41 81 +193 201 217 +89 161 201 +65 65 65 +153 153 153 +41 73 89 +1 1 1 +193 57 33 +233 233 249 +129 73 129 +153 161 177 +113 121 137 +121 65 57 diff --git a/graphics/object_events/palettes/followers/gabite.pal b/graphics/object_events/palettes/followers/gabite.pal new file mode 100644 index 000000000..77ded75c3 --- /dev/null +++ b/graphics/object_events/palettes/followers/gabite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 9 +153 153 153 +41 49 97 +233 233 249 +121 137 209 +105 105 105 +129 49 17 +1 1 1 +249 225 9 +81 113 185 +177 177 233 +57 81 121 +105 145 193 +185 65 25 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gallade.pal b/graphics/object_events/palettes/followers/gallade.pal new file mode 100644 index 000000000..7cd2a4e39 --- /dev/null +++ b/graphics/object_events/palettes/followers/gallade.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 145 49 +3 84 13 +137 137 153 +73 73 81 +129 33 57 +31 110 20 +105 201 225 +34 34 34 +1 1 1 +25 185 201 +205 205 219 +233 233 249 +25 105 97 +49 177 65 +185 49 73 diff --git a/graphics/object_events/palettes/followers/garchomp.pal b/graphics/object_events/palettes/followers/garchomp.pal new file mode 100644 index 000000000..3ef28d97b --- /dev/null +++ b/graphics/object_events/palettes/followers/garchomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 1 +185 65 25 +1 1 1 +201 201 209 +73 81 121 +49 49 81 +169 169 169 +97 113 161 +249 225 9 +129 49 17 +233 233 249 +121 153 201 +105 105 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_east.pal b/graphics/object_events/palettes/followers/gastrodon_east.pal new file mode 100644 index 000000000..bbaf701c0 --- /dev/null +++ b/graphics/object_events/palettes/followers/gastrodon_east.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 121 41 +49 113 129 +249 209 89 +1 1 1 +49 49 49 +145 121 49 +41 153 185 +49 81 49 +185 185 201 +201 161 1 +65 185 233 +89 161 65 +33 73 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_west.pal b/graphics/object_events/palettes/followers/gastrodon_west.pal new file mode 100644 index 000000000..ad3e3ec2d --- /dev/null +++ b/graphics/object_events/palettes/followers/gastrodon_west.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 49 +113 73 57 +201 121 169 +49 49 49 +1 1 1 +249 209 89 +153 97 129 +73 49 41 +201 161 1 +185 185 201 +233 153 217 +161 105 65 +81 41 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gible.pal b/graphics/object_events/palettes/followers/gible.pal new file mode 100644 index 000000000..0f9c39f2b --- /dev/null +++ b/graphics/object_events/palettes/followers/gible.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 137 +137 193 217 +57 57 57 +1 1 1 +185 65 25 +105 169 169 +33 41 49 +153 153 153 +225 225 225 +49 89 89 +113 169 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_normal.pal b/graphics/object_events/palettes/followers/giratina_normal.pal new file mode 100644 index 000000000..81030443f --- /dev/null +++ b/graphics/object_events/palettes/followers/giratina_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 25 +105 97 25 +17 17 17 +169 49 65 +89 89 113 +249 249 209 +57 65 65 +137 137 169 +233 209 25 +241 81 65 +169 177 201 +113 113 145 +41 41 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_origin.pal b/graphics/object_events/palettes/followers/giratina_origin.pal new file mode 100644 index 000000000..5b5e3d16c --- /dev/null +++ b/graphics/object_events/palettes/followers/giratina_origin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 25 +169 49 65 +145 145 145 +97 81 17 +249 249 209 +17 17 17 +57 57 57 +41 41 41 +233 209 25 +241 81 65 +185 185 185 +81 81 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/glaceon.pal b/graphics/object_events/palettes/followers/glaceon.pal new file mode 100644 index 000000000..37de2af57 --- /dev/null +++ b/graphics/object_events/palettes/followers/glaceon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 145 137 +113 201 225 +49 153 177 +49 65 81 +137 225 233 +1 1 1 +25 97 113 +209 225 233 +81 185 217 +41 153 169 +177 233 249 +33 105 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/glameow.pal b/graphics/object_events/palettes/followers/glameow.pal new file mode 100644 index 000000000..676585d12 --- /dev/null +++ b/graphics/object_events/palettes/followers/glameow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 41 +17 33 105 +153 153 153 +113 113 113 +129 129 129 +233 233 249 +49 49 49 +177 57 105 +209 97 177 +193 193 193 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gliscor.pal b/graphics/object_events/palettes/followers/gliscor.pal new file mode 100644 index 000000000..e9e50885f --- /dev/null +++ b/graphics/object_events/palettes/followers/gliscor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 1 +65 65 65 +1 1 1 +33 41 89 +137 137 209 +121 25 17 +97 97 97 +153 153 153 +249 217 57 +33 33 33 +153 169 225 +105 33 81 +169 41 25 +169 169 169 +97 97 113 diff --git a/graphics/object_events/palettes/followers/grotle.pal b/graphics/object_events/palettes/followers/grotle.pal new file mode 100644 index 000000000..d646bba5d --- /dev/null +++ b/graphics/object_events/palettes/followers/grotle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 161 49 +169 177 201 +129 201 49 +81 73 57 +97 177 81 +153 113 57 +105 89 73 +201 145 25 +233 233 249 +161 225 113 +225 185 41 +1 1 1 +73 73 73 +57 81 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/happiny.pal b/graphics/object_events/palettes/followers/happiny.pal new file mode 100644 index 000000000..2d1c97537 --- /dev/null +++ b/graphics/object_events/palettes/followers/happiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 129 161 +121 73 89 +169 185 209 +193 73 97 +1 1 1 +217 97 113 +97 33 41 +233 233 249 +249 177 193 +185 97 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/heatran.pal b/graphics/object_events/palettes/followers/heatran.pal new file mode 100644 index 000000000..d1a451452 --- /dev/null +++ b/graphics/object_events/palettes/followers/heatran.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 121 1 +49 57 81 +129 129 137 +241 81 65 +169 41 33 +97 65 65 +193 193 209 +65 25 41 +233 233 249 +1 1 1 +177 105 89 +233 153 1 +73 81 97 +41 41 41 +137 65 65 diff --git a/graphics/object_events/palettes/followers/hippopotas.pal b/graphics/object_events/palettes/followers/hippopotas.pal new file mode 100644 index 000000000..874dfa505 --- /dev/null +++ b/graphics/object_events/palettes/followers/hippopotas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 57 +185 185 193 +209 177 57 +73 57 33 +1 1 1 +137 137 137 +137 89 57 +185 121 81 +233 233 249 +225 201 113 +209 177 81 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hippowdon.pal b/graphics/object_events/palettes/followers/hippowdon.pal new file mode 100644 index 000000000..70e70b15c --- /dev/null +++ b/graphics/object_events/palettes/followers/hippowdon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 57 +153 153 153 +73 73 73 +1 1 1 +201 201 209 +97 97 97 +49 49 49 +209 177 81 +193 57 81 +169 169 169 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/honchkrow.pal b/graphics/object_events/palettes/followers/honchkrow.pal new file mode 100644 index 000000000..5fa8b9fed --- /dev/null +++ b/graphics/object_events/palettes/followers/honchkrow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 129 1 +81 65 49 +33 41 49 +1 1 1 +113 113 113 +201 201 201 +169 1 1 +41 65 105 +249 225 9 +233 233 249 +169 169 177 +57 89 113 +121 17 17 +57 57 57 +49 57 73 diff --git a/graphics/object_events/palettes/followers/infernape.pal b/graphics/object_events/palettes/followers/infernape.pal new file mode 100644 index 000000000..52928407c --- /dev/null +++ b/graphics/object_events/palettes/followers/infernape.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 1 +25 89 177 +65 65 65 +1 1 1 +145 25 25 +193 65 33 +217 217 217 +201 57 89 +225 113 81 +249 209 1 +241 57 41 +129 57 33 +169 169 169 +233 233 249 +105 73 57 diff --git a/graphics/object_events/palettes/followers/kricketot.pal b/graphics/object_events/palettes/followers/kricketot.pal new file mode 100644 index 000000000..87aa0b9e7 --- /dev/null +++ b/graphics/object_events/palettes/followers/kricketot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 73 +97 65 33 +105 105 105 +233 233 249 +81 41 25 +1 1 1 +145 73 25 +137 57 33 +241 209 145 +225 113 89 +225 161 81 +169 81 57 +57 57 57 +185 89 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kricketune.pal b/graphics/object_events/palettes/followers/kricketune.pal new file mode 100644 index 000000000..ff9b89ab8 --- /dev/null +++ b/graphics/object_events/palettes/followers/kricketune.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 73 +97 65 33 +81 81 81 +233 233 249 +1 1 1 +81 41 25 +145 73 25 +225 113 89 +241 209 145 +137 57 33 +225 161 81 +105 105 105 +169 81 57 +57 57 57 +185 89 33 diff --git a/graphics/object_events/palettes/followers/leafeon.pal b/graphics/object_events/palettes/followers/leafeon.pal new file mode 100644 index 000000000..3bc4ad631 --- /dev/null +++ b/graphics/object_events/palettes/followers/leafeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 145 81 +209 225 233 +129 193 97 +113 81 33 +97 161 97 +241 217 161 +81 49 25 +169 137 81 +1 1 1 +217 185 89 +153 105 49 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lickilicky.pal b/graphics/object_events/palettes/followers/lickilicky.pal new file mode 100644 index 000000000..ca5da8adf --- /dev/null +++ b/graphics/object_events/palettes/followers/lickilicky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 145 +233 185 201 +81 81 81 +1 1 1 +193 81 113 +233 233 249 +73 49 49 +209 137 169 +153 65 89 +161 161 161 +201 201 209 +169 89 137 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lopunny.pal b/graphics/object_events/palettes/followers/lopunny.pal new file mode 100644 index 000000000..3439e8e36 --- /dev/null +++ b/graphics/object_events/palettes/followers/lopunny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 65 +1 1 1 +97 81 65 +209 121 121 +145 81 89 +201 169 105 +129 97 57 +57 50 34 +249 169 169 +233 217 169 +169 129 89 +81 81 74 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lucario.pal b/graphics/object_events/palettes/followers/lucario.pal new file mode 100644 index 000000000..c4f6ce113 --- /dev/null +++ b/graphics/object_events/palettes/followers/lucario.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 57 +49 57 89 +73 137 193 +97 97 97 +233 233 249 +153 25 49 +233 185 81 +121 97 41 +169 185 201 +41 41 41 +1 1 1 +57 105 145 +113 185 241 +73 73 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lumineon.pal b/graphics/object_events/palettes/followers/lumineon.pal new file mode 100644 index 000000000..4c230e65d --- /dev/null +++ b/graphics/object_events/palettes/followers/lumineon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 57 65 +73 97 97 +161 209 217 +169 65 113 +105 1 1 +97 145 185 +49 73 65 +89 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luxio.pal b/graphics/object_events/palettes/followers/luxio.pal new file mode 100644 index 000000000..154c28461 --- /dev/null +++ b/graphics/object_events/palettes/followers/luxio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 145 33 +73 65 25 +81 145 185 +89 89 89 +169 89 17 +1 1 1 +233 233 249 +41 41 41 +249 209 25 +113 177 217 +209 81 65 +65 65 65 +49 81 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luxray.pal b/graphics/object_events/palettes/followers/luxray.pal new file mode 100644 index 000000000..1f68542b9 --- /dev/null +++ b/graphics/object_events/palettes/followers/luxray.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 17 +73 65 25 +65 129 169 +209 81 65 +33 81 105 +81 169 217 +185 33 17 +249 209 25 +1 1 1 +41 41 41 +209 145 33 +129 193 233 +65 65 65 +89 89 89 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magmortar.pal b/graphics/object_events/palettes/followers/magmortar.pal new file mode 100644 index 000000000..fa810f47e --- /dev/null +++ b/graphics/object_events/palettes/followers/magmortar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 17 +185 57 25 +145 145 145 +73 81 81 +193 193 209 +49 49 49 +169 105 1 +1 1 1 +241 209 1 +233 233 249 +137 73 89 +105 1 1 +193 97 105 +225 137 153 +241 73 33 diff --git a/graphics/object_events/palettes/followers/magnezone.pal b/graphics/object_events/palettes/followers/magnezone.pal new file mode 100644 index 000000000..e0a5e0a78 --- /dev/null +++ b/graphics/object_events/palettes/followers/magnezone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 57 +105 129 145 +49 65 73 +185 185 193 +113 113 121 +217 1 1 +1 1 1 +153 153 153 +249 225 9 +57 57 57 +233 233 249 +185 73 73 +153 169 185 +81 81 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mamoswine.pal b/graphics/object_events/palettes/followers/mamoswine.pal new file mode 100644 index 000000000..13ed3cce7 --- /dev/null +++ b/graphics/object_events/palettes/followers/mamoswine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 33 +130 137 145 +105 65 41 +185 193 209 +41 113 145 +201 169 105 +57 41 17 +73 169 217 +201 97 113 +233 233 249 +137 57 73 +137 89 57 +169 121 81 +1 1 1 +65 65 65 diff --git a/graphics/object_events/palettes/followers/manaphy.pal b/graphics/object_events/palettes/followers/manaphy.pal new file mode 100644 index 000000000..ff66198ec --- /dev/null +++ b/graphics/object_events/palettes/followers/manaphy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 9 +81 129 233 +193 65 105 +1 1 1 +233 233 249 +25 73 161 +65 65 65 +129 161 241 +249 209 97 +65 97 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mantyke.pal b/graphics/object_events/palettes/followers/mantyke.pal new file mode 100644 index 000000000..599f852fb --- /dev/null +++ b/graphics/object_events/palettes/followers/mantyke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +145 65 57 +113 193 241 +9 89 137 +185 225 249 +97 97 105 +17 49 97 +33 121 249 +233 233 249 +153 193 225 +17 97 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mesprit.pal b/graphics/object_events/palettes/followers/mesprit.pal new file mode 100644 index 000000000..809362ce0 --- /dev/null +++ b/graphics/object_events/palettes/followers/mesprit.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 33 +73 73 89 +113 129 177 +145 73 113 +145 185 209 +169 41 1 +1 1 1 +225 113 145 +249 177 17 +233 65 33 +249 169 153 +233 233 249 +97 49 57 +177 209 249 +185 81 129 diff --git a/graphics/object_events/palettes/followers/mime_jr.pal b/graphics/object_events/palettes/followers/mime_jr.pal new file mode 100644 index 000000000..31ae9fcab --- /dev/null +++ b/graphics/object_events/palettes/followers/mime_jr.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 65 129 +41 41 73 +233 233 249 +121 129 233 +209 65 89 +217 113 145 +65 65 65 +241 177 201 +97 33 57 +89 97 177 +169 169 169 +121 73 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mismagius.pal b/graphics/object_events/palettes/followers/mismagius.pal new file mode 100644 index 000000000..9ff649019 --- /dev/null +++ b/graphics/object_events/palettes/followers/mismagius.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 97 1 +49 41 97 +153 41 89 +177 17 41 +145 121 193 +49 33 57 +97 81 145 +193 65 129 +225 177 41 +1 1 1 +105 33 81 +217 81 113 +73 33 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/monferno.pal b/graphics/object_events/palettes/followers/monferno.pal new file mode 100644 index 000000000..af39e8fd9 --- /dev/null +++ b/graphics/object_events/palettes/followers/monferno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +153 153 153 +105 57 41 +249 233 169 +241 57 41 +185 121 65 +57 145 209 +185 97 33 +217 185 113 +249 193 1 +145 25 25 +233 233 249 +129 89 57 +1 1 1 +209 81 65 diff --git a/graphics/object_events/palettes/followers/mothim.pal b/graphics/object_events/palettes/followers/mothim.pal new file mode 100644 index 000000000..21d36fcee --- /dev/null +++ b/graphics/object_events/palettes/followers/mothim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 41 +137 57 9 +137 137 137 +73 73 73 +65 49 41 +225 177 65 +145 97 17 +1 1 1 +201 201 201 +97 97 97 +249 129 41 +161 89 33 +49 49 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/munchlax.pal b/graphics/object_events/palettes/followers/munchlax.pal new file mode 100644 index 000000000..afed053d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/munchlax.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 73 +193 193 201 +193 169 105 +41 73 73 +81 129 145 +249 201 121 +65 105 121 +41 49 49 +233 233 249 +145 153 145 +1 1 1 +65 81 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pachirisu.pal b/graphics/object_events/palettes/followers/pachirisu.pal new file mode 100644 index 000000000..8dc583b37 --- /dev/null +++ b/graphics/object_events/palettes/followers/pachirisu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 97 +225 185 89 +97 129 201 +49 81 113 +1 1 1 +121 161 217 +137 121 145 +233 233 249 +177 177 209 +89 89 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/palkia.pal b/graphics/object_events/palettes/followers/palkia.pal new file mode 100644 index 000000000..82c356424 --- /dev/null +++ b/graphics/object_events/palettes/followers/palkia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 137 145 +201 217 233 +201 137 193 +81 81 89 +177 185 193 +161 81 161 +17 17 17 +249 249 249 +241 81 65 +137 121 145 +241 161 153 +169 161 177 +209 193 217 +233 217 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/phione.pal b/graphics/object_events/palettes/followers/phione.pal new file mode 100644 index 000000000..8e5afccd1 --- /dev/null +++ b/graphics/object_events/palettes/followers/phione.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +193 65 105 +177 201 249 +25 73 161 +81 129 233 +65 97 201 +65 65 65 +233 233 249 +129 161 241 +17 113 177 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/piplup.pal b/graphics/object_events/palettes/followers/piplup.pal new file mode 100644 index 000000000..38fad9d50 --- /dev/null +++ b/graphics/object_events/palettes/followers/piplup.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 185 25 +81 145 185 +41 89 169 +57 57 73 +233 233 249 +121 121 121 +121 177 241 +121 105 65 +1 1 1 +65 105 225 +177 185 217 +57 65 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygonz.pal b/graphics/object_events/palettes/followers/porygonz.pal new file mode 100644 index 000000000..73e36b7d5 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygonz.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 145 49 +41 121 169 +17 65 97 +89 185 217 +169 65 105 +97 25 49 +249 209 57 +241 161 169 +169 113 49 +1 1 1 +145 233 249 +225 97 113 +65 153 193 +113 49 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/prinplup.pal b/graphics/object_events/palettes/followers/prinplup.pal new file mode 100644 index 000000000..af3fe885f --- /dev/null +++ b/graphics/object_events/palettes/followers/prinplup.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 1 +1 1 1 +41 89 169 +121 201 241 +97 81 33 +121 121 121 +113 153 185 +57 113 177 +49 57 97 +233 233 249 +249 193 25 +169 177 201 +65 113 201 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/probopass.pal b/graphics/object_events/palettes/followers/probopass.pal new file mode 100644 index 000000000..d952dc1fb --- /dev/null +++ b/graphics/object_events/palettes/followers/probopass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 185 +41 57 97 +1 1 1 +113 25 41 +193 57 89 +113 177 233 +41 49 57 +153 153 153 +65 89 137 +193 201 217 +209 81 73 +161 33 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/purugly.pal b/graphics/object_events/palettes/followers/purugly.pal new file mode 100644 index 000000000..37ec1eaa4 --- /dev/null +++ b/graphics/object_events/palettes/followers/purugly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +89 57 137 +153 153 153 +201 105 9 +193 193 193 +249 185 33 +137 73 185 +65 65 65 +1 1 1 +177 121 233 +49 49 49 +233 233 249 +185 73 113 +81 81 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rampardos.pal b/graphics/object_events/palettes/followers/rampardos.pal new file mode 100644 index 000000000..66eeea4da --- /dev/null +++ b/graphics/object_events/palettes/followers/rampardos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +129 65 81 +185 185 185 +233 105 121 +89 129 233 +97 97 97 +57 57 57 +1 1 1 +65 89 153 +225 225 225 +121 161 249 +113 113 113 +49 57 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/regigigas.pal b/graphics/object_events/palettes/followers/regigigas.pal new file mode 100644 index 000000000..dffde944b --- /dev/null +++ b/graphics/object_events/palettes/followers/regigigas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 73 +65 161 153 +41 65 49 +249 209 41 +209 73 49 +81 81 105 +121 121 137 +233 233 249 +1 1 1 +41 105 73 +169 169 193 +169 137 41 +97 81 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyperior.pal b/graphics/object_events/palettes/followers/rhyperior.pal new file mode 100644 index 000000000..38c0117a5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rhyperior.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 153 +145 73 17 +89 81 73 +65 41 25 +193 193 201 +113 113 113 +137 33 57 +1 1 1 +233 233 249 +209 73 33 +49 49 49 +137 113 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/riolu.pal b/graphics/object_events/palettes/followers/riolu.pal new file mode 100644 index 000000000..5de18e81d --- /dev/null +++ b/graphics/object_events/palettes/followers/riolu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 57 89 +97 97 97 +233 233 249 +73 137 193 +153 25 49 +121 97 41 +57 105 145 +169 185 201 +41 41 41 +113 185 241 +73 73 73 +81 89 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/roserade.pal b/graphics/object_events/palettes/followers/roserade.pal new file mode 100644 index 000000000..6204afc14 --- /dev/null +++ b/graphics/object_events/palettes/followers/roserade.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 41 +161 177 177 +17 65 25 +97 169 73 +201 217 217 +41 105 153 +233 185 65 +1 1 1 +201 65 113 +137 17 73 +81 169 233 +169 129 57 +73 73 73 +233 233 249 +145 193 105 diff --git a/graphics/object_events/palettes/followers/rotom_base.pal b/graphics/object_events/palettes/followers/rotom_base.pal new file mode 100644 index 000000000..313955303 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_base.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 153 73 +17 73 113 +145 73 17 +105 185 217 +217 113 49 +65 65 65 +49 129 161 +185 89 33 +177 233 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_fan.pal b/graphics/object_events/palettes/followers/rotom_fan.pal new file mode 100644 index 000000000..a5f3ba2f5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_fan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 145 65 +249 201 81 +65 65 65 +1 1 1 +209 161 49 +185 89 33 +113 57 9 +241 153 73 +249 249 153 +217 113 49 +153 185 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_frost.pal b/graphics/object_events/palettes/followers/rotom_frost.pal new file mode 100644 index 000000000..40548eeb1 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_frost.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 113 49 +73 17 113 +193 161 217 +49 49 49 +241 153 73 +89 89 89 +145 73 17 +217 217 241 +1 1 1 +121 97 161 +185 89 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_heat.pal b/graphics/object_events/palettes/followers/rotom_heat.pal new file mode 100644 index 000000000..81477472a --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_heat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 113 49 +145 73 17 +129 33 25 +1 1 1 +185 89 33 +41 41 41 +241 153 73 +73 73 73 +249 217 129 +217 89 49 +161 41 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_mow.pal b/graphics/object_events/palettes/followers/rotom_mow.pal new file mode 100644 index 000000000..124db71d5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_mow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 73 +25 89 17 +193 193 225 +113 113 113 +153 217 41 +145 73 17 +241 153 73 +217 113 49 +217 249 137 +1 1 1 +233 233 249 +65 65 65 +185 89 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_wash.pal b/graphics/object_events/palettes/followers/rotom_wash.pal new file mode 100644 index 000000000..b2ad20e2f --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_wash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 153 73 +65 65 65 +17 73 113 +105 161 233 +185 89 33 +113 57 9 +1 1 1 +81 81 81 +177 233 241 +65 97 161 +217 113 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_land.pal b/graphics/object_events/palettes/followers/shaymin_land.pal new file mode 100644 index 000000000..01a77716c --- /dev/null +++ b/graphics/object_events/palettes/followers/shaymin_land.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 193 1 +129 129 153 +233 233 249 +65 65 65 +49 153 73 +169 169 209 +1 1 1 +193 89 129 +161 209 113 +241 129 169 +121 153 113 +41 89 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_sky.pal b/graphics/object_events/palettes/followers/shaymin_sky.pal new file mode 100644 index 000000000..59b7b2681 --- /dev/null +++ b/graphics/object_events/palettes/followers/shaymin_sky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 1 +49 53 39 +1 1 1 +177 225 97 +89 89 113 +143 27 31 +49 153 73 +41 89 57 +177 177 217 +233 233 249 +249 41 49 +121 169 49 +59 65 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_east.pal b/graphics/object_events/palettes/followers/shellos_east.pal new file mode 100644 index 000000000..0fbe31e03 --- /dev/null +++ b/graphics/object_events/palettes/followers/shellos_east.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 9 +81 137 153 +89 145 81 +49 89 105 +233 233 249 +129 185 89 +89 169 209 +1 1 1 +249 217 57 +49 49 49 +153 153 177 +73 105 129 +169 201 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_west.pal b/graphics/object_events/palettes/followers/shellos_west.pal new file mode 100644 index 000000000..bcd1ca01e --- /dev/null +++ b/graphics/object_events/palettes/followers/shellos_west.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 1 +113 113 113 +129 129 129 +185 185 201 +89 49 73 +249 89 209 +1 1 1 +49 49 49 +249 209 89 +249 137 201 +233 233 249 +193 105 145 +145 33 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shieldon.pal b/graphics/object_events/palettes/followers/shieldon.pal new file mode 100644 index 000000000..4bc877c4c --- /dev/null +++ b/graphics/object_events/palettes/followers/shieldon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 73 +201 201 201 +57 49 41 +193 161 73 +105 81 49 +153 153 153 +73 73 73 +121 121 121 +233 233 249 +1 1 1 +89 89 89 +57 57 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shinx.pal b/graphics/object_events/palettes/followers/shinx.pal new file mode 100644 index 000000000..e99f3c9de --- /dev/null +++ b/graphics/object_events/palettes/followers/shinx.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 33 +81 121 185 +65 65 65 +209 81 65 +145 185 233 +89 89 89 +1 1 1 +225 185 25 +233 233 249 +113 161 217 +105 89 41 +49 81 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skorupi.pal b/graphics/object_events/palettes/followers/skorupi.pal new file mode 100644 index 000000000..d4dad9ff4 --- /dev/null +++ b/graphics/object_events/palettes/followers/skorupi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +33 121 113 +25 193 177 +121 129 209 +73 73 145 +41 161 153 +177 185 193 +57 57 81 +121 129 137 +233 233 249 +1 1 1 +153 161 225 +89 97 177 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skuntank.pal b/graphics/object_events/palettes/followers/skuntank.pal new file mode 100644 index 000000000..fb06f0e0d --- /dev/null +++ b/graphics/object_events/palettes/followers/skuntank.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 97 +89 81 49 +185 185 201 +65 49 65 +233 209 97 +137 89 145 +161 41 33 +41 41 41 +233 233 249 +193 97 65 +105 49 113 +113 113 113 +233 217 145 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/snover.pal b/graphics/object_events/palettes/followers/snover.pal new file mode 100644 index 000000000..d0b29e37a --- /dev/null +++ b/graphics/object_events/palettes/followers/snover.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 65 +161 161 193 +65 57 25 +121 121 153 +129 105 41 +217 217 233 +65 65 65 +169 137 57 +1 1 1 +185 193 209 +49 153 73 +97 81 57 +233 233 249 +49 73 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spiritomb.pal b/graphics/object_events/palettes/followers/spiritomb.pal new file mode 100644 index 000000000..aa86da120 --- /dev/null +++ b/graphics/object_events/palettes/followers/spiritomb.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 169 73 +105 81 25 +145 201 89 +121 57 105 +169 113 169 +73 57 33 +201 145 209 +97 89 97 +209 241 121 +1 1 1 +65 113 65 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/staraptor.pal b/graphics/object_events/palettes/followers/staraptor.pal new file mode 100644 index 000000000..737f9bd0f --- /dev/null +++ b/graphics/object_events/palettes/followers/staraptor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 113 1 +145 145 145 +225 49 33 +33 33 33 +73 65 65 +201 201 201 +145 129 129 +1 1 1 +233 233 249 +105 17 25 +105 97 97 +57 57 57 +217 217 217 +73 73 73 diff --git a/graphics/object_events/palettes/followers/staravia.pal b/graphics/object_events/palettes/followers/staravia.pal new file mode 100644 index 000000000..1f40137a8 --- /dev/null +++ b/graphics/object_events/palettes/followers/staravia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 185 153 +193 113 1 +145 129 105 +225 217 209 +169 153 129 +209 201 201 +65 65 65 +33 33 33 +233 233 249 +89 89 89 +1 1 1 +185 185 177 +121 121 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/starly.pal b/graphics/object_events/palettes/followers/starly.pal new file mode 100644 index 000000000..adca8581c --- /dev/null +++ b/graphics/object_events/palettes/followers/starly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 113 1 +185 185 185 +81 65 65 +97 97 89 +217 217 217 +49 49 49 +1 1 1 +233 233 249 +105 105 105 +73 73 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/stunky.pal b/graphics/object_events/palettes/followers/stunky.pal new file mode 100644 index 000000000..baa8f838a --- /dev/null +++ b/graphics/object_events/palettes/followers/stunky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 105 +89 81 49 +233 217 145 +89 65 97 +185 185 201 +49 49 49 +185 169 113 +113 113 113 +233 233 249 +137 81 137 +185 81 57 +1 1 1 +65 41 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tangrowth.pal b/graphics/object_events/palettes/followers/tangrowth.pal new file mode 100644 index 000000000..902f72d07 --- /dev/null +++ b/graphics/object_events/palettes/followers/tangrowth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +41 65 89 +169 185 209 +25 33 49 +201 65 113 +1 1 1 +57 105 153 +129 49 73 +57 137 201 +233 233 249 +49 81 113 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/togekiss.pal b/graphics/object_events/palettes/followers/togekiss.pal new file mode 100644 index 000000000..bf54ff014 --- /dev/null +++ b/graphics/object_events/palettes/followers/togekiss.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 129 +169 185 209 +41 169 249 +233 65 73 +1 1 1 +65 65 65 +233 233 249 +145 153 177 +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/palettes/followers/torterra.pal b/graphics/object_events/palettes/followers/torterra.pal new file mode 100644 index 000000000..2e6475344 --- /dev/null +++ b/graphics/object_events/palettes/followers/torterra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 65 +209 209 217 +81 65 49 +89 185 65 +41 97 41 +1 1 1 +49 49 49 +153 153 153 +65 153 89 +89 89 89 +121 1 1 +105 209 65 +233 233 249 +121 97 49 +65 177 81 diff --git a/graphics/object_events/palettes/followers/toxicroak.pal b/graphics/object_events/palettes/followers/toxicroak.pal new file mode 100644 index 000000000..92634817e --- /dev/null +++ b/graphics/object_events/palettes/followers/toxicroak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 161 1 +57 81 169 +49 49 49 +129 129 129 +41 41 73 +169 49 57 +89 129 209 +113 25 33 +249 217 57 +1 1 1 +217 89 65 +49 97 193 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/turtwig.pal b/graphics/object_events/palettes/followers/turtwig.pal new file mode 100644 index 000000000..9d65ea4dd --- /dev/null +++ b/graphics/object_events/palettes/followers/turtwig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 121 65 +81 73 57 +137 201 177 +249 233 113 +153 113 57 +81 153 105 +105 89 73 +73 73 73 +209 177 41 +233 233 249 +49 49 49 +1 1 1 +57 81 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/uxie.pal b/graphics/object_events/palettes/followers/uxie.pal new file mode 100644 index 000000000..ff01f4a61 --- /dev/null +++ b/graphics/object_events/palettes/followers/uxie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 89 +113 129 177 +169 41 1 +241 201 89 +73 65 57 +145 185 209 +1 1 1 +193 153 89 +233 65 33 +177 209 249 +249 169 153 +73 73 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vespiquen.pal b/graphics/object_events/palettes/followers/vespiquen.pal new file mode 100644 index 000000000..3d1fab3b5 --- /dev/null +++ b/graphics/object_events/palettes/followers/vespiquen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 153 25 +73 65 41 +161 185 225 +105 105 105 +161 33 57 +169 89 49 +1 1 1 +217 225 233 +49 49 49 +249 201 57 +249 49 105 +177 105 33 +233 233 249 +201 105 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weavile.pal b/graphics/object_events/palettes/followers/weavile.pal new file mode 100644 index 000000000..c28ce413c --- /dev/null +++ b/graphics/object_events/palettes/followers/weavile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 129 +49 57 89 +105 121 177 +137 1 1 +161 41 65 +241 177 65 +65 97 161 +169 185 201 +233 233 249 +1 1 1 +57 73 113 +201 49 73 +153 9 3 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam.pal b/graphics/object_events/palettes/followers/wormadam.pal new file mode 100644 index 000000000..840dfcdfa --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +185 201 153 +81 169 25 +33 65 33 +1 1 1 +137 209 57 +73 73 73 +49 49 49 +233 233 249 +41 121 73 +97 97 97 +41 169 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_sand.pal b/graphics/object_events/palettes/followers/wormadam_sand.pal new file mode 100644 index 000000000..bb5b4ce40 --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam_sand.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 65 +81 65 49 +233 233 249 +201 193 137 +145 105 41 +193 57 41 +57 33 17 +1 1 1 +97 97 97 +201 113 97 +49 49 49 +233 217 137 +153 145 97 +73 73 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_trash.pal b/graphics/object_events/palettes/followers/wormadam_trash.pal new file mode 100644 index 000000000..247aa23fb --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam_trash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 153 +73 73 73 +49 49 49 +233 233 249 +217 57 137 +1 1 1 +153 33 89 +97 97 97 +161 97 129 +249 169 169 +97 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/yanmega.pal b/graphics/object_events/palettes/followers/yanmega.pal new file mode 100644 index 000000000..3bda62edf --- /dev/null +++ b/graphics/object_events/palettes/followers/yanmega.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 25 +65 65 65 +153 153 153 +209 57 49 +89 9 1 +1 1 1 +73 97 113 +233 233 249 +33 49 25 +81 169 49 +185 185 185 +49 97 33 +161 17 9 +249 73 49 +0 0 0 diff --git a/graphics/object_events/pics/pokemon/followers/abomasnow.png b/graphics/object_events/pics/pokemon/followers/abomasnow.png new file mode 100644 index 0000000000000000000000000000000000000000..141b529f7d2d9042323a30cf791f58668dcbb1bb GIT binary patch literal 1052 zcmV+%1mpXOP)K)Uj{dMid8N0);qmBM`BI#tdDuB#0BD z)>P;sR?Lz^BUw%tDIqDxTUy$OP+c@M7P2|9#nM`ANERJxi`}x+^^fZvd3TaoGi}kS zK%M{spPul0Pe+N8^tnFQ|D)#VRX#0plwOs;@v8Ec7N<%Sk!zvv%8nz|imY6T&W)Co zMPwm&cM%miJfZdrjiYNj=PfBo(#P@3WLadlF~E2qcmHc}wzRypMky;6{-H z9b+7SJudK~v5362yu2l;kC)^XcZ)prY2f?Qo2?8Mc!^dk=S^1{;K>B3W)42d(zo4%$0L<0Xnn+2X4_;7MKiC6v1 z^>m^flR$(;VBVx=#t+XY@17%*tr#(b%!=VA@RquL<+A>a8JTII|JCgY#^on`K+Yrp znSfEqRRv) zuiE^M=1c;79Uz2UL;ocmux1+28_oK9D>&ZLBO_bD3^Q97bjuI5tLY`i;(tv&!I!VO zNr0y72117ZutEbb)=UF>BdZbCLEV^xovgny?Z2qi@bdRpI)AbunMW+2T&(RHU-U#5%JDQ_>A`Z8)5C&%J4gr%G4qu>`IqNIrqkA3r((Y*Ke~XyVYI3KiwBk zj@2?-;9M;e2dpm#-x#jlu2+V=E;F#(K$uiXtu}+egk|Ap)auIBUghTpu+6^_Y!Pqr z{)>CJfO9w=sT#L>&2%R?cXpk&*w|_BI?fqvi@tU?8qRIew;gJg^-EB#!g5dLPaoNa zs(P-eYfq!KZ0V*qZM#${U;7BLEe1Md!6zkWEw5FscGvt*%ISW>e_2qroqv`7U+Pc7 W3M#%^h;@4a0000KmOqQ!Mi__R;><+b*%(r#@HRdd=VlG( zCgDO1*KH?O-mhQ?%B`1?6ug8pLbC#cFc@hR92UYM?R)^cNj^cUxUnIYi_1bt5q*Zt ztC?9z*>iFxDWhW9M>BeUnpdy>0Q|rG^G4hcANi1t&JO#+Ry#YS|K3kV*IplWg>B&8 zqZ^~kui<^mB?ni3z0(nP0>Aj|>Z?l!klCI01dgjuHXUInaQt(%x!{l@PFJ2HGlf(wYjHP-slNCo3b~fXyEQL3K<^6!ig&3+;9_^ zIrjZ|N2nN1s>TJ$UiE3xh&4L8gjPNOB?8Ql?k9Wek9Czx-a#YlVvGv&g(3M>V+a! zJf$=!)g_QZi>E<>w~bjLAj@ZRGr>ynTDL;QgtqS=x~B4s$}rHccv?8IJVTmOT|y$( z`I_^@tkB{-U+2=^F!*ce34I}NY(ML~;HdB!ODQ+ZDYBq#3HdV1MPgQHiS;t$x`cAV zq%ZU)OX_C@bT*!y?k`2l0@>sdkytcaQWl#PmJB(uguZwCLMtx{!Fqlf`t(+BPw@0s zv;``#=^5RABvFdY^b)Ogo_2*+8pvzd_d~Ew``-k9-U*Z)kW#-pp5h)YA&mBgob7&h p?0$;$_x$bn&gb8M@I83>?N9Ysmc=E)ys7{I002ovPDHLkV1fdXB)|Xw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/arceus.png b/graphics/object_events/pics/pokemon/followers/arceus.png new file mode 100644 index 0000000000000000000000000000000000000000..a24917d592396d2f3aab991aebf0333e650f2a10 GIT binary patch literal 1399 zcmV--1&I2IP)CqX<(cxKPaXGPB@j*eMvB|NS84(c?K}kt*d6DVq`2YX_d1)nz00009 za7bBm000ie000ie0hKEb8vpKrFQoe zLm|GUs37W?k~VHbmY$Y9?5#gxy(l1@n1aI=tQ-XP2JCT-NaF>?j#$|4!L-RC;DWK3 z-_RMamr^p{Oe41}EqV{Kl4qpvd-Zx4jS)(fDpjgfsZym%l`2)LRH;&>N|ow=AU$}$ zd}&4T`{hgPzivQx>|iNQ=~8@YEp1>@PR=i7SN;t?FW|cJ22^}nPs~@2Mx&ABS{0wG z(O={N^g31=Whp1`5<_jskv z<|K;f)G#vc)_wv$7q;p733dF$e0$3D7{pp&3seI(~v%7O96Nk2Q=z}$+yyKo`d}Nv$;eU;SyK;ou$3E&E>C}8}{n$g7*EA09&b8tuA;TUa$8E6z1!oCiw?1`!I6*1b>(|sbbC3Khht5Px zfr6v;AKHC78qrztgAGvu71uV4cx;+Se*0Mb02ExO*R`v{rg!C(Z-h&Mf}^&t<>UG^ zYGtwb2`V^C$bVfZJiu^*QjX~^ePQN`N0zmkgrhbw`!S`_%p_t13eFNLt`oA+h7*)> z{QGw^$9h(@EPE{pN9|_Q;|+G3O|bzL&uRs)KJ6B=S|W}sdo|u5-4ZXjDvr8d>*HR1 zI((MzdP#WOGz$;Plh*~)6dO=*TnRfC`-)JbBJ5Aa5%x3^uI?O?Y*+jQ6r3eQek)Hd z37nvm>uX{7S)oy+H(v_-Q*nfU%$Mz*RcF$AA~vAlETMkMu?I6a!G39c1ad^2*v+>* z3hkOzyxZvW4MUyIa^eOQ9D8USkB_1w1SQD$pagP6%5ms^$AU216LW*Wo|q*RTDAVHV;w>X zGOh;@N9fA=f;H&zuZjq-j4gk`!HwC#Cd4U0lpACmHu#hEEB4s|;vK8DI0zLw0h`|h zh2lM%?y}A}*I@%8FCf_x4s0LG4Dvf;_}9}F_toM6Rws*3=!(cB)3lf+MIv;Of&|jYJ&tWKbOkjzb=(Ql~e{3=nvFN?WZ2fI4A%B002ovPDHLk FV1mIDn0o*K literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/azelf.png b/graphics/object_events/pics/pokemon/followers/azelf.png new file mode 100644 index 0000000000000000000000000000000000000000..3926c82f6340ff2edfd57b99601e020d5ada8a3a GIT binary patch literal 767 zcmVSDFFci0r{z!F>$d;Nm==^5$WmqAz7*EK_Rix`ALD%do?`P00009 za7bBm000xO000xO0b}Nl!vFvRbxA})R7i>Kk}-?hFc^l#g&On+I^N)>rd~?G6bdb* z7$uyB%T(wsUT*6jXcl*hag9LBbuHY_D3oruwErNKb~z~Ff`@?mNtT?%jW2LV zmy&OL{6_C1DMDyJ``OR`GePfeylXmgeka~JeJOjl=OEZTP?KRpQz<96=0MT9ufZ^H zq?B`Z6Q|QwRu4@)R zZdm92-xuYac=%yr1eUEJDg@>~W%)zkqF`ER7+E2XT@rdpb*(Bltn<#|u$;RLdo-@j zXV?l+bWGuvQn(*{Oqdp0wn7Ar&{q}eTyvG9;K6dv;djGfRcM$SA#w)PDP~16<9INv zgqE$)$*B+_uL@OeSm#i+T)<|dZ$@Ca7UFIeUGdTIe8vjD5*kjda6IB&?>tO&A>@_^ zrXoJ03`H-QeKr->!YC6o8j*x%`otit*$4$4lQ5w|7wTMdmBXC%niCB&h_ zU;&E{s1X`QR_L%OB#M2T8#Wc=FoK6-H*DBj2@}`no+n(N86i3V&QUEyi2D8uWC~Rd z9NHWXne#++>pso-nh?Q*Vhjm;BoG4Qbs@{Lab1|W9&l`P^|#{O<*Pnme_i<3#5&_E xp{KUBDy))ty#dFY6`R6cv!!s?G==|e{s85vzfxLgmy`ei002ovPDHLkV1ffUUM2tl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bastiodon.png b/graphics/object_events/pics/pokemon/followers/bastiodon.png new file mode 100644 index 0000000000000000000000000000000000000000..1829639ab9949e7863ef38071f48c4ab81065ef8 GIT binary patch literal 829 zcmV-D1H$}?P)K)jw<7KokJ*8>Goop`YL?VS?6n@?u|c_;h;1&h`2MsWd7YApSyU^vfml z?@*ibw_@Fg-(WaTNLj$ZrSGh&2Xg3U9iO4PB~;od3OMP)SRcCXC0o-r=SzQHyfxVC zx9VTB)j&Eqr2#u5d_<+oiQ2#BMuLvrcO*5rPcV1hpnC9Nu%ic6s|wVv?*{4E{W`vI zEk2^A?~`~;CdV_RU~Y@5vx!qrD7zW#jWRvh)Hjr9fG^Hw^wOP~ZBD<(*2p`VDb+wS zG_!%De2LH$)RDfi8(nrF#rGn{Cra{00009 za7bBm000XU000XU0RWnu7ytkQ%Sl8*R7i>KmA`8nF%-uSbVJt1X-L6q*K&%ECMk~b z^^Q_#=>HH1@es(+LSzaFE);r8GK9|gBTDGv$vC6tbh06JiM?2VLnYlWNzFB(c+BH4 ze00|Lt9yD+^1P>biWS9LHn0b>Y_CvF+-~SP3cQ=;c z`O(eIa+L-v|}Z> z8#ZyJf7TmV17*9al$uF(Ing;!8kthhPt&fqdHl0)^426b^a1WM7(w|-h{phccgGc{ zlA+?1b7hGW#(I5=3qu4DP%3{)0hc)j>1PEU;40@4D2@w`_2+XwmbKkm6x`CR4V9o4h-(9zWe&B0SMz$7RUG5pTu|2bbYOE& zpKyMV*L69={*;x=m0-AxINQ!=hPBnl;La8usv>B!EjT;D2x@8JR8Ku^JqY9LU7TN<{@2^Pg fFN3D(SgaKVL3T5000000000000000O9SF000009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K)GyrC+Pt?w3`*Pysc8jlFMNiL2YBFtVsE{FLs_Cza&{UWy+K(Q~pr|8?!`0 z;41Au)Spq7HijBhtCKz-)DzmLjbR2b(@CS?@k5&{9F$1=q68D3GU7C-=G%mu9TApv zsZ2cuEN)a%DV*(uwvkkbyh^%Nc0s7(ElX^%nc&pWBHzQI zk2hS-Usew^ZDL*&>U~nX#A~47vkuh=300000NkvXXu0mjfPXp_y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bonsly.png b/graphics/object_events/pics/pokemon/followers/bonsly.png new file mode 100644 index 0000000000000000000000000000000000000000..013d39187ee28d0e7f3420625651dfce66c1da2c GIT binary patch literal 454 zcmV;%0XhDOP)Kld*1tFc5|rVlj7!Qq-wq)v0fgA*s|% zAl0Po;DL#u$U&JqFfvq$)iq*Z>=H$Oxx#gbIckV3bqe3)@BY)BY=LEsjEsz25tD_v z5A_1i<=ohZdSPi?g{D5#3$-OHqlKZ9`m7Ga-mr=oi{iPNllt6V!0>`eb@171bujcL zJ+J=Dn^${DX|@W@-1f`0It_b+A7vtCu9=g#YCjQjsI46_qlTWcGCc3@I*^H6B)u-Q z{?1saX4o5Sk>~lY&ucVp?|tUYlngmQ_SwVcv&Wl(8YjCC>ZloVAiWL5+ceR;QxDWQ zpXRL$I}phGr^l1q<3fCCJopx(P&4F!SKP^)!ZmWQkn+^Z+71x7vY8L{{<1xCu09** wTqYOhT;gnd#Gk1}I)8>mFU~0**D3rbKUrSlah=yMFaQ7m07*qoM6N<$g3GJNc>n+a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bronzong.png b/graphics/object_events/pics/pokemon/followers/bronzong.png new file mode 100644 index 0000000000000000000000000000000000000000..845bc18dd75c4601f5c24b1653cfe91e7dcff3aa GIT binary patch literal 696 zcmV;p0!RIcP)K)G=$@Ko|z#122M3Qo(NVR28IVb1YCC zdu@M0rcQA|4%CZXauW3-OK>{nrZy0wZY4vBr?wd^P-jp5Q9bDt-}#brif4b5pL^~1 zJFpM{``OQa>cKz@cX$4CvrRStT87i>-HkSuKQsUl%&w;4u69V=5!+Nb`x&GW3Aw%ym97(r6?skX)Vp zriDh%7uK!{%cE1>pXg^iugw<1c1l_SFOyvTExO@P^;W2~skd~)e%xp@ONrsHL+V&` zbvCsiG-0STG<|yXxY1uTj;s+6C093sD+pJ7=|c}q(^EKEtzu*eq2zMNpYdosE<&Z3 z^v1TrCheem86(?`sz0bGU_x+i|6gW|Z_Y?cY@>96QMN!nwEbxddW?dz@+XZ+M)}JUD!5rbMzNLl>D@gPTC$%1&X(@#4DB-RZ~Oli z*h%l>VY8a+xBT~F9{;=dua&uO-L;r~2iu)@o`+^tt>QcQ?82HoWwSF@XTAA+c|qh& zwuLXluI3%~Z%&(;QSZF*OsR(1!apV%)9e>NX;5`*QJUE6eTujFU7p3fGH)HjePR1f zxcz%#&X6bFxAtq2>bDg;!Vg9!D8Jr2mp_kNJuf-2bM69-)@{OdQYP95r+krT+@k-L zfBwpu)6Ut1edV{0s#YsiH>>CURl6(#=(tx;_A-Pq1@x*g@pL$0>(TzU){~aJz9qw3k#*8n2$7piaamL#r(%-Lf?=o?LLU zYm^n;zu>I!le^aMx!Ci*->=)bdwP+Hr%?CNq>VT7mCheNdrgP`u19S*bQ3_Qb4lj-4l!J#Awl*Ua-zqpWJzoY{LPBD8Gg`Q#OI>`KZ!Gy+y$ zPhYPmZ`Iw)uz>r^3ibueJ2!sv%&sb&_MJI)-?ixu?^~p+uSCV0$ni7F&U;(WEqkK( zZvK~_(T_hCsPdgRlM<bP0l+XkKfO@a$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/buizel.png b/graphics/object_events/pics/pokemon/followers/buizel.png new file mode 100644 index 0000000000000000000000000000000000000000..65a181148863f2c0d9e08f7b7e5832adf2714170 GIT binary patch literal 719 zcmV;=0xKl)q}*Kpe+~Cau3q2nq!u$#Np7IjGYi zLnu^aFl4hac<>TGLZ3iVY|s!488h|)T1fHc&BoxtPY~!JO`-)oLr!UzV`M1l;+p-U+0fyLFeBZ#=C-!$nyLj`p1DBpo@YaQfm37nu08V zR6vXPb^HoJT03AxKX6-)tici=19 z&rXE75atc{BY>!1`earnU8k|a4Gh~}v*7%^NH6t+gZCchLYN13V*sPc1u_pE$2waf zJ|mvDWtHU}T=eqSeraMZgn2`Y{H3+Z7G>5Nj%8h4aKUm$h}Yf<4%ymCZw^Lk3%nIR z1ycBU2niQRtln8*UGclCSu+CU*xa7bXBN1;d^q<-HWHf${s8!j1tP20?7Mh4HcP&H zLm@c&%@iI%U%e~uMZv~-*^r{GzW_Ym`co{7JTEZ}Uro0|_b zD;u!w%}qN){jg^qd5$~cd=h%jiOE@uvuT0_G|kWv(EE`aQk2-ZA5lS|u=x}Ps?)>` z@jOjK6SL}0QGjZ*NxXm!Xu|q@%&ewees1LX`UN|Q;TXg9u)+WU002ovPDHLkV1f|X BMAHBO literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/buneary.png b/graphics/object_events/pics/pokemon/followers/buneary.png new file mode 100644 index 0000000000000000000000000000000000000000..23ab75b7daeaaac7b639c43a685b8b33de3a4c55 GIT binary patch literal 675 zcmV;U0$lxxP)w_dkx^Oc>G`>lS?R%vQBg?%0000000000CoaSs00009 za7bBm000XU000XU0RWnu7ytkQ8A(JzR9J=W)xU4rKokdX4_DoM5(tTOsfAQ2Yze4? z7aMF@!b=E7%$?d1D@hO0xl6XL*+5XI*D2ts`R590e7^VWN0p(fD)HSu_wMeU&-}2g zV~#oIm}CC`F!!+kdZN~0=kX8tP%RJhtIcfN1>?wiyzRcC%rPC!UJ<Z!Pn&vG;G4pV@A;d#7vI30WUFYqtnT`-c9dZh+nExEBA>Cd_6vc(=&U z@$BFvBh2jE>u^<^51F;!r2bsR7U5X~+-=Fv4O4GDrab%THP&`i)}3Wu09Y>l5dN|Y=AA)LJ&^WT-3q7(8i)vH3)O>wFr$`*@845iu%;7A(I8u zNkdBTgfB6Z@W!!qq;x6EK-5E{!HdjA05-Sce=*UfW^Ab`8&gWDAA=eXx^C40*a*+-6!Xd-8x9*Ds$b(;Y2bIlKMwqh`~pFc@J27#^CAEM002ov JPDHLkV1h)uKp_AC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/burmy.png b/graphics/object_events/pics/pokemon/followers/burmy.png new file mode 100644 index 0000000000000000000000000000000000000000..5c95ed87d30a7616fc037c08fab053d4528a2b77 GIT binary patch literal 552 zcmV+@0@wYCP)mnLF}Zm`iP1S>VPOCO00000000000000000000-A_Oo00009 za7bBm000XU000XU0RWnu7ytkPo=HSOR7i>K)Im?eFcb&ynJt{{gWx>2GiJxNC5kr` zGQ&skrnsn_NxX04z}1K({kC?4(AO#wiQe`<@!MXEhMm36(u2P zeQwOhcT$M?wpP1uT*Y5xOO+OhZSx-eIPaGsGY+*GtS!1Jkf^h5=DOa%&!?+N+qG%P zf%3RCX2?EJQoz7$){c?u+=MiyXOltXv@1X_34j_t-^<9n1(j z8SL=2jAr;N97=lmX!rM?uYq-5u^F{ZXwNc`tph@CaYJpqw@#+-HAsK3&)dmPOVUHP qt1Q3#yL*0exP58YJohvE*L(sv;CEJGZ%q>b0000EamT z(fRhWVfG;h5%v!}2Y>Ud3wxEf#?Jg=)68fl*`-d-+X8a4o@xKM78daS_P3&m_x6TQ zR@@T(@AmsizxRtfp3lC#%y+g~{frqqCkv&0Ss8IPHm&@$w0hZu<)us3e?I+lDq~GX zyYA7jZ${t$ikHp&FJ)C%H_P-}P_CzB`NYaOUuWOiUt3?cym+?pOqs-M7am5ewVz}3 zPKjIQ-h&l0|GwPGe#!6qa`s1`nnJkTt~72w%2X=T-sifAVXjlIi`fD8rOEvDk_$7o zOv~6C(&b}bw%wF<{_!QRMI@S&moP7osEAZJv%6u#_W0$x7kAy!uv^I!6dfQ@uj4a6 zWuFcI@tJyaZZO``c*&4&?$`IacB{FE)t{yv3p^r=85p>QL70(Y)*J~22F83(7sn8f z&bOBjW*u@6V0&s4TEl-@s_g#qxSu62lXy3)ef6@s`|75&_T;k4mb+3n zlC)yp)XyvbQ@C5{%jKotTUVHVWO^u))6{rR>oUWdfL#(^w~p!0lZaKUV2+ggw|L*S z);A`tKTErtW~YUzhdt2Y=G}byAw%YFKaS%1=xl}ef0-+t)eCCACYLN*EXt^)U@kj1 zPk8rPwg}}m=0(4Augy8Dzxy?pd1E7ASjL;uKjkYg#EBm*zs2gD*l2iw{RZD=%Y4^u z6K*h6i@j6YntoutX9C9_wL7t&3V3!Tq#ib8Et_d4vAIGkvs>1F!xry#Zl}Y7F8xd} o}!6``*fvG`JVJXR(5lN95kx4P>>G^3XDFFcinaNo>IXQ`88EJ_zaz0kV00009 za7bBm000ie000ie0hKEb8vpKls#zMKoo!<99^o(IN%{$@sg=>PsXkV z6-E~*WYCay%8;#N!FbTn(QCj^x@Bk~6gm{Fa5ZT;XxEadT{?Em63E~mNaI0$C)<+l ze6oj51wVoC_x|5I`2e=EmH$JCz?a1f`QHmnBY@$!kT-=>>aJrDJU$ZQcq}3_1Kgv6 z*K-jHlNw`zE1-x0zD=DS##lX$%na6}Dq|0_u2g@%oI@u`9}6+!@-P4SvG~` z&L?}g)4ghX1{#0bPa585Ms`N8u@~kq6Y4B$#;0!>JAE75Mz+{9eB|rE#Gn6s!D^zu zJRzM?$lWLog3;aB%ob-fX2IC;g^5Yn{`geqILFf4z4@sd}$lc*P$q(Rre*+*SBI47-taa}7KU zccptJ<4%<4O2X)0&il)XyVtq>fpwv9qtUhT%S271+m-w7hR6eC8aC_&LyIms@dxj0 z=`SntK`tQ{bX&Q*o)R=VP1F#Z!s6}q{G};ja_iU&o-6&nz3|71uSn0&DxBk>O@}JS zO#CEaCQj3_*E!_vSdlz+GBb_{PLJvF3Iov!0M!eq9kzNI%Mr;3s>VAlP~}XW2=40> py<2BqjVGFYRYBL{M*po8%U>rCcNBczxFY}n002ovPDHLkV1nb%V_pCN literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chatot.png b/graphics/object_events/pics/pokemon/followers/chatot.png new file mode 100644 index 0000000000000000000000000000000000000000..ce96be737307ce03988942bbba1a42b6a7c27dd9 GIT binary patch literal 557 zcmV+|0@D47P)K)iFy0F%$>zgPSsnldIw$IIWyqUHX>7 zEg~H{TMB}ioZKB891auP2Gh;iT^!rxAlpHqgOiJcAHrUQHurjoI5-IXZ@-t^%cbev z1;HkpY_iG!386ld42>c$A~U}Q^;xv5)3M9a#A}jfJ_~3EKAVQr=bskP;B{G|)Mqi_ zfzu=sQeD5drIeAx`!+|gX$-dT%cHyMwjF{Aa4 z6CKa&e+Y8fknxXqYtc22+5C-hhX+M8yVwqwEwRm>*-5ic-Hsb_5WCD7WA_n{1Bc6y z8SBqIKHQUhpE?{qUd!F?>e0nEk*_bA$KmPD)|u1fp%dG)3Ga0AqdZ*u9t4)ya;E3Oot~ABnx2e|jE$C&K!wO)u0@*ykk47*5n0T@z%2~Ij105pNH8!k270nmz&PL_~HV`W;Whm);n9y=YM^pbuKqDvRd_MySVP-n)H0t z&4N{zjn0*S^Qz38>wW2qWBZb~&$s0){do49)9I%XC#~ME*!)~u`^CxFNX=qtmObj_ zsY`jXlVZO=S+^$SjK2EOsI$@sXEsTG)bM_r%aOiv7WcuvCgTpJH-Y~oIT&<8i|2JT zHGSXEwB%a!^TXGE9oUiT*s<=cmK%4{CWU3(Gnf^lvmGMSgZqD7lz+Yiiuh9Rk_diJe|G58^^x?mgW9Fn+a000000000000000RP|8w00009 za7bBm000XU000XU0RWnu7ytkPxJg7oR7i>Kl+9{`P!NShs(Yn`ELEt@i=>6DQfM0L z$^>!)E|bQgcNZ7szCq|dM(R`cs#RxhY6+#?IgrISGoCXif11`;Uw!q}*KbPq{#ejc z1ogdh?&*~;{EY57olN&fil8oR)xaGJXC#t#MP*U2t+3^MFQ^X_O(|c9M4&s|lG{YO zE151xeya`k45yV-=CQK~i8Vlm7G=$}Y+(%?$~EePp&&Q=3KtK!$sk0`3Z6A+Oqsp+ z$%5ntMnaH_C6h#z!%~}3Heg!Qe5WsbG&QD}4Oif_n(;unYA%*HtzgNwFS{B5yu}J_ z&v%%kCq@odxoR@LZUifiAgv8D9>r1Ex&t6KKQ`AS{Kv)~qg$(H_6k8GSn+YvYz3+0 zQ)`g%dCSHDd=mZu-WuKdbrTURdDnh$W+a)n;~+)+3_!w5j^SR3FsFhg!*3Fm*sGI@h9ekAm$3Fu@&Q55zYUZ4$ zKXRUTu@U4)@`k8foiwK3tl4-HUOH#N9nmr;EA6bzQ0=hG=ju@Xr~BXf1TluN&NM}p Qvj6}907*qoM6N<$f?IR-z5oCK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chimchar.png b/graphics/object_events/pics/pokemon/followers/chimchar.png new file mode 100644 index 0000000000000000000000000000000000000000..9db06cd98ac94b51d7bf44516116066362c9e013 GIT binary patch literal 634 zcmV-=0)_pFP)8bg_0qN=a*|~9n5fRZ*L7`buJ@ljb00009 za7bBm000ie000ie0hKEb8vpK)IW&YP#g#F@ZQk*c^pj#Au+>6&=T_q z8gO(HTuy`xnF`%Hv|9^Zq7~ob;5oTCIUENL$E~-VBAg)H(LZCBPAy3HZp{mA{pFdL z7E0j;zf(THU;O>_sZo?e4msqIhm*n|jI<1AHh)If{=q0GED+2~K`z^*D>pKQo6Y?N z1=7{BYzH|@W~>JU-Yh!asglH77L7@u9?4vZ00)ZZ(Fr4P>%P@MW=x3M1qUWNuGL6X zrE=?$iIHx^ui-Z$n8zJQwWEn8bv&?`Zv9Dg4bD?EPwC5=jBdA@%#0}nsX*55; z#~+Gp{_119t%Y;2ojbfwEN~dLkKw=^t@Xi?RP)Vq`0q3$KmOe})$&CPOyh1Q7hrvT z^A-#!y;|QGu%BsJ&~z z1(dNy@&hQyr?v(Q1zJCa{Z9FPvS0qR>pPwu!X|Rs3G+~~pkV8-``CV&_1gcOAEAY; U!lePS0000007*qoM6N<$f|Q9N-2eap literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chingling.png b/graphics/object_events/pics/pokemon/followers/chingling.png new file mode 100644 index 0000000000000000000000000000000000000000..ced46d317a63a24b268019a4a3540b0f89de5c49 GIT binary patch literal 554 zcmV+_0@eMAP)G=Qv00000THles00009 za7bBm000XU000XU0RWnu7ytkPph-kQR7i>KR55G9Ko~u8^ar#MCkruJ2+|?uXycI0 zLM4-lq?3!3Zg%QW=~xR5{)2#1J5(I~2MTpM|3QCD?*e+?U97d(4uw3(aCu+e_udN$ zLOF8e$dTjUqW+5T*#1R9!Y(WXv43y74~^XoXvTJZ+-Jk}J24;ogJJXWYXki^+Z}^> zOEIG^#8u{KQWiJLj^_|Dq#D50i@}pG<}2`7j?BU_tEB$|?v$bcn8+A#EU#{^6A>vb z*HagwGOMHk6r*A?(p%zz_|kTvNK}kEYo5#qk>x7NLcYNRjUd$NC8J&o(9J;%4M6^& z5ItLx7#S)H8G3k~jtP;py z(M7mQlhB*k73+DT2{@;~Eb_JFxS+!kwKB+`e=H6O=#M2LQlF{7EnP|iwRQkMWRq87 zZ01X+_XK(mzYXKo|z_qln?g1W_9tnhXs>w@%`s z=+-&kKy*zzGzeX~gu0~`TGO~hTzYhK%9suoLqC)~-h}%@63|V|I|P1B`#w)DMW~*7 z>Zzxm|2hX(Kl}mq*|o^>!k!$UIP6;F$^h(}W=m)z8djMInS6j~2%a|t!}Cu1kBh6X9X;;CoHtQ+qoQ|O!R2tRQPGRdMWeJyIb(fhTh}> z$usDmSXF-1qeYn&*B$WpWW$H!Q>W6?W~m$Ay$~)N#&v&h*L9?O@+G?4^Q2+n{0000000000000004G(I600009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K)G=#=Ko|z#8xEYcfzFCx=oSbBIvHa) z$XvmHP_h|wscFa1ki$Qay$wYCmGum1zPtF{)~UWzo_oE|Qz3-(>C>mrzX=WNnufRu zscUryw5hueob1zeh?`jZG$V*j-S5C{k{m+ZM4BKrb=P@JB#Gc5W@1T$V=1oG?#^=H zMC?;>dnb2h(!ASL{svF0yG<;b#Hi`G5~7@iout{<0Xl z&b_7WfKK-%Z;tzFa$a}=Vyjr%u+x1>FdgJ3vkm8%t;kn8-7@qc$VVY=YqvQJGt9IY z#^B;R%MC}{R=bwR^G{{7W|@d__~k8^abM{p z--o^QP0UvgtXnSG87;tKgJucdkTV8*&e`oibOiooWMcUJt^8Sw$0ij88X<0dGDLMJ6;pyr5*=ecq!C^r`K>z>%zcj%100009 za7bBm000ie000ie0hKEb8vpK*3C=XU>pbV=TKT65FsKm86HeoVX*el zz{X$)g(?i@VKBV~qSCky6;Eav*>RhL2~mgbBe7Sp_z&zb@MK7NE*)C&@PJcLy!3C_ zlb9!OOX@av*kQjz;ggr|_sP=~3c&yQS0;5Umm+7QrZYBj8{c#_UC{Fv-7R+YMELAa zrj@Ouk**deyZPpVa_dOyYH_lQ;c9p}Q3H?`?+i_K^N~2&PPP#VjQSS}h$yxb4fj?_ za8IHJAhXcgS|f9b2GgWPT2g{no|>V+sOh{}IBD#XS4&Bzf!`tp0gn#89wLYS$*Adq z_a^MXXFCa|_mFJ9H3H(Dnm8mRuz^w2zyosJG)db`Fi3Gj**w<|Vx1ameYOKLiXL)c zv}N)^Q&!vBQoLzkpHK`Gq`5w{&JD1qxw}TlNJeX_K?9(ufr4%2?RKyrWEwb#5DT!R{}ULrDWY&7d?uyf5 z|4e5eV0O7<4FL8;bd1gRQM+yE362EP*BGk^Y1n;@Q{#(5;Zif%<&HZ`7<+jDEsN!a zDb+gwuMOe@!4`&RJb&fy$#gFZZa}zXg>(ChyihDirW9|uE2tYqp3i}J zSFPUrhN__gyxvBr^kyHgA)&wuH`SS}An=uCw=m7j0mgQlN%gJ)2&~yr+iLgxfJU4GuEw}K%HY=oem_XBmf%7Jo zKyXr{9OwU+p@r1rZXv{2?mZKVo%Fo(Te1rmZL>oAp(BA%Gef2grBb5pqKjGilom^F up<}l&HW13-H|OFsROtA+@DBt3+WY|WK@CXRFz*-u0000*H0000000000SBp`K00009 za7bBm000XU000XU0RWnu7ytkPp-DtRR7i>Kl)p>EKorNb+?J)FxCb1B4#E-q(d=EL z@mXxLilCEd4e0Ej;82`ZNXC$%xelcvQ|^y47iseD+5{;$2>EWG`|`f;y$d-_>(r@J zr%wMz#LMhfcFblbAbD#nG!B!GZJC^gv6Qc{kRB9Tv~UsxVH1x-#_-50|EfU?lOSMh zjuue3lq(A2?N~I!fhzwLh?V2*I8VgLhn1&txz*nF?dRpa-Nc&9iXz+qar%-Jm%gYx zmCL~1)AQF&&u(JPVTDX>Bj>Mo3P$?u+stIZSY&Tza=ar2s$44bX7BjVB7!~S zA2IfTeZecA_e?fGfdxlO13lsZIr{SX9DvtF`ryj<->@$@TKVA3PjDc()=X|dhUb*_ z>#jOmQo8?GjjT_W(`nzW{aCQKV%?1oa3Eoh#N`Zzk=21@C>Ux#OAUjL>IM^P7*=(K z8FTtL%{5brMIr^TP#~lL6yG^Df%2L;g|zmwp=05+iwTuj1o#Ub@Bu7z-n+a000000000000000oYh!s00009 za7bBm000ie000ie0hKEb8vpKmOXFVJP^l;Eas{%PC69?3bOth9a?lO zV8zI;w0NdOXi7E{LsaHfo4eHN76V06eah$fBI?Cg+}|K0JZFSa9m`ThlZfJ?7IyMth5Gn4v>~{2SR#l0kpo9T~+-$Q=qc zdd%B&*vZgrtK-zW3G5xZd`|8*r!m=(76k5cM!{z=cDPOcjN7R*=a71Bp*sc<{Smr( zuERV85jo}v_h<9r6$Yl!rD1sV?#x}GpHe0w`x&8+KBP>?X{{57IidIdemcR(VB!r^ zRHeWDC5I(^26j8R-{SsR)1Y|m9pEFf+X@xI(@8LJh%V|8g$CQJpy(cvy@^@qC_!o$ z3w!J&3EhcKaI2DF$2vLCbmf*-1cC#IOuYkF2<-C4-71#H*C}$SAE_M`CRH`C?W$sK zMTG`Gf8M~NbPo6~vU%_|FhJj9M$gb8c!!C>^#hrG+dMScItfNj{$}lNjcxVtZf)8J zw{Y7=uG=eLBUAl%-)!2#gew!QW8tr%x}KL=RwcnHle)dZrg{Cgx(zj(FqN#%FS6(P zh2aX>mWi2k8Rr+T-(;tGC)n{->MFDQyt>amsl43jLkz6^l`r$#}IMREM}Kgt9hIf`Oq;`WT}8sOF$PD1DHrv~1C~ zj9Ybxt7Y+_6)Fh^E?H_*0+uc<*lINceTWGtJkFR34ng(@YN}@eir2zLk7_jeKdu~wQ@UBfg^X@tbEtRG(i_4955qCZYd$1WrU3Xe3sbA6NJas>MDtS)vmuEu2Ucq;|kThbjf2XEMdCdrNA&mkn>!s??8RB$2sGL9Lq2L)5S zSR_nI4B`(K1N(hO6oMRKeA{A8dk6UXA95$DpJIwXE;z>ipTICWGUhO*D^sTOY5x21 cbc)Bv{|gl!w;a+E!~g&Q07*qoM6N<$f*0oM{Qv*} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dialga.png b/graphics/object_events/pics/pokemon/followers/dialga.png new file mode 100644 index 0000000000000000000000000000000000000000..2cef990b3c970c35e665b9b5f26ee6534b6903e9 GIT binary patch literal 1686 zcmV;H25I?;P)p8hHm8M z_;1*IcAdfeo?fHus9%B-^7+a7e5LoKXGajyN-M3j(n>3>w9-l|t+digE3LHBN=p#H zE&2bUkhu-N%h{X9rCW0BSC4Or=b+z<-`}(! zxJ1vZNnSz@Hif&koxwknaX~MlVc07(1M;{act1_vs|ObeIoJe!+wR2#i06X7dpe9x zVghiu;Eg8V9J$NP03415kzI%l5X%MKh=x(9vjcFrHW~L+SF@`LIoL8#A0dSqfWw8- zax{t}?P)?TO(NnqEHDIl{PqF%rh-c>K@OLCQKY&Dkv&MpXM&?JK0qA5T>x;Zz6@1& z*+%r643Co*-#8sbNNFeJpKKe^^D!o)l_T))$0f<&jkVRg!&>vlbI|ssQ?o?G#FD$S(8S|n5HxC?6IDKGH=4om zVgL@urMl*-WtsO}MgR_%+COfrmC31T)GN)!CJq;|Rn6D8^Ge$b0?H8La9m4PkqGWt zi~u}dyt8rAz|R=Z>+Zawq~vgH*w7_O(v>FFkH?AN!w&go2Z-kxaXnn?dSba`9l4bC z3XhA8vMx)qt~+!;9v49OVW->aSj?pehvPS#p(z<&%inUhXd!uAYVI0vT`t#HlQ5P8 zIjiSk4(9R-loIf%Ae0P*28Vn3S^_Sr&)_=#g3L)c=hSBraGw=}tmEX`yY4{(P7WaJ zE*35a)3L{N05ugdkjN6lL39I11)#F&rqpXpabf|CSNp zn!lkMfHi4#JqlM%jsD>kj|<>8Z*7QB{|Op+UI8tvIWRxPGoWvesT?>bqj$k}-XDz> z>Rm)JCNqBirbrdgPNQiJSOMmo^|6FrYK>2kjmAhrsJGaqm(Ebwx6v7ugOYLeu6uvg zk4A54f}l8xW_+yC0~lzC^&W@x3&`gJI7Z{1jnF01ph;;0$76K2fG@(B#(^}tsC0h+ zrTb#^o*rN_=WpqQxP|&y@DW1Po45e3d6gBwI4j8ONP7S!>VglPje8JJBkdB>IG9}2 zg8R9)H+oMULejsSCD?l$4NZjTk6Q40&glV3%Y%X`L-`BHxJI8BOi6~U1~7?CZ?{x~ z(O=a4<*V~4-(Us!AlMA(BMg*-T3kS3`lvMlQDn>_0)WJ7z=BY7N^$_R^!qr>bqHq# zoC`J_#{OBS78j7bL=)n0AO{)Ouz4~Cj0P;&78@RLayhDip34>qX9mQAqiDDyGfx1N z2xkQ(W_1#7wq;^w0}&+uK~Zv9T0Y?C@PVZaGawesJc!N(nR*AoYr$*I44~JY%zVql ztcIB&5m9`40AHDLdcdjR#??6zwUvX9_117^ZGV0 gT#4VA$8TEy0IlnjH+lskC;$Ke07*qoM6N<$f&%{_ivR!s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/drapion.png b/graphics/object_events/pics/pokemon/followers/drapion.png new file mode 100644 index 0000000000000000000000000000000000000000..f84879346d42370132fa658398faf5a04f8c3d40 GIT binary patch literal 1059 zcmV+;1l;?HP) zd2wk$ak06G=Tx0U;qNd4Y*hAxV*8p#T5?N&)1100009 za7bBm000XU000XU0RWnu7ytkRnMp)JR7i>Km9cB&Mihsqm?F$UV2!JE9tOP89$Q?t z2<8f*n~+5ZTSZs6SU8R}DN+TTTz5u=kl~tK5mG6#oEtw26(+^Oc8M$3*CvIs8;lD5 z4S6GtRD5wau{Q+va=152DB_x^%xWW@>f&Na9dm(o+>U2ojg>9znNGSy1PVy3gd5C`c@dPWd1{2z@A$Z3Z#5Tj z(hGZj(hU%79Lyanq2adfSEt1)2 z?6?t5am&G*vG_3|t*}lyW)brAk0(o2OX!5irK&?9X)2n)I-xg_@{yI$uolt*t|vX> z4sO9#hz$*^gMGaC=X)nBv!QE*$O2~Z5LDbgOM1Zh&F}Ajvl1HCLOS4h`gO2}=@^%U zdbpbnd%6MM>^ojo#+~r|My8olzE)xTa11z_-X0!;mC$gC0?M&YGcGd21BVI3sAvga3PW$16 zJa~I@a^?07o@yraF~{X#w>T^3=ll{yve@A1y~DCS9<_?Dy&@~PhnGS0ngzPRRQ0?gxLl#bS{1E%6^ zu?X`7=n-KPmgJdcZX#mc87|(5JZTX~o*_G(!5cXF6?u?%LVB>5$;pevr+3DeL d`RGQ&zX8gO3}KkD#>M~u002ovPDHLkV1lUO`*HvP literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/drifblim.png b/graphics/object_events/pics/pokemon/followers/drifblim.png new file mode 100644 index 0000000000000000000000000000000000000000..69e8ab561a5ee51bfe8c4180126fe9c86652f1d7 GIT binary patch literal 611 zcmV-p0-XJcP)G{#ISpfk7siDbf5g9>2L1}4$eyw>900009 za7bBm000XU000XU0RWnu7ytkP*-1n}R7i>K(XmScQ5*+wmmoNDXl!se0wKx9ocjw} zbZBXEvdM-g1tJu9K{fl}2nxa>h|@tq#kT11VbLED)*_`{5HuCh{Z8@je%^a0Zh_z7 z@bkW3?>r0yW|`&RM9GOguLvAOB{tlTwiTiKlyBu#b(hHSdl*$|PGG82#<6i~Lbpq7 zD@VFYX`AmprMg=1cK?`Cm7UogvXzFeQ?(^BRe27YpPgfDh!kPwE0;Ba%^$_FbgVOa z=O~e_Gg4=2k7xqxtj@8N?lV`34C%&5qY%z#1+Lc#$K6;Om2O*S2eI^PHIo&XkUYo2 za+vaNY<<5k*@nio43@nu z6%XNQc8P4At#*rh*+-3Q`Gt_E>}_fB#9bmog5~JS#Y?0!IvCj5%d)!%4^eW$9GB48 z%=7o}`O?QtXtWu)3{%lO#>FDUVa^XovM#jjX3m*oAM5m%d$tzcbs!_ELg3u&r!ibi{%cN_&e?xrbi(kf;I$CZ~8H1 z+45$~PPM0Je%?~N|MUMGgJ~WrLW?W6l=PQY@7OoN_8O~|=EdE8_V0pj7=GF(ean=m zb;=7y#Vt?MuPk-g$S!>VMf2=6~N-JUM)u`KPDXKQBE}{&C&BHxt(TxtKq< zxx!kvPyAKHC7Wxkb^P2*y=EQX<*=4V^lb9o#EAE0rJ^4WO!_Z;E{1*6)tr5NyMpH1 z%(kBSn0b3mY#`9~A8Qxxo?LnF^0U*^-uOMUjA@wvLMDCQ{^$c|&8_kazn^W`s5@J1 zn}7G)7kA$NVm{pF`=M$5%@;L657yaxuv9W7eO@txrS38lCp}GA<2Oe(P3dxQBk3xp#T5?000000000000000lqnw$00009 za7bBm000XU000XU0RWnu7ytkRAW1|)R7i>Km9dWFHV}pxh|P6Tb`J}+l#qj5*&>U` zl`RrD(A^b_dw>K%THh82y~RlsV2n$9o7GchNK>*zc(cG=lK>fDf&E6q{~r!Ti;(~0 z-xBf9Kf-TS6Y|sJryt z^mQgw_H1!huP_Qm3pl2P?1aVj$iBkU7$M`rwD0@#Vsn#GP(`dirBt>@Ozm3ZdE*RG z(9&e+Arm6cHg(?I=Glm0P?QmSFT(M$Nl7!k%UZmbt+k2 zoRmL$;aOU?f{T}yG3YZ8m=PrmYz;}Iek*Wbe3TOblc?_2;?FXdXF<-)mvq64pm#vQi+Qo z2gB`OcUds<#c-Fk{kcDPqd~xGt@Qi5*1S)Y6Qp9~o!B_RvZ(>~z=xM$;EP5D;&|e# zQ846P3wl-aa$ia(sMgZ6_7@2SAK(y!7*Eaf#V~3T$sryEL&mpOni7B;?SBfubH&n& zgoYTJ1jeb(nSM;Rb#m>Pe!PEZOfztFVusha<@%{`f@tWOx9sd{WDEe!-Dogp3W{%= za{P$tPKx9X296+K(!(KnICPN}w1%EZnVXA5VmrPc6av;P}ks+Uu{PwE#5f} z``Rp>pfwygD!z>~nM^3)s$^2=>x9xa=FQbEYg; zT3qcb)}j8S9UCRMi(v)%gs)uyEMH^VDPEe%_LP{hZ>ikO8D?CX=>`H;bk+`j0rg}; zKHdcxqh`ph($ M07*qoM6N<$f~+j9E&u=k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/electivire.png b/graphics/object_events/pics/pokemon/followers/electivire.png new file mode 100644 index 0000000000000000000000000000000000000000..35320b0517b68a26c1633d1f8c7fbd2c1aeb5df7 GIT binary patch literal 1021 zcmV3Q*Cap~##Nf{w=Ss4KV0RR910F7~f00009 za7bBm000ie000ie0hKEb8vpK)j^BfMid9|K?HotfCP)xg9k|$yNBqS zTiHw5O9@$s@t$-p^kQw-$OI}F!{V2VpgpypAm5<$GlU+ph0@&Ikp;^u^FLdLZR>(1mvrAmuQ>f6lx!^ zc#iWa$5taVHY2o5D&Vnzg8cgCyiFV#1L+3ZT9vwiWgOXHJwnUv)!_m$dGV|b9GO&W zn&|~uIY~~8Bcs`s;%!#y5n9HH;JAE+Jkb-fje!j=xW%8W&duE+Q-H%!u|&KTe#SQIx;d{QP^i~ZJ|^RY?FrHXatisaBM;jA%FQE;Mr^6 zi%(5gPN);N;03CIZ4&N3DEK>~1IH%hu?MS*?fzy1;oApXU3<_~I8RPZzrM)uOXFu< z;Mj!R6+UD>&ww|-DL)xJYa1}G^L(Kj*rvZI`uw?R(E0biK^Qgyqy$!YKK^Yve6ZI( z$F3~SmdndVx|{OUq+xu~{5e~byk%$ixv|3+jLDzBkwWa?nvgjRRt@J>>dH&kJ(KP< zQ5!h+wR-ai$?nAsP3e0a$syEb-J!^N~pM4C>gtV;9-2B+=6gvBnb zn!-#3&7&9&y)ls1>bcL$5L5&3jN66|kE*2JtaAL+8_10#H9~a-gM`Vdy8+@9uoSX4 z20C~Ce#==9`}lsV`N0v&v!HEAWJxg*^M(y{rcy^l47gk-rD+fYXPe#>@AEss#Pkqg z7FyyJDHH4uoQ}T6!8FWVn+;5~gDw!4T+Qm-)j;j6$O%f^VWxqq} z;`th1U)=_1rtJ3DM}J8fk)dK)-yfUMr(d)S`%*#gz8xB7`RRGpu&Z~O8<3-N;-@J) rKF}^0*EsNB&QmEzC*?yc{+s#-Ym1{1iw~L_00000NkvXXu0mjfCB5rt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/empoleon.png b/graphics/object_events/pics/pokemon/followers/empoleon.png new file mode 100644 index 0000000000000000000000000000000000000000..cf127f9bdb9a62c8e62216ac2083c7608375875d GIT binary patch literal 824 zcmV-81IPS{P)K*1b>LKo|yaOBJV6HwF-4YZQ55t0gN+ zx5%=hOt4f5)7iONj+wf24&b_unKEDzwyNNoV?;tx`_J`!=a2Ixu3Bg}US;{^k)QW$ zVFg8bnV0!j1D@lp!+Iz?n<;v_(NVonHapMw5Iof|t{2K?=lRgu5zq8jhOy<;7u3xz zxSG04^c%;H(`dL1;@Seq?1KHN*Fw#hY^CN7Xn=k@$}d_0aCtptRSWY*yM z-q$!4+GNuKtT1S_!wLhm+4Jabx3)ks9ozaee*e)%O~&+z5P~-w9z}OvP~DzvcEOwL zski8$Cflsg-fVdJrRAE!0?F9`v(;+tnvI50Rv2#f*46g~Hj^@xolS(DWsJR9qY0Y^ z&zHM>Re0#K>48Ynw``N7jVAlqr@?mHaNHD?b+WSq^|0FUdc~1o?zGHLFVovaROQ@x zerAN^G^z?^D}az_)gSzbNdDlw!l=kkFa6I8AC}FSr?S8~K9lp8be){W9m~xqqM!37ND9#exIf z5KRlrR~PsA1ndUuqeE^*N3K7S#cC_9< zz7^i{m4+v0m9ud*+ntGDg!ZJ1{xF9VS}62UYg)ZuvG&&fYk=EG%mXt$K>+~)Nnv5BL2;qc*=Yd*@p+;7xzRC6K>z>%000000000000000+C)>e00009 za7bBm000ie000ie0hKEb8vp(R7i>Kl`&6)KorL>cb}j~OgbK@jp+oXGBC<5 zvb7Zl$2Mu4?WCiLhOg052l(JY7D%;t63CV?ho)ImO^|rtAb8B=T&I1vgptgjfJ?+9e%A+?E6K#CB}t$3(8< z4F3$gZ6-K|Al!3F4WvJjZM@fdhZPF04fqWVt2x4w2Y7*uLsvKk<1@BF5UtoSynvpy zQJ0r&(I)8V61rkIvQWo$5S>g<)Opi{CEI~v5NWrCiD1F2eRdG!T1WBDT3duA?s~{g z7DYHY92lQD2SJ?dU>(*$9PguPo(FZ8ADH~hUY_S$WZ(m1Lo8VFxDMj=CrtkE-VO#P zS6hD2@d6tH&wdarca&PgLlC{iOP>eYG?S^DXF>1(YayiaWO$*dAUg;y?Am600009 za7bBm000XU000XU0RWnu7ytkR7D+@wR7i>K)-h|_KokIA(Mf1?ha_YvIVd&4saNA6 z|H5F5L&#E0HfM3jQrnQk2sK(d1|kb$i^Hjx{sM!c1i6OLLMc83%~CRS2pEKjdp$`f z>8wcd(6N2nckk}K=aU5Hxc~9bgz%SM8P{sM->tB)!rZmJ!s!FR73PG6ooYV+J;e~B zTQ$Wbv;|Pptl!$nh6`jam~_aYNkPQiSk&H+D(y0N5;ea-7$Ga(0&)u;2Ztl}4ot?AiIrji zz;=QaG}}dHSTJh$0KS;bF0Dih59^J_b35Mc$;S&5zX}RQ?L>e09(}p&t4Ze08YG%r ztogyG%OO4s3P$Y~lr8k_@k~uJ->8GF#t|29UN&yJjc}T%$uI66Rne?m57wxmpVtrb z$OKFS&wieV-SzPBQ*#5cesVKz9sBRDK%JwTWH2P(4%UJ@YJ1Mng=e`}!7yD)`T!==xNr1;17{%7q~g-Vx$EDKt5-uatI6d#xHR*zxV>*JPtD z8*Br|ryI23{N~MhK@%ap0pi-71Ok(lTE4WH?`01X%x9FTg{Ljuch@s*zzsmJ_A`&i zB{lGQn=yH>fw5N|fo76ho7l#7CdoVydu@OX|Dg&%tO3T(4)Rce9$Isp4cyBp54d#@ zSlD;G77PeQ9cn-f4d9YVL9(*+?KvC5hC)Zj)z_NM3R;NX^ zER)wDyWjcWps{(0TMoVxS%})*)MWC_r}? C?y0Z< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/froslass.png b/graphics/object_events/pics/pokemon/followers/froslass.png new file mode 100644 index 0000000000000000000000000000000000000000..741b66a3b1d18542868447c9107a74c378a66665 GIT binary patch literal 773 zcmV+g1N!`lP)K)xm4pP#g#FoPvSf#{Pj|M}#sccqwkX z>{To-86AC~w@^YP2X`FwRs_M)4T7C^nKSo#@lYqogB`XVcJSmxCL@+c|Z@_66hd(UU&xSP7E|Ds}ttL>LjU*TBgz^J<)3|A82xzOGOE8DT? z0N|(hvYqd1ESD@Z6bJ21cuB}tIv{KTUl8&ho6+VCY^zinv_C;2q(ldV&Dq4QDHm<6 zw$?~fY0zHP5@)Gup6!Mg*o(G+O5#x`STeN#Y}&a0v1gl1Pe>+ClxW}D%!o&%y9|TA zoRIDJJ9GdrLYX*1(SEy0D(-%kONRC*JW4(Obe1%kMo5yv4FVr0z4MZngV2|Ow>#Ml zx&biCNKza{`xt#m5qS_a0QT$0oknlxA=?wlEhXBTypfa#!EX!NFZ;u*?e*yjdw~q| z-&mkGCXn$y8hfLGR!MhC=c4b_UJ@Q@1v`Wf6YawUK|FN1-iP33kX@M~j0RaK|;R#W3xv{b7IZ=6Ok-@n^82|tPFaD(e00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmAh`+FcgLba3~+4dzT=SQ1&9I^dn^I z*cS*gHiH8rC=?4w2}6E?juBA12liBCYBvpK6?t+7BQU29-t-J5tqYHts0Cc0Q~pUG zDgOWAMU>|~>QRsSZ({5pn22bn(`AqN41f`TUw(N#-SKnT3uUg!an1o8D$jxOlrFUk)_1pb;q?Eezt((hQiCiePPGmRF^_UK(x?U!%q08I0 zxTn-Ih`Je+f)3UNkFM8k-#y-neNyTR>t+rRK=v??^<2NLqxNl=s{v1Y%Zsd=X`ZfT z(Zf7m{**UU(r&BETam;0-Id?Tj27vtzyVvXiX?CmiYROiUDgtUz6LnOiH0LlpJqDr zlU^XbcGk=@Ob)6@@*W^gZ8?o*H6WGLBwrRma;K4frgJn zla~e|Ksu@ob>P%+9M%<)&8cP^KsNfSni4#R;m5K(KWan8?T@lNJ7`Gw6to&c6KFUh zb(v)ILMdcOejOURlz<%Fs01cuIY5Te zFxn@*0wLIgK`L&$nG^{&WFt`kKGx*(q~9N$_+3nMK3it?OS{J>Gl>l~2StEZ$a|g+ zCj8I_TxEkv_{@X$mTk$r zh<6Mb#|xx2)aDd5ndeKi>0I&*|7WS-S%LzGD6DFb&VB9lyKOYW^;dJi{UUY--)s1* di2rBq)Njkb-_w{^ChhFN0yX<;$3LAfzW1E<=L00009 za7bBm000XU000XU0RWnu7ytkQtw}^dR7i>K(>-h3Ko|#bA>2Vj1{o467mQ`xv~o%) zw2SegA&bz`euKu)KtF*=z?nKUo8*|JR|OZ35qM~t#azCCiAy`R&`^pzwAkQ-3>g9) zdM8`Dmq;!&rBj~mclX@?IZ3u8-PBF}v-DuTJW#@U)NVQ(~ z(b%W&L^LTE1sxPPsoq1AF8YydrM`_2qJg5xQcFia>nJFJWRrn7kh=i2T*rAR7YB+a zfrBCm96so$7!M?Y>;;P0fa7dVbP@Sd+-c4 z)AgIvraf~MC^>f3t6KDl zM#Schgq7lDL zS%TTOK*02S6)r4eT2}^4&!iy1{L+7D=p002ovPDHLkV1iOX Bb>jd4 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/garchomp.png b/graphics/object_events/pics/pokemon/followers/garchomp.png new file mode 100644 index 0000000000000000000000000000000000000000..faae844f780ecf293a98559c41386c3b9a2a1e94 GIT binary patch literal 1162 zcmV;51ajQK_k^VR51P;R%5;5$Wmqd6~&+X=wle00000EV8yV00009 za7bBm000XU000XU0RWnu7ytkS07*naR7i>KmcNVSHWbGNBI>sZT)1kAD^e*acD&16 zmHY#XkuYHjAI4fUJ6DBWrcI1}f=rV#kZJ=V45UgENEMb@W7s{(j$+p5!Iu|AtNQ_w#?&Z&Lm~)`T#PfAW9Fv}v+*q&H_~IjfA(WchHK4X{0G zlC&q8P_3s1Gp=M>?yPMJndK+hcDy@wTzg)51~;omOEPCt+7#wnTdxlJDXwIj0UlM8 zoo1Yzj{=@Cbb#I?bcP70Tw0kykC7pO3A1O5;=y3X?v>9jpPgNbr&y2#1$hWy z!lh| zEJ+>)XH5TunenYux1At944D)9{qKZ){v}3b%y`>6re9$e^kORtqr?3(WBSLA)Ann< zR$kB>BG+VTz#y`m#HKMV_Yq@89WM_~g#HToB=#XVO!%X1a<8}F?eB~ibcP1`wm2p? zASUl&MXCzMUBr-4$Mm4Q#@Yx-X?NczxUQ2Ci(>ahyV&2o@Pf|p7WvJxE^z(R3|`-W zpl}gKR&<=C-BzxzYPh`8U7x~wtIfcyNld(0EMC0XI6*MHYLOEY;kq*!LD?@MCg~!M z<)P*7UsLB$AhBXHpIZ9g`&* zRD7voD3L065A&Sk7(S6w4@M~$44N{>kRk0WQ3{imrBoz101nJF6Y}!tld(C(quvuBSvi!e-n;|fSc5J`WDN$gq%YFkz+ObK)7^8 zG3tO?8`ufb(H9MWjtoKYs3zm=sL(KU{O!^avko!5K;CUr!785&0*_y!Vmkb8#|NAK c06*FO0lnWrzacW&@&Et;07*qoM6N<$g7EJdF#rGn literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_east.png b/graphics/object_events/pics/pokemon/followers/gastrodon_east.png new file mode 100644 index 0000000000000000000000000000000000000000..75801c316244de14f05a8e4d0618e0be62272105 GIT binary patch literal 887 zcmV--1Bm>IP)KmAh-(Kpe-fAc2-b4_n3rO$Wvy(80Jv z2_CE>C#GbuM3fim;2}^l8d^c1U_%6^c+J*DO-w=c5(+8AU5xDx>J7!vG5<@?58W#$ zLm^Aa4;%Bj$M#_cq(z@M;jJLo?9JiI~KMU2x1U0qat5-07xzk7$YLc$o z7Wqk|7Y*8Ws?eJd!3#_Ul2CO!Q$Ef;Fd9H8BZzT4?LA8qb|$1hKcdSLg_;+a_`m>P z=wd$T=>v@W1`Uvf9UVu5Jf!`iu!9M(FwMX?Yy+WsBO(YfZIy*uhfIR(oJFBW1Xh)H zsu<%-OBC!(DpRs$I!G1*824v9gpggpmvU@=llvqAy7zOmK!e!4sCm6 zc3qaG8`(VLPR^>(^Yfnk_UW94-SaeSdCOSU3t@Jvd5oAcl2kJE)_#>fa4d2D2^D61Q= zf+MzMS7I^(=7!gh{lD)Bw@BbMC)oNXuoI3eBN#T)80^85;Y~9~8)RX3>juZyb-E>O z&Oh0$=!C|&9Kn7XYkTnPa2VzeQiNJz?Z;pc>+4B>uw*JEXJm|Erk}>zQS;02dw7xv zWT94QR`9RV@p=ja6_p_@Z#utM{B*_id0vQo-#_gaQiLFAX3AxFoUE7#7R&@Q6qOM| ze^&ekEjbYa2NiuEp)?@~=C}4*fgXvoV8kw}kBTiszRMPM3CO1b+vpZOpB1Zg!fY;_ zu>cfB(PtL8-WZC85;jUVZ`*3IS&p`2fJRNUs!`?>0PC{RLP9QVo|FQWXFI N002ovPDHLkV1n$Yg1-O& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_west.png b/graphics/object_events/pics/pokemon/followers/gastrodon_west.png new file mode 100644 index 0000000000000000000000000000000000000000..4abd6c42aa27fa6d1103ab30359abbba77324fa4 GIT binary patch literal 896 zcmV-`1AqL9P)KmcMJ;KorMCIDux9C0laH#Q`lv1(BiP zTx8UwDj3D0DR>GbG?2}Pi-$lc863!@I4zY46lW4riRl|U6g>5R={b&cKU{Uo zQt~i}@9FOQc~9@|u%6aW?Io06lOxSA9wF~=}Yv5=t*BpG|3CAo_NH2m?d2snk0 zrUHO;2rv*blz|#CAs(idfyTL$`Ymk9s_ za2_atpn90X9xnER0%QZ21(y;KeSu48akDKLw=)Hx2Zvk!F5g@#&<&=5*584Md}jdu z&b1EOnbKvA_@+hp92H1*m|u<8Edh0NXo2ueg3SanrOR&X3eqbvLm7w~%&#i+Km_Vr zzMlk*qTJS13RT>Y&K?PTY!M+t6{t@Ee7*$K&BzRKJL47LMj+_ff@pMoDP*Vs8Nd|* zvVI#`DJE&2v);qNdX!2v)K={0wdGPEy9@b~&6zHMUJqLdel{r6#%ASW zbQ3MTDgheZO2XQ>cvPY_ME5b?Kk(`$+UUl%ZLbXq0|ls^RxE7c#S;#=*BmgR@jj*W z*MojTXZmNpfYOd_Q_3@xfm*-E4%X^X4w!xdrfI#qtnV@zzpRnN^(_?BE z+rpbnffH^(<2e4r4L6*rwgv67`L6dcg6ytKZQJd<$R}(&jWF~$VEg5S(%)QfI3A@Q zH`GI>8~ifVL%rj)*yBNmO)cy=&9E@gr`I{+3#wr?WWQx@aIZBUdZ_$!Q1$%4W5pjq W`fSlCi{y6z0000K(?Lt)Koke?fPn#TZ(c7i;xz? zQ`pY7wpR^!jmQX|GFUp8ehOjt1B3)e#?zh(`sM62CYel~ltmUi^nd%!EALG@GnTc@ zHrs6Tb%Hkd)0rjR{`3Ym4cK7DtWI0#k$1X#0Ak=;9hOUu+ilLxMza{y9qX2%4kTSh zLK~nM%}DIE=Cv)CSmpp{W+y2ZiOI`;;40hEE%(d80XIv`rXDbZ5s6)<^wTXf{~;S5 zC1z&;+~8euLw)7Mbj$p_&PZHbg=Pc5zQIFsBYfq=bg$N)PRZ@bV`wx7|GR7O@b-+o za%F&Kndvyuzdy1EWnt-OC`acp&j_Q7@*Yt3MKnXCJ;D zDfQCjRkVi$pt%5RmP_;rJNsu@-4IGwTSj6IE*zx%L+@OU`Cr(8U;lVV8!+z=;g z-ska*FSW~b)Ao=WA(zY^b_!E+%dFP>vQ2f^4aS172YX-_9lH(`eB2NwpyRT%haAkN zR8Y|W(%*ZsZ0YHzq(e^y{|1|kKGJ*NuYSMx(~}it6Pwt?CN{B&O>ANlo7luAHnE9K zY+@6e_`i-I_P4f3^Z2nKjsNHCmyu^I8}eW$`0>DwPiChSXnyRFpH>iFUr}2b(!d`3e0O;u zX+Yx9|JVM)3fghq;%>+j4*e8Qqko4x_} z@=)MjC@`!L#K4k=t2mhge>p*I>U`za!UPE?Jt#h6n{Jq!30) zmjr4HEyZp5aa=C)H4Xw*YUyeHYfdb}PLM9NP}KVLuis3*n-Ed-@eHe!3y5(LNa8mj zY^$Wq^;LBxC6Kq(#hM2}Y6&QWeCHldc43iPsDm}9jK~}W3I}etT>a>6xM*VnmHnA$ zn=1}&)w+xi683$SGzvvR*3X654dMetTtk+C(x`p}0>vUGjHMl{Ih2?sK`sz#Lj9!7 z-jx3+mPtb3zq@IE5LXb08&H2_GG@Y~Hb^$9P%&F^(JAH4M5pfV92dXlU6PQL!X&4O z+ZzeAmHLN2Z5RJl=Sw&tP`#wWK*U8K*q_A&hOO^uv1u5Mosi322nu^c`dth-N}}acS(>%5aavZM2cX7+1(|zYtvuM zFDvd7SfF>a#02e5y9)-E+_w%o?c@Z6_Z3n&^Sn2u4rEa3Kjy$j5DEjF> z4k@r#JYd)w1%Z7+j)|qWyQGaRf{3e^Z8A$5&;sa0TJ`C~ICROA{QgW!COCj1Vs^x# z$Li7>m1_HTZs%LayBWJhcwu_6l#$$7Wk6ZGsqxxHTi{ESVx+ zM2p;n3=PAoPZg8z|dxJTB2_G@U5f3TdUXNeK-VyO`P~OL zVaB!RdDqu{{AZDeI0!ThchUlZ?{wTioGY?{#n2({&*qmqZ(A7x2N55kzj~<63vXl? z@I`S0D~@#_F3^Uzh0=fvywX$pWS)-G(UGX}X9g~CxZ)0Opzni_)kpO`#1-u? z^+JiX#w~B`VG1AM>d*TZ*Dnn7SKc`;@bo<5gA&G@eKLR=AM{CKy=qFuac4F(sU=L{(J5Q0WUTOsccGYq`A zy=^+q&~e6&=N%ngW%CP+GkWTL*6W>`XIE$jERPL1cNj%E7swasdFJ)j2>4BwK_x#l zt>^z3TQ41lH9_FH%ne3v1s_{S2K^8x#Vs``#gXef{XlxX&Q0 zGShqh_p__pTljJYX%z-%%zF->7Q#Uw{Wu8Bp;JansPK5iIL|T&0{fnEbUt({C~rI- zS)6AXgc>-zE>Z8WX~0*@NcSq{9X|g7&gsL)NpUXFVu5d!w+yVt)uBL zNoA1H#hl+)InOc(HR60(8ajohF&q^L(rZtFnS(D&=HRf@PjN2r5r0*nW)m+VYEsTK z403^wpvzEd7`Oq$q?~6N1PNQW{qoBnhx`jWrT+3q*4Vl=`3I2*0>x2y@j(rcQm8x2 zAQ$+|IHIbNv4)I(p7Sh&;vSknEs}8xKMao|lYj0Js8)-34VS7R&oBrAm8N$Mdw={% z%a045VNfXSg9%*`U&sjjFq|Vk*#ebJ0pXxo2Dw1hlbf@24)8345cNlvT7-?P_(HDc zhv6LY$rkuvWD8J~v+@1c-p{!NF?z-n{4hV~zn1#`k^Wu({rG#we*m_s!vVHB>r(&# N002ovPDHLkV1j#SN9h0n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/giratina_origin.png b/graphics/object_events/pics/pokemon/followers/giratina_origin.png new file mode 100644 index 0000000000000000000000000000000000000000..14043a68083814d7afa85cc678ed6bab80c86c68 GIT binary patch literal 2017 zcmV<72Oju|P)VNntJ`Oy&(5ji=cMo@RNV<3kyg^O$5DoYjLzhe9XE|2I$6KcMEn?>Z_YIQ*O29-Mr13YsmUas=b$s2cQL+owSx|$VVCzGCdmWNw`pi(2s&`V!2yfL$`qv#;2O1L zm%?o?GZN2Ax7kdj2l+||9Y!1)RyiLf$=`ecf8#CPfw!Dk9cVrDe?Nc#Q+2gSLBwGS7PANpjN1u^hP!7|R@#I9zIVeADNBpL5}W&NObW5DEr?tJO8Sw+3x4 zyT0W6k-_oar3c_ZjYby&V=C@k`tPDDnMZ``QEngBL0_L_j~e24zD}LStKjM zZvVG?-Jfx%SBntUMhYi-kXeKtWD!RF7KIWwAu3#^yI#=1TEUDf;M!>rs|@<&`n99M zC)g#;A`BJIs8IsoL6}7t_3K5zn93~kbGQaF`nk&2}}`@z)Ti_E5gJG8OL-ptCZ|t+u$2p)Ybxu_e*srkByN5cJ2dEW zXfhB8YYIu+ScI&qSZjI9oe5gEL=nn6aklj+JY-szL0~!xnS$h z4ioim@nFocd}2KT9n7Gxv9apXosYi^J`y=3W86FxUNankoOtF9UAK8+`^lu3lPdKV z|87vsR%4%%Ii|1C0vNU-wtRHgb?*&s#Y`?aaQi2ubdqzgn^iEaFv>vP|xY4F*UF+p~?Rk(THCH~1UT}aZIKl*ls1-yC;IsVP!Om94R zdnuQr3kE0t6#oLc#G7{C^k5>+lQe}-u5*6$)%)=3%e^2-(&h;&to&G+)_wpg;!eHs z!QlGw@wKBy{Ugixh5QbGA*xjD1Lpb`aYD9IFG+{Zvl%!Cw4T%9sP|6XVF$tb-Q$~TYVU_;ngFIt>3ppXRChQXK=&YGQ(`Y8c^LONavKwHIfBn#2WknpfvPUpS z^T2N(=<7QPukNsYHyx#*O{mmoDd3QzC*CjV`A;_zYn2sou~nU>Z<6Hn!L+&l7kre@ z$@ao);KNK{I&DmHCC3!qffPSJb|2cRtcVk_Rh_;W;V&mUBV&Ch;KWH@ze&%Aqf^#g zq`fDG16Oj9q7)R)h{K3EcmXHkG#5Yi7C_-}WUT)LoH+bj&tv=P56Rc}pWFIC0Vj{e zDPz|J6LOs6u?IGMWUl`N+~M2L{z_hZPm;jtzXvCdhx+F8)fI5@4D-Ajw)LNYJ8OVn zybhiW>_1Q!akvZ7nUC_-6>(u9i>G^zO<)lRfe_^m`MzU+vxtKQL68q8;A6{;|J59` z8b#(hP{98?yCVKY90lfll1;?_cPsk;MV5P)K)xC<_Ko9`nEtc(%{5-%Va1UT(Hz^cO zR*<67GB|EFSRNyts+>b!Afyi{f>kX9QkTN!Kvx>W1wB-xoTdFa%L(L?%F}%s?+*Jn zM(7l$IK}@8UHko)zlva|d>|!#+yZyXeBL7$AWSU~$$5Zd#=1OObv>b4KyY;&%ifT- z$D$e`Gn7ZGu1e-fw-+1S2e(hw^so`mulv^RrMu{N%z^q`5aTjF5V)shXI z0wko}0>y-lonk$nHpim)vcC=upzU<3t0foi!g1WIb_*0ENSv87PTMh($%{|x>D!`B zs;(zI+f3dVlkd;yVI%B+bDY?12S_Hv-pBDRzvimzPhX!`w*twtIa4;*4w`)E zt)^v)n#a%0!woNb!&2o5tF%%Xho0NJM z>_U6Tot9p*x3yWWqI$c``vR>oZw7cUzrKb(>M(JM72E*^ZljEhy+=3hfCW0jaVp#7 z1?>J8fX}bAE+fn$#?QF67d3CmoNNcNSL){eR<(}#IlLbQ#qHuX?Q-?*!ps-8&}UH; z)25icOIi6NQJnK@jlh@{#l)apMivVr@u^#NfyR2UvlwG-dT;3u#e#PeUpwN=H1ke_ zpNRz?_}8+)6T2PGz!Uow&U2|7%Eo!DTTIATu;ku`v&0r#IJWgnp723lENCT~;R`l$ z&62w_vNb|QL-pm)^MQ-7vE|kSO122e1JqC_JeCLb_k_yB|7H9HKSnHz=hs;o00000 LNkvXXu0mjfEO1jJ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/glameow.png b/graphics/object_events/pics/pokemon/followers/glameow.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba92443e9749049ed11c1676372c12e3f2ff0b8 GIT binary patch literal 556 zcmV+{0@MA8P)Kl|f6xFc^k&5OT=Pi)VjB3KPBAKp8oE z+I_-y32ZaC{sO%^aCc!7y#&ncA%D(h>)L#2GDNB%>^+n|Yx{lg7v5wD9d*=Ee@KTxs(T(3{`ar zvmfeq$PG>tVWLciYh&ha1HkwuSFY5#*1M^;LOdES3YSRv|y6~nVY-&6X` zmAGEjbNyW!$IbQPg()TlxYC$;8CJwGU+~)At_mjiP3o(5n*9rnVFgS**PI0A(^S+X(3UmDH*A$sbOJp*JR!r00009 za7bBm000XU000XU0RWnu7ytkRS4l)cR7i>KmO*RVFc^l#tX=XC!Y)HO7;-XJ+>UiH zgYCg)SYeh1C5OUFd)vhw2y)G3KO>}vfv<6P5&H*Ym%=Xn3p*{%x%(v9iWQa(vK{-; zQl3bDAH7NlMd*I+=YNcs>OVNybN%lEsSHmT?+q^4g1kFC5EM z*10Tp2oaDQ=`db+?^F6>a){U%C z@1rPE%W@g$KyP7%Ueh5fs3UMWuY)#Vqy%_jg}M=>Sb+*Wsx4!wD`fm=;p98)jqAl! zKd_kA>K5{DKx_iXin$5Qm-axBZk#R0pRc?5no}#_`Qqy2QJ(jUE179Q;29y(jUdqD zVBiH(fu3B(tuTW<2m`!74{Tt=d29u&xIO9TFZ*o8AVf84g{qMXL?eE;W&u)xc+85a z5l-2dA@oq)W+$-a+6uB&qB<{WvW5n#Q7cr9R3LovIZKeI0&zjj)&!dnnsQAOf|v~L$x5GLX6;3Oo)gSAC_bQ_u`%OC0}m>4Iga;i1_6I z_7_Bu$GTBSjF6~CC?vk140;_3LV&?Yv>^1A520s2`0;5c&~UyH48;ddFU}$+CXbs& zMyMMhPl$5Bq7fWGT&n$tLJXA97s6yv%4yySRGhJ;W%TI-&))KkiCNRA73xMkzw|{I zg>Y~&RO>xKE|swKC++*nUO0ikDJv|Zs;WkuJ*}#lZDfSH5t{n~ZX0f15WS&CLbcaR?P#LuP(cRz$F=O z7|v8>ujclZUL$Ou?^R?thhNKcBdl!T-AZ%=w;2wJ8S2d}KF~taS)XB6ZPwvH^J?Bn zhzc>OP?vp&VN!>-gfN-2p+cB-*OQ@r!wpw1tAN-+yv5t=4ySQ4BeUJC15erB4BuAk zxN{-fY!0+MjrZnk%f8KOj`>}@FJsP}wQV*p-rnxdfBc`KojCqC-Z{Sj6%Wp982a2< P00000NkvXXu0mjfSF*)6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grotle.png b/graphics/object_events/pics/pokemon/followers/grotle.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9b25c30c724bff89ac7257addd660c9b1bf95a GIT binary patch literal 689 zcmV;i0#5yjP)G`4IapAcs0RaI?Nl7_TIRF3vp8e|O00009 za7bBm000ie000ie0hKEb8vpR7i>K)G=$@Koke?8#>B@Lt~BREE$B>pvkBK z&)SSfcX11WfQN3u-~-8>y0vSULbnVCr64=D5a=vYN{JvANHv1c2z`d0Wm}SuI|_kL z^&1Sod%E{OpNs)G*0GLttpBCN7zhC5&o%%!KAcE-EjQeyD8~Y+(#p1^&O4{cb-$F^z%p0aR)i7;RW3IzFSs2z1 zP`Bur*H~`Kvh6Tkgob1TT5;V#ByTciJN(fMd`oo1muS*0=4xnTx*tA&GIn|AS)@#4#8TsvXmWfjm} zK16{Lvz?FN3TvB9}vfdBvi000000000000000OO8X_00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>K)G=>@Ko|yKLvra1k-<)QXbNlN;Hm-X zNEBk-jr{{!Vn=Kn95FHR+&VOk{K~?az}+Wz?b4)!@8ol@-yO$5qjAkO*Ie_Df`70y z3YNQAN)4G6zJ<1l+{My|A+x;$f9I@_lOZ#m$PAh77N|KZNB)&S(}}Ls@(bR5^25-1 zkT;fl>dg_{Fat4io1kDY<0I+ibT5Vutozt&r^n*+_< zlqEEMZSgLNcW+`p#26=Tz0p0!R?;)d68Jn|V$*WPcKS)u6M524Hj81kTj4oldgoE{ zK4dO6&h0P`oW-2$bC*5xmX6CjFbbTDZw2zgX~g&@3a2jDuV5clec*=NeycFxzg&4j jxX?iUuY2T6%0JIHPPDgs&!K(P00000NkvXXu0mjfGXD7i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/heatran.png b/graphics/object_events/pics/pokemon/followers/heatran.png new file mode 100644 index 0000000000000000000000000000000000000000..caae4d45f2bab509e0ed054e534f3552dcc2ed5e GIT binary patch literal 1128 zcmV-u1eg1XP)yswQGtPp@lipkDIsA&LBYY%K^ZCO>G=Tx0kLUW>6rmZQDG@5DTzTr&i`Sa00009 za7bBm000ie000ie0hKEb8vpKmCtJ`R}{zZs)T_ECA*rE(C%L8+gLKq z$mFfN=pXQQfs`qjg^MY@JjJFUw9=5e3@!>%U(wv45?nOAlXl3u!Yj28o4|-Xp^LyX z1i=hWliT}iG}l@g83MeL6YI zY~{iE`aZ7WOmRNmVBG>=^! zr*d~Z&oV+4x(r8e-wEY8d*cdP+05IUm5wjy+{1%K{OzUD!WdjJmKYL^K{kKi_hS;RcpU$?Pds7t{TRa}h;?!8OD zjYD%OuO^ojlzg+qx1iKA&r-ggZp4qA+Ym;YX_hcPYh#;~WC5bMYKn2*`X#5w0U95Z zCDB6mor>hW*d{;IR|ij1lnYYY4Pm7H_!nv6cH2JpM_f=d(h13xKZrOqlMEoY3)HEJ z2l{nK@Th8Ta6j#j4vf4H4wZtl%oK_9Sv!OOOhS_jYUQ}%7h=*Qor}7E495<=T6x2G z@zSP}Nx#GMt@eTO4O6r79W=$XBhO4r57$4%nNQaIlTEQD5by{o$5+&+baWNvjw6Hg zNU-WC@}YZP0Xp=-lLa{Y$3x%As{-Y?^~F!_tLI-P;RUY;FBNY$#hEb2B_>Bn62ums zItjt`s}->YHTP1dd72xf<&@Rj$GsiT8>IK-4l&0G(~iY5hBe$`ie;;*cw2PD9VfY9 z;sa>#{3$$=EIUHz;siX#+rbr2YX3l;;rFX@hu~$xH8UCWd~1i#Woaj-Sarl4yX^U! z^Y?dbnSUf%cElpksJL$b5`I>eAIHJy`0$n5A*AH%Xf-@9J7SkR zHeRoy_blDMRRyl?+FM)riLA#Ru~8-LQ#NWSLUi$)jp)R&%6~5NiK#r&)+p~3l`N{> zGo|FvU{QH72uCuGE<}U`jZPe^ynGP{uVa~K3dF97r-|KHI%T8FqVh78j>Fctqr|*C u?@0Uz0zryTChK2~p6&&kb}jY*0000G|QwanZ3+F)=X!0000000000E$>;@00009 za7bBm000XU000XU0RWnu7ytkQ3`s;mR7i>K)w^!nFcb!04%F7gNY$pzQv|YL!(Nm| ziiviiqcA4W$s3L^Q1iw0AW^*lLv4`{@Qy$Tg*@)xc?uMn14Qx~TWl4UmviK4}LwgVS#K z!KHc6h(`r|1 zMx3`()DW}Hvg=;m(2)(fZ@1u$w`^`U>hSw(RIpzjHhSHV@rQ|TbzDsN1Iw||i!tZ3 zyqJ2MS6}z4VT(+%fp2x(WCzZj-=h$CHU$$@azDx*1gcKool(`CWOjbX5SC_ase=iL8Ac z_WteZ(g#;cxy+eMNU8Y6f{<6$0M3bQcw8N9r?GUjB_U^S5Djr`nK(*s%Z7adUxGT)j^^#A|>07*qoM6N<$f^Fa|&psQ>@~000000000000000@~Kmd}oxFc8LlK=Rot68jpF(fSIq1!}K- zgdo%2phnDIbBZ4z+9%k&X9o1Ubm8xO-cggoOJ&-h=VluEwhhxN7A zMY7M2M!-?<9PctA08o)H_#osf3TmG0F`+NkM&1KUe%PR9_QJfBmwXUG*_T8VJ4|Se zFFgga$1avt`(&CKuFt&9cbHIxM~Ww0F`;M%T9?%}cY+u*1D_9@ATTeAc4aNM8A^jk zmM|JF`S2Y9v$pA$bhXI_V(f}gm_cyK#5lpJ#B)}FyKOiLE}4*=r?_&FVn}Jp!64X> zEe_7yPJ&|1Sn`PHxN?=kwf2&a4BAtdPAFPk8nI>+WQ~5awk_(xV8I7%Z1l;(+a+pC z-IiFkCHI2wo#5@$V8%pdUCO+b$rhvFRhKL(GAOdTS}{f)-hNqI+{SNn$#Q60&%om* z6W8A{%VP<#tYO8Nv51=5UK)smJHdjxl62vh$m6VxqwgqaVlBl9R*ZriQk;%;KK7jv zj$trJRiAN_CR^NOsFsG2XjN$%I%l9xu={d&4ntc2I35jC7D~<)W62iNjHfJ0BV#~7 zxaLl<>1T_&e>j8thvUJJ$dE+*`kdc>J$|R-Pa}NdNUd`wMo& VWAd?4X!`&F002ovPDHLkV1j-%OSS+2 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/honchkrow.png b/graphics/object_events/pics/pokemon/followers/honchkrow.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d45e6106fda9ec671802b2ed47a4e4a6788cbf GIT binary patch literal 727 zcmV;|0x127P)K)iH}2K@$Ggcur0vQx6`*X@dK=9d#lxC^AX#d0Zd@Islo*KNA28*73`&kJhv>JV_%%?-z4 z(k!Ay^)6=nnAJG(k)pVs>_0y%qy=$EHu<_+I@b8{oi9gNX&I>>W2G0HlFv_He) zT9due$kq8pwF4!nN6Y{haBFp`gm4lgRKA}Xn zyDh6kb*9tpeBPSsJidq~!vCH-7g=i;6gAuoq2_8!YH~Z*HXXNIrsAuFTe#EczAL;t z`4L$8E$NQir_>P#DBXFsmUpGRyOv+SPZupo12-z9lE3Bk@f(#!y3c;oXLkSq002ov JPDHLkV1icDOSb?3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/infernape.png b/graphics/object_events/pics/pokemon/followers/infernape.png new file mode 100644 index 0000000000000000000000000000000000000000..f227dfa83063c23672e9e36d0b52c2d8750a46ba GIT binary patch literal 1108 zcmV-a1grarP)4l+SD1W*Em`kaRX)Oh&^XGzn$&vLy2A zF?X3_36Gc>8HO%?VUSfA0xM>?U>GEYoy-mk8^PdRf=kUh>5zlbMek{}W>3QGD+hx1#Iq9S4eZJrC`^v8o`rnjBqfq*n^#$u6m@#DX#1yjv zvx%7(j3Mjq3I6Q>Dzk}g#*sGsOCBVc^ee4HW4Xih4JHt6$mY?6GCUHY#0JE;LyZWQ zNe^Jg0Ok=&S_d0ect%30tYJf=1O#HjT?>LiD7LUs0<3v?LdKebiCZPe7J-SeW)c_? zmuVIVw&51BWp~1_C=kOWuA&B+5DRV@+a{p|Y@0T~?hxn;CNc1sIqd3n!u&pK(SCvf z`~5E5l3-`MHZ*iM1Sha*8zHY`39+r{#C^upC*`u@ub+tB#YyZL5JK&cm?39G;yHv( zk4=lZXI$;{c;zUwIEfKwyBhC;0TMBnITJ-6ZPrbzLOl;69AWIt3; z9CKfvoE}?|p3j*2#C+?cS7&Dr?zg0PMr%8nY`3 zSoRZr@bHiAn+N(N<}3A+tvWOSy!P$mmp6)$Aj|$hQJ?MSd(tFE#kyNP6wCS4-ZT9G zq-EHvL~5D*w>koqk zg(Wx2uo~(WrmhVjyMl|WZ+@Oa%VUFi{Lym5zFN1VDH#C)0g*`=i8&$h(UIYCS>d5ksZlvOIXSsmApigXm)Sj+00009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K)GIAokoj58*MjIzBS1g;#}p~PCLZz2;&!)t5dNM z=VFoVqC|`$>}GHIaWB64-oZX6?xeg7odv@wQz-~U8ErS*R9epq(+tZXEt{rIE+E~m zh_z?`*^qJJ!(jigd6Hona9Lf~h<8Y*>XOs9H2(uAd(YpR^^WOpr48IZw-H3T*%>s4 zL?Laj@aC>xJ~+-WZQ(*A+U*O|eAUOBGTJ{kvioJ(U&`s&x?gBqBlK=Xo43tb&tD$0 zmz;6-WsTY1RS?VV+{to9UR`8>a!MQ+O3)dp(y~&MBfw%tFTD)zNmhO1L!IR!OU>+NHdib6XAa*^s>;2L{e~ zs099V(GfkbZRR|JFi-{+`WJG~LMOqa*m-bw)WKio8^_}Sh)0F6MF0Q*07*qoM6N<$ Ef`)qhU;qFB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kricketune.png b/graphics/object_events/pics/pokemon/followers/kricketune.png new file mode 100644 index 0000000000000000000000000000000000000000..d80a28757f2cbbcbbcaec5573ad786fb984f2f7c GIT binary patch literal 847 zcmV-V1F-ywP)FN0a0Rd4d8IegD;c;2<(UFNcA>pA>X=!PxQ8_s|Ik{OOt7Xo~00009 za7bBm000XU000XU0RWnu7ytkQ#Ysd#R7i>Kls{|RKp4i4fHVjy=-Md+3LTm*CXk`Y z+#!R&$PL0Wx7ZjJb?e;8;v!H#Lly^N(5EPd4yHqkRFR@!FoIBIeTLrY{z@Ss33O`S zLGZihz2|w)+!=tUdaD1WjPtvB(OG*agT!kacGy6;ISwDq09>H<$Q@3a4Ut&u8pQcI z``kYuQx6chAuytW*bz5;dVWtGcVsg)j__1TGy*MJBr`pHB;$dnmTE{?Q9%ri(>!+o z?=gagMGMgpYU`M#g&WSG8bG)mpdo~2!r-B-ba*M>4zo7%W>(qGF!%7$oh zbA$>@>Xfs`g%&cX3e^>8-52=|?TM4wI$j=TFN!cxV^t(2`sc zUQ68mQpB4Kv|(+JD*IM8SG6;$zN@;U=zINAJ>E`-$$)RI4-kJC8jKyT+h5ln+$_aZ zaf-R*e;qr8T@4hs{U7}n6T_wcJJVLqZ5)mCGxuFlu zGO4zB1|L#gE8V=XOQ!3BGrs@0Ck^!onsrYNz&2WPbvXviaDp$ocU8=BFXZ~-`3s@r zRn2R7!uS8F<-;PeD$_Q{wjnnpHMSkAtq&|!AGCEx2((Fe+AkSDCD1L+dVqdIzS;lJ Z>MyPdz)WqoSkM3f002ovPDHLkV1n%Xe)|9b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/leafeon.png b/graphics/object_events/pics/pokemon/followers/leafeon.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1e959f661eab1d956dc0918ec9f364d2d6b56e GIT binary patch literal 741 zcmV4CvvaZw>*p<(gap;0jzsfkem0Rh>$S(#}u>FN0Z00000000003@{H>00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>K)lYBJFcbiA->e=hRI$Pb;J`6NRXzYn z9H)|1`2q$q4zAkB`E%kh(r%YjOaC}MO;q{goj8n^eLB+8rnZ?oB*p=0@Ahkx_g-FX z2Y|DodN$Nl9vfX@jmRz+rIG1=p?8!vkLkIDjDLxjHQ{dEB^65P|P4&4NuB725a1}^KG3HRRIt~JTG zP7t!m>oOPAEZ&eC6I_%tU2q*r2JZQ&G2;t_4Qp3mV)t{05&^W{%L}}^wX^?eY7cKO$c<)hc3x%7?Y1Oli-ddcvSCqgat|cfUrgAL zu?w<2kt=i81CJrQz-rIfw3A178z$`9XRH83G9LlGF6LNmmt|S5a*eu-F>b)6bIzNp z13KqV5BQwULeB2F?+>ub(9BmZHK)jw<7KokJ*8w@u;urO}7(4k|7EbU~M z6GrYN&_f)a@(pB=IE!Q|89aEXLBiZ8C~>Dk^9>5kkPp?T|0jbkq$QpFH2w5W@10I3 ziLrB>;~f7j)HCLh-Opa{M^>|SXf=n(YR2~yyWwE<+!=wNobm;0&9?6u?;1Qx^p(qQ5pT*lW;tb;3CFQkVUVhNpi01|$C( z;5ryK7Hd9i7ihdQ8#G-o2XF(65gZ(}a(x<)Z9#rw#+6%K;I;RZmR=~s6uo?BuAY7s z44X8+?VGWWkO>tFzgbl71cmo+E^GT?j(F(uSh;!=HoM2)0#P;_pWpUP@c~wwr^g$= zc`WPN)5~T8#f-4aJC(}`@b}xhJm{=7kvwY$<00009 za7bBm000XU000XU0RWnu7ytkQlSxEDR7i>K*1u}oKpY3~Lt1XgkhEY-C;3DrqhxSw zaExD}Tc@m6Kn>cWKu*LNln8P{et-_yEV!5(leQ9Ehtje1p?Z#;_;fx88t72SZ}Lay z``#ZNk^p$E*ZN-y0mFK^GbK$m0I;;&>cxgpZSXaVnv@CQ$uq{5JKkuxD-XVIafOqF zOsbcf?8=i_H!x6j7{!NoXoJOqNQ9*&DZaw>K-IutNCbZLrW-5*{V4h*45MDAp&KJxic<|hFJd!ZvFT|???FjjUOKmx-h?3Lc2;q! z0T>QZILUo)*wK6c+#houg(q4=9#Q|>Dp0l95k^Th$;xY1=p8bjbAA`HBb^D)nR8aG z7NB?$C}xD^0aS~?a)T!oMUPE71JGv$x#9eC%4kRDA*1emK!-7%KUA5xVeDy7RL?sc zZMk2{J+btT-a#8<96NeXzTfaFTm`BIW+3+R_r=8zGo(j)`vBp{GW0gadu4pSygwQP zvk`8?9n@-qcfnhYVI%P22(^xlAZTj*Fjy`Hsy1n3`+9bn(WKERG=_8(w0b1ncSgZX z=N)8QIi<-mPqo<7e&M-Q>DhE~@Kt+#+8W?^-=RZG<1}sdx_0;!s9Fq}7tYi{)MlC1 zMm~iENOpIS)`19#Sv}Oy=PYq~m?X|_Ba%R?Jn(9TD7`5YP zY#hXcNOnBH-R18sTG%*RJ>7%}?$)1n09^M@64{rh{hCvfZuFI%9;8y6@afuHxpkb@ zY-S@%w$rS4fmvhKZgwBevy>LpX7kYD`1uR)jnZy3Yt!*-jZPD&RsSfN7y6rar5UaL b`ybXH2^Fgy?6_C600000NkvXXu0mjfKqzb( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lucario.png b/graphics/object_events/pics/pokemon/followers/lucario.png new file mode 100644 index 0000000000000000000000000000000000000000..61a299f7a648179a7919e92b9ae2b449ee4f599c GIT binary patch literal 787 zcmV+u1MK{XP)G_!%G3mKcd0{E3xydOhDFFciIcbq`x$#L!NdN!K)G=$@KokIAp{e+wP%k$1V&uhCZUzeq zt!xj$Q$sU16#5^!b@kR_D0FEHfgsWh!3x5b(t>@i2779($;oD9f@2Dmn)?ma$@Sgo zY{}42=#Yn(@80RXr;{Z?xQ*NRKSJE#8%H6Z?69SH18;8dFpqzKYtb>I<8r=vgV8wJ zfOD|oPJla3w4C704Zw6FPbUd>C%zl+L+hNqy%h%+)KtHwCfHSXs*^ZF+!aWv{Ueu>A3@yef)Iz(SK?h)Mps#xf+2l-khXeT^=Jg-@ zWJKP!hYVzRsJ+gj^5`HaNJi!zHucqm-F=lDI&a(dPaK_26*W{4@^$*ec;j2vtQu0< ztvCZ@mK=!=#ThCp?2+?aHNGw1x`MNK%g5<-R?n~Zokp&s*<_j(A20IY zlTp(Ik&MS1FZtl@UK7xQqtNusXW&h-DboBP^fKQ`TZdwyOv-hdYKwJHpk2&9&&sr* zkDVuPBQT5UK~`cKhF<0+$@U7BAsJal{WI1$wi=ChOu=?&Hs5#bNFIC1(xB^AB#EBU z&;A)}yyPJCYm{WO+>bSIWK&|Q&7c!8-clM!CHCuCk|ZZ$SuMpI&TO_CLXypWO@&}V zX4ha|i0mz RiZlQK002ovPDHLkV1gV@bNc`Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lumineon.png b/graphics/object_events/pics/pokemon/followers/lumineon.png new file mode 100644 index 0000000000000000000000000000000000000000..476d27f2b22455f787e2df77e7c47d5ff6619507 GIT binary patch literal 763 zcmVKmA|gqFcgPvPaR{2irg(RRItLKBI~^% zF;|tU`vQG{kf_j&kO6nREVOUi96Rx!RNM!s@b<;d_d7mG96}!BF&^VF{@=mU!3BAr zspuB7EV?U{p^!cemNIY)81I?ui=%Q8VMR1vKbt^lDwHme{|N&`=F3s|)fZ-lg%M`6 zWq#Q9#BdEm$#%sggFU)btY?GXye$6~Xd#&%8*%%Y<(C&?0u>;GGJ)72 zbqWIJ0c#=igl$id6nunm+kRNMtHiH}EE zMj>w53fTp+CKq5Ulza|w=KZTn4~DxyHeCSt^&fW3QZ18=upB8dktoNz4!V$o;6%M(5W(h#8&ixIuJ@RaC%4^Gq>O?**iQ_h~XT9aD z1Xzo{$7F1{@Ptj?3(;ZNlsH+#9xB10%h$Yethao=037G`W1#}seWz?sm5OF|&$ASn znZVJiJjQFG&fWBo^$m3euuE)((y(+wlGKE`d4k-XSEJ(fS{KS5Mnl#W7T;Ez?_*bC zjhy&G8ifZUwcDdVUf*tsI~tIGC;m~<3bQZU?MLByTp+u^c6=C|jvn)0^-Xxw$UIyw zNmA`<;P)nO00000I&q;G00009 za7bBm000XU000XU0RWnu7ytkQUP(kjR7i>K)iG<^Koke?!-LSG!7Z_=C&eM99Xbh0 zD9su=WNEiT2L(IFQRMHSQaFzGx&#vNSOT_jlJ5|(5yITyU=SwY@6va2uOjbcG)CH?f<9W+N- z67e`~8!acyhAlB`j;O^@Fu+T!Hc;IeAEl8HJhm8ue>H9gt>QH-8!bPIloaVwv^X=pAVe-*Dhq^xp4OoA4rzyk8zb)^RPR8}N^vjKuE}27Iflz;w&|3sI^|9G aTk;Rsn1UV0;>1}100004)-h`vF%$q`kxd6(G6mA%@D#{+&0znH zPR<%=N&iEKLWZLT*6b*mT#Ve+Y%VdRwuK2y9ZLRwT4^ zu>#ZTWQLP#?RI_p`(fJRW(H_PW#;)q%eQ5nP_){8oIKU;*z`8n+uXE#<*u4b88JJ0 zBN1V7V|hMr61rl^=d{gr!r!hXJifLuAHKf;APstcjR$*|x^fvmrEP8!PV0nI8}rc@ zrOe_h@;$kl?km?0Jb_l%k$L_-h}cb~gq+MN3Z5_AwK_cjyBTF{x<*0RaK=(E;h{`H4wcX#oMjVQJxsnej;>h-r&u00009 za7bBm000XU000XU0RWnu7ytkRu}MThR7i>Kl}&5hMi_u~=wS|XkuUbrK-l+E6^jn! z()@(}gZfwsT}1JrF0{L$KI|&ko?>N%a%lyD{EQe<2So>4Zj~(bwA6`jErv7;nM*fx z;qB;SMju{p4!!iyfn9iJr00F->y=^r-~J>P)*gn)$?LYmG?Pw8#oJd{{Kb z1)En)o|Y6eKaT=Rz4GZDaAjGBq}p$YXt$#x@PCJgTT!xbz5n&UMdg~8gq zc8+o;jR@2h;r)qyJujrNw#^MDozP_Si53=IPe;B0QYftJIFc&@5YLTh8Pm`Nw1pNH z%<2Im!Z3V@RwZaKT@c8cRo;ab(|{qywdu7uTM#LHi)c}MDU*dfL;!3^=Sw+8M5vvb zHXFn?{7g8c)^ZjJlWT%jnO2L*=L`izm9E9I2a^{dggq^{t~9(0`+e{Ev&7eHQm|{)11z5G^}ZPYgi6rl zSU|Gh>+u*ww1mma+3TraouYzqSOtjDI-bpDua8(MXt4vfYjF-tqK79H3_`D`i{8fgXl*b56B;M0Jt&!%Uh!Va(K{*3;x2|v}bu9k)h!3`v zKyfY@1p|lOOP=|bbLYqG`B3vtUX^3B=VD@b>TW4kt27EXobI=LzdLX`8+pKrGr_@n z-@~y#_7?}aa1?0nuMe|YeG?sSd#v2nHX8?>zPED|Sg?B#=7R7C#dk8nUVrclTFBYo zr@2rDEIH|alLcV-X3!g7VpIlT_}9Ms{8E&h3E~~Zx53w^xljfyxe$;oe$IUK{mp64 z@_EI4E8jAF^r&;gMOFL&=bc?H54$>6Tm0e!DO~?Z3l!%9gVR@*+%yhHG>+CNYhq^?M(7!?2j002ovPDHLkV1f?q B1p@#8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magnezone.png b/graphics/object_events/pics/pokemon/followers/magnezone.png new file mode 100644 index 0000000000000000000000000000000000000000..c66eac73488c64e30d7e9b2307818e72c083e54b GIT binary patch literal 756 zcmV6Q2+n{=r2I)00009 za7bBm000ie000ie0hKEb8vpK)iG<^KokJr0}lf2r6l8N5VQ!)X%M7n zYiMbvk_Z_WGW7?jcEv%9yctZkjOnDbF-{Nc!O7OObVxc$gP?HW#S}dFH}s^FEbDqM zMDFM}obQu#@14%}9RR!7#V(2<;Wk!D^{!}kWp95QU!GU%i)I5ZK5gT#7uAHK0Z{fH zZ{v689@uOJv!>_eorgQU^jny3#qXbc;NX%pvrY}O_^@AngR1>Q4_&`*eQvT&9RqOC ze{|Md%P3fJ8^2EagLbUAwG0~m%T~WzCj85;oj8NOOReKt2G9J~zzNDJi?&TRz;Rq^ z+RZvPk6t(qrg4!`v_h#(iPIjlk3?=nea8tRxf}5Q6~-q)tmO+L7%0&+rdQu?$8j`G zWHzW~Bp9=n>JlUE?U*Kqfe!hUMFZ>U8{N42`F*UjPE%qCb!bq^S}1d%-x-PJLfzoM zDbb)~P7!|c<4*6O8|29h5r!;T2Wc_~unPm)g&m{E3zVMmB|;{J7RJbkktOj6mexad zf8E)V!tO1NO_(?{Q1vqZ5^#s65n(K`N=Bs#+lDI+(8y!W+w%Ys@P**Pg2NQA{VvM~>dlJf=j!Vstk+fjQ zofQP?;5g7sqpL3Yl3$;F$-OKJgu^V+Fw6@GPQzc!SKC*bwYOO21zE!3D4=XL^A#fD zgu7TFmXM!+R5KhgeYl mOnFaCxOr5~`0oiH7JmTj^yTko{Rj>K0000K)-h|_KokJr+q_+IA<5E7PVo|K+JhVc zRRQBH8XOvI@D|d+-HKxkN2p1lbjUAg=^8wFsK*W+HF&u=f50ljHWd_Clr-HOt9Pf9 zVoS2y1~L@#hLG?1?!D)8EI8)$iJi zJ+^rC?b{ljbN9e<-(>#Pe;&YJZ+*F?!S}zjW!cFdOZFEyct_R(-+6=3@=)Qkh}EE= zmS`|KpIaX@q``(>vQ@c(YKaD;jYxxyXoCyy+Oj;4_7*rOXo`o&2rXYPpIys@on(-r zSM4)JX}2cb1V8v;Q2#CUSpzR-Rbr8n(0l>Rvw~t|O3jm8 z%m93?zHMLo2{B>Rpn0`ZeN!x)R*I8)+)!Z!c}4cqY~*4FaC7CfI1vNWE{U5JT;D&d zR;qiQ@Y4Z>1{*S+JXAFx<`_tk!Dj zmw99-nwOd>7`2gpnDG-To;Stf&(OiE=^ENRSY5-m7qcj+cG(W~ropT|zYjSW=|AGE;YN&evweXL4)GiD${`?7}f!?y? zW@myl1EC>8{v`<|kiQ@5EoF)jMhIy$Hh98cP|Q!+dW2kWy)@@-VU}T6I3W(k{#OfN zzwv}C|1EHpoWqI-^|;wcgcxDM%j8@ZiM42)G0000A^v10RaK&>G>H+p+P}GfuZsF(P2Sh$p8QV0000000000000000BE%}00009 za7bBm000ie000ie0hKEb8vpK)Im$bFcb&y976jA1kc8>)*d~2N=vY{ zpTMg!ChRmyF~gf<(6_HKhDtuAX_PeyzIYNm?0@R7P2NjdQbJBS<&;zYRn#wz&Q)=n zqzYCsN3$rjig~Qp67*la2o+NLboMJaGs zV?o69!4#Z3s}1~h^ZfDYEaqCjOU%pVV(uG_$#;Sphp0000000000000007HVv100009 za7bBm000ie000ie0hKEb8vpKmA{MIFcin7NvlPBi8*cg7j6l3Itbj5 zDT7P?3>ykE@nq8AM>XA_kfHQ&r$CBD-al8#mg2K(=g88@U!371`~B3DLdc{^lO|32 zUt$3vG#=-F#Dn_+q&XpBG0rUMI+Sp_FF=?#zaeHZp&7OgEo*h|)yJf~#lku~4Rcx$ zp#kRpon-*k^+yFFzr~f5Suo65#WHvTuvjiDGR*b& zr%$lw)i|eMRK$ZE=BOcpz2EabTcu$RIfUK;%W4+BjnbBEp2{zHZX6cRW((i|&b-go zp%w)cDs(AR;n-~h)39GG&ExyZJjV?sHsh0IBDu z3li|K*lw@8DnWPHOf5i`X2z@;JTqjDRULq$E!jxnHK1E)d`L7ILp%9>4xxna>lOTX za~WUWYKGGFOrSmhY?V7r6g|6=nau!S+Lj}9SX|1V5BTSyES*8(_~^S@qK+bkW$XfY z_LH0;sMWCzu+|->3E#X%o7W9b+=}DtL3sR)Mi*}~_w2v_hIlUD9UBv{!-ULc(brip z%Jk7XJO-m|0?b=$Qv#k}$a}HfZYOUt;;(p|1!5;*xn7a3KDg`%<2=5><~r@(*Z2M( ed??Dt-uwmh3@JM!qQJ!f0000FN1lF*&i(`MFVn#8S(x00009 za7bBm000xO000xO0b}Nl!vFvRnMp)JR7i>Kl0R$PKp2M)1*%D7*CI}c+tMJ_)zr=4 zDWsfG1R1=PEG=!0Q^j>DAw%O^T+yL)3E7;F(9cntwDHhjD0I!#QZJ5se`QCF2^b0; z{PXm@ul;+@IsvfCDyyvW-^63DmuK&seY&=6upEteb+IgaLq2Jfxn+Yz+!5!zI$x3{ zOggi+CX4J(#$q-lOR+bWwzGQKWO<g$l8`<0Ae9Gqp4VI%0ub%Dk z-sWQNi_ZeS^YJI&8utM-+a}Ars;-{Cm~yg^`NecHT)#TOlZSFmuD{FXYmlj7TB0tc0TQ!l7|Qy>nFvac&u7*>U!uDo~ryJlBPW zkr4uS8#^I}FoVu^u7#GBP!u|W;1s&5upHE!4b(lOHuagDn>*563!Ro( z78<5nILL!8Y9;F_Qia7XEi}{eiGGn-7ZXtK)^C~ST3GrJm)(qFKO|aMvlJG)1mYq~ z1*<|=?lp&rZdm_*nFEyiR-kw$bW*nvKPcE5HbR#OCJZQ{D0E4gW|CE5xna3wDvGp( z4zdR}oXmvc#!!;LI3h*})&vK@3O4}2QS=y?Lb(^5+PyeKfGBL$eTsuQAz(fr1R(pD zgix?!g|4U~zF&Z~-0l;>%FN1-f$7mfS=n)sK|w+BvB_Z}Iay(`si~=XNm&2@00000k?%jh00009 za7bBm000XU000XU0RWnu7ytkPf=NU{R7i>K(!Wc?Koke?99>GMT$O}2QyRM1CGF`H zoODp|Ke)-!Zoxqmgboh=1(pf{>mpGcnv&@z!T&+(Ut@Az?p}JYE`me8+vmN<<$lDn z>eQ)I=l|q>i}8WxL~lYDmE#HOEdzHa`ZTm&(?|$gh&_!r~do;vMcEEmt zi!=hM-J)iW#K?+w6ufL_6GUB8n(IXqi!249sTb2iaz~-t+~b<%W2a^Cb^WCcOM0 zw>LT+4@6ISFzEHE_GhyrVVhk(y1~x)bPy>ELd($jF?A{CoSRHKo&Hj}PUv;qbR45* z%xH4uEz~=QmU(y1zcJ6s O0000#xAu#{|00000=8lx<00009 za7bBm000XU000XU0RWnu7ytkR7fD1xR7i={mcee?Fc`?3v1gZNhXzCKhHn5Jq#NR?VK;MOyqRRGe&woq6uOQQfD=^^xT($%P1jZY%x{_=8CgeRtQBCm zokM)@I1R{O9p@34$y`BF&VW|3ENB)uj$iBw)EJM?&R_zKshmCQ_Wkvj3YLQDvD0nu z7DZ=9$R$jmap?G?V?x?~u=(S3Mn-EIb-R<)dR-rl+cKIob`#Rs?8noHkVz^Am5l6_ zkSsne8phAU> z$Xg0ImV{UFgO~F(`yj0CKc;gjm~>@D(IDbAOxm^(a%C&|flN*=E-WFOP1ETt=M;Il zEQl}3q>^P*c$^MpPQQxth};s7k+WpeRys>VJMt_#w25d}GP;rrR*o-z6`T1Q&)Lc5 zXPxCJ?DZqjo>ek-?>4;M-8!2EB_s|OukTx(OUGr|6~(NYao8(vFUWM^(n?0`NeYr( z-|H+TpMOM?r?`%>A3D>-^=Tc?$$0=?UOLP1eqPMyem&!6e&0g1%(}b<&jX!h=LO^O z@BkxREKofglqyH0&g)0RgG{ZKU(beUDbYI1VO{ga0mhc#P(!)kG05;NtPzwy3&l;Q z{P_EYA7IVU?8u#L4gT`cPr;fq1X)dpjQHgjG#r*(Z)o=9PLDx?Q#*!7?$N0bFkxwU z9Row$DS6jty5T#CO(h}zp4-+6 z9Mh|u4OcsfZfLF?8o0p17^`;#yW=Pc(Q3*@*$na!@}A*nA$NigD$E*+UwEVSDVB!m z3^F$1#b?j(vHSqOQT;+SUwIF~s8AUF6Tf*k{-4Jm%#EjeFi1}Y00000NkvXXu0mjf Dh;ys+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/monferno.png b/graphics/object_events/pics/pokemon/followers/monferno.png new file mode 100644 index 0000000000000000000000000000000000000000..93b07258760e6c13a08cce667e7385493a9b1484 GIT binary patch literal 809 zcmV+^1J?YBP)FN1_Svdg#0nt%G{BIJS00009 za7bBm000ie000ie0hKEb8vpK)G=t=KokH_fkqR-p+&Sf5ISYEYp5?2 zdr6iK&E~}(1EDE6OA2yF^&ni6Mi3HAJVZ+|7(yW#3?YFI&X9H~aSM(KZ4juq3e?x3 zL$fsPU2L7sLP}{uJNa+#{^{S>=}wX~jA0DpzlD55|1pw@8(2UFIoHNz2-L9<8#8i}jiZbteG0C7!72F)5WSV44^wP?G6Zi1#kFdfoN zJIW4w1gPOwN`u`5&4wPjv}N3#j`C!$V7Pk){Vx%=uOfQ^SQJyrw?Hz!oLoMqD zAhhGywiIgiK>1i-(DjxTKxu#U_7xWw}_^;49hI%R8I*PC|2XTED zPt1q?n8KZ*IL`(DQ!I-=mT2`hzJ;IJ%e42)>`MzD`8=-Uf15!`1CU=lA)1 zSR?C}`;uF}bd6Wc)L!gWcf~yOD=(kQtR$pZeoNw}x4>VJ&R<>nNWPxh`GWLRpl6K+jL&!zirU>q13l-bre%UVs@mrH zM<1w17f<_kmJpIgntXj3Jx++GGcsU&%q;u&z%s_i;whWIvty{LS>*Z6d1~bJD=1Bz zI{(!6?=CcfDVjzbR5moi3ldkWtZGMo9^xj%gtwG+nLR3H057oWHw?|iQPFHjot?qL z2t>0p;vW~npXV9D8EVMgv2cnASs9hr$l&j^TOKmd#5WK^Vq|rHfL`;gu%!um?>WC^V;T z4;t!84^kA?&_X9>%RU=MXz^-oU5iwl+GI#HJm(tUF^AY(b;TG^YJ?K zhvWOV3e+d6AFoNoh?PLQbg_>UYSy>zITyQ41Qi_LYB_$St3}j0S^J^Jkf^9pLQiCNzLt5bg*^!d2ubUEJlqYKC0D?G0$Gq(+vnF=94(eOPcx~uX<^PgB|$Rz8xA$`p?s_%@SGCFbX5i>9GHt zsl)cuxaFN9Bd*bVQ2mpu|31~e|7l=}G-;qPEj8%_xLf9pGh!pKoPhjR-4mW9+GcQm-A6n10HWT58`e+m9|{RO)_ VeqN}VdKCZw002ovPDHLkV1kACxC{UQ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/munchlax.png b/graphics/object_events/pics/pokemon/followers/munchlax.png new file mode 100644 index 0000000000000000000000000000000000000000..f76da3270b2b85b10ffa956a6989ef30107b6cee GIT binary patch literal 589 zcmV-T0G_eFkpTe#K~Yfv0000000000RevFV00009 za7bBm000XU000XU0RWnu7ytkP!%0LzR7i>K)Gv#}bbhNQQI>DYUCNxG5rT6|E_xi-<&MKa{y^=)JqP5h6O}ZNL0;_wKIgZEaOm zRaI5}PX#~tw?({Si)TTE;V!E_2J8%#>`!;u&>Wv#djp z+5rl6^NJ{?R#47_MzoEVtb5Tk8$g3{-p(epe3|JMO&K5HmUGq&7|8CrdDY;FwjR9# z^CQ{daqEFvXhPkK0k_n?@iw~-*_g(9zuDIobmfG)#g+<9KR zJb>;#TCHYYp?BEnoS-unX3JGX4HFzC=dS1ZvuPUmpQW2OfQfk=%X5o_WrO%C^DD|1 z&Sx1+(>cCKbn{&eee=|%%eLcYW`7`89K$??c$vq-`4N$iqsT?Kk8aT*1qUFJj=5*j zR(9rKuQzcF=7KyE;_RkPP|t{j+4~HC=iG9eFN2gvC&ysc>n+a000000000000000Y)sBX00009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K(mhXuKo|$`8@Pq7A3+lrSCo{Ep)xq3 z0+y~8Vw}1dJZ4J|Rzi50NEGY!Q;Mxp?(9*M#!3DI$?u-Khr0s+`t<43=O0Db%9%?`1f=CFyq*EwW;jN&6Zhj76eQK+5}tU zu-t8!;lOd-?SUA7Ex?#=K--SA%TV9#&$;Jr7L;JO*SS8$(Xr0AO(cbIJdQAay^FH% zhOF1QI$6w*biU!cJfwc(mPvxcL?M~Z@n!*eLRE*wu{@k`EQW*pMj?gH@h1Li<+mHu zp0#aD%7o|Dppx=pyC2r;9jD2eVlT*D}p@>Uf_`AggDu^geYJwOnmUx+-azC>PA z7neCn+8@kAMM7T?0Jo3Kkt&axV*4gtpP;4=Q{SW}SEB)(~QBhg3xxt}Pp%D=g`T6R+WQ;Y+#Rl9Kbbz zaN0wiL_k0aNM%=@QQhCLJ5jVP-jR&krvduDh~npT_x=8OJRX%wjWp6oBaJlDNF$9j z(nuqXG}1^TjWp8#vBuEe#jglmk_SpBjFZHFw#LYdz4LFVeR@eA=uSRoJ2Q@n59FUUSbsIuI5(i8K9b z!qDG{86%1J1wcGcgS_zk7-=^AgXVuk1y15jHz(|hEbcy;1E50ofsi=CfTuN76?bv? zle@=0>#n%KNt_wf?aF+V!6d$AR{($(ssiLUNrRzU`+Qxayei_U^iM8If&5tAJr)j- z#HnTt+tygS5;X(hBSI zaz@uP7!RiUEAoEGHk7|52D{YZ@`-Lw z=yGNWBQ#v#B;K#k#PW|szaCw|7{0Yjh!tb-LcksJ-!J$cwyyluuq%X+MR;F#HH5Jv z<`Bvv&MI{4*~E`06Gv)P1>^Xq|0IfKFMoMxJQN!22lV+y?&UXp2iC(`SzacjTUJ{4 zfri4XeZb+-43q_&RcPZ`Wn!Xo6j{L-E?xb5M*#*ixF9sx59sq-3fUD5K-XBE7I=p! zq$^(s;Ro`7cS$ElJ`r$Mq3xLmlk(^9MpiI}OLS=EafRHxcVd4fFxU?m@ErBQ1xQH{ zW0Q21w%$|j%W@WkJo}k3dV36Ah%V?QiI3i_6~25 z1w7}9H~_VX%jD``9+4KE<8`l{=lGNM%P)4X_3m?=RcH$2PUwC9_U(uY#_`lnXa980 zxpqvl|61zu25ErlbN&?(u5-*G4e&P_03pvsj)1pc?tXKvXK|cWsJlX#!Q&zkS1^uC zs~Ad|^t3vPRZH@MTez%8go1dz&|x!v(xi_Q?w+Y|8iJ69jQ*DGC-c~3=rL(z3*8gN{i?M$mHI@_x( z6jkL|4V4grA$}4zn6B^inoj0MCUYa(Y!WMMP;!R&Hn$5n8|Xv2j80hv>M&2ga<2xP zw33}-mE+}>1)+758hilgLD_@D)T^}(cJ{C>e&mwKo*-0h2l?ggF-2c$b?;<_3wa3)ir zlbmn{lXxJgdWu&n;evzdI)Ahh#-MyO(?T3)2GiR92f$eP!(vt4LA@74B`$fVhY$=n z0$jjUn$Rh(Ic$z&I?2N;cp?v^enPJ_+%I5$yOyHG%h3-PY*a5*HwW2a=SjI!0Qtj{E-B z)`fVxwjJWWK?HSOUo2JsJarh}Z$eU=dN|;MfGIj3>$o;UJ8czLu>-9MUN?|aLxsf z*dXZpD+exuMf$peaRYH{osVe%j{63gv}Q~6#sZ-ia8ba(Aa0pfRk%^G(8_=d0}gtz z0J!Vj27o0%Tsz59DK6j@0f*2*#O$NrFujF8jx{V_grBBN2LbQ4{J}5XrmxCP{73j z2hBIgNOzYYN*I_X%2v53Yx`rvB7>opRa%$i(-RywzT1Wle_t-N;Na! z!hi#%XBQDNV=hrt18Hs!75o2Ai4FPz`+W5ubAkZWAlhy|H`nl{xhe`^n#F*N0-lZY z8&q3~n`03Tr17~W|E$>HAYk9hoGzF`%phHz>EZ?#!h2aJ2o~3UE)IC+V+onFaRDM4 zNaN#yE1|*jfESyF3_`lLHTI>5|CM0M=i-28&Ggrc;tmoTz_XJ=gBMRi;Q;KeqD#bn u?BI+?1dQ+fG7ZEnl7IFptzNB{OXz<>>8ON(;jsDu0000=G`P)FN1_q45!Mu>b%7000000000000000;JQ0M00009 za7bBm000ie000ie0hKEb8vpK)In>5Fcb%H0|l=Jre*ymyRFc!uv><& zVsDOWueHodKfo@%NgGP~4f-vYxT<-DghCnY;Jf|u*Y`|B9jC9p`s(Zd)a2FfM{59~ z)sGLLPgXnBv-pnflbG3ksLUoWVOg%R*AA}yP_3;7W_He*5E1sNMEzY({gcf={m5j( z>98yWcFfTO`2u3@Sqn`x`&n?=HwaZw4Ah{;Xv-k+1$wXaS$xSij0`#{ceiu!4 zW7ROyEsl-d>$L?#ZU@#4G5gyyLQ=Y)+a1 zS2qLe8y4RHduBE;QGvmQxCpKWFb`WB;EYDF7+LJAhRDDg4`2@vN>J=(pei?CO=pSr zX%J;c%kz-sdam5yeFQM>vevX)3ex#9gRGtCZl&j4!vGSWrgJT4K5cWdU5@oX6DhIl z9S=Vu+MPiF(tg*_PlgcDRL?=nH*@q+Ih*tg_jic5{mj?Y5&e6s@d zU)U6QV7=+L85*ce@6FvjMMvTW_*Y!l;1Lff4#~|c_|y6UlnKUX(5gUz00000NkvXX Hu0mjfaXG^qid3mw%d1*lb0Rcg2;jy{dIYDUv0000000000&8mOG00009 za7bBm000XU000XU0RWnu7ytkPQ%OWYR7i>K)ICeXKo|$`3|Rtxis0gWI#h26n#uh^ zt#iIXOF+5^4uT!xOQqT|f_OM3bO?2jDi}gOly~Rg-4pMq0S6)fslWU8-qI4s>C&Z3 zmoEP&ZWy+=8wRMHQj-Ij@w#YpnV@XR_{PUBt7&ec$ z&9q&AW%oqC9=4pY)qiBrGuygB41M)_*m43uJcJ{&b8)ERXHSO!>VnvE!aO>Fs4zPx zEF}hCLImm~!Iqg#4q=v9ObFRA*qcv|Q{`WS{WZ8ay(nycA=K#GMNZTMV~d2etTzLT z-&p!?vUfwMc3Nad{P5K?`xw|p@^MrAE7>c&R=TY&qs8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/porygonz.png b/graphics/object_events/pics/pokemon/followers/porygonz.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7308c858c87fe2b1157a5a5337fcdbf82cc89d GIT binary patch literal 647 zcmV;20(kw2P)tX;bCz>nZa=}Q2+n{8Gv@100009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>Kld(zzK@f%)7EN)fuad1G|d{Hm;+cbfa=2YhVj%I1x#_x4)C#D3w72 z_HdlP9+pRRA~q}x0EZLN#7Vw+c&mEoeI|OdcW^`}V&YuED`+B`nCn4LYeq^m{hEpF zp7jWFIMIs4;-X6pLfx0Yf=Ba-cvSM;uTR8_iGKKs#LwGUbDbq#Aobu!x27^~`ZAo! z#e*_bM>2{^zN<$iXW|PxjC~L3R_+fE-gL0IkmP=%$8nI$l6zZ-Tf>sGXFr%_a77_LGH+3w9!FnEg(aOtXUbA@{aQ&c>Vl96reO8Pdfv?Pq~I7x0h5^_+`A1-C2e zk)_8=KO-)&roV%T)p4C+%89lW$~816lxkaI->=s}oqqIi;zw`U!1LG8eGHd$QG;v^ hO;^6+6Z}_oeFGxZ8t#!s0}=oL002ovPDHLkV1kQPCvyM* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/prinplup.png b/graphics/object_events/pics/pokemon/followers/prinplup.png new file mode 100644 index 0000000000000000000000000000000000000000..d69eb020c764fdf6dfaab66b50edee8bbb6e76cf GIT binary patch literal 681 zcmV;a0#^NrP)K(lKk>KokdXA@HEl22Ea6kzh;^6x0qH zv^ZBnT?|R7C!sH40z!~ZUerx>8f4LE3tc)n;4G$JBC;qN-goKgLf-OB^rTC{cH3rMD;F8WZudOXmr zj(I8+NM;XM0K$TQ@s+pg;CCXsnlm53GY+)BS}jnv<7&R^>!KSs`%H(TYwUOHgFeRP zve{%y^6ppM?7Jlt%LcdFJ`^2PAeqg{&rjZi(QM1}J-@-8z6L-GW!DRTET4n|$yTB3 z(BRXjhY>vUOm;OI47#0>v$dL4o}nDBd?@!@`$!k^Y{&Z+sLcEn89)I5F}k1nrQi(# z7Z*ro3vzht=J0y^25K892grGWU=3VwBmNJN%`TPp=-lC7A*&tp+yxMF=1svmgK~-r zsPm~*a7#wyJS!XBw;^||{nmyj@ZRP>pf;q1$aIqDZ$mO9v)`Lq?K5*0Zu8K#ZD+#s zer2o9wd(;H;DT$huv%dB2q70n?`6S++1wWNLpz!}A4dbc)zC-<}vTTx6U zxe0E9ST$;^Ms1Vl^C(Ji&b-MJauI|nUzpHBY<8v~2tw>cau`J^_B{F$;+ut#J}a)L zXKJTnrIvo}2>Cn}9?<3}H`}Hn+-w?(Jm$_7Rk+F2q%);Bm!95T_CMzjW_w4R)n++Q P00000NkvXXu0mjf_O~}Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/probopass.png b/graphics/object_events/pics/pokemon/followers/probopass.png new file mode 100644 index 0000000000000000000000000000000000000000..779bc079608cab1994bbadd3ba5daf1b1373b175 GIT binary patch literal 1012 zcmVZ{0000000000)~ccK00009 za7bBm000XU000XU0RWnu7ytkRYDq*vR7i>Kls|9VMi|Bk(?FIkCjv2UtI5IUCh~*` zgf#>(0ilpqPtKASP-mONg+-<;$$BDSpbm>9M zbML*s=XojeJn#SY&(=>u{HwaVg!p?;A8+e=^9=By{)08I>*lqyvA5#_-TJ{q`-x@y zUjK0;0qb7iLH&sUUH_Rh*meW2VPm}mxInjl5Wq=1n}MEn4E(iB^sN_oPZU8s&WG%#|=^8w&^Zd__fotg2od9m)$#tI3-gFJb!_}2|2I$tE z0B+)m07KC=fb&9J_5GAvV_$&cezK?vn>)J`lX z+D$xFiFd#$oFA8AVRVL*ck#y$pUVs@qR)&@DpP;ODWxSdbuW$8L_8d}K$$qQ&* zb2!g$k=aO=uTH+wKfbW^R2vMe4op2+tSDtTWhQ_zGyx<~Cce?fy;1%6rQ~<4WO~D2 zRrq(BPbsd(sv|3`E{D2)itZK*&Z1SN16aeL1yTvriT!Q!NbeSJ*?_BlFJ={H#r*OH zSEn4F;}H+6#!Fpih#~k@Ox7WQHPiuGp!T2CVp<}E@CjG_Ubc!bDz^6kJmb*e^TO(~ z(sg7ER2>3XLj~9Ywf{vUrZ?K4)Dz3$L(1&E8I|HZ`v>5hlw}F6e4JFVg#Op3s iLqsxsPX7?_->vW4jT!d`j(ukU0000FN2oNpVq8Q2+n{k~)5n00009 za7bBm000XU000XU0RWnu7ytkQb4f%&R7i>K)iG<^Koke?8!ZkB2Mwue(3+v6@nBN? zC5oUBPEm4}sQfMa6_*lxQiT7}^e9G8CJd;u0b9K0|eKD%~k} zB~a+(=Ry8q-T%EijD*m(wzaMQR)PO_|7+poqjX?zuC6clUFsh7l*XOs=~e4=q)vMk z@45*!}pO^+@Wpm$(_xY@(2QK0l%0wq?vH4R_meCw00fHV}>XS}s5w zJK2Py(P@hSF;>L#~_8&M)5+<9Ok#tbu8o%?L^Dkk4Nh-|RuD zBsbe~_~`|CXnpm4g@dEu;NZlS`_=JFa~UOhH-Sa7Ezf?vA@|=#0hT&>EV+-*&i3s; zk0;TG^JgYZ<}tnrEIM7`t>+iuDy_vA4RapJt<~XY)NeRHx^kym*1c+-mh&SJjkJE1 zo>Yc;1Hp6{d50fY50Jv_Om=iicgk2{gnKS2J0m1_iF%c*hLZ&r%@*`cSU(x5JtXvl zt}=$2c~o_>6U0y#%xaMQ?Vfhkc63rEw!*lwZ(h|PJ3(AoH;0^AO~z((#2F_ZaDg77 zD?{lifoKBx&(jbl6A*Tw=~R3NVM=wLFdhTnAaR^Y3um?0+QMtLf>1lacf$3pkVL3TD0RaI)S()MC;d!C?adB}mIZ*%r000006jrXF00009 za7bBm000XU000XU0RWnu7ytkQ{z*hZR7i>K)xm1pFc=4L-R#49_+TN)$a}Pu?jd^c z)=>5UyE!aHZgC-QS7aOK5QbL^>ca@5U7n&Q8%~D?gl=b%qVXE&VLweBTk=O>y5Z;7t}oV5mqPH&Bsx&-w$oQ5%&mbY*I=tmAQ2z zgz<5_Z>1R9&F0r|Cu$GX8!@GYvgCCm6waQC0xDIH2KF30QMk%a4K(FCK9ighXR<}2F~-A%-Wm5m^&Uz+F?rF zk>0o))3&X(;WB_;sx>lLjxo!%MlQsYo~<`#8L)49n~OHfJGodgDXnfx-VpRg2R+7E zhP5UO>K-Q9LR?>31{!6*K!>$nw1snkNSHTVM1Br0tAO1$Hxq%YhV=l?lSU@t{UCb%zS_Bj2SP`f zH_TZc#e3EFtqa0(8MtZ)mI!F=_Pj_5;3pHHMPADv9iIX03G;?Nc79B+tLgctJM1Wd ztzG^H#g^DM2Uc>COe`fJ{K(&vzO*^((?ojyf%?wn;@-hx0mN|`!>)WIA#+E47CtB_y&H?f;pf^>7qGMpTvik`79Jfu3)}S) ewi{RVaQp%@mf!%PHTqNl0000FN0a0Rbs#NvWy9sfj6JQ7Hfb00000a{edu00009 za7bBm000ie000ie0hKEb8vpK)l!9JDcEcmjyw7Mna&`@)N|h>As#K{`rAn15RjO2}Ql(0jDpjiN_x~!tx8MKu zPdVX#?JR5c;UAyIjXc-o48OOwtVW4J83*=|UGS}CS?mI^9DXV{HpY<~)6)sgah~Kk2!y$Uw{&RD9G**)o!vXDb?+vQqBs_9*o%dR{hOPEuiNY z&xD}h`US{y_L@RKU_CP5gf~?A206#s1hv`7sCs4-0VnsXtf^U&+Jf^!-ffDWq zE7EPOI^Ke^Y@P9Lo#YF0!9?bBvP%mB&{@ChvtzcNs0A)cIY?Ht-Rkp#lU|eVqN0E+ z^CZtb`kr)GX#(+%(iMhDu#*aAf<^wCI�HvwkUi|aCbCf1z9FNm#!jt zbi*t1yZ~6?vA^5gLcFJRkKtgtk_u*mGLJiWC$Eung+CZ_YZ>eQtr9I{ubkP zW8J`buupG$(p8`}khvrXRy{YFZWw>P-@j*kx{(TIf-+B{RzaZY&ZntO{g|%Q0_~)P zvw|`G<0%dr>l8ozAN3*b=lKLfnM;CT8#R-7(_{^K2JPusDwqj&^4w3_?n3TyF^8;R zijzPsV7ToP&I@`!{rV!HG=25`cMgF)C-<43cr8fsyddb#y|(8;2wNEU*cZo@3TA>) zo;yva8x=ahc97B(L!H1yQ_p$9q4(=kJYDTJ`04k~g*&qBV}YerkDlc@kOjvHAwv({ z6+{k@3vxl36Owd_E#UNRz~1SBulXo(q2-5yw_kkKU+pG8e=%@C%paL|oIgPQVV=u^ z2JmBIcnN+5F@`U2QYK=}uUwlH}Wo?nx06NJjKNR#Ps5{-v z(cqa7I6jC3zql2=?-T?N@u17jnLz{#&ybJhWNA$XiK?Jz8CZ3kM81NHf}k6{=mzQh zRm=-+Ku<-^2Ra8Zzu zChEri9PxtFZ9gwCVIQEFpx|vnWI?&$93f>x520?E-~>8M0Qz&a0O-LH6L1m*7X|&; zLsfgW)0>|UXazjJqiq%5*HNQV<)5}_@Q7sTVSHzBOU{sH#LG_-~^PQj_wehM1-be zgcLti%L;;T5b8JxdC1F-aDa~j*|$s(an8ngK9mGM6l@YUKJnoHRi9SAhU~uujJGv{ z1{rtg7-?<*UuG1fO{Cg?S;1=)q2E|9Lll&Le8|7e1Udf!A@fEOJQn2q8bZ#Cxi%rZ z;anq_9fnK*J=7WaaVGFwfq22|@a61=4}2(iT7V0(X|89#*KUlHpO1=y8UL-OdVTnV z7+)jEM+D^MH_z3KkIZiF%MjHxd+e$<3&UZq;7I`?2x{!YOMO8d&yBAX%*L3_LLCzh zvza+l3@#=JXXeKgFlV)Y#>>Yy1j??_<|hE} ziRKO%WGD{CGX>aI1gc*Toa5)l7sxbqzj_dpT$$!&nc>G2(B&LIH-3glX@CBB`nXB{ aJNX+q7qIANK_Yel0000G{z~Au%yAiE(KF0000000000ZHXpe00009 za7bBm000ie000ie0hKEb8vpKl|PT$HW-Hq^acT%ii4-yR1IowW zp3WKsRa=lCz~zIqMF-cC8&>i+NG8{V!(>oScY$!!RJnk!=7;J_Qj{Da4$uw-0vs3P zG0o>kzx;>LV|#3m?W<{Y_GLzN@Xfzrn{&!G=qRh-KVjbNzq0-8T4bw(zyU+EBF0$w z1-@czb)4_cM7G(Xql{3x4T4}hJIYD$gt^mWY>Qg#XfGVFT_DR9`!liix(Rm7HLoW@ z5MOj<9WWOn2wB|a57^$L6F2_wZ5_Bu2!S0#pB4&e+k=2Z<|DCPfiUNMz=a8*(fYUN zDGO&(IAj==x=QGpIrR*)u}32jxjPmo*jK)u+W=9Wf6u}f(c5!R2Us1~z;$7Hu@s8X zlR}OTxGvD$XtZ_TG-;gpO4u`ROY~>1xeMbEi_ zz`N1QS8uj#(^jNsQ_=hEo%r$m+WSQdWuV~<#@K&nn~4$ujVN)k8t)(w8(ye*PsM=@_#nNqqx+flky!khOUs|nUqN(fY(kW>k8 zUBgK%`NRdm(q|LVr~u#{O`H2agz(#d%LG?1N*sv2=IvDR?-R{UFx^cAfe$6DryZ;Q zlQmvU_V@2aL-Ll%Q^A=KnCgHBoMN2d3nLVlnv+Y-_;wv)OoDZ;d7rjisu@~tFqLcG zkfqxBz=7Na4W{~>qLM_xMQ{-r;RDVThwVw>G+IH$Sx9vMjIl zmBhJnt~?`LP){+gw7~it+q*>y zNsh5k%XY>Vt`uW){lb1MvCk20w>}7Y$qUN}?D3eu->OVMs%Ql~9-DsbR|%$e_e#>- z0_J8soZSLyg1Tm(;#?kqP6!XI&Cw?fxPNvjEk4s<9X`|6CvP^T=znYf09ABSvF7hR Qs{jB107*qoM6N<$f|kz5>;M1& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/riolu.png b/graphics/object_events/pics/pokemon/followers/riolu.png new file mode 100644 index 0000000000000000000000000000000000000000..a49e6e01eb1fbff2dffbf41776f53170880e0e72 GIT binary patch literal 618 zcmV-w0+s!VP)FN1NiNTo}F?nGrIcbrpxydOhDRH^+Nl8gjS#baW00000?%<=m00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)IV$7Fc=1K+f$Z+<-^2n6gU|I9Dwq^N(dZX&L&Hf+!HXHss5tD4O1LTs}@7PSml zv|mVm3d@j9V%a8t%x$5|138O7fHLgvr3xu);&x&-EFIpKH#2xA*d|mJ_*|1!0 zzujxb`$Ft)Ouzf}^+<y98>#J)F zKBp_Obqu{Z-#V^7Jsg=*H3Vz1P5zWx$FLyRI{DoDM`_zUpM30JPzA6NyUk5BX);(a zoiq&mSp3wsc|Kj-SfHZaF=*Rhp=DE$RALGXvPzWTuff|LS7Z2BVZ2aw6^RNQIX$=C zjZM=C7O*r+;d~M&rPD0SPZ(GomnW7@Xk_17Fk}k)BF?Q9ew@GVA0`ojlZvL6y9MFn zBlP0Xo@R&r0Rn9u&ePw%{KR$tiXSpG0`K4n=ly@V1Mqs~+!1OfSpWb407*qoM6N<$ Ef^&8hM*si- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/roserade.png b/graphics/object_events/pics/pokemon/followers/roserade.png new file mode 100644 index 0000000000000000000000000000000000000000..77ce4ef4d770a1fe8dea1a6ecd83feeac437919e GIT binary patch literal 956 zcmV;t14I0YP)u@ONTVW~;U+1V*+nd!Mf0RaKYL2-!@Nl~fksew63NlEGH`H{hC{Wej-00009 za7bBm000XU000XU0RWnu7ytkRGD$>1R9J=W(=kXJQ5XQ=2e;gEL%aw#RebfpC35Fo zA%#+jXKA+JlLszl4296G;ONDuoK|twfV+k|6+%Huhc43T2&7o$3bkZC5ChuDzF_X| zy_a{c?ckg8{qMd1|KFbkfXDT?9@pdgKb8^%4;lo4pKgUa%zJRff507#nQh)mIb2G0 z(8f$f-h(L41!-0SsN|#iDOj`+-bh=&MQ5a*?p;ORSLX03vp2Qn;5X5@u z3$27mhcKWnvyL7NA)-?-?u233g<*V&cW?h;W(tYYO<3U?UM=(rMuwE^b zih6f3+U32Dbd16jub0EFj;G>oc}G2CRHjm}mNEH^@MN^hdzBQN3b8A+jB$90^u^>d z>$qofBT2zpA-@`oP`t}qCSPhu{jeDK50i!_ed;pp``~InhLJCJ`zZmO&PB(Etiv)n zEq0syV-PtW<>q}~5MoTiFemn^X+dbI$;f$6lZoI3u>+V3`njTlyaxqIC}_uj4$gAs z&a&<@ZaiY%v;Be-DK^J?qto%*hCP_e)A`bsnqukY^4;C?Zv&(l*bu*h4iJ0y=H1B1 zNZj3!?|U8}AAh}aE4J)E+grKWTu|IJ=go;(wVvX&Z@%O|d>QcvR@55`pGeOF}psJVNcEzI0j zT4Gl#wSw(rwPr(PrSfsCmi)Yj94%A3dfxO!mYZJBbZoWcRa~Jf-kdr&XU};}kuR!W zZp}>cWZuz(GwSZ2#(~ftFl#f{nhFMA(U7HVE$e6ngR)(SywO@)bEui~jwfyxi${kk zwlup`vy#)6)^jLJX5QAUB&lRtHK#uC#+&?1QA+L-+r2tpAAo$xsc$6>0AuYsu>_=T zmugy)PYpoXl27Y^ZV=?R-GOBnyl|;P#Ai$(ihted@6iFqGBY%Z%fOpGpXWD+0{t~K e6~UPP!TJlLJoAZ>R)D_%0000G1#n00000000000000000000F5OSa00009 za7bBm000xO000xO0b}Nl!vFvQmq|oHR7i>Kl`(IFFc5{=ZqCr(5M`!GvxBf0tH>>x zLs7e-_Nr6nh={o&iukw1*ch7#C82GGirYS(!|iApHST=ddn|LN=Vi zx81vZ69e$>)4`0c?cU{^7~p)xhBA2Ea_{m@48WVO%!gMoy4;#cmt{k{rP<;&3|{1B zhI^Om`p70cdKkvIe7xg3rhl%6?WwIN{Ls3dGM{kX!#J-FT!s4mB>RPB5PTihvpDT% zUR4j{%YpN!@Td)H_DkE~{quR+9zc?*)icf`Q?FU-_%`EwPpC7mnUVRclfTKLg|El9 zEd=YPgr4WNUa`_4nC81Ug{B?Fju8TsEZ8h!Y~G5(qu^~p7wMR|Njo9QzPV5VOA7Kl zrjn_t7LrwPXZ6>7ubWYfW&{wj6qAGjs^qtY4$SV@a jVxrTP{mW(Tia)Gx>tOjFm!-DP00000NkvXXu0mjfkaYn( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rotom_fan.png b/graphics/object_events/pics/pokemon/followers/rotom_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d5587af103e3f779fb2cee2a604674ce87d7a1 GIT binary patch literal 695 zcmV;o0!aOdP)Kl(BBxFcd|_KhR^-8f_=O2+%GXDA3Ke z;0peL0^L&y$Y=#+sxL6Ibx4P<7Alup{;gCO5$1?)FJ6#7QN*`x$%|7KfeI%Dn0G zlwQ9mqreRaOF1{pQ1C+6(;N!?9#82W^XWu;F?Rxpr43{P=>sWM;To!3zHfO#_qgzQ z5wE%(`$t}O0SGgl%LrvrwT8rmh9`871LH+f*?>AQsm|<)IEEFi&gDC6Xt=Ioqw9TN zues3$3-@PE01(eRrcTc)Jii_oUgz|{V^L~7IFvnoekiSuK))&9m|E6>k=!^non>2@ zETzhfVU|b9DpDD6Vf1*_*W*qHq=3j8)`6S?psVpZ%jc-lMQcdB4J0uahI2X4&mA2C zYNfV@fI<0!7==k-!8%hajfF8ZOpWD8>ilYbv3+}I4QrdON@_U!YUmltA$(=>gUS@^Lp510mGb+zyx%~Q*d*FRps<9TX%9qK=c drN*+1c>{0Reeop}AQh000000000000000oRW#!00009 za7bBm000xO000xO0b}Nl!vFvQ;Ymb6R7i>Kl(A03Fc5}4dt<2j3Kgq|1kbzxL)8~R z>?n#N#F&kaAfdL4B`@F?2sAIp`F!WNQPV`N*m~QS-}nEQToNI!b**c0$xC?burF&a z;IYF#Gt=ku*kQQhY*{#WCL<&>_u1c)Qe~l(Ig2GiH*=ryQdQ07RS_=AgyjU?W*#7o z@*_ukcxKDhY`$DkgX!3BYfQJLhr&o2nwbMb!}4av4PQF4%*_P7TmcluzQq7!4ipv} zpr8S6Oy&vadV*fA03e_?91vLZ0#XC*cjTBY@@bt79WOlw@Jo-Rl*KNCQ^p_8XF`4mYL)}-Z2M+pc15oh5%&z7gz=O^lVQ{Y2b~NRe|H?nH-HWM+x`BQ8idruT8krwUZ+5v8k)lZm3;U*tFXvW zI%X%17VNMbFQ#D`IiXFz9X6Y2xU|JLm$0ylb1LX@B)F`x;=o z`vrLK0(y)M_(WdxAfF8Qd^rs0F*Q`LhX#GV@D5HHAb&hP?gn^5fN&dMTQk7YZ9eYr zH(Pg<-M2s7?UXq6hYqY03{8WKXOn^ZJgNFEXIT7K{Q<-848WQ7`>6l`002ovPDHLk FV1j=U5~ctE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rotom_heat.png b/graphics/object_events/pics/pokemon/followers/rotom_heat.png new file mode 100644 index 0000000000000000000000000000000000000000..df8ce752d06cdfb3f5d3c459546c1e0c1823ce0d GIT binary patch literal 563 zcmV-30?hr1P)Km9cJvFc5~>J&_KmD@qiJH%RABbZQDi zI#(!bS$KnrwL_LOI zwa8f^U+2N1pcv!OGE-vQC(5}5nxN&TJVx;Y0$7~$WKtEpT2)c1RU{z z;w>wjf&6FRPi>!A`<|-qF*}Wc(|2w8+k6JaMYY?cyG;FG zDj85xI8+cX1$ScIn0Kv z1}N%1`H2Am0qN=aK|w*eSs?%b00000&UT^m00009 za7bBm000xO000xO0b}Nl!vFvRXh}ptR7i>Km9cKyFc5~rH_!#RqBYQ=TOXkh(6NgK z8nDo%gH<7D=4Q$2Fh(*YK!GkD49Koa$W!KSL0|~-nn8fyB}Y-BcubsTuW$QA>i>U{ zC-UH6U;EnEe^UYgp5qtG>>5ESWwe_GL~MG(Y5xM zh%@=s%pl-h3B5+aq~@EL&+%v(tzQzqE(E8f<})!n^s;IVikxgd<#MGVhQRQAmYhHMQ?!bNZ3GXNIlk_2^S1p#x* z)&R3}f(s{TdBXm5N_eJJ_sNeK^W~b}S?6tYV_~_l24CJW!Irn%dDQ*5SggtPTveSw zZu!>nvZC@08g32#yjObJ2-;D{FzO8Q&Gk=p{i_!YxG*cCRME0XEZf5ZmumX4OkHBb zpBl#48LSRptHZZ_Ld(72YHP}!K4{qvi{wM0E*2(nbNUkJmPc-Wp|>|Tf9t{-aOQ$W z!}81$=%N#h9M81wFFi3J)Ox1jX$}NK7BHwvAi?(Zwam^UbAN&N=n)T$q29@$XU&ZW kJ%?B3Kg#+=JNcP<0OAy?ZPI%MT>t<807*qoM6N<$f<|RqeE}5CQBhH`>G45fq1kaU0000000000000003A2Fg00009 za7bBm000xO000xO0b}Nl!vFvR!%0LzR7i>Kl|66UFc5}0W#Gmk0t#nvE_Zb`mwb?3O9Ae5CiXU4=5l=oLzWF< z&pCEk2T<*`$Llga6UNF7^TYv$HD!a6F}JW?))`hetKR2I5W<=6F^_E`d6{)qA~fUl z7&57?Ki>)TnFgP1A`~w%4ZgAsW83EbyKDsq&usAAGU)OtgKN-h8+6$UUSF^`7qT(v zG7TiQ{Amo@OoQJ)Tkd-dnR)v8ql8~#>P2;2T{nTWvFmX>!g}q01G_;e>T~0`a5un} zlxZr%gbTEwbH@hdH4joNsH`BKvYI(ME`Fu5ECIN&7LJ|6TBqvPEL56k{aB!(W9Xre zLIk0Dc=(}06f}lA7T;0uGE@+u5Ths3=4xCtP^t7eA4)L5*B}_~*o>a200a5O_uoq^ zxSkuwnTLXldi@|shwZo!%W^t?JHPbho#E)YR*s>ELh`B-j8G7Ua9oDC!nqZUgsz@K z!@7QJ$8tLUzy$~vYf&54j6M2^UdgfV`<0;4!m+%;J#ZyMD@f;74>`2V>m|AkmGsSG z7>VjL63dBY*fiJ!W9ZZhDioyfr1i97Rc(@K7RvCh*nMX7eHKZWj;!llr*2mA-hY?R z@DW-=lLJq|5PJ-^Oq81B1_f~jy~=^rtlovoEJ`D&q_x5FJc<;uI|?Q@7{$)e(rSiV zwz})p%%<#r%v#FpjZZ-k3Yv4Z9Og4y>~d8@tE9)ov X>lU>#7C}JS00000NkvXXu0mjf&x(Zw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_land.png b/graphics/object_events/pics/pokemon/followers/shaymin_land.png new file mode 100644 index 0000000000000000000000000000000000000000..68c97d6f0e61478cad411f018f8b1e60554b2716 GIT binary patch literal 485 zcmVK(!WlFP!tAm29ho;jy!^nZ3u}oktZM~ zhKV)|PEGpfHYrcQ#(2C;UDVXAgSo=M!hpRG<-Ij6aKcqnqZ8lu-!GGm%`>UMs^UcvZY)z{urBIw}4mmU%u|@U(KntafgSo;6FlesFmMa+pljViV z@0SdKT`9~NTtHeEVvCh)kfD*vtLH@cN#P2>1jtWy*y4fPZDJ<$(f`7rw80Y52kEH| zSzfw}#g&KHSJ|uNiOO!v^QIiK<2%9rEZk+gx8{Pj%L>FhDS4*{<7`{{^*@0v6K$-K zHGG*Wor#Z{<=viH_pw)*ug4*_%!1e>+g?nSUS}c-FYW7?FnTJ)KAg%~jzi+sc7^9n z--My7@L)FFc>DTz*oWv7Lgq~iPTF&~J$LK59+1ch>O$QK=7FQNLo}Sh^v838Zy+7_ b|5-i&q9q$gYXp?200000NkvXXu0mjfB;?z$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_sky.png b/graphics/object_events/pics/pokemon/followers/shaymin_sky.png new file mode 100644 index 0000000000000000000000000000000000000000..22165842aece9d1afb2cad8cb6568be34dcf6225 GIT binary patch literal 1030 zcmV+h1o``kP)R9J=WmO+c-HWbI*F&c8|vCw14CkQB6HqP9l zLntW(Qo&l?+p=N1^9kBhpc!x%UrI2oe5`A_e#~vyx%jrpf;;4}U!dQml4DCxE}gd5 zl6U+0y{G@*PqGrvJI6WBagKBRFM})zUp`vEm*mj`Cv;_RqucDWn*UaiB%yTH?+Ox` zgqHt7faD(c;`e>-iDj$j#rq*zu`5UtnKJ*SGjr7yEo*@-QwETLW^xkH5AyiHqBji^Xt}QMF?OJN z)7$V5GI5WX(h%bXvj#{ge>N%)p z=!_tRjLppi2xP&?Fa`LEu@3;$2yAO^40(gJV2d}!py{R*Gy|p0$d!TAOhEG-PvkU# zLK#3?peC}lOw;1P(t=unw~8Bq+JRt;d|+1dsOB~svzhYxhe^iTT+z8^)JwvMRd^yw z!!Q-MYQeSVvTY~H;Q@cgn0fK5I;B=$aRg{0W=Y7uNX^Ho4j4q1iM)M~U*B5+%~%i) z4`@@@FA)bnsiiiyRx?0`?4Kf1w!Y1bpK%I^{om5!yQwu$^AkG}0=Iw+T)#scWB^BO zKymf`u&aOh>Ie`R1KuZ}$B2E^6g;s_H6ugo0N@w9*mbGc^nxh%6!j{O%D);YBPd|# zaBexsMTVPdzO%)5Y0qrD(}A$T?3(j1S<$pU=DW^=kipX+KH^E6X5uArw)_p{R@2P zZ+OmjD%=E%UVoS^UCKg#v%+l}XjdST~sj3Ej4 z$iQsm{(;Ex3@?Y|!*e(PJL33;j$7h11zbU|a}VfzkGlL=bPfI2{J)Ps0YmD+veZy%`2YX_07*qoM6N<$f&v2L A$p8QV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shellos_east.png b/graphics/object_events/pics/pokemon/followers/shellos_east.png new file mode 100644 index 0000000000000000000000000000000000000000..adae89d4ea0299eb68d6fa086b07be30454d9f06 GIT binary patch literal 603 zcmV-h0;K(kP)G^@VSy`#k0RaK|**P&WF`1dMNoj$p$yopZ00000yVg3s00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>KlRZnrP!xtUWC+sb7V&HArBIy(5hr_1 zNeV8CqT(b%!NI{0ISvj@5e?dAK?WIQkpGkU`1`wMnde=_iORQG&|b%T_g+ z`Tsy;bN5wbC9Hh^(vUe_U`@AgW>dHrt%OH(KHhF$i58sRo)hdRGD5?urtpvuVj_{P pQ^RU&r*A|30^jE@3|ncOoOk{=xD1%09_Ii6002ovPDHLkV1fks1NQ&` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shellos_west.png b/graphics/object_events/pics/pokemon/followers/shellos_west.png new file mode 100644 index 0000000000000000000000000000000000000000..673be6447347c9bca54aa9ceeef77a275ec92ced GIT binary patch literal 583 zcmV-N0=WH&P)xw*+%F-iGZ(E$MgF)=au(OLP4$?56&!D*3^A!z^r00000VCMxu00009 za7bBm000XU000XU0RWnu7ytkPy-7qtR7i>Kl(9?0Kp4fdgmdX|s7N7`{s{`YO5I%A zp)C!`*c6091J+2 zyUT?bMy5=eGW{Qwi+}Ss<}W_f1Qe+Carv6fm~L=e)&y#OT>fh_LY0Qs@W4|XsPj#? z?7~^hQddo{>9x`Wb$+Gp)!{5=sg4M^00B5q=i^z-QY2*Iqoz>jcgAeY;ARj@<>EMg z)fDP{Jd0Us&KL{d(gU5PUtI6wSG=Tx0a;mDIXO810000000000^XkR700009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K(>+VWKo|$`gWz&@Nt;1Jr%WOpltc%e zLa&>f>EdRgOK}g>&8g5YAh@)OsAmRospK-m;$rVUl-JkXU7A$rB;>#SdN0pCcPRix ziWDhQx#?M1Spfk7;kg;<>G^S?*=boRF;Q^<0000000000uV_7000009 za7bBm000XU000XU0RWnu7ytkPtw}^dR7i>K)G=$qKoke?gA6yssUS$*TC89l(gw`n zr%-qZX}3aL4@0~nE-gq4P93^*3>6`Du#?g*5-I`dhw4RJyu0R-f=dVgxcqW=@8!u6 zg!b8IpMCyQrWxKf`Y_!)=kYbw%Q;i8qb#}~Ysy(To?CknRiZQ{XGNLNe+(I}j zJB~)p6nm{z(~f{B?DZ$YVcBtNUe{3D0}t4bBpZjVDt}gX{D@eku|bvY*(HFAO_Ci2 z5O39gR%LHSzLfp~!JPmAY(LpKs5IkV^Y2?BdtGp_1XvD;%6JtQj8LN4)+XDk7lz4> zbDd`+mkLB>6pjG=1xoY>E10JSI-4eYJ#wDC5gZVe^}8_eKezh@uNseV*uB!~3U5Y! zfW}j#^!&y(O>O|e_+?;^9mhoqZ$=)%#qC0ATl5L#AEkI^ zxj|oP+VPM1g0flk8KpD60rNX&twtS7Y3;2_yKQc@K5-rKTZNBIOL#)f^D@8gI8Iw> zeCld0zucMOn)ETGNDh`7*2D(F3sGr1!|#GwksAK_+!wU~(mx#3iyZ&}002ovPDHLk FV1l4e_f7x+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skorupi.png b/graphics/object_events/pics/pokemon/followers/skorupi.png new file mode 100644 index 0000000000000000000000000000000000000000..032584f56662f821c4405e9e922911aa4cb87a3f GIT binary patch literal 686 zcmV;f0#W^mP) zd2t!Rv3Y^fNlB3@p_#F{!8timd4Y-P>G=Tx0hyuUSz)mN0000000000f1ydZ00009 za7bBm000XU000XU0RWnu7ytkQBuPX;R7i>Kls{|SFc^om2}GtYh0sqC(-xd;J-A@J zwOhwPQ$hzrj#CkuQ|Je1;UBFkFC@5{v=BX z9qLerI@JGCM9@m@Rq(T%F7_$JpX}eu9m40=uku{%5+;c@B_twwFdBfB+$CIF!VL+@ zW%A&*iUrx*(aS`bCQ8}YEQy4RxJ5*(@!MEPGP{?6MCj}0G$D}?(aQ@~z!IiEQ-NMpJ05IAFfdyYd`1_-B zbCEXe+7r7rdI7aXyIMkNs?AK4EXrc4!X|rRSp*?|ecayDiid_f#xN{;ox$m9mA9GL z%r5mzH>}?kC!FXe2#-$gPHkg!SksOh+y5HX7nAp^<%f3{VlyLbRGv#7ttrcM)*=7? z!`dceAz#YAqlJEvoxDzW^i5C zbZCiL$Gl6#zF4J9DZ}WLA0w;J{Oi?l)G&A+Hi-xhHahA=I%ZuW%oGJP>pyG95)6!P z24ZgL{F{m<@Eo6vwUh367_TLx@n{At5eRqi<4DN!=<-VLsxd2+T+V9k?%rSh19ZPj UG{nmCK>z>%07*qoM6N<$f}9yRlmGw# literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skuntank.png b/graphics/object_events/pics/pokemon/followers/skuntank.png new file mode 100644 index 0000000000000000000000000000000000000000..1e31df863a8d9e854f7554646db251a144c4caff GIT binary patch literal 752 zcmVMk)bIeDJd!G>G{E7L1{5@adC0!*^vPO0RR91_i`PQ00009 za7bBm000XU000XU0RWnu7ytkQW=TXrR7i>K(!q+_Ko|$`VcA2V5EyGqAnf3_JqQJ1 zPra209s<(9p85t-5PX4Nq67(~&9zYa5-wpI_+TEOH_t_J+zm*Hz43v8HJrRbL3ZOr^%r}8}cyBUpiRUDQ^M` zoH8PQlw)hlXq?=M|0Q?o?d=a|7|&*Szw)uSfjLWAE)^VEThe>4Trj44uV=Gq;`=<2 zuYAJW1FJQ;T1f#%PL?syyJR6uA>Ld6itBk7I#a%~CHaF1q99x2t4u05a>BYao=62O zrqJG7|MKf|4$v_nk{z{o-dxJV={zVd_=%L<0&W(F;=fT!)nwGfXHCYx?9$#WvJTF~9ujD7xYvnH;UVbSjIExaI izCe$rQ25mS74sKK7Pl2|fk2x80000G?59IRF3vaMQaf00009 za7bBm000ie000ie0hKEb8vpKlfi4+P#nh}S+hRx6kkE`~H5v_Y43FEws==|Bq;CHpg-^SSG?qHcN$`Jd5c>NAhL5 z=ADLQvy>_Hc*&nZA>8f(KYk+L@}!Y$24)kTuH?_N8{}ZjlScAbd7<7H&it7+S@L1J z3gh@NB%69>9@w3e^9k6&hM8jPKo-L8?wnj02V&k7n@iQ}5cd1hTugT%gxLL&Y>Lst z^?qAa=Hjy0g@U-|gprJjp>R8WJ|CCY`%tf84G1sL&jd;+!vi%O9 zN#MT4$fpj4pk5te4TPW&A7KrEW^5IIye{4zG|P{6){*mg%C^6t-@&$w?fur8X46gL}BH{A^) zFB&YymQGX2Km9cBvKorI`92rU%;TR3xJY>oej1k#H zc&E!Me6J2^;SD&W=Y1$jrQ%k3`ZXRjKco3IDMOsQtv_A#0o4>I134Eez zWs!&?9Z(r3v2z4t_(a-L6!XTuBAM;yry&baRPg{!si{vb5>X_hwA>hMuH$y1bZ;0L zTy4V81|*!23N}Pn@0d3_9VIk$0fVjpZ9u2XeSo4`Grt35NE1_@T-Y*szbzX-r(@Q! z)%8A5UDn)>l3=4q4U!!>=JGZ!MruTjm9R%=O)i9^+ed06U?BbsY zE?~wwj-;FtNkkifJU~_78L|cmm0R+d%Uj$P!_2-`%>>#*Ccv1>!am~~`G-$cQ>Ggv zo3b3$4v9dsW~Z)7HVG1^{cDS{MjN08I{1*)e4-A?$U_oAfr$N>5{jX@%IJ0KS*{;g3!m~A_O9glOYia}|LoTy-1)k-gX_nK%-=Zy)|I%* z&l%~H{Ja;7@tGe0TzBgZuAY6p7>`*OzZT=?Kk1KW%n$TYwr i{&&4zv+x7`w(B=hvG}>gi-JS|0000KmN9SKHWbIXaL{n*XQ;QJ$dsvrH!qob z3lj-A!IKXN;4KK!0LgeL1ze3oYS|KS>V1Hs{RUkMD3#DBz!?NbfM^dL>;SQ+-f)AV zl6<62ItLDdc56Ah{h`hz1oFL8xIqXT!B4 zH*bj<2f!_uonG^UO@V{MAFY6hhSrgrn54cE@NjWGX&uq&NlQF}Jl5UhI0u*fs_Zo? z{Zg z?rTTF0>;G0dE~sADpJg93yeD@S;2hzsJxnU6*>5jFM^k!>m+g>4@u z;yFNJiB$qAP%Vwxc)Ujj_mcQNq2uur`^K4RQ6*3kn)rSw&!Z6_Bfls{>ppkH)0Cx_ zSkLfjYiB%`D+L+IWA?}jpd&-0j)xSGdcHlKR5}VtC*Kcji!Hko*%a)BdbHP0Q&S@2 z$j~Y<$5%~0uonzE>I}NO@ii}Z+2o>oom+`nF?56ics^(A&%`>qV>rAp3267$Be#EU u^rqUy=;*Ey!`%d*8Xx;@^|>qlo$)sWWxXs1_a%}50000n+aN7ZI500009 za7bBm000XU000XU0RWnu7ytkRPf0{UR7i>KR=sQ6Kor-gBU<_|bjVmJow6TB0dL(} zx`be296ERCkiiX4NG%2jp~EKsMS_G(P>F3$)irCI((Dax^*8i%ANq1gTar%g8xs57 zyWhvXcb6E(|M+JD-EqAUWVD_;z9IJ~>kTn*y`H>CT19Pw+t#IG5~#1HakeH0c}@$k zS%Ox#tV_itjz%}F>Y5fn%Tc;=R07Gp$`L6Qqh9Q2SmMsw1X&z60JI|_lU5iyYL69< zDo2x9so3v@s+gCo5m<4)Y63t50EGaNs%25>2+fjGu|FthC(BE@I#8bH*L48tNCOxd z0J!S2$rUI^ldx2b1`%Vj0&V82HbIu}yj*F3Y@{7cs9L9-0Mt5l`^pg-$XuZ~9Weew z6l`qfamZQ(XAd7~QtI@TBh=TRDaY4cX71@oI`U&L(TdYqk1^2%Yy3TqL(;Uc@OJj! zXaJ7`2uJ?R(*yy4-eSSwNILSts}wJ}2+@S}!I#Bzm^KK^#fPWQ7E}W)BjG4LrJhUy zA>feUK&^NB!cp3@y;AXXKag|=8*jbf%Z)Rl^z!l6XPPJgClZd*NNpi|q;L@Q<(SN| zEgVsdlTz`7r>08b#T6&;YWNnw+xH*K9Q7u`Q8tw=FnhLBD2C3S^owoj2-}t72?5Y} zh?`O8C1Va#pwtV7(t-)8aFkNH#qHVRNN8su4ryZu($UbZ6h}ez7NAR@bpi`_=JfTe z`4V@<_YKZpIPyRMSn)2%BN-0ly|a{~ZlxH)8lw3lSk?(>r$6t0`ignev<0tlq&#OK z?w*r09W!jJQD(xCx>rImXH2UjIsWGFg2!~9>ESkV@V0|GPr}5osGbAis3hQuhc>Ac z^SSeTc&aDWbot|BCHxzT^&kjG>T^)sPwQkR4qF|pbW~G}@ix_pi#Y1wsV>OevKE0$if9s7mYCQ#z8l#viBh$vG^4CX-P>*000000000000000F2@3m00009 za7bBm000XU000XU0RWnu7ytkPRY^oaR7i>K(lJiMFcb!0Z}G|zm^c8aL17I_PJlWS z$%ss)l-RUO6%aPq3c`GJ867T^O@C&T+5InXeGjl)XpG&G|vs zNjSSn2Dm3H6U6e!Wh_(cHRyUrSFhK%FBxhYnnn@swi-SrQ6blj&~;(oJw7?lP}9De z2-QdIh|>!x+|Ad()uT&(#~%XJGzgRoLd;Kd70SlVhc=PEdlpPv9DWwKM{j;08mrLN zmPfwNTRnTm?TqX`=qjn=mK~8=uM8EpE*=+Y!>O|SL~36m6AC91^@H`Tx~&KQm@og{ V+o@CmZQ}p{002ovPDHLkV1keW%;*3B literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/stunky.png b/graphics/object_events/pics/pokemon/followers/stunky.png new file mode 100644 index 0000000000000000000000000000000000000000..52afca9ed4e2b0441e9cd4fd1b9bf9662811d64e GIT binary patch literal 597 zcmV-b0;>IqP)G_FKiMdfZ0RaI)DM0`L00000lM=}400009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K(>+VWKo|$`BZE`&9YPc`*vS)4eAzmM zbQg4R5Z#+XrL~{Jv6Hk=IFrfMp=eR4DV*&=A>Mr#udz0Fp_dlAIP^aRe!brF+$DDa zY_rWa+x(yK72Y`1F80Qm*hRK(zz#3)>R6qq$QHV}JuC3W4NO=MP7Ay`w0B4pcNCi) z2*U!e(E#NdsHUP|muS6nB_596;*C&L;{{GcK}>XZc5U&1EuCj8x~|u*iPlB~!(&|4 z*g^L;FkqEvoED7T(tv1fP*JcuUT!0RZ?Cqy*mB-!IC}q(Upf^&lU(vz4c}gF1EQ1h zL9nQocN+7#9=u2e+04>7qf^SIaW2f}-Vb1NiqKv~Lo)`GKYvV~h ztCx40?*|CmL~koW4JI!@_^;vTa;(M45jz#`ZR$#PR1oMP-({>Ji7 z3%cQB*mJZ7boe$@PMKuWbB7p5qs8t#cYwXjX-dN<9NT&)AsZ-GmeP!ofE%)T=2?8#HivQx^&SzoML j`8Q$8?6s0>xc0ms1Q`<~d4D|Z00000NkvXXu0mjfsWJ+Z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tangrowth.png b/graphics/object_events/pics/pokemon/followers/tangrowth.png new file mode 100644 index 0000000000000000000000000000000000000000..9075975691909497f884286d0cd87c5d95826db8 GIT binary patch literal 1042 zcmV+t1nv8YP)Kl|gGGHx$R`F!VVaT;8R8Y_ z87=?zS$ceC%7xGO^PSd!su4V7h%XikR@V(L!O!EdmZ>4To`#Tx8)Ha?62*Swa0iM zmkVw(O?x}mM;YY6L%ZYfdMSE{3D%oI=fH z-m7aw=D__6e6fV`>K~%!Q7sr6Fz^_A*knWy#!t3*pcqaZugYv1ZfLAPk~9W1hW>!D zqu_RSMaZ1gcN|d1k;f>(lbFD7N>|kgc3f{*GXe!?&5@W9N+ZX&!ygG@q#ra0`5j|y zI-?F@@kzrG>yZ9g^I~0hMj)|!3$_bJAm6R1HJpqX>$`~nrp)8Ybvk0@z?+|i^{1B& zhOaU2ooJQ$dSXGkonDT1$rL`*>7G6u2>uiMf{*9@@72OR2mYt{7v-ud6&>Wh&;S4c M07*qoM6N<$f@28ZiU0rr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/togekiss.png b/graphics/object_events/pics/pokemon/followers/togekiss.png new file mode 100644 index 0000000000000000000000000000000000000000..64cd1f5295f9ee8322c52d5f27a259f4ef4ab6aa GIT binary patch literal 733 zcmV<30wVp1P)W0RcflLFwuFk(sdo0000000000000000000000000lwOfA00009 za7bBm000XU000XU0RWnu7ytkQQ%OWYR7i>Kl|ggbFc5`BXXG#6+S<{D?kQ&+&@JlDUl?>$Uvg|Ilmt>GYr`k3H+)C)10Vov2{_O5c$OLHr!W@ zrD@d0V4tXfAW-)yY#@pZ1#0c0qmdA0iAUJhU)MN8I4-bTr4X@I$_7bmArLJ~d$6!d zBdT&ROo+0?pHM!1Bfa_EF+bu2Xuv6n&!KNs5ZJ2FlRnA&Iyw|K5KZmb#0{-nlbqi7 z8|35Dj|TlFagCFXNa8FkIOvl@cR{TKkp_D%ans_?xAXocThK^bf(Tv2rAFu7@Q|tY z+Fla7U8#G+aM<(2>wTDd6T_*iK;Ul#QFcRI=#B_NCJt_*QA$+8%|d_F$I$1AIcSXl zuhA)G=Ennko}2!zgY-nA1LB|*VADAI>kO0#L~auLlf)J62)w9GWWad+|#j#$3&N-6EBGY<0d9zfoRx6Ye0%w|6CNbr9>pkDDi#t zDEnh4;{LQUB04xt9lalIAUYCyy%t{M>(|&$KQzdR=;$Z!-#|1F)?~1W=eZ8||C(AR zFTae4)3cfwuG^qKF+s6Wh=K+r00009 za7bBm000ie000ie0hKEb8vplS{DF|nIrwreT--Ag-|X9YPy0ra0l161xQk(EncMx=1NSnw`0cl+ao#Jc zW{zSlkHgtxeq-n)-14}^3S*AifX?l}dVz5@U(Yk=KRp7yW>*HeqGBgxFtr0}wzB87 zgPJOnm?_<5wYbHnPUW&7!GE24FfFt~urkcDSRw z!wQxSv60Ppl&;kYH%XnjXGmt&XpO94QxK(qfd@J;dU=Dc-%!VF2o&~kU0-V(7QsYGb&hN zgOH61?qOxd*JjEi7Bl0ya&X9N;tZ-LrwAR?_~>MhS>udX|3WK2_)k#u7P2+43oMwi zbeIIuO?XM{OS@RL?##)9A>j%#yIbY1$E}e=kxA+ZWB+k z*+KOAql;=L+Mt$O`-Y;Wc(gSrj)0i)V7Q;Oc*G-%GjWPmPSF=DFca4w2FAP(UwJc5f=GjDc)GHZMA=o?jx;cTrWS+-ZN;O#?>1#at;2StP1re> zGkpzk>*xgUgwTg%;>78}l!7!i>r=R1+UckDH^bwA46H2F-X zZ)1!}gaHwMoXM3RPv}{M!PG2_8O>!Y3)glcJ!4RrPpz3KZ@m9I+;t6#-P8i`osxEk z-&DkPF||^Q@TXt)q)RDjcjPITJpB-%qX*>DyWzmM>lOU?Ps3^=3xDlj_x-NCuCL9R z2ks|0J<~6Op?8JP=NG^*O6T+VD|a#eeAdelslu1O!ETED(dzt4>fd?!-zGe#hG$?m zjdK*|%8lWUrH1FecU{A0={_OpeyZrZL?_Ne2bxhZlrGnv8BC#D57EZf7`M775kAX^?w^|8M*YCBo*?tOjA>00000NkvXX Hu0mjfk$_jt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/toxicroak.png b/graphics/object_events/pics/pokemon/followers/toxicroak.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfdfb632d3c5d4854719a138375b6379eb6dffa GIT binary patch literal 665 zcmV;K0%rY*P)~0000000000V0Pi900009 za7bBm000XU000XU0RWnu7ytkQ4@pEpR7i>Kl)sDHFdW4VhZp?`9TmJ7PfmMK)!W_F zDY%4##VcR`e&h&8ByQ>ZndGOGP<`d$c@}hek!BVPK4a(ZnK@8%0YH-d64yjvYVUFN4YFV zInJ`Z83tJ|NCiI3j&YWav0K_6`@KKT^De3}c)v(u`0?K`a zF;gA9!>#Z7g)o1G7i8fx@F{Pr>-TEg`oNZZvB~un zHvE>IwqW7UjWG8$XW&a#Pd$CZjndniZJz+23_jzzwcroa7#74!>ROAKJ8Wr8ioF+p zjyoTHF;ActS;CQ9?m!`H#m9Wa=?f2z{73x(5!E>Aq~b~K00000NkvXXu0mjf=LIf< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/turtwig.png b/graphics/object_events/pics/pokemon/followers/turtwig.png new file mode 100644 index 0000000000000000000000000000000000000000..a5246fa1ee76f220f1f5d2bfa69d28446d93b4b7 GIT binary patch literal 534 zcmV+x0_pvUP)K)G*Lq)D?}FMq?KrNKlrd}DKp2Lv0paBqLky-{-C`{o)6&w( zPw)`3^$!R^brAHUdUyIxk`W0w)azb3AE zZd$epw=~77aLC(u=U^|puRpvZRyxb`Y%imz$n5I@G5gokqNGAtv)Y3#pGgewfakz6 zcQ@9@zIB6NMj%kE1VK@1pEtz3ad1&kDFjAJsJVQ{{L3m~LyBdtZTf*Xq*(XE>U_XT zh=MC0VLOdy2wyFz6e?Ci{?Cxc{L7VvBCoj0k$tmx!Mmg763$yO10m|o{a&%XyxcN8 zUsgiJO4!SNXXdf0P~^ZeN5~n8%?3X}09*_4I16ssYI(nMdWAl#9UZ22upvx@FKsIg)*01<)ZNJc8Qpm)dInd z5PLn!7trv;2O%(0!X6F0geVPL%xMk9midO0#E2+;}W9MwXEe8c#P zpitzTJ(crA<}515b)V$CB}Dw4P>M=*BrfEP+d`UU>$)%+>6}BA^IS9|>VU>jK1|05I>G{cNDF6Tfm|+7W00009 za7bBm000XU000XU0RWnu7ytkQ=}AOER7i>KmAz}*Kp2M)V|r*jP-ARDsRJd8HyILd zadV(5lu`=q&@N4fmO=-KD3xQhr4VPci9o&J#U{bz$m+c=h2Ww!-3ukq|Duvkx;wdc z3M!e}cd?$c?)T{4(+2?m>)$A7#y`%D30eoSreo$5Lg#u0ALHm&r<)27qa(tFe<~ZB z*K)C;eIUf!Z`8T49`ZUDvb8`lE6WgP17{f&HK*|d|6JQi1jV{zgsj_jKEni$fvto2 z47bicWdspJ*`Z_W&Ld>&8;M{oVIdga8?T&5f(-A{QKsoJw+=IF8dcG%2+$Kwgh1J% z!xc&mFrQyMA7NAB{bc+gBWTj$6FSfrG1#t9O3};t44+bJ>mrb`CWK*GmD4dr=0b*6 z5KN>t+(IEQrGIWy+Li?|<4o5eIvo#6i@9~6;*xaNLRZDhX#)IS!N!@!0~za`%o28& zp52zVokYCH&*-)~9u6NCKF~V!Fn>(o7-7960vYdQ1Z4Ny)g=#92xCGLF2ntXp&ck? zA#51ysjzUVV!bQ^8EXv@9|rc8t`JEBdj^QOt2Egh<;#($ZPt&xsSs+LLim2| z@nAwp^KKr7#I@+a;Cl>-UT#Yql{Gy+4=96t^$TNgr^l*^ba?;(002ov JPDHLkV1oB2k+uK; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/weavile.png b/graphics/object_events/pics/pokemon/followers/weavile.png new file mode 100644 index 0000000000000000000000000000000000000000..faff523c7a8a55efaae7ae93474a885849c45d02 GIT binary patch literal 663 zcmV;I0%-k-P)G=Tx0Xa!=$uUWp2?GEC00000Y9bh800009 za7bBm000ie000ie0hKEb8vpK)3J)%Fc=4LVKN!~0KLiBK78aZOH|Gs z&DADQd`qyFlA8*B0EH{9!vUQ}lwXNhh#lV^+j3swk^E@;Y z5>;=R9H<&3tO;bH))hi1)!Jcf{n+a<7$8>h&nnV6Mls@Fjg9PTy%hpg0}#ik`d+P2 z9QKULx|fB`%YwO(L?$=7}xukkp29A@9`8s>R0)0;pD1C8BR@M(;? zK-IjW$pw6ipZQU!apdwq==J*x#12ZkBT>yO`SaxGHT-?HyIXs%C(XpS{dR{R0$O%y zs(B5f#XWwvC?lG>&nNnv4ODXB340000000000L%xng00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K(@ksQKo|$`EJX0?#zXIgz3XV$-Xa-y zrFamUaYS+p2>k$JikE_v%6eKB`~=M<`%olgTtORoKHqpNstF|IAA! zQIbCDqyF1!KAw@+HJA159?!_@n#+35@^ejd$yoDncz^z;S=_Lsr@6M@pVu`@k_>5& z3^_}9Qt;^<7f&p1NGC)Zo{WzdTiD=@rG|UNM(AAXCjOxno01#;p~C@vFA~|o(z#OVy3?^$)nkd__oRA%xV6FAIN;z%a)4`d)x-&Bl@~r zE$zM$r4QCfoag#>Wp9Rg4w%#Y)75e{_wKSgiR~!d9ifSCZP)h3(op)LygJKOYr9#1 zEWb;fNU^TAX8r{v_NM$xkim^=PH#Z3(hF8rxxX#$ff?o-#O9ueO&IL==5+rPR$65X zcFL`P+5hS%uP1ky|IJy!uG&|-J+0D!t_UhDckdUSA0al8OaCx3rU1P8ha?P;k6!t9`lan&UAY lUhcZ)xWu8eT-W?h>o4GGEw!?hsp0?t002ovPDHLkV1n=SN^t-H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wormadam_sand.png b/graphics/object_events/pics/pokemon/followers/wormadam_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..5086fbb24686b4ba2a404ad65ce72b23c7905ca7 GIT binary patch literal 705 zcmV;y0zUnTP)Dh^ykzq+mNdN!Kkw0tOKpcie78y*31WYul#ibeAFHw%v z#A=6tspim0B%lGnn8~8;499N~ZqL2a+2EeYHK zhl0~0tQuhn5$e8WUp>oo-kBpbOAOss$f}+QyY7c}BqYyc6ONw9bP+Pu)5JzuVoZg2 zDRN_>SaV(wZrGc#&>0~#j9*cdS|O{nAHpm2Zrw_3giUqA`LVEhh296Tuu|($R-#wJ z!s7*UgGeY;T27O2!&V92Yt9xk^+=9&g#WBFroylIPTFN2|If(%Q0hu9LVPRpRVS)LnsbMie000000000000000pMTr~00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>KlTC}-Kp4jdgh0tDECh@j`o9E)@BaG6$2H1e2{yO8GvL47Yl!0$R;jlue5;^IIb9wStDe(m8Pl8uYB4g zq&vwkJ;^y&Pz5WjK|&7g^43*mv9m{nkR`ICOwUc(x4ml&pamhxVqHvAne|VcyLXpo{vj;TQUF#I|%!|&L@go-k^=AFM^-vI5R*g4rpm$obqpBU`6lx zzC()-#2L-0^hfn~0ku$IQFIuj6Yz`RXPg-rQXXMpAWr#ppBnfRQe$Hei-DYx6G{S_ z|3oPY=&PT<%~)`h8yH%ApphFG#3?tUw4OuDE}uPT-+q$50rO-~(+XR~+t&pb2F5Ga zWNZopy5J0&G&J4vnR9Mc1(>R_S~a6OW|j@Z$P8zB&Lx=hsoZRsb}1-S}5C0ZCzT>FN0)F&R;*F}b<9F<~L05efN8F#rGn;KmQRb@Mi|BiK?Q>BL5Daf^@93lGg-G~ z4}p9Eqa~EmKyujIf~v*}3-Kj~Si#UkFBX_CS|1i>S3USrs7Wt-h_@&$acE7I$Onh) zLJsT05@;^fXXuRnOI8Few5QI&)=$sO^UP>8GeYS9^52vd`CkrLoUcH2pru-sj8s&` z3xDHn*0UIh&=fzbWFDg`rUAa3=UgBXYFMh`e-MykB#0kLmAsEh6&t(x9vie2GXWcN3n<&dpSIGr%wl|2cK~5N=N_Xedj`&(l^q3=^$A)e^Q4t^2;Bi;) zrp#&yvokmLR+@6epfqE{8jcN_9&xB6UBeHtp;1FDSTT1K4h_XGrO1#|=x@NmRiL-M z8m`aOL=RaDbo9X%H1x(JpoVbYT4vTj-kaiy1)(AR3wcdxLa1N$rr7%})k6+-vT4TyaT4Qq*M zgC_LJKqH6Wz%ANf?UvsOx%ahCUxf|-k51pFJwEJp{8$e;(1p=xD7r5mH|FytY74y?BD(#54WuMG1hEC?13(qa_i*m^lkB1jGp`3Xc+4PZED0b9B<`N57H;r*-1BdmV znPKk6>&fMj`0L5_a^?ZqtL?hQB>{54kdBB3^sXm)JRJ9qdujfa*4@uUQBqo8$)(Ij zKo?eS1dJ1hAmC;$fCi=kxOKYilG)ZtG;2ksh8O6!%<2T>D-4#m00000NkvXX Hu0mjfSYiHG literal 0 HcmV?d00001 diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 83b157ba7..7fa8ed769 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -656,8 +656,115 @@ #define OBJ_EVENT_GFX_JIRACHI 647 #define OBJ_EVENT_GFX_DEOXYS_NORMAL 648 #define OBJ_EVENT_GFX_CHIMECHO 649 +#define OBJ_EVENT_GFX_TURTWIG 650 +#define OBJ_EVENT_GFX_GROTLE 651 +#define OBJ_EVENT_GFX_TORTERRA 652 +#define OBJ_EVENT_GFX_CHIMCHAR 653 +#define OBJ_EVENT_GFX_MONFERNO 654 +#define OBJ_EVENT_GFX_INFERNAPE 655 +#define OBJ_EVENT_GFX_PIPLUP 656 +#define OBJ_EVENT_GFX_PRINPLUP 657 +#define OBJ_EVENT_GFX_EMPOLEON 658 +#define OBJ_EVENT_GFX_STARLY 659 +#define OBJ_EVENT_GFX_STARAVIA 660 +#define OBJ_EVENT_GFX_STARAPTOR 661 +#define OBJ_EVENT_GFX_BIDOOF 662 +#define OBJ_EVENT_GFX_BIBAREL 663 +#define OBJ_EVENT_GFX_KRICKETOT 664 +#define OBJ_EVENT_GFX_KRICKETUNE 665 +#define OBJ_EVENT_GFX_SHINX 666 +#define OBJ_EVENT_GFX_LUXIO 667 +#define OBJ_EVENT_GFX_LUXRAY 668 +#define OBJ_EVENT_GFX_BUDEW 669 +#define OBJ_EVENT_GFX_ROSERADE 670 +#define OBJ_EVENT_GFX_CRANIDOS 671 +#define OBJ_EVENT_GFX_RAMPARDOS 672 +#define OBJ_EVENT_GFX_SHIELDON 673 +#define OBJ_EVENT_GFX_BASTIODON 674 +#define OBJ_EVENT_GFX_BURMY 675 +#define OBJ_EVENT_GFX_WORMADAM 676 +#define OBJ_EVENT_GFX_MOTHIM 677 +#define OBJ_EVENT_GFX_COMBEE 678 +#define OBJ_EVENT_GFX_VESPIQUEN 679 +#define OBJ_EVENT_GFX_PACHIRISU 680 +#define OBJ_EVENT_GFX_BUIZEL 681 +#define OBJ_EVENT_GFX_FLOATZEL 682 +#define OBJ_EVENT_GFX_CHERUBI 683 +#define OBJ_EVENT_GFX_CHERRIM 684 +#define OBJ_EVENT_GFX_SHELLOS_WEST 685 +#define OBJ_EVENT_GFX_GASTRODON_WEST 686 +#define OBJ_EVENT_GFX_AMBIPOM 687 +#define OBJ_EVENT_GFX_DRIFLOON 688 +#define OBJ_EVENT_GFX_DRIFBLIM 689 +#define OBJ_EVENT_GFX_BUNEARY 690 +#define OBJ_EVENT_GFX_LOPUNNY 691 +#define OBJ_EVENT_GFX_MISMAGIUS 692 +#define OBJ_EVENT_GFX_HONCHKROW 693 +#define OBJ_EVENT_GFX_GLAMEOW 694 +#define OBJ_EVENT_GFX_PURUGLY 695 +#define OBJ_EVENT_GFX_CHINGLING 696 +#define OBJ_EVENT_GFX_STUNKY 697 +#define OBJ_EVENT_GFX_SKUNTANK 698 +#define OBJ_EVENT_GFX_BRONZOR 699 +#define OBJ_EVENT_GFX_BRONZONG 700 +#define OBJ_EVENT_GFX_BONSLY 701 +#define OBJ_EVENT_GFX_MIME_JR 702 +#define OBJ_EVENT_GFX_HAPPINY 703 +#define OBJ_EVENT_GFX_CHATOT 704 +#define OBJ_EVENT_GFX_SPIRITOMB 705 +#define OBJ_EVENT_GFX_GIBLE 706 +#define OBJ_EVENT_GFX_GABITE 707 +#define OBJ_EVENT_GFX_GARCHOMP 708 +#define OBJ_EVENT_GFX_MUNCHLAX 709 +#define OBJ_EVENT_GFX_RIOLU 710 +#define OBJ_EVENT_GFX_LUCARIO 711 +#define OBJ_EVENT_GFX_HIPPOPOTAS 712 +#define OBJ_EVENT_GFX_HIPPOWDON 713 +#define OBJ_EVENT_GFX_SKORUPI 714 +#define OBJ_EVENT_GFX_DRAPION 715 +#define OBJ_EVENT_GFX_CROAGUNK 716 +#define OBJ_EVENT_GFX_TOXICROAK 717 +#define OBJ_EVENT_GFX_CARNIVINE 718 +#define OBJ_EVENT_GFX_FINNEON 719 +#define OBJ_EVENT_GFX_LUMINEON 720 +#define OBJ_EVENT_GFX_MANTYKE 721 +#define OBJ_EVENT_GFX_SNOVER 722 +#define OBJ_EVENT_GFX_ABOMASNOW 723 +#define OBJ_EVENT_GFX_WEAVILE 724 +#define OBJ_EVENT_GFX_MAGNEZONE 725 +#define OBJ_EVENT_GFX_LICKILICKY 726 +#define OBJ_EVENT_GFX_RHYPERIOR 727 +#define OBJ_EVENT_GFX_TANGROWTH 728 +#define OBJ_EVENT_GFX_ELECTIVIRE 729 +#define OBJ_EVENT_GFX_MAGMORTAR 730 +#define OBJ_EVENT_GFX_TOGEKISS 731 +#define OBJ_EVENT_GFX_YANMEGA 732 +#define OBJ_EVENT_GFX_LEAFEON 733 +#define OBJ_EVENT_GFX_GLACEON 734 +#define OBJ_EVENT_GFX_GLISCOR 735 +#define OBJ_EVENT_GFX_MAMOSWINE 736 +#define OBJ_EVENT_GFX_PORYGONZ 737 +#define OBJ_EVENT_GFX_GALLADE 738 +#define OBJ_EVENT_GFX_PROBOPASS 739 +#define OBJ_EVENT_GFX_DUSKNOIR 740 +#define OBJ_EVENT_GFX_FROSLASS 741 +#define OBJ_EVENT_GFX_ROTOM_BASE 742 +#define OBJ_EVENT_GFX_UXIE 743 +#define OBJ_EVENT_GFX_MESPRIT 744 +#define OBJ_EVENT_GFX_AZELF 745 +#define OBJ_EVENT_GFX_DIALGA 746 +#define OBJ_EVENT_GFX_PALKIA 747 +#define OBJ_EVENT_GFX_HEATRAN 748 +#define OBJ_EVENT_GFX_REGIGIGAS 749 +#define OBJ_EVENT_GFX_GIRATINA_NORMAL 750 +#define OBJ_EVENT_GFX_CRESSELIA 751 +#define OBJ_EVENT_GFX_PHIONE 752 +#define OBJ_EVENT_GFX_MANAPHY 753 +#define OBJ_EVENT_GFX_DARKRAI 754 +#define OBJ_EVENT_GFX_SHAYMIN_LAND 755 +#define OBJ_EVENT_GFX_ARCEUS_NORMAL 756 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 650 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 757 #else // There are no OLD_UNOWN constants in the pokemon_expansion, and the species constants are ordered differently @@ -797,37 +904,143 @@ #define OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER 622 #define OBJ_EVENT_GFX_JIRACHI 623 #define OBJ_EVENT_GFX_DEOXYS_NORMAL 624 +#define OBJ_EVENT_GFX_TURTWIG 625 +#define OBJ_EVENT_GFX_GROTLE 626 +#define OBJ_EVENT_GFX_TORTERRA 627 +#define OBJ_EVENT_GFX_CHIMCHAR 628 +#define OBJ_EVENT_GFX_MONFERNO 629 +#define OBJ_EVENT_GFX_INFERNAPE 630 +#define OBJ_EVENT_GFX_PIPLUP 631 +#define OBJ_EVENT_GFX_PRINPLUP 632 +#define OBJ_EVENT_GFX_EMPOLEON 633 +#define OBJ_EVENT_GFX_STARLY 634 +#define OBJ_EVENT_GFX_STARAVIA 635 +#define OBJ_EVENT_GFX_STARAPTOR 636 +#define OBJ_EVENT_GFX_BIDOOF 637 +#define OBJ_EVENT_GFX_BIBAREL 638 +#define OBJ_EVENT_GFX_KRICKETOT 639 +#define OBJ_EVENT_GFX_KRICKETUNE 640 +#define OBJ_EVENT_GFX_SHINX 641 +#define OBJ_EVENT_GFX_LUXIO 642 +#define OBJ_EVENT_GFX_LUXRAY 643 +#define OBJ_EVENT_GFX_BUDEW 644 +#define OBJ_EVENT_GFX_ROSERADE 645 +#define OBJ_EVENT_GFX_CRANIDOS 646 +#define OBJ_EVENT_GFX_RAMPARDOS 647 +#define OBJ_EVENT_GFX_SHIELDON 648 +#define OBJ_EVENT_GFX_BASTIODON 649 +#define OBJ_EVENT_GFX_BURMY 650 +#define OBJ_EVENT_GFX_WORMADAM 651 +#define OBJ_EVENT_GFX_MOTHIM 652 +#define OBJ_EVENT_GFX_COMBEE 653 +#define OBJ_EVENT_GFX_VESPIQUEN 654 +#define OBJ_EVENT_GFX_PACHIRISU 655 +#define OBJ_EVENT_GFX_BUIZEL 656 +#define OBJ_EVENT_GFX_FLOATZEL 657 +#define OBJ_EVENT_GFX_CHERUBI 658 +#define OBJ_EVENT_GFX_CHERRIM 659 +#define OBJ_EVENT_GFX_SHELLOS 660 +#define OBJ_EVENT_GFX_GASTRODON 661 +#define OBJ_EVENT_GFX_AMBIPOM 662 +#define OBJ_EVENT_GFX_DRIFLOON 663 +#define OBJ_EVENT_GFX_DRIFBLIM 664 +#define OBJ_EVENT_GFX_BUNEARY 665 +#define OBJ_EVENT_GFX_LOPUNNY 666 +#define OBJ_EVENT_GFX_MISMAGIUS 667 +#define OBJ_EVENT_GFX_HONCHKROW 668 +#define OBJ_EVENT_GFX_GLAMEOW 669 +#define OBJ_EVENT_GFX_PURUGLY 670 +#define OBJ_EVENT_GFX_CHINGLING 671 +#define OBJ_EVENT_GFX_STUNKY 672 +#define OBJ_EVENT_GFX_SKUNTANK 673 +#define OBJ_EVENT_GFX_BRONZOR 674 +#define OBJ_EVENT_GFX_BRONZONG 675 +#define OBJ_EVENT_GFX_BONSLY 676 +#define OBJ_EVENT_GFX_MIME_JR 677 +#define OBJ_EVENT_GFX_HAPPINY 678 +#define OBJ_EVENT_GFX_CHATOT 679 +#define OBJ_EVENT_GFX_SPIRITOMB 680 +#define OBJ_EVENT_GFX_GIBLE 681 +#define OBJ_EVENT_GFX_GABITE 682 +#define OBJ_EVENT_GFX_GARCHOMP 683 +#define OBJ_EVENT_GFX_MUNCHLAX 684 +#define OBJ_EVENT_GFX_RIOLU 685 +#define OBJ_EVENT_GFX_LUCARIO 686 +#define OBJ_EVENT_GFX_HIPPOPOTAS 687 +#define OBJ_EVENT_GFX_HIPPOWDON 688 +#define OBJ_EVENT_GFX_SKORUPI 689 +#define OBJ_EVENT_GFX_DRAPION 690 +#define OBJ_EVENT_GFX_CROAGUNK 691 +#define OBJ_EVENT_GFX_TOXICROAK 692 +#define OBJ_EVENT_GFX_CARNIVINE 693 +#define OBJ_EVENT_GFX_FINNEON 694 +#define OBJ_EVENT_GFX_LUMINEON 695 +#define OBJ_EVENT_GFX_MANTYKE 696 +#define OBJ_EVENT_GFX_SNOVER 697 +#define OBJ_EVENT_GFX_ABOMASNOW 698 +#define OBJ_EVENT_GFX_WEAVILE 699 +#define OBJ_EVENT_GFX_MAGNEZONE 700 +#define OBJ_EVENT_GFX_LICKILICKY 701 +#define OBJ_EVENT_GFX_RHYPERIOR 702 +#define OBJ_EVENT_GFX_TANGROWTH 703 +#define OBJ_EVENT_GFX_ELECTIVIRE 704 +#define OBJ_EVENT_GFX_MAGMORTAR 705 +#define OBJ_EVENT_GFX_TOGEKISS 706 +#define OBJ_EVENT_GFX_YANMEGA 707 +#define OBJ_EVENT_GFX_LEAFEON 708 +#define OBJ_EVENT_GFX_GLACEON 709 +#define OBJ_EVENT_GFX_GLISCOR 710 +#define OBJ_EVENT_GFX_MAMOSWINE 711 +#define OBJ_EVENT_GFX_PORYGON-Z 712 +#define OBJ_EVENT_GFX_GALLADE 713 +#define OBJ_EVENT_GFX_PROBOPASS 714 +#define OBJ_EVENT_GFX_DUSKNOIR 715 +#define OBJ_EVENT_GFX_FROSLASS 716 +#define OBJ_EVENT_GFX_ROTOM_BASE 717 +#define OBJ_EVENT_GFX_UXIE 718 +#define OBJ_EVENT_GFX_MESPRIT 719 +#define OBJ_EVENT_GFX_AZELF 720 +#define OBJ_EVENT_GFX_DIALGA 721 +#define OBJ_EVENT_GFX_PALKIA 722 +#define OBJ_EVENT_GFX_HEATRAN 723 +#define OBJ_EVENT_GFX_REGIGIGAS 724 +#define OBJ_EVENT_GFX_GIRATINA_NORMAL 725 +#define OBJ_EVENT_GFX_CRESSELIA 726 +#define OBJ_EVENT_GFX_PHIONE 727 +#define OBJ_EVENT_GFX_MANAPHY 728 +#define OBJ_EVENT_GFX_DARKRAI 729 +#define OBJ_EVENT_GFX_SHAYMIN_LAND 730 +#define OBJ_EVENT_GFX_ARCEUS_NORMAL 731 -#define OBJ_EVENT_GFX_GREAT_BALL 625 -#define OBJ_EVENT_GFX_ULTRA_BALL 626 -#define OBJ_EVENT_GFX_MASTER_BALL 627 -#define OBJ_EVENT_GFX_SAFARI_BALL 628 -#define OBJ_EVENT_GFX_NET_BALL 629 -#define OBJ_EVENT_GFX_DIVE_BALL 630 -#define OBJ_EVENT_GFX_NEST_BALL 631 -#define OBJ_EVENT_GFX_REPEAT_BALL 632 -#define OBJ_EVENT_GFX_TIMER_BALL 633 -#define OBJ_EVENT_GFX_LUXURY_BALL 634 -#define OBJ_EVENT_GFX_PREMIER_BALL 635 -#define OBJ_EVENT_GFX_HEAL_BALL 636 -#define OBJ_EVENT_GFX_DUSK_BALL 637 -#define OBJ_EVENT_GFX_QUICK_BALL 638 -#define OBJ_EVENT_GFX_LEVEL_BALL 639 -#define OBJ_EVENT_GFX_LURE_BALL 640 -#define OBJ_EVENT_GFX_MOON_BALL 641 -#define OBJ_EVENT_GFX_FRIEND_BALL 642 -#define OBJ_EVENT_GFX_LOVE_BALL 643 -#define OBJ_EVENT_GFX_FAST_BALL 644 -#define OBJ_EVENT_GFX_HEAVY_BALL 645 -#define OBJ_EVENT_GFX_DREAM_BALL 646 -#define OBJ_EVENT_GFX_SPORT_BALL 647 -#define OBJ_EVENT_GFX_PARK_BALL 648 -#define OBJ_EVENT_GFX_CHERISH_BALL 649 -#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 650 - +#define OBJ_EVENT_GFX_GREAT_BALL 732 +#define OBJ_EVENT_GFX_ULTRA_BALL 733 +#define OBJ_EVENT_GFX_MASTER_BALL 734 +#define OBJ_EVENT_GFX_SAFARI_BALL 735 +#define OBJ_EVENT_GFX_NET_BALL 736 +#define OBJ_EVENT_GFX_DIVE_BALL 737 +#define OBJ_EVENT_GFX_NEST_BALL 738 +#define OBJ_EVENT_GFX_REPEAT_BALL 739 +#define OBJ_EVENT_GFX_TIMER_BALL 740 +#define OBJ_EVENT_GFX_LUXURY_BALL 741 +#define OBJ_EVENT_GFX_PREMIER_BALL 742 +#define OBJ_EVENT_GFX_HEAL_BALL 743 +#define OBJ_EVENT_GFX_DUSK_BALL 744 +#define OBJ_EVENT_GFX_QUICK_BALL 745 +#define OBJ_EVENT_GFX_LEVEL_BALL 746 +#define OBJ_EVENT_GFX_LURE_BALL 747 +#define OBJ_EVENT_GFX_MOON_BALL 748 +#define OBJ_EVENT_GFX_FRIEND_BALL 749 +#define OBJ_EVENT_GFX_LOVE_BALL 750 +#define OBJ_EVENT_GFX_FAST_BALL 751 +#define OBJ_EVENT_GFX_HEAVY_BALL 752 +#define OBJ_EVENT_GFX_DREAM_BALL 753 +#define OBJ_EVENT_GFX_SPORT_BALL 754 +#define OBJ_EVENT_GFX_PARK_BALL 755 +#define OBJ_EVENT_GFX_CHERISH_BALL 756 +#define OBJ_EVENT_GFX_EXPANDING_SPARKLE 757 #endif -#define NUM_OBJ_EVENT_GFX 651 +#define NUM_OBJ_EVENT_GFX 758 // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 18ef68000..9eaa6aeb4 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1716,6 +1716,366 @@ $(OBJEVENTGFXDIR)/pokemon/followers/deoxys_defense.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/followers/deoxys_speed.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 +$(OBJEVENTGFXDIR)/pokemon/followers/turtwig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/grotle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/torterra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chimchar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/monferno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/infernape.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/piplup.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/prinplup.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/empoleon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/starly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/staravia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/staraptor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bidoof.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bibarel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kricketot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/kricketune.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shinx.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/luxio.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/luxray.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/budew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/roserade.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cranidos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rampardos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shieldon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bastiodon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/burmy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/burmy_sand.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/burmy_trash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wormadam.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wormadam_sand.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/wormadam_trash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mothim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/combee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/vespiquen.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/pachirisu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/buizel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/floatzel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cherubi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/cherrim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shellos_west.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shellos_east.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gastrodon_west.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gastrodon_east.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ambipom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/drifloon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/drifblim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/buneary.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lopunny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mismagius.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/honchkrow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/glameow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/purugly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chingling.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/stunky.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skuntank.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bronzor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bronzong.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bonsly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mime_jr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/happiny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chatot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/spiritomb.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gible.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gabite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/garchomp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/munchlax.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/riolu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lucario.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hippopotas.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/hippowdon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/skorupi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/drapion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/croagunk.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/toxicroak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/carnivine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/finneon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lumineon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mantyke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/snover.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/abomasnow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/weavile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magnezone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lickilicky.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rhyperior.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tangrowth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/electivire.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magmortar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togekiss.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/yanmega.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/leafeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/glaceon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gliscor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mamoswine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/porygonz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gallade.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/probopass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dusknoir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/froslass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_base.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_heat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_wash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_frost.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_fan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rotom_mow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/uxie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mesprit.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/azelf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dialga.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/palkia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/heatran.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/regigigas.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/giratina_normal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/giratina_origin.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/cresselia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/phione.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/manaphy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/darkrai.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shaymin_land.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/shaymin_sky.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/arceus.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 58e2fd011..d6f3f0c4a 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -1217,3 +1217,259 @@ const u16 gObjectEventPal_Deoxys_Follower[] = INCBIN_U16("graphics/object_events const u32 gObjectEventPic_Deoxys_Attack[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_attack.4bpp"); const u32 gObjectEventPic_Deoxys_Defense[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_defense.4bpp"); const u32 gObjectEventPic_Deoxys_Speed[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_speed.4bpp"); +const u32 gObjectEventPic_Turtwig[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/turtwig.4bpp"); +const u16 gObjectEventPal_Turtwig[] = INCBIN_U16("graphics/object_events/palettes/followers/turtwig.gbapal"); +const u32 gObjectEventPic_Grotle[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/grotle.4bpp"); +const u16 gObjectEventPal_Grotle[] = INCBIN_U16("graphics/object_events/palettes/followers/grotle.gbapal"); +const u32 gObjectEventPic_Torterra[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/torterra.4bpp"); +const u16 gObjectEventPal_Torterra[] = INCBIN_U16("graphics/object_events/palettes/followers/torterra.gbapal"); +const u32 gObjectEventPic_Chimchar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chimchar.4bpp"); +const u16 gObjectEventPal_Chimchar[] = INCBIN_U16("graphics/object_events/palettes/followers/chimchar.gbapal"); +const u32 gObjectEventPic_Monferno[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/monferno.4bpp"); +const u16 gObjectEventPal_Monferno[] = INCBIN_U16("graphics/object_events/palettes/followers/monferno.gbapal"); +const u32 gObjectEventPic_Infernape[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/infernape.4bpp"); +const u16 gObjectEventPal_Infernape[] = INCBIN_U16("graphics/object_events/palettes/followers/infernape.gbapal"); +const u32 gObjectEventPic_Piplup[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/piplup.4bpp"); +const u16 gObjectEventPal_Piplup[] = INCBIN_U16("graphics/object_events/palettes/followers/piplup.gbapal"); +const u32 gObjectEventPic_Prinplup[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/prinplup.4bpp"); +const u16 gObjectEventPal_Prinplup[] = INCBIN_U16("graphics/object_events/palettes/followers/prinplup.gbapal"); +const u32 gObjectEventPic_Empoleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/empoleon.4bpp"); +const u16 gObjectEventPal_Empoleon[] = INCBIN_U16("graphics/object_events/palettes/followers/empoleon.gbapal"); +const u32 gObjectEventPic_Starly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/starly.4bpp"); +const u16 gObjectEventPal_Starly[] = INCBIN_U16("graphics/object_events/palettes/followers/starly.gbapal"); +const u32 gObjectEventPic_Staravia[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/staravia.4bpp"); +const u16 gObjectEventPal_Staravia[] = INCBIN_U16("graphics/object_events/palettes/followers/staravia.gbapal"); +const u32 gObjectEventPic_Staraptor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/staraptor.4bpp"); +const u16 gObjectEventPal_Staraptor[] = INCBIN_U16("graphics/object_events/palettes/followers/staraptor.gbapal"); +const u32 gObjectEventPic_Bidoof[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bidoof.4bpp"); +const u16 gObjectEventPal_Bidoof[] = INCBIN_U16("graphics/object_events/palettes/followers/bidoof.gbapal"); +const u32 gObjectEventPic_Bibarel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bibarel.4bpp"); +const u16 gObjectEventPal_Bibarel[] = INCBIN_U16("graphics/object_events/palettes/followers/bibarel.gbapal"); +const u32 gObjectEventPic_Kricketot[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kricketot.4bpp"); +const u16 gObjectEventPal_Kricketot[] = INCBIN_U16("graphics/object_events/palettes/followers/kricketot.gbapal"); +const u32 gObjectEventPic_Kricketune[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/kricketune.4bpp"); +const u16 gObjectEventPal_Kricketune[] = INCBIN_U16("graphics/object_events/palettes/followers/kricketune.gbapal"); +const u32 gObjectEventPic_Shinx[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shinx.4bpp"); +const u16 gObjectEventPal_Shinx[] = INCBIN_U16("graphics/object_events/palettes/followers/shinx.gbapal"); +const u32 gObjectEventPic_Luxio[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/luxio.4bpp"); +const u16 gObjectEventPal_Luxio[] = INCBIN_U16("graphics/object_events/palettes/followers/luxio.gbapal"); +const u32 gObjectEventPic_Luxray[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/luxray.4bpp"); +const u16 gObjectEventPal_Luxray[] = INCBIN_U16("graphics/object_events/palettes/followers/luxray.gbapal"); +const u32 gObjectEventPic_Budew[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/budew.4bpp"); +const u16 gObjectEventPal_Budew[] = INCBIN_U16("graphics/object_events/palettes/followers/budew.gbapal"); +const u32 gObjectEventPic_Roserade[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/roserade.4bpp"); +const u16 gObjectEventPal_Roserade[] = INCBIN_U16("graphics/object_events/palettes/followers/roserade.gbapal"); +const u32 gObjectEventPic_Cranidos[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cranidos.4bpp"); +const u16 gObjectEventPal_Cranidos[] = INCBIN_U16("graphics/object_events/palettes/followers/cranidos.gbapal"); +const u32 gObjectEventPic_Rampardos[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rampardos.4bpp"); +const u16 gObjectEventPal_Rampardos[] = INCBIN_U16("graphics/object_events/palettes/followers/rampardos.gbapal"); +const u32 gObjectEventPic_Shieldon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shieldon.4bpp"); +const u16 gObjectEventPal_Shieldon[] = INCBIN_U16("graphics/object_events/palettes/followers/shieldon.gbapal"); +const u32 gObjectEventPic_Bastiodon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bastiodon.4bpp"); +const u16 gObjectEventPal_Bastiodon[] = INCBIN_U16("graphics/object_events/palettes/followers/bastiodon.gbapal"); +const u32 gObjectEventPic_Burmy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/burmy.4bpp"); +const u16 gObjectEventPal_Burmy[] = INCBIN_U16("graphics/object_events/palettes/followers/burmy.gbapal"); +const u32 gObjectEventPic_Burmy_Sand[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/burmy_sand.4bpp"); +const u16 gObjectEventPal_Burmy_Sand[] = INCBIN_U16("graphics/object_events/palettes/followers/burmy_sand.gbapal"); +const u32 gObjectEventPic_Burmy_Trash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/burmy_trash.4bpp"); +const u16 gObjectEventPal_Burmy_Trash[] = INCBIN_U16("graphics/object_events/palettes/followers/burmy_trash.gbapal"); +const u32 gObjectEventPic_Wormadam[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wormadam.4bpp"); +const u16 gObjectEventPal_Wormadam[] = INCBIN_U16("graphics/object_events/palettes/followers/wormadam.gbapal"); +const u32 gObjectEventPic_Wormadam_Sand[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wormadam_sand.4bpp"); +const u16 gObjectEventPal_Wormadam_Sand[] = INCBIN_U16("graphics/object_events/palettes/followers/wormadam_sand.gbapal"); +const u32 gObjectEventPic_Wormadam_Trash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/wormadam_trash.4bpp"); +const u16 gObjectEventPal_Wormadam_Trash[] = INCBIN_U16("graphics/object_events/palettes/followers/wormadam_trash.gbapal"); +const u32 gObjectEventPic_Mothim[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mothim.4bpp"); +const u16 gObjectEventPal_Mothim[] = INCBIN_U16("graphics/object_events/palettes/followers/mothim.gbapal"); +const u32 gObjectEventPic_Combee[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/combee.4bpp"); +const u16 gObjectEventPal_Combee[] = INCBIN_U16("graphics/object_events/palettes/followers/combee.gbapal"); +const u32 gObjectEventPic_Vespiquen[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/vespiquen.4bpp"); +const u16 gObjectEventPal_Vespiquen[] = INCBIN_U16("graphics/object_events/palettes/followers/vespiquen.gbapal"); +const u32 gObjectEventPic_Pachirisu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/pachirisu.4bpp"); +const u16 gObjectEventPal_Pachirisu[] = INCBIN_U16("graphics/object_events/palettes/followers/pachirisu.gbapal"); +const u32 gObjectEventPic_Buizel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/buizel.4bpp"); +const u16 gObjectEventPal_Buizel[] = INCBIN_U16("graphics/object_events/palettes/followers/buizel.gbapal"); +const u32 gObjectEventPic_Floatzel[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/floatzel.4bpp"); +const u16 gObjectEventPal_Floatzel[] = INCBIN_U16("graphics/object_events/palettes/followers/floatzel.gbapal"); +const u32 gObjectEventPic_Cherubi[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cherubi.4bpp"); +const u16 gObjectEventPal_Cherubi[] = INCBIN_U16("graphics/object_events/palettes/followers/cherubi.gbapal"); +const u32 gObjectEventPic_Cherrim[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cherrim.4bpp"); +const u16 gObjectEventPal_Cherrim[] = INCBIN_U16("graphics/object_events/palettes/followers/cherrim.gbapal"); +const u32 gObjectEventPic_Shellos_West[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shellos_west.4bpp"); +const u16 gObjectEventPal_Shellos_West[] = INCBIN_U16("graphics/object_events/palettes/followers/shellos_west.gbapal"); +const u32 gObjectEventPic_Shellos_East[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shellos_east.4bpp"); +const u16 gObjectEventPal_Shellos_East[] = INCBIN_U16("graphics/object_events/palettes/followers/shellos_east.gbapal"); +const u32 gObjectEventPic_Gastrodon_West[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gastrodon_west.4bpp"); +const u16 gObjectEventPal_Gastrodon_West[] = INCBIN_U16("graphics/object_events/palettes/followers/gastrodon_west.gbapal"); +const u32 gObjectEventPic_Gastrodon_East[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gastrodon_east.4bpp"); +const u16 gObjectEventPal_Gastrodon_East[] = INCBIN_U16("graphics/object_events/palettes/followers/gastrodon_east.gbapal"); +const u32 gObjectEventPic_Ambipom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ambipom.4bpp"); +const u16 gObjectEventPal_Ambipom[] = INCBIN_U16("graphics/object_events/palettes/followers/ambipom.gbapal"); +const u32 gObjectEventPic_Drifloon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/drifloon.4bpp"); +const u16 gObjectEventPal_Drifloon[] = INCBIN_U16("graphics/object_events/palettes/followers/drifloon.gbapal"); +const u32 gObjectEventPic_Drifblim[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/drifblim.4bpp"); +const u16 gObjectEventPal_Drifblim[] = INCBIN_U16("graphics/object_events/palettes/followers/drifblim.gbapal"); +const u32 gObjectEventPic_Buneary[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/buneary.4bpp"); +const u16 gObjectEventPal_Buneary[] = INCBIN_U16("graphics/object_events/palettes/followers/buneary.gbapal"); +const u32 gObjectEventPic_Lopunny[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lopunny.4bpp"); +const u16 gObjectEventPal_Lopunny[] = INCBIN_U16("graphics/object_events/palettes/followers/lopunny.gbapal"); +const u32 gObjectEventPic_Mismagius[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mismagius.4bpp"); +const u16 gObjectEventPal_Mismagius[] = INCBIN_U16("graphics/object_events/palettes/followers/mismagius.gbapal"); +const u32 gObjectEventPic_Honchkrow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/honchkrow.4bpp"); +const u16 gObjectEventPal_Honchkrow[] = INCBIN_U16("graphics/object_events/palettes/followers/honchkrow.gbapal"); +const u32 gObjectEventPic_Glameow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/glameow.4bpp"); +const u16 gObjectEventPal_Glameow[] = INCBIN_U16("graphics/object_events/palettes/followers/glameow.gbapal"); +const u32 gObjectEventPic_Purugly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/purugly.4bpp"); +const u16 gObjectEventPal_Purugly[] = INCBIN_U16("graphics/object_events/palettes/followers/purugly.gbapal"); +const u32 gObjectEventPic_Chingling[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chingling.4bpp"); +const u16 gObjectEventPal_Chingling[] = INCBIN_U16("graphics/object_events/palettes/followers/chingling.gbapal"); +const u32 gObjectEventPic_Stunky[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/stunky.4bpp"); +const u16 gObjectEventPal_Stunky[] = INCBIN_U16("graphics/object_events/palettes/followers/stunky.gbapal"); +const u32 gObjectEventPic_Skuntank[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skuntank.4bpp"); +const u16 gObjectEventPal_Skuntank[] = INCBIN_U16("graphics/object_events/palettes/followers/skuntank.gbapal"); +const u32 gObjectEventPic_Bronzor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bronzor.4bpp"); +const u16 gObjectEventPal_Bronzor[] = INCBIN_U16("graphics/object_events/palettes/followers/bronzor.gbapal"); +const u32 gObjectEventPic_Bronzong[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bronzong.4bpp"); +const u16 gObjectEventPal_Bronzong[] = INCBIN_U16("graphics/object_events/palettes/followers/bronzong.gbapal"); +const u32 gObjectEventPic_Bonsly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bonsly.4bpp"); +const u16 gObjectEventPal_Bonsly[] = INCBIN_U16("graphics/object_events/palettes/followers/bonsly.gbapal"); +const u32 gObjectEventPic_Mime_Jr[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mime_jr.4bpp"); +const u16 gObjectEventPal_Mime_Jr[] = INCBIN_U16("graphics/object_events/palettes/followers/mime_jr.gbapal"); +const u32 gObjectEventPic_Happiny[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/happiny.4bpp"); +const u16 gObjectEventPal_Happiny[] = INCBIN_U16("graphics/object_events/palettes/followers/happiny.gbapal"); +const u32 gObjectEventPic_Chatot[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chatot.4bpp"); +const u16 gObjectEventPal_Chatot[] = INCBIN_U16("graphics/object_events/palettes/followers/chatot.gbapal"); +const u32 gObjectEventPic_Spiritomb[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/spiritomb.4bpp"); +const u16 gObjectEventPal_Spiritomb[] = INCBIN_U16("graphics/object_events/palettes/followers/spiritomb.gbapal"); +const u32 gObjectEventPic_Gible[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gible.4bpp"); +const u16 gObjectEventPal_Gible[] = INCBIN_U16("graphics/object_events/palettes/followers/gible.gbapal"); +const u32 gObjectEventPic_Gabite[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gabite.4bpp"); +const u16 gObjectEventPal_Gabite[] = INCBIN_U16("graphics/object_events/palettes/followers/gabite.gbapal"); +const u32 gObjectEventPic_Garchomp[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/garchomp.4bpp"); +const u16 gObjectEventPal_Garchomp[] = INCBIN_U16("graphics/object_events/palettes/followers/garchomp.gbapal"); +const u32 gObjectEventPic_Munchlax[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/munchlax.4bpp"); +const u16 gObjectEventPal_Munchlax[] = INCBIN_U16("graphics/object_events/palettes/followers/munchlax.gbapal"); +const u32 gObjectEventPic_Riolu[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/riolu.4bpp"); +const u16 gObjectEventPal_Riolu[] = INCBIN_U16("graphics/object_events/palettes/followers/riolu.gbapal"); +const u32 gObjectEventPic_Lucario[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lucario.4bpp"); +const u16 gObjectEventPal_Lucario[] = INCBIN_U16("graphics/object_events/palettes/followers/lucario.gbapal"); +const u32 gObjectEventPic_Hippopotas[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hippopotas.4bpp"); +const u16 gObjectEventPal_Hippopotas[] = INCBIN_U16("graphics/object_events/palettes/followers/hippopotas.gbapal"); +const u32 gObjectEventPic_Hippowdon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/hippowdon.4bpp"); +const u16 gObjectEventPal_Hippowdon[] = INCBIN_U16("graphics/object_events/palettes/followers/hippowdon.gbapal"); +const u32 gObjectEventPic_Skorupi[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/skorupi.4bpp"); +const u16 gObjectEventPal_Skorupi[] = INCBIN_U16("graphics/object_events/palettes/followers/skorupi.gbapal"); +const u32 gObjectEventPic_Drapion[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/drapion.4bpp"); +const u16 gObjectEventPal_Drapion[] = INCBIN_U16("graphics/object_events/palettes/followers/drapion.gbapal"); +const u32 gObjectEventPic_Croagunk[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/croagunk.4bpp"); +const u16 gObjectEventPal_Croagunk[] = INCBIN_U16("graphics/object_events/palettes/followers/croagunk.gbapal"); +const u32 gObjectEventPic_Toxicroak[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/toxicroak.4bpp"); +const u16 gObjectEventPal_Toxicroak[] = INCBIN_U16("graphics/object_events/palettes/followers/toxicroak.gbapal"); +const u32 gObjectEventPic_Carnivine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/carnivine.4bpp"); +const u16 gObjectEventPal_Carnivine[] = INCBIN_U16("graphics/object_events/palettes/followers/carnivine.gbapal"); +const u32 gObjectEventPic_Finneon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/finneon.4bpp"); +const u16 gObjectEventPal_Finneon[] = INCBIN_U16("graphics/object_events/palettes/followers/finneon.gbapal"); +const u32 gObjectEventPic_Lumineon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lumineon.4bpp"); +const u16 gObjectEventPal_Lumineon[] = INCBIN_U16("graphics/object_events/palettes/followers/lumineon.gbapal"); +const u32 gObjectEventPic_Mantyke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mantyke.4bpp"); +const u16 gObjectEventPal_Mantyke[] = INCBIN_U16("graphics/object_events/palettes/followers/mantyke.gbapal"); +const u32 gObjectEventPic_Snover[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/snover.4bpp"); +const u16 gObjectEventPal_Snover[] = INCBIN_U16("graphics/object_events/palettes/followers/snover.gbapal"); +const u32 gObjectEventPic_Abomasnow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/abomasnow.4bpp"); +const u16 gObjectEventPal_Abomasnow[] = INCBIN_U16("graphics/object_events/palettes/followers/abomasnow.gbapal"); +const u32 gObjectEventPic_Weavile[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weavile.4bpp"); +const u16 gObjectEventPal_Weavile[] = INCBIN_U16("graphics/object_events/palettes/followers/weavile.gbapal"); +const u32 gObjectEventPic_Magnezone[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magnezone.4bpp"); +const u16 gObjectEventPal_Magnezone[] = INCBIN_U16("graphics/object_events/palettes/followers/magnezone.gbapal"); +const u32 gObjectEventPic_Lickilicky[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lickilicky.4bpp"); +const u16 gObjectEventPal_Lickilicky[] = INCBIN_U16("graphics/object_events/palettes/followers/lickilicky.gbapal"); +const u32 gObjectEventPic_Rhyperior[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhyperior.4bpp"); +const u16 gObjectEventPal_Rhyperior[] = INCBIN_U16("graphics/object_events/palettes/followers/rhyperior.gbapal"); +const u32 gObjectEventPic_Tangrowth[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tangrowth.4bpp"); +const u16 gObjectEventPal_Tangrowth[] = INCBIN_U16("graphics/object_events/palettes/followers/tangrowth.gbapal"); +const u32 gObjectEventPic_Electivire[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electivire.4bpp"); +const u16 gObjectEventPal_Electivire[] = INCBIN_U16("graphics/object_events/palettes/followers/electivire.gbapal"); +const u32 gObjectEventPic_Magmortar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magmortar.4bpp"); +const u16 gObjectEventPal_Magmortar[] = INCBIN_U16("graphics/object_events/palettes/followers/magmortar.gbapal"); +const u32 gObjectEventPic_Togekiss[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togekiss.4bpp"); +const u16 gObjectEventPal_Togekiss[] = INCBIN_U16("graphics/object_events/palettes/followers/togekiss.gbapal"); +const u32 gObjectEventPic_Yanmega[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/yanmega.4bpp"); +const u16 gObjectEventPal_Yanmega[] = INCBIN_U16("graphics/object_events/palettes/followers/yanmega.gbapal"); +const u32 gObjectEventPic_Leafeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/leafeon.4bpp"); +const u16 gObjectEventPal_Leafeon[] = INCBIN_U16("graphics/object_events/palettes/followers/leafeon.gbapal"); +const u32 gObjectEventPic_Glaceon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/glaceon.4bpp"); +const u16 gObjectEventPal_Glaceon[] = INCBIN_U16("graphics/object_events/palettes/followers/glaceon.gbapal"); +const u32 gObjectEventPic_Gliscor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gliscor.4bpp"); +const u16 gObjectEventPal_Gliscor[] = INCBIN_U16("graphics/object_events/palettes/followers/gliscor.gbapal"); +const u32 gObjectEventPic_Mamoswine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mamoswine.4bpp"); +const u16 gObjectEventPal_Mamoswine[] = INCBIN_U16("graphics/object_events/palettes/followers/mamoswine.gbapal"); +const u32 gObjectEventPic_PorygonZ[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/porygonz.4bpp"); +const u16 gObjectEventPal_PorygonZ[] = INCBIN_U16("graphics/object_events/palettes/followers/porygonz.gbapal"); +const u32 gObjectEventPic_Gallade[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gallade.4bpp"); +const u16 gObjectEventPal_Gallade[] = INCBIN_U16("graphics/object_events/palettes/followers/gallade.gbapal"); +const u32 gObjectEventPic_Probopass[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/probopass.4bpp"); +const u16 gObjectEventPal_Probopass[] = INCBIN_U16("graphics/object_events/palettes/followers/probopass.gbapal"); +const u32 gObjectEventPic_Dusknoir[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dusknoir.4bpp"); +const u16 gObjectEventPal_Dusknoir[] = INCBIN_U16("graphics/object_events/palettes/followers/dusknoir.gbapal"); +const u32 gObjectEventPic_Froslass[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/froslass.4bpp"); +const u16 gObjectEventPal_Froslass[] = INCBIN_U16("graphics/object_events/palettes/followers/froslass.gbapal"); +const u32 gObjectEventPic_Rotom_Base[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_base.4bpp"); +const u16 gObjectEventPal_Rotom_Base[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_base.gbapal"); +const u32 gObjectEventPic_Rotom_Heat[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_heat.4bpp"); +const u16 gObjectEventPal_Rotom_Heat[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_heat.gbapal"); +const u32 gObjectEventPic_Rotom_Wash[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_wash.4bpp"); +const u16 gObjectEventPal_Rotom_Wash[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_wash.gbapal"); +const u32 gObjectEventPic_Rotom_Frost[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_frost.4bpp"); +const u16 gObjectEventPal_Rotom_Frost[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_frost.gbapal"); +const u32 gObjectEventPic_Rotom_Fan[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_fan.4bpp"); +const u16 gObjectEventPal_Rotom_Fan[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_fan.gbapal"); +const u32 gObjectEventPic_Rotom_Mow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rotom_mow.4bpp"); +const u16 gObjectEventPal_Rotom_Mow[] = INCBIN_U16("graphics/object_events/palettes/followers/rotom_mow.gbapal"); +const u32 gObjectEventPic_Uxie[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/uxie.4bpp"); +const u16 gObjectEventPal_Uxie[] = INCBIN_U16("graphics/object_events/palettes/followers/uxie.gbapal"); +const u32 gObjectEventPic_Mesprit[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mesprit.4bpp"); +const u16 gObjectEventPal_Mesprit[] = INCBIN_U16("graphics/object_events/palettes/followers/mesprit.gbapal"); +const u32 gObjectEventPic_Azelf[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/azelf.4bpp"); +const u16 gObjectEventPal_Azelf[] = INCBIN_U16("graphics/object_events/palettes/followers/azelf.gbapal"); +const u32 gObjectEventPic_Dialga[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dialga.4bpp"); +const u16 gObjectEventPal_Dialga[] = INCBIN_U16("graphics/object_events/palettes/followers/dialga.gbapal"); +const u32 gObjectEventPic_Palkia[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/palkia.4bpp"); +const u16 gObjectEventPal_Palkia[] = INCBIN_U16("graphics/object_events/palettes/followers/palkia.gbapal"); +const u32 gObjectEventPic_Heatran[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/heatran.4bpp"); +const u16 gObjectEventPal_Heatran[] = INCBIN_U16("graphics/object_events/palettes/followers/heatran.gbapal"); +const u32 gObjectEventPic_Regigigas[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regigigas.4bpp"); +const u16 gObjectEventPal_Regigigas[] = INCBIN_U16("graphics/object_events/palettes/followers/regigigas.gbapal"); +const u32 gObjectEventPic_Giratina_Normal[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/giratina_normal.4bpp"); +const u16 gObjectEventPal_Giratina_Normal[] = INCBIN_U16("graphics/object_events/palettes/followers/giratina_normal.gbapal"); +const u32 gObjectEventPic_Giratina_Origin[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/giratina_origin.4bpp"); +const u16 gObjectEventPal_Giratina_Origin[] = INCBIN_U16("graphics/object_events/palettes/followers/giratina_origin.gbapal"); +const u32 gObjectEventPic_Cresselia[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/cresselia.4bpp"); +const u16 gObjectEventPal_Cresselia[] = INCBIN_U16("graphics/object_events/palettes/followers/cresselia.gbapal"); +const u32 gObjectEventPic_Phione[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/phione.4bpp"); +const u16 gObjectEventPal_Phione[] = INCBIN_U16("graphics/object_events/palettes/followers/phione.gbapal"); +const u32 gObjectEventPic_Manaphy[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/manaphy.4bpp"); +const u16 gObjectEventPal_Manaphy[] = INCBIN_U16("graphics/object_events/palettes/followers/manaphy.gbapal"); +const u32 gObjectEventPic_Darkrai[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/darkrai.4bpp"); +const u16 gObjectEventPal_Darkrai[] = INCBIN_U16("graphics/object_events/palettes/followers/darkrai.gbapal"); +const u32 gObjectEventPic_Shaymin_Land[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shaymin_land.4bpp"); +const u16 gObjectEventPal_Shaymin_Land[] = INCBIN_U16("graphics/object_events/palettes/followers/shaymin_land.gbapal"); +const u32 gObjectEventPic_Shaymin_Sky[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/shaymin_sky.4bpp"); +const u16 gObjectEventPal_Shaymin_Sky[] = INCBIN_U16("graphics/object_events/palettes/followers/shaymin_sky.gbapal"); +const u32 gObjectEventPic_Arceus[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/arceus.4bpp"); +const u16 gObjectEventPal_Arceus_Normal[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_normal.gbapal"); +const u16 gObjectEventPal_Arceus_Bug[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_bug.gbapal"); +const u16 gObjectEventPal_Arceus_Dark[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_dark.gbapal"); +const u16 gObjectEventPal_Arceus_Dragon[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_dragon.gbapal"); +const u16 gObjectEventPal_Arceus_Electric[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_electric.gbapal"); +const u16 gObjectEventPal_Arceus_Fighting[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_fighting.gbapal"); +const u16 gObjectEventPal_Arceus_Fire[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_fire.gbapal"); +const u16 gObjectEventPal_Arceus_Flying[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_flying.gbapal"); +const u16 gObjectEventPal_Arceus_Ghost[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_ghost.gbapal"); +const u16 gObjectEventPal_Arceus_Grass[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_grass.gbapal"); +const u16 gObjectEventPal_Arceus_Ground[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_ground.gbapal"); +const u16 gObjectEventPal_Arceus_Ice[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_ice.gbapal"); +const u16 gObjectEventPal_Arceus_Poison[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_poison.gbapal"); +const u16 gObjectEventPal_Arceus_Psychic[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_psychic.gbapal"); +const u16 gObjectEventPal_Arceus_Rock[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_rock.gbapal"); +const u16 gObjectEventPal_Arceus_Steel[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_steel.gbapal"); +const u16 gObjectEventPal_Arceus_Water[] = INCBIN_U16("graphics/object_events/palettes/followers/arceus_water.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index c5c8e3f34..ef603ce72 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -688,3 +688,140 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal = {0 const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Attack, FollowerAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Defense, FollowerAffineTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS_FOLLOWER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Deoxys_Speed, FollowerAffineTable}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Turtwig = {0xFFFF, OBJ_EVENT_PAL_TAG_TURTWIG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Turtwig, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grotle = {0xFFFF, OBJ_EVENT_PAL_TAG_GROTLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Grotle, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torterra = {0xFFFF, OBJ_EVENT_PAL_TAG_TORTERRA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Torterra, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimchar = {0xFFFF, OBJ_EVENT_PAL_TAG_CHIMCHAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chimchar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Monferno = {0xFFFF, OBJ_EVENT_PAL_TAG_MONFERNO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Monferno, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Infernape = {0xFFFF, OBJ_EVENT_PAL_TAG_INFERNAPE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Infernape, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piplup = {0xFFFF, OBJ_EVENT_PAL_TAG_PIPLUP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Piplup, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Prinplup = {0xFFFF, OBJ_EVENT_PAL_TAG_PRINPLUP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Prinplup, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Empoleon = {0xFFFF, OBJ_EVENT_PAL_TAG_EMPOLEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Empoleon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starly = {0xFFFF, OBJ_EVENT_PAL_TAG_STARLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Starly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staravia = {0xFFFF, OBJ_EVENT_PAL_TAG_STARAVIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staravia, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staraptor = {0xFFFF, OBJ_EVENT_PAL_TAG_STARAPTOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Staraptor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bidoof = {0xFFFF, OBJ_EVENT_PAL_TAG_BIDOOF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bidoof, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bibarel = {0xFFFF, OBJ_EVENT_PAL_TAG_BIBAREL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bibarel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kricketot = {0xFFFF, OBJ_EVENT_PAL_TAG_KRICKETOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kricketot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kricketune = {0xFFFF, OBJ_EVENT_PAL_TAG_KRICKETUNE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Kricketune, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shinx = {0xFFFF, OBJ_EVENT_PAL_TAG_SHINX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shinx, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luxio = {0xFFFF, OBJ_EVENT_PAL_TAG_LUXIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luxio, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luxray = {0xFFFF, OBJ_EVENT_PAL_TAG_LUXRAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Luxray, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Budew = {0xFFFF, OBJ_EVENT_PAL_TAG_BUDEW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Budew, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roserade = {0xFFFF, OBJ_EVENT_PAL_TAG_ROSERADE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Roserade, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cranidos = {0xFFFF, OBJ_EVENT_PAL_TAG_CRANIDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cranidos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rampardos = {0xFFFF, OBJ_EVENT_PAL_TAG_RAMPARDOS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rampardos, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shieldon = {0xFFFF, OBJ_EVENT_PAL_TAG_SHIELDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shieldon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bastiodon = {0xFFFF, OBJ_EVENT_PAL_TAG_BASTIODON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bastiodon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy = {0xFFFF, OBJ_EVENT_PAL_TAG_BURMY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Burmy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy_Sand = {0xFFFF, OBJ_EVENT_PAL_TAG_BURMY_SAND, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Burmy_Sand, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy_Trash = {0xFFFF, OBJ_EVENT_PAL_TAG_BURMY_TRASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Burmy_Trash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam = {0xFFFF, OBJ_EVENT_PAL_TAG_WORMADAM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wormadam, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam_Sand = {0xFFFF, OBJ_EVENT_PAL_TAG_WORMADAM_SAND, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wormadam_Sand, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam_Trash = {0xFFFF, OBJ_EVENT_PAL_TAG_WORMADAM_TRASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Wormadam_Trash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mothim = {0xFFFF, OBJ_EVENT_PAL_TAG_MOTHIM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mothim, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combee = {0xFFFF, OBJ_EVENT_PAL_TAG_COMBEE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Combee, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vespiquen = {0xFFFF, OBJ_EVENT_PAL_TAG_VESPIQUEN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Vespiquen, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pachirisu = {0xFFFF, OBJ_EVENT_PAL_TAG_PACHIRISU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Pachirisu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Buizel = {0xFFFF, OBJ_EVENT_PAL_TAG_BUIZEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Buizel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Floatzel = {0xFFFF, OBJ_EVENT_PAL_TAG_FLOATZEL, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Floatzel, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cherubi = {0xFFFF, OBJ_EVENT_PAL_TAG_CHERUBI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cherubi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cherrim = {0xFFFF, OBJ_EVENT_PAL_TAG_CHERRIM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cherrim, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellos_West = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLOS_WEST, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellos_West, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellos_East = {0xFFFF, OBJ_EVENT_PAL_TAG_SHELLOS_EAST, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shellos_East, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastrodon_West = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTRODON_WEST, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastrodon_West, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastrodon_East = {0xFFFF, OBJ_EVENT_PAL_TAG_GASTRODON_EAST, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gastrodon_East, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ambipom = {0xFFFF, OBJ_EVENT_PAL_TAG_AMBIPOM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Ambipom, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drifloon = {0xFFFF, OBJ_EVENT_PAL_TAG_DRIFLOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drifloon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drifblim = {0xFFFF, OBJ_EVENT_PAL_TAG_DRIFBLIM, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drifblim, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Buneary = {0xFFFF, OBJ_EVENT_PAL_TAG_BUNEARY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Buneary, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lopunny = {0xFFFF, OBJ_EVENT_PAL_TAG_LOPUNNY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lopunny, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mismagius = {0xFFFF, OBJ_EVENT_PAL_TAG_MISMAGIUS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mismagius, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Honchkrow = {0xFFFF, OBJ_EVENT_PAL_TAG_HONCHKROW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Honchkrow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glameow = {0xFFFF, OBJ_EVENT_PAL_TAG_GLAMEOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glameow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Purugly = {0xFFFF, OBJ_EVENT_PAL_TAG_PURUGLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Purugly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chingling = {0xFFFF, OBJ_EVENT_PAL_TAG_CHINGLING, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chingling, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stunky = {0xFFFF, OBJ_EVENT_PAL_TAG_STUNKY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Stunky, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skuntank = {0xFFFF, OBJ_EVENT_PAL_TAG_SKUNTANK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skuntank, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bronzor = {0xFFFF, OBJ_EVENT_PAL_TAG_BRONZOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bronzor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bronzong = {0xFFFF, OBJ_EVENT_PAL_TAG_BRONZONG, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bronzong, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bonsly = {0xFFFF, OBJ_EVENT_PAL_TAG_BONSLY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Bonsly, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mime_Jr = {0xFFFF, OBJ_EVENT_PAL_TAG_MIME_JR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mime_Jr, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Happiny = {0xFFFF, OBJ_EVENT_PAL_TAG_HAPPINY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Happiny, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chatot = {0xFFFF, OBJ_EVENT_PAL_TAG_CHATOT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Chatot, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spiritomb = {0xFFFF, OBJ_EVENT_PAL_TAG_SPIRITOMB, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Spiritomb, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gible = {0xFFFF, OBJ_EVENT_PAL_TAG_GIBLE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gible, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gabite = {0xFFFF, OBJ_EVENT_PAL_TAG_GABITE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gabite, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Garchomp = {0xFFFF, OBJ_EVENT_PAL_TAG_GARCHOMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Garchomp, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Munchlax = {0xFFFF, OBJ_EVENT_PAL_TAG_MUNCHLAX, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Munchlax, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Riolu = {0xFFFF, OBJ_EVENT_PAL_TAG_RIOLU, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Riolu, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucario = {0xFFFF, OBJ_EVENT_PAL_TAG_LUCARIO, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lucario, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hippopotas = {0xFFFF, OBJ_EVENT_PAL_TAG_HIPPOPOTAS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hippopotas, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hippowdon = {0xFFFF, OBJ_EVENT_PAL_TAG_HIPPOWDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Hippowdon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skorupi = {0xFFFF, OBJ_EVENT_PAL_TAG_SKORUPI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Skorupi, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drapion = {0xFFFF, OBJ_EVENT_PAL_TAG_DRAPION, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Drapion, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croagunk = {0xFFFF, OBJ_EVENT_PAL_TAG_CROAGUNK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Croagunk, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Toxicroak = {0xFFFF, OBJ_EVENT_PAL_TAG_TOXICROAK, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Toxicroak, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carnivine = {0xFFFF, OBJ_EVENT_PAL_TAG_CARNIVINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Carnivine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Finneon = {0xFFFF, OBJ_EVENT_PAL_TAG_FINNEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Finneon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lumineon = {0xFFFF, OBJ_EVENT_PAL_TAG_LUMINEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lumineon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantyke = {0xFFFF, OBJ_EVENT_PAL_TAG_MANTYKE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mantyke, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snover = {0xFFFF, OBJ_EVENT_PAL_TAG_SNOVER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Snover, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abomasnow = {0xFFFF, OBJ_EVENT_PAL_TAG_ABOMASNOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Abomasnow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weavile = {0xFFFF, OBJ_EVENT_PAL_TAG_WEAVILE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Weavile, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnezone = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGNEZONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magnezone, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickilicky = {0xFFFF, OBJ_EVENT_PAL_TAG_LICKILICKY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Lickilicky, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyperior = {0xFFFF, OBJ_EVENT_PAL_TAG_RHYPERIOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rhyperior, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangrowth = {0xFFFF, OBJ_EVENT_PAL_TAG_TANGROWTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Tangrowth, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electivire = {0xFFFF, OBJ_EVENT_PAL_TAG_ELECTIVIRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Electivire, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmortar = {0xFFFF, OBJ_EVENT_PAL_TAG_MAGMORTAR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Magmortar, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togekiss = {0xFFFF, OBJ_EVENT_PAL_TAG_TOGEKISS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Togekiss, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanmega = {0xFFFF, OBJ_EVENT_PAL_TAG_YANMEGA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Yanmega, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leafeon = {0xFFFF, OBJ_EVENT_PAL_TAG_LEAFEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Leafeon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glaceon = {0xFFFF, OBJ_EVENT_PAL_TAG_GLACEON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Glaceon, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gliscor = {0xFFFF, OBJ_EVENT_PAL_TAG_GLISCOR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gliscor, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mamoswine = {0xFFFF, OBJ_EVENT_PAL_TAG_MAMOSWINE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mamoswine, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PorygonZ = {0xFFFF, OBJ_EVENT_PAL_TAG_PORYGONZ, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_PorygonZ, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gallade = {0xFFFF, OBJ_EVENT_PAL_TAG_GALLADE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Gallade, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Probopass = {0xFFFF, OBJ_EVENT_PAL_TAG_PROBOPASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Probopass, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusknoir = {0xFFFF, OBJ_EVENT_PAL_TAG_DUSKNOIR, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dusknoir, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Froslass = {0xFFFF, OBJ_EVENT_PAL_TAG_FROSLASS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Froslass, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Base = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_BASE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Base, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Heat = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_HEAT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Heat, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Wash = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_WASH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Wash, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Frost = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_FROST, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Frost, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Fan = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_FAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Fan, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Mow = {0xFFFF, OBJ_EVENT_PAL_TAG_ROTOM_MOW, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Rotom_Mow, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Uxie = {0xFFFF, OBJ_EVENT_PAL_TAG_UXIE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Uxie, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mesprit = {0xFFFF, OBJ_EVENT_PAL_TAG_MESPRIT, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Mesprit, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azelf = {0xFFFF, OBJ_EVENT_PAL_TAG_AZELF, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Azelf, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dialga = {0xFFFF, OBJ_EVENT_PAL_TAG_DIALGA, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Dialga, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Palkia = {0xFFFF, OBJ_EVENT_PAL_TAG_PALKIA, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Palkia, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heatran = {0xFFFF, OBJ_EVENT_PAL_TAG_HEATRAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Heatran, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regigigas = {0xFFFF, OBJ_EVENT_PAL_TAG_REGIGIGAS, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Regigigas, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giratina_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRATINA_NORMAL, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Giratina_Normal, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giratina_Origin = {0xFFFF, OBJ_EVENT_PAL_TAG_GIRATINA_ORIGIN, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Giratina_Origin, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cresselia = {0xFFFF, OBJ_EVENT_PAL_TAG_CRESSELIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Cresselia, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phione = {0xFFFF, OBJ_EVENT_PAL_TAG_PHIONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Phione, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manaphy = {0xFFFF, OBJ_EVENT_PAL_TAG_MANAPHY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Manaphy, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Darkrai = {0xFFFF, OBJ_EVENT_PAL_TAG_DARKRAI, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Darkrai, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shaymin_Land = {0xFFFF, OBJ_EVENT_PAL_TAG_SHAYMIN_LAND, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Shaymin_Land, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shaymin_Sky = {0xFFFF, OBJ_EVENT_PAL_TAG_SHAYMIN_SKY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, gObjectEventImageAnimTable_FollowingPokemon_UniqueEast, gObjectEventPicTable_Shaymin_Sky, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Normal = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_NORMAL, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Bug = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_BUG, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Dark = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_DARK, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Dragon = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_DRAGON, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Electric = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_ELECTRIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Fighting = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_FIGHTING, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Fire = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_FIRE, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Flying = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_FLYING, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ghost = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_GHOST, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Grass = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_GRASS, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ground = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_GROUND, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ice = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_ICE, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Poison = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_POISON, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Psychic = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_PSYCHIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Rock = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_ROCK, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Steel = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_STEEL, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Water = {0xFFFF, OBJ_EVENT_PAL_TAG_ARCEUS_WATER, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, gObjectEventImageAnimTable_FollowingPokemon, gObjectEventPicTable_Arceus, FollowerAffineTable}; 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 1f7aa0348..49dccbf58 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -686,6 +686,142 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Normal; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Attack; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Defense; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys_Speed; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Turtwig; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Grotle; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Torterra; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chimchar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Monferno; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Infernape; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Piplup; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Prinplup; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Empoleon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Starly; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staravia; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Staraptor; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bidoof; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bibarel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kricketot; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kricketune; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shinx; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luxio; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Luxray; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Budew; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roserade; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cranidos; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rampardos; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shieldon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bastiodon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy_Sand; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Burmy_Trash; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam_Sand; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wormadam_Trash; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mothim; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Combee; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Vespiquen; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pachirisu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Buizel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Floatzel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cherubi; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cherrim; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellos_West; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shellos_East; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastrodon_West; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gastrodon_East; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Ambipom; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drifloon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drifblim; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Buneary; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lopunny; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mismagius; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Honchkrow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glameow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Purugly; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chingling; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Stunky; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skuntank; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bronzor; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bronzong; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bonsly; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mime_Jr; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Happiny; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Chatot; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spiritomb; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gible; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gabite; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Garchomp; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Munchlax; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Riolu; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucario; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hippopotas; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hippowdon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skorupi; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drapion; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Croagunk; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Toxicroak; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Carnivine; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Finneon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lumineon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mantyke; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Snover; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Abomasnow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Weavile; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magnezone; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lickilicky; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rhyperior; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tangrowth; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Electivire; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Magmortar; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Togekiss; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Yanmega; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leafeon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glaceon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gliscor; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mamoswine; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PorygonZ; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gallade; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Probopass; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusknoir; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Froslass; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Base; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Heat; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Wash; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Frost; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Fan; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rotom_Mow; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Uxie; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mesprit; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azelf; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dialga; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Palkia; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Heatran; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regigigas; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giratina_Normal; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giratina_Origin; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cresselia; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phione; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Manaphy; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Darkrai; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shaymin_Land; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Shaymin_Sky; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Normal; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Bug; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Dark; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Dragon; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Electric; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Fighting; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Fire; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Flying; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ghost; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Grass; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ground; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Ice; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Poison; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Psychic; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Rock; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Steel; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Arceus_Water; const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { @@ -1340,6 +1476,113 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_RAYQUAZA_FOLLOWER] = &gObjectEventGraphicsInfo_Rayquaza_Follower, [OBJ_EVENT_GFX_JIRACHI] = &gObjectEventGraphicsInfo_Jirachi, [OBJ_EVENT_GFX_DEOXYS_NORMAL] = &gObjectEventGraphicsInfo_Deoxys_Normal, + [OBJ_EVENT_GFX_TURTWIG] = &gObjectEventGraphicsInfo_Turtwig, + [OBJ_EVENT_GFX_GROTLE] = &gObjectEventGraphicsInfo_Grotle, + [OBJ_EVENT_GFX_TORTERRA] = &gObjectEventGraphicsInfo_Torterra, + [OBJ_EVENT_GFX_CHIMCHAR] = &gObjectEventGraphicsInfo_Chimchar, + [OBJ_EVENT_GFX_MONFERNO] = &gObjectEventGraphicsInfo_Monferno, + [OBJ_EVENT_GFX_INFERNAPE] = &gObjectEventGraphicsInfo_Infernape, + [OBJ_EVENT_GFX_PIPLUP] = &gObjectEventGraphicsInfo_Piplup, + [OBJ_EVENT_GFX_PRINPLUP] = &gObjectEventGraphicsInfo_Prinplup, + [OBJ_EVENT_GFX_EMPOLEON] = &gObjectEventGraphicsInfo_Empoleon, + [OBJ_EVENT_GFX_STARLY] = &gObjectEventGraphicsInfo_Starly, + [OBJ_EVENT_GFX_STARAVIA] = &gObjectEventGraphicsInfo_Staravia, + [OBJ_EVENT_GFX_STARAPTOR] = &gObjectEventGraphicsInfo_Staraptor, + [OBJ_EVENT_GFX_BIDOOF] = &gObjectEventGraphicsInfo_Bidoof, + [OBJ_EVENT_GFX_BIBAREL] = &gObjectEventGraphicsInfo_Bibarel, + [OBJ_EVENT_GFX_KRICKETOT] = &gObjectEventGraphicsInfo_Kricketot, + [OBJ_EVENT_GFX_KRICKETUNE] = &gObjectEventGraphicsInfo_Kricketune, + [OBJ_EVENT_GFX_SHINX] = &gObjectEventGraphicsInfo_Shinx, + [OBJ_EVENT_GFX_LUXIO] = &gObjectEventGraphicsInfo_Luxio, + [OBJ_EVENT_GFX_LUXRAY] = &gObjectEventGraphicsInfo_Luxray, + [OBJ_EVENT_GFX_BUDEW] = &gObjectEventGraphicsInfo_Budew, + [OBJ_EVENT_GFX_ROSERADE] = &gObjectEventGraphicsInfo_Roserade, + [OBJ_EVENT_GFX_CRANIDOS] = &gObjectEventGraphicsInfo_Cranidos, + [OBJ_EVENT_GFX_RAMPARDOS] = &gObjectEventGraphicsInfo_Rampardos, + [OBJ_EVENT_GFX_SHIELDON] = &gObjectEventGraphicsInfo_Shieldon, + [OBJ_EVENT_GFX_BASTIODON] = &gObjectEventGraphicsInfo_Bastiodon, + [OBJ_EVENT_GFX_BURMY] = &gObjectEventGraphicsInfo_Burmy, + [OBJ_EVENT_GFX_WORMADAM] = &gObjectEventGraphicsInfo_Wormadam, + [OBJ_EVENT_GFX_MOTHIM] = &gObjectEventGraphicsInfo_Mothim, + [OBJ_EVENT_GFX_COMBEE] = &gObjectEventGraphicsInfo_Combee, + [OBJ_EVENT_GFX_VESPIQUEN] = &gObjectEventGraphicsInfo_Vespiquen, + [OBJ_EVENT_GFX_PACHIRISU] = &gObjectEventGraphicsInfo_Pachirisu, + [OBJ_EVENT_GFX_BUIZEL] = &gObjectEventGraphicsInfo_Buizel, + [OBJ_EVENT_GFX_FLOATZEL] = &gObjectEventGraphicsInfo_Floatzel, + [OBJ_EVENT_GFX_CHERUBI] = &gObjectEventGraphicsInfo_Cherubi, + [OBJ_EVENT_GFX_CHERRIM] = &gObjectEventGraphicsInfo_Cherrim, + [OBJ_EVENT_GFX_SHELLOS_WEST] = &gObjectEventGraphicsInfo_Shellos_West, + [OBJ_EVENT_GFX_GASTRODON_WEST] = &gObjectEventGraphicsInfo_Gastrodon_West, + [OBJ_EVENT_GFX_AMBIPOM] = &gObjectEventGraphicsInfo_Ambipom, + [OBJ_EVENT_GFX_DRIFLOON] = &gObjectEventGraphicsInfo_Drifloon, + [OBJ_EVENT_GFX_DRIFBLIM] = &gObjectEventGraphicsInfo_Drifblim, + [OBJ_EVENT_GFX_BUNEARY] = &gObjectEventGraphicsInfo_Buneary, + [OBJ_EVENT_GFX_LOPUNNY] = &gObjectEventGraphicsInfo_Lopunny, + [OBJ_EVENT_GFX_MISMAGIUS] = &gObjectEventGraphicsInfo_Mismagius, + [OBJ_EVENT_GFX_HONCHKROW] = &gObjectEventGraphicsInfo_Honchkrow, + [OBJ_EVENT_GFX_GLAMEOW] = &gObjectEventGraphicsInfo_Glameow, + [OBJ_EVENT_GFX_PURUGLY] = &gObjectEventGraphicsInfo_Purugly, + [OBJ_EVENT_GFX_CHINGLING] = &gObjectEventGraphicsInfo_Chingling, + [OBJ_EVENT_GFX_STUNKY] = &gObjectEventGraphicsInfo_Stunky, + [OBJ_EVENT_GFX_SKUNTANK] = &gObjectEventGraphicsInfo_Skuntank, + [OBJ_EVENT_GFX_BRONZOR] = &gObjectEventGraphicsInfo_Bronzor, + [OBJ_EVENT_GFX_BRONZONG] = &gObjectEventGraphicsInfo_Bronzong, + [OBJ_EVENT_GFX_BONSLY] = &gObjectEventGraphicsInfo_Bonsly, + [OBJ_EVENT_GFX_MIME_JR] = &gObjectEventGraphicsInfo_Mime_Jr, + [OBJ_EVENT_GFX_HAPPINY] = &gObjectEventGraphicsInfo_Happiny, + [OBJ_EVENT_GFX_CHATOT] = &gObjectEventGraphicsInfo_Chatot, + [OBJ_EVENT_GFX_SPIRITOMB] = &gObjectEventGraphicsInfo_Spiritomb, + [OBJ_EVENT_GFX_GIBLE] = &gObjectEventGraphicsInfo_Gible, + [OBJ_EVENT_GFX_GABITE] = &gObjectEventGraphicsInfo_Gabite, + [OBJ_EVENT_GFX_GARCHOMP] = &gObjectEventGraphicsInfo_Garchomp, + [OBJ_EVENT_GFX_MUNCHLAX] = &gObjectEventGraphicsInfo_Munchlax, + [OBJ_EVENT_GFX_RIOLU] = &gObjectEventGraphicsInfo_Riolu, + [OBJ_EVENT_GFX_LUCARIO] = &gObjectEventGraphicsInfo_Lucario, + [OBJ_EVENT_GFX_HIPPOPOTAS] = &gObjectEventGraphicsInfo_Hippopotas, + [OBJ_EVENT_GFX_HIPPOWDON] = &gObjectEventGraphicsInfo_Hippowdon, + [OBJ_EVENT_GFX_SKORUPI] = &gObjectEventGraphicsInfo_Skorupi, + [OBJ_EVENT_GFX_DRAPION] = &gObjectEventGraphicsInfo_Drapion, + [OBJ_EVENT_GFX_CROAGUNK] = &gObjectEventGraphicsInfo_Croagunk, + [OBJ_EVENT_GFX_TOXICROAK] = &gObjectEventGraphicsInfo_Toxicroak, + [OBJ_EVENT_GFX_CARNIVINE] = &gObjectEventGraphicsInfo_Carnivine, + [OBJ_EVENT_GFX_FINNEON] = &gObjectEventGraphicsInfo_Finneon, + [OBJ_EVENT_GFX_LUMINEON] = &gObjectEventGraphicsInfo_Lumineon, + [OBJ_EVENT_GFX_MANTYKE] = &gObjectEventGraphicsInfo_Mantyke, + [OBJ_EVENT_GFX_SNOVER] = &gObjectEventGraphicsInfo_Snover, + [OBJ_EVENT_GFX_ABOMASNOW] = &gObjectEventGraphicsInfo_Abomasnow, + [OBJ_EVENT_GFX_WEAVILE] = &gObjectEventGraphicsInfo_Weavile, + [OBJ_EVENT_GFX_MAGNEZONE] = &gObjectEventGraphicsInfo_Magnezone, + [OBJ_EVENT_GFX_LICKILICKY] = &gObjectEventGraphicsInfo_Lickilicky, + [OBJ_EVENT_GFX_RHYPERIOR] = &gObjectEventGraphicsInfo_Rhyperior, + [OBJ_EVENT_GFX_TANGROWTH] = &gObjectEventGraphicsInfo_Tangrowth, + [OBJ_EVENT_GFX_ELECTIVIRE] = &gObjectEventGraphicsInfo_Electivire, + [OBJ_EVENT_GFX_MAGMORTAR] = &gObjectEventGraphicsInfo_Magmortar, + [OBJ_EVENT_GFX_TOGEKISS] = &gObjectEventGraphicsInfo_Togekiss, + [OBJ_EVENT_GFX_YANMEGA] = &gObjectEventGraphicsInfo_Yanmega, + [OBJ_EVENT_GFX_LEAFEON] = &gObjectEventGraphicsInfo_Leafeon, + [OBJ_EVENT_GFX_GLACEON] = &gObjectEventGraphicsInfo_Glaceon, + [OBJ_EVENT_GFX_GLISCOR] = &gObjectEventGraphicsInfo_Gliscor, + [OBJ_EVENT_GFX_MAMOSWINE] = &gObjectEventGraphicsInfo_Mamoswine, + [OBJ_EVENT_GFX_PORYGONZ] = &gObjectEventGraphicsInfo_PorygonZ, + [OBJ_EVENT_GFX_GALLADE] = &gObjectEventGraphicsInfo_Gallade, + [OBJ_EVENT_GFX_PROBOPASS] = &gObjectEventGraphicsInfo_Probopass, + [OBJ_EVENT_GFX_DUSKNOIR] = &gObjectEventGraphicsInfo_Dusknoir, + [OBJ_EVENT_GFX_FROSLASS] = &gObjectEventGraphicsInfo_Froslass, + [OBJ_EVENT_GFX_ROTOM_BASE] = &gObjectEventGraphicsInfo_Rotom_Base, + [OBJ_EVENT_GFX_UXIE] = &gObjectEventGraphicsInfo_Uxie, + [OBJ_EVENT_GFX_MESPRIT] = &gObjectEventGraphicsInfo_Mesprit, + [OBJ_EVENT_GFX_AZELF] = &gObjectEventGraphicsInfo_Azelf, + [OBJ_EVENT_GFX_DIALGA] = &gObjectEventGraphicsInfo_Dialga, + [OBJ_EVENT_GFX_PALKIA] = &gObjectEventGraphicsInfo_Palkia, + [OBJ_EVENT_GFX_HEATRAN] = &gObjectEventGraphicsInfo_Heatran, + [OBJ_EVENT_GFX_REGIGIGAS] = &gObjectEventGraphicsInfo_Regigigas, + [OBJ_EVENT_GFX_GIRATINA_NORMAL] = &gObjectEventGraphicsInfo_Giratina_Normal, + [OBJ_EVENT_GFX_CRESSELIA] = &gObjectEventGraphicsInfo_Cresselia, + [OBJ_EVENT_GFX_PHIONE] = &gObjectEventGraphicsInfo_Phione, + [OBJ_EVENT_GFX_MANAPHY] = &gObjectEventGraphicsInfo_Manaphy, + [OBJ_EVENT_GFX_DARKRAI] = &gObjectEventGraphicsInfo_Darkrai, + [OBJ_EVENT_GFX_SHAYMIN_LAND] = &gObjectEventGraphicsInfo_Shaymin_Land, + [OBJ_EVENT_GFX_ARCEUS_NORMAL] = &gObjectEventGraphicsInfo_Arceus_Normal, }; 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 567639606..1ac6b2451 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -6045,3 +6045,1089 @@ const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Speed[] = { overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 4), overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 5), }; + +const struct SpriteFrameImage gObjectEventPicTable_Turtwig[] = { + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 0), + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 1), + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 2), + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 3), + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 4), + overworld_frame(gObjectEventPic_Turtwig, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Grotle[] = { + overworld_frame(gObjectEventPic_Grotle, 4, 4, 0), + overworld_frame(gObjectEventPic_Grotle, 4, 4, 1), + overworld_frame(gObjectEventPic_Grotle, 4, 4, 2), + overworld_frame(gObjectEventPic_Grotle, 4, 4, 3), + overworld_frame(gObjectEventPic_Grotle, 4, 4, 4), + overworld_frame(gObjectEventPic_Grotle, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Torterra[] = { + overworld_frame(gObjectEventPic_Torterra, 4, 4, 0), + overworld_frame(gObjectEventPic_Torterra, 4, 4, 1), + overworld_frame(gObjectEventPic_Torterra, 4, 4, 2), + overworld_frame(gObjectEventPic_Torterra, 4, 4, 3), + overworld_frame(gObjectEventPic_Torterra, 4, 4, 4), + overworld_frame(gObjectEventPic_Torterra, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chimchar[] = { + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 0), + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 1), + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 2), + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 3), + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 4), + overworld_frame(gObjectEventPic_Chimchar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Monferno[] = { + overworld_frame(gObjectEventPic_Monferno, 4, 4, 0), + overworld_frame(gObjectEventPic_Monferno, 4, 4, 1), + overworld_frame(gObjectEventPic_Monferno, 4, 4, 2), + overworld_frame(gObjectEventPic_Monferno, 4, 4, 3), + overworld_frame(gObjectEventPic_Monferno, 4, 4, 4), + overworld_frame(gObjectEventPic_Monferno, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Infernape[] = { + overworld_frame(gObjectEventPic_Infernape, 4, 4, 0), + overworld_frame(gObjectEventPic_Infernape, 4, 4, 1), + overworld_frame(gObjectEventPic_Infernape, 4, 4, 2), + overworld_frame(gObjectEventPic_Infernape, 4, 4, 3), + overworld_frame(gObjectEventPic_Infernape, 4, 4, 4), + overworld_frame(gObjectEventPic_Infernape, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Piplup[] = { + overworld_frame(gObjectEventPic_Piplup, 4, 4, 0), + overworld_frame(gObjectEventPic_Piplup, 4, 4, 1), + overworld_frame(gObjectEventPic_Piplup, 4, 4, 2), + overworld_frame(gObjectEventPic_Piplup, 4, 4, 3), + overworld_frame(gObjectEventPic_Piplup, 4, 4, 4), + overworld_frame(gObjectEventPic_Piplup, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Prinplup[] = { + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 0), + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 1), + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 2), + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 3), + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 4), + overworld_frame(gObjectEventPic_Prinplup, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Empoleon[] = { + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 0), + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 1), + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 2), + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 3), + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 4), + overworld_frame(gObjectEventPic_Empoleon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Starly[] = { + overworld_frame(gObjectEventPic_Starly, 4, 4, 0), + overworld_frame(gObjectEventPic_Starly, 4, 4, 1), + overworld_frame(gObjectEventPic_Starly, 4, 4, 2), + overworld_frame(gObjectEventPic_Starly, 4, 4, 3), + overworld_frame(gObjectEventPic_Starly, 4, 4, 4), + overworld_frame(gObjectEventPic_Starly, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Staravia[] = { + overworld_frame(gObjectEventPic_Staravia, 4, 4, 0), + overworld_frame(gObjectEventPic_Staravia, 4, 4, 1), + overworld_frame(gObjectEventPic_Staravia, 4, 4, 2), + overworld_frame(gObjectEventPic_Staravia, 4, 4, 3), + overworld_frame(gObjectEventPic_Staravia, 4, 4, 4), + overworld_frame(gObjectEventPic_Staravia, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Staraptor[] = { + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 0), + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 1), + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 2), + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 3), + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 4), + overworld_frame(gObjectEventPic_Staraptor, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bidoof[] = { + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 0), + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 1), + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 2), + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 3), + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 4), + overworld_frame(gObjectEventPic_Bidoof, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bibarel[] = { + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 0), + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 1), + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 2), + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 3), + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 4), + overworld_frame(gObjectEventPic_Bibarel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kricketot[] = { + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 0), + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 1), + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 2), + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 3), + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 4), + overworld_frame(gObjectEventPic_Kricketot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kricketune[] = { + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 0), + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 1), + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 2), + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 3), + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 4), + overworld_frame(gObjectEventPic_Kricketune, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shinx[] = { + overworld_frame(gObjectEventPic_Shinx, 4, 4, 0), + overworld_frame(gObjectEventPic_Shinx, 4, 4, 1), + overworld_frame(gObjectEventPic_Shinx, 4, 4, 2), + overworld_frame(gObjectEventPic_Shinx, 4, 4, 3), + overworld_frame(gObjectEventPic_Shinx, 4, 4, 4), + overworld_frame(gObjectEventPic_Shinx, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Luxio[] = { + overworld_frame(gObjectEventPic_Luxio, 4, 4, 0), + overworld_frame(gObjectEventPic_Luxio, 4, 4, 1), + overworld_frame(gObjectEventPic_Luxio, 4, 4, 2), + overworld_frame(gObjectEventPic_Luxio, 4, 4, 3), + overworld_frame(gObjectEventPic_Luxio, 4, 4, 4), + overworld_frame(gObjectEventPic_Luxio, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Luxray[] = { + overworld_frame(gObjectEventPic_Luxray, 4, 4, 0), + overworld_frame(gObjectEventPic_Luxray, 4, 4, 1), + overworld_frame(gObjectEventPic_Luxray, 4, 4, 2), + overworld_frame(gObjectEventPic_Luxray, 4, 4, 3), + overworld_frame(gObjectEventPic_Luxray, 4, 4, 4), + overworld_frame(gObjectEventPic_Luxray, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Budew[] = { + overworld_frame(gObjectEventPic_Budew, 4, 4, 0), + overworld_frame(gObjectEventPic_Budew, 4, 4, 1), + overworld_frame(gObjectEventPic_Budew, 4, 4, 2), + overworld_frame(gObjectEventPic_Budew, 4, 4, 3), + overworld_frame(gObjectEventPic_Budew, 4, 4, 4), + overworld_frame(gObjectEventPic_Budew, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Roserade[] = { + overworld_frame(gObjectEventPic_Roserade, 4, 4, 0), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 1), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 2), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 3), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 4), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 5), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 6), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cranidos[] = { + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 0), + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 1), + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 2), + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 3), + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 4), + overworld_frame(gObjectEventPic_Cranidos, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rampardos[] = { + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 0), + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 1), + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 2), + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 3), + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 4), + overworld_frame(gObjectEventPic_Rampardos, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shieldon[] = { + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 0), + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 1), + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 2), + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 3), + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 4), + overworld_frame(gObjectEventPic_Shieldon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bastiodon[] = { + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 0), + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 1), + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 2), + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 3), + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 4), + overworld_frame(gObjectEventPic_Bastiodon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Burmy[] = { + overworld_frame(gObjectEventPic_Burmy, 4, 4, 0), + overworld_frame(gObjectEventPic_Burmy, 4, 4, 1), + overworld_frame(gObjectEventPic_Burmy, 4, 4, 2), + overworld_frame(gObjectEventPic_Burmy, 4, 4, 3), + overworld_frame(gObjectEventPic_Burmy, 4, 4, 4), + overworld_frame(gObjectEventPic_Burmy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Burmy_Sand[] = { + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 0), + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 1), + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 2), + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 3), + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 4), + overworld_frame(gObjectEventPic_Burmy_Sand, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Burmy_Trash[] = { + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 0), + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 1), + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 2), + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 3), + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 4), + overworld_frame(gObjectEventPic_Burmy_Trash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wormadam[] = { + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 0), + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 1), + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 2), + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 3), + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 4), + overworld_frame(gObjectEventPic_Wormadam, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wormadam_Sand[] = { + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 0), + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 1), + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 2), + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 3), + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 4), + overworld_frame(gObjectEventPic_Wormadam_Sand, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Wormadam_Trash[] = { + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 0), + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 1), + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 2), + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 3), + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 4), + overworld_frame(gObjectEventPic_Wormadam_Trash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mothim[] = { + overworld_frame(gObjectEventPic_Mothim, 4, 4, 0), + overworld_frame(gObjectEventPic_Mothim, 4, 4, 1), + overworld_frame(gObjectEventPic_Mothim, 4, 4, 2), + overworld_frame(gObjectEventPic_Mothim, 4, 4, 3), + overworld_frame(gObjectEventPic_Mothim, 4, 4, 4), + overworld_frame(gObjectEventPic_Mothim, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Combee[] = { + overworld_frame(gObjectEventPic_Combee, 4, 4, 0), + overworld_frame(gObjectEventPic_Combee, 4, 4, 1), + overworld_frame(gObjectEventPic_Combee, 4, 4, 2), + overworld_frame(gObjectEventPic_Combee, 4, 4, 3), + overworld_frame(gObjectEventPic_Combee, 4, 4, 4), + overworld_frame(gObjectEventPic_Combee, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Vespiquen[] = { + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 0), + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 1), + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 2), + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 3), + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 4), + overworld_frame(gObjectEventPic_Vespiquen, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Pachirisu[] = { + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 0), + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 1), + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 2), + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 3), + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 4), + overworld_frame(gObjectEventPic_Pachirisu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Buizel[] = { + overworld_frame(gObjectEventPic_Buizel, 4, 4, 0), + overworld_frame(gObjectEventPic_Buizel, 4, 4, 1), + overworld_frame(gObjectEventPic_Buizel, 4, 4, 2), + overworld_frame(gObjectEventPic_Buizel, 4, 4, 3), + overworld_frame(gObjectEventPic_Buizel, 4, 4, 4), + overworld_frame(gObjectEventPic_Buizel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Floatzel[] = { + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 0), + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 1), + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 2), + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 3), + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 4), + overworld_frame(gObjectEventPic_Floatzel, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cherubi[] = { + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 0), + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 1), + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 2), + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 3), + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 4), + overworld_frame(gObjectEventPic_Cherubi, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cherrim[] = { + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 0), + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 1), + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 2), + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 3), + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 4), + overworld_frame(gObjectEventPic_Cherrim, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shellos_West[] = { + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 0), + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 1), + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 2), + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 3), + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 4), + overworld_frame(gObjectEventPic_Shellos_West, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shellos_East[] = { + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 0), + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 1), + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 2), + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 3), + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 4), + overworld_frame(gObjectEventPic_Shellos_East, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gastrodon_West[] = { + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 0), + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 1), + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 2), + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 3), + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 4), + overworld_frame(gObjectEventPic_Gastrodon_West, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gastrodon_East[] = { + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 0), + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 1), + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 2), + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 3), + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 4), + overworld_frame(gObjectEventPic_Gastrodon_East, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Ambipom[] = { + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 0), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 1), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 2), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 3), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 4), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Drifloon[] = { + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 0), + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 1), + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 2), + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 3), + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 4), + overworld_frame(gObjectEventPic_Drifloon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Drifblim[] = { + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 0), + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 1), + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 2), + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 3), + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 4), + overworld_frame(gObjectEventPic_Drifblim, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Buneary[] = { + overworld_frame(gObjectEventPic_Buneary, 4, 4, 0), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 1), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 2), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 3), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 4), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 5), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 6), + overworld_frame(gObjectEventPic_Buneary, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lopunny[] = { + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 0), + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 1), + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 2), + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 3), + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 4), + overworld_frame(gObjectEventPic_Lopunny, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mismagius[] = { + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 0), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 1), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 2), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 3), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 4), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Honchkrow[] = { + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 0), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 1), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 2), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 3), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 4), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Glameow[] = { + overworld_frame(gObjectEventPic_Glameow, 4, 4, 0), + overworld_frame(gObjectEventPic_Glameow, 4, 4, 1), + overworld_frame(gObjectEventPic_Glameow, 4, 4, 2), + overworld_frame(gObjectEventPic_Glameow, 4, 4, 3), + overworld_frame(gObjectEventPic_Glameow, 4, 4, 4), + overworld_frame(gObjectEventPic_Glameow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Purugly[] = { + overworld_frame(gObjectEventPic_Purugly, 4, 4, 0), + overworld_frame(gObjectEventPic_Purugly, 4, 4, 1), + overworld_frame(gObjectEventPic_Purugly, 4, 4, 2), + overworld_frame(gObjectEventPic_Purugly, 4, 4, 3), + overworld_frame(gObjectEventPic_Purugly, 4, 4, 4), + overworld_frame(gObjectEventPic_Purugly, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chingling[] = { + overworld_frame(gObjectEventPic_Chingling, 4, 4, 0), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 1), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 2), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 3), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 4), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Stunky[] = { + overworld_frame(gObjectEventPic_Stunky, 4, 4, 0), + overworld_frame(gObjectEventPic_Stunky, 4, 4, 1), + overworld_frame(gObjectEventPic_Stunky, 4, 4, 2), + overworld_frame(gObjectEventPic_Stunky, 4, 4, 3), + overworld_frame(gObjectEventPic_Stunky, 4, 4, 4), + overworld_frame(gObjectEventPic_Stunky, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Skuntank[] = { + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 0), + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 1), + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 2), + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 3), + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 4), + overworld_frame(gObjectEventPic_Skuntank, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bronzor[] = { + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 0), + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 1), + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 2), + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 3), + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 4), + overworld_frame(gObjectEventPic_Bronzor, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bronzong[] = { + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 0), + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 1), + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 2), + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 3), + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 4), + overworld_frame(gObjectEventPic_Bronzong, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Bonsly[] = { + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 0), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 1), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 2), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 3), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 4), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mime_Jr[] = { + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 0), + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 1), + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 2), + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 3), + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 4), + overworld_frame(gObjectEventPic_Mime_Jr, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Happiny[] = { + overworld_frame(gObjectEventPic_Happiny, 4, 4, 0), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 1), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 2), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 3), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 4), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Chatot[] = { + overworld_frame(gObjectEventPic_Chatot, 4, 4, 0), + overworld_frame(gObjectEventPic_Chatot, 4, 4, 1), + overworld_frame(gObjectEventPic_Chatot, 4, 4, 2), + overworld_frame(gObjectEventPic_Chatot, 4, 4, 3), + overworld_frame(gObjectEventPic_Chatot, 4, 4, 4), + overworld_frame(gObjectEventPic_Chatot, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Spiritomb[] = { + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 0), + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 1), + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 2), + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 3), + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 4), + overworld_frame(gObjectEventPic_Spiritomb, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gible[] = { + overworld_frame(gObjectEventPic_Gible, 4, 4, 0), + overworld_frame(gObjectEventPic_Gible, 4, 4, 1), + overworld_frame(gObjectEventPic_Gible, 4, 4, 2), + overworld_frame(gObjectEventPic_Gible, 4, 4, 3), + overworld_frame(gObjectEventPic_Gible, 4, 4, 4), + overworld_frame(gObjectEventPic_Gible, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gabite[] = { + overworld_frame(gObjectEventPic_Gabite, 4, 4, 0), + overworld_frame(gObjectEventPic_Gabite, 4, 4, 1), + overworld_frame(gObjectEventPic_Gabite, 4, 4, 2), + overworld_frame(gObjectEventPic_Gabite, 4, 4, 3), + overworld_frame(gObjectEventPic_Gabite, 4, 4, 4), + overworld_frame(gObjectEventPic_Gabite, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Garchomp[] = { + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 0), + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 1), + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 2), + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 3), + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 4), + overworld_frame(gObjectEventPic_Garchomp, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Munchlax[] = { + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 0), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 1), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 2), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 3), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 4), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Riolu[] = { + overworld_frame(gObjectEventPic_Riolu, 4, 4, 0), + overworld_frame(gObjectEventPic_Riolu, 4, 4, 1), + overworld_frame(gObjectEventPic_Riolu, 4, 4, 2), + overworld_frame(gObjectEventPic_Riolu, 4, 4, 3), + overworld_frame(gObjectEventPic_Riolu, 4, 4, 4), + overworld_frame(gObjectEventPic_Riolu, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lucario[] = { + overworld_frame(gObjectEventPic_Lucario, 4, 4, 0), + overworld_frame(gObjectEventPic_Lucario, 4, 4, 1), + overworld_frame(gObjectEventPic_Lucario, 4, 4, 2), + overworld_frame(gObjectEventPic_Lucario, 4, 4, 3), + overworld_frame(gObjectEventPic_Lucario, 4, 4, 4), + overworld_frame(gObjectEventPic_Lucario, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hippopotas[] = { + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 0), + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 1), + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 2), + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 3), + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 4), + overworld_frame(gObjectEventPic_Hippopotas, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Hippowdon[] = { + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 0), + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 1), + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 2), + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 3), + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 4), + overworld_frame(gObjectEventPic_Hippowdon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Skorupi[] = { + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 0), + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 1), + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 2), + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 3), + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 4), + overworld_frame(gObjectEventPic_Skorupi, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Drapion[] = { + overworld_frame(gObjectEventPic_Drapion, 4, 4, 0), + overworld_frame(gObjectEventPic_Drapion, 4, 4, 1), + overworld_frame(gObjectEventPic_Drapion, 4, 4, 2), + overworld_frame(gObjectEventPic_Drapion, 4, 4, 3), + overworld_frame(gObjectEventPic_Drapion, 4, 4, 4), + overworld_frame(gObjectEventPic_Drapion, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Croagunk[] = { + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 0), + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 1), + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 2), + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 3), + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 4), + overworld_frame(gObjectEventPic_Croagunk, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Toxicroak[] = { + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 0), + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 1), + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 2), + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 3), + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 4), + overworld_frame(gObjectEventPic_Toxicroak, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Carnivine[] = { + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 0), + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 1), + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 2), + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 3), + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 4), + overworld_frame(gObjectEventPic_Carnivine, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Finneon[] = { + overworld_frame(gObjectEventPic_Finneon, 4, 4, 0), + overworld_frame(gObjectEventPic_Finneon, 4, 4, 1), + overworld_frame(gObjectEventPic_Finneon, 4, 4, 2), + overworld_frame(gObjectEventPic_Finneon, 4, 4, 3), + overworld_frame(gObjectEventPic_Finneon, 4, 4, 4), + overworld_frame(gObjectEventPic_Finneon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lumineon[] = { + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 0), + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 1), + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 2), + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 3), + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 4), + overworld_frame(gObjectEventPic_Lumineon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mantyke[] = { + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 0), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 1), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 2), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 3), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 4), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Snover[] = { + overworld_frame(gObjectEventPic_Snover, 4, 4, 0), + overworld_frame(gObjectEventPic_Snover, 4, 4, 1), + overworld_frame(gObjectEventPic_Snover, 4, 4, 2), + overworld_frame(gObjectEventPic_Snover, 4, 4, 3), + overworld_frame(gObjectEventPic_Snover, 4, 4, 4), + overworld_frame(gObjectEventPic_Snover, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Abomasnow[] = { + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 0), + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 1), + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 2), + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 3), + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 4), + overworld_frame(gObjectEventPic_Abomasnow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Weavile[] = { + overworld_frame(gObjectEventPic_Weavile, 4, 4, 0), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 1), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 2), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 3), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 4), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magnezone[] = { + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 0), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 1), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 2), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 3), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 4), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Lickilicky[] = { + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 0), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 1), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 2), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 3), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 4), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rhyperior[] = { + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Tangrowth[] = { + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 0), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 1), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 2), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 3), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 4), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Electivire[] = { + overworld_frame(gObjectEventPic_Electivire, 4, 4, 0), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 1), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 2), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 3), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 4), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Magmortar[] = { + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 0), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 1), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 2), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 3), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 4), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Togekiss[] = { + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 0), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 1), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 2), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 3), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 4), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Yanmega[] = { + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 0), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 1), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 2), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 3), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 4), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Leafeon[] = { + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Glaceon[] = { + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 0), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 1), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 2), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 3), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 4), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gliscor[] = { + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 0), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 1), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 2), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 3), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 4), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mamoswine[] = { + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 0), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 1), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 2), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 3), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 4), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_PorygonZ[] = { + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 0), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 1), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 2), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 3), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 4), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Gallade[] = { + overworld_frame(gObjectEventPic_Gallade, 4, 4, 0), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 1), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 2), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 3), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 4), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Probopass[] = { + overworld_frame(gObjectEventPic_Probopass, 4, 4, 0), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 1), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 2), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 3), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 4), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dusknoir[] = { + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 0), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 1), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 2), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 3), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 4), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Froslass[] = { + overworld_frame(gObjectEventPic_Froslass, 4, 4, 0), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 1), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 2), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 3), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 4), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Base[] = { + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Base, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Heat[] = { + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Heat, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Wash[] = { + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Wash, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Frost[] = { + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Frost, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Fan[] = { + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Fan, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rotom_Mow[] = { + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 0), + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 1), + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 2), + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 3), + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 4), + overworld_frame(gObjectEventPic_Rotom_Mow, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Uxie[] = { + overworld_frame(gObjectEventPic_Uxie, 4, 4, 0), + overworld_frame(gObjectEventPic_Uxie, 4, 4, 1), + overworld_frame(gObjectEventPic_Uxie, 4, 4, 2), + overworld_frame(gObjectEventPic_Uxie, 4, 4, 3), + overworld_frame(gObjectEventPic_Uxie, 4, 4, 4), + overworld_frame(gObjectEventPic_Uxie, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Mesprit[] = { + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 0), + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 1), + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 2), + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 3), + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 4), + overworld_frame(gObjectEventPic_Mesprit, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Azelf[] = { + overworld_frame(gObjectEventPic_Azelf, 4, 4, 0), + overworld_frame(gObjectEventPic_Azelf, 4, 4, 1), + overworld_frame(gObjectEventPic_Azelf, 4, 4, 2), + overworld_frame(gObjectEventPic_Azelf, 4, 4, 3), + overworld_frame(gObjectEventPic_Azelf, 4, 4, 4), + overworld_frame(gObjectEventPic_Azelf, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Dialga[] = { + overworld_frame(gObjectEventPic_Dialga, 8, 8, 0), + overworld_frame(gObjectEventPic_Dialga, 8, 8, 1), + overworld_frame(gObjectEventPic_Dialga, 8, 8, 2), + overworld_frame(gObjectEventPic_Dialga, 8, 8, 3), + overworld_frame(gObjectEventPic_Dialga, 8, 8, 4), + overworld_frame(gObjectEventPic_Dialga, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Palkia[] = { + overworld_frame(gObjectEventPic_Palkia, 8, 8, 0), + overworld_frame(gObjectEventPic_Palkia, 8, 8, 1), + overworld_frame(gObjectEventPic_Palkia, 8, 8, 2), + overworld_frame(gObjectEventPic_Palkia, 8, 8, 3), + overworld_frame(gObjectEventPic_Palkia, 8, 8, 4), + overworld_frame(gObjectEventPic_Palkia, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Heatran[] = { + overworld_frame(gObjectEventPic_Heatran, 4, 4, 0), + overworld_frame(gObjectEventPic_Heatran, 4, 4, 1), + overworld_frame(gObjectEventPic_Heatran, 4, 4, 2), + overworld_frame(gObjectEventPic_Heatran, 4, 4, 3), + overworld_frame(gObjectEventPic_Heatran, 4, 4, 4), + overworld_frame(gObjectEventPic_Heatran, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Regigigas[] = { + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 0), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 1), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 2), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 3), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 4), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Giratina_Normal[] = { + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 0), + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 1), + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 2), + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 3), + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 4), + overworld_frame(gObjectEventPic_Giratina_Normal, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Giratina_Origin[] = { + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 0), + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 1), + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 2), + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 3), + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 4), + overworld_frame(gObjectEventPic_Giratina_Origin, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Cresselia[] = { + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 0), + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 1), + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 2), + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 3), + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 4), + overworld_frame(gObjectEventPic_Cresselia, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Phione[] = { + overworld_frame(gObjectEventPic_Phione, 4, 4, 0), + overworld_frame(gObjectEventPic_Phione, 4, 4, 1), + overworld_frame(gObjectEventPic_Phione, 4, 4, 2), + overworld_frame(gObjectEventPic_Phione, 4, 4, 3), + overworld_frame(gObjectEventPic_Phione, 4, 4, 4), + overworld_frame(gObjectEventPic_Phione, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Manaphy[] = { + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 0), + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 1), + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 2), + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 3), + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 4), + overworld_frame(gObjectEventPic_Manaphy, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Darkrai[] = { + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 0), + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 1), + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 2), + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 3), + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 4), + overworld_frame(gObjectEventPic_Darkrai, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shaymin_Land[] = { + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 0), + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 1), + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 2), + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 3), + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 4), + overworld_frame(gObjectEventPic_Shaymin_Land, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Shaymin_Sky[] = { + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 0), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 1), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 2), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 3), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 4), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 5), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 6), + overworld_frame(gObjectEventPic_Shaymin_Sky, 4, 4, 7), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Arceus[] = { + overworld_frame(gObjectEventPic_Arceus, 8, 8, 0), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 1), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 2), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 3), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 4), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 5), +}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 33009337a..eb7fd9f16 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -860,6 +860,143 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_SPORT_BALL 0x1042 #define OBJ_EVENT_PAL_TAG_PARK_BALL 0x1041 #define OBJ_EVENT_PAL_TAG_CHERISH_BALL 0x1040 +#define OBJ_EVENT_PAL_TAG_TURTWIG 0x103F +#define OBJ_EVENT_PAL_TAG_GROTLE 0x103E +#define OBJ_EVENT_PAL_TAG_TORTERRA 0x103D +#define OBJ_EVENT_PAL_TAG_CHIMCHAR 0x103C +#define OBJ_EVENT_PAL_TAG_MONFERNO 0x103B +#define OBJ_EVENT_PAL_TAG_INFERNAPE 0x103A +#define OBJ_EVENT_PAL_TAG_PIPLUP 0x1039 +#define OBJ_EVENT_PAL_TAG_PRINPLUP 0x1038 +#define OBJ_EVENT_PAL_TAG_EMPOLEON 0x1037 +#define OBJ_EVENT_PAL_TAG_STARLY 0x1036 +#define OBJ_EVENT_PAL_TAG_STARAVIA 0x1035 +#define OBJ_EVENT_PAL_TAG_STARAPTOR 0x1034 +#define OBJ_EVENT_PAL_TAG_BIDOOF 0x1033 +#define OBJ_EVENT_PAL_TAG_BIBAREL 0x1032 +#define OBJ_EVENT_PAL_TAG_KRICKETOT 0x1031 +#define OBJ_EVENT_PAL_TAG_KRICKETUNE 0x1030 +#define OBJ_EVENT_PAL_TAG_SHINX 0x102F +#define OBJ_EVENT_PAL_TAG_LUXIO 0x102E +#define OBJ_EVENT_PAL_TAG_LUXRAY 0x102D +#define OBJ_EVENT_PAL_TAG_BUDEW 0x102C +#define OBJ_EVENT_PAL_TAG_ROSERADE 0x102B +#define OBJ_EVENT_PAL_TAG_CRANIDOS 0x102A +#define OBJ_EVENT_PAL_TAG_RAMPARDOS 0x1029 +#define OBJ_EVENT_PAL_TAG_SHIELDON 0x1028 +#define OBJ_EVENT_PAL_TAG_BASTIODON 0x1027 +#define OBJ_EVENT_PAL_TAG_BURMY 0x1026 +#define OBJ_EVENT_PAL_TAG_BURMY_SAND 0x1025 +#define OBJ_EVENT_PAL_TAG_BURMY_TRASH 0x1024 +#define OBJ_EVENT_PAL_TAG_WORMADAM 0x1023 +#define OBJ_EVENT_PAL_TAG_WORMADAM_SAND 0x1022 +#define OBJ_EVENT_PAL_TAG_WORMADAM_TRASH 0x1021 +#define OBJ_EVENT_PAL_TAG_MOTHIM 0x1020 +#define OBJ_EVENT_PAL_TAG_COMBEE 0x101F +#define OBJ_EVENT_PAL_TAG_VESPIQUEN 0x101E +#define OBJ_EVENT_PAL_TAG_PACHIRISU 0x101D +#define OBJ_EVENT_PAL_TAG_BUIZEL 0x101C +#define OBJ_EVENT_PAL_TAG_FLOATZEL 0x101B +#define OBJ_EVENT_PAL_TAG_CHERUBI 0x101A +#define OBJ_EVENT_PAL_TAG_CHERRIM 0x1019 +#define OBJ_EVENT_PAL_TAG_SHELLOS_WEST 0x1018 +#define OBJ_EVENT_PAL_TAG_SHELLOS_EAST 0x1017 +#define OBJ_EVENT_PAL_TAG_GASTRODON_WEST 0x1016 +#define OBJ_EVENT_PAL_TAG_GASTRODON_EAST 0x1015 +#define OBJ_EVENT_PAL_TAG_AMBIPOM 0x1014 +#define OBJ_EVENT_PAL_TAG_DRIFLOON 0x1013 +#define OBJ_EVENT_PAL_TAG_DRIFBLIM 0x1012 +// Jump due to FLDEFF_PAL_TAGs found in include/constants/field_effects.h +#define OBJ_EVENT_PAL_TAG_BUNEARY 0xFFF +#define OBJ_EVENT_PAL_TAG_LOPUNNY 0xFFE +#define OBJ_EVENT_PAL_TAG_MISMAGIUS 0xFFD +#define OBJ_EVENT_PAL_TAG_HONCHKROW 0xFFC +#define OBJ_EVENT_PAL_TAG_GLAMEOW 0xFFB +#define OBJ_EVENT_PAL_TAG_PURUGLY 0xFFA +#define OBJ_EVENT_PAL_TAG_CHINGLING 0xFF9 +#define OBJ_EVENT_PAL_TAG_STUNKY 0xFF8 +#define OBJ_EVENT_PAL_TAG_SKUNTANK 0xFF7 +#define OBJ_EVENT_PAL_TAG_BRONZOR 0xFF6 +#define OBJ_EVENT_PAL_TAG_BRONZONG 0xFF5 +#define OBJ_EVENT_PAL_TAG_BONSLY 0xFF4 +#define OBJ_EVENT_PAL_TAG_MIME_JR 0xFF3 +#define OBJ_EVENT_PAL_TAG_HAPPINY 0xFF2 +#define OBJ_EVENT_PAL_TAG_CHATOT 0xFF1 +#define OBJ_EVENT_PAL_TAG_SPIRITOMB 0xFF0 +#define OBJ_EVENT_PAL_TAG_GIBLE 0xFEF +#define OBJ_EVENT_PAL_TAG_GABITE 0xFEE +#define OBJ_EVENT_PAL_TAG_GARCHOMP 0xFED +#define OBJ_EVENT_PAL_TAG_MUNCHLAX 0xFEC +#define OBJ_EVENT_PAL_TAG_RIOLU 0xFEB +#define OBJ_EVENT_PAL_TAG_LUCARIO 0xFEA +#define OBJ_EVENT_PAL_TAG_HIPPOPOTAS 0xFE9 +#define OBJ_EVENT_PAL_TAG_HIPPOWDON 0xFE8 +#define OBJ_EVENT_PAL_TAG_SKORUPI 0xFE7 +#define OBJ_EVENT_PAL_TAG_DRAPION 0xFE6 +#define OBJ_EVENT_PAL_TAG_CROAGUNK 0xFE5 +#define OBJ_EVENT_PAL_TAG_TOXICROAK 0xFE4 +#define OBJ_EVENT_PAL_TAG_CARNIVINE 0xFE3 +#define OBJ_EVENT_PAL_TAG_FINNEON 0xFE2 +#define OBJ_EVENT_PAL_TAG_LUMINEON 0xFE1 +#define OBJ_EVENT_PAL_TAG_MANTYKE 0xFE0 +#define OBJ_EVENT_PAL_TAG_SNOVER 0xFDF +#define OBJ_EVENT_PAL_TAG_ABOMASNOW 0xFDE +#define OBJ_EVENT_PAL_TAG_WEAVILE 0xFDD +#define OBJ_EVENT_PAL_TAG_MAGNEZONE 0xFDC +#define OBJ_EVENT_PAL_TAG_LICKILICKY 0xFDB +#define OBJ_EVENT_PAL_TAG_RHYPERIOR 0xFDA +#define OBJ_EVENT_PAL_TAG_TANGROWTH 0xFD9 +#define OBJ_EVENT_PAL_TAG_ELECTIVIRE 0xFD8 +#define OBJ_EVENT_PAL_TAG_MAGMORTAR 0xFD7 +#define OBJ_EVENT_PAL_TAG_TOGEKISS 0xFD6 +#define OBJ_EVENT_PAL_TAG_YANMEGA 0xFD5 +#define OBJ_EVENT_PAL_TAG_LEAFEON 0xFD4 +#define OBJ_EVENT_PAL_TAG_GLACEON 0xFD3 +#define OBJ_EVENT_PAL_TAG_GLISCOR 0xFD2 +#define OBJ_EVENT_PAL_TAG_MAMOSWINE 0xFD1 +#define OBJ_EVENT_PAL_TAG_PORYGONZ 0xFD0 +#define OBJ_EVENT_PAL_TAG_GALLADE 0xFCF +#define OBJ_EVENT_PAL_TAG_PROBOPASS 0xFCE +#define OBJ_EVENT_PAL_TAG_DUSKNOIR 0xFCD +#define OBJ_EVENT_PAL_TAG_FROSLASS 0xFCC +#define OBJ_EVENT_PAL_TAG_ROTOM_BASE 0xFCB +#define OBJ_EVENT_PAL_TAG_ROTOM_HEAT 0xFCA +#define OBJ_EVENT_PAL_TAG_ROTOM_WASH 0xFC9 +#define OBJ_EVENT_PAL_TAG_ROTOM_FROST 0xFC8 +#define OBJ_EVENT_PAL_TAG_ROTOM_FAN 0xFC7 +#define OBJ_EVENT_PAL_TAG_ROTOM_MOW 0xFC6 +#define OBJ_EVENT_PAL_TAG_UXIE 0xFC5 +#define OBJ_EVENT_PAL_TAG_MESPRIT 0xFC4 +#define OBJ_EVENT_PAL_TAG_AZELF 0xFC3 +#define OBJ_EVENT_PAL_TAG_DIALGA 0xFC2 +#define OBJ_EVENT_PAL_TAG_PALKIA 0xFC1 +#define OBJ_EVENT_PAL_TAG_HEATRAN 0xFC0 +#define OBJ_EVENT_PAL_TAG_REGIGIGAS 0xFBF +#define OBJ_EVENT_PAL_TAG_GIRATINA_NORMAL 0xFBE +#define OBJ_EVENT_PAL_TAG_GIRATINA_ORIGIN 0xFBD +#define OBJ_EVENT_PAL_TAG_CRESSELIA 0xFBC +#define OBJ_EVENT_PAL_TAG_PHIONE 0xFBB +#define OBJ_EVENT_PAL_TAG_MANAPHY 0xFBA +#define OBJ_EVENT_PAL_TAG_DARKRAI 0xFB9 +#define OBJ_EVENT_PAL_TAG_SHAYMIN_LAND 0xFB8 +#define OBJ_EVENT_PAL_TAG_SHAYMIN_SKY 0xFB7 +#define OBJ_EVENT_PAL_TAG_ARCEUS_NORMAL 0xFB6 +#define OBJ_EVENT_PAL_TAG_ARCEUS_BUG 0xFB5 +#define OBJ_EVENT_PAL_TAG_ARCEUS_DARK 0xFB4 +#define OBJ_EVENT_PAL_TAG_ARCEUS_DRAGON 0xFB3 +#define OBJ_EVENT_PAL_TAG_ARCEUS_ELECTRIC 0xFB2 +#define OBJ_EVENT_PAL_TAG_ARCEUS_FIGHTING 0xFB1 +#define OBJ_EVENT_PAL_TAG_ARCEUS_FIRE 0xFB0 +#define OBJ_EVENT_PAL_TAG_ARCEUS_FLYING 0xFAF +#define OBJ_EVENT_PAL_TAG_ARCEUS_GHOST 0xFAE +#define OBJ_EVENT_PAL_TAG_ARCEUS_GRASS 0xFAD +#define OBJ_EVENT_PAL_TAG_ARCEUS_GROUND 0xFAC +#define OBJ_EVENT_PAL_TAG_ARCEUS_ICE 0xFAB +#define OBJ_EVENT_PAL_TAG_ARCEUS_POISON 0xFAA +#define OBJ_EVENT_PAL_TAG_ARCEUS_PSYCHIC 0xFA9 +#define OBJ_EVENT_PAL_TAG_ARCEUS_ROCK 0xFA8 +#define OBJ_EVENT_PAL_TAG_ARCEUS_STEEL 0xFA7 +#define OBJ_EVENT_PAL_TAG_ARCEUS_WATER 0xFA6 #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -1318,6 +1455,142 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_ParkBall, OBJ_EVENT_PAL_TAG_PARK_BALL}, {gObjectEventPal_CherishBall, OBJ_EVENT_PAL_TAG_CHERISH_BALL}, {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE}, + {gObjectEventPal_Turtwig, OBJ_EVENT_PAL_TAG_TURTWIG}, + {gObjectEventPal_Grotle, OBJ_EVENT_PAL_TAG_GROTLE}, + {gObjectEventPal_Torterra, OBJ_EVENT_PAL_TAG_TORTERRA}, + {gObjectEventPal_Chimchar, OBJ_EVENT_PAL_TAG_CHIMCHAR}, + {gObjectEventPal_Monferno, OBJ_EVENT_PAL_TAG_MONFERNO}, + {gObjectEventPal_Infernape, OBJ_EVENT_PAL_TAG_INFERNAPE}, + {gObjectEventPal_Piplup, OBJ_EVENT_PAL_TAG_PIPLUP}, + {gObjectEventPal_Prinplup, OBJ_EVENT_PAL_TAG_PRINPLUP}, + {gObjectEventPal_Empoleon, OBJ_EVENT_PAL_TAG_EMPOLEON}, + {gObjectEventPal_Starly, OBJ_EVENT_PAL_TAG_STARLY}, + {gObjectEventPal_Staravia, OBJ_EVENT_PAL_TAG_STARAVIA}, + {gObjectEventPal_Staraptor, OBJ_EVENT_PAL_TAG_STARAPTOR}, + {gObjectEventPal_Bidoof, OBJ_EVENT_PAL_TAG_BIDOOF}, + {gObjectEventPal_Bibarel, OBJ_EVENT_PAL_TAG_BIBAREL}, + {gObjectEventPal_Kricketot, OBJ_EVENT_PAL_TAG_KRICKETOT}, + {gObjectEventPal_Kricketune, OBJ_EVENT_PAL_TAG_KRICKETUNE}, + {gObjectEventPal_Shinx, OBJ_EVENT_PAL_TAG_SHINX}, + {gObjectEventPal_Luxio, OBJ_EVENT_PAL_TAG_LUXIO}, + {gObjectEventPal_Luxray, OBJ_EVENT_PAL_TAG_LUXRAY}, + {gObjectEventPal_Budew, OBJ_EVENT_PAL_TAG_BUDEW}, + {gObjectEventPal_Roserade, OBJ_EVENT_PAL_TAG_ROSERADE}, + {gObjectEventPal_Cranidos, OBJ_EVENT_PAL_TAG_CRANIDOS}, + {gObjectEventPal_Rampardos, OBJ_EVENT_PAL_TAG_RAMPARDOS}, + {gObjectEventPal_Shieldon, OBJ_EVENT_PAL_TAG_SHIELDON}, + {gObjectEventPal_Bastiodon, OBJ_EVENT_PAL_TAG_BASTIODON}, + {gObjectEventPal_Burmy, OBJ_EVENT_PAL_TAG_BURMY}, + {gObjectEventPal_Burmy_Sand, OBJ_EVENT_PAL_TAG_BURMY_SAND}, + {gObjectEventPal_Burmy_Trash, OBJ_EVENT_PAL_TAG_BURMY_TRASH}, + {gObjectEventPal_Wormadam, OBJ_EVENT_PAL_TAG_WORMADAM}, + {gObjectEventPal_Wormadam_Sand, OBJ_EVENT_PAL_TAG_WORMADAM_SAND}, + {gObjectEventPal_Wormadam_Trash, OBJ_EVENT_PAL_TAG_WORMADAM_TRASH}, + {gObjectEventPal_Mothim, OBJ_EVENT_PAL_TAG_MOTHIM}, + {gObjectEventPal_Combee, OBJ_EVENT_PAL_TAG_COMBEE}, + {gObjectEventPal_Vespiquen, OBJ_EVENT_PAL_TAG_VESPIQUEN}, + {gObjectEventPal_Pachirisu, OBJ_EVENT_PAL_TAG_PACHIRISU}, + {gObjectEventPal_Buizel, OBJ_EVENT_PAL_TAG_BUIZEL}, + {gObjectEventPal_Floatzel, OBJ_EVENT_PAL_TAG_FLOATZEL}, + {gObjectEventPal_Cherubi, OBJ_EVENT_PAL_TAG_CHERUBI}, + {gObjectEventPal_Cherrim, OBJ_EVENT_PAL_TAG_CHERRIM}, + {gObjectEventPal_Shellos_West, OBJ_EVENT_PAL_TAG_SHELLOS_WEST}, + {gObjectEventPal_Shellos_East, OBJ_EVENT_PAL_TAG_SHELLOS_EAST}, + {gObjectEventPal_Gastrodon_West, OBJ_EVENT_PAL_TAG_GASTRODON_WEST}, + {gObjectEventPal_Gastrodon_East, OBJ_EVENT_PAL_TAG_GASTRODON_EAST}, + {gObjectEventPal_Ambipom, OBJ_EVENT_PAL_TAG_AMBIPOM}, + {gObjectEventPal_Drifloon, OBJ_EVENT_PAL_TAG_DRIFLOON}, + {gObjectEventPal_Drifblim, OBJ_EVENT_PAL_TAG_DRIFBLIM}, + {gObjectEventPal_Buneary, OBJ_EVENT_PAL_TAG_BUNEARY}, + {gObjectEventPal_Lopunny, OBJ_EVENT_PAL_TAG_LOPUNNY}, + {gObjectEventPal_Mismagius, OBJ_EVENT_PAL_TAG_MISMAGIUS}, + {gObjectEventPal_Honchkrow, OBJ_EVENT_PAL_TAG_HONCHKROW}, + {gObjectEventPal_Glameow, OBJ_EVENT_PAL_TAG_GLAMEOW}, + {gObjectEventPal_Purugly, OBJ_EVENT_PAL_TAG_PURUGLY}, + {gObjectEventPal_Chingling, OBJ_EVENT_PAL_TAG_CHINGLING}, + {gObjectEventPal_Stunky, OBJ_EVENT_PAL_TAG_STUNKY}, + {gObjectEventPal_Skuntank, OBJ_EVENT_PAL_TAG_SKUNTANK}, + {gObjectEventPal_Bronzor, OBJ_EVENT_PAL_TAG_BRONZOR}, + {gObjectEventPal_Bronzong, OBJ_EVENT_PAL_TAG_BRONZONG}, + {gObjectEventPal_Bonsly, OBJ_EVENT_PAL_TAG_BONSLY}, + {gObjectEventPal_Mime_Jr, OBJ_EVENT_PAL_TAG_MIME_JR}, + {gObjectEventPal_Happiny, OBJ_EVENT_PAL_TAG_HAPPINY}, + {gObjectEventPal_Chatot, OBJ_EVENT_PAL_TAG_CHATOT}, + {gObjectEventPal_Spiritomb, OBJ_EVENT_PAL_TAG_SPIRITOMB}, + {gObjectEventPal_Gible, OBJ_EVENT_PAL_TAG_GIBLE}, + {gObjectEventPal_Gabite, OBJ_EVENT_PAL_TAG_GABITE}, + {gObjectEventPal_Garchomp, OBJ_EVENT_PAL_TAG_GARCHOMP}, + {gObjectEventPal_Munchlax, OBJ_EVENT_PAL_TAG_MUNCHLAX}, + {gObjectEventPal_Riolu, OBJ_EVENT_PAL_TAG_RIOLU}, + {gObjectEventPal_Lucario, OBJ_EVENT_PAL_TAG_LUCARIO}, + {gObjectEventPal_Hippopotas, OBJ_EVENT_PAL_TAG_HIPPOPOTAS}, + {gObjectEventPal_Hippowdon, OBJ_EVENT_PAL_TAG_HIPPOWDON}, + {gObjectEventPal_Skorupi, OBJ_EVENT_PAL_TAG_SKORUPI}, + {gObjectEventPal_Drapion, OBJ_EVENT_PAL_TAG_DRAPION}, + {gObjectEventPal_Croagunk, OBJ_EVENT_PAL_TAG_CROAGUNK}, + {gObjectEventPal_Toxicroak, OBJ_EVENT_PAL_TAG_TOXICROAK}, + {gObjectEventPal_Carnivine, OBJ_EVENT_PAL_TAG_CARNIVINE}, + {gObjectEventPal_Finneon, OBJ_EVENT_PAL_TAG_FINNEON}, + {gObjectEventPal_Lumineon, OBJ_EVENT_PAL_TAG_LUMINEON}, + {gObjectEventPal_Mantyke, OBJ_EVENT_PAL_TAG_MANTYKE}, + {gObjectEventPal_Snover, OBJ_EVENT_PAL_TAG_SNOVER}, + {gObjectEventPal_Abomasnow, OBJ_EVENT_PAL_TAG_ABOMASNOW}, + {gObjectEventPal_Weavile, OBJ_EVENT_PAL_TAG_WEAVILE}, + {gObjectEventPal_Magnezone, OBJ_EVENT_PAL_TAG_MAGNEZONE}, + {gObjectEventPal_Lickilicky, OBJ_EVENT_PAL_TAG_LICKILICKY}, + {gObjectEventPal_Rhyperior, OBJ_EVENT_PAL_TAG_RHYPERIOR}, + {gObjectEventPal_Tangrowth, OBJ_EVENT_PAL_TAG_TANGROWTH}, + {gObjectEventPal_Electivire, OBJ_EVENT_PAL_TAG_ELECTIVIRE}, + {gObjectEventPal_Magmortar, OBJ_EVENT_PAL_TAG_MAGMORTAR}, + {gObjectEventPal_Togekiss, OBJ_EVENT_PAL_TAG_TOGEKISS}, + {gObjectEventPal_Yanmega, OBJ_EVENT_PAL_TAG_YANMEGA}, + {gObjectEventPal_Leafeon, OBJ_EVENT_PAL_TAG_LEAFEON}, + {gObjectEventPal_Glaceon, OBJ_EVENT_PAL_TAG_GLACEON}, + {gObjectEventPal_Gliscor, OBJ_EVENT_PAL_TAG_GLISCOR}, + {gObjectEventPal_Mamoswine, OBJ_EVENT_PAL_TAG_MAMOSWINE}, + {gObjectEventPal_PorygonZ, OBJ_EVENT_PAL_TAG_PORYGONZ}, + {gObjectEventPal_Gallade, OBJ_EVENT_PAL_TAG_GALLADE}, + {gObjectEventPal_Probopass, OBJ_EVENT_PAL_TAG_PROBOPASS}, + {gObjectEventPal_Dusknoir, OBJ_EVENT_PAL_TAG_DUSKNOIR}, + {gObjectEventPal_Froslass, OBJ_EVENT_PAL_TAG_FROSLASS}, + {gObjectEventPal_Rotom_Base, OBJ_EVENT_PAL_TAG_ROTOM_BASE}, + {gObjectEventPal_Rotom_Heat, OBJ_EVENT_PAL_TAG_ROTOM_HEAT}, + {gObjectEventPal_Rotom_Wash, OBJ_EVENT_PAL_TAG_ROTOM_WASH}, + {gObjectEventPal_Rotom_Frost, OBJ_EVENT_PAL_TAG_ROTOM_FROST}, + {gObjectEventPal_Rotom_Fan, OBJ_EVENT_PAL_TAG_ROTOM_FAN}, + {gObjectEventPal_Rotom_Mow, OBJ_EVENT_PAL_TAG_ROTOM_MOW}, + {gObjectEventPal_Uxie, OBJ_EVENT_PAL_TAG_UXIE}, + {gObjectEventPal_Mesprit, OBJ_EVENT_PAL_TAG_MESPRIT}, + {gObjectEventPal_Azelf, OBJ_EVENT_PAL_TAG_AZELF}, + {gObjectEventPal_Dialga, OBJ_EVENT_PAL_TAG_DIALGA}, + {gObjectEventPal_Palkia, OBJ_EVENT_PAL_TAG_PALKIA}, + {gObjectEventPal_Heatran, OBJ_EVENT_PAL_TAG_HEATRAN}, + {gObjectEventPal_Regigigas, OBJ_EVENT_PAL_TAG_REGIGIGAS}, + {gObjectEventPal_Giratina_Normal, OBJ_EVENT_PAL_TAG_GIRATINA_NORMAL}, + {gObjectEventPal_Giratina_Origin, OBJ_EVENT_PAL_TAG_GIRATINA_ORIGIN}, + {gObjectEventPal_Cresselia, OBJ_EVENT_PAL_TAG_CRESSELIA}, + {gObjectEventPal_Phione, OBJ_EVENT_PAL_TAG_PHIONE}, + {gObjectEventPal_Manaphy, OBJ_EVENT_PAL_TAG_MANAPHY}, + {gObjectEventPal_Darkrai, OBJ_EVENT_PAL_TAG_DARKRAI}, + {gObjectEventPal_Shaymin_Land, OBJ_EVENT_PAL_TAG_SHAYMIN_LAND}, + {gObjectEventPal_Shaymin_Sky, OBJ_EVENT_PAL_TAG_SHAYMIN_SKY}, + {gObjectEventPal_Arceus_Normal, OBJ_EVENT_PAL_TAG_ARCEUS_NORMAL}, + {gObjectEventPal_Arceus_Bug, OBJ_EVENT_PAL_TAG_ARCEUS_BUG}, + {gObjectEventPal_Arceus_Dark, OBJ_EVENT_PAL_TAG_ARCEUS_DARK}, + {gObjectEventPal_Arceus_Dragon, OBJ_EVENT_PAL_TAG_ARCEUS_DRAGON}, + {gObjectEventPal_Arceus_Electric, OBJ_EVENT_PAL_TAG_ARCEUS_ELECTRIC}, + {gObjectEventPal_Arceus_Fighting, OBJ_EVENT_PAL_TAG_ARCEUS_FIGHTING}, + {gObjectEventPal_Arceus_Fire, OBJ_EVENT_PAL_TAG_ARCEUS_FIRE}, + {gObjectEventPal_Arceus_Flying, OBJ_EVENT_PAL_TAG_ARCEUS_FLYING}, + {gObjectEventPal_Arceus_Ghost, OBJ_EVENT_PAL_TAG_ARCEUS_GHOST}, + {gObjectEventPal_Arceus_Grass, OBJ_EVENT_PAL_TAG_ARCEUS_GRASS}, + {gObjectEventPal_Arceus_Ground, OBJ_EVENT_PAL_TAG_ARCEUS_GROUND}, + {gObjectEventPal_Arceus_Ice, OBJ_EVENT_PAL_TAG_ARCEUS_ICE}, + {gObjectEventPal_Arceus_Poison, OBJ_EVENT_PAL_TAG_ARCEUS_POISON}, + {gObjectEventPal_Arceus_Psychic, OBJ_EVENT_PAL_TAG_ARCEUS_PSYCHIC}, + {gObjectEventPal_Arceus_Rock, OBJ_EVENT_PAL_TAG_ARCEUS_ROCK}, + {gObjectEventPal_Arceus_Steel, OBJ_EVENT_PAL_TAG_ARCEUS_STEEL}, + {gObjectEventPal_Arceus_Water, OBJ_EVENT_PAL_TAG_ARCEUS_WATER}, {}, }; @@ -9090,6 +9363,9 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; + + if (gSaveBlock2Ptr->follower.inProgress && objEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId] && objEvent->invisible == TRUE) + return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) @@ -10447,6 +10723,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, { FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; + gPlayerAvatar.preventStep = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; } @@ -10580,7 +10857,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s objectEvent->inShallowFlowingWater = TRUE; StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); } - + gPlayerAvatar.preventStep = FALSE; sprite->data[2]++; } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index b08288ffa..0039e35df 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -639,7 +639,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) { FollowerPokeballSparkle(); PlayerRun(direction); diff --git a/src/follow_me.c b/src/follow_me.c index c1bd932c6..f6d26100f 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -251,20 +251,25 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) { - gPlayerAvatar.preventStep = TRUE; - taskId = CreateTask(Task_FollowerOutOfDoor, 1); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[2] = follower->currentCoords.x; - gTasks[taskId].data[3] = follower->currentCoords.y; - goto RESET; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + else + { + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerOutOfDoor, 1); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = follower->currentCoords.x; + gTasks[taskId].data[3] = follower->currentCoords.y; + goto RESET; + } } else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) { gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; } - // This makes sure the follower is still invisible after diving or surfacing - if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))) + // This makes sure the follower is still invisible after diving or surfacing or exiting a door while player is on a bike + if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) follower->invisible = FALSE; MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding diff --git a/src/overworld.c b/src/overworld.c index 1d962b76e..6699518fa 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3867,6 +3867,11 @@ bool8 IsBigSprite(u16 graphicsId) case OBJ_EVENT_GFX_LUGIA_FOLLOWER: case OBJ_EVENT_GFX_HOOH_FOLLOWER: case OBJ_EVENT_GFX_WAILORD: + case OBJ_EVENT_GFX_DIALGA: + case OBJ_EVENT_GFX_PALKIA: + case OBJ_EVENT_GFX_REGIGIGAS: + case OBJ_EVENT_GFX_GIRATINA_NORMAL: + case OBJ_EVENT_GFX_ARCEUS_NORMAL: return TRUE; default: return FALSE; @@ -4284,6 +4289,7 @@ void FollowerPokeballSparkle(void) gSprites[gPlayerAvatar.spriteId].subpriority = 0; } player->fixedPriority = TRUE; + gPlayerAvatar.preventStep = TRUE; SeekSpriteAnim(&gSprites[follower->spriteId], 0); ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); @@ -4292,8 +4298,10 @@ void FollowerPokeballSparkle(void) void FollowerIntoPokeball(void) { - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.inProgress) { + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gPlayerAvatar.preventStep = TRUE; ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } From a716f522f3599ecf073c7e302e3c72dbaac053c3 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 00:15:30 -0700 Subject: [PATCH 40/71] Merge adjustments --- src/event_object_movement.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index e5b6ad8b9..b06a51ac6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -141,8 +141,6 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8); static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); -static void LoadObjectEventPalette(u16); -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); @@ -2130,7 +2128,7 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = elevation; + sprite->sVirtualObjElev = z; if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); From c6b9e7994f98134683f049c563f546b03e510fb2 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 00:37:51 -0700 Subject: [PATCH 41/71] Revert "Merge branch 'FollowingPokemon' into master" This reverts commit 435a4f84e24d7cf678610cfe18810a3cb8370847, reversing changes made to bee11f31cd460d5df86129c31bf7d91143a96e6e. --- asm/macros/event.inc | 45 - asm/macros/map.inc | 20 +- data/event_scripts.s | 1 - data/field_effect_scripts.s | 15 - .../map.json | 13 - .../scripts.inc | 5 - data/mb_berry_fix.gba | Bin data/script_cmd_table.inc | 4 - data/scripts/field_move_scripts.inc | 66 - data/scripts/pkmn_center_nurse.inc | 8 - gflib/sprite.c | 75 - graphics/field_effects/pics/bug_tracks.png | Bin 275 -> 0 bytes .../field_effects/pics/expanding_sparkle.png | Bin 299 -> 0 bytes .../field_effects/pics/slither_tracks.png | Bin 354 -> 0 bytes graphics/field_effects/pics/spot_tracks.png | Bin 269 -> 0 bytes .../object_events/palettes/cherish_ball.pal | 19 - graphics/object_events/palettes/dive_ball.pal | 19 - .../object_events/palettes/dream_ball.pal | 19 - graphics/object_events/palettes/dusk_ball.pal | 19 - graphics/object_events/palettes/fast_ball.pal | 19 - .../palettes/followers/abomasnow.pal | 19 - .../object_events/palettes/followers/abra.pal | 19 - .../palettes/followers/absol.pal | 19 - .../palettes/followers/aerodactyl.pal | 19 - .../palettes/followers/aggron.pal | 19 - .../palettes/followers/aipom.pal | 19 - .../palettes/followers/alakazam.pal | 19 - .../palettes/followers/altaria.pal | 19 - .../palettes/followers/ambipom.pal | 19 - .../palettes/followers/ampharos.pal | 19 - .../palettes/followers/anorith.pal | 19 - .../palettes/followers/arbok.pal | 19 - .../palettes/followers/arcanine.pal | 19 - .../palettes/followers/arceus_bug.pal | 19 - .../palettes/followers/arceus_dark.pal | 19 - .../palettes/followers/arceus_dragon.pal | 19 - .../palettes/followers/arceus_electric.pal | 19 - .../palettes/followers/arceus_fighting.pal | 19 - .../palettes/followers/arceus_fire.pal | 19 - .../palettes/followers/arceus_flying.pal | 19 - .../palettes/followers/arceus_ghost.pal | 19 - .../palettes/followers/arceus_grass.pal | 19 - .../palettes/followers/arceus_ground.pal | 19 - .../palettes/followers/arceus_ice.pal | 19 - .../palettes/followers/arceus_normal.pal | 19 - .../palettes/followers/arceus_poison.pal | 19 - .../palettes/followers/arceus_psychic.pal | 19 - .../palettes/followers/arceus_rock.pal | 19 - .../palettes/followers/arceus_steel.pal | 19 - .../palettes/followers/arceus_water.pal | 19 - .../palettes/followers/ariados.pal | 19 - .../palettes/followers/armaldo.pal | 19 - .../object_events/palettes/followers/aron.pal | 19 - .../palettes/followers/articuno.pal | 19 - .../palettes/followers/azelf.pal | 19 - .../palettes/followers/azumarill.pal | 19 - .../palettes/followers/azurill.pal | 19 - .../palettes/followers/bagon.pal | 19 - .../palettes/followers/baltoy.pal | 19 - .../palettes/followers/banette.pal | 19 - .../palettes/followers/barboach.pal | 19 - .../palettes/followers/bastiodon.pal | 19 - .../palettes/followers/bayleef.pal | 19 - .../palettes/followers/beautifly.pal | 19 - .../palettes/followers/beedrill.pal | 19 - .../palettes/followers/beldum.pal | 19 - .../palettes/followers/bellossom.pal | 19 - .../palettes/followers/bellsprout.pal | 19 - .../palettes/followers/bibarel.pal | 19 - .../palettes/followers/bidoof.pal | 19 - .../palettes/followers/blastoise.pal | 19 - .../palettes/followers/blaziken.pal | 19 - .../palettes/followers/blissey.pal | 19 - .../palettes/followers/bonsly.pal | 19 - .../palettes/followers/breloom.pal | 19 - .../palettes/followers/bronzong.pal | 19 - .../palettes/followers/bronzor.pal | 19 - .../palettes/followers/budew.pal | 19 - .../palettes/followers/buizel.pal | 19 - .../palettes/followers/bulbasaur1.pal | 19 - .../palettes/followers/buneary.pal | 19 - .../palettes/followers/burmy.pal | 19 - .../palettes/followers/burmy_sand.pal | 19 - .../palettes/followers/burmy_trash.pal | 19 - .../palettes/followers/butterfree.pal | 19 - .../palettes/followers/cacnea.pal | 19 - .../palettes/followers/cacturne.pal | 19 - .../palettes/followers/camerupt.pal | 19 - .../palettes/followers/carnivine.pal | 19 - .../palettes/followers/carvanha.pal | 19 - .../palettes/followers/cascoon.pal | 19 - .../palettes/followers/castform.pal | 19 - .../palettes/followers/caterpie.pal | 19 - .../palettes/followers/celebi.pal | 19 - .../palettes/followers/chansey.pal | 19 - .../palettes/followers/charizard.pal | 19 - .../palettes/followers/charmander.pal | 19 - .../palettes/followers/charmeleon.pal | 19 - .../palettes/followers/chatot.pal | 19 - .../palettes/followers/cherrim.pal | 19 - .../palettes/followers/cherubi.pal | 19 - .../palettes/followers/chikorita.pal | 19 - .../palettes/followers/chimchar.pal | 19 - .../palettes/followers/chimecho.pal | 19 - .../palettes/followers/chinchou.pal | 19 - .../palettes/followers/chingling.pal | 19 - .../palettes/followers/clamperl.pal | 19 - .../palettes/followers/claydol.pal | 19 - .../palettes/followers/clefable.pal | 19 - .../palettes/followers/clefairy.pal | 19 - .../palettes/followers/cleffa.pal | 19 - .../palettes/followers/cloyster.pal | 19 - .../palettes/followers/combee.pal | 19 - .../palettes/followers/combusken.pal | 19 - .../palettes/followers/corphish.pal | 19 - .../palettes/followers/corsola.pal | 19 - .../palettes/followers/cradily.pal | 19 - .../palettes/followers/cranidos.pal | 19 - .../palettes/followers/crawdaunt.pal | 19 - .../palettes/followers/cresselia.pal | 19 - .../palettes/followers/croagunk.pal | 19 - .../palettes/followers/crobat.pal | 19 - .../palettes/followers/croconaw.pal | 19 - .../palettes/followers/cubone.pal | 19 - .../palettes/followers/cyndaquil.pal | 19 - .../palettes/followers/darkrai.pal | 19 - .../palettes/followers/delcatty.pal | 19 - .../palettes/followers/delibird.pal | 19 - .../palettes/followers/deoxys.pal | 19 - .../palettes/followers/dewgong.pal | 19 - .../palettes/followers/dialga.pal | 19 - .../palettes/followers/diglett.pal | 19 - .../palettes/followers/ditto.pal | 19 - .../palettes/followers/dodrio.pal | 19 - .../palettes/followers/doduo.pal | 19 - .../palettes/followers/donphan.pal | 19 - .../palettes/followers/dragonair.pal | 19 - .../palettes/followers/dragonite.pal | 19 - .../palettes/followers/drapion.pal | 19 - .../palettes/followers/dratini.pal | 19 - .../palettes/followers/drifblim.pal | 19 - .../palettes/followers/drifloon.pal | 19 - .../palettes/followers/drowzee.pal | 19 - .../palettes/followers/dugtrio.pal | 19 - .../palettes/followers/dunsparce.pal | 19 - .../palettes/followers/dusclops.pal | 19 - .../palettes/followers/dusknoir.pal | 19 - .../palettes/followers/duskull.pal | 19 - .../palettes/followers/dustox.pal | 19 - .../palettes/followers/eevee.pal | 19 - .../palettes/followers/ekans.pal | 19 - .../palettes/followers/electabuzz.pal | 19 - .../palettes/followers/electivire.pal | 19 - .../palettes/followers/electrike.pal | 19 - .../palettes/followers/electrode.pal | 19 - .../palettes/followers/elekid.pal | 19 - .../palettes/followers/empoleon.pal | 19 - .../palettes/followers/entei.pal | 19 - .../palettes/followers/espeon.pal | 19 - .../palettes/followers/exeggcute.pal | 19 - .../palettes/followers/exeggutor.pal | 19 - .../palettes/followers/exploud.pal | 19 - .../palettes/followers/farfetchd.pal | 19 - .../palettes/followers/fearow.pal | 19 - .../palettes/followers/feebas.pal | 19 - .../palettes/followers/feraligatr.pal | 19 - .../palettes/followers/finneon.pal | 19 - .../palettes/followers/flaaffy.pal | 19 - .../palettes/followers/flareon.pal | 19 - .../palettes/followers/floatzel.pal | 19 - .../palettes/followers/flygon.pal | 19 - .../palettes/followers/forretress.pal | 19 - .../palettes/followers/froslass.pal | 19 - .../palettes/followers/furret.pal | 19 - .../palettes/followers/gabite.pal | 19 - .../palettes/followers/gallade.pal | 19 - .../palettes/followers/garchomp.pal | 19 - .../palettes/followers/gardevoir.pal | 19 - .../palettes/followers/gastly.pal | 19 - .../palettes/followers/gastrodon_east.pal | 19 - .../palettes/followers/gastrodon_west.pal | 19 - .../palettes/followers/gengar.pal | 19 - .../palettes/followers/geodude.pal | 19 - .../palettes/followers/gible.pal | 19 - .../palettes/followers/girafarig.pal | 19 - .../palettes/followers/giratina_normal.pal | 19 - .../palettes/followers/giratina_origin.pal | 19 - .../palettes/followers/glaceon.pal | 19 - .../palettes/followers/glalie.pal | 19 - .../palettes/followers/glameow.pal | 19 - .../palettes/followers/gligar.pal | 19 - .../palettes/followers/gliscor.pal | 19 - .../palettes/followers/gloom.pal | 19 - .../palettes/followers/golbat.pal | 19 - .../palettes/followers/goldeen.pal | 19 - .../palettes/followers/golduck.pal | 19 - .../palettes/followers/golem.pal | 19 - .../palettes/followers/gorebyss.pal | 19 - .../palettes/followers/granbull.pal | 19 - .../palettes/followers/graveler.pal | 19 - .../palettes/followers/grimer.pal | 19 - .../palettes/followers/grotle.pal | 19 - .../palettes/followers/groudon.pal | 19 - .../palettes/followers/grovyle.pal | 19 - .../palettes/followers/growlithe.pal | 19 - .../palettes/followers/grumpig.pal | 19 - .../palettes/followers/gulpin.pal | 19 - .../palettes/followers/gyarados.pal | 19 - .../palettes/followers/happiny.pal | 19 - .../palettes/followers/hariyama.pal | 19 - .../palettes/followers/haunter.pal | 19 - .../palettes/followers/heatran.pal | 19 - .../palettes/followers/heracross.pal | 19 - .../palettes/followers/hippopotas.pal | 19 - .../palettes/followers/hippowdon.pal | 19 - .../palettes/followers/hitmonchan.pal | 19 - .../palettes/followers/hitmonlee.pal | 19 - .../palettes/followers/hitmontop.pal | 19 - .../palettes/followers/ho_oh.pal | 19 - .../palettes/followers/honchkrow.pal | 19 - .../palettes/followers/hoothoot.pal | 19 - .../palettes/followers/hoppip.pal | 19 - .../palettes/followers/horsea.pal | 19 - .../palettes/followers/houndoom.pal | 19 - .../palettes/followers/houndour.pal | 19 - .../palettes/followers/huntail.pal | 19 - .../palettes/followers/hypno.pal | 19 - .../palettes/followers/igglybuff.pal | 19 - .../palettes/followers/illumise.pal | 19 - .../palettes/followers/infernape.pal | 19 - .../palettes/followers/ivysaur.pal | 19 - .../palettes/followers/jigglypuff.pal | 19 - .../palettes/followers/jirachi.pal | 19 - .../palettes/followers/jolteon.pal | 19 - .../palettes/followers/jumpluff.pal | 19 - .../object_events/palettes/followers/jynx.pal | 19 - .../palettes/followers/kabuto.pal | 19 - .../palettes/followers/kabutops.pal | 19 - .../palettes/followers/kadabra.pal | 19 - .../palettes/followers/kakuna.pal | 19 - .../palettes/followers/kangaskhan.pal | 19 - .../palettes/followers/kecleon.pal | 19 - .../palettes/followers/kingdra.pal | 19 - .../palettes/followers/kingler.pal | 19 - .../palettes/followers/kirlia.pal | 19 - .../palettes/followers/koffing.pal | 19 - .../palettes/followers/krabby.pal | 19 - .../palettes/followers/kricketot.pal | 19 - .../palettes/followers/kricketune.pal | 19 - .../palettes/followers/kyogre.pal | 19 - .../palettes/followers/lairon.pal | 19 - .../palettes/followers/lanturn.pal | 19 - .../palettes/followers/lapras.pal | 19 - .../palettes/followers/larvitar.pal | 19 - .../palettes/followers/latias.pal | 19 - .../palettes/followers/latios.pal | 19 - .../palettes/followers/leafeon.pal | 19 - .../palettes/followers/ledian.pal | 19 - .../palettes/followers/ledyba.pal | 19 - .../palettes/followers/lickilicky.pal | 19 - .../palettes/followers/lickitung.pal | 19 - .../palettes/followers/lileep.pal | 19 - .../palettes/followers/linoone.pal | 19 - .../palettes/followers/lombre.pal | 19 - .../palettes/followers/lopunny.pal | 19 - .../palettes/followers/lotad.pal | 19 - .../palettes/followers/loudred.pal | 19 - .../palettes/followers/lucario.pal | 19 - .../palettes/followers/ludicolo.pal | 19 - .../palettes/followers/lugia.pal | 19 - .../palettes/followers/lumineon.pal | 19 - .../palettes/followers/lunatone.pal | 19 - .../palettes/followers/luvdisc.pal | 19 - .../palettes/followers/luxio.pal | 19 - .../palettes/followers/luxray.pal | 19 - .../palettes/followers/machamp.pal | 19 - .../palettes/followers/machoke.pal | 19 - .../palettes/followers/machop.pal | 19 - .../palettes/followers/magby.pal | 19 - .../palettes/followers/magcargo.pal | 19 - .../palettes/followers/magikarp.pal | 19 - .../palettes/followers/magmar.pal | 19 - .../palettes/followers/magmortar.pal | 19 - .../palettes/followers/magnemite.pal | 19 - .../palettes/followers/magneton.pal | 19 - .../palettes/followers/magnezone.pal | 19 - .../palettes/followers/makuhita.pal | 19 - .../palettes/followers/mamoswine.pal | 19 - .../palettes/followers/manaphy.pal | 19 - .../palettes/followers/manectric.pal | 19 - .../palettes/followers/mankey.pal | 19 - .../palettes/followers/mantine.pal | 19 - .../palettes/followers/mantyke.pal | 19 - .../palettes/followers/mareep.pal | 19 - .../palettes/followers/marill.pal | 19 - .../palettes/followers/marowak.pal | 19 - .../palettes/followers/marshtomp.pal | 19 - .../palettes/followers/masquerain.pal | 19 - .../palettes/followers/mawile.pal | 19 - .../palettes/followers/medicham.pal | 19 - .../palettes/followers/meditite.pal | 19 - .../palettes/followers/meganium.pal | 19 - .../palettes/followers/meowth.pal | 19 - .../palettes/followers/mesprit.pal | 19 - .../palettes/followers/metagross.pal | 19 - .../palettes/followers/metang.pal | 19 - .../palettes/followers/metapod.pal | 19 - .../object_events/palettes/followers/mew.pal | 19 - .../palettes/followers/mewtwo.pal | 19 - .../palettes/followers/mightyena.pal | 19 - .../palettes/followers/milotic.pal | 19 - .../palettes/followers/miltank.pal | 19 - .../palettes/followers/mime_jr.pal | 19 - .../palettes/followers/minun.pal | 19 - .../palettes/followers/misdreavus.pal | 19 - .../palettes/followers/mismagius.pal | 19 - .../palettes/followers/moltres.pal | 19 - .../palettes/followers/monferno.pal | 19 - .../palettes/followers/mothim.pal | 19 - .../palettes/followers/mr_mime.pal | 19 - .../palettes/followers/mudkip.pal | 19 - .../object_events/palettes/followers/muk.pal | 19 - .../palettes/followers/munchlax.pal | 19 - .../palettes/followers/murkrow.pal | 19 - .../object_events/palettes/followers/natu.pal | 19 - .../palettes/followers/nidoking.pal | 19 - .../palettes/followers/nidoqueen.pal | 19 - .../palettes/followers/nidoran_f.pal | 19 - .../palettes/followers/nidoran_m.pal | 19 - .../palettes/followers/nidorina.pal | 19 - .../palettes/followers/nidorino.pal | 19 - .../palettes/followers/nincada.pal | 19 - .../palettes/followers/ninetales.pal | 19 - .../palettes/followers/ninjask.pal | 19 - .../palettes/followers/noctowl.pal | 19 - .../palettes/followers/nosepass.pal | 19 - .../palettes/followers/numel.pal | 19 - .../palettes/followers/nuzleaf.pal | 19 - .../palettes/followers/octillery.pal | 19 - .../palettes/followers/oddish.pal | 19 - .../palettes/followers/omanyte.pal | 19 - .../palettes/followers/omastar.pal | 19 - .../object_events/palettes/followers/onix.pal | 19 - .../palettes/followers/pachirisu.pal | 19 - .../palettes/followers/palkia.pal | 19 - .../palettes/followers/paras.pal | 19 - .../palettes/followers/parasect.pal | 19 - .../palettes/followers/pelipper.pal | 19 - .../palettes/followers/persian.pal | 19 - .../palettes/followers/phanpy.pal | 19 - .../palettes/followers/phione.pal | 19 - .../palettes/followers/pichu.pal | 19 - .../palettes/followers/pidgeot.pal | 19 - .../palettes/followers/pidgeotto.pal | 19 - .../palettes/followers/pidgey.pal | 19 - .../palettes/followers/pikachu.pal | 19 - .../palettes/followers/piloswine.pal | 19 - .../palettes/followers/pineco.pal | 19 - .../palettes/followers/pinsir.pal | 19 - .../palettes/followers/piplup.pal | 19 - .../palettes/followers/plusle.pal | 19 - .../palettes/followers/politoed.pal | 19 - .../palettes/followers/poliwag.pal | 19 - .../palettes/followers/poliwhirl.pal | 19 - .../palettes/followers/poliwrath.pal | 19 - .../palettes/followers/ponyta.pal | 19 - .../palettes/followers/poochyena.pal | 19 - .../palettes/followers/porygon.pal | 19 - .../palettes/followers/porygon2.pal | 19 - .../palettes/followers/porygonz.pal | 19 - .../palettes/followers/primeape.pal | 19 - .../palettes/followers/prinplup.pal | 19 - .../palettes/followers/probopass.pal | 19 - .../palettes/followers/psyduck.pal | 19 - .../palettes/followers/pupitar.pal | 19 - .../palettes/followers/purugly.pal | 19 - .../palettes/followers/quagsire.pal | 19 - .../palettes/followers/quilava.pal | 19 - .../palettes/followers/qwilfish.pal | 19 - .../palettes/followers/raichu.pal | 19 - .../palettes/followers/raikou.pal | 19 - .../palettes/followers/ralts.pal | 19 - .../palettes/followers/rampardos.pal | 19 - .../palettes/followers/rapidash.pal | 19 - .../palettes/followers/raticate.pal | 19 - .../palettes/followers/rattata.pal | 19 - .../palettes/followers/rayquaza.pal | 19 - .../palettes/followers/regice.pal | 19 - .../palettes/followers/regigigas.pal | 19 - .../palettes/followers/regirock.pal | 19 - .../palettes/followers/registeel.pal | 19 - .../palettes/followers/relicanth.pal | 19 - .../palettes/followers/remoraid.pal | 19 - .../palettes/followers/rhydon.pal | 19 - .../palettes/followers/rhyhorn.pal | 19 - .../palettes/followers/rhyperior.pal | 19 - .../palettes/followers/riolu.pal | 19 - .../palettes/followers/roselia.pal | 19 - .../palettes/followers/roserade.pal | 19 - .../palettes/followers/rotom_base.pal | 19 - .../palettes/followers/rotom_fan.pal | 19 - .../palettes/followers/rotom_frost.pal | 19 - .../palettes/followers/rotom_heat.pal | 19 - .../palettes/followers/rotom_mow.pal | 19 - .../palettes/followers/rotom_wash.pal | 19 - .../palettes/followers/sableye.pal | 19 - .../palettes/followers/salamence.pal | 19 - .../palettes/followers/sandshrew.pal | 19 - .../palettes/followers/sandslash.pal | 19 - .../palettes/followers/sceptile.pal | 19 - .../palettes/followers/scizor.pal | 19 - .../palettes/followers/scyther.pal | 19 - .../palettes/followers/seadra.pal | 19 - .../palettes/followers/seaking.pal | 19 - .../palettes/followers/sealeo.pal | 19 - .../palettes/followers/seedot.pal | 19 - .../object_events/palettes/followers/seel.pal | 19 - .../palettes/followers/sentret.pal | 19 - .../palettes/followers/seviper.pal | 19 - .../palettes/followers/sharpedo.pal | 19 - .../palettes/followers/shaymin_land.pal | 19 - .../palettes/followers/shaymin_sky.pal | 19 - .../palettes/followers/shedinja.pal | 19 - .../palettes/followers/shelgon.pal | 19 - .../palettes/followers/shellder.pal | 19 - .../palettes/followers/shellos_east.pal | 19 - .../palettes/followers/shellos_west.pal | 19 - .../palettes/followers/shieldon.pal | 19 - .../palettes/followers/shiftry.pal | 19 - .../palettes/followers/shinx.pal | 19 - .../palettes/followers/shroomish.pal | 19 - .../palettes/followers/shuckle.pal | 19 - .../palettes/followers/shuppet.pal | 19 - .../palettes/followers/silcoon.pal | 19 - .../palettes/followers/skarmory.pal | 19 - .../palettes/followers/skiploom.pal | 19 - .../palettes/followers/skitty.pal | 19 - .../palettes/followers/skorupi.pal | 19 - .../palettes/followers/skuntank.pal | 19 - .../palettes/followers/slaking.pal | 19 - .../palettes/followers/slakoth.pal | 19 - .../palettes/followers/slowbro.pal | 19 - .../palettes/followers/slowking.pal | 19 - .../palettes/followers/slowpoke.pal | 19 - .../palettes/followers/slugma.pal | 19 - .../palettes/followers/smeargle.pal | 19 - .../palettes/followers/smoochum.pal | 19 - .../palettes/followers/sneasel.pal | 19 - .../palettes/followers/snorlax.pal | 19 - .../palettes/followers/snorunt.pal | 19 - .../palettes/followers/snover.pal | 19 - .../palettes/followers/snubbull.pal | 19 - .../palettes/followers/solrock.pal | 19 - .../palettes/followers/spearow.pal | 19 - .../palettes/followers/spheal.pal | 19 - .../palettes/followers/spinarak.pal | 19 - .../palettes/followers/spinda.pal | 19 - .../palettes/followers/spiritomb.pal | 19 - .../palettes/followers/spoink.pal | 19 - .../palettes/followers/squirtle.pal | 19 - .../palettes/followers/stantler.pal | 19 - .../palettes/followers/staraptor.pal | 19 - .../palettes/followers/staravia.pal | 19 - .../palettes/followers/starly.pal | 19 - .../palettes/followers/starmie.pal | 19 - .../palettes/followers/staryu.pal | 19 - .../palettes/followers/steelix.pal | 19 - .../palettes/followers/stunky.pal | 19 - .../palettes/followers/sudowoodo.pal | 19 - .../palettes/followers/suicune.pal | 19 - .../palettes/followers/sunflora.pal | 19 - .../palettes/followers/sunkern.pal | 19 - .../palettes/followers/surskit.pal | 19 - .../palettes/followers/swablu.pal | 19 - .../palettes/followers/swalot.pal | 19 - .../palettes/followers/swampert.pal | 19 - .../palettes/followers/swellow.pal | 19 - .../palettes/followers/swinub.pal | 19 - .../palettes/followers/taillow.pal | 19 - .../palettes/followers/tangela.pal | 19 - .../palettes/followers/tangrowth.pal | 19 - .../palettes/followers/tauros.pal | 19 - .../palettes/followers/teddiursa.pal | 19 - .../palettes/followers/tentacool.pal | 19 - .../palettes/followers/tentacruel.pal | 19 - .../palettes/followers/togekiss.pal | 19 - .../palettes/followers/togepi.pal | 19 - .../palettes/followers/togetic.pal | 19 - .../palettes/followers/torchic.pal | 19 - .../palettes/followers/torkoal.pal | 19 - .../palettes/followers/torterra.pal | 19 - .../palettes/followers/totodile.pal | 19 - .../palettes/followers/toxicroak.pal | 19 - .../palettes/followers/trapinch.pal | 19 - .../palettes/followers/treecko.pal | 19 - .../palettes/followers/tropius.pal | 19 - .../palettes/followers/turtwig.pal | 19 - .../palettes/followers/typhlosion.pal | 19 - .../palettes/followers/tyranitar.pal | 19 - .../palettes/followers/tyrogue.pal | 19 - .../palettes/followers/umbreon.pal | 19 - .../palettes/followers/unown.pal | 19 - .../palettes/followers/ursaring.pal | 19 - .../object_events/palettes/followers/uxie.pal | 19 - .../palettes/followers/vaporeon.pal | 19 - .../palettes/followers/venomoth.pal | 19 - .../palettes/followers/venonat.pal | 19 - .../palettes/followers/venusaur.pal | 19 - .../palettes/followers/vespiquen.pal | 19 - .../palettes/followers/vibrava.pal | 19 - .../palettes/followers/victreebel.pal | 19 - .../palettes/followers/vigoroth.pal | 19 - .../palettes/followers/vileplume.pal | 19 - .../palettes/followers/volbeat.pal | 19 - .../palettes/followers/voltorb.pal | 19 - .../palettes/followers/vulpix.pal | 19 - .../palettes/followers/wailmer.pal | 19 - .../palettes/followers/wailord.pal | 19 - .../palettes/followers/walrein.pal | 19 - .../palettes/followers/wartortle.pal | 19 - .../palettes/followers/weavile.pal | 19 - .../palettes/followers/weedle.pal | 19 - .../palettes/followers/weepinbell.pal | 19 - .../palettes/followers/weezing.pal | 19 - .../palettes/followers/whiscash.pal | 19 - .../palettes/followers/whismur.pal | 19 - .../palettes/followers/wigglytuff.pal | 19 - .../palettes/followers/wingull.pal | 19 - .../palettes/followers/wobbuffet.pal | 19 - .../palettes/followers/wooper.pal | 19 - .../palettes/followers/wormadam.pal | 19 - .../palettes/followers/wormadam_sand.pal | 19 - .../palettes/followers/wormadam_trash.pal | 19 - .../palettes/followers/wurmple.pal | 19 - .../palettes/followers/wynaut.pal | 19 - .../object_events/palettes/followers/xatu.pal | 19 - .../palettes/followers/yanma.pal | 19 - .../palettes/followers/yanmega.pal | 19 - .../palettes/followers/zangoose.pal | 19 - .../palettes/followers/zapdos.pal | 19 - .../palettes/followers/zigzagoon.pal | 19 - .../palettes/followers/zubat.pal | 19 - .../object_events/palettes/friend_ball.pal | 19 - .../object_events/palettes/great_ball.pal | 19 - graphics/object_events/palettes/heal_ball.pal | 19 - .../object_events/palettes/heavy_ball.pal | 19 - .../object_events/palettes/level_ball.pal | 19 - graphics/object_events/palettes/love_ball.pal | 19 - graphics/object_events/palettes/lure_ball.pal | 19 - .../object_events/palettes/luxury_ball.pal | 19 - .../object_events/palettes/master_ball.pal | 19 - graphics/object_events/palettes/moon_ball.pal | 19 - graphics/object_events/palettes/nest_ball.pal | 19 - graphics/object_events/palettes/net_ball.pal | 19 - graphics/object_events/palettes/park_ball.pal | 19 - .../object_events/palettes/premier_ball.pal | 19 - .../object_events/palettes/quick_ball.pal | 19 - .../object_events/palettes/repeat_ball.pal | 19 - .../object_events/palettes/safari_ball.pal | 19 - .../object_events/palettes/sport_ball.pal | 19 - .../object_events/palettes/timer_ball.pal | 19 - .../object_events/palettes/ultra_ball.pal | 19 - .../object_events/pics/misc/cherish_ball.png | Bin 203 -> 0 bytes .../object_events/pics/misc/dive_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/dream_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/dusk_ball.png | Bin 204 -> 0 bytes .../object_events/pics/misc/fast_ball.png | Bin 212 -> 0 bytes .../object_events/pics/misc/friend_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/great_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/heal_ball.png | Bin 204 -> 0 bytes .../object_events/pics/misc/heavy_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/level_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/love_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/lure_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/luxury_ball.png | Bin 207 -> 0 bytes .../object_events/pics/misc/master_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/moon_ball.png | Bin 212 -> 0 bytes .../object_events/pics/misc/nest_ball.png | Bin 210 -> 0 bytes graphics/object_events/pics/misc/net_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/park_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/premier_ball.png | Bin 204 -> 0 bytes .../object_events/pics/misc/quick_ball.png | Bin 204 -> 0 bytes .../object_events/pics/misc/repeat_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/safari_ball.png | Bin 210 -> 0 bytes .../object_events/pics/misc/sport_ball.png | Bin 211 -> 0 bytes .../object_events/pics/misc/timer_ball.png | Bin 212 -> 0 bytes .../object_events/pics/misc/ultra_ball.png | Bin 210 -> 0 bytes .../pics/pokemon/followers/abomasnow.png | Bin 1052 -> 0 bytes .../pics/pokemon/followers/abra.png | Bin 547 -> 0 bytes .../pics/pokemon/followers/absol.png | Bin 1043 -> 0 bytes .../pics/pokemon/followers/aerodactyl.png | Bin 1037 -> 0 bytes .../pics/pokemon/followers/aggron.png | Bin 1225 -> 0 bytes .../pics/pokemon/followers/aipom.png | Bin 798 -> 0 bytes .../pics/pokemon/followers/alakazam.png | Bin 799 -> 0 bytes .../pics/pokemon/followers/altaria.png | Bin 1180 -> 0 bytes .../pics/pokemon/followers/ambipom.png | Bin 1175 -> 0 bytes .../pics/pokemon/followers/ampharos.png | Bin 775 -> 0 bytes .../pics/pokemon/followers/anorith.png | Bin 840 -> 0 bytes .../pics/pokemon/followers/arbok.png | Bin 707 -> 0 bytes .../pics/pokemon/followers/arcanine.png | Bin 1005 -> 0 bytes .../pics/pokemon/followers/arceus.png | Bin 1399 -> 0 bytes .../pics/pokemon/followers/ariados.png | Bin 1043 -> 0 bytes .../pics/pokemon/followers/armaldo.png | Bin 1003 -> 0 bytes .../pics/pokemon/followers/aron.png | Bin 457 -> 0 bytes .../pics/pokemon/followers/articuno.png | Bin 1286 -> 0 bytes .../pics/pokemon/followers/azelf.png | Bin 767 -> 0 bytes .../pics/pokemon/followers/azumarill.png | Bin 725 -> 0 bytes .../pics/pokemon/followers/azurill.png | Bin 534 -> 0 bytes .../pics/pokemon/followers/bagon.png | Bin 557 -> 0 bytes .../pics/pokemon/followers/baltoy.png | Bin 453 -> 0 bytes .../pics/pokemon/followers/banette.png | Bin 620 -> 0 bytes .../pics/pokemon/followers/barboach.png | Bin 558 -> 0 bytes .../pics/pokemon/followers/bastiodon.png | Bin 829 -> 0 bytes .../pics/pokemon/followers/bayleef.png | Bin 745 -> 0 bytes .../pics/pokemon/followers/beautifly.png | Bin 952 -> 0 bytes .../pics/pokemon/followers/beedrill.png | Bin 861 -> 0 bytes .../pics/pokemon/followers/beldum.png | Bin 568 -> 0 bytes .../pics/pokemon/followers/bellossom.png | Bin 699 -> 0 bytes .../pics/pokemon/followers/bellsprout.png | Bin 436 -> 0 bytes .../pics/pokemon/followers/bibarel.png | Bin 853 -> 0 bytes .../pics/pokemon/followers/bidoof.png | Bin 541 -> 0 bytes .../pics/pokemon/followers/blastoise.png | Bin 955 -> 0 bytes .../pics/pokemon/followers/blaziken.png | Bin 958 -> 0 bytes .../pics/pokemon/followers/blissey.png | Bin 665 -> 0 bytes .../pics/pokemon/followers/bonsly.png | Bin 454 -> 0 bytes .../pics/pokemon/followers/breloom.png | Bin 659 -> 0 bytes .../pics/pokemon/followers/bronzong.png | Bin 696 -> 0 bytes .../pics/pokemon/followers/bronzor.png | Bin 371 -> 0 bytes .../pics/pokemon/followers/budew.png | Bin 421 -> 0 bytes .../pics/pokemon/followers/buizel.png | Bin 719 -> 0 bytes .../pics/pokemon/followers/bulbasaur.png | Bin 552 -> 0 bytes .../pics/pokemon/followers/buneary.png | Bin 675 -> 0 bytes .../pics/pokemon/followers/burmy.png | Bin 552 -> 0 bytes .../pics/pokemon/followers/burmy_sand.png | Bin 504 -> 0 bytes .../pics/pokemon/followers/burmy_trash.png | Bin 505 -> 0 bytes .../pics/pokemon/followers/butterfree.png | Bin 876 -> 0 bytes .../pics/pokemon/followers/cacnea.png | Bin 606 -> 0 bytes .../pics/pokemon/followers/cacturne.png | Bin 572 -> 0 bytes .../pics/pokemon/followers/camerupt.png | Bin 971 -> 0 bytes .../pics/pokemon/followers/carnivine.png | Bin 759 -> 0 bytes .../pics/pokemon/followers/carvanha.png | Bin 768 -> 0 bytes .../pics/pokemon/followers/cascoon.png | Bin 428 -> 0 bytes .../pics/pokemon/followers/castform.png | Bin 403 -> 0 bytes .../pics/pokemon/followers/caterpie.png | Bin 606 -> 0 bytes .../pics/pokemon/followers/celebi.png | Bin 663 -> 0 bytes .../pics/pokemon/followers/chansey.png | Bin 558 -> 0 bytes .../pics/pokemon/followers/charizard.png | Bin 1110 -> 0 bytes .../pics/pokemon/followers/charmander.png | Bin 528 -> 0 bytes .../pics/pokemon/followers/charmeleon.png | Bin 612 -> 0 bytes .../pics/pokemon/followers/chatot.png | Bin 557 -> 0 bytes .../pics/pokemon/followers/cherrim.png | Bin 475 -> 0 bytes .../pics/pokemon/followers/cherubi.png | Bin 578 -> 0 bytes .../pics/pokemon/followers/chikorita.png | Bin 479 -> 0 bytes .../pics/pokemon/followers/chimchar.png | Bin 634 -> 0 bytes .../pics/pokemon/followers/chimecho.png | Bin 412 -> 0 bytes .../pics/pokemon/followers/chinchou.png | Bin 708 -> 0 bytes .../pics/pokemon/followers/chingling.png | Bin 554 -> 0 bytes .../pics/pokemon/followers/clamperl.png | Bin 566 -> 0 bytes .../pics/pokemon/followers/claydol.png | Bin 628 -> 0 bytes .../pics/pokemon/followers/clefable.png | Bin 654 -> 0 bytes .../pics/pokemon/followers/clefairy.png | Bin 508 -> 0 bytes .../pics/pokemon/followers/cleffa.png | Bin 449 -> 0 bytes .../pics/pokemon/followers/cloyster.png | Bin 1096 -> 0 bytes .../pics/pokemon/followers/combee.png | Bin 527 -> 0 bytes .../pics/pokemon/followers/combusken.png | Bin 602 -> 0 bytes .../pics/pokemon/followers/corphish.png | Bin 889 -> 0 bytes .../pics/pokemon/followers/corsola.png | Bin 669 -> 0 bytes .../pics/pokemon/followers/cradily.png | Bin 1085 -> 0 bytes .../pics/pokemon/followers/cranidos.png | Bin 532 -> 0 bytes .../pics/pokemon/followers/crawdaunt.png | Bin 959 -> 0 bytes .../pics/pokemon/followers/cresselia.png | Bin 972 -> 0 bytes .../pics/pokemon/followers/croagunk.png | Bin 555 -> 0 bytes .../pics/pokemon/followers/crobat.png | Bin 963 -> 0 bytes .../pics/pokemon/followers/croconaw.png | Bin 836 -> 0 bytes .../pics/pokemon/followers/cubone.png | Bin 751 -> 0 bytes .../pics/pokemon/followers/cyndaquil.png | Bin 713 -> 0 bytes .../pics/pokemon/followers/darkrai.png | Bin 1058 -> 0 bytes .../pics/pokemon/followers/delcatty.png | Bin 761 -> 0 bytes .../pics/pokemon/followers/delibird.png | Bin 676 -> 0 bytes .../pics/pokemon/followers/deoxys_attack.png | Bin 960 -> 0 bytes .../pics/pokemon/followers/deoxys_defense.png | Bin 869 -> 0 bytes .../pics/pokemon/followers/deoxys_normal.png | Bin 897 -> 0 bytes .../pics/pokemon/followers/deoxys_speed.png | Bin 898 -> 0 bytes .../pics/pokemon/followers/dewgong.png | Bin 800 -> 0 bytes .../pics/pokemon/followers/dialga.png | Bin 1686 -> 0 bytes .../pics/pokemon/followers/diglett.png | Bin 470 -> 0 bytes .../pics/pokemon/followers/ditto.png | Bin 436 -> 0 bytes .../pics/pokemon/followers/dodrio.png | Bin 1088 -> 0 bytes .../pics/pokemon/followers/doduo.png | Bin 575 -> 0 bytes .../pics/pokemon/followers/donphan.png | Bin 745 -> 0 bytes .../pics/pokemon/followers/dragonair.png | Bin 1103 -> 0 bytes .../pics/pokemon/followers/dragonite.png | Bin 1030 -> 0 bytes .../pics/pokemon/followers/drapion.png | Bin 1059 -> 0 bytes .../pics/pokemon/followers/dratini.png | Bin 693 -> 0 bytes .../pics/pokemon/followers/drifblim.png | Bin 611 -> 0 bytes .../pics/pokemon/followers/drifloon.png | Bin 411 -> 0 bytes .../pics/pokemon/followers/drowzee.png | Bin 574 -> 0 bytes .../pics/pokemon/followers/dugtrio.png | Bin 764 -> 0 bytes .../pics/pokemon/followers/dunsparce.png | Bin 789 -> 0 bytes .../pics/pokemon/followers/dusclops.png | Bin 915 -> 0 bytes .../pics/pokemon/followers/dusknoir.png | Bin 938 -> 0 bytes .../pics/pokemon/followers/duskull.png | Bin 568 -> 0 bytes .../pics/pokemon/followers/dustox.png | Bin 872 -> 0 bytes .../pics/pokemon/followers/eevee.png | Bin 546 -> 0 bytes .../pics/pokemon/followers/ekans.png | Bin 593 -> 0 bytes .../pics/pokemon/followers/electabuzz.png | Bin 692 -> 0 bytes .../pics/pokemon/followers/electivire.png | Bin 1021 -> 0 bytes .../pics/pokemon/followers/electrike.png | Bin 614 -> 0 bytes .../pics/pokemon/followers/electrode.png | Bin 529 -> 0 bytes .../pics/pokemon/followers/elekid.png | Bin 558 -> 0 bytes .../pics/pokemon/followers/empoleon.png | Bin 824 -> 0 bytes .../pics/pokemon/followers/entei.png | Bin 1072 -> 0 bytes .../pics/pokemon/followers/espeon.png | Bin 812 -> 0 bytes .../pics/pokemon/followers/exeggcute.png | Bin 875 -> 0 bytes .../pics/pokemon/followers/exeggutor.png | Bin 877 -> 0 bytes .../pics/pokemon/followers/exploud.png | Bin 1163 -> 0 bytes .../pics/pokemon/followers/farfetchd.png | Bin 811 -> 0 bytes .../pics/pokemon/followers/fearow.png | Bin 1072 -> 0 bytes .../pics/pokemon/followers/feebas.png | Bin 588 -> 0 bytes .../pics/pokemon/followers/feraligatr.png | Bin 1090 -> 0 bytes .../pics/pokemon/followers/finneon.png | Bin 595 -> 0 bytes .../pics/pokemon/followers/flaaffy.png | Bin 782 -> 0 bytes .../pics/pokemon/followers/flareon.png | Bin 828 -> 0 bytes .../pics/pokemon/followers/floatzel.png | Bin 928 -> 0 bytes .../pics/pokemon/followers/flygon.png | Bin 1067 -> 0 bytes .../pics/pokemon/followers/forretress.png | Bin 620 -> 0 bytes .../pics/pokemon/followers/froslass.png | Bin 773 -> 0 bytes .../pics/pokemon/followers/furret.png | Bin 791 -> 0 bytes .../pics/pokemon/followers/gabite.png | Bin 799 -> 0 bytes .../pics/pokemon/followers/gallade.png | Bin 823 -> 0 bytes .../pics/pokemon/followers/garchomp.png | Bin 1162 -> 0 bytes .../pics/pokemon/followers/gardevoir.png | Bin 783 -> 0 bytes .../pics/pokemon/followers/gastly.png | Bin 716 -> 0 bytes .../pics/pokemon/followers/gastrodon_east.png | Bin 887 -> 0 bytes .../pics/pokemon/followers/gastrodon_west.png | Bin 896 -> 0 bytes .../pics/pokemon/followers/gengar.png | Bin 672 -> 0 bytes .../pics/pokemon/followers/geodude.png | Bin 426 -> 0 bytes .../pics/pokemon/followers/gible.png | Bin 615 -> 0 bytes .../pics/pokemon/followers/girafarig.png | Bin 770 -> 0 bytes .../pokemon/followers/giratina_normal.png | Bin 2291 -> 0 bytes .../pokemon/followers/giratina_origin.png | Bin 2017 -> 0 bytes .../pics/pokemon/followers/glaceon.png | Bin 729 -> 0 bytes .../pics/pokemon/followers/glalie.png | Bin 598 -> 0 bytes .../pics/pokemon/followers/glameow.png | Bin 556 -> 0 bytes .../pics/pokemon/followers/gligar.png | Bin 958 -> 0 bytes .../pics/pokemon/followers/gliscor.png | Bin 993 -> 0 bytes .../pics/pokemon/followers/gloom.png | Bin 534 -> 0 bytes .../pics/pokemon/followers/golbat.png | Bin 844 -> 0 bytes .../pics/pokemon/followers/goldeen.png | Bin 773 -> 0 bytes .../pics/pokemon/followers/golduck.png | Bin 644 -> 0 bytes .../pics/pokemon/followers/golem.png | Bin 778 -> 0 bytes .../pics/pokemon/followers/gorebyss.png | Bin 925 -> 0 bytes .../pics/pokemon/followers/granbull.png | Bin 695 -> 0 bytes .../pics/pokemon/followers/graveler.png | Bin 687 -> 0 bytes .../pics/pokemon/followers/grimer.png | Bin 593 -> 0 bytes .../pics/pokemon/followers/grotle.png | Bin 689 -> 0 bytes .../pics/pokemon/followers/groudon.png | Bin 1368 -> 0 bytes .../pics/pokemon/followers/grovyle.png | Bin 658 -> 0 bytes .../pics/pokemon/followers/growlithe.png | Bin 652 -> 0 bytes .../pics/pokemon/followers/grumpig.png | Bin 749 -> 0 bytes .../pics/pokemon/followers/gulpin.png | Bin 562 -> 0 bytes .../pics/pokemon/followers/gyarados.png | Bin 1450 -> 0 bytes .../pics/pokemon/followers/happiny.png | Bin 545 -> 0 bytes .../pics/pokemon/followers/hariyama.png | Bin 1187 -> 0 bytes .../pics/pokemon/followers/haunter.png | Bin 617 -> 0 bytes .../pics/pokemon/followers/heatran.png | Bin 1128 -> 0 bytes .../pics/pokemon/followers/heracross.png | Bin 838 -> 0 bytes .../pics/pokemon/followers/hippopotas.png | Bin 662 -> 0 bytes .../pics/pokemon/followers/hippowdon.png | Bin 739 -> 0 bytes .../pics/pokemon/followers/hitmonchan.png | Bin 656 -> 0 bytes .../pics/pokemon/followers/hitmonlee.png | Bin 607 -> 0 bytes .../pics/pokemon/followers/hitmontop.png | Bin 591 -> 0 bytes .../pics/pokemon/followers/ho_oh.png | Bin 2252 -> 0 bytes .../pics/pokemon/followers/honchkrow.png | Bin 727 -> 0 bytes .../pics/pokemon/followers/hoothoot.png | Bin 647 -> 0 bytes .../pics/pokemon/followers/hoppip.png | Bin 595 -> 0 bytes .../pics/pokemon/followers/horsea.png | Bin 561 -> 0 bytes .../pics/pokemon/followers/houndoom.png | Bin 758 -> 0 bytes .../pics/pokemon/followers/houndour.png | Bin 597 -> 0 bytes .../pics/pokemon/followers/huntail.png | Bin 1060 -> 0 bytes .../pics/pokemon/followers/hypno.png | Bin 684 -> 0 bytes .../pics/pokemon/followers/igglybuff.png | Bin 463 -> 0 bytes .../pics/pokemon/followers/illumise.png | Bin 793 -> 0 bytes .../pics/pokemon/followers/infernape.png | Bin 1108 -> 0 bytes .../pics/pokemon/followers/ivysaur.png | Bin 657 -> 0 bytes .../pics/pokemon/followers/jigglypuff.png | Bin 483 -> 0 bytes .../pics/pokemon/followers/jirachi.png | Bin 627 -> 0 bytes .../pics/pokemon/followers/jolteon.png | Bin 740 -> 0 bytes .../pics/pokemon/followers/jumpluff.png | Bin 671 -> 0 bytes .../pics/pokemon/followers/jynx.png | Bin 880 -> 0 bytes .../pics/pokemon/followers/kabuto.png | Bin 509 -> 0 bytes .../pics/pokemon/followers/kabutops.png | Bin 833 -> 0 bytes .../pics/pokemon/followers/kadabra.png | Bin 766 -> 0 bytes .../pics/pokemon/followers/kakuna.png | Bin 474 -> 0 bytes .../pics/pokemon/followers/kangaskhan.png | Bin 841 -> 0 bytes .../pics/pokemon/followers/kecleon.png | Bin 739 -> 0 bytes .../pics/pokemon/followers/kingdra.png | Bin 859 -> 0 bytes .../pics/pokemon/followers/kingler.png | Bin 1156 -> 0 bytes .../pics/pokemon/followers/kirlia.png | Bin 548 -> 0 bytes .../pics/pokemon/followers/koffing.png | Bin 644 -> 0 bytes .../pics/pokemon/followers/krabby.png | Bin 534 -> 0 bytes .../pics/pokemon/followers/kricketot.png | Bin 566 -> 0 bytes .../pics/pokemon/followers/kricketune.png | Bin 847 -> 0 bytes .../pics/pokemon/followers/kyogre.png | Bin 1311 -> 0 bytes .../pics/pokemon/followers/lairon.png | Bin 867 -> 0 bytes .../pics/pokemon/followers/lanturn.png | Bin 947 -> 0 bytes .../pics/pokemon/followers/lapras.png | Bin 940 -> 0 bytes .../pics/pokemon/followers/larvitar.png | Bin 479 -> 0 bytes .../pics/pokemon/followers/latias.png | Bin 1161 -> 0 bytes .../pics/pokemon/followers/latios.png | Bin 1219 -> 0 bytes .../pics/pokemon/followers/leafeon.png | Bin 741 -> 0 bytes .../pics/pokemon/followers/ledian.png | Bin 1027 -> 0 bytes .../pics/pokemon/followers/ledyba.png | Bin 1025 -> 0 bytes .../pics/pokemon/followers/lickilicky.png | Bin 711 -> 0 bytes .../pics/pokemon/followers/lickitung.png | Bin 642 -> 0 bytes .../pics/pokemon/followers/lileep.png | Bin 724 -> 0 bytes .../pics/pokemon/followers/linoone.png | Bin 651 -> 0 bytes .../pics/pokemon/followers/lombre.png | Bin 679 -> 0 bytes .../pics/pokemon/followers/lopunny.png | Bin 797 -> 0 bytes .../pics/pokemon/followers/lotad.png | Bin 532 -> 0 bytes .../pics/pokemon/followers/loudred.png | Bin 831 -> 0 bytes .../pics/pokemon/followers/lucario.png | Bin 787 -> 0 bytes .../pics/pokemon/followers/ludicolo.png | Bin 909 -> 0 bytes .../pics/pokemon/followers/lugia.png | Bin 1751 -> 0 bytes .../pics/pokemon/followers/lumineon.png | Bin 763 -> 0 bytes .../pics/pokemon/followers/lunatone.png | Bin 456 -> 0 bytes .../pics/pokemon/followers/luvdisc.png | Bin 419 -> 0 bytes .../pics/pokemon/followers/luxio.png | Bin 744 -> 0 bytes .../pics/pokemon/followers/luxray.png | Bin 796 -> 0 bytes .../pics/pokemon/followers/machamp.png | Bin 967 -> 0 bytes .../pics/pokemon/followers/machoke.png | Bin 678 -> 0 bytes .../pics/pokemon/followers/machop.png | Bin 476 -> 0 bytes .../pics/pokemon/followers/magby.png | Bin 545 -> 0 bytes .../pics/pokemon/followers/magcargo.png | Bin 1206 -> 0 bytes .../pics/pokemon/followers/magikarp.png | Bin 840 -> 0 bytes .../pics/pokemon/followers/magmar.png | Bin 881 -> 0 bytes .../pics/pokemon/followers/magmortar.png | Bin 1083 -> 0 bytes .../pics/pokemon/followers/magnemite.png | Bin 482 -> 0 bytes .../pics/pokemon/followers/magneton.png | Bin 841 -> 0 bytes .../pics/pokemon/followers/magnezone.png | Bin 756 -> 0 bytes .../pics/pokemon/followers/makuhita.png | Bin 627 -> 0 bytes .../pics/pokemon/followers/mamoswine.png | Bin 880 -> 0 bytes .../pics/pokemon/followers/manaphy.png | Bin 553 -> 0 bytes .../pics/pokemon/followers/manectric.png | Bin 798 -> 0 bytes .../pics/pokemon/followers/mankey.png | Bin 631 -> 0 bytes .../pics/pokemon/followers/mantine.png | Bin 1002 -> 0 bytes .../pics/pokemon/followers/mantyke.png | Bin 644 -> 0 bytes .../pics/pokemon/followers/mareep.png | Bin 722 -> 0 bytes .../pics/pokemon/followers/marill.png | Bin 574 -> 0 bytes .../pics/pokemon/followers/marowak.png | Bin 855 -> 0 bytes .../pics/pokemon/followers/marshtomp.png | Bin 552 -> 0 bytes .../pics/pokemon/followers/masquerain.png | Bin 968 -> 0 bytes .../pics/pokemon/followers/mawile.png | Bin 757 -> 0 bytes .../pics/pokemon/followers/medicham.png | Bin 673 -> 0 bytes .../pics/pokemon/followers/meditite.png | Bin 556 -> 0 bytes .../pics/pokemon/followers/meganium.png | Bin 843 -> 0 bytes .../pics/pokemon/followers/meowth.png | Bin 685 -> 0 bytes .../pics/pokemon/followers/mesprit.png | Bin 803 -> 0 bytes .../pics/pokemon/followers/metagross.png | Bin 969 -> 0 bytes .../pics/pokemon/followers/metang.png | Bin 979 -> 0 bytes .../pics/pokemon/followers/metapod.png | Bin 454 -> 0 bytes .../pics/pokemon/followers/mew.png | Bin 618 -> 0 bytes .../pics/pokemon/followers/mewtwo.png | Bin 928 -> 0 bytes .../pics/pokemon/followers/mightyena.png | Bin 803 -> 0 bytes .../pics/pokemon/followers/milotic.png | Bin 1050 -> 0 bytes .../pics/pokemon/followers/miltank.png | Bin 799 -> 0 bytes .../pics/pokemon/followers/mime_jr.png | Bin 524 -> 0 bytes .../pics/pokemon/followers/minun.png | Bin 483 -> 0 bytes .../pics/pokemon/followers/misdreavus.png | Bin 891 -> 0 bytes .../pics/pokemon/followers/mismagius.png | Bin 929 -> 0 bytes .../pics/pokemon/followers/moltres.png | Bin 1158 -> 0 bytes .../pics/pokemon/followers/monferno.png | Bin 809 -> 0 bytes .../pics/pokemon/followers/mothim.png | Bin 999 -> 0 bytes .../pics/pokemon/followers/mr_mime.png | Bin 743 -> 0 bytes .../pics/pokemon/followers/mudkip.png | Bin 461 -> 0 bytes .../pics/pokemon/followers/muk.png | Bin 728 -> 0 bytes .../pics/pokemon/followers/munchlax.png | Bin 589 -> 0 bytes .../pics/pokemon/followers/murkrow.png | Bin 509 -> 0 bytes .../pics/pokemon/followers/natu.png | Bin 472 -> 0 bytes .../pics/pokemon/followers/nidoking.png | Bin 799 -> 0 bytes .../pics/pokemon/followers/nidoqueen.png | Bin 830 -> 0 bytes .../pics/pokemon/followers/nidoran_f.png | Bin 496 -> 0 bytes .../pics/pokemon/followers/nidoran_m.png | Bin 525 -> 0 bytes .../pics/pokemon/followers/nidorina.png | Bin 666 -> 0 bytes .../pics/pokemon/followers/nidorino.png | Bin 692 -> 0 bytes .../pics/pokemon/followers/nincada.png | Bin 681 -> 0 bytes .../pics/pokemon/followers/ninetales.png | Bin 810 -> 0 bytes .../pics/pokemon/followers/ninjask.png | Bin 751 -> 0 bytes .../pics/pokemon/followers/noctowl.png | Bin 1114 -> 0 bytes .../pics/pokemon/followers/nosepass.png | Bin 705 -> 0 bytes .../pics/pokemon/followers/numel.png | Bin 848 -> 0 bytes .../pics/pokemon/followers/nuzleaf.png | Bin 624 -> 0 bytes .../pics/pokemon/followers/octillery.png | Bin 691 -> 0 bytes .../pics/pokemon/followers/oddish.png | Bin 408 -> 0 bytes .../pics/pokemon/followers/omanyte.png | Bin 603 -> 0 bytes .../pics/pokemon/followers/omastar.png | Bin 837 -> 0 bytes .../pics/pokemon/followers/onix.png | Bin 1023 -> 0 bytes .../pics/pokemon/followers/pachirisu.png | Bin 532 -> 0 bytes .../pics/pokemon/followers/palkia.png | Bin 2116 -> 0 bytes .../pics/pokemon/followers/paras.png | Bin 625 -> 0 bytes .../pics/pokemon/followers/parasect.png | Bin 782 -> 0 bytes .../pics/pokemon/followers/pelipper.png | Bin 1014 -> 0 bytes .../pics/pokemon/followers/persian.png | Bin 717 -> 0 bytes .../pics/pokemon/followers/phanpy.png | Bin 457 -> 0 bytes .../pics/pokemon/followers/phione.png | Bin 569 -> 0 bytes .../pics/pokemon/followers/pichu.png | Bin 465 -> 0 bytes .../pics/pokemon/followers/pidgeot.png | Bin 1177 -> 0 bytes .../pics/pokemon/followers/pidgeotto.png | Bin 912 -> 0 bytes .../pics/pokemon/followers/pidgey.png | Bin 444 -> 0 bytes .../pics/pokemon/followers/pikachu.png | Bin 550 -> 0 bytes .../pics/pokemon/followers/piloswine.png | Bin 640 -> 0 bytes .../pics/pokemon/followers/pineco.png | Bin 420 -> 0 bytes .../pics/pokemon/followers/pinsir.png | Bin 788 -> 0 bytes .../pics/pokemon/followers/piplup.png | Bin 477 -> 0 bytes .../pics/pokemon/followers/plusle.png | Bin 485 -> 0 bytes .../pics/pokemon/followers/politoed.png | Bin 751 -> 0 bytes .../pics/pokemon/followers/poliwag.png | Bin 526 -> 0 bytes .../pics/pokemon/followers/poliwhirl.png | Bin 569 -> 0 bytes .../pics/pokemon/followers/poliwrath.png | Bin 741 -> 0 bytes .../pics/pokemon/followers/ponyta.png | Bin 679 -> 0 bytes .../pics/pokemon/followers/poochyena.png | Bin 551 -> 0 bytes .../pics/pokemon/followers/porygon.png | Bin 612 -> 0 bytes .../pics/pokemon/followers/porygon2.png | Bin 592 -> 0 bytes .../pics/pokemon/followers/porygonz.png | Bin 647 -> 0 bytes .../pics/pokemon/followers/primeape.png | Bin 806 -> 0 bytes .../pics/pokemon/followers/prinplup.png | Bin 681 -> 0 bytes .../pics/pokemon/followers/probopass.png | Bin 1012 -> 0 bytes .../pics/pokemon/followers/psyduck.png | Bin 516 -> 0 bytes .../pics/pokemon/followers/pupitar.png | Bin 623 -> 0 bytes .../pics/pokemon/followers/purugly.png | Bin 765 -> 0 bytes .../pics/pokemon/followers/quagsire.png | Bin 625 -> 0 bytes .../pics/pokemon/followers/quilava.png | Bin 1062 -> 0 bytes .../pics/pokemon/followers/qwilfish.png | Bin 633 -> 0 bytes .../pics/pokemon/followers/raichu.png | Bin 805 -> 0 bytes .../pics/pokemon/followers/raikou.png | Bin 1010 -> 0 bytes .../pics/pokemon/followers/ralts.png | Bin 476 -> 0 bytes .../pics/pokemon/followers/rampardos.png | Bin 904 -> 0 bytes .../pics/pokemon/followers/rapidash.png | Bin 917 -> 0 bytes .../pics/pokemon/followers/raticate.png | Bin 589 -> 0 bytes .../pics/pokemon/followers/rattata.png | Bin 552 -> 0 bytes .../pics/pokemon/followers/rayquaza.png | Bin 1648 -> 0 bytes .../pics/pokemon/followers/regice.png | Bin 850 -> 0 bytes .../pics/pokemon/followers/regigigas.png | Bin 1836 -> 0 bytes .../pics/pokemon/followers/regirock.png | Bin 1074 -> 0 bytes .../pics/pokemon/followers/registeel.png | Bin 845 -> 0 bytes .../pics/pokemon/followers/relicanth.png | Bin 864 -> 0 bytes .../pics/pokemon/followers/remoraid.png | Bin 599 -> 0 bytes .../pics/pokemon/followers/rhydon.png | Bin 790 -> 0 bytes .../pics/pokemon/followers/rhyhorn.png | Bin 628 -> 0 bytes .../pics/pokemon/followers/rhyperior.png | Bin 994 -> 0 bytes .../pics/pokemon/followers/riolu.png | Bin 618 -> 0 bytes .../pics/pokemon/followers/roselia.png | Bin 623 -> 0 bytes .../pics/pokemon/followers/roserade.png | Bin 956 -> 0 bytes .../pics/pokemon/followers/rotom_base.png | Bin 545 -> 0 bytes .../pics/pokemon/followers/rotom_fan.png | Bin 695 -> 0 bytes .../pics/pokemon/followers/rotom_frost.png | Bin 619 -> 0 bytes .../pics/pokemon/followers/rotom_heat.png | Bin 563 -> 0 bytes .../pics/pokemon/followers/rotom_mow.png | Bin 754 -> 0 bytes .../pics/pokemon/followers/rotom_wash.png | Bin 845 -> 0 bytes .../pics/pokemon/followers/sableye.png | Bin 554 -> 0 bytes .../pics/pokemon/followers/salamence.png | Bin 1027 -> 0 bytes .../pics/pokemon/followers/sandshrew.png | Bin 521 -> 0 bytes .../pics/pokemon/followers/sandslash.png | Bin 729 -> 0 bytes .../pics/pokemon/followers/sceptile.png | Bin 907 -> 0 bytes .../pics/pokemon/followers/scizor.png | Bin 912 -> 0 bytes .../pics/pokemon/followers/scyther.png | Bin 827 -> 0 bytes .../pics/pokemon/followers/seadra.png | Bin 813 -> 0 bytes .../pics/pokemon/followers/seaking.png | Bin 1038 -> 0 bytes .../pics/pokemon/followers/sealeo.png | Bin 820 -> 0 bytes .../pics/pokemon/followers/seedot.png | Bin 442 -> 0 bytes .../pics/pokemon/followers/seel.png | Bin 669 -> 0 bytes .../pics/pokemon/followers/sentret.png | Bin 608 -> 0 bytes .../pics/pokemon/followers/seviper.png | Bin 957 -> 0 bytes .../pics/pokemon/followers/sharpedo.png | Bin 746 -> 0 bytes .../pics/pokemon/followers/shaymin_land.png | Bin 485 -> 0 bytes .../pics/pokemon/followers/shaymin_sky.png | Bin 1030 -> 0 bytes .../pics/pokemon/followers/shedinja.png | Bin 693 -> 0 bytes .../pics/pokemon/followers/shelgon.png | Bin 596 -> 0 bytes .../pics/pokemon/followers/shellder.png | Bin 577 -> 0 bytes .../pics/pokemon/followers/shellos_east.png | Bin 603 -> 0 bytes .../pics/pokemon/followers/shellos_west.png | Bin 583 -> 0 bytes .../pics/pokemon/followers/shieldon.png | Bin 566 -> 0 bytes .../pics/pokemon/followers/shiftry.png | Bin 912 -> 0 bytes .../pics/pokemon/followers/shinx.png | Bin 567 -> 0 bytes .../pics/pokemon/followers/shroomish.png | Bin 453 -> 0 bytes .../pics/pokemon/followers/shuckle.png | Bin 594 -> 0 bytes .../pics/pokemon/followers/shuppet.png | Bin 512 -> 0 bytes .../pics/pokemon/followers/silcoon.png | Bin 416 -> 0 bytes .../pics/pokemon/followers/skarmory.png | Bin 1071 -> 0 bytes .../pics/pokemon/followers/skiploom.png | Bin 581 -> 0 bytes .../pics/pokemon/followers/skitty.png | Bin 531 -> 0 bytes .../pics/pokemon/followers/skorupi.png | Bin 686 -> 0 bytes .../pics/pokemon/followers/skuntank.png | Bin 752 -> 0 bytes .../pics/pokemon/followers/slaking.png | Bin 1015 -> 0 bytes .../pics/pokemon/followers/slakoth.png | Bin 652 -> 0 bytes .../pics/pokemon/followers/slowbro.png | Bin 808 -> 0 bytes .../pics/pokemon/followers/slowking.png | Bin 817 -> 0 bytes .../pics/pokemon/followers/slowpoke.png | Bin 634 -> 0 bytes .../pics/pokemon/followers/slugma.png | Bin 659 -> 0 bytes .../pics/pokemon/followers/smeargle.png | Bin 694 -> 0 bytes .../pics/pokemon/followers/smoochum.png | Bin 541 -> 0 bytes .../pics/pokemon/followers/sneasel.png | Bin 741 -> 0 bytes .../pics/pokemon/followers/snorlax.png | Bin 892 -> 0 bytes .../pics/pokemon/followers/snorunt.png | Bin 481 -> 0 bytes .../pics/pokemon/followers/snover.png | Bin 750 -> 0 bytes .../pics/pokemon/followers/snubbull.png | Bin 701 -> 0 bytes .../pics/pokemon/followers/solrock.png | Bin 509 -> 0 bytes .../pics/pokemon/followers/spearow.png | Bin 471 -> 0 bytes .../pics/pokemon/followers/spheal.png | Bin 582 -> 0 bytes .../pics/pokemon/followers/spinarak.png | Bin 667 -> 0 bytes .../pics/pokemon/followers/spinda.png | Bin 648 -> 0 bytes .../pics/pokemon/followers/spiritomb.png | Bin 804 -> 0 bytes .../pics/pokemon/followers/spoink.png | Bin 500 -> 0 bytes .../pics/pokemon/followers/squirtle.png | Bin 439 -> 0 bytes .../pics/pokemon/followers/stantler.png | Bin 745 -> 0 bytes .../pics/pokemon/followers/staraptor.png | Bin 1180 -> 0 bytes .../pics/pokemon/followers/staravia.png | Bin 985 -> 0 bytes .../pics/pokemon/followers/starly.png | Bin 479 -> 0 bytes .../pics/pokemon/followers/starmie.png | Bin 703 -> 0 bytes .../pics/pokemon/followers/staryu.png | Bin 504 -> 0 bytes .../pics/pokemon/followers/steelix.png | Bin 1628 -> 0 bytes .../pics/pokemon/followers/stunky.png | Bin 597 -> 0 bytes .../pics/pokemon/followers/sudowoodo.png | Bin 672 -> 0 bytes .../pics/pokemon/followers/suicune.png | Bin 1091 -> 0 bytes .../pics/pokemon/followers/sunflora.png | Bin 605 -> 0 bytes .../pics/pokemon/followers/sunkern.png | Bin 445 -> 0 bytes .../pics/pokemon/followers/surskit.png | Bin 466 -> 0 bytes .../pics/pokemon/followers/swablu.png | Bin 723 -> 0 bytes .../pics/pokemon/followers/swalot.png | Bin 821 -> 0 bytes .../pics/pokemon/followers/swampert.png | Bin 894 -> 0 bytes .../pics/pokemon/followers/swellow.png | Bin 1050 -> 0 bytes .../pics/pokemon/followers/swinub.png | Bin 497 -> 0 bytes .../pics/pokemon/followers/taillow.png | Bin 465 -> 0 bytes .../pics/pokemon/followers/tangela.png | Bin 656 -> 0 bytes .../pics/pokemon/followers/tangrowth.png | Bin 1042 -> 0 bytes .../pics/pokemon/followers/tauros.png | Bin 909 -> 0 bytes .../pics/pokemon/followers/teddiursa.png | Bin 692 -> 0 bytes .../pics/pokemon/followers/tentacool.png | Bin 636 -> 0 bytes .../pics/pokemon/followers/tentacruel.png | Bin 749 -> 0 bytes .../pics/pokemon/followers/togekiss.png | Bin 733 -> 0 bytes .../pics/pokemon/followers/togepi.png | Bin 553 -> 0 bytes .../pics/pokemon/followers/togetic.png | Bin 747 -> 0 bytes .../pics/pokemon/followers/torchic.png | Bin 460 -> 0 bytes .../pics/pokemon/followers/torkoal.png | Bin 731 -> 0 bytes .../pics/pokemon/followers/torterra.png | Bin 1245 -> 0 bytes .../pics/pokemon/followers/totodile.png | Bin 574 -> 0 bytes .../pics/pokemon/followers/toxicroak.png | Bin 665 -> 0 bytes .../pics/pokemon/followers/trapinch.png | Bin 461 -> 0 bytes .../pics/pokemon/followers/treecko.png | Bin 452 -> 0 bytes .../pics/pokemon/followers/tropius.png | Bin 1065 -> 0 bytes .../pics/pokemon/followers/turtwig.png | Bin 534 -> 0 bytes .../pics/pokemon/followers/typhlosion.png | Bin 1101 -> 0 bytes .../pics/pokemon/followers/tyranitar.png | Bin 940 -> 0 bytes .../pics/pokemon/followers/tyrogue.png | Bin 515 -> 0 bytes .../pics/pokemon/followers/umbreon.png | Bin 739 -> 0 bytes .../pics/pokemon/followers/unown!.png | Bin 279 -> 0 bytes .../pics/pokemon/followers/unowna.png | Bin 316 -> 0 bytes .../pics/pokemon/followers/unownb.png | Bin 344 -> 0 bytes .../pics/pokemon/followers/unownc.png | Bin 393 -> 0 bytes .../pics/pokemon/followers/unownd.png | Bin 354 -> 0 bytes .../pics/pokemon/followers/unowne.png | Bin 343 -> 0 bytes .../pics/pokemon/followers/unownf.png | Bin 375 -> 0 bytes .../pics/pokemon/followers/unowng.png | Bin 354 -> 0 bytes .../pics/pokemon/followers/unownh.png | Bin 352 -> 0 bytes .../pics/pokemon/followers/unowni.png | Bin 310 -> 0 bytes .../pics/pokemon/followers/unownj.png | Bin 323 -> 0 bytes .../pics/pokemon/followers/unownk.png | Bin 332 -> 0 bytes .../pics/pokemon/followers/unownl.png | Bin 326 -> 0 bytes .../pics/pokemon/followers/unownm.png | Bin 341 -> 0 bytes .../pics/pokemon/followers/unownn.png | Bin 352 -> 0 bytes .../pics/pokemon/followers/unowno.png | Bin 345 -> 0 bytes .../pics/pokemon/followers/unownp.png | Bin 312 -> 0 bytes .../pics/pokemon/followers/unownq.png | Bin 354 -> 0 bytes .../pics/pokemon/followers/unownquestion.png | Bin 324 -> 0 bytes .../pics/pokemon/followers/unownr.png | Bin 317 -> 0 bytes .../pics/pokemon/followers/unowns.png | Bin 378 -> 0 bytes .../pics/pokemon/followers/unownt.png | Bin 287 -> 0 bytes .../pics/pokemon/followers/unownu.png | Bin 321 -> 0 bytes .../pics/pokemon/followers/unownv.png | Bin 307 -> 0 bytes .../pics/pokemon/followers/unownw.png | Bin 315 -> 0 bytes .../pics/pokemon/followers/unownx.png | Bin 316 -> 0 bytes .../pics/pokemon/followers/unowny.png | Bin 322 -> 0 bytes .../pics/pokemon/followers/unownz.png | Bin 361 -> 0 bytes .../pics/pokemon/followers/ursaring.png | Bin 844 -> 0 bytes .../pics/pokemon/followers/uxie.png | Bin 770 -> 0 bytes .../pics/pokemon/followers/vaporeon.png | Bin 870 -> 0 bytes .../pics/pokemon/followers/venomoth.png | Bin 1087 -> 0 bytes .../pics/pokemon/followers/venonat.png | Bin 589 -> 0 bytes .../pics/pokemon/followers/venusaur.png | Bin 898 -> 0 bytes .../pics/pokemon/followers/vespiquen.png | Bin 883 -> 0 bytes .../pics/pokemon/followers/vibrava.png | Bin 916 -> 0 bytes .../pics/pokemon/followers/victreebel.png | Bin 967 -> 0 bytes .../pics/pokemon/followers/vigoroth.png | Bin 759 -> 0 bytes .../pics/pokemon/followers/vileplume.png | Bin 665 -> 0 bytes .../pics/pokemon/followers/volbeat.png | Bin 932 -> 0 bytes .../pics/pokemon/followers/voltorb.png | Bin 349 -> 0 bytes .../pics/pokemon/followers/vulpix.png | Bin 627 -> 0 bytes .../pics/pokemon/followers/wailmer.png | Bin 718 -> 0 bytes .../pics/pokemon/followers/wailord.png | Bin 1151 -> 0 bytes .../pics/pokemon/followers/walrein.png | Bin 1049 -> 0 bytes .../pics/pokemon/followers/wartortle.png | Bin 698 -> 0 bytes .../pics/pokemon/followers/weavile.png | Bin 663 -> 0 bytes .../pics/pokemon/followers/weedle.png | Bin 547 -> 0 bytes .../pics/pokemon/followers/weepinbell.png | Bin 698 -> 0 bytes .../pics/pokemon/followers/weezing.png | Bin 1158 -> 0 bytes .../pics/pokemon/followers/whiscash.png | Bin 787 -> 0 bytes .../pics/pokemon/followers/whismur.png | Bin 501 -> 0 bytes .../pics/pokemon/followers/wigglytuff.png | Bin 602 -> 0 bytes .../pics/pokemon/followers/wingull.png | Bin 652 -> 0 bytes .../pics/pokemon/followers/wobbuffet.png | Bin 551 -> 0 bytes .../pics/pokemon/followers/wooper.png | Bin 444 -> 0 bytes .../pics/pokemon/followers/wormadam.png | Bin 703 -> 0 bytes .../pics/pokemon/followers/wormadam_sand.png | Bin 705 -> 0 bytes .../pics/pokemon/followers/wormadam_trash.png | Bin 731 -> 0 bytes .../pics/pokemon/followers/wurmple.png | Bin 642 -> 0 bytes .../pics/pokemon/followers/wynaut.png | Bin 564 -> 0 bytes .../pics/pokemon/followers/xatu.png | Bin 740 -> 0 bytes .../pics/pokemon/followers/yanma.png | Bin 1038 -> 0 bytes .../pics/pokemon/followers/yanmega.png | Bin 1089 -> 0 bytes .../pics/pokemon/followers/zangoose.png | Bin 912 -> 0 bytes .../pics/pokemon/followers/zapdos.png | Bin 1073 -> 0 bytes .../pics/pokemon/followers/zigzagoon.png | Bin 769 -> 0 bytes .../pics/pokemon/followers/zubat.png | Bin 642 -> 0 bytes graphics/pokemon_storage/close_box_button.bin | 0 graphics/pokemon_storage/party_slot_empty.bin | 0 .../pokemon_storage/party_slot_filled.bin | 0 graphics/pokemon_storage/pkmn_data.bin | 0 include/constants/event_object_movement.h | 11 +- include/constants/event_objects.h | 813 +-- include/constants/field_effects.h | 6 - include/constants/follow_me.h | 19 - include/constants/global.h | 3 - include/event_data.h | 2 +- include/event_object_movement.h | 24 +- include/field_player_avatar.h | 14 +- include/field_screen_effect.h | 2 - include/field_specials.h | 1 - include/fldeff.h | 2 +- include/follow_me.h | 58 - include/global.fieldmap.h | 5 +- include/global.h | 26 - include/overworld.h | 4 - include/script.h | 3 - ld_script.txt | 9 +- spritesheet_rules.mk | 1621 ------ src/battle_main.c | 6 - src/battle_pike.c | 2 +- src/battle_setup.c | 4 - src/bike.c | 4 - src/cable_car.c | 4 +- .../field_effect_object_template_pointers.h | 6 - src/data/field_effects/field_effect_objects.h | 47 - .../movement_action_func_tables.h | 24 - .../object_events/movement_type_func_tables.h | 7 - src/data/object_events/object_event_anims.h | 555 -- .../object_events/object_event_graphics.h | 1113 ---- .../object_event_graphics_info.h | 582 -- .../object_event_graphics_info_pointers.h | 1097 ---- .../object_events/object_event_pic_tables.h | 4959 ----------------- src/event_data.c | 2 +- src/event_object_movement.c | 2067 +------ src/field_control_avatar.c | 15 - src/field_effect.c | 34 - src/field_effect_helpers.c | 57 +- src/field_player_avatar.c | 27 +- src/field_screen_effect.c | 69 +- src/field_specials.c | 25 +- src/fldeff_rocksmash.c | 3 +- src/follow_me.c | 1477 ----- src/new_game.c | 1 - src/overworld.c | 1098 +--- src/pokemon_storage_system.c | 2 - src/scrcmd.c | 78 +- src/script.c | 7 - 1174 files changed, 185 insertions(+), 26455 deletions(-) mode change 100644 => 100755 data/mb_berry_fix.gba delete mode 100644 graphics/field_effects/pics/bug_tracks.png delete mode 100644 graphics/field_effects/pics/expanding_sparkle.png delete mode 100644 graphics/field_effects/pics/slither_tracks.png delete mode 100644 graphics/field_effects/pics/spot_tracks.png delete mode 100644 graphics/object_events/palettes/cherish_ball.pal delete mode 100644 graphics/object_events/palettes/dive_ball.pal delete mode 100644 graphics/object_events/palettes/dream_ball.pal delete mode 100644 graphics/object_events/palettes/dusk_ball.pal delete mode 100644 graphics/object_events/palettes/fast_ball.pal delete mode 100644 graphics/object_events/palettes/followers/abomasnow.pal delete mode 100644 graphics/object_events/palettes/followers/abra.pal delete mode 100644 graphics/object_events/palettes/followers/absol.pal delete mode 100644 graphics/object_events/palettes/followers/aerodactyl.pal delete mode 100644 graphics/object_events/palettes/followers/aggron.pal delete mode 100644 graphics/object_events/palettes/followers/aipom.pal delete mode 100644 graphics/object_events/palettes/followers/alakazam.pal delete mode 100644 graphics/object_events/palettes/followers/altaria.pal delete mode 100644 graphics/object_events/palettes/followers/ambipom.pal delete mode 100644 graphics/object_events/palettes/followers/ampharos.pal delete mode 100644 graphics/object_events/palettes/followers/anorith.pal delete mode 100644 graphics/object_events/palettes/followers/arbok.pal delete mode 100644 graphics/object_events/palettes/followers/arcanine.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_bug.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_dark.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_dragon.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_electric.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_fighting.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_fire.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_flying.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ghost.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_grass.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ground.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ice.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_normal.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_poison.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_psychic.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_rock.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_steel.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_water.pal delete mode 100644 graphics/object_events/palettes/followers/ariados.pal delete mode 100644 graphics/object_events/palettes/followers/armaldo.pal delete mode 100644 graphics/object_events/palettes/followers/aron.pal delete mode 100644 graphics/object_events/palettes/followers/articuno.pal delete mode 100644 graphics/object_events/palettes/followers/azelf.pal delete mode 100644 graphics/object_events/palettes/followers/azumarill.pal delete mode 100644 graphics/object_events/palettes/followers/azurill.pal delete mode 100644 graphics/object_events/palettes/followers/bagon.pal delete mode 100644 graphics/object_events/palettes/followers/baltoy.pal delete mode 100644 graphics/object_events/palettes/followers/banette.pal delete mode 100644 graphics/object_events/palettes/followers/barboach.pal delete mode 100644 graphics/object_events/palettes/followers/bastiodon.pal delete mode 100644 graphics/object_events/palettes/followers/bayleef.pal delete mode 100644 graphics/object_events/palettes/followers/beautifly.pal delete mode 100644 graphics/object_events/palettes/followers/beedrill.pal delete mode 100644 graphics/object_events/palettes/followers/beldum.pal delete mode 100644 graphics/object_events/palettes/followers/bellossom.pal delete mode 100644 graphics/object_events/palettes/followers/bellsprout.pal delete mode 100644 graphics/object_events/palettes/followers/bibarel.pal delete mode 100644 graphics/object_events/palettes/followers/bidoof.pal delete mode 100644 graphics/object_events/palettes/followers/blastoise.pal delete mode 100644 graphics/object_events/palettes/followers/blaziken.pal delete mode 100644 graphics/object_events/palettes/followers/blissey.pal delete mode 100644 graphics/object_events/palettes/followers/bonsly.pal delete mode 100644 graphics/object_events/palettes/followers/breloom.pal delete mode 100644 graphics/object_events/palettes/followers/bronzong.pal delete mode 100644 graphics/object_events/palettes/followers/bronzor.pal delete mode 100644 graphics/object_events/palettes/followers/budew.pal delete mode 100644 graphics/object_events/palettes/followers/buizel.pal delete mode 100644 graphics/object_events/palettes/followers/bulbasaur1.pal delete mode 100644 graphics/object_events/palettes/followers/buneary.pal delete mode 100644 graphics/object_events/palettes/followers/burmy.pal delete mode 100644 graphics/object_events/palettes/followers/burmy_sand.pal delete mode 100644 graphics/object_events/palettes/followers/burmy_trash.pal delete mode 100644 graphics/object_events/palettes/followers/butterfree.pal delete mode 100644 graphics/object_events/palettes/followers/cacnea.pal delete mode 100644 graphics/object_events/palettes/followers/cacturne.pal delete mode 100644 graphics/object_events/palettes/followers/camerupt.pal delete mode 100644 graphics/object_events/palettes/followers/carnivine.pal delete mode 100644 graphics/object_events/palettes/followers/carvanha.pal delete mode 100644 graphics/object_events/palettes/followers/cascoon.pal delete mode 100644 graphics/object_events/palettes/followers/castform.pal delete mode 100644 graphics/object_events/palettes/followers/caterpie.pal delete mode 100644 graphics/object_events/palettes/followers/celebi.pal delete mode 100644 graphics/object_events/palettes/followers/chansey.pal delete mode 100644 graphics/object_events/palettes/followers/charizard.pal delete mode 100644 graphics/object_events/palettes/followers/charmander.pal delete mode 100644 graphics/object_events/palettes/followers/charmeleon.pal delete mode 100644 graphics/object_events/palettes/followers/chatot.pal delete mode 100644 graphics/object_events/palettes/followers/cherrim.pal delete mode 100644 graphics/object_events/palettes/followers/cherubi.pal delete mode 100644 graphics/object_events/palettes/followers/chikorita.pal delete mode 100644 graphics/object_events/palettes/followers/chimchar.pal delete mode 100644 graphics/object_events/palettes/followers/chimecho.pal delete mode 100644 graphics/object_events/palettes/followers/chinchou.pal delete mode 100644 graphics/object_events/palettes/followers/chingling.pal delete mode 100644 graphics/object_events/palettes/followers/clamperl.pal delete mode 100644 graphics/object_events/palettes/followers/claydol.pal delete mode 100644 graphics/object_events/palettes/followers/clefable.pal delete mode 100644 graphics/object_events/palettes/followers/clefairy.pal delete mode 100644 graphics/object_events/palettes/followers/cleffa.pal delete mode 100644 graphics/object_events/palettes/followers/cloyster.pal delete mode 100644 graphics/object_events/palettes/followers/combee.pal delete mode 100644 graphics/object_events/palettes/followers/combusken.pal delete mode 100644 graphics/object_events/palettes/followers/corphish.pal delete mode 100644 graphics/object_events/palettes/followers/corsola.pal delete mode 100644 graphics/object_events/palettes/followers/cradily.pal delete mode 100644 graphics/object_events/palettes/followers/cranidos.pal delete mode 100644 graphics/object_events/palettes/followers/crawdaunt.pal delete mode 100644 graphics/object_events/palettes/followers/cresselia.pal delete mode 100644 graphics/object_events/palettes/followers/croagunk.pal delete mode 100644 graphics/object_events/palettes/followers/crobat.pal delete mode 100644 graphics/object_events/palettes/followers/croconaw.pal delete mode 100644 graphics/object_events/palettes/followers/cubone.pal delete mode 100644 graphics/object_events/palettes/followers/cyndaquil.pal delete mode 100644 graphics/object_events/palettes/followers/darkrai.pal delete mode 100644 graphics/object_events/palettes/followers/delcatty.pal delete mode 100644 graphics/object_events/palettes/followers/delibird.pal delete mode 100644 graphics/object_events/palettes/followers/deoxys.pal delete mode 100644 graphics/object_events/palettes/followers/dewgong.pal delete mode 100644 graphics/object_events/palettes/followers/dialga.pal delete mode 100644 graphics/object_events/palettes/followers/diglett.pal delete mode 100644 graphics/object_events/palettes/followers/ditto.pal delete mode 100644 graphics/object_events/palettes/followers/dodrio.pal delete mode 100644 graphics/object_events/palettes/followers/doduo.pal delete mode 100644 graphics/object_events/palettes/followers/donphan.pal delete mode 100644 graphics/object_events/palettes/followers/dragonair.pal delete mode 100644 graphics/object_events/palettes/followers/dragonite.pal delete mode 100644 graphics/object_events/palettes/followers/drapion.pal delete mode 100644 graphics/object_events/palettes/followers/dratini.pal delete mode 100644 graphics/object_events/palettes/followers/drifblim.pal delete mode 100644 graphics/object_events/palettes/followers/drifloon.pal delete mode 100644 graphics/object_events/palettes/followers/drowzee.pal delete mode 100644 graphics/object_events/palettes/followers/dugtrio.pal delete mode 100644 graphics/object_events/palettes/followers/dunsparce.pal delete mode 100644 graphics/object_events/palettes/followers/dusclops.pal delete mode 100644 graphics/object_events/palettes/followers/dusknoir.pal delete mode 100644 graphics/object_events/palettes/followers/duskull.pal delete mode 100644 graphics/object_events/palettes/followers/dustox.pal delete mode 100644 graphics/object_events/palettes/followers/eevee.pal delete mode 100644 graphics/object_events/palettes/followers/ekans.pal delete mode 100644 graphics/object_events/palettes/followers/electabuzz.pal delete mode 100644 graphics/object_events/palettes/followers/electivire.pal delete mode 100644 graphics/object_events/palettes/followers/electrike.pal delete mode 100644 graphics/object_events/palettes/followers/electrode.pal delete mode 100644 graphics/object_events/palettes/followers/elekid.pal delete mode 100644 graphics/object_events/palettes/followers/empoleon.pal delete mode 100644 graphics/object_events/palettes/followers/entei.pal delete mode 100644 graphics/object_events/palettes/followers/espeon.pal delete mode 100644 graphics/object_events/palettes/followers/exeggcute.pal delete mode 100644 graphics/object_events/palettes/followers/exeggutor.pal delete mode 100644 graphics/object_events/palettes/followers/exploud.pal delete mode 100644 graphics/object_events/palettes/followers/farfetchd.pal delete mode 100644 graphics/object_events/palettes/followers/fearow.pal delete mode 100644 graphics/object_events/palettes/followers/feebas.pal delete mode 100644 graphics/object_events/palettes/followers/feraligatr.pal delete mode 100644 graphics/object_events/palettes/followers/finneon.pal delete mode 100644 graphics/object_events/palettes/followers/flaaffy.pal delete mode 100644 graphics/object_events/palettes/followers/flareon.pal delete mode 100644 graphics/object_events/palettes/followers/floatzel.pal delete mode 100644 graphics/object_events/palettes/followers/flygon.pal delete mode 100644 graphics/object_events/palettes/followers/forretress.pal delete mode 100644 graphics/object_events/palettes/followers/froslass.pal delete mode 100644 graphics/object_events/palettes/followers/furret.pal delete mode 100644 graphics/object_events/palettes/followers/gabite.pal delete mode 100644 graphics/object_events/palettes/followers/gallade.pal delete mode 100644 graphics/object_events/palettes/followers/garchomp.pal delete mode 100644 graphics/object_events/palettes/followers/gardevoir.pal delete mode 100644 graphics/object_events/palettes/followers/gastly.pal delete mode 100644 graphics/object_events/palettes/followers/gastrodon_east.pal delete mode 100644 graphics/object_events/palettes/followers/gastrodon_west.pal delete mode 100644 graphics/object_events/palettes/followers/gengar.pal delete mode 100644 graphics/object_events/palettes/followers/geodude.pal delete mode 100644 graphics/object_events/palettes/followers/gible.pal delete mode 100644 graphics/object_events/palettes/followers/girafarig.pal delete mode 100644 graphics/object_events/palettes/followers/giratina_normal.pal delete mode 100644 graphics/object_events/palettes/followers/giratina_origin.pal delete mode 100644 graphics/object_events/palettes/followers/glaceon.pal delete mode 100644 graphics/object_events/palettes/followers/glalie.pal delete mode 100644 graphics/object_events/palettes/followers/glameow.pal delete mode 100644 graphics/object_events/palettes/followers/gligar.pal delete mode 100644 graphics/object_events/palettes/followers/gliscor.pal delete mode 100644 graphics/object_events/palettes/followers/gloom.pal delete mode 100644 graphics/object_events/palettes/followers/golbat.pal delete mode 100644 graphics/object_events/palettes/followers/goldeen.pal delete mode 100644 graphics/object_events/palettes/followers/golduck.pal delete mode 100644 graphics/object_events/palettes/followers/golem.pal delete mode 100644 graphics/object_events/palettes/followers/gorebyss.pal delete mode 100644 graphics/object_events/palettes/followers/granbull.pal delete mode 100644 graphics/object_events/palettes/followers/graveler.pal delete mode 100644 graphics/object_events/palettes/followers/grimer.pal delete mode 100644 graphics/object_events/palettes/followers/grotle.pal delete mode 100644 graphics/object_events/palettes/followers/groudon.pal delete mode 100644 graphics/object_events/palettes/followers/grovyle.pal delete mode 100644 graphics/object_events/palettes/followers/growlithe.pal delete mode 100644 graphics/object_events/palettes/followers/grumpig.pal delete mode 100644 graphics/object_events/palettes/followers/gulpin.pal delete mode 100644 graphics/object_events/palettes/followers/gyarados.pal delete mode 100644 graphics/object_events/palettes/followers/happiny.pal delete mode 100644 graphics/object_events/palettes/followers/hariyama.pal delete mode 100644 graphics/object_events/palettes/followers/haunter.pal delete mode 100644 graphics/object_events/palettes/followers/heatran.pal delete mode 100644 graphics/object_events/palettes/followers/heracross.pal delete mode 100644 graphics/object_events/palettes/followers/hippopotas.pal delete mode 100644 graphics/object_events/palettes/followers/hippowdon.pal delete mode 100644 graphics/object_events/palettes/followers/hitmonchan.pal delete mode 100644 graphics/object_events/palettes/followers/hitmonlee.pal delete mode 100644 graphics/object_events/palettes/followers/hitmontop.pal delete mode 100644 graphics/object_events/palettes/followers/ho_oh.pal delete mode 100644 graphics/object_events/palettes/followers/honchkrow.pal delete mode 100644 graphics/object_events/palettes/followers/hoothoot.pal delete mode 100644 graphics/object_events/palettes/followers/hoppip.pal delete mode 100644 graphics/object_events/palettes/followers/horsea.pal delete mode 100644 graphics/object_events/palettes/followers/houndoom.pal delete mode 100644 graphics/object_events/palettes/followers/houndour.pal delete mode 100644 graphics/object_events/palettes/followers/huntail.pal delete mode 100644 graphics/object_events/palettes/followers/hypno.pal delete mode 100644 graphics/object_events/palettes/followers/igglybuff.pal delete mode 100644 graphics/object_events/palettes/followers/illumise.pal delete mode 100644 graphics/object_events/palettes/followers/infernape.pal delete mode 100644 graphics/object_events/palettes/followers/ivysaur.pal delete mode 100644 graphics/object_events/palettes/followers/jigglypuff.pal delete mode 100644 graphics/object_events/palettes/followers/jirachi.pal delete mode 100644 graphics/object_events/palettes/followers/jolteon.pal delete mode 100644 graphics/object_events/palettes/followers/jumpluff.pal delete mode 100644 graphics/object_events/palettes/followers/jynx.pal delete mode 100644 graphics/object_events/palettes/followers/kabuto.pal delete mode 100644 graphics/object_events/palettes/followers/kabutops.pal delete mode 100644 graphics/object_events/palettes/followers/kadabra.pal delete mode 100644 graphics/object_events/palettes/followers/kakuna.pal delete mode 100644 graphics/object_events/palettes/followers/kangaskhan.pal delete mode 100644 graphics/object_events/palettes/followers/kecleon.pal delete mode 100644 graphics/object_events/palettes/followers/kingdra.pal delete mode 100644 graphics/object_events/palettes/followers/kingler.pal delete mode 100644 graphics/object_events/palettes/followers/kirlia.pal delete mode 100644 graphics/object_events/palettes/followers/koffing.pal delete mode 100644 graphics/object_events/palettes/followers/krabby.pal delete mode 100644 graphics/object_events/palettes/followers/kricketot.pal delete mode 100644 graphics/object_events/palettes/followers/kricketune.pal delete mode 100644 graphics/object_events/palettes/followers/kyogre.pal delete mode 100644 graphics/object_events/palettes/followers/lairon.pal delete mode 100644 graphics/object_events/palettes/followers/lanturn.pal delete mode 100644 graphics/object_events/palettes/followers/lapras.pal delete mode 100644 graphics/object_events/palettes/followers/larvitar.pal delete mode 100644 graphics/object_events/palettes/followers/latias.pal delete mode 100644 graphics/object_events/palettes/followers/latios.pal delete mode 100644 graphics/object_events/palettes/followers/leafeon.pal delete mode 100644 graphics/object_events/palettes/followers/ledian.pal delete mode 100644 graphics/object_events/palettes/followers/ledyba.pal delete mode 100644 graphics/object_events/palettes/followers/lickilicky.pal delete mode 100644 graphics/object_events/palettes/followers/lickitung.pal delete mode 100644 graphics/object_events/palettes/followers/lileep.pal delete mode 100644 graphics/object_events/palettes/followers/linoone.pal delete mode 100644 graphics/object_events/palettes/followers/lombre.pal delete mode 100644 graphics/object_events/palettes/followers/lopunny.pal delete mode 100644 graphics/object_events/palettes/followers/lotad.pal delete mode 100644 graphics/object_events/palettes/followers/loudred.pal delete mode 100644 graphics/object_events/palettes/followers/lucario.pal delete mode 100644 graphics/object_events/palettes/followers/ludicolo.pal delete mode 100644 graphics/object_events/palettes/followers/lugia.pal delete mode 100644 graphics/object_events/palettes/followers/lumineon.pal delete mode 100644 graphics/object_events/palettes/followers/lunatone.pal delete mode 100644 graphics/object_events/palettes/followers/luvdisc.pal delete mode 100644 graphics/object_events/palettes/followers/luxio.pal delete mode 100644 graphics/object_events/palettes/followers/luxray.pal delete mode 100644 graphics/object_events/palettes/followers/machamp.pal delete mode 100644 graphics/object_events/palettes/followers/machoke.pal delete mode 100644 graphics/object_events/palettes/followers/machop.pal delete mode 100644 graphics/object_events/palettes/followers/magby.pal delete mode 100644 graphics/object_events/palettes/followers/magcargo.pal delete mode 100644 graphics/object_events/palettes/followers/magikarp.pal delete mode 100644 graphics/object_events/palettes/followers/magmar.pal delete mode 100644 graphics/object_events/palettes/followers/magmortar.pal delete mode 100644 graphics/object_events/palettes/followers/magnemite.pal delete mode 100644 graphics/object_events/palettes/followers/magneton.pal delete mode 100644 graphics/object_events/palettes/followers/magnezone.pal delete mode 100644 graphics/object_events/palettes/followers/makuhita.pal delete mode 100644 graphics/object_events/palettes/followers/mamoswine.pal delete mode 100644 graphics/object_events/palettes/followers/manaphy.pal delete mode 100644 graphics/object_events/palettes/followers/manectric.pal delete mode 100644 graphics/object_events/palettes/followers/mankey.pal delete mode 100644 graphics/object_events/palettes/followers/mantine.pal delete mode 100644 graphics/object_events/palettes/followers/mantyke.pal delete mode 100644 graphics/object_events/palettes/followers/mareep.pal delete mode 100644 graphics/object_events/palettes/followers/marill.pal delete mode 100644 graphics/object_events/palettes/followers/marowak.pal delete mode 100644 graphics/object_events/palettes/followers/marshtomp.pal delete mode 100644 graphics/object_events/palettes/followers/masquerain.pal delete mode 100644 graphics/object_events/palettes/followers/mawile.pal delete mode 100644 graphics/object_events/palettes/followers/medicham.pal delete mode 100644 graphics/object_events/palettes/followers/meditite.pal delete mode 100644 graphics/object_events/palettes/followers/meganium.pal delete mode 100644 graphics/object_events/palettes/followers/meowth.pal delete mode 100644 graphics/object_events/palettes/followers/mesprit.pal delete mode 100644 graphics/object_events/palettes/followers/metagross.pal delete mode 100644 graphics/object_events/palettes/followers/metang.pal delete mode 100644 graphics/object_events/palettes/followers/metapod.pal delete mode 100644 graphics/object_events/palettes/followers/mew.pal delete mode 100644 graphics/object_events/palettes/followers/mewtwo.pal delete mode 100644 graphics/object_events/palettes/followers/mightyena.pal delete mode 100644 graphics/object_events/palettes/followers/milotic.pal delete mode 100644 graphics/object_events/palettes/followers/miltank.pal delete mode 100644 graphics/object_events/palettes/followers/mime_jr.pal delete mode 100644 graphics/object_events/palettes/followers/minun.pal delete mode 100644 graphics/object_events/palettes/followers/misdreavus.pal delete mode 100644 graphics/object_events/palettes/followers/mismagius.pal delete mode 100644 graphics/object_events/palettes/followers/moltres.pal delete mode 100644 graphics/object_events/palettes/followers/monferno.pal delete mode 100644 graphics/object_events/palettes/followers/mothim.pal delete mode 100644 graphics/object_events/palettes/followers/mr_mime.pal delete mode 100644 graphics/object_events/palettes/followers/mudkip.pal delete mode 100644 graphics/object_events/palettes/followers/muk.pal delete mode 100644 graphics/object_events/palettes/followers/munchlax.pal delete mode 100644 graphics/object_events/palettes/followers/murkrow.pal delete mode 100644 graphics/object_events/palettes/followers/natu.pal delete mode 100644 graphics/object_events/palettes/followers/nidoking.pal delete mode 100644 graphics/object_events/palettes/followers/nidoqueen.pal delete mode 100644 graphics/object_events/palettes/followers/nidoran_f.pal delete mode 100644 graphics/object_events/palettes/followers/nidoran_m.pal delete mode 100644 graphics/object_events/palettes/followers/nidorina.pal delete mode 100644 graphics/object_events/palettes/followers/nidorino.pal delete mode 100644 graphics/object_events/palettes/followers/nincada.pal delete mode 100644 graphics/object_events/palettes/followers/ninetales.pal delete mode 100644 graphics/object_events/palettes/followers/ninjask.pal delete mode 100644 graphics/object_events/palettes/followers/noctowl.pal delete mode 100644 graphics/object_events/palettes/followers/nosepass.pal delete mode 100644 graphics/object_events/palettes/followers/numel.pal delete mode 100644 graphics/object_events/palettes/followers/nuzleaf.pal delete mode 100644 graphics/object_events/palettes/followers/octillery.pal delete mode 100644 graphics/object_events/palettes/followers/oddish.pal delete mode 100644 graphics/object_events/palettes/followers/omanyte.pal delete mode 100644 graphics/object_events/palettes/followers/omastar.pal delete mode 100644 graphics/object_events/palettes/followers/onix.pal delete mode 100644 graphics/object_events/palettes/followers/pachirisu.pal delete mode 100644 graphics/object_events/palettes/followers/palkia.pal delete mode 100644 graphics/object_events/palettes/followers/paras.pal delete mode 100644 graphics/object_events/palettes/followers/parasect.pal delete mode 100644 graphics/object_events/palettes/followers/pelipper.pal delete mode 100644 graphics/object_events/palettes/followers/persian.pal delete mode 100644 graphics/object_events/palettes/followers/phanpy.pal delete mode 100644 graphics/object_events/palettes/followers/phione.pal delete mode 100644 graphics/object_events/palettes/followers/pichu.pal delete mode 100644 graphics/object_events/palettes/followers/pidgeot.pal delete mode 100644 graphics/object_events/palettes/followers/pidgeotto.pal delete mode 100644 graphics/object_events/palettes/followers/pidgey.pal delete mode 100644 graphics/object_events/palettes/followers/pikachu.pal delete mode 100644 graphics/object_events/palettes/followers/piloswine.pal delete mode 100644 graphics/object_events/palettes/followers/pineco.pal delete mode 100644 graphics/object_events/palettes/followers/pinsir.pal delete mode 100644 graphics/object_events/palettes/followers/piplup.pal delete mode 100644 graphics/object_events/palettes/followers/plusle.pal delete mode 100644 graphics/object_events/palettes/followers/politoed.pal delete mode 100644 graphics/object_events/palettes/followers/poliwag.pal delete mode 100644 graphics/object_events/palettes/followers/poliwhirl.pal delete mode 100644 graphics/object_events/palettes/followers/poliwrath.pal delete mode 100644 graphics/object_events/palettes/followers/ponyta.pal delete mode 100644 graphics/object_events/palettes/followers/poochyena.pal delete mode 100644 graphics/object_events/palettes/followers/porygon.pal delete mode 100644 graphics/object_events/palettes/followers/porygon2.pal delete mode 100644 graphics/object_events/palettes/followers/porygonz.pal delete mode 100644 graphics/object_events/palettes/followers/primeape.pal delete mode 100644 graphics/object_events/palettes/followers/prinplup.pal delete mode 100644 graphics/object_events/palettes/followers/probopass.pal delete mode 100644 graphics/object_events/palettes/followers/psyduck.pal delete mode 100644 graphics/object_events/palettes/followers/pupitar.pal delete mode 100644 graphics/object_events/palettes/followers/purugly.pal delete mode 100644 graphics/object_events/palettes/followers/quagsire.pal delete mode 100644 graphics/object_events/palettes/followers/quilava.pal delete mode 100644 graphics/object_events/palettes/followers/qwilfish.pal delete mode 100644 graphics/object_events/palettes/followers/raichu.pal delete mode 100644 graphics/object_events/palettes/followers/raikou.pal delete mode 100644 graphics/object_events/palettes/followers/ralts.pal delete mode 100644 graphics/object_events/palettes/followers/rampardos.pal delete mode 100644 graphics/object_events/palettes/followers/rapidash.pal delete mode 100644 graphics/object_events/palettes/followers/raticate.pal delete mode 100644 graphics/object_events/palettes/followers/rattata.pal delete mode 100644 graphics/object_events/palettes/followers/rayquaza.pal delete mode 100644 graphics/object_events/palettes/followers/regice.pal delete mode 100644 graphics/object_events/palettes/followers/regigigas.pal delete mode 100644 graphics/object_events/palettes/followers/regirock.pal delete mode 100644 graphics/object_events/palettes/followers/registeel.pal delete mode 100644 graphics/object_events/palettes/followers/relicanth.pal delete mode 100644 graphics/object_events/palettes/followers/remoraid.pal delete mode 100644 graphics/object_events/palettes/followers/rhydon.pal delete mode 100644 graphics/object_events/palettes/followers/rhyhorn.pal delete mode 100644 graphics/object_events/palettes/followers/rhyperior.pal delete mode 100644 graphics/object_events/palettes/followers/riolu.pal delete mode 100644 graphics/object_events/palettes/followers/roselia.pal delete mode 100644 graphics/object_events/palettes/followers/roserade.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_base.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_fan.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_frost.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_heat.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_mow.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_wash.pal delete mode 100644 graphics/object_events/palettes/followers/sableye.pal delete mode 100644 graphics/object_events/palettes/followers/salamence.pal delete mode 100644 graphics/object_events/palettes/followers/sandshrew.pal delete mode 100644 graphics/object_events/palettes/followers/sandslash.pal delete mode 100644 graphics/object_events/palettes/followers/sceptile.pal delete mode 100644 graphics/object_events/palettes/followers/scizor.pal delete mode 100644 graphics/object_events/palettes/followers/scyther.pal delete mode 100644 graphics/object_events/palettes/followers/seadra.pal delete mode 100644 graphics/object_events/palettes/followers/seaking.pal delete mode 100644 graphics/object_events/palettes/followers/sealeo.pal delete mode 100644 graphics/object_events/palettes/followers/seedot.pal delete mode 100644 graphics/object_events/palettes/followers/seel.pal delete mode 100644 graphics/object_events/palettes/followers/sentret.pal delete mode 100644 graphics/object_events/palettes/followers/seviper.pal delete mode 100644 graphics/object_events/palettes/followers/sharpedo.pal delete mode 100644 graphics/object_events/palettes/followers/shaymin_land.pal delete mode 100644 graphics/object_events/palettes/followers/shaymin_sky.pal delete mode 100644 graphics/object_events/palettes/followers/shedinja.pal delete mode 100644 graphics/object_events/palettes/followers/shelgon.pal delete mode 100644 graphics/object_events/palettes/followers/shellder.pal delete mode 100644 graphics/object_events/palettes/followers/shellos_east.pal delete mode 100644 graphics/object_events/palettes/followers/shellos_west.pal delete mode 100644 graphics/object_events/palettes/followers/shieldon.pal delete mode 100644 graphics/object_events/palettes/followers/shiftry.pal delete mode 100644 graphics/object_events/palettes/followers/shinx.pal delete mode 100644 graphics/object_events/palettes/followers/shroomish.pal delete mode 100644 graphics/object_events/palettes/followers/shuckle.pal delete mode 100644 graphics/object_events/palettes/followers/shuppet.pal delete mode 100644 graphics/object_events/palettes/followers/silcoon.pal delete mode 100644 graphics/object_events/palettes/followers/skarmory.pal delete mode 100644 graphics/object_events/palettes/followers/skiploom.pal delete mode 100644 graphics/object_events/palettes/followers/skitty.pal delete mode 100644 graphics/object_events/palettes/followers/skorupi.pal delete mode 100644 graphics/object_events/palettes/followers/skuntank.pal delete mode 100644 graphics/object_events/palettes/followers/slaking.pal delete mode 100644 graphics/object_events/palettes/followers/slakoth.pal delete mode 100644 graphics/object_events/palettes/followers/slowbro.pal delete mode 100644 graphics/object_events/palettes/followers/slowking.pal delete mode 100644 graphics/object_events/palettes/followers/slowpoke.pal delete mode 100644 graphics/object_events/palettes/followers/slugma.pal delete mode 100644 graphics/object_events/palettes/followers/smeargle.pal delete mode 100644 graphics/object_events/palettes/followers/smoochum.pal delete mode 100644 graphics/object_events/palettes/followers/sneasel.pal delete mode 100644 graphics/object_events/palettes/followers/snorlax.pal delete mode 100644 graphics/object_events/palettes/followers/snorunt.pal delete mode 100644 graphics/object_events/palettes/followers/snover.pal delete mode 100644 graphics/object_events/palettes/followers/snubbull.pal delete mode 100644 graphics/object_events/palettes/followers/solrock.pal delete mode 100644 graphics/object_events/palettes/followers/spearow.pal delete mode 100644 graphics/object_events/palettes/followers/spheal.pal delete mode 100644 graphics/object_events/palettes/followers/spinarak.pal delete mode 100644 graphics/object_events/palettes/followers/spinda.pal delete mode 100644 graphics/object_events/palettes/followers/spiritomb.pal delete mode 100644 graphics/object_events/palettes/followers/spoink.pal delete mode 100644 graphics/object_events/palettes/followers/squirtle.pal delete mode 100644 graphics/object_events/palettes/followers/stantler.pal delete mode 100644 graphics/object_events/palettes/followers/staraptor.pal delete mode 100644 graphics/object_events/palettes/followers/staravia.pal delete mode 100644 graphics/object_events/palettes/followers/starly.pal delete mode 100644 graphics/object_events/palettes/followers/starmie.pal delete mode 100644 graphics/object_events/palettes/followers/staryu.pal delete mode 100644 graphics/object_events/palettes/followers/steelix.pal delete mode 100644 graphics/object_events/palettes/followers/stunky.pal delete mode 100644 graphics/object_events/palettes/followers/sudowoodo.pal delete mode 100644 graphics/object_events/palettes/followers/suicune.pal delete mode 100644 graphics/object_events/palettes/followers/sunflora.pal delete mode 100644 graphics/object_events/palettes/followers/sunkern.pal delete mode 100644 graphics/object_events/palettes/followers/surskit.pal delete mode 100644 graphics/object_events/palettes/followers/swablu.pal delete mode 100644 graphics/object_events/palettes/followers/swalot.pal delete mode 100644 graphics/object_events/palettes/followers/swampert.pal delete mode 100644 graphics/object_events/palettes/followers/swellow.pal delete mode 100644 graphics/object_events/palettes/followers/swinub.pal delete mode 100644 graphics/object_events/palettes/followers/taillow.pal delete mode 100644 graphics/object_events/palettes/followers/tangela.pal delete mode 100644 graphics/object_events/palettes/followers/tangrowth.pal delete mode 100644 graphics/object_events/palettes/followers/tauros.pal delete mode 100644 graphics/object_events/palettes/followers/teddiursa.pal delete mode 100644 graphics/object_events/palettes/followers/tentacool.pal delete mode 100644 graphics/object_events/palettes/followers/tentacruel.pal delete mode 100644 graphics/object_events/palettes/followers/togekiss.pal delete mode 100644 graphics/object_events/palettes/followers/togepi.pal delete mode 100644 graphics/object_events/palettes/followers/togetic.pal delete mode 100644 graphics/object_events/palettes/followers/torchic.pal delete mode 100644 graphics/object_events/palettes/followers/torkoal.pal delete mode 100644 graphics/object_events/palettes/followers/torterra.pal delete mode 100644 graphics/object_events/palettes/followers/totodile.pal delete mode 100644 graphics/object_events/palettes/followers/toxicroak.pal delete mode 100644 graphics/object_events/palettes/followers/trapinch.pal delete mode 100644 graphics/object_events/palettes/followers/treecko.pal delete mode 100644 graphics/object_events/palettes/followers/tropius.pal delete mode 100644 graphics/object_events/palettes/followers/turtwig.pal delete mode 100644 graphics/object_events/palettes/followers/typhlosion.pal delete mode 100644 graphics/object_events/palettes/followers/tyranitar.pal delete mode 100644 graphics/object_events/palettes/followers/tyrogue.pal delete mode 100644 graphics/object_events/palettes/followers/umbreon.pal delete mode 100644 graphics/object_events/palettes/followers/unown.pal delete mode 100644 graphics/object_events/palettes/followers/ursaring.pal delete mode 100644 graphics/object_events/palettes/followers/uxie.pal delete mode 100644 graphics/object_events/palettes/followers/vaporeon.pal delete mode 100644 graphics/object_events/palettes/followers/venomoth.pal delete mode 100644 graphics/object_events/palettes/followers/venonat.pal delete mode 100644 graphics/object_events/palettes/followers/venusaur.pal delete mode 100644 graphics/object_events/palettes/followers/vespiquen.pal delete mode 100644 graphics/object_events/palettes/followers/vibrava.pal delete mode 100644 graphics/object_events/palettes/followers/victreebel.pal delete mode 100644 graphics/object_events/palettes/followers/vigoroth.pal delete mode 100644 graphics/object_events/palettes/followers/vileplume.pal delete mode 100644 graphics/object_events/palettes/followers/volbeat.pal delete mode 100644 graphics/object_events/palettes/followers/voltorb.pal delete mode 100644 graphics/object_events/palettes/followers/vulpix.pal delete mode 100644 graphics/object_events/palettes/followers/wailmer.pal delete mode 100644 graphics/object_events/palettes/followers/wailord.pal delete mode 100644 graphics/object_events/palettes/followers/walrein.pal delete mode 100644 graphics/object_events/palettes/followers/wartortle.pal delete mode 100644 graphics/object_events/palettes/followers/weavile.pal delete mode 100644 graphics/object_events/palettes/followers/weedle.pal delete mode 100644 graphics/object_events/palettes/followers/weepinbell.pal delete mode 100644 graphics/object_events/palettes/followers/weezing.pal delete mode 100644 graphics/object_events/palettes/followers/whiscash.pal delete mode 100644 graphics/object_events/palettes/followers/whismur.pal delete mode 100644 graphics/object_events/palettes/followers/wigglytuff.pal delete mode 100644 graphics/object_events/palettes/followers/wingull.pal delete mode 100644 graphics/object_events/palettes/followers/wobbuffet.pal delete mode 100644 graphics/object_events/palettes/followers/wooper.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam_sand.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam_trash.pal delete mode 100644 graphics/object_events/palettes/followers/wurmple.pal delete mode 100644 graphics/object_events/palettes/followers/wynaut.pal delete mode 100644 graphics/object_events/palettes/followers/xatu.pal delete mode 100644 graphics/object_events/palettes/followers/yanma.pal delete mode 100644 graphics/object_events/palettes/followers/yanmega.pal delete mode 100644 graphics/object_events/palettes/followers/zangoose.pal delete mode 100644 graphics/object_events/palettes/followers/zapdos.pal delete mode 100644 graphics/object_events/palettes/followers/zigzagoon.pal delete mode 100644 graphics/object_events/palettes/followers/zubat.pal delete mode 100644 graphics/object_events/palettes/friend_ball.pal delete mode 100644 graphics/object_events/palettes/great_ball.pal delete mode 100644 graphics/object_events/palettes/heal_ball.pal delete mode 100644 graphics/object_events/palettes/heavy_ball.pal delete mode 100644 graphics/object_events/palettes/level_ball.pal delete mode 100644 graphics/object_events/palettes/love_ball.pal delete mode 100644 graphics/object_events/palettes/lure_ball.pal delete mode 100644 graphics/object_events/palettes/luxury_ball.pal delete mode 100644 graphics/object_events/palettes/master_ball.pal delete mode 100644 graphics/object_events/palettes/moon_ball.pal delete mode 100644 graphics/object_events/palettes/nest_ball.pal delete mode 100644 graphics/object_events/palettes/net_ball.pal delete mode 100644 graphics/object_events/palettes/park_ball.pal delete mode 100644 graphics/object_events/palettes/premier_ball.pal delete mode 100644 graphics/object_events/palettes/quick_ball.pal delete mode 100644 graphics/object_events/palettes/repeat_ball.pal delete mode 100644 graphics/object_events/palettes/safari_ball.pal delete mode 100644 graphics/object_events/palettes/sport_ball.pal delete mode 100644 graphics/object_events/palettes/timer_ball.pal delete mode 100644 graphics/object_events/palettes/ultra_ball.pal delete mode 100644 graphics/object_events/pics/misc/cherish_ball.png delete mode 100644 graphics/object_events/pics/misc/dive_ball.png delete mode 100644 graphics/object_events/pics/misc/dream_ball.png delete mode 100644 graphics/object_events/pics/misc/dusk_ball.png delete mode 100644 graphics/object_events/pics/misc/fast_ball.png delete mode 100644 graphics/object_events/pics/misc/friend_ball.png delete mode 100644 graphics/object_events/pics/misc/great_ball.png delete mode 100644 graphics/object_events/pics/misc/heal_ball.png delete mode 100644 graphics/object_events/pics/misc/heavy_ball.png delete mode 100644 graphics/object_events/pics/misc/level_ball.png delete mode 100644 graphics/object_events/pics/misc/love_ball.png delete mode 100644 graphics/object_events/pics/misc/lure_ball.png delete mode 100644 graphics/object_events/pics/misc/luxury_ball.png delete mode 100644 graphics/object_events/pics/misc/master_ball.png delete mode 100644 graphics/object_events/pics/misc/moon_ball.png delete mode 100644 graphics/object_events/pics/misc/nest_ball.png delete mode 100644 graphics/object_events/pics/misc/net_ball.png delete mode 100644 graphics/object_events/pics/misc/park_ball.png delete mode 100644 graphics/object_events/pics/misc/premier_ball.png delete mode 100644 graphics/object_events/pics/misc/quick_ball.png delete mode 100644 graphics/object_events/pics/misc/repeat_ball.png delete mode 100644 graphics/object_events/pics/misc/safari_ball.png delete mode 100644 graphics/object_events/pics/misc/sport_ball.png delete mode 100644 graphics/object_events/pics/misc/timer_ball.png delete mode 100644 graphics/object_events/pics/misc/ultra_ball.png delete mode 100644 graphics/object_events/pics/pokemon/followers/abomasnow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/abra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/absol.png delete mode 100644 graphics/object_events/pics/pokemon/followers/aerodactyl.png delete mode 100644 graphics/object_events/pics/pokemon/followers/aggron.png delete mode 100644 graphics/object_events/pics/pokemon/followers/aipom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/alakazam.png delete mode 100644 graphics/object_events/pics/pokemon/followers/altaria.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ambipom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ampharos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/anorith.png delete mode 100644 graphics/object_events/pics/pokemon/followers/arbok.png delete mode 100644 graphics/object_events/pics/pokemon/followers/arcanine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/arceus.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ariados.png delete mode 100644 graphics/object_events/pics/pokemon/followers/armaldo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/aron.png delete mode 100644 graphics/object_events/pics/pokemon/followers/articuno.png delete mode 100644 graphics/object_events/pics/pokemon/followers/azelf.png delete mode 100644 graphics/object_events/pics/pokemon/followers/azumarill.png delete mode 100644 graphics/object_events/pics/pokemon/followers/azurill.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bagon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/baltoy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/banette.png delete mode 100644 graphics/object_events/pics/pokemon/followers/barboach.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bastiodon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bayleef.png delete mode 100644 graphics/object_events/pics/pokemon/followers/beautifly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/beedrill.png delete mode 100644 graphics/object_events/pics/pokemon/followers/beldum.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bellossom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bellsprout.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bibarel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bidoof.png delete mode 100644 graphics/object_events/pics/pokemon/followers/blastoise.png delete mode 100644 graphics/object_events/pics/pokemon/followers/blaziken.png delete mode 100644 graphics/object_events/pics/pokemon/followers/blissey.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bonsly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/breloom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bronzong.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bronzor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/budew.png delete mode 100644 graphics/object_events/pics/pokemon/followers/buizel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bulbasaur.png delete mode 100644 graphics/object_events/pics/pokemon/followers/buneary.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy_sand.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy_trash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/butterfree.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cacnea.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cacturne.png delete mode 100644 graphics/object_events/pics/pokemon/followers/camerupt.png delete mode 100644 graphics/object_events/pics/pokemon/followers/carnivine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/carvanha.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cascoon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/castform.png delete mode 100644 graphics/object_events/pics/pokemon/followers/caterpie.png delete mode 100644 graphics/object_events/pics/pokemon/followers/celebi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chansey.png delete mode 100644 graphics/object_events/pics/pokemon/followers/charizard.png delete mode 100644 graphics/object_events/pics/pokemon/followers/charmander.png delete mode 100644 graphics/object_events/pics/pokemon/followers/charmeleon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chatot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cherrim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cherubi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chikorita.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chimchar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chimecho.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chinchou.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chingling.png delete mode 100644 graphics/object_events/pics/pokemon/followers/clamperl.png delete mode 100644 graphics/object_events/pics/pokemon/followers/claydol.png delete mode 100644 graphics/object_events/pics/pokemon/followers/clefable.png delete mode 100644 graphics/object_events/pics/pokemon/followers/clefairy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cleffa.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cloyster.png delete mode 100644 graphics/object_events/pics/pokemon/followers/combee.png delete mode 100644 graphics/object_events/pics/pokemon/followers/combusken.png delete mode 100644 graphics/object_events/pics/pokemon/followers/corphish.png delete mode 100644 graphics/object_events/pics/pokemon/followers/corsola.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cradily.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cranidos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/crawdaunt.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cresselia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/croagunk.png delete mode 100644 graphics/object_events/pics/pokemon/followers/crobat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/croconaw.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cubone.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cyndaquil.png delete mode 100644 graphics/object_events/pics/pokemon/followers/darkrai.png delete mode 100644 graphics/object_events/pics/pokemon/followers/delcatty.png delete mode 100644 graphics/object_events/pics/pokemon/followers/delibird.png delete mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_attack.png delete mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_defense.png delete mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_normal.png delete mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_speed.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dewgong.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dialga.png delete mode 100644 graphics/object_events/pics/pokemon/followers/diglett.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ditto.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dodrio.png delete mode 100644 graphics/object_events/pics/pokemon/followers/doduo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/donphan.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dragonair.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dragonite.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drapion.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dratini.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drifblim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drifloon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drowzee.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dugtrio.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dunsparce.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dusclops.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dusknoir.png delete mode 100644 graphics/object_events/pics/pokemon/followers/duskull.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dustox.png delete mode 100644 graphics/object_events/pics/pokemon/followers/eevee.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ekans.png delete mode 100644 graphics/object_events/pics/pokemon/followers/electabuzz.png delete mode 100644 graphics/object_events/pics/pokemon/followers/electivire.png delete mode 100644 graphics/object_events/pics/pokemon/followers/electrike.png delete mode 100644 graphics/object_events/pics/pokemon/followers/electrode.png delete mode 100644 graphics/object_events/pics/pokemon/followers/elekid.png delete mode 100644 graphics/object_events/pics/pokemon/followers/empoleon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/entei.png delete mode 100644 graphics/object_events/pics/pokemon/followers/espeon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/exeggcute.png delete mode 100644 graphics/object_events/pics/pokemon/followers/exeggutor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/exploud.png delete mode 100644 graphics/object_events/pics/pokemon/followers/farfetchd.png delete mode 100644 graphics/object_events/pics/pokemon/followers/fearow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/feebas.png delete mode 100644 graphics/object_events/pics/pokemon/followers/feraligatr.png delete mode 100644 graphics/object_events/pics/pokemon/followers/finneon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/flaaffy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/flareon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/floatzel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/flygon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/forretress.png delete mode 100644 graphics/object_events/pics/pokemon/followers/froslass.png delete mode 100644 graphics/object_events/pics/pokemon/followers/furret.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gabite.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gallade.png delete mode 100644 graphics/object_events/pics/pokemon/followers/garchomp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gardevoir.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gastly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_east.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_west.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gengar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/geodude.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gible.png delete mode 100644 graphics/object_events/pics/pokemon/followers/girafarig.png delete mode 100644 graphics/object_events/pics/pokemon/followers/giratina_normal.png delete mode 100644 graphics/object_events/pics/pokemon/followers/giratina_origin.png delete mode 100644 graphics/object_events/pics/pokemon/followers/glaceon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/glalie.png delete mode 100644 graphics/object_events/pics/pokemon/followers/glameow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gligar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gliscor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gloom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/golbat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/goldeen.png delete mode 100644 graphics/object_events/pics/pokemon/followers/golduck.png delete mode 100644 graphics/object_events/pics/pokemon/followers/golem.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gorebyss.png delete mode 100644 graphics/object_events/pics/pokemon/followers/granbull.png delete mode 100644 graphics/object_events/pics/pokemon/followers/graveler.png delete mode 100644 graphics/object_events/pics/pokemon/followers/grimer.png delete mode 100644 graphics/object_events/pics/pokemon/followers/grotle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/groudon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/grovyle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/growlithe.png delete mode 100644 graphics/object_events/pics/pokemon/followers/grumpig.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gulpin.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gyarados.png delete mode 100644 graphics/object_events/pics/pokemon/followers/happiny.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hariyama.png delete mode 100644 graphics/object_events/pics/pokemon/followers/haunter.png delete mode 100644 graphics/object_events/pics/pokemon/followers/heatran.png delete mode 100644 graphics/object_events/pics/pokemon/followers/heracross.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hippopotas.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hippowdon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hitmonchan.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hitmonlee.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hitmontop.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ho_oh.png delete mode 100644 graphics/object_events/pics/pokemon/followers/honchkrow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hoothoot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hoppip.png delete mode 100644 graphics/object_events/pics/pokemon/followers/horsea.png delete mode 100644 graphics/object_events/pics/pokemon/followers/houndoom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/houndour.png delete mode 100644 graphics/object_events/pics/pokemon/followers/huntail.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hypno.png delete mode 100644 graphics/object_events/pics/pokemon/followers/igglybuff.png delete mode 100644 graphics/object_events/pics/pokemon/followers/illumise.png delete mode 100644 graphics/object_events/pics/pokemon/followers/infernape.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ivysaur.png delete mode 100644 graphics/object_events/pics/pokemon/followers/jigglypuff.png delete mode 100644 graphics/object_events/pics/pokemon/followers/jirachi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/jolteon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/jumpluff.png delete mode 100644 graphics/object_events/pics/pokemon/followers/jynx.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kabuto.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kabutops.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kadabra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kakuna.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kangaskhan.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kecleon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kingdra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kingler.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kirlia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/koffing.png delete mode 100644 graphics/object_events/pics/pokemon/followers/krabby.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kricketot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kricketune.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kyogre.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lairon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lanturn.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lapras.png delete mode 100644 graphics/object_events/pics/pokemon/followers/larvitar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/latias.png delete mode 100644 graphics/object_events/pics/pokemon/followers/latios.png delete mode 100644 graphics/object_events/pics/pokemon/followers/leafeon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ledian.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ledyba.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lickilicky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lickitung.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lileep.png delete mode 100644 graphics/object_events/pics/pokemon/followers/linoone.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lombre.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lopunny.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lotad.png delete mode 100644 graphics/object_events/pics/pokemon/followers/loudred.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lucario.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ludicolo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lugia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lumineon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lunatone.png delete mode 100644 graphics/object_events/pics/pokemon/followers/luvdisc.png delete mode 100644 graphics/object_events/pics/pokemon/followers/luxio.png delete mode 100644 graphics/object_events/pics/pokemon/followers/luxray.png delete mode 100644 graphics/object_events/pics/pokemon/followers/machamp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/machoke.png delete mode 100644 graphics/object_events/pics/pokemon/followers/machop.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magby.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magcargo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magikarp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magmar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magmortar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magnemite.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magneton.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magnezone.png delete mode 100644 graphics/object_events/pics/pokemon/followers/makuhita.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mamoswine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/manaphy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/manectric.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mankey.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mantine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mantyke.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mareep.png delete mode 100644 graphics/object_events/pics/pokemon/followers/marill.png delete mode 100644 graphics/object_events/pics/pokemon/followers/marowak.png delete mode 100644 graphics/object_events/pics/pokemon/followers/marshtomp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/masquerain.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mawile.png delete mode 100644 graphics/object_events/pics/pokemon/followers/medicham.png delete mode 100644 graphics/object_events/pics/pokemon/followers/meditite.png delete mode 100644 graphics/object_events/pics/pokemon/followers/meganium.png delete mode 100644 graphics/object_events/pics/pokemon/followers/meowth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mesprit.png delete mode 100644 graphics/object_events/pics/pokemon/followers/metagross.png delete mode 100644 graphics/object_events/pics/pokemon/followers/metang.png delete mode 100644 graphics/object_events/pics/pokemon/followers/metapod.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mew.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mewtwo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mightyena.png delete mode 100644 graphics/object_events/pics/pokemon/followers/milotic.png delete mode 100644 graphics/object_events/pics/pokemon/followers/miltank.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mime_jr.png delete mode 100644 graphics/object_events/pics/pokemon/followers/minun.png delete mode 100644 graphics/object_events/pics/pokemon/followers/misdreavus.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mismagius.png delete mode 100644 graphics/object_events/pics/pokemon/followers/moltres.png delete mode 100644 graphics/object_events/pics/pokemon/followers/monferno.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mothim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mr_mime.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mudkip.png delete mode 100644 graphics/object_events/pics/pokemon/followers/muk.png delete mode 100644 graphics/object_events/pics/pokemon/followers/munchlax.png delete mode 100644 graphics/object_events/pics/pokemon/followers/murkrow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/natu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidoking.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidoqueen.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidoran_f.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidoran_m.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidorina.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nidorino.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nincada.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ninetales.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ninjask.png delete mode 100644 graphics/object_events/pics/pokemon/followers/noctowl.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nosepass.png delete mode 100644 graphics/object_events/pics/pokemon/followers/numel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/nuzleaf.png delete mode 100644 graphics/object_events/pics/pokemon/followers/octillery.png delete mode 100644 graphics/object_events/pics/pokemon/followers/oddish.png delete mode 100644 graphics/object_events/pics/pokemon/followers/omanyte.png delete mode 100644 graphics/object_events/pics/pokemon/followers/omastar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/onix.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pachirisu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/palkia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/paras.png delete mode 100644 graphics/object_events/pics/pokemon/followers/parasect.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pelipper.png delete mode 100644 graphics/object_events/pics/pokemon/followers/persian.png delete mode 100644 graphics/object_events/pics/pokemon/followers/phanpy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/phione.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pichu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pidgeot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pidgeotto.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pidgey.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pikachu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/piloswine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pineco.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pinsir.png delete mode 100644 graphics/object_events/pics/pokemon/followers/piplup.png delete mode 100644 graphics/object_events/pics/pokemon/followers/plusle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/politoed.png delete mode 100644 graphics/object_events/pics/pokemon/followers/poliwag.png delete mode 100644 graphics/object_events/pics/pokemon/followers/poliwhirl.png delete mode 100644 graphics/object_events/pics/pokemon/followers/poliwrath.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ponyta.png delete mode 100644 graphics/object_events/pics/pokemon/followers/poochyena.png delete mode 100644 graphics/object_events/pics/pokemon/followers/porygon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/porygon2.png delete mode 100644 graphics/object_events/pics/pokemon/followers/porygonz.png delete mode 100644 graphics/object_events/pics/pokemon/followers/primeape.png delete mode 100644 graphics/object_events/pics/pokemon/followers/prinplup.png delete mode 100644 graphics/object_events/pics/pokemon/followers/probopass.png delete mode 100644 graphics/object_events/pics/pokemon/followers/psyduck.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pupitar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/purugly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/quagsire.png delete mode 100644 graphics/object_events/pics/pokemon/followers/quilava.png delete mode 100644 graphics/object_events/pics/pokemon/followers/qwilfish.png delete mode 100644 graphics/object_events/pics/pokemon/followers/raichu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/raikou.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ralts.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rampardos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rapidash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/raticate.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rattata.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rayquaza.png delete mode 100644 graphics/object_events/pics/pokemon/followers/regice.png delete mode 100644 graphics/object_events/pics/pokemon/followers/regigigas.png delete mode 100644 graphics/object_events/pics/pokemon/followers/regirock.png delete mode 100644 graphics/object_events/pics/pokemon/followers/registeel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/relicanth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/remoraid.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rhydon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rhyhorn.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rhyperior.png delete mode 100644 graphics/object_events/pics/pokemon/followers/riolu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/roselia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/roserade.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_base.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_fan.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_frost.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_heat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_mow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_wash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sableye.png delete mode 100644 graphics/object_events/pics/pokemon/followers/salamence.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sandshrew.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sandslash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sceptile.png delete mode 100644 graphics/object_events/pics/pokemon/followers/scizor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/scyther.png delete mode 100644 graphics/object_events/pics/pokemon/followers/seadra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/seaking.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sealeo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/seedot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/seel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sentret.png delete mode 100644 graphics/object_events/pics/pokemon/followers/seviper.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sharpedo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_land.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_sky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shedinja.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shelgon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shellder.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shellos_east.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shellos_west.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shieldon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shiftry.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shinx.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shroomish.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shuckle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shuppet.png delete mode 100644 graphics/object_events/pics/pokemon/followers/silcoon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skarmory.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skiploom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skitty.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skorupi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skuntank.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slaking.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slakoth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slowbro.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slowking.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slowpoke.png delete mode 100644 graphics/object_events/pics/pokemon/followers/slugma.png delete mode 100644 graphics/object_events/pics/pokemon/followers/smeargle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/smoochum.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sneasel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/snorlax.png delete mode 100644 graphics/object_events/pics/pokemon/followers/snorunt.png delete mode 100644 graphics/object_events/pics/pokemon/followers/snover.png delete mode 100644 graphics/object_events/pics/pokemon/followers/snubbull.png delete mode 100644 graphics/object_events/pics/pokemon/followers/solrock.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spearow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spheal.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spinarak.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spinda.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spiritomb.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spoink.png delete mode 100644 graphics/object_events/pics/pokemon/followers/squirtle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/stantler.png delete mode 100644 graphics/object_events/pics/pokemon/followers/staraptor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/staravia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/starly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/starmie.png delete mode 100644 graphics/object_events/pics/pokemon/followers/staryu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/steelix.png delete mode 100644 graphics/object_events/pics/pokemon/followers/stunky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sudowoodo.png delete mode 100644 graphics/object_events/pics/pokemon/followers/suicune.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sunflora.png delete mode 100644 graphics/object_events/pics/pokemon/followers/sunkern.png delete mode 100644 graphics/object_events/pics/pokemon/followers/surskit.png delete mode 100644 graphics/object_events/pics/pokemon/followers/swablu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/swalot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/swampert.png delete mode 100644 graphics/object_events/pics/pokemon/followers/swellow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/swinub.png delete mode 100644 graphics/object_events/pics/pokemon/followers/taillow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tangela.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tangrowth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tauros.png delete mode 100644 graphics/object_events/pics/pokemon/followers/teddiursa.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tentacool.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tentacruel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/togekiss.png delete mode 100644 graphics/object_events/pics/pokemon/followers/togepi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/togetic.png delete mode 100644 graphics/object_events/pics/pokemon/followers/torchic.png delete mode 100644 graphics/object_events/pics/pokemon/followers/torkoal.png delete mode 100644 graphics/object_events/pics/pokemon/followers/torterra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/totodile.png delete mode 100644 graphics/object_events/pics/pokemon/followers/toxicroak.png delete mode 100644 graphics/object_events/pics/pokemon/followers/trapinch.png delete mode 100644 graphics/object_events/pics/pokemon/followers/treecko.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tropius.png delete mode 100644 graphics/object_events/pics/pokemon/followers/turtwig.png delete mode 100644 graphics/object_events/pics/pokemon/followers/typhlosion.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tyranitar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tyrogue.png delete mode 100644 graphics/object_events/pics/pokemon/followers/umbreon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unown!.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowna.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownb.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownc.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownd.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowne.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownf.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowng.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownh.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowni.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownj.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownk.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownl.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownm.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownn.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowno.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownq.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownquestion.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownr.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowns.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownt.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownv.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownw.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownx.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unowny.png delete mode 100644 graphics/object_events/pics/pokemon/followers/unownz.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ursaring.png delete mode 100644 graphics/object_events/pics/pokemon/followers/uxie.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vaporeon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/venomoth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/venonat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/venusaur.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vespiquen.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vibrava.png delete mode 100644 graphics/object_events/pics/pokemon/followers/victreebel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vigoroth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vileplume.png delete mode 100644 graphics/object_events/pics/pokemon/followers/volbeat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/voltorb.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vulpix.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wailmer.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wailord.png delete mode 100644 graphics/object_events/pics/pokemon/followers/walrein.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wartortle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/weavile.png delete mode 100644 graphics/object_events/pics/pokemon/followers/weedle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/weepinbell.png delete mode 100644 graphics/object_events/pics/pokemon/followers/weezing.png delete mode 100644 graphics/object_events/pics/pokemon/followers/whiscash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/whismur.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wigglytuff.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wingull.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wobbuffet.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wooper.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_sand.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_trash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wurmple.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wynaut.png delete mode 100644 graphics/object_events/pics/pokemon/followers/xatu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/yanma.png delete mode 100644 graphics/object_events/pics/pokemon/followers/yanmega.png delete mode 100644 graphics/object_events/pics/pokemon/followers/zangoose.png delete mode 100644 graphics/object_events/pics/pokemon/followers/zapdos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/zigzagoon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/zubat.png mode change 100644 => 100755 graphics/pokemon_storage/close_box_button.bin mode change 100644 => 100755 graphics/pokemon_storage/party_slot_empty.bin mode change 100644 => 100755 graphics/pokemon_storage/party_slot_filled.bin mode change 100644 => 100755 graphics/pokemon_storage/pkmn_data.bin delete mode 100644 include/constants/follow_me.h delete mode 100644 include/follow_me.h delete mode 100644 src/follow_me.c diff --git a/asm/macros/event.inc b/asm/macros/event.inc index a3052dfc4..661e675c9 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1729,28 +1729,6 @@ .2byte \quantity .endm - @ sets an NPC up to follow the player - .macro setfollower localId:req, flags:req - .byte 0xe3 - .byte \localId - .2byte \flags - .endm - - @ remove the following NPC (assumes there will only ever be one) - .macro destroyfollower - .byte 0xe4 - .endm - - @ makes the player and follower face one another - .macro facefollower - .byte 0xe5 - .endm - - @ checks if you have a follower. returns the result to VAR_RESULT - .macro checkfollower - .byte 0xe6 - .endm - @ Supplementary @@ -1961,26 +1939,3 @@ setvar VAR_0x8006, \item special CreateEventLegalEnemyMon .endm - - .macro pokemonfaceplayer objectId=254 - setvar VAR_UNUSED_0x8014, \objectId - callnative ScrCmd_pokemonfaceplayer - .endm - - .macro updatefollowerpokemongraphic - setvar VAR_UNUSED_0x8014, 1 - callnative UpdateFollowerPokemonGraphic - .endm - - .macro hidefollower - callnative HideFollower - .endm - - .macro showfollower - callnative ShowFollower - .endm - - .macro followerintopokeball - setvar VAR_UNUSED_0x8014, 0 - callnative FollowerIntoPokeball - .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc index c4a302592..662257e41 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -19,13 +19,19 @@ .4byte \script .endm - .macro object_event index:req, gfx:req, replacement: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, 0 - .2byte \gfx - .2byte \x - .2byte \y - .byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 - .2byte \trainer_type, \sight_radius_tree_etc + @ 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 + .2byte \x, \y + .byte \elevation + .byte \movement_type + .byte ((\y_radius << 4) | \x_radius) + .space 1 @ Padding + .2byte \trainer_type + .2byte \sight_radius_tree_etc .4byte \script .2byte \event_flag .space 2 @ Padding diff --git a/data/event_scripts.s b/data/event_scripts.s index 66877b25c..1f3db6aa2 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -53,7 +53,6 @@ #include "constants/union_room.h" #include "constants/vars.h" #include "constants/weather.h" -#include "constants/follow_me.h" .include "asm/macros.inc" .include "asm/macros/event.inc" .include "constants/constants.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 277cbb376..49fcf798b 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -72,9 +72,6 @@ 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 @@ -131,18 +128,6 @@ gFieldEffectScript_JumpTallGrass:: gFieldEffectScript_SandFootprints:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints field_eff_end - -gFieldEffectScript_TracksBug:: @ 82DBB42 - field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug - field_eff_end - -gFieldEffectScript_TracksSpot:: @ 82DBB42 - field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot - field_eff_end - -gFieldEffectScript_TracksSlither:: @ 82DBBFF - field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither - field_eff_end gFieldEffectScript_JumpBigSplash:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index c7bf196ef..deee3e264 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -91,19 +91,6 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LittlerootTown_ProfessorBirchsLab_EventScript_Chikorita", "flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CHIKORITA" - }, - { - "graphics_id": "OBJ_EVENT_GFX_VAR_1", - "x": 6, - "y": 6, - "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": "FLAG_UNUSED_0x020" } ], "warp_events": [ diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index e86635090..acf80f0e4 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -29,7 +29,6 @@ LittlerootTown_ProfessorBirchsLab_MapScripts:: LittlerootTown_ProfessorBirchsLab_OnTransition: call Common_EventScript_SetupRivalGfxId call ProfBirch_EventScript_UpdateLocation - setflag FLAG_UNUSED_0x020 goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 4, LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout goto_if_eq VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 3, LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter @@ -140,10 +139,6 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: msgbox LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou, MSGBOX_DEFAULT clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 - addobject 7 - hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB - setfollower 7, 0x7E - updatefollowerpokemongraphic releaseall end diff --git a/data/mb_berry_fix.gba b/data/mb_berry_fix.gba old mode 100644 new mode 100755 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 7d52b8c8d..51b7f966e 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -227,10 +227,6 @@ gScriptCmdTable:: .4byte ScrCmd_warpwhitefade @ 0xe0 .4byte ScrCmd_buffercontestname @ 0xe1 .4byte ScrCmd_bufferitemnameplural @ 0xe2 - .4byte ScrCmd_setfollower @ 0xe3 - .4byte ScrCmd_destroyfollower @ 0xe4 - .4byte ScrCmd_facefollower @ 0xe5 - .4byte ScrCmd_checkfollower @ 0xe6 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 14570cf99..3e99fc08e 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -287,69 +287,3 @@ EventScript_FailSweetScent:: Text_FailSweetScent: .string "Looks like there's nothing here…$" - -FollowerPositionFixScript:: - setvar 0x8000 0x0 - callnative FollowerTrainerSightingPositionFix - compare VAR_RESULT 0xFFFF - goto_if_eq FollowerPositionFixScriptReturn - call WalkCall - setvar 0x8000 0x1 - callnative FollowerTrainerSightingPositionFix -FollowerPositionFixScriptReturn: - return - -FollowerIntoPlayerScript:: - setvar 0x8000 0x0 - callnative FollowerIntoPlayer - compare VAR_RESULT 0xFFFF - goto_if_eq FollowerPositionFixScriptReturn - setvar 0x8005 0xFE @ follower - call WalkCall - setvar 0x8000 0x1 - callnative FollowerIntoPlayer - return - -WalkCall: - compare VAR_RESULT 0x0 - call_if_eq WalkDownCall - compare VAR_RESULT 0x1 - call_if_eq WalkUpCall - compare VAR_RESULT 0x2 - call_if_eq WalkLeftCall - compare VAR_RESULT 0x3 - call_if_eq WalkRightCall - waitmovement 0x8005 - return - -WalkDownCall: - applymovement 0x8005 WalkDown - return - -WalkUpCall: - applymovement 0x8005 WalkUp - return - -WalkLeftCall: - applymovement 0x8005 WalkLeft - return - -WalkRightCall: - applymovement 0x8005 WalkRight - return - -WalkDown: - walk_down - step_end - -WalkUp: - walk_up - step_end - -WalkLeft: - walk_left - step_end - -WalkRight: - walk_right - step_end diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 6066a66a9..64ccdfa77 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,8 +33,6 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - followerintopokeball - call_if_eq VAR_UNUSED_0x8014, 1, EventScript_FollowerIntoPokeballDelay applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL @@ -42,12 +40,6 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn:: applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown waitmovement 0 special HealPlayerParty - updatefollowerpokemongraphic - return - -EventScript_FollowerIntoPokeballDelay:: - delay 21 - setvar VAR_UNUSED_0x8014, 0 return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: diff --git a/gflib/sprite.c b/gflib/sprite.c index 1fc013083..e5bf89063 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -2,8 +2,6 @@ #include "sprite.h" #include "main.h" #include "palette.h" -#include "global.fieldmap.h" -#include "constants/event_objects.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -969,61 +967,6 @@ void ContinueAnim(struct Sprite *sprite) } } -bool8 IsFlyingPokemonGraphic(u16 graphicsId) -{ - switch(graphicsId) - { - case OBJ_EVENT_GFX_BUTTERFREE: - case OBJ_EVENT_GFX_BEEDRILL: - case OBJ_EVENT_GFX_PIDGEOTTO: - case OBJ_EVENT_GFX_PIDGEOT: - case OBJ_EVENT_GFX_FEAROW: - case OBJ_EVENT_GFX_ZUBAT: - case OBJ_EVENT_GFX_GOLBAT: - case OBJ_EVENT_GFX_VENOMOTH: - case OBJ_EVENT_GFX_AERODACTYL: - case OBJ_EVENT_GFX_ARTICUNO: - case OBJ_EVENT_GFX_ZAPDOS: - case OBJ_EVENT_GFX_MOLTRES: - case OBJ_EVENT_GFX_DRAGONITE: - case OBJ_EVENT_GFX_NOCTOWL: - case OBJ_EVENT_GFX_LEDYBA: - case OBJ_EVENT_GFX_LEDIAN: - case OBJ_EVENT_GFX_CROBAT: - case OBJ_EVENT_GFX_TOGETIC: - case OBJ_EVENT_GFX_HOPPIP: - case OBJ_EVENT_GFX_SKIPLOOM: - case OBJ_EVENT_GFX_JUMPLUFF: - case OBJ_EVENT_GFX_YANMA: - case OBJ_EVENT_GFX_MANTINE: - case OBJ_EVENT_GFX_SKARMORY: - case OBJ_EVENT_GFX_LUGIA_FOLLOWER: - case OBJ_EVENT_GFX_HOOH_FOLLOWER: - case OBJ_EVENT_GFX_CELEBI: - case OBJ_EVENT_GFX_BEAUTIFLY: - case OBJ_EVENT_GFX_DUSTOX: - case OBJ_EVENT_GFX_SWELLOW: - case OBJ_EVENT_GFX_WINGULL_FOLLOWER: - case OBJ_EVENT_GFX_PELIPPER: - case OBJ_EVENT_GFX_MASQUERAIN: - case OBJ_EVENT_GFX_FLYGON: - case OBJ_EVENT_GFX_SWABLU: - case OBJ_EVENT_GFX_ALTARIA: - case OBJ_EVENT_GFX_VOLBEAT: - case OBJ_EVENT_GFX_ILLUMISE: - case OBJ_EVENT_GFX_KYOGRE: - case OBJ_EVENT_GFX_LATIAS_FOLLOWER: - case OBJ_EVENT_GFX_LATIOS_FOLLOWER: - case OBJ_EVENT_GFX_STARAVIA: - case OBJ_EVENT_GFX_STARAPTOR: - case OBJ_EVENT_GFX_MOTHIM: - case OBJ_EVENT_GFX_TOGEKISS: - return TRUE; - default: - return FALSE; - } -} - void AnimCmd_frame(struct Sprite *sprite) { s16 imageValue; @@ -1041,15 +984,6 @@ void AnimCmd_frame(struct Sprite *sprite) sprite->animDelayCounter = duration; - if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) - { - if(sprite->animCmdIndex % 2 == 1) - sprite->y2 = 0; - else - sprite->y2 = -1; - } - if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); @@ -1083,15 +1017,6 @@ void AnimCmd_jump(struct Sprite *sprite) duration--; sprite->animDelayCounter = duration; - - if(sprite == &gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId] && gSaveBlock2Ptr->follower.inProgress && sprite->y2 >= -1 - && !IsFlyingPokemonGraphic(gObjectEvents[gSaveBlock2Ptr->follower.objId].graphicsId) && !sprite->oam.affineMode) - { - if(sprite->animCmdIndex % 2 == 1) - sprite->y2 = 0; - else - sprite->y2 = -1; - } if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); diff --git a/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png deleted file mode 100644 index b7062d253f68cd83d17f7e356850f9f4b47bb163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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@18BWceeTJmaMaLKEamT(fM|oBUgihfGh9b0}0|C zdJ`@%cD<`#9>ZGaIPvG@Q`>`ISbtuo@;rybZKwQqSH3SBmX#;OZk&GNEdNU#^DD9q z!TaBCSa_z~d#8_5yPklSn`$Wg;RgbW8)i9**W`PvI=Wm7W2}9^xKBu8QJm-R26gSu z@Wl;@yS%oPbH{TYNmUJU$(pM0$6tQMlnd{Rw@v!bpJ2V-;6L{aAGNkUGut`Ww>|gM Q0y>t#)78&qol`;+01`TVV*mgE diff --git a/graphics/field_effects/pics/slither_tracks.png b/graphics/field_effects/pics/slither_tracks.png deleted file mode 100644 index 7c8247c344aa46ee5d0c6ced05957f05ccf9a1f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!VDxsPNql!DfSXiUsv|0oRR`edJ(gxod61n zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kg8-ip*Q7P?zCAno?&_9%Tc-T~|Nq{zcYDu1o3rI!(wr^-_dWxv zdiQL}y|c|%w`85219D%-$A?#e6l0RNyUYKj?4OPTIc=UUjv*CuYA0S4WKraB&TRO1 z+lzT4^NNQlk}_qfee;($Nj04iebsj^zhGzdOLC z@v3_<&z>L46J9N{{kvjCupr0An@3hg*Dm7DDtYXbt-r@;M1& diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png deleted file mode 100644 index cd8c9c0cf4ba7ff95fc87f06ec3c4fb7d51140ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/graphics/object_events/palettes/cherish_ball.pal b/graphics/object_events/palettes/cherish_ball.pal deleted file mode 100644 index f2e72ff06..000000000 --- a/graphics/object_events/palettes/cherish_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -95 15 1 -69 65 59 -193 55 31 -249 249 249 -225 87 63 -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/graphics/object_events/palettes/dive_ball.pal b/graphics/object_events/palettes/dive_ball.pal deleted file mode 100644 index 03d8740a5..000000000 --- a/graphics/object_events/palettes/dive_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -157 157 189 -221 205 241 -11 117 245 -71 151 249 -15 47 85 -1 1 1 -249 249 249 -187 155 227 -57 49 69 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/dream_ball.pal b/graphics/object_events/palettes/dream_ball.pal deleted file mode 100644 index a691977ce..000000000 --- a/graphics/object_events/palettes/dream_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -219 133 171 -247 41 129 -1 1 1 -107 83 141 -55 37 79 -193 185 209 -249 103 165 -249 249 249 -139 115 173 -95 31 61 -233 183 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/dusk_ball.pal b/graphics/object_events/palettes/dusk_ball.pal deleted file mode 100644 index 0be0a538c..000000000 --- a/graphics/object_events/palettes/dusk_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -63 163 63 -45 115 45 -185 33 1 -47 47 47 -69 65 59 -105 97 87 -217 73 1 -249 249 249 -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/palettes/fast_ball.pal b/graphics/object_events/palettes/fast_ball.pal deleted file mode 100644 index 9d9b9d86c..000000000 --- a/graphics/object_events/palettes/fast_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -241 149 79 -157 157 189 -91 69 1 -249 249 249 -213 171 43 -1 1 1 -75 75 123 -101 43 1 -235 113 21 -205 205 223 -223 191 97 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/abomasnow.pal b/graphics/object_events/palettes/followers/abomasnow.pal deleted file mode 100644 index ddb58d170..000000000 --- a/graphics/object_events/palettes/followers/abomasnow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 65 -193 137 209 -121 121 153 -185 193 209 -49 73 57 -1 1 1 -217 217 233 -49 153 73 -161 169 201 -81 81 81 -233 233 249 -145 121 153 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/abra.pal b/graphics/object_events/palettes/followers/abra.pal deleted file mode 100644 index dd409648b..000000000 --- a/graphics/object_events/palettes/followers/abra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -1 1 1 -73 57 25 -145 121 97 -249 217 97 -121 97 57 -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/graphics/object_events/palettes/followers/absol.pal b/graphics/object_events/palettes/followers/absol.pal deleted file mode 100644 index 4d7e076a8..000000000 --- a/graphics/object_events/palettes/followers/absol.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 129 161 -65 73 89 -177 185 201 -41 49 65 -97 105 129 -209 217 233 -1 1 1 -65 73 97 -129 33 33 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/aerodactyl.pal b/graphics/object_events/palettes/followers/aerodactyl.pal deleted file mode 100644 index 57c8403dd..000000000 --- a/graphics/object_events/palettes/followers/aerodactyl.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -201 201 209 -73 65 97 -145 137 201 -129 113 177 -177 177 225 -97 17 17 -233 233 249 -129 89 129 -185 137 193 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/aggron.pal b/graphics/object_events/palettes/followers/aggron.pal deleted file mode 100644 index 285abfd63..000000000 --- a/graphics/object_events/palettes/followers/aggron.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 145 -73 65 81 -209 209 217 -1 1 1 -65 97 129 -105 145 201 -169 57 57 -49 41 57 -177 177 193 -209 89 89 -233 233 249 -145 145 153 -105 97 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/aipom.pal b/graphics/object_events/palettes/followers/aipom.pal deleted file mode 100644 index f658712e1..000000000 --- a/graphics/object_events/palettes/followers/aipom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 97 -169 137 201 -97 81 65 -225 209 161 -185 201 225 -113 73 145 -1 1 1 -81 41 113 -233 233 249 -137 105 169 -137 113 81 -137 153 185 -201 177 129 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/alakazam.pal b/graphics/object_events/palettes/followers/alakazam.pal deleted file mode 100644 index ba8f7100d..000000000 --- a/graphics/object_events/palettes/followers/alakazam.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 169 49 -177 177 185 -105 81 57 -1 1 1 -249 241 193 -145 121 57 -73 57 25 -249 217 97 -233 233 249 -145 121 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/altaria.pal b/graphics/object_events/palettes/followers/altaria.pal deleted file mode 100644 index ad098b4a4..000000000 --- a/graphics/object_events/palettes/followers/altaria.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 169 -97 193 233 -65 169 217 -73 81 105 -1 1 1 -209 225 233 -1 3 7 -113 129 145 -41 105 153 -169 177 193 -249 249 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ambipom.pal b/graphics/object_events/palettes/followers/ambipom.pal deleted file mode 100644 index c4b6f24dc..000000000 --- a/graphics/object_events/palettes/followers/ambipom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 97 -217 201 145 -201 73 105 -97 81 65 -169 129 241 -185 201 225 -1 1 1 -153 105 201 -57 49 97 -105 65 153 -233 233 249 -97 97 97 -233 217 161 -201 177 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ampharos.pal b/graphics/object_events/palettes/followers/ampharos.pal deleted file mode 100644 index 17ad1d495..000000000 --- a/graphics/object_events/palettes/followers/ampharos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 25 -185 57 17 -113 129 153 -49 57 65 -1 1 1 -185 201 225 -241 89 81 -129 25 9 -81 97 113 -241 209 89 -105 89 9 -233 233 249 -201 161 33 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/anorith.pal b/graphics/object_events/palettes/followers/anorith.pal deleted file mode 100644 index 34717ba7c..000000000 --- a/graphics/object_events/palettes/followers/anorith.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 153 113 -65 65 73 -201 201 217 -73 113 57 -161 161 177 -137 25 57 -129 169 121 -233 233 249 -193 113 105 -49 41 49 -105 105 113 -169 65 81 -217 217 233 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arbok.pal b/graphics/object_events/palettes/followers/arbok.pal deleted file mode 100644 index a2c93dc60..000000000 --- a/graphics/object_events/palettes/followers/arbok.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 169 81 -121 89 169 -57 49 81 -177 129 193 -193 65 65 -1 1 1 -65 65 65 -233 233 249 -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/palettes/followers/arcanine.pal b/graphics/object_events/palettes/followers/arcanine.pal deleted file mode 100644 index 5707ca4a6..000000000 --- a/graphics/object_events/palettes/followers/arcanine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 105 -145 73 33 -225 193 145 -185 81 25 -73 49 25 -177 177 209 -89 89 89 -1 1 1 -233 233 249 -249 105 49 -121 89 57 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_bug.pal b/graphics/object_events/palettes/followers/arceus_bug.pal deleted file mode 100644 index 5b16119d2..000000000 --- a/graphics/object_events/palettes/followers/arceus_bug.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 113 201 -121 129 145 -49 89 41 -145 217 121 -201 209 225 -89 97 113 -249 161 249 -41 97 41 -161 177 201 -113 161 57 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dark.pal b/graphics/object_events/palettes/followers/arceus_dark.pal deleted file mode 100644 index 411065d58..000000000 --- a/graphics/object_events/palettes/followers/arceus_dark.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -16 136 0 -88 56 56 -32 40 48 -72 80 96 -200 208 224 -56 32 32 -0 142 15 -248 128 3 -160 176 200 -24 40 56 -16 48 64 -64 72 72 -112 120 144 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dragon.pal b/graphics/object_events/palettes/followers/arceus_dragon.pal deleted file mode 100644 index 5ba8310c2..000000000 --- a/graphics/object_events/palettes/followers/arceus_dragon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 9 0 -96 136 120 -112 8 128 -176 80 216 -201 209 225 -64 104 88 -0 14 0 -192 128 3 -161 177 201 -144 32 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_electric.pal b/graphics/object_events/palettes/followers/arceus_electric.pal deleted file mode 100644 index a3efd313c..000000000 --- a/graphics/object_events/palettes/followers/arceus_electric.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -200 96 0 -136 128 88 -128 112 0 -248 232 88 -201 209 225 -112 96 56 -232 128 0 -192 128 3 -161 177 201 -216 192 56 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fighting.pal b/graphics/object_events/palettes/followers/arceus_fighting.pal deleted file mode 100644 index c81b5a5b1..000000000 --- a/graphics/object_events/palettes/followers/arceus_fighting.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -176 112 0 -121 129 145 -104 24 8 -192 88 32 -201 209 225 -89 97 113 -232 176 0 -192 128 3 -161 177 201 -152 56 32 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fire.pal b/graphics/object_events/palettes/followers/arceus_fire.pal deleted file mode 100644 index f8b616e47..000000000 --- a/graphics/object_events/palettes/followers/arceus_fire.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -200 120 0 -144 96 88 -160 24 16 -240 96 16 -201 209 225 -128 32 32 -248 224 0 -192 128 3 -161 177 201 -208 48 16 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_flying.pal b/graphics/object_events/palettes/followers/arceus_flying.pal deleted file mode 100644 index fceaad45d..000000000 --- a/graphics/object_events/palettes/followers/arceus_flying.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -160 160 168 -121 129 145 -72 80 136 -144 152 208 -201 209 225 -89 97 113 -232 240 240 -40 128 152 -161 177 201 -104 112 168 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ghost.pal b/graphics/object_events/palettes/followers/arceus_ghost.pal deleted file mode 100644 index d114a0e09..000000000 --- a/graphics/object_events/palettes/followers/arceus_ghost.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -160 32 0 -104 80 144 -88 40 144 -160 96 224 -201 209 225 -80 48 136 -232 64 0 -248 248 56 -161 177 201 -120 80 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_grass.pal b/graphics/object_events/palettes/followers/arceus_grass.pal deleted file mode 100644 index 410680501..000000000 --- a/graphics/object_events/palettes/followers/arceus_grass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -192 176 0 -88 144 112 -40 104 48 -88 200 56 -201 209 225 -56 112 80 -248 224 0 -192 128 3 -161 177 201 -64 152 48 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ground.pal b/graphics/object_events/palettes/followers/arceus_ground.pal deleted file mode 100644 index 05cb67bd0..000000000 --- a/graphics/object_events/palettes/followers/arceus_ground.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 128 144 -136 112 80 -136 64 0 -192 136 56 -201 209 225 -104 88 56 -176 176 192 -192 128 3 -161 177 201 -168 104 24 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ice.pal b/graphics/object_events/palettes/followers/arceus_ice.pal deleted file mode 100644 index ca2c82422..000000000 --- a/graphics/object_events/palettes/followers/arceus_ice.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 128 136 -72 136 168 -40 96 128 -160 248 248 -201 209 225 -40 96 128 -224 224 232 -192 128 3 -161 177 201 -120 192 248 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_normal.pal b/graphics/object_events/palettes/followers/arceus_normal.pal deleted file mode 100644 index 27bb0d302..000000000 --- a/graphics/object_events/palettes/followers/arceus_normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 129 65 -121 129 145 -105 97 25 -233 209 25 -201 209 225 -89 97 113 -57 177 89 -241 65 65 -161 177 201 -177 153 25 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_poison.pal b/graphics/object_events/palettes/followers/arceus_poison.pal deleted file mode 100644 index 6822a6e3c..000000000 --- a/graphics/object_events/palettes/followers/arceus_poison.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -192 96 208 -121 129 145 -80 24 96 -176 96 184 -201 209 225 -89 97 113 -240 160 232 -192 128 3 -161 177 201 -128 48 144 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_psychic.pal b/graphics/object_events/palettes/followers/arceus_psychic.pal deleted file mode 100644 index ccbce5040..000000000 --- a/graphics/object_events/palettes/followers/arceus_psychic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 9 0 -121 129 145 -152 0 3 -232 72 112 -201 209 225 -89 97 113 -0 14 0 -192 128 3 -161 177 201 -192 24 72 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_rock.pal b/graphics/object_events/palettes/followers/arceus_rock.pal deleted file mode 100644 index 0f0209f19..000000000 --- a/graphics/object_events/palettes/followers/arceus_rock.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -176 152 80 -121 129 145 -96 88 48 -144 136 96 -201 209 225 -89 97 113 -216 192 120 -64 80 64 -161 177 201 -112 104 64 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_steel.pal b/graphics/object_events/palettes/followers/arceus_steel.pal deleted file mode 100644 index 0720ec239..000000000 --- a/graphics/object_events/palettes/followers/arceus_steel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -168 160 0 -121 129 145 -88 88 96 -192 192 208 -201 209 225 -89 97 113 -232 224 0 -96 104 96 -161 177 201 -128 128 136 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_water.pal b/graphics/object_events/palettes/followers/arceus_water.pal deleted file mode 100644 index 7abe36e2f..000000000 --- a/graphics/object_events/palettes/followers/arceus_water.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -48 128 64 -72 112 192 -16 56 112 -24 128 232 -201 209 225 -40 104 136 -56 176 88 -240 64 64 -161 177 201 -16 120 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ariados.pal b/graphics/object_events/palettes/followers/ariados.pal deleted file mode 100644 index ebc2b6797..000000000 --- a/graphics/object_events/palettes/followers/ariados.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 137 1 -97 33 169 -129 97 9 -1 1 1 -201 65 57 -49 41 33 -169 185 209 -113 17 25 -145 81 225 -233 233 249 -249 193 9 -73 73 73 -241 97 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/armaldo.pal b/graphics/object_events/palettes/followers/armaldo.pal deleted file mode 100644 index 9ca50cb6f..000000000 --- a/graphics/object_events/palettes/followers/armaldo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 9 -17 65 97 -97 145 177 -193 65 105 -193 193 209 -49 49 49 -233 201 73 -57 105 145 -113 113 121 -1 1 1 -233 233 249 -161 41 81 -129 169 201 -81 81 81 -145 145 161 diff --git a/graphics/object_events/palettes/followers/aron.pal b/graphics/object_events/palettes/followers/aron.pal deleted file mode 100644 index 9e423f369..000000000 --- a/graphics/object_events/palettes/followers/aron.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 57 73 -233 233 249 -105 145 201 -89 89 89 -185 185 201 -65 97 129 -49 41 57 -161 161 177 -113 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/articuno.pal b/graphics/object_events/palettes/followers/articuno.pal deleted file mode 100644 index 417a8deb9..000000000 --- a/graphics/object_events/palettes/followers/articuno.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 25 -49 177 193 -161 225 249 -57 57 41 -57 129 137 -177 177 209 -217 249 249 -49 105 153 -161 33 49 -201 185 73 -1 1 1 -121 201 249 -105 161 233 -49 65 89 -233 233 249 diff --git a/graphics/object_events/palettes/followers/azelf.pal b/graphics/object_events/palettes/followers/azelf.pal deleted file mode 100644 index 300aab16d..000000000 --- a/graphics/object_events/palettes/followers/azelf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 33 -113 129 177 -33 65 113 -145 185 209 -169 41 1 -1 1 1 -249 169 153 -49 113 177 -73 73 89 -249 177 17 -233 233 249 -33 89 169 -233 65 33 -177 209 249 -73 129 209 diff --git a/graphics/object_events/palettes/followers/azumarill.pal b/graphics/object_events/palettes/followers/azumarill.pal deleted file mode 100644 index 8efd7cab0..000000000 --- a/graphics/object_events/palettes/followers/azumarill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 161 137 -185 201 225 -57 113 161 -73 145 201 -49 57 65 -233 233 249 -113 177 241 -185 49 41 -33 49 105 -129 161 201 -1 1 1 -209 209 225 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/azurill.pal b/graphics/object_events/palettes/followers/azurill.pal deleted file mode 100644 index bc1bf8496..000000000 --- a/graphics/object_events/palettes/followers/azurill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 65 121 -169 209 241 -185 49 41 -73 137 193 -201 89 161 -49 57 65 -57 105 153 -113 177 241 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bagon.pal b/graphics/object_events/palettes/followers/bagon.pal deleted file mode 100644 index cb37d7d6a..000000000 --- a/graphics/object_events/palettes/followers/bagon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 17 -65 137 161 -201 201 201 -121 121 121 -185 185 185 -41 65 105 -233 233 249 -193 161 73 -1 1 1 -121 193 249 -105 169 225 -153 153 153 -73 81 105 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/baltoy.pal b/graphics/object_events/palettes/followers/baltoy.pal deleted file mode 100644 index 07e4664df..000000000 --- a/graphics/object_events/palettes/followers/baltoy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 113 81 -177 161 97 -217 185 129 -89 81 65 -145 137 89 -1 1 1 -225 201 153 -185 81 41 -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/palettes/followers/banette.pal b/graphics/object_events/palettes/followers/banette.pal deleted file mode 100644 index 1573cfa1a..000000000 --- a/graphics/object_events/palettes/followers/banette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 97 25 -73 57 17 -97 105 129 -41 49 65 -97 17 17 -201 161 49 -1 1 1 -161 129 41 -193 57 57 -129 129 161 -65 73 97 -145 33 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/barboach.pal b/graphics/object_events/palettes/followers/barboach.pal deleted file mode 100644 index ccc983a79..000000000 --- a/graphics/object_events/palettes/followers/barboach.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 145 153 -233 233 249 -89 145 185 -49 65 81 -121 177 209 -89 97 113 -1 1 1 -153 161 177 -57 113 153 -185 185 201 -25 65 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bastiodon.pal b/graphics/object_events/palettes/followers/bastiodon.pal deleted file mode 100644 index 7285edf74..000000000 --- a/graphics/object_events/palettes/followers/bastiodon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 105 73 -121 121 121 -225 169 33 -57 57 57 -1 1 1 -249 185 65 -97 97 97 -193 145 49 -201 201 201 -153 153 153 -73 73 73 -249 185 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bayleef.pal b/graphics/object_events/palettes/followers/bayleef.pal deleted file mode 100644 index bdfc636fc..000000000 --- a/graphics/object_events/palettes/followers/bayleef.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 145 9 -217 217 217 -169 153 89 -161 193 81 -65 81 1 -201 185 89 -177 81 121 -233 233 249 -233 217 89 -1 1 1 -97 81 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/beautifly.pal b/graphics/object_events/palettes/followers/beautifly.pal deleted file mode 100644 index 1f2c4405a..000000000 --- a/graphics/object_events/palettes/followers/beautifly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 169 49 -97 97 105 -81 145 225 -41 41 49 -209 209 217 -185 49 73 -1 1 1 -217 89 97 -177 177 177 -249 217 105 -97 73 33 -49 97 153 -233 233 249 -65 65 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/beedrill.pal b/graphics/object_events/palettes/followers/beedrill.pal deleted file mode 100644 index e4cedddf9..000000000 --- a/graphics/object_events/palettes/followers/beedrill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 41 -193 193 193 -105 81 41 -145 145 145 -193 41 65 -249 209 65 -233 233 249 -81 81 81 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/beldum.pal b/graphics/object_events/palettes/followers/beldum.pal deleted file mode 100644 index 2ed964eb8..000000000 --- a/graphics/object_events/palettes/followers/beldum.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 129 169 -65 65 65 -185 185 201 -177 57 57 -113 161 209 -17 73 105 -153 217 241 -137 41 41 -1 1 1 -41 41 49 -97 97 105 -233 233 249 -153 201 233 -145 145 161 -65 97 121 diff --git a/graphics/object_events/palettes/followers/bellossom.pal b/graphics/object_events/palettes/followers/bellossom.pal deleted file mode 100644 index d6249f109..000000000 --- a/graphics/object_events/palettes/followers/bellossom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 161 65 -233 233 249 -17 65 41 -57 137 89 -241 193 57 -233 81 57 -113 33 9 -217 137 25 -1 1 1 -97 89 9 -193 41 25 -73 105 25 -153 193 113 -217 153 17 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bellsprout.pal b/graphics/object_events/palettes/followers/bellsprout.pal deleted file mode 100644 index 4084780e4..000000000 --- a/graphics/object_events/palettes/followers/bellsprout.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 153 57 -1 1 1 -81 65 49 -241 121 161 -137 217 81 -169 65 113 -121 9 5 -185 161 49 -241 225 73 -65 89 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bibarel.pal b/graphics/object_events/palettes/followers/bibarel.pal deleted file mode 100644 index 8c6e3b227..000000000 --- a/graphics/object_events/palettes/followers/bibarel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 65 -185 185 193 -1 1 1 -73 57 33 -137 137 137 -193 161 65 -89 81 65 -49 49 49 -233 233 249 -153 25 41 -233 209 129 -201 161 97 -177 137 57 -57 57 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bidoof.pal b/graphics/object_events/palettes/followers/bidoof.pal deleted file mode 100644 index 3d8d227c2..000000000 --- a/graphics/object_events/palettes/followers/bidoof.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 65 -185 185 193 -73 57 33 -1 1 1 -193 161 65 -89 81 65 -153 25 41 -233 233 249 -233 209 129 -201 161 97 -57 57 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/blastoise.pal b/graphics/object_events/palettes/followers/blastoise.pal deleted file mode 100644 index 020dadbe0..000000000 --- a/graphics/object_events/palettes/followers/blastoise.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 137 81 -145 137 233 -129 81 9 -241 201 81 -97 97 169 -49 57 89 -137 137 137 -233 233 249 -81 81 81 -185 185 185 -1 1 1 -73 41 9 -177 113 25 -201 169 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/blaziken.pal b/graphics/object_events/palettes/followers/blaziken.pal deleted file mode 100644 index 723203d09..000000000 --- a/graphics/object_events/palettes/followers/blaziken.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 169 17 -33 97 185 -1 1 1 -97 73 1 -169 25 25 -209 185 89 -241 225 153 -113 89 65 -177 129 81 -249 97 89 -241 233 225 -105 17 1 -233 49 41 -249 209 81 -185 169 161 diff --git a/graphics/object_events/palettes/followers/blissey.pal b/graphics/object_events/palettes/followers/blissey.pal deleted file mode 100644 index e169adc07..000000000 --- a/graphics/object_events/palettes/followers/blissey.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 145 169 -169 185 209 -65 73 97 -1 1 1 -225 81 97 -233 233 249 -105 17 65 -249 121 185 -249 169 201 -185 89 137 -201 209 233 -145 65 113 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bonsly.pal b/graphics/object_events/palettes/followers/bonsly.pal deleted file mode 100644 index 50e1d53b2..000000000 --- a/graphics/object_events/palettes/followers/bonsly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 113 73 -201 169 1 -193 97 161 -25 81 17 -1 1 1 -73 153 65 -89 65 17 -225 193 1 -185 153 89 -121 209 121 -113 89 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/breloom.pal b/graphics/object_events/palettes/followers/breloom.pal deleted file mode 100644 index 811a70749..000000000 --- a/graphics/object_events/palettes/followers/breloom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 137 57 -49 81 33 -233 233 249 -129 193 89 -201 65 65 -97 33 33 -1 1 1 -73 113 49 -161 41 41 -129 105 57 -233 209 145 -105 169 65 -33 57 17 -209 185 113 -81 73 49 diff --git a/graphics/object_events/palettes/followers/bronzong.pal b/graphics/object_events/palettes/followers/bronzong.pal deleted file mode 100644 index 978ed89dc..000000000 --- a/graphics/object_events/palettes/followers/bronzong.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 113 105 -73 161 153 -33 57 49 -153 169 169 -129 49 57 -49 137 129 -49 97 89 -1 1 1 -145 193 201 -97 153 153 -41 73 65 -161 49 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzor.pal b/graphics/object_events/palettes/followers/bronzor.pal deleted file mode 100644 index 9db457be9..000000000 --- a/graphics/object_events/palettes/followers/bronzor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 17 -65 121 153 -41 65 65 -1 1 1 -33 81 97 -73 153 193 -233 201 1 -41 97 121 -89 177 209 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/budew.pal b/graphics/object_events/palettes/followers/budew.pal deleted file mode 100644 index 381d462e1..000000000 --- a/graphics/object_events/palettes/followers/budew.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 9 -217 209 57 -33 57 17 -145 113 33 -1 1 1 -65 65 65 -145 201 105 -89 145 17 -201 153 17 -169 217 145 -33 81 9 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/buizel.pal b/graphics/object_events/palettes/followers/buizel.pal deleted file mode 100644 index bed60a6b3..000000000 --- a/graphics/object_events/palettes/followers/buizel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -1 1 1 -161 97 41 -241 225 129 -249 193 33 -65 97 121 -177 193 209 -89 57 49 -73 137 193 -233 233 249 -217 185 73 -201 145 1 -113 113 113 -201 105 33 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bulbasaur1.pal b/graphics/object_events/palettes/followers/bulbasaur1.pal deleted file mode 100644 index 96cbecffe..000000000 --- a/graphics/object_events/palettes/followers/bulbasaur1.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 169 17 -201 201 201 -65 65 65 -65 153 81 -105 17 25 -105 209 121 -137 225 33 -233 233 249 -1 1 1 -185 49 25 -65 97 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/buneary.pal b/graphics/object_events/palettes/followers/buneary.pal deleted file mode 100644 index 1e81873ab..000000000 --- a/graphics/object_events/palettes/followers/buneary.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 65 -233 217 169 -201 161 65 -57 49 33 -97 81 65 -209 121 121 -1 1 1 -145 81 89 -233 233 249 -185 145 89 -233 193 137 -81 81 73 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy.pal b/graphics/object_events/palettes/followers/burmy.pal deleted file mode 100644 index 3d8350f7d..000000000 --- a/graphics/object_events/palettes/followers/burmy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -81 169 25 -41 73 41 -1 1 1 -249 177 1 -49 49 49 -185 121 65 -137 209 57 -97 97 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_sand.pal b/graphics/object_events/palettes/followers/burmy_sand.pal deleted file mode 100644 index b25ba769d..000000000 --- a/graphics/object_events/palettes/followers/burmy_sand.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 177 1 -153 145 97 -201 193 137 -97 81 65 -161 161 161 -49 49 49 -1 1 1 -233 217 137 -97 97 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_trash.pal b/graphics/object_events/palettes/followers/burmy_trash.pal deleted file mode 100644 index 2471c2b33..000000000 --- a/graphics/object_events/palettes/followers/burmy_trash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 177 1 -97 97 97 -1 1 1 -97 49 65 -137 137 137 -49 49 49 -249 169 169 -169 57 105 -217 121 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/butterfree.pal b/graphics/object_events/palettes/followers/butterfree.pal deleted file mode 100644 index 9d7c7c4e3..000000000 --- a/graphics/object_events/palettes/followers/butterfree.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 145 -50 65 145 -105 201 249 -97 97 97 -249 113 137 -193 40 65 -81 145 225 -185 193 225 -65 40 89 -161 105 225 -233 233 249 -113 81 201 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cacnea.pal b/graphics/object_events/palettes/followers/cacnea.pal deleted file mode 100644 index 6787df531..000000000 --- a/graphics/object_events/palettes/followers/cacnea.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 65 -217 225 225 -129 193 121 -41 65 41 -105 169 97 -57 97 57 -81 81 81 -201 153 57 -249 217 89 -249 249 249 -1 1 1 -89 81 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cacturne.pal b/graphics/object_events/palettes/followers/cacturne.pal deleted file mode 100644 index 09c80452f..000000000 --- a/graphics/object_events/palettes/followers/cacturne.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 65 -169 201 121 -41 65 41 -1 1 1 -129 169 65 -57 97 57 -249 217 89 -81 81 81 -105 169 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/camerupt.pal b/graphics/object_events/palettes/followers/camerupt.pal deleted file mode 100644 index da482a575..000000000 --- a/graphics/object_events/palettes/followers/camerupt.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 137 81 -201 73 25 -249 249 249 -73 65 49 -73 145 161 -89 97 97 -161 49 25 -1 1 1 -161 153 121 -217 105 49 -89 33 33 -129 113 81 -193 185 153 -49 57 65 -0 0 0 diff --git a/graphics/object_events/palettes/followers/carnivine.pal b/graphics/object_events/palettes/followers/carnivine.pal deleted file mode 100644 index 7eed39a29..000000000 --- a/graphics/object_events/palettes/followers/carnivine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -177 185 193 -41 73 17 -129 169 65 -81 97 41 -201 153 17 -73 145 25 -145 73 49 -233 233 249 -105 41 41 -1 1 1 -153 201 89 -57 57 57 -137 97 25 -105 137 49 diff --git a/graphics/object_events/palettes/followers/carvanha.pal b/graphics/object_events/palettes/followers/carvanha.pal deleted file mode 100644 index cb0714f8c..000000000 --- a/graphics/object_events/palettes/followers/carvanha.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 9 -17 97 185 -49 121 233 -145 49 9 -1 1 1 -105 81 1 -241 193 17 -233 233 249 -169 177 185 -49 57 65 -201 57 33 -249 81 41 -249 217 33 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cascoon.pal b/graphics/object_events/palettes/followers/cascoon.pal deleted file mode 100644 index b4d002949..000000000 --- a/graphics/object_events/palettes/followers/cascoon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -81 65 121 -209 201 233 -129 33 57 -241 105 105 -161 153 201 -121 105 161 -233 233 249 -185 49 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/castform.pal b/graphics/object_events/palettes/followers/castform.pal deleted file mode 100644 index 057916921..000000000 --- a/graphics/object_events/palettes/followers/castform.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 145 -193 193 209 -65 65 81 -1 1 1 -233 233 249 -97 97 113 -161 161 177 -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/graphics/object_events/palettes/followers/caterpie.pal b/graphics/object_events/palettes/followers/caterpie.pal deleted file mode 100644 index 68f678aba..000000000 --- a/graphics/object_events/palettes/followers/caterpie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 153 41 -169 233 65 -65 89 33 -249 121 113 -81 81 81 -161 49 73 -169 153 65 -249 233 97 -1 1 1 -129 97 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/celebi.pal b/graphics/object_events/palettes/followers/celebi.pal deleted file mode 100644 index 50b97151d..000000000 --- a/graphics/object_events/palettes/followers/celebi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 81 -25 169 225 -121 185 73 -249 249 193 -1 89 137 -33 41 41 -145 153 153 -137 185 241 -193 225 113 -233 233 249 -1 1 1 -33 65 33 -81 177 209 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chansey.pal b/graphics/object_events/palettes/followers/chansey.pal deleted file mode 100644 index 72f30866b..000000000 --- a/graphics/object_events/palettes/followers/chansey.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -233 193 217 -105 57 89 -217 137 185 -153 89 129 -233 233 249 -169 185 209 -225 97 121 -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/palettes/followers/charizard.pal b/graphics/object_events/palettes/followers/charizard.pal deleted file mode 100644 index e817695ce..000000000 --- a/graphics/object_events/palettes/followers/charizard.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 129 129 -161 161 161 -97 49 1 -249 185 17 -41 73 89 -201 89 41 -1 1 1 -145 65 33 -217 217 249 -249 121 57 -193 17 33 -241 209 113 -217 169 49 -97 65 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/charmander.pal b/graphics/object_events/palettes/followers/charmander.pal deleted file mode 100644 index 8df0fb2ef..000000000 --- a/graphics/object_events/palettes/followers/charmander.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -167 177 129 -249 137 57 -97 65 33 -233 233 249 -1 1 1 -185 89 33 -225 41 41 -217 169 49 -41 73 89 -241 209 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/charmeleon.pal b/graphics/object_events/palettes/followers/charmeleon.pal deleted file mode 100644 index 108320b28..000000000 --- a/graphics/object_events/palettes/followers/charmeleon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 169 49 -41 105 129 -177 185 249 -241 209 113 -201 17 41 -145 145 145 -185 65 57 -97 25 33 -233 233 249 -249 105 89 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chatot.pal b/graphics/object_events/palettes/followers/chatot.pal deleted file mode 100644 index c61576eaf..000000000 --- a/graphics/object_events/palettes/followers/chatot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 137 33 -33 129 201 -57 57 57 -129 121 121 -33 81 113 -233 233 249 -161 129 9 -217 129 177 -1 1 1 -145 57 113 -249 169 25 -89 89 89 -153 161 169 -177 57 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cherrim.pal b/graphics/object_events/palettes/followers/cherrim.pal deleted file mode 100644 index 4c7ecbf5d..000000000 --- a/graphics/object_events/palettes/followers/cherrim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 97 17 -113 65 137 -81 41 57 -81 65 97 -81 153 25 -153 73 193 -185 73 121 -65 41 73 -1 1 1 -129 57 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cherubi.pal b/graphics/object_events/palettes/followers/cherubi.pal deleted file mode 100644 index 7aa77baf7..000000000 --- a/graphics/object_events/palettes/followers/cherubi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -41 73 17 -233 233 249 -129 57 89 -81 41 57 -1 1 1 -225 97 145 -73 153 17 -177 25 97 -185 73 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chikorita.pal b/graphics/object_events/palettes/followers/chikorita.pal deleted file mode 100644 index 6f6efef17..000000000 --- a/graphics/object_events/palettes/followers/chikorita.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 145 41 -169 185 209 -145 193 65 -57 105 17 -1 1 1 -169 41 41 -113 177 81 -233 233 249 -193 217 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chimchar.pal b/graphics/object_events/palettes/followers/chimchar.pal deleted file mode 100644 index 1226c2a99..000000000 --- a/graphics/object_events/palettes/followers/chimchar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -105 57 41 -1 1 1 -241 57 41 -193 145 73 -193 193 193 -129 81 41 -185 97 17 -249 233 169 -249 193 1 -233 233 249 -217 185 113 -129 17 17 -209 81 65 -161 89 81 diff --git a/graphics/object_events/palettes/followers/chimecho.pal b/graphics/object_events/palettes/followers/chimecho.pal deleted file mode 100644 index cfbd41a93..000000000 --- a/graphics/object_events/palettes/followers/chimecho.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 57 -161 169 193 -193 57 57 -1 1 1 -121 129 153 -209 209 233 -89 97 121 -113 33 33 -249 217 89 -137 105 33 -233 233 249 -209 161 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chinchou.pal b/graphics/object_events/palettes/followers/chinchou.pal deleted file mode 100644 index 23a92cfb2..000000000 --- a/graphics/object_events/palettes/followers/chinchou.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 17 -97 137 225 -41 57 113 -193 201 217 -81 65 9 -1 1 1 -113 169 241 -185 49 41 -249 209 97 -89 89 161 -129 105 25 -233 233 249 -193 185 217 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chingling.pal b/graphics/object_events/palettes/followers/chingling.pal deleted file mode 100644 index c027c84d6..000000000 --- a/graphics/object_events/palettes/followers/chingling.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 153 41 -1 1 1 -65 65 65 -193 201 209 -137 105 33 -249 193 1 -225 233 241 -137 25 25 -249 249 153 -193 57 57 -89 89 89 -249 225 9 -233 233 249 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/clamperl.pal b/graphics/object_events/palettes/followers/clamperl.pal deleted file mode 100644 index 8ff612cf1..000000000 --- a/graphics/object_events/palettes/followers/clamperl.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 169 -49 65 105 -1 1 1 -169 65 105 -137 161 209 -49 49 65 -73 97 137 -161 193 241 -233 121 161 -137 33 73 -201 89 129 -209 217 233 -97 105 129 -153 169 201 -0 0 0 diff --git a/graphics/object_events/palettes/followers/claydol.pal b/graphics/object_events/palettes/followers/claydol.pal deleted file mode 100644 index 2c319666c..000000000 --- a/graphics/object_events/palettes/followers/claydol.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 25 -137 137 153 -57 49 41 -137 121 89 -193 73 121 -217 185 89 -233 233 249 -89 81 65 -137 41 65 -185 185 193 -233 137 113 -1 1 1 -113 89 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/clefable.pal b/graphics/object_events/palettes/followers/clefable.pal deleted file mode 100644 index a9968049c..000000000 --- a/graphics/object_events/palettes/followers/clefable.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 129 169 -73 57 57 -1 1 1 -217 81 121 -121 97 73 -201 201 201 -225 145 153 -121 57 73 -249 193 193 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/clefairy.pal b/graphics/object_events/palettes/followers/clefairy.pal deleted file mode 100644 index e207e246c..000000000 --- a/graphics/object_events/palettes/followers/clefairy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -97 57 65 -233 233 249 -121 89 57 -169 169 169 -161 81 97 -185 105 129 -241 153 169 -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/palettes/followers/cleffa.pal b/graphics/object_events/palettes/followers/cleffa.pal deleted file mode 100644 index 249bd5c9d..000000000 --- a/graphics/object_events/palettes/followers/cleffa.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 153 -129 73 57 -233 233 249 -169 113 105 -81 41 33 -241 185 193 -217 89 97 -1 1 1 -153 89 97 -97 49 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cloyster.pal b/graphics/object_events/palettes/followers/cloyster.pal deleted file mode 100644 index b15a51ee6..000000000 --- a/graphics/object_events/palettes/followers/cloyster.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -97 97 97 -57 57 57 -233 233 249 -193 177 233 -145 113 185 -41 41 49 -1 1 1 -81 81 81 -97 89 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/combee.pal b/graphics/object_events/palettes/followers/combee.pal deleted file mode 100644 index 53ea130b4..000000000 --- a/graphics/object_events/palettes/followers/combee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 145 25 -73 65 41 -153 185 233 -89 105 129 -249 217 121 -153 105 17 -1 1 1 -169 89 49 -49 49 49 -233 177 57 -201 217 233 -201 105 41 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/combusken.pal b/graphics/object_events/palettes/followers/combusken.pal deleted file mode 100644 index 5658b6a62..000000000 --- a/graphics/object_events/palettes/followers/combusken.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -73 65 17 -169 161 201 -1 1 1 -161 81 17 -113 49 9 -185 161 89 -113 105 49 -233 233 249 -249 209 97 -201 105 17 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/corphish.pal b/graphics/object_events/palettes/followers/corphish.pal deleted file mode 100644 index 4fe98b274..000000000 --- a/graphics/object_events/palettes/followers/corphish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 145 -89 81 65 -233 233 249 -177 177 193 -193 73 33 -161 153 129 -89 25 1 -121 113 97 -233 137 97 -217 105 65 -153 49 9 -1 1 1 -57 73 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/corsola.pal b/graphics/object_events/palettes/followers/corsola.pal deleted file mode 100644 index caf141ec5..000000000 --- a/graphics/object_events/palettes/followers/corsola.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 145 185 -169 185 209 -73 81 97 -1 1 1 -233 233 249 -169 65 89 -121 33 65 -233 129 161 -241 169 193 -217 105 129 -193 209 233 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cradily.pal b/graphics/object_events/palettes/followers/cradily.pal deleted file mode 100644 index 9b10b1bbe..000000000 --- a/graphics/object_events/palettes/followers/cradily.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 129 89 -33 89 49 -241 185 1 -97 169 97 -49 41 49 -193 65 97 -241 209 97 -137 25 57 -209 105 137 -153 217 153 -161 49 89 -1 1 1 -129 113 65 -89 81 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cranidos.pal b/graphics/object_events/palettes/followers/cranidos.pal deleted file mode 100644 index 7a36c9215..000000000 --- a/graphics/object_events/palettes/followers/cranidos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -113 113 113 -201 201 201 -57 57 57 -89 129 233 -145 9 3 -1 1 1 -65 89 153 -233 233 249 -49 57 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/crawdaunt.pal b/graphics/object_events/palettes/followers/crawdaunt.pal deleted file mode 100644 index cd8f78f0c..000000000 --- a/graphics/object_events/palettes/followers/crawdaunt.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -49 57 73 -41 129 169 -201 81 65 -169 153 145 -113 89 25 -233 233 249 -169 169 185 -249 217 89 -89 41 9 -145 57 33 -249 105 97 -89 81 65 -57 145 201 -1 1 1 diff --git a/graphics/object_events/palettes/followers/cresselia.pal b/graphics/object_events/palettes/followers/cresselia.pal deleted file mode 100644 index 549a1ca73..000000000 --- a/graphics/object_events/palettes/followers/cresselia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 137 73 -81 105 161 -89 145 225 -81 65 33 -249 233 169 -1 1 1 -161 73 113 -105 89 57 -105 41 57 -249 169 225 -233 233 249 -217 105 169 -241 193 97 -65 65 65 -0 0 0 diff --git a/graphics/object_events/palettes/followers/croagunk.pal b/graphics/object_events/palettes/followers/croagunk.pal deleted file mode 100644 index 6e43319e5..000000000 --- a/graphics/object_events/palettes/followers/croagunk.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 129 9 -129 129 129 -57 73 129 -193 89 1 -1 1 1 -249 217 57 -49 49 49 -193 153 1 -201 201 201 -89 129 209 -49 97 193 -49 49 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/crobat.pal b/graphics/object_events/palettes/followers/crobat.pal deleted file mode 100644 index 35a380e27..000000000 --- a/graphics/object_events/palettes/followers/crobat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -73 25 121 -41 145 185 -17 97 145 -233 233 249 -121 81 145 -161 49 57 -233 217 97 -169 185 209 -161 113 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/croconaw.pal b/graphics/object_events/palettes/followers/croconaw.pal deleted file mode 100644 index f1504a314..000000000 --- a/graphics/object_events/palettes/followers/croconaw.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 161 89 -73 65 17 -57 169 193 -41 65 97 -113 25 41 -225 209 121 -121 105 41 -233 233 249 -65 105 137 -169 41 65 -113 193 225 -1 1 1 -137 73 1 -209 49 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cubone.pal b/graphics/object_events/palettes/followers/cubone.pal deleted file mode 100644 index 19517af25..000000000 --- a/graphics/object_events/palettes/followers/cubone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 137 89 -193 193 193 -1 1 1 -137 97 25 -217 225 225 -161 161 161 -73 49 49 -129 129 129 -73 73 73 -209 177 145 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cyndaquil.pal b/graphics/object_events/palettes/followers/cyndaquil.pal deleted file mode 100644 index 58b2aa207..000000000 --- a/graphics/object_events/palettes/followers/cyndaquil.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 169 25 -73 73 113 -129 25 25 -97 129 225 -89 65 17 -1 1 1 -209 57 49 -169 185 209 -233 233 249 -33 49 81 -249 209 97 -81 97 161 -161 41 41 -57 65 81 -241 161 17 diff --git a/graphics/object_events/palettes/followers/darkrai.pal b/graphics/object_events/palettes/followers/darkrai.pal deleted file mode 100644 index a379b5238..000000000 --- a/graphics/object_events/palettes/followers/darkrai.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 145 169 -65 65 81 -249 249 249 -49 153 193 -153 49 65 -249 73 65 -49 49 49 -1 1 1 -193 193 225 -97 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/delcatty.pal b/graphics/object_events/palettes/followers/delcatty.pal deleted file mode 100644 index a31726030..000000000 --- a/graphics/object_events/palettes/followers/delcatty.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 121 73 -193 145 217 -65 49 105 -225 185 57 -153 105 201 -1 1 1 -81 73 57 -233 233 249 -233 209 129 -97 73 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/delibird.pal b/graphics/object_events/palettes/followers/delibird.pal deleted file mode 100644 index 899736131..000000000 --- a/graphics/object_events/palettes/followers/delibird.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -129 105 17 -137 1 1 -145 161 177 -185 25 25 -193 209 233 -249 217 89 -73 73 73 -233 233 249 -153 1 1 -201 25 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/deoxys.pal b/graphics/object_events/palettes/followers/deoxys.pal deleted file mode 100644 index a02008116..000000000 --- a/graphics/object_events/palettes/followers/deoxys.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 105 -121 65 129 -57 57 57 -161 177 129 -249 129 81 -225 73 65 -97 17 17 -81 89 97 -233 233 249 -1 1 1 -185 89 209 -65 169 153 -185 41 41 -33 73 65 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dewgong.pal b/graphics/object_events/palettes/followers/dewgong.pal deleted file mode 100644 index 0897c29ff..000000000 --- a/graphics/object_events/palettes/followers/dewgong.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 129 185 -177 185 217 -49 49 81 -225 225 241 -1 1 1 -73 81 121 -233 233 249 -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/graphics/object_events/palettes/followers/dialga.pal b/graphics/object_events/palettes/followers/dialga.pal deleted file mode 100644 index 0a252f361..000000000 --- a/graphics/object_events/palettes/followers/dialga.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -17 17 17 -33 65 105 -185 201 217 -185 33 17 -97 161 193 -97 121 137 -217 233 249 -41 57 73 -241 81 65 -65 129 249 -137 161 177 -33 89 145 -57 121 177 -153 209 241 -0 0 0 diff --git a/graphics/object_events/palettes/followers/diglett.pal b/graphics/object_events/palettes/followers/diglett.pal deleted file mode 100644 index 761624524..000000000 --- a/graphics/object_events/palettes/followers/diglett.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 3 -113 113 113 -65 49 17 -1 1 1 -65 65 65 -169 169 169 -153 33 73 -153 121 57 -209 65 105 -233 113 153 -201 201 201 -113 73 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ditto.pal b/graphics/object_events/palettes/followers/ditto.pal deleted file mode 100644 index c366583be..000000000 --- a/graphics/object_events/palettes/followers/ditto.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 177 -185 145 225 -113 81 145 -65 65 65 -1 1 1 -225 177 241 -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/graphics/object_events/palettes/followers/dodrio.pal b/graphics/object_events/palettes/followers/dodrio.pal deleted file mode 100644 index 183414bf0..000000000 --- a/graphics/object_events/palettes/followers/dodrio.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 129 73 -121 81 41 -177 177 153 -129 129 129 -65 49 33 -137 97 41 -193 161 65 -1 1 1 -233 233 249 -97 25 33 -185 65 89 -225 129 145 -249 177 49 -57 57 57 -137 113 41 diff --git a/graphics/object_events/palettes/followers/doduo.pal b/graphics/object_events/palettes/followers/doduo.pal deleted file mode 100644 index eea5b6958..000000000 --- a/graphics/object_events/palettes/followers/doduo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 97 41 -1 1 1 -113 105 97 -73 57 41 -193 121 25 -225 177 105 -185 129 73 -105 73 33 -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/palettes/followers/donphan.pal b/graphics/object_events/palettes/followers/donphan.pal deleted file mode 100644 index df25c4cb5..000000000 --- a/graphics/object_events/palettes/followers/donphan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 137 153 -73 65 73 -249 249 249 -1 1 1 -25 41 57 -121 121 129 -73 89 113 -185 185 193 -137 25 25 -137 1 1 -153 153 161 -49 73 81 -185 185 201 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonair.pal b/graphics/object_events/palettes/followers/dragonair.pal deleted file mode 100644 index 5f7e4eaa8..000000000 --- a/graphics/object_events/palettes/followers/dragonair.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -209 209 209 -65 65 65 -41 121 169 -81 145 217 -233 233 249 -105 105 105 -89 177 217 -145 41 33 -161 201 249 -49 65 105 -113 177 241 -81 113 177 -241 241 241 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonite.pal b/graphics/object_events/palettes/followers/dragonite.pal deleted file mode 100644 index c17cc58ce..000000000 --- a/graphics/object_events/palettes/followers/dragonite.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 129 65 -145 153 161 -241 177 81 -65 57 33 -57 129 113 -1 1 1 -41 97 81 -233 233 249 -185 193 209 -153 97 49 -153 153 153 -233 201 153 -97 97 97 -209 169 121 -217 137 65 diff --git a/graphics/object_events/palettes/followers/drapion.pal b/graphics/object_events/palettes/followers/drapion.pal deleted file mode 100644 index 5c02aa8d8..000000000 --- a/graphics/object_events/palettes/followers/drapion.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -33 121 113 -105 65 113 -177 185 193 -49 41 57 -169 137 201 -41 161 153 -129 89 169 -73 49 81 -233 233 249 -1 1 1 -33 33 41 -121 129 137 -81 33 73 -145 97 161 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dratini.pal b/graphics/object_events/palettes/followers/dratini.pal deleted file mode 100644 index b8472f998..000000000 --- a/graphics/object_events/palettes/followers/dratini.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 65 65 -193 193 217 -97 113 169 -129 137 209 -105 105 105 -217 217 217 -145 41 33 -153 161 225 -233 233 249 -57 65 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/drifblim.pal b/graphics/object_events/palettes/followers/drifblim.pal deleted file mode 100644 index 1cd025435..000000000 --- a/graphics/object_events/palettes/followers/drifblim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 57 -89 65 121 -153 121 225 -217 17 41 -49 49 49 -129 129 153 -129 97 185 -89 89 113 -233 233 249 -209 177 89 -1 1 1 -169 161 201 -105 17 25 -65 65 65 -105 105 129 diff --git a/graphics/object_events/palettes/followers/drifloon.pal b/graphics/object_events/palettes/followers/drifloon.pal deleted file mode 100644 index 57bb7a2ff..000000000 --- a/graphics/object_events/palettes/followers/drifloon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 57 -169 137 225 -89 65 121 -225 177 89 -233 233 249 -129 97 185 -65 65 65 -169 161 201 -1 1 1 -89 89 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/drowzee.pal b/graphics/object_events/palettes/followers/drowzee.pal deleted file mode 100644 index d19de6d0d..000000000 --- a/graphics/object_events/palettes/followers/drowzee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -81 65 49 -233 233 249 -105 81 121 -1 1 1 -121 105 33 -49 49 49 -233 201 81 -89 81 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dugtrio.pal b/graphics/object_events/palettes/followers/dugtrio.pal deleted file mode 100644 index 19bbad592..000000000 --- a/graphics/object_events/palettes/followers/dugtrio.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 105 57 -57 41 17 -1 1 1 -113 113 113 -65 65 65 -129 17 49 -169 169 169 -153 121 57 -209 65 105 -233 121 153 -201 201 201 -113 73 33 -153 33 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dunsparce.pal b/graphics/object_events/palettes/followers/dunsparce.pal deleted file mode 100644 index 9cc03ea9e..000000000 --- a/graphics/object_events/palettes/followers/dunsparce.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 169 1 -1 1 1 -137 185 225 -25 57 73 -217 193 1 -233 233 249 -249 225 161 -185 209 241 -249 233 113 -153 137 105 -81 161 185 -65 81 97 -65 57 57 -121 193 217 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dusclops.pal b/graphics/object_events/palettes/followers/dusclops.pal deleted file mode 100644 index 30d44a7a9..000000000 --- a/graphics/object_events/palettes/followers/dusclops.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 113 -185 185 185 -73 65 49 -161 161 161 -209 97 97 -1 1 1 -225 217 217 -105 89 81 -145 33 33 -169 177 201 -233 233 249 -185 177 177 -65 65 65 -121 121 121 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dusknoir.pal b/graphics/object_events/palettes/followers/dusknoir.pal deleted file mode 100644 index 35fe7b837..000000000 --- a/graphics/object_events/palettes/followers/dusknoir.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 97 9 -121 121 121 -49 49 49 -1 1 1 -241 177 1 -145 33 33 -201 129 17 -209 97 97 -81 81 81 -161 161 161 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/duskull.pal b/graphics/object_events/palettes/followers/duskull.pal deleted file mode 100644 index 5f79a1d4e..000000000 --- a/graphics/object_events/palettes/followers/duskull.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 113 -73 65 49 -1 1 1 -193 57 57 -145 33 33 -217 113 113 -81 89 113 -201 185 185 -33 41 57 -225 217 217 -105 113 145 -57 65 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dustox.pal b/graphics/object_events/palettes/followers/dustox.pal deleted file mode 100644 index 72e80bb45..000000000 --- a/graphics/object_events/palettes/followers/dustox.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 57 -73 57 113 -161 145 217 -137 185 105 -57 57 57 -169 217 89 -185 49 73 -241 105 105 -121 97 169 -105 153 41 -65 89 33 -97 73 33 -241 217 105 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/eevee.pal b/graphics/object_events/palettes/followers/eevee.pal deleted file mode 100644 index c04ada4ee..000000000 --- a/graphics/object_events/palettes/followers/eevee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 65 -225 209 169 -97 65 57 -185 161 97 -129 97 49 -65 49 25 -193 145 81 -233 233 249 -1 1 1 -121 97 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ekans.pal b/graphics/object_events/palettes/followers/ekans.pal deleted file mode 100644 index b163ae5c8..000000000 --- a/graphics/object_events/palettes/followers/ekans.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 161 49 -113 97 41 -201 129 193 -121 81 121 -97 49 105 -249 217 65 -1 1 1 -145 97 145 -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/palettes/followers/electabuzz.pal b/graphics/object_events/palettes/followers/electabuzz.pal deleted file mode 100644 index 9c31f633c..000000000 --- a/graphics/object_events/palettes/followers/electabuzz.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 17 -145 145 145 -65 57 33 -233 233 249 -73 81 81 -241 209 1 -1 1 1 -49 49 49 -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/palettes/followers/electivire.pal b/graphics/object_events/palettes/followers/electivire.pal deleted file mode 100644 index 85b21aa79..000000000 --- a/graphics/object_events/palettes/followers/electivire.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 17 -65 57 33 -145 145 145 -177 9 3 -89 89 89 -193 193 209 -49 49 49 -241 209 1 -249 233 121 -241 97 113 -233 233 249 -73 25 33 -113 89 25 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/electrike.pal b/graphics/object_events/palettes/followers/electrike.pal deleted file mode 100644 index 5d0115cfa..000000000 --- a/graphics/object_events/palettes/followers/electrike.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 137 65 -233 233 249 -249 209 65 -129 169 97 -33 57 9 -153 201 97 -193 145 41 -1 1 1 -113 81 25 -177 225 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/electrode.pal b/graphics/object_events/palettes/followers/electrode.pal deleted file mode 100644 index 335df9141..000000000 --- a/graphics/object_events/palettes/followers/electrode.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -185 185 193 -105 105 105 -201 33 33 -217 217 217 -49 49 49 -161 161 161 -233 233 249 -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/palettes/followers/elekid.pal b/graphics/object_events/palettes/followers/elekid.pal deleted file mode 100644 index b3d6b954a..000000000 --- a/graphics/object_events/palettes/followers/elekid.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 1 -105 81 1 -1 1 1 -193 113 1 -249 217 97 -57 65 73 -233 233 249 -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/graphics/object_events/palettes/followers/empoleon.pal b/graphics/object_events/palettes/followers/empoleon.pal deleted file mode 100644 index 8ebe2c905..000000000 --- a/graphics/object_events/palettes/followers/empoleon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 137 25 -81 129 161 -57 57 97 -121 193 241 -97 81 33 -1 1 1 -233 233 249 -41 41 41 -249 201 89 -65 73 145 -185 193 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/entei.pal b/graphics/object_events/palettes/followers/entei.pal deleted file mode 100644 index 934782cde..000000000 --- a/graphics/object_events/palettes/followers/entei.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 137 25 -97 65 49 -113 137 145 -49 57 81 -249 217 57 -217 73 33 -169 25 1 -89 81 25 -169 193 209 -1 1 1 -73 49 41 -233 233 249 -89 97 121 -169 121 81 -129 89 57 diff --git a/graphics/object_events/palettes/followers/espeon.pal b/graphics/object_events/palettes/followers/espeon.pal deleted file mode 100644 index 814e30a6e..000000000 --- a/graphics/object_events/palettes/followers/espeon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -49 33 121 -241 201 233 -233 137 177 -57 113 177 -225 177 217 -201 57 49 -81 41 121 -169 105 161 -233 233 249 -201 145 209 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/exeggcute.pal b/graphics/object_events/palettes/followers/exeggcute.pal deleted file mode 100644 index 665e1c152..000000000 --- a/graphics/object_events/palettes/followers/exeggcute.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 121 105 -233 177 185 -89 73 65 -233 177 57 -241 209 217 -161 97 105 -1 1 1 -233 233 249 -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/palettes/followers/exeggutor.pal b/graphics/object_events/palettes/followers/exeggutor.pal deleted file mode 100644 index 9e45a52b5..000000000 --- a/graphics/object_events/palettes/followers/exeggutor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 169 41 -161 161 161 -57 81 41 -129 217 89 -201 137 89 -201 89 121 -145 97 57 -209 161 89 -233 233 249 -65 41 41 -249 201 89 -1 1 1 -89 73 65 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/exploud.pal b/graphics/object_events/palettes/followers/exploud.pal deleted file mode 100644 index 000d9c38f..000000000 --- a/graphics/object_events/palettes/followers/exploud.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 49 -105 73 33 -137 129 185 -81 73 105 -41 49 65 -233 233 249 -105 97 153 -233 209 105 -1 1 1 -169 177 193 -113 33 49 -185 65 105 -177 169 225 -105 113 137 -137 41 65 diff --git a/graphics/object_events/palettes/followers/farfetchd.pal b/graphics/object_events/palettes/followers/farfetchd.pal deleted file mode 100644 index 5c23264c2..000000000 --- a/graphics/object_events/palettes/followers/farfetchd.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 145 33 -169 169 169 -249 201 49 -81 81 81 -153 161 113 -241 225 161 -1 1 1 -177 145 41 -73 57 41 -233 233 249 -137 113 65 -209 209 193 -177 129 73 -217 169 121 -201 185 121 diff --git a/graphics/object_events/palettes/followers/fearow.pal b/graphics/object_events/palettes/followers/fearow.pal deleted file mode 100644 index 04f68a619..000000000 --- a/graphics/object_events/palettes/followers/fearow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 145 33 -241 129 153 -193 65 1 -225 129 97 -185 185 185 -65 65 65 -89 57 17 -185 169 113 -233 233 249 -177 81 121 -177 113 17 -89 17 9 -225 201 169 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/feebas.pal b/graphics/object_events/palettes/followers/feebas.pal deleted file mode 100644 index f5ca9d67c..000000000 --- a/graphics/object_events/palettes/followers/feebas.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 73 -113 161 209 -73 57 33 -1 1 1 -49 81 113 -81 121 161 -233 233 249 -17 41 65 -193 65 105 -193 193 209 -169 153 89 -105 89 49 -201 185 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/feraligatr.pal b/graphics/object_events/palettes/followers/feraligatr.pal deleted file mode 100644 index 043239005..000000000 --- a/graphics/object_events/palettes/followers/feraligatr.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 41 -81 129 185 -73 65 17 -185 161 89 -161 209 241 -169 41 65 -225 193 121 -161 177 201 -17 65 97 -97 33 41 -65 105 137 -233 233 249 -1 1 1 -113 177 233 -209 49 73 diff --git a/graphics/object_events/palettes/followers/finneon.pal b/graphics/object_events/palettes/followers/finneon.pal deleted file mode 100644 index b5bd33caf..000000000 --- a/graphics/object_events/palettes/followers/finneon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 161 -49 57 65 -1 1 1 -73 97 97 -169 65 113 -161 209 217 -105 1 1 -241 121 161 -249 185 209 -49 73 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/flaaffy.pal b/graphics/object_events/palettes/followers/flaaffy.pal deleted file mode 100644 index 3e934d7da..000000000 --- a/graphics/object_events/palettes/followers/flaaffy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 185 89 -57 153 193 -97 201 241 -49 57 65 -225 145 185 -33 89 145 -185 201 225 -185 97 129 -113 41 65 -249 185 217 -233 233 249 -89 105 121 -137 153 177 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/flareon.pal b/graphics/object_events/palettes/followers/flareon.pal deleted file mode 100644 index df0c348e5..000000000 --- a/graphics/object_events/palettes/followers/flareon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 49 -233 217 153 -73 57 41 -153 65 41 -217 169 73 -233 233 249 -217 89 33 -249 129 73 -1 1 1 -217 193 193 -81 65 65 -193 65 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/floatzel.pal b/graphics/object_events/palettes/followers/floatzel.pal deleted file mode 100644 index eccd4ed4b..000000000 --- a/graphics/object_events/palettes/followers/floatzel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 129 1 -129 65 33 -73 137 193 -89 89 89 -241 225 129 -161 97 1 -249 193 33 -1 1 1 -233 233 249 -57 49 41 -169 185 201 -209 185 97 -233 113 49 -65 97 121 -185 73 33 diff --git a/graphics/object_events/palettes/followers/flygon.pal b/graphics/object_events/palettes/followers/flygon.pal deleted file mode 100644 index 3ed7c9537..000000000 --- a/graphics/object_events/palettes/followers/flygon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 65 -65 105 57 -185 193 209 -129 33 33 -161 193 97 -1 1 1 -249 129 153 -169 49 65 -249 249 249 -49 73 49 -193 217 153 -97 97 97 -209 65 89 -121 145 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/forretress.pal b/graphics/object_events/palettes/followers/forretress.pal deleted file mode 100644 index 12bb3be0e..000000000 --- a/graphics/object_events/palettes/followers/forretress.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 137 137 -89 65 105 -225 209 249 -105 17 25 -185 153 185 -137 113 145 -49 49 49 -1 1 1 -217 97 65 -193 49 57 -209 185 217 -233 233 249 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/froslass.pal b/graphics/object_events/palettes/followers/froslass.pal deleted file mode 100644 index 07f7c145f..000000000 --- a/graphics/object_events/palettes/followers/froslass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 225 9 -57 121 153 -81 41 81 -193 201 217 -89 161 201 -65 65 65 -153 153 153 -41 73 89 -1 1 1 -193 57 33 -233 233 249 -129 73 129 -153 161 177 -113 121 137 -121 65 57 diff --git a/graphics/object_events/palettes/followers/furret.pal b/graphics/object_events/palettes/followers/furret.pal deleted file mode 100644 index 923ed8670..000000000 --- a/graphics/object_events/palettes/followers/furret.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -113 81 49 -233 233 249 -65 33 9 -241 209 161 -209 177 113 -153 113 65 -89 57 25 -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/palettes/followers/gabite.pal b/graphics/object_events/palettes/followers/gabite.pal deleted file mode 100644 index 77ded75c3..000000000 --- a/graphics/object_events/palettes/followers/gabite.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 9 -153 153 153 -41 49 97 -233 233 249 -121 137 209 -105 105 105 -129 49 17 -1 1 1 -249 225 9 -81 113 185 -177 177 233 -57 81 121 -105 145 193 -185 65 25 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gallade.pal b/graphics/object_events/palettes/followers/gallade.pal deleted file mode 100644 index 7cd2a4e39..000000000 --- a/graphics/object_events/palettes/followers/gallade.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 145 49 -3 84 13 -137 137 153 -73 73 81 -129 33 57 -31 110 20 -105 201 225 -34 34 34 -1 1 1 -25 185 201 -205 205 219 -233 233 249 -25 105 97 -49 177 65 -185 49 73 diff --git a/graphics/object_events/palettes/followers/garchomp.pal b/graphics/object_events/palettes/followers/garchomp.pal deleted file mode 100644 index 3ef28d97b..000000000 --- a/graphics/object_events/palettes/followers/garchomp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 1 -185 65 25 -1 1 1 -201 201 209 -73 81 121 -49 49 81 -169 169 169 -97 113 161 -249 225 9 -129 49 17 -233 233 249 -121 153 201 -105 105 105 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gardevoir.pal b/graphics/object_events/palettes/followers/gardevoir.pal deleted file mode 100644 index 7fc27c511..000000000 --- a/graphics/object_events/palettes/followers/gardevoir.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 57 -169 169 177 -17 65 33 -73 177 89 -129 33 57 -129 129 145 -233 233 249 -241 105 105 -1 1 1 -201 201 217 -73 73 81 -105 201 129 -185 49 73 -145 145 145 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gastly.pal b/graphics/object_events/palettes/followers/gastly.pal deleted file mode 100644 index e3337fe80..000000000 --- a/graphics/object_events/palettes/followers/gastly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 137 137 -73 73 73 -65 17 57 -233 233 249 -41 41 57 -1 1 1 -113 89 153 -81 57 105 -153 9 5 -185 185 185 -137 113 161 -57 57 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_east.pal b/graphics/object_events/palettes/followers/gastrodon_east.pal deleted file mode 100644 index bbaf701c0..000000000 --- a/graphics/object_events/palettes/followers/gastrodon_east.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 121 41 -49 113 129 -249 209 89 -1 1 1 -49 49 49 -145 121 49 -41 153 185 -49 81 49 -185 185 201 -201 161 1 -65 185 233 -89 161 65 -33 73 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_west.pal b/graphics/object_events/palettes/followers/gastrodon_west.pal deleted file mode 100644 index ad3e3ec2d..000000000 --- a/graphics/object_events/palettes/followers/gastrodon_west.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 49 -113 73 57 -201 121 169 -49 49 49 -1 1 1 -249 209 89 -153 97 129 -73 49 41 -201 161 1 -185 185 201 -233 153 217 -161 105 65 -81 41 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gengar.pal b/graphics/object_events/palettes/followers/gengar.pal deleted file mode 100644 index 374fed5aa..000000000 --- a/graphics/object_events/palettes/followers/gengar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 97 97 -153 153 153 -81 57 105 -185 185 185 -145 121 161 -41 41 57 -217 97 97 -1 1 1 -249 169 161 -105 81 129 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/geodude.pal b/graphics/object_events/palettes/followers/geodude.pal deleted file mode 100644 index ef0621ad0..000000000 --- a/graphics/object_events/palettes/followers/geodude.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 169 129 -121 113 97 -233 233 249 -65 49 33 -1 1 1 -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/graphics/object_events/palettes/followers/gible.pal b/graphics/object_events/palettes/followers/gible.pal deleted file mode 100644 index 0f9c39f2b..000000000 --- a/graphics/object_events/palettes/followers/gible.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 137 137 -137 193 217 -57 57 57 -1 1 1 -185 65 25 -105 169 169 -33 41 49 -153 153 153 -225 225 225 -49 89 89 -113 169 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/girafarig.pal b/graphics/object_events/palettes/followers/girafarig.pal deleted file mode 100644 index 5d0e01229..000000000 --- a/graphics/object_events/palettes/followers/girafarig.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 81 -33 65 121 -249 209 97 -73 49 17 -185 81 105 -161 177 201 -41 49 57 -201 161 81 -233 233 249 -233 113 185 -57 113 161 -105 81 57 -1 1 1 -73 81 89 -97 113 153 diff --git a/graphics/object_events/palettes/followers/giratina_normal.pal b/graphics/object_events/palettes/followers/giratina_normal.pal deleted file mode 100644 index 81030443f..000000000 --- a/graphics/object_events/palettes/followers/giratina_normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 153 25 -105 97 25 -17 17 17 -169 49 65 -89 89 113 -249 249 209 -57 65 65 -137 137 169 -233 209 25 -241 81 65 -169 177 201 -113 113 145 -41 41 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_origin.pal b/graphics/object_events/palettes/followers/giratina_origin.pal deleted file mode 100644 index 5b5e3d16c..000000000 --- a/graphics/object_events/palettes/followers/giratina_origin.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 153 25 -169 49 65 -145 145 145 -97 81 17 -249 249 209 -17 17 17 -57 57 57 -41 41 41 -233 209 25 -241 81 65 -185 185 185 -81 81 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/glaceon.pal b/graphics/object_events/palettes/followers/glaceon.pal deleted file mode 100644 index 37de2af57..000000000 --- a/graphics/object_events/palettes/followers/glaceon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 145 137 -113 201 225 -49 153 177 -49 65 81 -137 225 233 -1 1 1 -25 97 113 -209 225 233 -81 185 217 -41 153 169 -177 233 249 -33 105 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/glalie.pal b/graphics/object_events/palettes/followers/glalie.pal deleted file mode 100644 index 8938d2810..000000000 --- a/graphics/object_events/palettes/followers/glalie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 137 -1 1 1 -57 57 73 -153 161 177 -41 41 57 -41 129 193 -193 201 217 -81 81 97 -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/palettes/followers/glameow.pal b/graphics/object_events/palettes/followers/glameow.pal deleted file mode 100644 index 676585d12..000000000 --- a/graphics/object_events/palettes/followers/glameow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 153 41 -17 33 105 -153 153 153 -113 113 113 -129 129 129 -233 233 249 -49 49 49 -177 57 105 -209 97 177 -193 193 193 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gligar.pal b/graphics/object_events/palettes/followers/gligar.pal deleted file mode 100644 index 74a83d573..000000000 --- a/graphics/object_events/palettes/followers/gligar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 145 169 -89 41 97 -241 193 217 -9 89 129 -161 89 137 -1 1 1 -233 233 249 -201 113 177 -137 33 57 -225 153 209 -177 73 121 -209 105 153 -169 185 161 -201 209 217 -17 97 129 diff --git a/graphics/object_events/palettes/followers/gliscor.pal b/graphics/object_events/palettes/followers/gliscor.pal deleted file mode 100644 index e9e50885f..000000000 --- a/graphics/object_events/palettes/followers/gliscor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 1 -65 65 65 -1 1 1 -33 41 89 -137 137 209 -121 25 17 -97 97 97 -153 153 153 -249 217 57 -33 33 33 -153 169 225 -105 33 81 -169 41 25 -169 169 169 -97 97 113 diff --git a/graphics/object_events/palettes/followers/gloom.pal b/graphics/object_events/palettes/followers/gloom.pal deleted file mode 100644 index 638da245d..000000000 --- a/graphics/object_events/palettes/followers/gloom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 113 25 -81 41 129 -65 113 153 -217 145 145 -169 49 73 -169 81 17 -49 81 113 -1 1 1 -217 97 113 -121 33 17 -169 169 169 -33 57 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/golbat.pal b/graphics/object_events/palettes/followers/golbat.pal deleted file mode 100644 index 7d30f2f34..000000000 --- a/graphics/object_events/palettes/followers/golbat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 145 153 -97 65 129 -233 233 249 -57 25 89 -81 185 177 -65 113 121 -17 57 65 -1 1 1 -137 97 185 -185 185 193 -57 57 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/goldeen.pal b/graphics/object_events/palettes/followers/goldeen.pal deleted file mode 100644 index 3e9389b60..000000000 --- a/graphics/object_events/palettes/followers/goldeen.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 113 -177 177 177 -233 73 33 -249 233 161 -217 161 81 -97 17 1 -81 81 81 -241 129 161 -233 233 249 -1 1 1 -201 89 121 -161 33 17 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/golduck.pal b/graphics/object_events/palettes/followers/golduck.pal deleted file mode 100644 index c1568e666..000000000 --- a/graphics/object_events/palettes/followers/golduck.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 185 65 -81 121 169 -241 49 113 -65 65 65 -249 233 137 -233 233 249 -1 1 1 -177 177 209 -89 17 33 -121 161 249 -249 193 81 -49 57 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/golem.pal b/graphics/object_events/palettes/followers/golem.pal deleted file mode 100644 index d2852e60c..000000000 --- a/graphics/object_events/palettes/followers/golem.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 105 -89 81 57 -193 193 193 -153 153 153 -121 113 81 -49 49 49 -1 1 1 -105 17 25 -233 233 249 -193 153 121 -113 89 73 -145 113 97 -161 161 161 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gorebyss.pal b/graphics/object_events/palettes/followers/gorebyss.pal deleted file mode 100644 index af3c25028..000000000 --- a/graphics/object_events/palettes/followers/gorebyss.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 121 137 -81 57 129 -209 217 233 -145 129 217 -121 105 185 -97 105 129 -49 49 65 -1 1 1 -153 169 201 -185 81 97 -201 89 113 -137 33 73 -169 153 241 -233 145 161 -233 233 249 diff --git a/graphics/object_events/palettes/followers/granbull.pal b/graphics/object_events/palettes/followers/granbull.pal deleted file mode 100644 index ed5998bfc..000000000 --- a/graphics/object_events/palettes/followers/granbull.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 121 137 -177 193 209 -49 65 81 -129 89 137 -1 1 1 -233 233 249 -193 145 209 -225 185 241 -161 113 169 -105 65 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/graveler.pal b/graphics/object_events/palettes/followers/graveler.pal deleted file mode 100644 index b4d24683f..000000000 --- a/graphics/object_events/palettes/followers/graveler.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 137 105 -81 73 65 -233 233 249 -169 169 177 -185 169 129 -121 113 97 -57 49 49 -177 81 105 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/grimer.pal b/graphics/object_events/palettes/followers/grimer.pal deleted file mode 100644 index fef0c2dba..000000000 --- a/graphics/object_events/palettes/followers/grimer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 57 65 -233 233 249 -105 81 121 -177 145 185 -129 105 137 -201 177 217 -121 97 153 -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/palettes/followers/grotle.pal b/graphics/object_events/palettes/followers/grotle.pal deleted file mode 100644 index d646bba5d..000000000 --- a/graphics/object_events/palettes/followers/grotle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 161 49 -169 177 201 -129 201 49 -81 73 57 -97 177 81 -153 113 57 -105 89 73 -201 145 25 -233 233 249 -161 225 113 -225 185 41 -1 1 1 -73 73 73 -57 81 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/groudon.pal b/graphics/object_events/palettes/followers/groudon.pal deleted file mode 100644 index 28f20e54a..000000000 --- a/graphics/object_events/palettes/followers/groudon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 129 145 -217 73 65 -145 153 177 -137 25 17 -57 65 81 -33 41 57 -209 193 49 -185 201 217 -1 1 1 -129 113 25 -97 105 121 -233 233 249 -89 17 9 -73 81 97 -177 33 33 diff --git a/graphics/object_events/palettes/followers/grovyle.pal b/graphics/object_events/palettes/followers/grovyle.pal deleted file mode 100644 index d1df22d69..000000000 --- a/graphics/object_events/palettes/followers/grovyle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 121 65 -41 57 17 -1 1 1 -105 25 25 -97 153 73 -153 201 121 -153 41 41 -65 105 41 -249 217 89 -185 49 49 -113 153 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/growlithe.pal b/graphics/object_events/palettes/followers/growlithe.pal deleted file mode 100644 index cc0737467..000000000 --- a/graphics/object_events/palettes/followers/growlithe.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 121 73 -73 49 25 -177 177 209 -89 89 89 -1 1 1 -145 73 33 -137 89 41 -201 153 81 -233 233 249 -225 193 145 -185 81 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/grumpig.pal b/graphics/object_events/palettes/followers/grumpig.pal deleted file mode 100644 index 0563b27ca..000000000 --- a/graphics/object_events/palettes/followers/grumpig.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -121 65 145 -73 81 89 -153 89 185 -105 25 65 -185 73 129 -49 57 65 -193 193 193 -249 249 249 -113 121 121 -193 121 225 -145 49 97 -225 97 161 -81 41 105 -137 73 169 diff --git a/graphics/object_events/palettes/followers/gulpin.pal b/graphics/object_events/palettes/followers/gulpin.pal deleted file mode 100644 index 28cdbf17d..000000000 --- a/graphics/object_events/palettes/followers/gulpin.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 121 41 -57 97 17 -233 185 65 -57 73 81 -105 153 65 -1 1 1 -33 49 17 -169 129 57 -113 89 41 -137 193 113 -73 89 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gyarados.pal b/graphics/object_events/palettes/followers/gyarados.pal deleted file mode 100644 index 3019ff479..000000000 --- a/graphics/object_events/palettes/followers/gyarados.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 129 1 -41 129 129 -193 193 209 -137 97 33 -73 177 225 -1 1 1 -33 97 129 -249 201 105 -185 65 105 -49 57 81 -217 113 153 -233 233 249 -137 145 145 -177 137 49 -65 121 153 diff --git a/graphics/object_events/palettes/followers/happiny.pal b/graphics/object_events/palettes/followers/happiny.pal deleted file mode 100644 index 2d1c97537..000000000 --- a/graphics/object_events/palettes/followers/happiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 129 161 -121 73 89 -169 185 209 -193 73 97 -1 1 1 -217 97 113 -97 33 41 -233 233 249 -249 177 193 -185 97 129 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hariyama.pal b/graphics/object_events/palettes/followers/hariyama.pal deleted file mode 100644 index 9ae8eaef4..000000000 --- a/graphics/object_events/palettes/followers/hariyama.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 121 33 -105 129 177 -25 41 89 -73 57 9 -217 185 65 -217 201 153 -185 153 105 -105 81 65 -233 233 249 -65 81 137 -185 89 17 -1 1 1 -97 33 9 -241 233 193 -209 129 57 diff --git a/graphics/object_events/palettes/followers/haunter.pal b/graphics/object_events/palettes/followers/haunter.pal deleted file mode 100644 index aab1166f2..000000000 --- a/graphics/object_events/palettes/followers/haunter.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 161 -73 73 73 -233 233 249 -65 17 57 -1 1 1 -97 73 105 -65 49 57 -153 153 153 -185 185 185 -129 97 129 -97 33 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/heatran.pal b/graphics/object_events/palettes/followers/heatran.pal deleted file mode 100644 index d1a451452..000000000 --- a/graphics/object_events/palettes/followers/heatran.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 121 1 -49 57 81 -129 129 137 -241 81 65 -169 41 33 -97 65 65 -193 193 209 -65 25 41 -233 233 249 -1 1 1 -177 105 89 -233 153 1 -73 81 97 -41 41 41 -137 65 65 diff --git a/graphics/object_events/palettes/followers/heracross.pal b/graphics/object_events/palettes/followers/heracross.pal deleted file mode 100644 index 26bd7164c..000000000 --- a/graphics/object_events/palettes/followers/heracross.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 137 9 -81 153 177 -153 89 1 -249 249 249 -17 73 97 -129 193 201 -57 121 145 -1 1 1 -241 177 65 -33 97 121 -153 169 185 -185 201 217 -57 73 81 -17 17 17 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hippopotas.pal b/graphics/object_events/palettes/followers/hippopotas.pal deleted file mode 100644 index 874dfa505..000000000 --- a/graphics/object_events/palettes/followers/hippopotas.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 57 -185 185 193 -209 177 57 -73 57 33 -1 1 1 -137 137 137 -137 89 57 -185 121 81 -233 233 249 -225 201 113 -209 177 81 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hippowdon.pal b/graphics/object_events/palettes/followers/hippowdon.pal deleted file mode 100644 index 70e70b15c..000000000 --- a/graphics/object_events/palettes/followers/hippowdon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 57 -153 153 153 -73 73 73 -1 1 1 -201 201 209 -97 97 97 -49 49 49 -209 177 81 -193 57 81 -169 169 169 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonchan.pal b/graphics/object_events/palettes/followers/hitmonchan.pal deleted file mode 100644 index 7c6c8e38c..000000000 --- a/graphics/object_events/palettes/followers/hitmonchan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 161 105 -113 81 57 -145 25 41 -233 233 249 -73 49 49 -161 137 201 -113 105 129 -1 1 1 -225 57 57 -153 113 65 -57 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonlee.pal b/graphics/object_events/palettes/followers/hitmonlee.pal deleted file mode 100644 index 16a145cac..000000000 --- a/graphics/object_events/palettes/followers/hitmonlee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 49 -161 161 161 -1 1 1 -89 73 41 -177 145 129 -161 129 81 -201 201 209 -97 97 97 -73 49 49 -233 233 249 -121 97 57 -209 185 113 -153 137 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmontop.pal b/graphics/object_events/palettes/followers/hitmontop.pal deleted file mode 100644 index cb5c2f1ee..000000000 --- a/graphics/object_events/palettes/followers/hitmontop.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 129 73 -97 153 209 -89 73 25 -209 161 105 -233 233 249 -57 113 161 -25 57 105 -177 185 193 -1 1 1 -129 81 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ho_oh.pal b/graphics/object_events/palettes/followers/ho_oh.pal deleted file mode 100644 index dcc241696..000000000 --- a/graphics/object_events/palettes/followers/ho_oh.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 153 1 -57 57 57 -1 1 1 -161 57 25 -129 201 81 -169 185 209 -81 25 1 -169 105 1 -97 121 121 -217 233 249 -57 97 17 -249 209 97 -217 81 49 -97 41 1 -233 233 249 diff --git a/graphics/object_events/palettes/followers/honchkrow.pal b/graphics/object_events/palettes/followers/honchkrow.pal deleted file mode 100644 index 5fa8b9fed..000000000 --- a/graphics/object_events/palettes/followers/honchkrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 129 1 -81 65 49 -33 41 49 -1 1 1 -113 113 113 -201 201 201 -169 1 1 -41 65 105 -249 225 9 -233 233 249 -169 169 177 -57 89 113 -121 17 17 -57 57 57 -49 57 73 diff --git a/graphics/object_events/palettes/followers/hoothoot.pal b/graphics/object_events/palettes/followers/hoothoot.pal deleted file mode 100644 index bf367bd48..000000000 --- a/graphics/object_events/palettes/followers/hoothoot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 113 113 -65 81 89 -1 1 1 -225 169 169 -81 41 9 -217 81 73 -137 73 57 -233 217 161 -169 185 209 -41 41 41 -177 129 89 -105 41 41 -137 89 65 -201 177 121 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hoppip.pal b/graphics/object_events/palettes/followers/hoppip.pal deleted file mode 100644 index 7dade5208..000000000 --- a/graphics/object_events/palettes/followers/hoppip.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 201 1 -225 105 129 -49 89 17 -97 153 65 -1 1 1 -169 65 89 -89 9 3 -113 193 81 -241 145 193 -201 89 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/horsea.pal b/graphics/object_events/palettes/followers/horsea.pal deleted file mode 100644 index 4a5c74fdb..000000000 --- a/graphics/object_events/palettes/followers/horsea.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 161 97 -97 153 193 -25 57 97 -233 233 249 -65 65 65 -249 209 161 -169 185 209 -145 17 17 -41 89 137 -1 1 1 -145 185 225 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/houndoom.pal b/graphics/object_events/palettes/followers/houndoom.pal deleted file mode 100644 index e3f59cb81..000000000 --- a/graphics/object_events/palettes/followers/houndoom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 97 -81 81 89 -225 185 161 -41 41 49 -137 129 145 -113 97 121 -73 57 81 -145 25 41 -233 233 249 -1 1 1 -169 161 185 -137 97 65 -57 57 65 -105 113 113 -0 0 0 diff --git a/graphics/object_events/palettes/followers/houndour.pal b/graphics/object_events/palettes/followers/houndour.pal deleted file mode 100644 index f13881bf3..000000000 --- a/graphics/object_events/palettes/followers/houndour.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 97 -81 81 89 -225 185 161 -41 41 49 -137 129 145 -113 97 121 -233 233 249 -73 57 81 -1 1 1 -169 161 185 -137 97 65 -177 185 193 -57 57 65 -105 113 113 -0 0 0 diff --git a/graphics/object_events/palettes/followers/huntail.pal b/graphics/object_events/palettes/followers/huntail.pal deleted file mode 100644 index f89eadd28..000000000 --- a/graphics/object_events/palettes/followers/huntail.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -185 81 49 -153 201 225 -49 49 65 -97 153 217 -49 97 137 -233 233 249 -121 185 217 -129 49 25 -185 65 113 -153 41 89 -217 113 73 -209 217 233 -177 193 217 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hypno.pal b/graphics/object_events/palettes/followers/hypno.pal deleted file mode 100644 index 1edc1ee50..000000000 --- a/graphics/object_events/palettes/followers/hypno.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 41 -169 169 169 -121 105 33 -57 49 41 -1 1 1 -233 233 249 -233 201 81 -201 201 209 -105 81 121 -49 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/igglybuff.pal b/graphics/object_events/palettes/followers/igglybuff.pal deleted file mode 100644 index 0d5864b65..000000000 --- a/graphics/object_events/palettes/followers/igglybuff.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 145 169 -169 81 97 -249 201 217 -89 41 65 -225 113 121 -1 1 1 -233 233 249 -169 49 57 -201 113 145 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/illumise.pal b/graphics/object_events/palettes/followers/illumise.pal deleted file mode 100644 index 33284a660..000000000 --- a/graphics/object_events/palettes/followers/illumise.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 41 -201 121 201 -65 65 73 -161 193 233 -113 89 57 -89 161 233 -201 185 89 -49 65 105 -41 41 49 -169 169 201 -233 233 249 -105 105 113 -1 1 1 -209 177 233 -105 57 105 diff --git a/graphics/object_events/palettes/followers/infernape.pal b/graphics/object_events/palettes/followers/infernape.pal deleted file mode 100644 index 52928407c..000000000 --- a/graphics/object_events/palettes/followers/infernape.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 153 1 -25 89 177 -65 65 65 -1 1 1 -145 25 25 -193 65 33 -217 217 217 -201 57 89 -225 113 81 -249 209 1 -241 57 41 -129 57 33 -169 169 169 -233 233 249 -105 73 57 diff --git a/graphics/object_events/palettes/followers/ivysaur.pal b/graphics/object_events/palettes/followers/ivysaur.pal deleted file mode 100644 index db3e0fda9..000000000 --- a/graphics/object_events/palettes/followers/ivysaur.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 169 17 -73 169 153 -49 89 25 -105 209 193 -201 89 121 -137 225 33 -145 65 33 -65 129 121 -241 129 161 -201 201 217 -1 1 1 -105 33 41 -233 233 249 -41 65 65 -65 65 65 diff --git a/graphics/object_events/palettes/followers/jigglypuff.pal b/graphics/object_events/palettes/followers/jigglypuff.pal deleted file mode 100644 index cf6b522cc..000000000 --- a/graphics/object_events/palettes/followers/jigglypuff.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -97 73 65 -113 161 249 -81 81 121 -97 41 65 -249 169 185 -145 73 89 -233 233 249 -209 113 145 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/jirachi.pal b/graphics/object_events/palettes/followers/jirachi.pal deleted file mode 100644 index 4611f22c6..000000000 --- a/graphics/object_events/palettes/followers/jirachi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 1 -89 161 145 -121 201 177 -73 65 17 -217 185 65 -177 185 185 -33 89 81 -1 1 1 -57 129 113 -209 209 225 -169 113 9 -249 217 89 -233 233 249 -81 105 105 -137 153 153 diff --git a/graphics/object_events/palettes/followers/jolteon.pal b/graphics/object_events/palettes/followers/jolteon.pal deleted file mode 100644 index 1398b039a..000000000 --- a/graphics/object_events/palettes/followers/jolteon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 161 33 -169 169 193 -65 57 41 -249 249 81 -1 1 1 -209 225 233 -169 105 33 -249 201 25 -73 65 81 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/jumpluff.pal b/graphics/object_events/palettes/followers/jumpluff.pal deleted file mode 100644 index 63bedfafd..000000000 --- a/graphics/object_events/palettes/followers/jumpluff.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -41 81 137 -249 249 201 -113 113 97 -33 57 97 -97 153 225 -121 17 9 -193 185 161 -57 113 217 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/jynx.pal b/graphics/object_events/palettes/followers/jynx.pal deleted file mode 100644 index 10f616466..000000000 --- a/graphics/object_events/palettes/followers/jynx.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 25 -153 153 185 -105 73 137 -193 193 209 -65 57 57 -249 225 33 -137 97 193 -233 233 249 -1 1 1 -177 57 33 -249 89 73 -249 233 185 -249 209 97 -241 129 161 -201 89 121 diff --git a/graphics/object_events/palettes/followers/kabuto.pal b/graphics/object_events/palettes/followers/kabuto.pal deleted file mode 100644 index aa01d9002..000000000 --- a/graphics/object_events/palettes/followers/kabuto.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 97 65 -49 41 41 -233 185 89 -209 65 65 -169 129 57 -89 73 57 -137 25 25 -49 57 73 -1 1 1 -153 121 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kabutops.pal b/graphics/object_events/palettes/followers/kabutops.pal deleted file mode 100644 index 10c3bb588..000000000 --- a/graphics/object_events/palettes/followers/kabutops.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 73 -89 57 33 -193 193 201 -105 105 121 -137 97 41 -153 153 153 -65 65 65 -49 41 41 -233 233 249 -1 1 1 -105 73 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kadabra.pal b/graphics/object_events/palettes/followers/kadabra.pal deleted file mode 100644 index 1e20369be..000000000 --- a/graphics/object_events/palettes/followers/kadabra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 169 49 -97 73 49 -177 177 185 -145 121 57 -193 41 65 -1 1 1 -89 89 89 -249 241 193 -73 57 25 -249 217 97 -233 97 121 -233 233 249 -145 121 97 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kakuna.pal b/graphics/object_events/palettes/followers/kakuna.pal deleted file mode 100644 index 4dd491adc..000000000 --- a/graphics/object_events/palettes/followers/kakuna.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 65 -97 73 41 -233 233 249 -249 209 65 -145 113 33 -1 1 1 -65 65 65 -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/graphics/object_events/palettes/followers/kangaskhan.pal b/graphics/object_events/palettes/followers/kangaskhan.pal deleted file mode 100644 index 131f73a28..000000000 --- a/graphics/object_events/palettes/followers/kangaskhan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 121 41 -89 73 41 -169 185 209 -209 169 97 -113 113 113 -65 49 33 -73 73 73 -249 201 121 -233 233 249 -185 121 113 -105 9 1 -1 1 1 -57 57 65 -129 113 145 -121 81 57 diff --git a/graphics/object_events/palettes/followers/kecleon.pal b/graphics/object_events/palettes/followers/kecleon.pal deleted file mode 100644 index 4adc1da0a..000000000 --- a/graphics/object_events/palettes/followers/kecleon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 129 41 -233 233 249 -145 193 89 -89 81 41 -1 1 1 -185 225 105 -33 57 17 -121 169 49 -153 41 65 -249 193 65 -129 113 65 -217 169 33 -249 225 121 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kingdra.pal b/graphics/object_events/palettes/followers/kingdra.pal deleted file mode 100644 index 53a982441..000000000 --- a/graphics/object_events/palettes/followers/kingdra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 41 -73 121 161 -137 97 33 -169 185 209 -25 57 97 -233 233 249 -1 1 1 -193 209 233 -113 153 201 -113 17 17 -73 73 73 -217 161 57 -41 81 129 -145 193 233 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kingler.pal b/graphics/object_events/palettes/followers/kingler.pal deleted file mode 100644 index bc35398e4..000000000 --- a/graphics/object_events/palettes/followers/kingler.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 81 -201 201 209 -169 65 57 -1 1 1 -65 41 41 -177 153 105 -233 233 249 -217 105 49 -225 193 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kirlia.pal b/graphics/object_events/palettes/followers/kirlia.pal deleted file mode 100644 index 5c4776a37..000000000 --- a/graphics/object_events/palettes/followers/kirlia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 57 -169 169 177 -17 65 33 -73 177 89 -129 33 57 -233 233 249 -241 105 105 -1 1 1 -129 129 145 -201 201 217 -73 73 81 -105 201 129 -185 49 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/koffing.pal b/graphics/object_events/palettes/followers/koffing.pal deleted file mode 100644 index e33a361cc..000000000 --- a/graphics/object_events/palettes/followers/koffing.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 41 -137 129 209 -89 81 121 -57 41 57 -129 129 129 -233 233 249 -129 73 81 -1 1 1 -121 105 193 -169 169 209 -105 57 65 -201 185 121 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/krabby.pal b/graphics/object_events/palettes/followers/krabby.pal deleted file mode 100644 index 6a430a736..000000000 --- a/graphics/object_events/palettes/followers/krabby.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 81 -201 201 209 -81 57 49 -1 1 1 -201 97 33 -233 233 249 -169 65 57 -193 169 129 -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/palettes/followers/kricketot.pal b/graphics/object_events/palettes/followers/kricketot.pal deleted file mode 100644 index 87aa0b9e7..000000000 --- a/graphics/object_events/palettes/followers/kricketot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 73 -97 65 33 -105 105 105 -233 233 249 -81 41 25 -1 1 1 -145 73 25 -137 57 33 -241 209 145 -225 113 89 -225 161 81 -169 81 57 -57 57 57 -185 89 33 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kricketune.pal b/graphics/object_events/palettes/followers/kricketune.pal deleted file mode 100644 index ff9b89ab8..000000000 --- a/graphics/object_events/palettes/followers/kricketune.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 73 -97 65 33 -81 81 81 -233 233 249 -1 1 1 -81 41 25 -145 73 25 -225 113 89 -241 209 145 -137 57 33 -225 161 81 -105 105 105 -169 81 57 -57 57 57 -185 89 33 diff --git a/graphics/object_events/palettes/followers/kyogre.pal b/graphics/object_events/palettes/followers/kyogre.pal deleted file mode 100644 index da6327faa..000000000 --- a/graphics/object_events/palettes/followers/kyogre.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 129 -129 113 25 -65 129 193 -153 25 25 -129 185 217 -57 57 57 -225 193 33 -97 161 193 -41 97 153 -1 1 1 -201 217 241 -201 41 41 -89 17 9 -25 57 89 -153 169 177 diff --git a/graphics/object_events/palettes/followers/lairon.pal b/graphics/object_events/palettes/followers/lairon.pal deleted file mode 100644 index 17ab0b537..000000000 --- a/graphics/object_events/palettes/followers/lairon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 145 -185 185 201 -73 65 81 -1 1 1 -233 233 249 -65 97 129 -49 41 57 -105 145 201 -161 161 177 -209 209 225 -105 97 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lanturn.pal b/graphics/object_events/palettes/followers/lanturn.pal deleted file mode 100644 index c2a012f36..000000000 --- a/graphics/object_events/palettes/followers/lanturn.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 17 -97 137 225 -17 33 89 -185 201 217 -81 65 9 -225 233 241 -1 1 1 -185 49 41 -65 97 169 -249 209 97 -129 105 25 -113 177 241 -161 209 241 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lapras.pal b/graphics/object_events/palettes/followers/lapras.pal deleted file mode 100644 index cb7e199bd..000000000 --- a/graphics/object_events/palettes/followers/lapras.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 73 -89 129 177 -105 81 17 -145 153 161 -193 201 209 -49 73 105 -49 57 57 -249 209 105 -97 177 233 -113 113 129 -233 233 249 -1 1 1 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/larvitar.pal b/graphics/object_events/palettes/followers/larvitar.pal deleted file mode 100644 index e7a518194..000000000 --- a/graphics/object_events/palettes/followers/larvitar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 177 105 -57 65 73 -161 185 201 -33 41 41 -177 217 121 -185 49 49 -1 1 1 -73 89 41 -233 233 249 -121 33 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/latias.pal b/graphics/object_events/palettes/followers/latias.pal deleted file mode 100644 index e65c159fc..000000000 --- a/graphics/object_events/palettes/followers/latias.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 169 1 -65 129 169 -57 65 65 -185 201 209 -97 25 17 -1 1 1 -193 65 65 -33 41 41 -105 121 121 -233 233 249 -153 169 177 -233 89 89 -129 145 153 -145 41 41 -0 0 0 diff --git a/graphics/object_events/palettes/followers/latios.pal b/graphics/object_events/palettes/followers/latios.pal deleted file mode 100644 index a50cfc45c..000000000 --- a/graphics/object_events/palettes/followers/latios.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 121 121 -89 193 249 -57 65 65 -49 129 193 -129 33 33 -9 57 89 -1 1 1 -185 201 209 -33 113 169 -65 153 217 -33 41 41 -233 233 249 -153 169 177 -129 145 153 -193 33 33 diff --git a/graphics/object_events/palettes/followers/leafeon.pal b/graphics/object_events/palettes/followers/leafeon.pal deleted file mode 100644 index 3bc4ad631..000000000 --- a/graphics/object_events/palettes/followers/leafeon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 145 81 -209 225 233 -129 193 97 -113 81 33 -97 161 97 -241 217 161 -81 49 25 -169 137 81 -1 1 1 -217 185 89 -153 105 49 -233 233 249 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ledian.pal b/graphics/object_events/palettes/followers/ledian.pal deleted file mode 100644 index 95b25de50..000000000 --- a/graphics/object_events/palettes/followers/ledian.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 153 89 -137 65 1 -17 129 193 -65 65 97 -241 209 81 -177 41 49 -1 1 1 -185 201 225 -249 97 121 -113 97 73 -17 105 153 -233 233 249 -209 177 81 -225 33 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ledyba.pal b/graphics/object_events/palettes/followers/ledyba.pal deleted file mode 100644 index 4540e80b7..000000000 --- a/graphics/object_events/palettes/followers/ledyba.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 177 49 -81 89 201 -129 113 49 -193 201 225 -169 33 9 -1 1 1 -105 33 41 -233 233 241 -241 225 129 -249 113 49 -225 57 33 -57 57 57 -225 201 41 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lickilicky.pal b/graphics/object_events/palettes/followers/lickilicky.pal deleted file mode 100644 index ca5da8adf..000000000 --- a/graphics/object_events/palettes/followers/lickilicky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 121 145 -233 185 201 -81 81 81 -1 1 1 -193 81 113 -233 233 249 -73 49 49 -209 137 169 -153 65 89 -161 161 161 -201 201 209 -169 89 137 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lickitung.pal b/graphics/object_events/palettes/followers/lickitung.pal deleted file mode 100644 index 7c028935c..000000000 --- a/graphics/object_events/palettes/followers/lickitung.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 129 129 -161 161 161 -233 233 249 -177 97 121 -233 185 201 -217 201 49 -217 153 177 -89 49 73 -1 1 1 -241 169 169 -169 89 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lileep.pal b/graphics/object_events/palettes/followers/lileep.pal deleted file mode 100644 index 80228afba..000000000 --- a/graphics/object_events/palettes/followers/lileep.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 121 57 -41 33 89 -137 97 177 -161 49 89 -113 89 49 -209 185 73 -89 17 41 -97 57 145 -209 105 137 -161 145 217 -1 1 1 -41 25 41 -81 57 81 -193 65 97 -0 0 0 diff --git a/graphics/object_events/palettes/followers/linoone.pal b/graphics/object_events/palettes/followers/linoone.pal deleted file mode 100644 index f7daf07d4..000000000 --- a/graphics/object_events/palettes/followers/linoone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 129 185 -81 73 65 -113 105 89 -169 185 209 -41 81 121 -1 1 1 -121 89 65 -105 105 121 -233 233 249 -65 41 17 -217 209 185 -185 177 169 -153 113 89 -65 73 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lombre.pal b/graphics/object_events/palettes/followers/lombre.pal deleted file mode 100644 index 22a7e49bb..000000000 --- a/graphics/object_events/palettes/followers/lombre.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -9 131 3 -121 153 137 -41 81 33 -145 209 17 -233 233 249 -129 41 17 -105 153 65 -1 1 1 -233 89 65 -113 169 17 -73 113 65 -153 193 161 -169 49 25 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lopunny.pal b/graphics/object_events/palettes/followers/lopunny.pal deleted file mode 100644 index 3439e8e36..000000000 --- a/graphics/object_events/palettes/followers/lopunny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 65 -1 1 1 -97 81 65 -209 121 121 -145 81 89 -201 169 105 -129 97 57 -57 50 34 -249 169 169 -233 217 169 -169 129 89 -81 81 74 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lotad.pal b/graphics/object_events/palettes/followers/lotad.pal deleted file mode 100644 index d3457a4ec..000000000 --- a/graphics/object_events/palettes/followers/lotad.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 129 25 -81 145 193 -33 57 17 -113 169 17 -41 97 137 -1 1 1 -41 97 65 -145 209 17 -233 233 249 -25 49 89 -233 185 65 -169 121 25 -97 65 9 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/loudred.pal b/graphics/object_events/palettes/followers/loudred.pal deleted file mode 100644 index be3de9d8f..000000000 --- a/graphics/object_events/palettes/followers/loudred.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 49 -105 73 33 -137 129 185 -81 73 105 -233 233 249 -105 97 153 -41 49 65 -233 209 105 -1 1 1 -169 177 193 -185 65 105 -137 41 65 -177 169 225 -105 113 137 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lucario.pal b/graphics/object_events/palettes/followers/lucario.pal deleted file mode 100644 index c4f6ce113..000000000 --- a/graphics/object_events/palettes/followers/lucario.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 137 57 -49 57 89 -73 137 193 -97 97 97 -233 233 249 -153 25 49 -233 185 81 -121 97 41 -169 185 201 -41 41 41 -1 1 1 -57 105 145 -113 185 241 -73 73 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ludicolo.pal b/graphics/object_events/palettes/followers/ludicolo.pal deleted file mode 100644 index 87294c677..000000000 --- a/graphics/object_events/palettes/followers/ludicolo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 57 -161 161 161 -33 57 17 -121 177 33 -97 73 49 -1 1 1 -145 209 17 -137 105 81 -233 233 249 -209 129 9 -49 41 9 -137 65 1 -209 177 65 -233 201 121 -65 65 73 diff --git a/graphics/object_events/palettes/followers/lugia.pal b/graphics/object_events/palettes/followers/lugia.pal deleted file mode 100644 index adf9c9f0e..000000000 --- a/graphics/object_events/palettes/followers/lugia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -201 209 217 -41 49 113 -41 121 193 -73 73 89 -153 161 169 -233 233 249 -49 97 193 -137 169 225 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lumineon.pal b/graphics/object_events/palettes/followers/lumineon.pal deleted file mode 100644 index 4c230e65d..000000000 --- a/graphics/object_events/palettes/followers/lumineon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -49 57 65 -73 97 97 -161 209 217 -169 65 113 -105 1 1 -97 145 185 -49 73 65 -89 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lunatone.pal b/graphics/object_events/palettes/followers/lunatone.pal deleted file mode 100644 index b3c10e691..000000000 --- a/graphics/object_events/palettes/followers/lunatone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 57 -65 73 89 -177 161 73 -97 81 33 -161 49 113 -1 1 1 -33 41 49 -209 193 97 -209 73 145 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/luvdisc.pal b/graphics/object_events/palettes/followers/luvdisc.pal deleted file mode 100644 index 4275e201b..000000000 --- a/graphics/object_events/palettes/followers/luvdisc.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 129 153 -97 105 129 -249 193 185 -1 1 1 -49 49 65 -233 145 145 -209 97 137 -137 33 73 -233 233 249 -249 177 145 -161 49 97 -217 105 153 -233 153 161 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/luxio.pal b/graphics/object_events/palettes/followers/luxio.pal deleted file mode 100644 index 154c28461..000000000 --- a/graphics/object_events/palettes/followers/luxio.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 145 33 -73 65 25 -81 145 185 -89 89 89 -169 89 17 -1 1 1 -233 233 249 -41 41 41 -249 209 25 -113 177 217 -209 81 65 -65 65 65 -49 81 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/luxray.pal b/graphics/object_events/palettes/followers/luxray.pal deleted file mode 100644 index 1f68542b9..000000000 --- a/graphics/object_events/palettes/followers/luxray.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 17 -73 65 25 -65 129 169 -209 81 65 -33 81 105 -81 169 217 -185 33 17 -249 209 25 -1 1 1 -41 41 41 -209 145 33 -129 193 233 -65 65 65 -89 89 89 -0 0 0 diff --git a/graphics/object_events/palettes/followers/machamp.pal b/graphics/object_events/palettes/followers/machamp.pal deleted file mode 100644 index a84bfe10a..000000000 --- a/graphics/object_events/palettes/followers/machamp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 25 -129 129 145 -249 209 9 -233 201 153 -65 65 65 -177 153 113 -209 185 73 -233 233 249 -193 41 65 -241 233 113 -161 161 201 -81 89 105 -201 201 201 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/machoke.pal b/graphics/object_events/palettes/followers/machoke.pal deleted file mode 100644 index 4585ebaa7..000000000 --- a/graphics/object_events/palettes/followers/machoke.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 25 -129 129 145 -73 73 73 -249 209 9 -233 201 153 -177 153 113 -97 105 129 -193 41 65 -1 1 1 -233 233 249 -161 161 201 -209 161 17 -89 89 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/machop.pal b/graphics/object_events/palettes/followers/machop.pal deleted file mode 100644 index 828328b78..000000000 --- a/graphics/object_events/palettes/followers/machop.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 129 137 -233 201 153 -57 57 57 -1 1 1 -193 41 65 -177 153 113 -233 233 249 -73 97 105 -137 169 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magby.pal b/graphics/object_events/palettes/followers/magby.pal deleted file mode 100644 index 8a53eb769..000000000 --- a/graphics/object_events/palettes/followers/magby.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 33 -105 73 1 -177 185 193 -129 1 1 -65 65 73 -1 1 1 -153 41 57 -249 81 121 -233 233 249 -241 193 57 -81 89 105 -209 41 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magcargo.pal b/graphics/object_events/palettes/followers/magcargo.pal deleted file mode 100644 index 04fdccbae..000000000 --- a/graphics/object_events/palettes/followers/magcargo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 121 25 -41 49 57 -1 1 1 -177 57 49 -73 1 1 -105 113 137 -249 153 1 -73 81 97 -249 209 89 -225 81 73 -121 25 17 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magikarp.pal b/graphics/object_events/palettes/followers/magikarp.pal deleted file mode 100644 index d29c0357d..000000000 --- a/graphics/object_events/palettes/followers/magikarp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 25 -185 65 105 -145 145 145 -137 41 25 -1 1 1 -81 33 17 -249 193 17 -217 113 153 -193 193 209 -233 233 249 -121 33 65 -233 169 73 -233 97 65 -49 49 49 -201 57 17 diff --git a/graphics/object_events/palettes/followers/magmar.pal b/graphics/object_events/palettes/followers/magmar.pal deleted file mode 100644 index ce9d6c30d..000000000 --- a/graphics/object_events/palettes/followers/magmar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 121 9 -49 49 49 -145 145 145 -201 89 129 -193 193 209 -185 57 25 -129 1 1 -241 209 1 -241 185 201 -233 233 249 -113 81 17 -225 153 17 -105 33 17 -1 1 1 -241 73 33 diff --git a/graphics/object_events/palettes/followers/magmortar.pal b/graphics/object_events/palettes/followers/magmortar.pal deleted file mode 100644 index fa810f47e..000000000 --- a/graphics/object_events/palettes/followers/magmortar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 153 17 -185 57 25 -145 145 145 -73 81 81 -193 193 209 -49 49 49 -169 105 1 -1 1 1 -241 209 1 -233 233 249 -137 73 89 -105 1 1 -193 97 105 -225 137 153 -241 73 33 diff --git a/graphics/object_events/palettes/followers/magnemite.pal b/graphics/object_events/palettes/followers/magnemite.pal deleted file mode 100644 index 041b62f37..000000000 --- a/graphics/object_events/palettes/followers/magnemite.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 145 -193 209 217 -81 81 81 -73 137 233 -233 65 65 -153 169 185 -57 57 57 -1 1 1 -113 113 121 -233 233 249 -177 177 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magneton.pal b/graphics/object_events/palettes/followers/magneton.pal deleted file mode 100644 index 041b62f37..000000000 --- a/graphics/object_events/palettes/followers/magneton.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 145 -193 209 217 -81 81 81 -73 137 233 -233 65 65 -153 169 185 -57 57 57 -1 1 1 -113 113 121 -233 233 249 -177 177 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magnezone.pal b/graphics/object_events/palettes/followers/magnezone.pal deleted file mode 100644 index e0a5e0a78..000000000 --- a/graphics/object_events/palettes/followers/magnezone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 161 57 -105 129 145 -49 65 73 -185 185 193 -113 113 121 -217 1 1 -1 1 1 -153 153 153 -249 225 9 -57 57 57 -233 233 249 -185 73 73 -153 169 185 -81 81 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/makuhita.pal b/graphics/object_events/palettes/followers/makuhita.pal deleted file mode 100644 index 681982bc5..000000000 --- a/graphics/object_events/palettes/followers/makuhita.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 57 -73 57 9 -57 65 81 -137 41 65 -225 201 105 -185 65 105 -25 33 41 -1 1 1 -113 97 17 -81 89 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mamoswine.pal b/graphics/object_events/palettes/followers/mamoswine.pal deleted file mode 100644 index 13ed3cce7..000000000 --- a/graphics/object_events/palettes/followers/mamoswine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 33 -130 137 145 -105 65 41 -185 193 209 -41 113 145 -201 169 105 -57 41 17 -73 169 217 -201 97 113 -233 233 249 -137 57 73 -137 89 57 -169 121 81 -1 1 1 -65 65 65 diff --git a/graphics/object_events/palettes/followers/manaphy.pal b/graphics/object_events/palettes/followers/manaphy.pal deleted file mode 100644 index ff66198ec..000000000 --- a/graphics/object_events/palettes/followers/manaphy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 9 -81 129 233 -193 65 105 -1 1 1 -233 233 249 -25 73 161 -65 65 65 -129 161 241 -249 209 97 -65 97 201 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/manectric.pal b/graphics/object_events/palettes/followers/manectric.pal deleted file mode 100644 index 5d93d7697..000000000 --- a/graphics/object_events/palettes/followers/manectric.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 33 -81 153 185 -97 73 49 -249 249 145 -193 57 57 -1 1 1 -129 185 217 -33 121 153 -161 217 249 -25 49 89 -225 193 73 -161 161 161 -233 233 249 -65 65 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mankey.pal b/graphics/object_events/palettes/followers/mankey.pal deleted file mode 100644 index 91522b4e5..000000000 --- a/graphics/object_events/palettes/followers/mankey.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 49 -241 129 161 -73 65 57 -1 1 1 -145 17 49 -153 121 97 -233 233 249 -177 105 129 -177 177 209 -177 169 129 -233 217 137 -137 105 57 -121 41 65 -209 177 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mantine.pal b/graphics/object_events/palettes/followers/mantine.pal deleted file mode 100644 index 62f32dc56..000000000 --- a/graphics/object_events/palettes/followers/mantine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 137 153 -217 209 225 -17 65 105 -81 121 185 -177 169 185 -49 49 73 -209 233 249 -49 89 145 -1 1 1 -121 161 217 -57 81 121 -137 177 217 -41 65 73 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mantyke.pal b/graphics/object_events/palettes/followers/mantyke.pal deleted file mode 100644 index 599f852fb..000000000 --- a/graphics/object_events/palettes/followers/mantyke.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -145 65 57 -113 193 241 -9 89 137 -185 225 249 -97 97 105 -17 49 97 -33 121 249 -233 233 249 -153 193 225 -17 97 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mareep.pal b/graphics/object_events/palettes/followers/mareep.pal deleted file mode 100644 index 04d1d5345..000000000 --- a/graphics/object_events/palettes/followers/mareep.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 1 -1 1 1 -105 89 9 -169 145 73 -249 249 177 -49 57 65 -81 129 185 -89 105 121 -241 201 81 -121 169 233 -233 233 249 -225 113 1 -137 5 7 -233 209 105 -249 169 1 diff --git a/graphics/object_events/palettes/followers/marill.pal b/graphics/object_events/palettes/followers/marill.pal deleted file mode 100644 index 87cd5612b..000000000 --- a/graphics/object_events/palettes/followers/marill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -233 233 249 -57 113 161 -73 145 201 -49 57 65 -169 185 209 -185 49 41 -137 161 185 -113 177 241 -33 57 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/marowak.pal b/graphics/object_events/palettes/followers/marowak.pal deleted file mode 100644 index 2f8424f47..000000000 --- a/graphics/object_events/palettes/followers/marowak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 73 -193 193 193 -1 1 1 -129 129 129 -73 49 49 -217 225 225 -201 153 81 -225 193 145 -193 161 105 -73 73 73 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/marshtomp.pal b/graphics/object_events/palettes/followers/marshtomp.pal deleted file mode 100644 index 828789299..000000000 --- a/graphics/object_events/palettes/followers/marshtomp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -129 161 177 -73 57 17 -33 81 89 -65 129 129 -233 233 249 -89 185 177 -161 73 17 -1 1 1 -177 193 209 -193 89 17 -97 121 129 -49 81 97 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/masquerain.pal b/graphics/object_events/palettes/followers/masquerain.pal deleted file mode 100644 index 366b9fb54..000000000 --- a/graphics/object_events/palettes/followers/masquerain.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -81 81 89 -137 177 201 -65 81 113 -161 209 225 -137 33 89 -161 65 49 -217 105 121 -105 25 33 -225 161 185 -89 113 153 -233 233 249 -201 89 73 -177 217 233 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mawile.pal b/graphics/object_events/palettes/followers/mawile.pal deleted file mode 100644 index 6751c3e12..000000000 --- a/graphics/object_events/palettes/followers/mawile.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 169 89 -81 73 57 -177 185 201 -249 217 129 -129 105 73 -193 57 57 -145 145 145 -41 41 41 -233 233 249 -1 1 1 -113 113 113 -73 73 73 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/medicham.pal b/graphics/object_events/palettes/followers/medicham.pal deleted file mode 100644 index c0ba10536..000000000 --- a/graphics/object_events/palettes/followers/medicham.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 25 -152 152 145 -113 81 17 -193 193 185 -57 57 65 -1 1 1 -185 81 105 -233 137 161 -233 233 249 -249 217 89 -113 113 97 -49 25 33 -193 161 17 -145 57 89 -201 97 129 diff --git a/graphics/object_events/palettes/followers/meditite.pal b/graphics/object_events/palettes/followers/meditite.pal deleted file mode 100644 index 5c7838281..000000000 --- a/graphics/object_events/palettes/followers/meditite.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 137 153 -217 225 233 -57 57 65 -1 1 1 -65 105 153 -89 145 193 -81 81 89 -185 49 41 -177 185 201 -161 161 177 -41 65 97 -233 233 249 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/meganium.pal b/graphics/object_events/palettes/followers/meganium.pal deleted file mode 100644 index 0e95eb9ff..000000000 --- a/graphics/object_events/palettes/followers/meganium.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 41 -201 177 185 -137 97 1 -129 161 89 -177 81 121 -161 185 81 -233 233 249 -73 89 41 -105 41 81 -241 209 49 -1 1 1 -193 209 81 -209 97 145 -105 105 65 -185 177 201 diff --git a/graphics/object_events/palettes/followers/meowth.pal b/graphics/object_events/palettes/followers/meowth.pal deleted file mode 100644 index 1c7fd519a..000000000 --- a/graphics/object_events/palettes/followers/meowth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 129 49 -81 57 25 -217 177 65 -121 105 81 -1 1 1 -169 121 81 -153 81 25 -169 33 81 -241 217 129 -249 201 33 -177 89 81 -217 145 25 -65 57 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mesprit.pal b/graphics/object_events/palettes/followers/mesprit.pal deleted file mode 100644 index 809362ce0..000000000 --- a/graphics/object_events/palettes/followers/mesprit.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 33 -73 73 89 -113 129 177 -145 73 113 -145 185 209 -169 41 1 -1 1 1 -225 113 145 -249 177 17 -233 65 33 -249 169 153 -233 233 249 -97 49 57 -177 209 249 -185 81 129 diff --git a/graphics/object_events/palettes/followers/metagross.pal b/graphics/object_events/palettes/followers/metagross.pal deleted file mode 100644 index f94f7a361..000000000 --- a/graphics/object_events/palettes/followers/metagross.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 129 169 -193 193 193 -65 65 65 -105 145 209 -1 1 1 -153 217 241 -153 41 41 -145 145 161 -41 41 49 -65 97 121 -233 233 249 -145 193 233 -33 65 81 -153 153 161 -0 0 0 diff --git a/graphics/object_events/palettes/followers/metang.pal b/graphics/object_events/palettes/followers/metang.pal deleted file mode 100644 index 819ca143b..000000000 --- a/graphics/object_events/palettes/followers/metang.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 129 169 -193 193 193 -65 65 65 -105 145 209 -233 233 249 -121 33 33 -1 1 1 -150 150 161 -41 41 49 -65 97 121 -145 193 233 -153 217 241 -255 255 255 -33 65 81 -153 41 41 diff --git a/graphics/object_events/palettes/followers/metapod.pal b/graphics/object_events/palettes/followers/metapod.pal deleted file mode 100644 index c070c1405..000000000 --- a/graphics/object_events/palettes/followers/metapod.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 49 -225 225 225 -161 217 73 -57 73 25 -1 1 1 -233 233 249 -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/graphics/object_events/palettes/followers/mew.pal b/graphics/object_events/palettes/followers/mew.pal deleted file mode 100644 index d99299b99..000000000 --- a/graphics/object_events/palettes/followers/mew.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 129 129 -201 201 249 -97 97 97 -1 1 1 -233 233 249 -177 105 169 -89 49 81 -249 209 233 -217 161 185 -113 89 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mewtwo.pal b/graphics/object_events/palettes/followers/mewtwo.pal deleted file mode 100644 index 6f5afee0f..000000000 --- a/graphics/object_events/palettes/followers/mewtwo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 121 153 -137 73 137 -217 201 217 -65 65 65 -153 153 153 -177 153 193 -65 49 81 -185 89 209 -97 97 97 -233 233 249 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mightyena.pal b/graphics/object_events/palettes/followers/mightyena.pal deleted file mode 100644 index 38610816d..000000000 --- a/graphics/object_events/palettes/followers/mightyena.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 113 113 -1 1 1 -49 57 57 -145 153 161 -225 65 65 -177 185 193 -81 81 89 -129 33 33 -249 217 89 -129 121 137 -169 161 185 -65 57 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/milotic.pal b/graphics/object_events/palettes/followers/milotic.pal deleted file mode 100644 index d012770f9..000000000 --- a/graphics/object_events/palettes/followers/milotic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 169 65 -33 57 89 -233 217 169 -241 105 113 -129 9 73 -81 129 169 -81 73 153 -185 49 81 -1 1 1 -113 161 209 -97 89 65 -249 241 217 -241 105 153 -57 89 129 -185 49 113 diff --git a/graphics/object_events/palettes/followers/miltank.pal b/graphics/object_events/palettes/followers/miltank.pal deleted file mode 100644 index e64e3f03d..000000000 --- a/graphics/object_events/palettes/followers/miltank.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 89 -81 65 33 -169 185 209 -41 65 81 -1 1 1 -121 73 81 -33 49 65 -233 233 249 -209 137 161 -73 97 121 -177 97 121 -241 169 193 -57 65 73 -89 41 57 -209 185 121 diff --git a/graphics/object_events/palettes/followers/mime_jr.pal b/graphics/object_events/palettes/followers/mime_jr.pal deleted file mode 100644 index 31ae9fcab..000000000 --- a/graphics/object_events/palettes/followers/mime_jr.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 65 129 -41 41 73 -233 233 249 -121 129 233 -209 65 89 -217 113 145 -65 65 65 -241 177 201 -97 33 57 -89 97 177 -169 169 169 -121 73 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/minun.pal b/graphics/object_events/palettes/followers/minun.pal deleted file mode 100644 index 56f9b114c..000000000 --- a/graphics/object_events/palettes/followers/minun.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 137 105 -249 225 137 -81 129 161 -113 89 49 -201 169 97 -233 233 249 -113 177 209 -49 81 121 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/misdreavus.pal b/graphics/object_events/palettes/followers/misdreavus.pal deleted file mode 100644 index 64f7bcb41..000000000 --- a/graphics/object_events/palettes/followers/misdreavus.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 121 1 -33 81 97 -201 73 105 -105 129 161 -33 49 89 -97 1 3 -65 105 137 -217 97 161 -233 233 249 -225 177 41 -1 1 1 -193 65 129 -81 113 153 -89 9 3 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mismagius.pal b/graphics/object_events/palettes/followers/mismagius.pal deleted file mode 100644 index 9ff649019..000000000 --- a/graphics/object_events/palettes/followers/mismagius.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 97 1 -49 41 97 -153 41 89 -177 17 41 -145 121 193 -49 33 57 -97 81 145 -193 65 129 -225 177 41 -1 1 1 -105 33 81 -217 81 113 -73 33 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/moltres.pal b/graphics/object_events/palettes/followers/moltres.pal deleted file mode 100644 index 524c5a1d4..000000000 --- a/graphics/object_events/palettes/followers/moltres.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 137 33 -177 177 209 -65 65 65 -249 185 33 -233 73 49 -1 1 1 -161 25 41 -249 137 121 -233 233 249 -65 49 49 -185 113 97 -249 201 121 -233 177 81 -201 129 57 -113 73 57 diff --git a/graphics/object_events/palettes/followers/monferno.pal b/graphics/object_events/palettes/followers/monferno.pal deleted file mode 100644 index af39e8fd9..000000000 --- a/graphics/object_events/palettes/followers/monferno.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -153 153 153 -105 57 41 -249 233 169 -241 57 41 -185 121 65 -57 145 209 -185 97 33 -217 185 113 -249 193 1 -145 25 25 -233 233 249 -129 89 57 -1 1 1 -209 81 65 diff --git a/graphics/object_events/palettes/followers/mothim.pal b/graphics/object_events/palettes/followers/mothim.pal deleted file mode 100644 index 21d36fcee..000000000 --- a/graphics/object_events/palettes/followers/mothim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 41 -137 57 9 -137 137 137 -73 73 73 -65 49 41 -225 177 65 -145 97 17 -1 1 1 -201 201 201 -97 97 97 -249 129 41 -161 89 33 -49 49 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mr_mime.pal b/graphics/object_events/palettes/followers/mr_mime.pal deleted file mode 100644 index 156deec2c..000000000 --- a/graphics/object_events/palettes/followers/mr_mime.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 161 -33 65 89 -241 193 201 -145 65 81 -41 49 65 -1 1 1 -49 97 113 -233 233 249 -169 105 121 -201 201 233 -209 65 89 -105 105 105 -193 145 145 -73 49 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mudkip.pal b/graphics/object_events/palettes/followers/mudkip.pal deleted file mode 100644 index ad2e4fc26..000000000 --- a/graphics/object_events/palettes/followers/mudkip.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -73 57 17 -73 137 177 -41 73 121 -233 233 249 -65 65 81 -89 177 217 -1 1 1 -113 105 145 -161 73 17 -177 177 209 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/muk.pal b/graphics/object_events/palettes/followers/muk.pal deleted file mode 100644 index 25c53904a..000000000 --- a/graphics/object_events/palettes/followers/muk.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 57 65 -105 81 121 -233 233 249 -177 145 185 -129 105 137 -97 73 105 -201 177 217 -121 97 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/munchlax.pal b/graphics/object_events/palettes/followers/munchlax.pal deleted file mode 100644 index afed053d8..000000000 --- a/graphics/object_events/palettes/followers/munchlax.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 73 -193 193 201 -193 169 105 -41 73 73 -81 129 145 -249 201 121 -65 105 121 -41 49 49 -233 233 249 -145 153 145 -1 1 1 -65 81 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/murkrow.pal b/graphics/object_events/palettes/followers/murkrow.pal deleted file mode 100644 index 3f8fb5c91..000000000 --- a/graphics/object_events/palettes/followers/murkrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 25 -17 33 73 -121 153 193 -49 49 49 -49 65 113 -1 1 1 -233 233 249 -201 57 49 -145 33 25 -113 89 9 -177 193 217 -225 177 41 -73 89 137 -33 49 97 -0 0 0 diff --git a/graphics/object_events/palettes/followers/natu.pal b/graphics/object_events/palettes/followers/natu.pal deleted file mode 100644 index e3133ef1c..000000000 --- a/graphics/object_events/palettes/followers/natu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 161 73 -49 49 49 -113 129 153 -129 193 113 -65 81 105 -121 17 33 -1 1 1 -97 81 1 -185 201 225 -217 73 89 -241 209 97 -233 233 249 -177 41 57 -185 153 49 -57 81 33 diff --git a/graphics/object_events/palettes/followers/nidoking.pal b/graphics/object_events/palettes/followers/nidoking.pal deleted file mode 100644 index 0f1679f32..000000000 --- a/graphics/object_events/palettes/followers/nidoking.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 169 153 -201 201 201 -217 153 241 -49 113 105 -185 129 185 -1 1 1 -65 49 81 -241 233 225 -153 105 161 -89 25 25 -161 161 161 -233 233 249 -169 169 153 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoqueen.pal b/graphics/object_events/palettes/followers/nidoqueen.pal deleted file mode 100644 index 9fb7ed22a..000000000 --- a/graphics/object_events/palettes/followers/nidoqueen.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -97 137 177 -89 65 49 -201 201 201 -241 193 121 -73 65 121 -233 233 249 -97 41 25 -129 177 217 -193 161 81 -169 97 49 -169 201 241 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_f.pal b/graphics/object_events/palettes/followers/nidoran_f.pal deleted file mode 100644 index a268e55b6..000000000 --- a/graphics/object_events/palettes/followers/nidoran_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 169 137 -49 89 73 -153 241 225 -161 81 105 -17 153 241 -1 1 1 -217 105 137 -161 33 17 -65 81 137 -233 233 249 -161 161 161 -241 121 113 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_m.pal b/graphics/object_events/palettes/followers/nidoran_m.pal deleted file mode 100644 index 91d4ac518..000000000 --- a/graphics/object_events/palettes/followers/nidoran_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 169 153 -137 97 153 -193 65 105 -233 233 249 -217 153 241 -185 25 9 -1 1 1 -81 49 81 -49 113 105 -177 113 209 -161 161 161 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorina.pal b/graphics/object_events/palettes/followers/nidorina.pal deleted file mode 100644 index f59ffda8b..000000000 --- a/graphics/object_events/palettes/followers/nidorina.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 137 209 -113 193 225 -1 1 1 -49 89 105 -153 225 249 -169 169 193 -161 41 33 -81 161 177 -241 161 153 -233 233 249 -49 97 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorino.pal b/graphics/object_events/palettes/followers/nidorino.pal deleted file mode 100644 index 571d26a69..000000000 --- a/graphics/object_events/palettes/followers/nidorino.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 169 153 -233 233 249 -49 113 105 -177 121 201 -185 25 9 -177 177 193 -73 57 81 -1 1 1 -137 97 153 -217 153 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nincada.pal b/graphics/object_events/palettes/followers/nincada.pal deleted file mode 100644 index 359d3480f..000000000 --- a/graphics/object_events/palettes/followers/nincada.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 145 65 -33 73 25 -153 145 161 -97 89 113 -121 177 89 -49 41 65 -57 113 41 -233 233 249 -185 177 193 -97 89 65 -121 113 137 -1 1 1 -145 129 89 -65 57 41 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ninetales.pal b/graphics/object_events/palettes/followers/ninetales.pal deleted file mode 100644 index 393b1073b..000000000 --- a/graphics/object_events/palettes/followers/ninetales.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 1 -193 65 105 -1 1 1 -89 57 49 -233 233 249 -185 161 105 -145 113 73 -233 217 153 -137 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ninjask.pal b/graphics/object_events/palettes/followers/ninjask.pal deleted file mode 100644 index c1e058ac4..000000000 --- a/graphics/object_events/palettes/followers/ninjask.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 65 -201 201 201 -193 57 57 -233 193 49 -113 33 33 -233 233 249 -97 89 113 -1 1 1 -145 97 17 -57 49 73 -241 225 73 -217 217 225 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/noctowl.pal b/graphics/object_events/palettes/followers/noctowl.pal deleted file mode 100644 index 05f350df8..000000000 --- a/graphics/object_events/palettes/followers/noctowl.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 97 -97 65 17 -169 185 209 -201 185 121 -65 81 89 -225 169 169 -105 41 41 -209 161 113 -201 113 113 -233 233 249 -225 217 161 -97 73 57 -129 97 81 -1 1 1 -169 49 49 diff --git a/graphics/object_events/palettes/followers/nosepass.pal b/graphics/object_events/palettes/followers/nosepass.pal deleted file mode 100644 index 391eef08c..000000000 --- a/graphics/object_events/palettes/followers/nosepass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -17 33 73 -209 49 73 -113 25 41 -65 73 81 -81 129 185 -41 49 57 -41 57 97 -113 177 233 -65 89 137 -161 33 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/numel.pal b/graphics/object_events/palettes/followers/numel.pal deleted file mode 100644 index ba92ab59c..000000000 --- a/graphics/object_events/palettes/followers/numel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 161 49 -217 225 185 -137 201 65 -49 81 25 -73 121 33 -177 185 137 -89 73 57 -1 1 1 -249 249 249 -217 185 73 -241 217 89 -121 97 73 -185 145 57 -65 73 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/nuzleaf.pal b/graphics/object_events/palettes/followers/nuzleaf.pal deleted file mode 100644 index ae9bbd957..000000000 --- a/graphics/object_events/palettes/followers/nuzleaf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 161 9 -89 73 9 -233 233 249 -1 1 1 -65 105 9 -33 57 9 -145 209 17 -97 65 33 -161 137 65 -161 113 49 -233 201 121 -73 49 25 -121 81 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/octillery.pal b/graphics/object_events/palettes/followers/octillery.pal deleted file mode 100644 index 78b4092d3..000000000 --- a/graphics/object_events/palettes/followers/octillery.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 25 -129 105 17 -153 161 177 -137 1 1 -1 1 1 -137 25 1 -201 89 73 -233 233 249 -249 217 89 -177 41 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/oddish.pal b/graphics/object_events/palettes/followers/oddish.pal deleted file mode 100644 index a707d037a..000000000 --- a/graphics/object_events/palettes/followers/oddish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 113 65 -17 161 49 -33 73 41 -1 1 1 -113 1 1 -65 113 153 -41 73 73 -137 193 129 -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/palettes/followers/omanyte.pal b/graphics/object_events/palettes/followers/omanyte.pal deleted file mode 100644 index 121eb8cc6..000000000 --- a/graphics/object_events/palettes/followers/omanyte.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 129 161 -233 201 153 -81 65 57 -73 169 217 -145 113 73 -1 1 1 -121 201 241 -177 153 105 -233 233 249 -169 169 177 -105 105 105 -49 73 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/omastar.pal b/graphics/object_events/palettes/followers/omastar.pal deleted file mode 100644 index 1f042f749..000000000 --- a/graphics/object_events/palettes/followers/omastar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 145 65 -57 129 161 -81 65 57 -249 225 105 -233 225 185 -129 105 81 -177 153 105 -73 169 217 -121 201 241 -233 201 153 -1 1 1 -105 105 105 -49 65 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/onix.pal b/graphics/object_events/palettes/followers/onix.pal deleted file mode 100644 index 41933ba53..000000000 --- a/graphics/object_events/palettes/followers/onix.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 129 -193 193 193 -81 73 73 -1 1 1 -49 49 49 -145 145 145 -233 233 249 -105 97 97 -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/palettes/followers/pachirisu.pal b/graphics/object_events/palettes/followers/pachirisu.pal deleted file mode 100644 index 8dc583b37..000000000 --- a/graphics/object_events/palettes/followers/pachirisu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 97 -225 185 89 -97 129 201 -49 81 113 -1 1 1 -121 161 217 -137 121 145 -233 233 249 -177 177 209 -89 89 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/palkia.pal b/graphics/object_events/palettes/followers/palkia.pal deleted file mode 100644 index 82c356424..000000000 --- a/graphics/object_events/palettes/followers/palkia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 137 145 -201 217 233 -201 137 193 -81 81 89 -177 185 193 -161 81 161 -17 17 17 -249 249 249 -241 81 65 -137 121 145 -241 161 153 -169 161 177 -209 193 217 -233 217 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/paras.pal b/graphics/object_events/palettes/followers/paras.pal deleted file mode 100644 index e2285d9db..000000000 --- a/graphics/object_events/palettes/followers/paras.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 41 -169 81 17 -169 169 169 -113 113 113 -97 41 25 -1 1 1 -249 113 25 -233 233 249 -169 49 73 -217 97 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/parasect.pal b/graphics/object_events/palettes/followers/parasect.pal deleted file mode 100644 index b07e4319f..000000000 --- a/graphics/object_events/palettes/followers/parasect.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 161 33 -169 81 17 -169 169 169 -97 41 25 -233 201 89 -217 97 113 -249 113 25 -233 233 249 -1 1 1 -169 49 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pelipper.pal b/graphics/object_events/palettes/followers/pelipper.pal deleted file mode 100644 index a1e730a7e..000000000 --- a/graphics/object_events/palettes/followers/pelipper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 41 -81 137 169 -105 81 17 -180 193 211 -201 177 57 -81 81 89 -105 161 217 -233 233 249 -145 145 145 -1 1 1 -65 105 145 -225 209 73 -137 105 25 -137 137 153 -49 73 113 diff --git a/graphics/object_events/palettes/followers/persian.pal b/graphics/object_events/palettes/followers/persian.pal deleted file mode 100644 index 16d9b1527..000000000 --- a/graphics/object_events/palettes/followers/persian.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 3 -1 1 1 -81 57 25 -145 129 73 -185 65 113 -233 233 249 -193 169 121 -241 217 129 -145 105 81 -161 129 105 -65 57 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/phanpy.pal b/graphics/object_events/palettes/followers/phanpy.pal deleted file mode 100644 index fa6f2ba20..000000000 --- a/graphics/object_events/palettes/followers/phanpy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 57 105 -185 201 217 -137 1 1 -81 129 177 -153 33 33 -249 249 249 -137 177 209 -209 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/phione.pal b/graphics/object_events/palettes/followers/phione.pal deleted file mode 100644 index 8e5afccd1..000000000 --- a/graphics/object_events/palettes/followers/phione.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -193 65 105 -177 201 249 -25 73 161 -81 129 233 -65 97 201 -65 65 65 -233 233 249 -129 161 241 -17 113 177 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pichu.pal b/graphics/object_events/palettes/followers/pichu.pal deleted file mode 100644 index ec7bc91d9..000000000 --- a/graphics/object_events/palettes/followers/pichu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 57 -81 81 81 -225 121 161 -49 49 49 -1 1 1 -97 89 41 -193 169 65 -193 81 137 -233 233 249 -249 217 105 -65 65 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgeot.pal b/graphics/object_events/palettes/followers/pidgeot.pal deleted file mode 100644 index 22828bc3f..000000000 --- a/graphics/object_events/palettes/followers/pidgeot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 137 1 -241 105 225 -145 89 49 -1 1 1 -177 65 97 -193 153 65 -129 25 113 -209 113 41 -233 233 249 -241 209 113 -249 193 49 -81 57 25 -225 113 113 -201 73 33 -161 161 161 diff --git a/graphics/object_events/palettes/followers/pidgeotto.pal b/graphics/object_events/palettes/followers/pidgeotto.pal deleted file mode 100644 index 03725fd2b..000000000 --- a/graphics/object_events/palettes/followers/pidgeotto.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 129 33 -153 153 153 -97 65 33 -233 233 249 -225 113 113 -241 209 113 -241 137 225 -201 73 33 -161 33 161 -193 153 65 -1 1 1 -177 81 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgey.pal b/graphics/object_events/palettes/followers/pidgey.pal deleted file mode 100644 index f843a7e59..000000000 --- a/graphics/object_events/palettes/followers/pidgey.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 65 -217 145 177 -97 65 33 -241 209 113 -233 233 249 -201 113 33 -153 57 97 -1 1 1 -185 185 185 -185 89 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pikachu.pal b/graphics/object_events/palettes/followers/pikachu.pal deleted file mode 100644 index 987f609d0..000000000 --- a/graphics/object_events/palettes/followers/pikachu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 65 -113 81 57 -233 233 249 -49 49 49 -249 209 81 -153 113 57 -1 1 1 -201 89 57 -145 57 25 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/piloswine.pal b/graphics/object_events/palettes/followers/piloswine.pal deleted file mode 100644 index a9806b257..000000000 --- a/graphics/object_events/palettes/followers/piloswine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 89 -121 73 49 -169 185 209 -73 41 9 -1 1 1 -201 97 113 -49 49 65 -233 137 161 -233 233 249 -153 105 65 -145 41 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pineco.pal b/graphics/object_events/palettes/followers/pineco.pal deleted file mode 100644 index b01042837..000000000 --- a/graphics/object_events/palettes/followers/pineco.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 129 169 -17 81 129 -233 233 249 -1 1 1 -201 65 73 -97 113 153 -81 177 193 -17 89 129 -161 177 201 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pinsir.pal b/graphics/object_events/palettes/followers/pinsir.pal deleted file mode 100644 index bb6f6e121..000000000 --- a/graphics/object_events/palettes/followers/pinsir.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 97 -81 65 49 -193 193 209 -121 105 81 -1 1 1 -49 49 49 -145 145 145 -97 81 57 -233 233 249 -105 105 105 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/piplup.pal b/graphics/object_events/palettes/followers/piplup.pal deleted file mode 100644 index 38fad9d50..000000000 --- a/graphics/object_events/palettes/followers/piplup.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 185 25 -81 145 185 -41 89 169 -57 57 73 -233 233 249 -121 121 121 -121 177 241 -121 105 65 -1 1 1 -65 105 225 -177 185 217 -57 65 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/plusle.pal b/graphics/object_events/palettes/followers/plusle.pal deleted file mode 100644 index f04c4f314..000000000 --- a/graphics/object_events/palettes/followers/plusle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 137 105 -113 89 49 -233 233 249 -249 225 137 -201 169 97 -185 73 89 -137 41 65 -1 1 1 -225 113 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/politoed.pal b/graphics/object_events/palettes/followers/politoed.pal deleted file mode 100644 index 113eb9ff2..000000000 --- a/graphics/object_events/palettes/followers/politoed.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 9 -249 129 177 -105 185 65 -49 81 17 -209 185 65 -189 203 220 -33 65 81 -1 1 1 -137 57 73 -201 89 137 -65 113 121 -89 153 57 -233 233 249 -153 217 113 -241 201 73 diff --git a/graphics/object_events/palettes/followers/poliwag.pal b/graphics/object_events/palettes/followers/poliwag.pal deleted file mode 100644 index 207b398d6..000000000 --- a/graphics/object_events/palettes/followers/poliwag.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 121 121 -89 89 89 -233 233 233 -121 129 233 -25 41 57 -1 1 1 -65 89 153 -97 49 65 -177 177 209 -241 121 161 -177 65 105 -49 49 49 -233 233 249 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwhirl.pal b/graphics/object_events/palettes/followers/poliwhirl.pal deleted file mode 100644 index 71d107bee..000000000 --- a/graphics/object_events/palettes/followers/poliwhirl.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -57 73 113 -233 233 249 -49 49 49 -121 129 233 -33 41 57 -161 161 161 -73 97 185 -177 177 209 -89 89 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwrath.pal b/graphics/object_events/palettes/followers/poliwrath.pal deleted file mode 100644 index 0937b8faa..000000000 --- a/graphics/object_events/palettes/followers/poliwrath.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -201 201 201 -73 97 185 -49 49 49 -121 129 233 -33 41 57 -161 161 161 -233 233 249 -177 177 209 -89 89 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ponyta.pal b/graphics/object_events/palettes/followers/ponyta.pal deleted file mode 100644 index 90cf88072..000000000 --- a/graphics/object_events/palettes/followers/ponyta.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 161 25 -81 57 33 -241 225 169 -81 97 129 -129 121 89 -225 73 33 -185 169 113 -161 49 9 -233 233 249 -153 57 81 -1 1 1 -73 57 41 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/poochyena.pal b/graphics/object_events/palettes/followers/poochyena.pal deleted file mode 100644 index 53d5307c0..000000000 --- a/graphics/object_events/palettes/followers/poochyena.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 113 113 -49 57 57 -1 1 1 -193 57 57 -81 81 89 -185 185 185 -137 41 41 -145 145 145 -249 217 89 -65 57 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon.pal b/graphics/object_events/palettes/followers/porygon.pal deleted file mode 100644 index a9a1804e9..000000000 --- a/graphics/object_events/palettes/followers/porygon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 137 153 -41 97 97 -81 217 217 -1 1 1 -177 49 105 -41 65 73 -249 153 209 -233 105 161 -233 233 249 -41 185 193 -97 25 49 -161 185 201 -209 65 137 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon2.pal b/graphics/object_events/palettes/followers/porygon2.pal deleted file mode 100644 index b70e67bb6..000000000 --- a/graphics/object_events/palettes/followers/porygon2.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 153 193 -17 73 121 -145 233 249 -1 1 1 -113 17 49 -225 81 137 -249 153 209 -169 41 81 -41 121 169 -185 201 217 -249 249 249 -89 185 217 -193 57 97 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/porygonz.pal b/graphics/object_events/palettes/followers/porygonz.pal deleted file mode 100644 index 73e36b7d5..000000000 --- a/graphics/object_events/palettes/followers/porygonz.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 145 49 -41 121 169 -17 65 97 -89 185 217 -169 65 105 -97 25 49 -249 209 57 -241 161 169 -169 113 49 -1 1 1 -145 233 249 -225 97 113 -65 153 193 -113 49 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/primeape.pal b/graphics/object_events/palettes/followers/primeape.pal deleted file mode 100644 index 38020a677..000000000 --- a/graphics/object_events/palettes/followers/primeape.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 49 -241 129 161 -65 57 49 -1 1 1 -105 105 105 -209 169 113 -233 233 249 -121 41 65 -177 177 209 -137 105 57 -233 217 137 -153 121 97 -177 105 129 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/prinplup.pal b/graphics/object_events/palettes/followers/prinplup.pal deleted file mode 100644 index af3fe885f..000000000 --- a/graphics/object_events/palettes/followers/prinplup.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 1 -1 1 1 -41 89 169 -121 201 241 -97 81 33 -121 121 121 -113 153 185 -57 113 177 -49 57 97 -233 233 249 -249 193 25 -169 177 201 -65 113 201 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/probopass.pal b/graphics/object_events/palettes/followers/probopass.pal deleted file mode 100644 index d952dc1fb..000000000 --- a/graphics/object_events/palettes/followers/probopass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 129 185 -41 57 97 -1 1 1 -113 25 41 -193 57 89 -113 177 233 -41 49 57 -153 153 153 -65 89 137 -193 201 217 -209 81 73 -161 33 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/psyduck.pal b/graphics/object_events/palettes/followers/psyduck.pal deleted file mode 100644 index 4990fa0d6..000000000 --- a/graphics/object_events/palettes/followers/psyduck.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 65 -241 233 185 -233 185 65 -201 185 137 -105 97 65 -1 1 1 -233 233 249 -249 217 105 -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/palettes/followers/pupitar.pal b/graphics/object_events/palettes/followers/pupitar.pal deleted file mode 100644 index 5ea18eb79..000000000 --- a/graphics/object_events/palettes/followers/pupitar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 41 41 -161 185 201 -185 49 49 -33 57 73 -233 233 249 -121 161 177 -137 193 201 -57 65 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/purugly.pal b/graphics/object_events/palettes/followers/purugly.pal deleted file mode 100644 index 37ec1eaa4..000000000 --- a/graphics/object_events/palettes/followers/purugly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 121 121 -89 57 137 -153 153 153 -201 105 9 -193 193 193 -249 185 33 -137 73 185 -65 65 65 -1 1 1 -177 121 233 -49 49 49 -233 233 249 -185 73 113 -81 81 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/quagsire.pal b/graphics/object_events/palettes/followers/quagsire.pal deleted file mode 100644 index 5309d8c04..000000000 --- a/graphics/object_events/palettes/followers/quagsire.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 113 161 -33 65 121 -73 145 201 -33 49 57 -113 177 241 -1 1 1 -145 89 185 -177 113 209 -57 89 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/quilava.pal b/graphics/object_events/palettes/followers/quilava.pal deleted file mode 100644 index 20abfb6b8..000000000 --- a/graphics/object_events/palettes/followers/quilava.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 81 -73 65 17 -49 137 153 -241 201 41 -161 17 25 -33 81 89 -209 177 89 -217 81 81 -233 233 249 -25 57 73 -41 113 121 -249 209 97 -185 49 49 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/qwilfish.pal b/graphics/object_events/palettes/followers/qwilfish.pal deleted file mode 100644 index 3606f4b28..000000000 --- a/graphics/object_events/palettes/followers/qwilfish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 153 65 -73 145 193 -57 57 25 -225 209 137 -17 49 105 -1 1 1 -233 233 249 -33 73 129 -249 129 161 -153 33 57 -49 105 153 -193 177 97 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/raichu.pal b/graphics/object_events/palettes/followers/raichu.pal deleted file mode 100644 index a131215ea..000000000 --- a/graphics/object_events/palettes/followers/raichu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 121 33 -1 1 1 -113 73 41 -209 177 25 -249 233 209 -121 105 73 -249 225 9 -73 41 25 -249 145 1 -249 193 65 -233 233 249 -137 89 25 -193 177 129 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/raikou.pal b/graphics/object_events/palettes/followers/raikou.pal deleted file mode 100644 index 07b95381f..000000000 --- a/graphics/object_events/palettes/followers/raikou.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 121 17 -65 33 97 -161 185 201 -33 57 65 -49 81 105 -185 49 49 -1 1 1 -233 233 249 -233 185 65 -161 89 185 -73 89 89 -113 57 145 -89 65 41 -57 97 97 -153 201 201 diff --git a/graphics/object_events/palettes/followers/ralts.pal b/graphics/object_events/palettes/followers/ralts.pal deleted file mode 100644 index 5c4776a37..000000000 --- a/graphics/object_events/palettes/followers/ralts.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 129 57 -169 169 177 -17 65 33 -73 177 89 -129 33 57 -233 233 249 -241 105 105 -1 1 1 -129 129 145 -201 201 217 -73 73 81 -105 201 129 -185 49 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rampardos.pal b/graphics/object_events/palettes/followers/rampardos.pal deleted file mode 100644 index 66eeea4da..000000000 --- a/graphics/object_events/palettes/followers/rampardos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -129 65 81 -185 185 185 -233 105 121 -89 129 233 -97 97 97 -57 57 57 -1 1 1 -65 89 153 -225 225 225 -121 161 249 -113 113 113 -49 57 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rapidash.pal b/graphics/object_events/palettes/followers/rapidash.pal deleted file mode 100644 index aa197a10a..000000000 --- a/graphics/object_events/palettes/followers/rapidash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 161 25 -73 57 41 -241 225 169 -81 97 129 -185 169 113 -249 81 33 -113 97 65 -185 201 121 -161 49 9 -233 233 249 -153 57 81 -1 1 1 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/raticate.pal b/graphics/object_events/palettes/followers/raticate.pal deleted file mode 100644 index 75f836e6c..000000000 --- a/graphics/object_events/palettes/followers/raticate.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 145 57 -225 201 169 -89 65 25 -185 169 113 -233 233 249 -137 49 121 -201 201 201 -177 97 57 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rattata.pal b/graphics/object_events/palettes/followers/rattata.pal deleted file mode 100644 index 79c244a7b..000000000 --- a/graphics/object_events/palettes/followers/rattata.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 81 -169 129 217 -57 49 89 -233 217 177 -185 169 129 -217 217 217 -225 57 33 -105 89 153 -233 233 249 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rayquaza.pal b/graphics/object_events/palettes/followers/rayquaza.pal deleted file mode 100644 index 93c0e8a41..000000000 --- a/graphics/object_events/palettes/followers/rayquaza.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 145 81 -49 105 49 -153 169 177 -153 25 25 -121 185 113 -49 49 49 -241 201 49 -201 217 241 -153 225 145 -193 161 41 -145 121 25 -201 41 41 -17 65 25 -89 17 9 -1 1 1 diff --git a/graphics/object_events/palettes/followers/regice.pal b/graphics/object_events/palettes/followers/regice.pal deleted file mode 100644 index ea013d68a..000000000 --- a/graphics/object_events/palettes/followers/regice.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 169 89 -97 145 185 -177 225 249 -233 233 137 -41 73 97 -217 201 113 -121 169 209 -1 1 1 -65 105 145 -145 185 225 -201 241 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/regigigas.pal b/graphics/object_events/palettes/followers/regigigas.pal deleted file mode 100644 index dffde944b..000000000 --- a/graphics/object_events/palettes/followers/regigigas.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 153 73 -65 161 153 -41 65 49 -249 209 41 -209 73 49 -81 81 105 -121 121 137 -233 233 249 -1 1 1 -41 105 73 -169 169 193 -169 137 41 -97 81 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/regirock.pal b/graphics/object_events/palettes/followers/regirock.pal deleted file mode 100644 index bbbdd8d21..000000000 --- a/graphics/object_events/palettes/followers/regirock.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 113 89 -1 1 1 -137 65 41 -161 145 129 -57 41 33 -201 185 169 -113 89 81 -217 113 73 -233 217 201 -177 89 57 -177 161 145 -97 41 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/registeel.pal b/graphics/object_events/palettes/followers/registeel.pal deleted file mode 100644 index f01e24f60..000000000 --- a/graphics/object_events/palettes/followers/registeel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 121 121 -57 65 65 -185 201 209 -1 1 1 -193 57 57 -33 41 41 -129 145 153 -81 89 97 -209 105 105 -233 233 249 -153 169 177 -97 41 33 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/relicanth.pal b/graphics/object_events/palettes/followers/relicanth.pal deleted file mode 100644 index 9caac6b77..000000000 --- a/graphics/object_events/palettes/followers/relicanth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 97 -97 65 57 -1 1 1 -177 41 81 -57 41 33 -121 89 73 -169 153 129 -193 177 153 -73 73 97 -217 201 169 -49 49 65 -73 49 41 -105 97 81 -137 121 105 -0 0 0 diff --git a/graphics/object_events/palettes/followers/remoraid.pal b/graphics/object_events/palettes/followers/remoraid.pal deleted file mode 100644 index 379f4e4f6..000000000 --- a/graphics/object_events/palettes/followers/remoraid.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 121 161 -169 185 209 -105 25 81 -233 233 249 -73 73 73 -1 1 1 -193 209 233 -25 57 105 -113 153 201 -41 81 129 -145 193 233 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rhydon.pal b/graphics/object_events/palettes/followers/rhydon.pal deleted file mode 100644 index d8b41c6ea..000000000 --- a/graphics/object_events/palettes/followers/rhydon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 49 -185 185 185 -65 57 25 -137 137 137 -217 217 217 -121 105 57 -137 33 57 -217 177 89 -1 1 1 -65 65 65 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyhorn.pal b/graphics/object_events/palettes/followers/rhyhorn.pal deleted file mode 100644 index 67ea3d889..000000000 --- a/graphics/object_events/palettes/followers/rhyhorn.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 145 -201 201 201 -65 65 65 -1 1 1 -137 33 57 -233 233 249 -113 113 113 -177 177 177 -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/palettes/followers/rhyperior.pal b/graphics/object_events/palettes/followers/rhyperior.pal deleted file mode 100644 index 38c0117a5..000000000 --- a/graphics/object_events/palettes/followers/rhyperior.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 153 -145 73 17 -89 81 73 -65 41 25 -193 193 201 -113 113 113 -137 33 57 -1 1 1 -233 233 249 -209 73 33 -49 49 49 -137 113 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/riolu.pal b/graphics/object_events/palettes/followers/riolu.pal deleted file mode 100644 index 5de18e81d..000000000 --- a/graphics/object_events/palettes/followers/riolu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -49 57 89 -97 97 97 -233 233 249 -73 137 193 -153 25 49 -121 97 41 -57 105 145 -169 185 201 -41 41 41 -113 185 241 -73 73 73 -81 89 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/roselia.pal b/graphics/object_events/palettes/followers/roselia.pal deleted file mode 100644 index 4a0189e95..000000000 --- a/graphics/object_events/palettes/followers/roselia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 145 17 -33 57 17 -81 145 209 -25 49 89 -41 97 137 -233 185 65 -1 1 1 -89 17 49 -201 65 113 -169 129 57 -57 97 17 -145 41 81 -161 201 145 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/roserade.pal b/graphics/object_events/palettes/followers/roserade.pal deleted file mode 100644 index 6204afc14..000000000 --- a/graphics/object_events/palettes/followers/roserade.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 41 -161 177 177 -17 65 25 -97 169 73 -201 217 217 -41 105 153 -233 185 65 -1 1 1 -201 65 113 -137 17 73 -81 169 233 -169 129 57 -73 73 73 -233 233 249 -145 193 105 diff --git a/graphics/object_events/palettes/followers/rotom_base.pal b/graphics/object_events/palettes/followers/rotom_base.pal deleted file mode 100644 index 313955303..000000000 --- a/graphics/object_events/palettes/followers/rotom_base.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 153 73 -17 73 113 -145 73 17 -105 185 217 -217 113 49 -65 65 65 -49 129 161 -185 89 33 -177 233 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_fan.pal b/graphics/object_events/palettes/followers/rotom_fan.pal deleted file mode 100644 index a5f3ba2f5..000000000 --- a/graphics/object_events/palettes/followers/rotom_fan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 145 65 -249 201 81 -65 65 65 -1 1 1 -209 161 49 -185 89 33 -113 57 9 -241 153 73 -249 249 153 -217 113 49 -153 185 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_frost.pal b/graphics/object_events/palettes/followers/rotom_frost.pal deleted file mode 100644 index 40548eeb1..000000000 --- a/graphics/object_events/palettes/followers/rotom_frost.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 113 49 -73 17 113 -193 161 217 -49 49 49 -241 153 73 -89 89 89 -145 73 17 -217 217 241 -1 1 1 -121 97 161 -185 89 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_heat.pal b/graphics/object_events/palettes/followers/rotom_heat.pal deleted file mode 100644 index 81477472a..000000000 --- a/graphics/object_events/palettes/followers/rotom_heat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 113 49 -145 73 17 -129 33 25 -1 1 1 -185 89 33 -41 41 41 -241 153 73 -73 73 73 -249 217 129 -217 89 49 -161 41 17 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_mow.pal b/graphics/object_events/palettes/followers/rotom_mow.pal deleted file mode 100644 index 124db71d5..000000000 --- a/graphics/object_events/palettes/followers/rotom_mow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 129 73 -25 89 17 -193 193 225 -113 113 113 -153 217 41 -145 73 17 -241 153 73 -217 113 49 -217 249 137 -1 1 1 -233 233 249 -65 65 65 -185 89 33 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_wash.pal b/graphics/object_events/palettes/followers/rotom_wash.pal deleted file mode 100644 index b2ad20e2f..000000000 --- a/graphics/object_events/palettes/followers/rotom_wash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 153 73 -65 65 65 -17 73 113 -105 161 233 -185 89 33 -113 57 9 -1 1 1 -81 81 81 -177 233 241 -65 97 161 -217 113 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sableye.pal b/graphics/object_events/palettes/followers/sableye.pal deleted file mode 100644 index beadb4681..000000000 --- a/graphics/object_events/palettes/followers/sableye.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 153 121 -65 49 105 -233 233 249 -81 121 185 -233 89 113 -49 81 137 -121 161 225 -193 57 57 -1 1 1 -121 97 177 -89 65 145 -145 129 217 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/salamence.pal b/graphics/object_events/palettes/followers/salamence.pal deleted file mode 100644 index 76afcbc8f..000000000 --- a/graphics/object_events/palettes/followers/salamence.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 145 169 -57 57 65 -81 185 201 -161 65 65 -1 1 1 -233 233 249 -193 81 97 -97 33 33 -129 129 145 -49 73 113 -161 161 177 -153 201 209 -217 89 121 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sandshrew.pal b/graphics/object_events/palettes/followers/sandshrew.pal deleted file mode 100644 index ac1703261..000000000 --- a/graphics/object_events/palettes/followers/sandshrew.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -129 177 169 -185 137 41 -161 161 161 -225 217 169 -97 65 33 -185 169 137 -1 1 1 -33 97 121 -217 169 57 -233 233 249 -121 105 89 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sandslash.pal b/graphics/object_events/palettes/followers/sandslash.pal deleted file mode 100644 index d11a2ce3b..000000000 --- a/graphics/object_events/palettes/followers/sandslash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 131 3 -153 153 153 -97 65 33 -233 225 153 -89 89 89 -177 177 177 -201 137 49 -1 1 1 -233 233 249 -137 97 41 -49 33 17 -41 105 129 -225 169 65 -193 161 137 -161 105 33 diff --git a/graphics/object_events/palettes/followers/sceptile.pal b/graphics/object_events/palettes/followers/sceptile.pal deleted file mode 100644 index 806146f2d..000000000 --- a/graphics/object_events/palettes/followers/sceptile.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 145 49 -41 81 17 -161 209 105 -105 25 25 -1 1 1 -201 161 57 -121 105 25 -65 49 9 -129 177 73 -249 217 89 -153 41 41 -65 89 25 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/scizor.pal b/graphics/object_events/palettes/followers/scizor.pal deleted file mode 100644 index ee3678e0c..000000000 --- a/graphics/object_events/palettes/followers/scizor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 137 1 -137 89 1 -129 25 17 -1 1 1 -185 201 217 -41 49 65 -81 89 113 -209 57 57 -233 233 249 -145 153 177 -89 17 9 -105 113 137 -161 33 33 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/scyther.pal b/graphics/object_events/palettes/followers/scyther.pal deleted file mode 100644 index b279ae4cd..000000000 --- a/graphics/object_events/palettes/followers/scyther.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 161 65 -177 169 201 -1 1 1 -41 65 33 -129 129 129 -233 233 249 -153 209 105 -177 153 41 -241 217 73 -81 65 17 -177 177 201 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/seadra.pal b/graphics/object_events/palettes/followers/seadra.pal deleted file mode 100644 index cd2bb36c4..000000000 --- a/graphics/object_events/palettes/followers/seadra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 161 97 -89 145 217 -1 1 1 -233 233 249 -65 65 73 -169 185 209 -73 137 169 -249 209 161 -49 81 113 -121 185 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/seaking.pal b/graphics/object_events/palettes/followers/seaking.pal deleted file mode 100644 index 7cc446f83..000000000 --- a/graphics/object_events/palettes/followers/seaking.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 161 81 -169 57 49 -177 177 177 -249 233 161 -249 81 41 -49 49 49 -241 129 161 -113 25 17 -233 233 249 -1 1 1 -97 97 97 -193 65 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sealeo.pal b/graphics/object_events/palettes/followers/sealeo.pal deleted file mode 100644 index 4efd9fd5a..000000000 --- a/graphics/object_events/palettes/followers/sealeo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 137 153 -217 209 153 -81 81 57 -73 153 201 -49 65 105 -137 193 241 -185 169 113 -49 113 145 -209 217 233 -177 185 209 -121 113 81 -233 233 249 -81 81 105 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/seedot.pal b/graphics/object_events/palettes/followers/seedot.pal deleted file mode 100644 index 7aff4c0af..000000000 --- a/graphics/object_events/palettes/followers/seedot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 113 49 -73 49 25 -177 161 65 -65 57 57 -129 113 113 -89 73 9 -1 1 1 -97 89 81 -33 33 25 -233 201 121 -121 81 41 -65 65 73 -137 121 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/seel.pal b/graphics/object_events/palettes/followers/seel.pal deleted file mode 100644 index dad2284d8..000000000 --- a/graphics/object_events/palettes/followers/seel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 153 9 -225 129 145 -113 89 33 -249 241 185 -73 81 121 -49 49 81 -1 1 1 -225 225 241 -161 169 209 -193 65 89 -81 33 33 -233 201 97 -97 97 97 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sentret.pal b/graphics/object_events/palettes/followers/sentret.pal deleted file mode 100644 index 7e9a52ae0..000000000 --- a/graphics/object_events/palettes/followers/sentret.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 89 -81 65 57 -241 225 193 -73 41 9 -1 1 1 -161 65 113 -129 97 73 -217 193 129 -49 33 25 -233 233 249 -137 33 49 -209 169 129 -89 73 57 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/seviper.pal b/graphics/object_events/palettes/followers/seviper.pal deleted file mode 100644 index 276c88dc2..000000000 --- a/graphics/object_events/palettes/followers/seviper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 113 25 -81 89 105 -33 41 57 -113 121 137 -217 169 73 -161 49 57 -249 217 89 -121 33 33 -169 113 241 -145 89 185 -1 1 1 -209 73 81 -57 65 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sharpedo.pal b/graphics/object_events/palettes/followers/sharpedo.pal deleted file mode 100644 index 5381c6030..000000000 --- a/graphics/object_events/palettes/followers/sharpedo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 169 49 -97 81 17 -89 145 193 -33 65 105 -1 1 1 -193 89 113 -57 65 73 -233 233 249 -129 137 145 -65 113 161 -113 25 49 -249 209 81 -161 169 177 -33 89 137 -73 81 89 diff --git a/graphics/object_events/palettes/followers/shaymin_land.pal b/graphics/object_events/palettes/followers/shaymin_land.pal deleted file mode 100644 index 01a77716c..000000000 --- a/graphics/object_events/palettes/followers/shaymin_land.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 193 1 -129 129 153 -233 233 249 -65 65 65 -49 153 73 -169 169 209 -1 1 1 -193 89 129 -161 209 113 -241 129 169 -121 153 113 -41 89 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_sky.pal b/graphics/object_events/palettes/followers/shaymin_sky.pal deleted file mode 100644 index 59b7b2681..000000000 --- a/graphics/object_events/palettes/followers/shaymin_sky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 1 -49 53 39 -1 1 1 -177 225 97 -89 89 113 -143 27 31 -49 153 73 -41 89 57 -177 177 217 -233 233 249 -249 41 49 -121 169 49 -59 65 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shedinja.pal b/graphics/object_events/palettes/followers/shedinja.pal deleted file mode 100644 index 05d9d168e..000000000 --- a/graphics/object_events/palettes/followers/shedinja.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 65 -105 81 17 -153 145 161 -241 217 121 -97 89 113 -65 57 33 -201 177 105 -233 233 249 -121 105 65 -185 177 193 -121 113 137 -57 49 73 -1 1 1 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shelgon.pal b/graphics/object_events/palettes/followers/shelgon.pal deleted file mode 100644 index bea7288b0..000000000 --- a/graphics/object_events/palettes/followers/shelgon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 65 -161 161 185 -65 65 81 -201 201 217 -209 177 97 -113 113 137 -129 41 41 -185 185 201 -233 233 249 -89 89 105 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shellder.pal b/graphics/object_events/palettes/followers/shellder.pal deleted file mode 100644 index b48549223..000000000 --- a/graphics/object_events/palettes/followers/shellder.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -73 73 161 -233 233 249 -129 129 201 -41 41 49 -233 153 217 -57 57 73 -1 1 1 -193 89 177 -161 161 241 -73 33 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_east.pal b/graphics/object_events/palettes/followers/shellos_east.pal deleted file mode 100644 index 0fbe31e03..000000000 --- a/graphics/object_events/palettes/followers/shellos_east.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 9 -81 137 153 -89 145 81 -49 89 105 -233 233 249 -129 185 89 -89 169 209 -1 1 1 -249 217 57 -49 49 49 -153 153 177 -73 105 129 -169 201 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_west.pal b/graphics/object_events/palettes/followers/shellos_west.pal deleted file mode 100644 index bcd1ca01e..000000000 --- a/graphics/object_events/palettes/followers/shellos_west.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 1 -113 113 113 -129 129 129 -185 185 201 -89 49 73 -249 89 209 -1 1 1 -49 49 49 -249 209 89 -249 137 201 -233 233 249 -193 105 145 -145 33 105 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shieldon.pal b/graphics/object_events/palettes/followers/shieldon.pal deleted file mode 100644 index 4bc877c4c..000000000 --- a/graphics/object_events/palettes/followers/shieldon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 73 -201 201 201 -57 49 41 -193 161 73 -105 81 49 -153 153 153 -73 73 73 -121 121 121 -233 233 249 -1 1 1 -89 89 89 -57 57 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shiftry.pal b/graphics/object_events/palettes/followers/shiftry.pal deleted file mode 100644 index cea3ce83c..000000000 --- a/graphics/object_events/palettes/followers/shiftry.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 137 9 -129 137 145 -97 65 33 -1 1 1 -137 97 41 -65 41 9 -145 209 17 -233 233 249 -161 177 185 -161 137 65 -81 81 89 -233 201 121 -33 57 9 -161 113 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shinx.pal b/graphics/object_events/palettes/followers/shinx.pal deleted file mode 100644 index e99f3c9de..000000000 --- a/graphics/object_events/palettes/followers/shinx.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 33 -81 121 185 -65 65 65 -209 81 65 -145 185 233 -89 89 89 -1 1 1 -225 185 25 -233 233 249 -113 161 217 -105 89 41 -49 81 113 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shroomish.pal b/graphics/object_events/palettes/followers/shroomish.pal deleted file mode 100644 index 203fd57ea..000000000 --- a/graphics/object_events/palettes/followers/shroomish.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 105 73 -121 177 89 -225 201 145 -73 65 49 -81 137 65 -193 161 129 -49 89 41 -145 129 89 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shuckle.pal b/graphics/object_events/palettes/followers/shuckle.pal deleted file mode 100644 index ecf1abe78..000000000 --- a/graphics/object_events/palettes/followers/shuckle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 137 49 -73 57 57 -1 1 1 -89 25 17 -241 217 81 -209 57 57 -233 209 201 -201 177 65 -113 97 33 -161 33 33 -201 169 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shuppet.pal b/graphics/object_events/palettes/followers/shuppet.pal deleted file mode 100644 index 045c51318..000000000 --- a/graphics/object_events/palettes/followers/shuppet.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 49 -97 105 129 -1 1 1 -65 73 97 -81 129 201 -41 49 65 -129 129 161 -161 161 193 -49 81 153 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/silcoon.pal b/graphics/object_events/palettes/followers/silcoon.pal deleted file mode 100644 index f256a8be4..000000000 --- a/graphics/object_events/palettes/followers/silcoon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 129 137 -81 81 81 -185 185 169 -129 33 57 -1 1 1 -241 105 105 -225 225 209 -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/graphics/object_events/palettes/followers/skarmory.pal b/graphics/object_events/palettes/followers/skarmory.pal deleted file mode 100644 index 5d54ff7e1..000000000 --- a/graphics/object_events/palettes/followers/skarmory.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 169 17 -33 49 105 -121 145 193 -161 25 49 -1 1 1 -201 57 89 -209 233 249 -73 1 1 -65 97 153 -249 209 97 -153 177 217 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/skiploom.pal b/graphics/object_events/palettes/followers/skiploom.pal deleted file mode 100644 index 6d538d4e6..000000000 --- a/graphics/object_events/palettes/followers/skiploom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 153 33 -185 201 225 -233 193 25 -129 193 81 -185 49 177 -249 217 81 -121 81 9 -169 121 9 -41 113 9 -233 233 249 -1 1 1 -185 217 121 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/skitty.pal b/graphics/object_events/palettes/followers/skitty.pal deleted file mode 100644 index c43022e02..000000000 --- a/graphics/object_events/palettes/followers/skitty.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 161 73 -97 57 57 -249 225 129 -129 105 73 -249 137 153 -177 81 89 -57 57 89 -1 1 1 -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/palettes/followers/skorupi.pal b/graphics/object_events/palettes/followers/skorupi.pal deleted file mode 100644 index d4dad9ff4..000000000 --- a/graphics/object_events/palettes/followers/skorupi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -33 121 113 -25 193 177 -121 129 209 -73 73 145 -41 161 153 -177 185 193 -57 57 81 -121 129 137 -233 233 249 -1 1 1 -153 161 225 -89 97 177 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/skuntank.pal b/graphics/object_events/palettes/followers/skuntank.pal deleted file mode 100644 index fb06f0e0d..000000000 --- a/graphics/object_events/palettes/followers/skuntank.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 161 97 -89 81 49 -185 185 201 -65 49 65 -233 209 97 -137 89 145 -161 41 33 -41 41 41 -233 233 249 -193 97 65 -105 49 113 -113 113 113 -233 217 145 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/slaking.pal b/graphics/object_events/palettes/followers/slaking.pal deleted file mode 100644 index 40eca9702..000000000 --- a/graphics/object_events/palettes/followers/slaking.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 97 -97 73 73 -217 201 161 -1 1 1 -209 113 137 -129 105 89 -73 57 41 -145 137 153 -193 193 209 -233 233 249 -169 81 105 -121 57 73 -201 177 153 -169 129 105 -81 73 89 diff --git a/graphics/object_events/palettes/followers/slakoth.pal b/graphics/object_events/palettes/followers/slakoth.pal deleted file mode 100644 index 12c49947a..000000000 --- a/graphics/object_events/palettes/followers/slakoth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 89 -81 65 65 -185 177 193 -169 57 57 -1 1 1 -129 89 81 -145 137 153 -89 81 97 -233 233 249 -121 33 33 -209 89 89 -225 201 145 -185 153 113 -113 65 57 -113 97 89 diff --git a/graphics/object_events/palettes/followers/slowbro.pal b/graphics/object_events/palettes/followers/slowbro.pal deleted file mode 100644 index f6c55d4cd..000000000 --- a/graphics/object_events/palettes/followers/slowbro.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 193 89 -73 81 89 -241 169 177 -145 121 49 -241 241 169 -177 97 105 -153 153 153 -233 233 249 -113 49 57 -193 65 65 -193 201 209 -217 113 97 -1 1 1 -209 121 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/slowking.pal b/graphics/object_events/palettes/followers/slowking.pal deleted file mode 100644 index 30d658e9b..000000000 --- a/graphics/object_events/palettes/followers/slowking.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 137 41 -153 161 169 -113 49 57 -1 1 1 -73 81 89 -193 201 209 -209 121 129 -153 65 73 -209 17 17 -121 89 17 -233 233 249 -233 201 97 -241 169 177 -201 161 65 -201 81 97 diff --git a/graphics/object_events/palettes/followers/slowpoke.pal b/graphics/object_events/palettes/followers/slowpoke.pal deleted file mode 100644 index 324117fbd..000000000 --- a/graphics/object_events/palettes/followers/slowpoke.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 121 129 -241 217 145 -209 169 97 -105 81 17 -233 233 249 -161 169 177 -193 193 193 -97 41 49 -153 89 97 -241 153 161 -1 1 1 -249 193 177 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/slugma.pal b/graphics/object_events/palettes/followers/slugma.pal deleted file mode 100644 index 8697071e3..000000000 --- a/graphics/object_events/palettes/followers/slugma.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 145 17 -161 57 25 -73 1 1 -1 1 1 -217 97 65 -193 73 41 -121 25 17 -233 209 105 -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/palettes/followers/smeargle.pal b/graphics/object_events/palettes/followers/smeargle.pal deleted file mode 100644 index 380390f8e..000000000 --- a/graphics/object_events/palettes/followers/smeargle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 177 65 -177 185 193 -41 113 41 -161 153 105 -217 217 185 -97 89 73 -1 1 1 -65 57 49 -233 233 249 -113 97 33 -185 185 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/smoochum.pal b/graphics/object_events/palettes/followers/smoochum.pal deleted file mode 100644 index 79f273b2d..000000000 --- a/graphics/object_events/palettes/followers/smoochum.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 137 25 -249 153 201 -113 33 97 -1 1 1 -177 65 153 -129 81 1 -249 193 49 -233 233 249 -217 65 105 -177 185 193 -153 97 41 -225 161 105 -153 49 81 -201 129 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sneasel.pal b/graphics/object_events/palettes/followers/sneasel.pal deleted file mode 100644 index d3e0617ce..000000000 --- a/graphics/object_events/palettes/followers/sneasel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 137 17 -57 73 81 -81 153 177 -89 97 105 -121 1 1 -249 249 249 -1 1 1 -25 81 121 -201 49 73 -169 185 201 -241 177 65 -57 113 137 -129 145 169 -153 9 3 -25 89 113 diff --git a/graphics/object_events/palettes/followers/snorlax.pal b/graphics/object_events/palettes/followers/snorlax.pal deleted file mode 100644 index 204900db7..000000000 --- a/graphics/object_events/palettes/followers/snorlax.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 81 -161 161 185 -65 65 65 -1 1 1 -249 225 169 -137 105 73 -41 49 49 -81 129 145 -233 233 249 -65 105 121 -193 193 201 -217 193 121 -41 73 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/snorunt.pal b/graphics/object_events/palettes/followers/snorunt.pal deleted file mode 100644 index 283587f32..000000000 --- a/graphics/object_events/palettes/followers/snorunt.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 57 -89 65 57 -169 73 65 -41 129 193 -97 97 121 -33 33 41 -249 217 89 -145 105 57 -233 233 249 -169 169 185 -1 1 1 -241 105 89 -49 49 65 -65 65 81 -193 81 65 diff --git a/graphics/object_events/palettes/followers/snover.pal b/graphics/object_events/palettes/followers/snover.pal deleted file mode 100644 index d0b29e37a..000000000 --- a/graphics/object_events/palettes/followers/snover.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 65 -161 161 193 -65 57 25 -121 121 153 -129 105 41 -217 217 233 -65 65 65 -169 137 57 -1 1 1 -185 193 209 -49 153 73 -97 81 57 -233 233 249 -49 73 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/snubbull.pal b/graphics/object_events/palettes/followers/snubbull.pal deleted file mode 100644 index 36e6c87a4..000000000 --- a/graphics/object_events/palettes/followers/snubbull.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 153 -49 65 81 -209 193 145 -1 1 1 -185 73 113 -121 33 65 -177 193 209 -73 153 193 -241 145 185 -233 233 249 -209 105 145 -33 81 113 -161 49 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/solrock.pal b/graphics/object_events/palettes/followers/solrock.pal deleted file mode 100644 index d2eccc967..000000000 --- a/graphics/object_events/palettes/followers/solrock.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 105 41 -97 81 33 -177 161 73 -225 9 3 -217 137 57 -65 73 89 -1 1 1 -33 41 49 -209 193 97 -145 121 57 -145 73 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spearow.pal b/graphics/object_events/palettes/followers/spearow.pal deleted file mode 100644 index 2c7f13b8a..000000000 --- a/graphics/object_events/palettes/followers/spearow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 129 33 -81 57 17 -249 137 145 -233 121 89 -65 65 65 -201 57 25 -185 169 113 -145 41 17 -233 233 249 -161 81 105 -129 89 33 -137 121 65 -1 1 1 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spheal.pal b/graphics/object_events/palettes/followers/spheal.pal deleted file mode 100644 index 637a19fa1..000000000 --- a/graphics/object_events/palettes/followers/spheal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 113 -217 201 161 -81 81 57 -105 137 185 -49 65 105 -1 1 1 -209 217 233 -137 169 225 -81 97 145 -121 113 81 -177 185 209 -233 233 249 -81 81 105 -193 177 137 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spinarak.pal b/graphics/object_events/palettes/followers/spinarak.pal deleted file mode 100644 index 2f09009e2..000000000 --- a/graphics/object_events/palettes/followers/spinarak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 137 33 -113 137 153 -81 57 1 -121 185 33 -233 233 249 -65 97 89 -169 185 209 -161 217 97 -209 65 105 -1 1 1 -113 17 25 -193 137 1 -225 193 9 -33 81 33 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spinda.pal b/graphics/object_events/palettes/followers/spinda.pal deleted file mode 100644 index 97d7f9ff1..000000000 --- a/graphics/object_events/palettes/followers/spinda.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 113 -81 73 57 -145 65 65 -1 1 1 -129 105 89 -209 105 105 -217 193 169 -121 49 49 -177 81 81 -193 169 145 -57 65 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spiritomb.pal b/graphics/object_events/palettes/followers/spiritomb.pal deleted file mode 100644 index aa86da120..000000000 --- a/graphics/object_events/palettes/followers/spiritomb.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 169 73 -105 81 25 -145 201 89 -121 57 105 -169 113 169 -73 57 33 -201 145 209 -97 89 97 -209 241 121 -1 1 1 -65 113 65 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spoink.pal b/graphics/object_events/palettes/followers/spoink.pal deleted file mode 100644 index 652308e48..000000000 --- a/graphics/object_events/palettes/followers/spoink.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 137 137 -145 49 97 -49 57 65 -97 105 105 -249 249 249 -105 25 65 -1 1 1 -185 73 129 -225 97 161 -73 81 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/squirtle.pal b/graphics/object_events/palettes/followers/squirtle.pal deleted file mode 100644 index 8d090127d..000000000 --- a/graphics/object_events/palettes/followers/squirtle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 121 25 -57 137 185 -217 169 49 -233 233 249 -33 73 97 -185 185 185 -1 1 1 -161 9 3 -89 185 241 -241 209 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/stantler.pal b/graphics/object_events/palettes/followers/stantler.pal deleted file mode 100644 index ca315697f..000000000 --- a/graphics/object_events/palettes/followers/stantler.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 25 -89 73 9 -169 185 209 -201 145 89 -73 65 57 -225 209 81 -97 49 9 -1 1 1 -233 233 249 -185 97 49 -137 33 49 -113 89 81 -201 177 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/staraptor.pal b/graphics/object_events/palettes/followers/staraptor.pal deleted file mode 100644 index 737f9bd0f..000000000 --- a/graphics/object_events/palettes/followers/staraptor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 113 1 -145 145 145 -225 49 33 -33 33 33 -73 65 65 -201 201 201 -145 129 129 -1 1 1 -233 233 249 -105 17 25 -105 97 97 -57 57 57 -217 217 217 -73 73 73 diff --git a/graphics/object_events/palettes/followers/staravia.pal b/graphics/object_events/palettes/followers/staravia.pal deleted file mode 100644 index 1f40137a8..000000000 --- a/graphics/object_events/palettes/followers/staravia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 185 153 -193 113 1 -145 129 105 -225 217 209 -169 153 129 -209 201 201 -65 65 65 -33 33 33 -233 233 249 -89 89 89 -1 1 1 -185 185 177 -121 121 121 -0 0 0 diff --git a/graphics/object_events/palettes/followers/starly.pal b/graphics/object_events/palettes/followers/starly.pal deleted file mode 100644 index adca8581c..000000000 --- a/graphics/object_events/palettes/followers/starly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 113 1 -185 185 185 -81 65 65 -97 97 89 -217 217 217 -49 49 49 -1 1 1 -233 233 249 -105 105 105 -73 73 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/starmie.pal b/graphics/object_events/palettes/followers/starmie.pal deleted file mode 100644 index 1dba44dc5..000000000 --- a/graphics/object_events/palettes/followers/starmie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 145 25 -65 65 113 -57 49 17 -105 25 25 -137 113 233 -1 1 1 -49 41 65 -233 177 33 -241 89 73 -89 89 193 -185 41 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/staryu.pal b/graphics/object_events/palettes/followers/staryu.pal deleted file mode 100644 index 47f9daf31..000000000 --- a/graphics/object_events/palettes/followers/staryu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 121 33 -57 49 17 -177 145 25 -105 25 25 -121 81 9 -1 1 1 -225 97 73 -233 177 33 -185 41 41 -89 73 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/steelix.pal b/graphics/object_events/palettes/followers/steelix.pal deleted file mode 100644 index cac012566..000000000 --- a/graphics/object_events/palettes/followers/steelix.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 121 145 -161 185 201 -49 65 81 -1 1 1 -233 233 249 -193 209 225 -193 57 57 -129 153 169 -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/palettes/followers/stunky.pal b/graphics/object_events/palettes/followers/stunky.pal deleted file mode 100644 index baa8f838a..000000000 --- a/graphics/object_events/palettes/followers/stunky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 137 105 -89 81 49 -233 217 145 -89 65 97 -185 185 201 -49 49 49 -185 169 113 -113 113 113 -233 233 249 -137 81 137 -185 81 57 -1 1 1 -65 41 65 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sudowoodo.pal b/graphics/object_events/palettes/followers/sudowoodo.pal deleted file mode 100644 index a16242e5e..000000000 --- a/graphics/object_events/palettes/followers/sudowoodo.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 153 65 -1 1 1 -201 169 1 -25 81 17 -161 129 89 -121 209 121 -129 105 65 -185 153 89 -233 233 249 -225 121 121 -89 65 17 -225 193 1 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/suicune.pal b/graphics/object_events/palettes/followers/suicune.pal deleted file mode 100644 index 2ec7c2b8c..000000000 --- a/graphics/object_events/palettes/followers/suicune.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 153 137 -65 33 97 -97 201 193 -81 81 97 -97 153 193 -185 49 49 -129 153 153 -185 201 201 -25 57 89 -161 97 177 -233 233 249 -113 57 137 -49 97 137 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sunflora.pal b/graphics/object_events/palettes/followers/sunflora.pal deleted file mode 100644 index 34210aafa..000000000 --- a/graphics/object_events/palettes/followers/sunflora.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 137 49 -225 185 17 -89 185 81 -1 1 1 -41 81 17 -201 129 33 -241 225 113 -233 193 33 -121 209 113 -225 161 41 -129 73 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/sunkern.pal b/graphics/object_events/palettes/followers/sunkern.pal deleted file mode 100644 index 8184c4986..000000000 --- a/graphics/object_events/palettes/followers/sunkern.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 9 -233 233 249 -89 65 1 -113 193 81 -73 97 113 -1 1 1 -153 105 9 -241 217 113 -33 49 57 -105 161 57 -217 185 49 -41 81 17 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/surskit.pal b/graphics/object_events/palettes/followers/surskit.pal deleted file mode 100644 index 40ff84b78..000000000 --- a/graphics/object_events/palettes/followers/surskit.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 33 -105 81 17 -97 145 185 -185 169 49 -41 73 97 -145 41 41 -233 233 249 -1 1 1 -33 41 57 -193 57 57 -225 209 73 -73 105 137 -121 177 225 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/swablu.pal b/graphics/object_events/palettes/followers/swablu.pal deleted file mode 100644 index 0af595d67..000000000 --- a/graphics/object_events/palettes/followers/swablu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 129 145 -225 225 233 -89 145 177 -73 81 105 -113 177 209 -65 113 153 -1 1 1 -249 249 249 -169 177 193 -49 81 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/swalot.pal b/graphics/object_events/palettes/followers/swalot.pal deleted file mode 100644 index ed14e5df2..000000000 --- a/graphics/object_events/palettes/followers/swalot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 129 57 -137 105 161 -65 41 97 -233 185 65 -57 73 81 -161 129 193 -97 73 121 -161 25 25 -1 1 1 -217 105 105 -185 145 217 -121 89 145 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/swampert.pal b/graphics/object_events/palettes/followers/swampert.pal deleted file mode 100644 index 351f6cc11..000000000 --- a/graphics/object_events/palettes/followers/swampert.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -89 121 161 -161 73 17 -129 185 241 -49 57 81 -1 1 1 -97 161 209 -49 73 113 -89 105 129 -249 193 129 -201 201 225 -161 161 193 -193 89 17 -49 65 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/swellow.pal b/graphics/object_events/palettes/followers/swellow.pal deleted file mode 100644 index 4a366df34..000000000 --- a/graphics/object_events/palettes/followers/swellow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 137 41 -89 81 17 -105 137 193 -49 73 113 -209 209 233 -17 49 73 -225 209 73 -65 65 65 -217 81 89 -185 185 193 -1 1 1 -73 105 153 -177 65 81 -105 33 65 -233 233 249 diff --git a/graphics/object_events/palettes/followers/swinub.pal b/graphics/object_events/palettes/followers/swinub.pal deleted file mode 100644 index 1ac67e68b..000000000 --- a/graphics/object_events/palettes/followers/swinub.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 97 57 -185 153 105 -113 89 81 -201 97 113 -145 41 65 -73 41 9 -169 129 73 -1 1 1 -233 137 161 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/taillow.pal b/graphics/object_events/palettes/followers/taillow.pal deleted file mode 100644 index c01cf137c..000000000 --- a/graphics/object_events/palettes/followers/taillow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 41 -105 81 17 -105 137 193 -49 73 113 -225 209 73 -193 73 89 -17 49 73 -233 233 249 -121 121 129 -1 1 1 -145 49 81 -73 105 153 -169 169 177 -65 65 65 -241 105 105 diff --git a/graphics/object_events/palettes/followers/tangela.pal b/graphics/object_events/palettes/followers/tangela.pal deleted file mode 100644 index eec939132..000000000 --- a/graphics/object_events/palettes/followers/tangela.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 145 -233 233 249 -65 65 65 -121 145 177 -161 49 41 -1 1 1 -25 33 33 -89 113 113 -169 185 209 -105 161 169 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tangrowth.pal b/graphics/object_events/palettes/followers/tangrowth.pal deleted file mode 100644 index 902f72d07..000000000 --- a/graphics/object_events/palettes/followers/tangrowth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 121 121 -41 65 89 -169 185 209 -25 33 49 -201 65 113 -1 1 1 -57 105 153 -129 49 73 -57 137 201 -233 233 249 -49 81 113 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tauros.pal b/graphics/object_events/palettes/followers/tauros.pal deleted file mode 100644 index 9d198490e..000000000 --- a/graphics/object_events/palettes/followers/tauros.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 73 -113 129 169 -73 65 65 -201 153 65 -193 193 209 -105 97 89 -1 1 1 -41 33 17 -145 145 145 -233 233 249 -81 81 105 -225 169 73 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/teddiursa.pal b/graphics/object_events/palettes/followers/teddiursa.pal deleted file mode 100644 index 10b1388ec..000000000 --- a/graphics/object_events/palettes/followers/teddiursa.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 121 33 -177 185 193 -225 201 97 -89 73 65 -241 225 193 -1 1 1 -89 49 17 -233 161 57 -153 97 33 -233 233 249 -201 209 225 -217 201 137 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tentacool.pal b/graphics/object_events/palettes/followers/tentacool.pal deleted file mode 100644 index ebde6755c..000000000 --- a/graphics/object_events/palettes/followers/tentacool.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 3 -73 145 161 -65 65 65 -121 193 241 -145 25 89 -177 121 73 -249 161 161 -41 105 121 -233 233 249 -65 49 41 -209 169 97 -1 1 1 -209 209 209 -225 49 97 -57 73 97 diff --git a/graphics/object_events/palettes/followers/tentacruel.pal b/graphics/object_events/palettes/followers/tentacruel.pal deleted file mode 100644 index 5eb5f673e..000000000 --- a/graphics/object_events/palettes/followers/tentacruel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 137 3 -1 1 1 -65 65 65 -233 233 249 -121 193 241 -169 169 169 -145 25 89 -153 121 89 -41 105 121 -185 161 121 -81 153 169 -225 49 97 -249 161 161 -57 73 97 -0 0 0 diff --git a/graphics/object_events/palettes/followers/togekiss.pal b/graphics/object_events/palettes/followers/togekiss.pal deleted file mode 100644 index bf54ff014..000000000 --- a/graphics/object_events/palettes/followers/togekiss.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 121 129 -169 185 209 -41 169 249 -233 65 73 -1 1 1 -65 65 65 -233 233 249 -145 153 177 -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/palettes/followers/togepi.pal b/graphics/object_events/palettes/followers/togepi.pal deleted file mode 100644 index 52fd5d0ed..000000000 --- a/graphics/object_events/palettes/followers/togepi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 137 73 -97 169 225 -233 217 89 -49 57 41 -193 177 73 -217 209 209 -217 81 89 -113 97 49 -233 121 145 -153 153 145 -249 233 145 -233 233 249 -121 201 241 -81 81 81 -1 1 1 diff --git a/graphics/object_events/palettes/followers/togetic.pal b/graphics/object_events/palettes/followers/togetic.pal deleted file mode 100644 index bf8df7baf..000000000 --- a/graphics/object_events/palettes/followers/togetic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 145 145 -233 233 249 -41 49 89 -97 169 225 -41 41 41 -1 1 1 -217 81 89 -161 177 217 -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/palettes/followers/torchic.pal b/graphics/object_events/palettes/followers/torchic.pal deleted file mode 100644 index a9c540b8d..000000000 --- a/graphics/object_events/palettes/followers/torchic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -233 233 249 -1 1 1 -121 81 17 -161 145 81 -233 169 17 -249 209 97 -209 97 1 -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/palettes/followers/torkoal.pal b/graphics/object_events/palettes/followers/torkoal.pal deleted file mode 100644 index fab0f050a..000000000 --- a/graphics/object_events/palettes/followers/torkoal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 113 65 -145 97 57 -137 33 49 -121 129 129 -97 41 41 -1 1 1 -209 137 81 -89 97 105 -209 57 81 -185 185 185 -49 57 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/torterra.pal b/graphics/object_events/palettes/followers/torterra.pal deleted file mode 100644 index 2e6475344..000000000 --- a/graphics/object_events/palettes/followers/torterra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 121 65 -209 209 217 -81 65 49 -89 185 65 -41 97 41 -1 1 1 -49 49 49 -153 153 153 -65 153 89 -89 89 89 -121 1 1 -105 209 65 -233 233 249 -121 97 49 -65 177 81 diff --git a/graphics/object_events/palettes/followers/totodile.pal b/graphics/object_events/palettes/followers/totodile.pal deleted file mode 100644 index 1a7c37644..000000000 --- a/graphics/object_events/palettes/followers/totodile.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 153 81 -65 73 81 -81 129 185 -113 25 41 -41 57 97 -169 185 209 -209 49 73 -1 1 1 -233 233 249 -113 177 233 -65 97 137 -121 105 41 -161 33 57 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/toxicroak.pal b/graphics/object_events/palettes/followers/toxicroak.pal deleted file mode 100644 index 92634817e..000000000 --- a/graphics/object_events/palettes/followers/toxicroak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 161 1 -57 81 169 -49 49 49 -129 129 129 -41 41 73 -169 49 57 -89 129 209 -113 25 33 -249 217 57 -1 1 1 -217 89 65 -49 97 193 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/trapinch.pal b/graphics/object_events/palettes/followers/trapinch.pal deleted file mode 100644 index 410b897fd..000000000 --- a/graphics/object_events/palettes/followers/trapinch.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 153 113 -169 89 73 -201 121 81 -41 41 41 -249 249 249 -1 1 1 -105 105 105 -121 121 121 -113 49 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/treecko.pal b/graphics/object_events/palettes/followers/treecko.pal deleted file mode 100644 index e5b4b2e4c..000000000 --- a/graphics/object_events/palettes/followers/treecko.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 169 33 -49 73 25 -249 217 89 -105 25 25 -57 137 105 -65 105 41 -185 49 49 -49 89 57 -1 1 1 -201 217 121 -145 33 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tropius.pal b/graphics/object_events/palettes/followers/tropius.pal deleted file mode 100644 index af8de33ba..000000000 --- a/graphics/object_events/palettes/followers/tropius.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 121 9 -161 161 161 -209 169 25 -25 57 33 -129 185 97 -65 145 73 -41 105 57 -65 49 1 -233 233 249 -249 209 33 -161 121 81 -121 97 73 -1 1 1 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/turtwig.pal b/graphics/object_events/palettes/followers/turtwig.pal deleted file mode 100644 index 9d65ea4dd..000000000 --- a/graphics/object_events/palettes/followers/turtwig.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 121 65 -81 73 57 -137 201 177 -249 233 113 -153 113 57 -81 153 105 -105 89 73 -73 73 73 -209 177 41 -233 233 249 -49 49 49 -1 1 1 -57 81 57 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/typhlosion.pal b/graphics/object_events/palettes/followers/typhlosion.pal deleted file mode 100644 index eeacd5c1f..000000000 --- a/graphics/object_events/palettes/followers/typhlosion.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 81 -73 65 17 -57 137 169 -241 201 41 -25 57 73 -161 17 25 -209 185 97 -217 81 81 -233 233 249 -57 97 121 -1 1 1 -105 89 57 -185 49 49 -249 209 97 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tyranitar.pal b/graphics/object_events/palettes/followers/tyranitar.pal deleted file mode 100644 index 4dadfce81..000000000 --- a/graphics/object_events/palettes/followers/tyranitar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -89 121 81 -137 185 105 -57 49 105 -121 137 145 -33 41 41 -161 185 201 -113 161 89 -41 73 49 -81 105 169 -233 233 249 -177 217 121 -1 1 1 -97 137 193 -49 65 65 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tyrogue.pal b/graphics/object_events/palettes/followers/tyrogue.pal deleted file mode 100644 index e0f3829ec..000000000 --- a/graphics/object_events/palettes/followers/tyrogue.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 145 153 -193 57 57 -177 185 193 -89 49 105 -169 121 177 -73 89 105 -97 25 25 -1 1 1 -233 233 249 -137 97 9 -201 161 217 -145 41 41 -113 81 129 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/umbreon.pal b/graphics/object_events/palettes/followers/umbreon.pal deleted file mode 100644 index 83c9ac129..000000000 --- a/graphics/object_events/palettes/followers/umbreon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 17 -129 89 9 -209 25 25 -233 233 249 -225 177 41 -25 41 57 -65 73 81 -1 1 1 -249 217 89 -105 113 121 -137 57 1 -41 57 65 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/unown.pal b/graphics/object_events/palettes/followers/unown.pal deleted file mode 100644 index d729ca129..000000000 --- a/graphics/object_events/palettes/followers/unown.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 73 89 -233 233 249 -41 49 65 -185 185 185 -97 105 145 -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/graphics/object_events/palettes/followers/ursaring.pal b/graphics/object_events/palettes/followers/ursaring.pal deleted file mode 100644 index 36e1ff602..000000000 --- a/graphics/object_events/palettes/followers/ursaring.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 137 57 -161 169 185 -121 73 49 -1 1 1 -145 105 57 -209 161 97 -233 233 249 -73 41 9 -217 201 137 -193 193 201 -177 129 89 -89 73 65 -153 105 65 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/uxie.pal b/graphics/object_events/palettes/followers/uxie.pal deleted file mode 100644 index ff01f4a61..000000000 --- a/graphics/object_events/palettes/followers/uxie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 89 -113 129 177 -169 41 1 -241 201 89 -73 65 57 -145 185 209 -1 1 1 -193 153 89 -233 65 33 -177 209 249 -249 169 153 -73 73 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/vaporeon.pal b/graphics/object_events/palettes/followers/vaporeon.pal deleted file mode 100644 index e28edebe1..000000000 --- a/graphics/object_events/palettes/followers/vaporeon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -9 131 5 -33 145 137 -129 201 233 -81 73 57 -89 177 225 -1 1 1 -177 153 57 -209 209 209 -33 57 105 -17 113 121 -225 201 105 -233 233 249 -73 137 177 -161 161 161 -49 105 137 diff --git a/graphics/object_events/palettes/followers/venomoth.pal b/graphics/object_events/palettes/followers/venomoth.pal deleted file mode 100644 index 558651bc1..000000000 --- a/graphics/object_events/palettes/followers/venomoth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 65 -209 153 249 -105 97 137 -233 233 249 -73 65 89 -1 1 1 -193 193 193 -161 105 241 -113 113 113 -233 185 249 -217 185 129 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/venonat.pal b/graphics/object_events/palettes/followers/venonat.pal deleted file mode 100644 index b1281ab1c..000000000 --- a/graphics/object_events/palettes/followers/venonat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 145 81 -73 57 129 -201 201 201 -129 97 33 -1 1 1 -137 1 1 -137 137 137 -113 73 209 -169 49 81 -49 33 65 -233 233 249 -161 105 241 -233 129 153 -217 185 129 -249 201 201 diff --git a/graphics/object_events/palettes/followers/venusaur.pal b/graphics/object_events/palettes/followers/venusaur.pal deleted file mode 100644 index 46f21dc4a..000000000 --- a/graphics/object_events/palettes/followers/venusaur.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 129 41 -241 121 161 -137 225 33 -145 65 33 -65 153 97 -105 217 193 -233 193 113 -201 73 129 -233 233 249 -105 33 41 -97 169 17 -161 161 161 -1 1 1 -65 97 49 -249 225 9 diff --git a/graphics/object_events/palettes/followers/vespiquen.pal b/graphics/object_events/palettes/followers/vespiquen.pal deleted file mode 100644 index 3d1fab3b5..000000000 --- a/graphics/object_events/palettes/followers/vespiquen.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 153 25 -73 65 41 -161 185 225 -105 105 105 -161 33 57 -169 89 49 -1 1 1 -217 225 233 -49 49 49 -249 201 57 -249 49 105 -177 105 33 -233 233 249 -201 105 41 -0 0 0 diff --git a/graphics/object_events/palettes/followers/vibrava.pal b/graphics/object_events/palettes/followers/vibrava.pal deleted file mode 100644 index 4402c3530..000000000 --- a/graphics/object_events/palettes/followers/vibrava.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -129 137 97 -217 225 185 -41 105 25 -185 193 209 -121 185 113 -73 73 73 -1 1 1 -57 57 57 -249 249 249 -105 105 105 -81 89 57 -97 161 97 -161 177 137 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/victreebel.pal b/graphics/object_events/palettes/followers/victreebel.pal deleted file mode 100644 index 90de7ab6a..000000000 --- a/graphics/object_events/palettes/followers/victreebel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 153 57 -241 121 161 -81 65 49 -137 217 81 -1 1 1 -169 65 113 -121 9 5 -185 137 57 -193 193 193 -233 233 249 -33 33 33 -65 89 41 -241 225 73 -185 161 49 -129 97 41 diff --git a/graphics/object_events/palettes/followers/vigoroth.pal b/graphics/object_events/palettes/followers/vigoroth.pal deleted file mode 100644 index 446f1e8d6..000000000 --- a/graphics/object_events/palettes/followers/vigoroth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 129 121 -65 57 73 -97 89 105 -217 209 217 -97 49 49 -1 1 1 -169 57 57 -209 89 89 -105 25 25 -177 169 177 -233 233 249 -121 81 73 -145 105 97 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/vileplume.pal b/graphics/object_events/palettes/followers/vileplume.pal deleted file mode 100644 index 503e1333c..000000000 --- a/graphics/object_events/palettes/followers/vileplume.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 153 -169 81 17 -1 1 1 -33 57 105 -217 97 113 -169 49 73 -121 33 17 -217 185 145 -249 137 73 -49 81 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/volbeat.pal b/graphics/object_events/palettes/followers/volbeat.pal deleted file mode 100644 index f78520d3b..000000000 --- a/graphics/object_events/palettes/followers/volbeat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 57 -65 65 73 -177 177 193 -225 185 65 -209 73 81 -121 33 49 -105 105 113 -1 1 1 -233 233 249 -137 137 153 -41 41 49 -225 113 121 -177 57 65 -225 209 89 -97 81 49 diff --git a/graphics/object_events/palettes/followers/voltorb.pal b/graphics/object_events/palettes/followers/voltorb.pal deleted file mode 100644 index e5c53dd09..000000000 --- a/graphics/object_events/palettes/followers/voltorb.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -233 81 81 -113 17 17 -201 201 209 -49 49 49 -161 161 161 -241 113 113 -201 33 33 -233 233 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/vulpix.pal b/graphics/object_events/palettes/followers/vulpix.pal deleted file mode 100644 index 9c57ccda9..000000000 --- a/graphics/object_events/palettes/followers/vulpix.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 137 73 -169 81 25 -217 113 49 -233 233 249 -121 73 57 -89 57 49 -1 1 1 -185 89 57 -241 201 153 -89 65 73 -137 57 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wailmer.pal b/graphics/object_events/palettes/followers/wailmer.pal deleted file mode 100644 index 4104dc7f0..000000000 --- a/graphics/object_events/palettes/followers/wailmer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 153 97 -65 73 81 -193 185 121 -65 129 193 -41 97 137 -33 65 97 -185 201 217 -105 161 225 -137 121 73 -81 65 33 -217 233 249 -137 153 169 -49 105 161 -1 1 1 -97 113 121 diff --git a/graphics/object_events/palettes/followers/wailord.pal b/graphics/object_events/palettes/followers/wailord.pal deleted file mode 100644 index 8168289fe..000000000 --- a/graphics/object_events/palettes/followers/wailord.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -185 201 217 -33 65 105 -65 129 193 -57 73 81 -137 161 177 -217 233 249 -41 105 153 -105 161 225 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/walrein.pal b/graphics/object_events/palettes/followers/walrein.pal deleted file mode 100644 index 1543eafcf..000000000 --- a/graphics/object_events/palettes/followers/walrein.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 25 -129 137 153 -177 185 209 -81 81 57 -1 1 1 -105 161 217 -209 217 233 -49 65 105 -249 217 89 -137 185 249 -81 129 177 -81 81 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wartortle.pal b/graphics/object_events/palettes/followers/wartortle.pal deleted file mode 100644 index d4d157193..000000000 --- a/graphics/object_events/palettes/followers/wartortle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 25 -161 161 161 -65 81 153 -57 57 73 -233 233 249 -1 1 1 -65 121 217 -161 89 25 -161 9 3 -241 209 113 -113 153 225 -65 65 65 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/weavile.pal b/graphics/object_events/palettes/followers/weavile.pal deleted file mode 100644 index c28ce413c..000000000 --- a/graphics/object_events/palettes/followers/weavile.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 129 -49 57 89 -105 121 177 -137 1 1 -161 41 65 -241 177 65 -65 97 161 -169 185 201 -233 233 249 -1 1 1 -57 73 113 -201 49 73 -153 9 3 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/weedle.pal b/graphics/object_events/palettes/followers/weedle.pal deleted file mode 100644 index d78ce1a02..000000000 --- a/graphics/object_events/palettes/followers/weedle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 121 49 -185 185 185 -97 73 41 -249 209 65 -129 129 129 -249 113 137 -193 41 65 -193 153 65 -233 233 249 -1 1 1 -65 65 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/weepinbell.pal b/graphics/object_events/palettes/followers/weepinbell.pal deleted file mode 100644 index c6ea065e7..000000000 --- a/graphics/object_events/palettes/followers/weepinbell.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 153 57 -241 121 161 -81 65 49 -137 217 81 -89 89 89 -1 1 1 -185 137 57 -185 185 185 -233 233 249 -121 9 5 -169 65 113 -65 89 41 -241 225 73 -185 161 49 -129 97 41 diff --git a/graphics/object_events/palettes/followers/weezing.pal b/graphics/object_events/palettes/followers/weezing.pal deleted file mode 100644 index 84a071158..000000000 --- a/graphics/object_events/palettes/followers/weezing.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 41 -137 129 209 -89 81 121 -57 41 57 -161 161 129 -233 233 249 -129 73 81 -1 1 1 -121 105 193 -169 169 209 -105 57 65 -201 185 121 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/whiscash.pal b/graphics/object_events/palettes/followers/whiscash.pal deleted file mode 100644 index 70c9415af..000000000 --- a/graphics/object_events/palettes/followers/whiscash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 57 -65 129 185 -25 33 105 -233 233 249 -177 161 73 -97 161 217 -33 97 161 -97 81 33 -1 1 1 -49 65 137 -209 193 97 -177 177 193 -105 129 193 -73 97 161 -9 5 9 diff --git a/graphics/object_events/palettes/followers/whismur.pal b/graphics/object_events/palettes/followers/whismur.pal deleted file mode 100644 index f353acb32..000000000 --- a/graphics/object_events/palettes/followers/whismur.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 137 41 -209 121 169 -81 57 9 -225 209 73 -1 1 1 -65 73 89 -97 41 73 -193 169 49 -233 161 201 -161 89 129 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wigglytuff.pal b/graphics/object_events/palettes/followers/wigglytuff.pal deleted file mode 100644 index 4c86b3af9..000000000 --- a/graphics/object_events/palettes/followers/wigglytuff.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -185 105 129 -233 233 249 -193 193 193 -137 57 81 -241 153 169 -57 97 201 -113 185 249 -81 81 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wingull.pal b/graphics/object_events/palettes/followers/wingull.pal deleted file mode 100644 index 676a03740..000000000 --- a/graphics/object_events/palettes/followers/wingull.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -169 145 41 -137 137 153 -161 201 225 -105 81 17 -177 185 201 -81 81 89 -225 209 73 -105 161 217 -1 1 1 -65 105 145 -233 233 249 -81 145 185 -49 73 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wobbuffet.pal b/graphics/object_events/palettes/followers/wobbuffet.pal deleted file mode 100644 index 94c8adeb8..000000000 --- a/graphics/object_events/palettes/followers/wobbuffet.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 129 161 -57 161 193 -33 49 65 -169 185 209 -57 81 113 -1 1 1 -25 57 113 -113 201 241 -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/palettes/followers/wooper.pal b/graphics/object_events/palettes/followers/wooper.pal deleted file mode 100644 index b0ebb5db6..000000000 --- a/graphics/object_events/palettes/followers/wooper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -33 65 121 -145 201 249 -73 145 201 -177 113 209 -97 41 97 -57 113 161 -233 233 249 -113 177 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam.pal b/graphics/object_events/palettes/followers/wormadam.pal deleted file mode 100644 index 840dfcdfa..000000000 --- a/graphics/object_events/palettes/followers/wormadam.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -185 201 153 -81 169 25 -33 65 33 -1 1 1 -137 209 57 -73 73 73 -49 49 49 -233 233 249 -41 121 73 -97 97 97 -41 169 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_sand.pal b/graphics/object_events/palettes/followers/wormadam_sand.pal deleted file mode 100644 index bb5b4ce40..000000000 --- a/graphics/object_events/palettes/followers/wormadam_sand.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 65 -81 65 49 -233 233 249 -201 193 137 -145 105 41 -193 57 41 -57 33 17 -1 1 1 -97 97 97 -201 113 97 -49 49 49 -233 217 137 -153 145 97 -73 73 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_trash.pal b/graphics/object_events/palettes/followers/wormadam_trash.pal deleted file mode 100644 index 247aa23fb..000000000 --- a/graphics/object_events/palettes/followers/wormadam_trash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 121 153 -73 73 73 -49 49 49 -233 233 249 -217 57 137 -1 1 1 -153 33 89 -97 97 97 -161 97 129 -249 169 169 -97 49 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wurmple.pal b/graphics/object_events/palettes/followers/wurmple.pal deleted file mode 100644 index a6f96b9dc..000000000 --- a/graphics/object_events/palettes/followers/wurmple.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 153 57 -121 97 25 -137 137 145 -1 1 1 -81 81 81 -129 33 57 -169 169 177 -241 105 105 -241 217 105 -249 209 185 -185 49 73 -177 145 129 -113 89 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wynaut.pal b/graphics/object_events/palettes/followers/wynaut.pal deleted file mode 100644 index b73b089b8..000000000 --- a/graphics/object_events/palettes/followers/wynaut.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 137 153 -25 65 81 -193 57 57 -137 209 225 -49 105 121 -41 41 49 -105 177 193 -33 81 97 -1 1 1 -233 233 249 -113 33 33 -97 97 121 -65 65 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/xatu.pal b/graphics/object_events/palettes/followers/xatu.pal deleted file mode 100644 index 399c787a2..000000000 --- a/graphics/object_events/palettes/followers/xatu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -97 145 57 -113 129 153 -49 49 49 -129 193 113 -65 81 97 -176 198 222 -121 17 33 -1 1 1 -233 233 249 -217 73 89 -97 81 1 -241 209 97 -177 41 57 -185 153 49 -57 81 33 diff --git a/graphics/object_events/palettes/followers/yanma.pal b/graphics/object_events/palettes/followers/yanma.pal deleted file mode 100644 index 40a8c8679..000000000 --- a/graphics/object_events/palettes/followers/yanma.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 121 49 -41 105 9 -185 201 225 -81 97 137 -113 193 81 -185 65 17 -145 49 9 -97 25 25 -1 1 1 -241 105 81 -161 233 129 -57 73 73 -233 233 249 -217 73 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/yanmega.pal b/graphics/object_events/palettes/followers/yanmega.pal deleted file mode 100644 index 3bda62edf..000000000 --- a/graphics/object_events/palettes/followers/yanmega.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 129 25 -65 65 65 -153 153 153 -209 57 49 -89 9 1 -1 1 1 -73 97 113 -233 233 249 -33 49 25 -81 169 49 -185 185 185 -49 97 33 -161 17 9 -249 73 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/zangoose.pal b/graphics/object_events/palettes/followers/zangoose.pal deleted file mode 100644 index 2736e0cb2..000000000 --- a/graphics/object_events/palettes/followers/zangoose.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 137 -161 49 97 -41 49 65 -209 209 209 -225 113 129 -1 1 1 -161 49 57 -121 33 33 -73 81 97 -241 113 185 -233 233 249 -153 161 177 -209 73 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/zapdos.pal b/graphics/object_events/palettes/followers/zapdos.pal deleted file mode 100644 index 037f1b687..000000000 --- a/graphics/object_events/palettes/followers/zapdos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 121 1 -1 1 1 -65 65 65 -249 209 1 -225 169 25 -177 177 209 -161 113 73 -57 41 25 -233 233 249 -225 145 73 -249 217 65 -89 81 65 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/zigzagoon.pal b/graphics/object_events/palettes/followers/zigzagoon.pal deleted file mode 100644 index a2d068ced..000000000 --- a/graphics/object_events/palettes/followers/zigzagoon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 89 -89 73 33 -169 185 209 -1 1 1 -41 33 25 -65 73 81 -121 129 145 -153 97 57 -233 233 249 -217 209 153 -73 49 25 -201 177 121 -121 73 41 -153 137 89 -65 49 41 diff --git a/graphics/object_events/palettes/followers/zubat.pal b/graphics/object_events/palettes/followers/zubat.pal deleted file mode 100644 index 548a44a6a..000000000 --- a/graphics/object_events/palettes/followers/zubat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 121 -1 1 1 -97 65 129 -137 97 185 -81 185 177 -17 57 65 -161 129 177 -185 185 193 -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/palettes/friend_ball.pal b/graphics/object_events/palettes/friend_ball.pal deleted file mode 100644 index a155698a8..000000000 --- a/graphics/object_events/palettes/friend_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -107 149 43 -157 157 189 -45 75 1 -249 249 249 -75 75 123 -141 199 57 -1 1 1 -195 79 61 -209 123 109 -247 223 17 -205 205 223 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/great_ball.pal b/graphics/object_events/palettes/great_ball.pal deleted file mode 100644 index 552f0b9e8..000000000 --- a/graphics/object_events/palettes/great_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -157 157 189 -75 75 123 -249 249 249 -155 43 37 -1 1 1 -55 65 169 -5 1 77 -255 255 255 -205 205 223 -87 97 201 -207 57 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/heal_ball.pal b/graphics/object_events/palettes/heal_ball.pal deleted file mode 100644 index f5b6713c1..000000000 --- a/graphics/object_events/palettes/heal_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -129 47 107 -253 237 225 -87 135 201 -249 199 167 -245 41 189 -249 249 249 -249 103 209 -193 185 209 -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/palettes/heavy_ball.pal b/graphics/object_events/palettes/heavy_ball.pal deleted file mode 100644 index 2c8781c6b..000000000 --- a/graphics/object_events/palettes/heavy_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -95 133 225 -27 53 115 -1 1 1 -69 65 59 -205 205 223 -39 93 217 -249 249 249 -47 47 47 -157 157 189 -105 97 87 -75 75 123 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/level_ball.pal b/graphics/object_events/palettes/level_ball.pal deleted file mode 100644 index 80e49c9cc..000000000 --- a/graphics/object_events/palettes/level_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -233 131 119 -69 65 59 -1 1 1 -105 97 87 -205 205 223 -157 157 189 -215 119 41 -249 249 249 -47 47 47 -225 79 63 -75 75 123 -225 153 95 -255 255 255 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/love_ball.pal b/graphics/object_events/palettes/love_ball.pal deleted file mode 100644 index e8e8e8a0d..000000000 --- a/graphics/object_events/palettes/love_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -157 157 189 -1 1 1 -75 75 123 -205 205 223 -255 191 229 -159 65 129 -249 249 249 -93 1 63 -255 129 201 -191 97 161 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/lure_ball.pal b/graphics/object_events/palettes/lure_ball.pal deleted file mode 100644 index e156e3232..000000000 --- a/graphics/object_events/palettes/lure_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -43 153 213 -75 75 123 -205 205 223 -207 49 69 -1 1 1 -219 101 115 -249 249 249 -1 53 81 -33 115 159 -157 157 189 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/luxury_ball.pal b/graphics/object_events/palettes/luxury_ball.pal deleted file mode 100644 index 319242f49..000000000 --- a/graphics/object_events/palettes/luxury_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -249 231 71 -69 65 59 -177 63 33 -107 31 13 -215 75 41 -47 47 47 -105 97 87 -255 255 255 -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/palettes/master_ball.pal b/graphics/object_events/palettes/master_ball.pal deleted file mode 100644 index 72ac65599..000000000 --- a/graphics/object_events/palettes/master_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -157 157 189 -191 1 159 -249 249 249 -75 75 123 -205 205 223 -117 49 207 -63 41 95 -1 1 1 -151 101 219 -255 1 211 -217 201 241 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/moon_ball.pal b/graphics/object_events/palettes/moon_ball.pal deleted file mode 100644 index ac8987a4c..000000000 --- a/graphics/object_events/palettes/moon_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -245 193 11 -21 181 235 -93 71 1 -249 249 249 -157 157 189 -1 85 111 -101 119 155 -1 1 1 -41 51 71 -205 205 223 -249 209 71 -75 75 123 -81 201 239 -75 89 117 -255 255 255 diff --git a/graphics/object_events/palettes/nest_ball.pal b/graphics/object_events/palettes/nest_ball.pal deleted file mode 100644 index 0f868af50..000000000 --- a/graphics/object_events/palettes/nest_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -89 133 59 -157 157 189 -249 249 249 -211 211 75 -75 75 123 -1 1 1 -47 77 27 -119 177 79 -205 205 223 -225 225 127 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/net_ball.pal b/graphics/object_events/palettes/net_ball.pal deleted file mode 100644 index d14a3f13f..000000000 --- a/graphics/object_events/palettes/net_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -49 131 143 -1 1 1 -17 57 63 -65 175 191 -205 205 223 -75 75 123 -105 97 87 -249 249 249 -157 157 189 -193 185 209 -69 65 59 -255 255 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/park_ball.pal b/graphics/object_events/palettes/park_ball.pal deleted file mode 100644 index 00d4cf5ad..000000000 --- a/graphics/object_events/palettes/park_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -235 193 21 -97 77 3 -75 75 123 -205 205 223 -249 249 249 -249 137 49 -241 209 79 -41 105 201 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/premier_ball.pal b/graphics/object_events/palettes/premier_ball.pal deleted file mode 100644 index f871d2bdd..000000000 --- a/graphics/object_events/palettes/premier_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -51 49 49 -223 223 223 -155 43 37 -191 191 191 -249 249 249 -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/graphics/object_events/palettes/quick_ball.pal b/graphics/object_events/palettes/quick_ball.pal deleted file mode 100644 index 28ce5c50b..000000000 --- a/graphics/object_events/palettes/quick_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -191 191 1 -41 141 215 -1 1 1 -157 157 189 -35 75 107 -255 255 1 -95 169 225 -249 249 249 -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/palettes/repeat_ball.pal b/graphics/object_events/palettes/repeat_ball.pal deleted file mode 100644 index 641e5fb81..000000000 --- a/graphics/object_events/palettes/repeat_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -241 149 79 -157 157 189 -69 65 59 -249 249 249 -105 97 87 -213 171 43 -1 1 1 -107 53 11 -235 113 21 -205 205 223 -223 191 97 -75 75 123 -255 255 255 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/safari_ball.pal b/graphics/object_events/palettes/safari_ball.pal deleted file mode 100644 index 4f7ae21c2..000000000 --- a/graphics/object_events/palettes/safari_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -63 131 63 -157 157 189 -249 249 249 -1 1 1 -75 75 123 -245 159 105 -249 197 167 -17 55 17 -83 173 83 -205 205 223 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/sport_ball.pal b/graphics/object_events/palettes/sport_ball.pal deleted file mode 100644 index a107ed002..000000000 --- a/graphics/object_events/palettes/sport_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -213 171 43 -157 157 189 -193 63 31 -249 249 249 -1 1 1 -75 75 123 -83 21 7 -223 191 97 -205 205 223 -225 95 63 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/timer_ball.pal b/graphics/object_events/palettes/timer_ball.pal deleted file mode 100644 index e4c93a648..000000000 --- a/graphics/object_events/palettes/timer_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -157 157 189 -69 65 59 -249 249 249 -105 97 87 -1 1 1 -105 33 17 -75 75 123 -193 185 209 -215 75 41 -225 121 95 -47 47 47 -205 205 223 -255 255 255 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/ultra_ball.pal b/graphics/object_events/palettes/ultra_ball.pal deleted file mode 100644 index 253c8a380..000000000 --- a/graphics/object_events/palettes/ultra_ball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 165 -217 139 7 -157 157 189 -69 65 59 -249 249 249 -1 1 1 -75 75 123 -47 47 47 -249 171 39 -205 205 223 -105 97 87 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/pics/misc/cherish_ball.png b/graphics/object_events/pics/misc/cherish_ball.png deleted file mode 100644 index ebb64441ce90ce07441f947a33f5ee6991f8d3cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5o}bax(fXjd{Li01 zABNilW$=Jg7xsh!r8x^cB8wRqxP?KOkzv*x380{(r;B3<$IRpe1wjrjr;KA40vHXP zuUxeda4}|Wmzu5BkTRurO0PqakJ~E8Qv!ll6*h1*Pna}G$z^xu28LCQKnIrXWm^`} RWc?K608dvxmvv4FO#r>$Gxq=h diff --git a/graphics/object_events/pics/misc/dive_ball.png b/graphics/object_events/pics/misc/dive_ball.png deleted file mode 100644 index 54b5557c2898dbc66f495de826ee04d99d0b835c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%ch1&wk`C{pvpb zC%=9uBO~L_pFelcer##z3RHy#JQU7e0}62#ctjR6FmMZlFeAgPITAoY4^J1z5RRG2 z2?~N|=5Q{w44tFaAURpf%H$xEl&+kwf}$D!<|orw6q-#f1JCF%94YV?@n$rXaJmx| mb8uIL?;K_Yw$?T!X?}*k?7Y!Q0VbC~c6++|xvX4x z=BoY&cV7INzVzqMpWVf47bg*#837H^PTeOt7=k=5*-*c3KS!+a65DP|0v60=mfn_VJW&rafH scIZ-4kM?7Io%D5%5QCwHiO9_gh6oA1bBm5m-2$@J)78&qol`;+05sb`IsgCw diff --git a/graphics/object_events/pics/misc/dusk_ball.png b/graphics/object_events/pics/misc/dusk_ball.png deleted file mode 100644 index 70bfbf9ae258989f39dfb8914776d326a47a6674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`ezCo7vF=VqMtyyK zS4Zp2#PFM*j6Z+=1S-J<9LFE90!29sJR*x37`TN&n2}-D90{PHlc$Sg2*=Fi1O>qz zI~+2mxfrq=9NwrK!lE-_%8FHNLP=twW?Uu=oik>Mvp2g$w4CkkJ+SKTq_aT^x0qdJ c19)2)82Be}USj1~XbZB~)78&qol`;+0NDF9jsO4v diff --git a/graphics/object_events/pics/misc/fast_ball.png b/graphics/object_events/pics/misc/fast_ball.png deleted file mode 100644 index 198542370d10ec0ef1741f16bd38e11bd7a46e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN5EOGXDJe z^Xh7CMn*<&@9I=-#@B_SXV2chzd!N+|NlVc5RkaV^caxES>O>_%)r1c48n{Iv*t(u z1-(37978x}CMPHemXtVT@V)HiO>kSByo9AA?VhGZ@ixW@2e*|*rIj#EI5=Fr(Jd)$(dk@2v;p@xab%?gGG-}#>zyoafQXW0gaiy^E6i%kPe tn2sb|$mq>rdYv@u;z|ZX4^PgU6%5fQ__mgN9-jxY)zj6_Wt~$(69DZDMIHbE diff --git a/graphics/object_events/pics/misc/heal_ball.png b/graphics/object_events/pics/misc/heal_ball.png deleted file mode 100644 index 127deecf9bca4227ae9ce986a5dd09e12210e274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%mQ9t|d+lS%pCx0Ga z{#A4DPasIYcyQ-Mpb|`QNAcH5peSd7M`SSr1Gg{;GcwGYBLNh2@^o z<&<&kQxT(qv(3q^0y+V!(25$xa#QCUM|I3%^|D- aye&Y-9^{NwW?~0f!QkoY=d#Wzp$PzO#5(o> diff --git a/graphics/object_events/pics/misc/heavy_ball.png b/graphics/object_events/pics/misc/heavy_ball.png deleted file mode 100644 index e866a3edf8988094c8efbcf418c8abb88715cae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$5zV)HBX)z-sqpPF! z*|Yc6V{iWa`BPtCf9~A9nTg@v-qrvA{|73E01Mdz{y-LIfk$L90|U1(2s1Lwnj--e z^z?Lb4B?oWoS-0BQsR)&7rI*N0MAh^am5V{9aCm2dvsKGZtk4UIN@M!lI6`x=8nP} wMVoj#4sLk9;cVsxy>~MfODnLwz1N##!{Ey)$ggF!>>kKYPgg&ebxsLQ0Q0;>Y5)KL diff --git a/graphics/object_events/pics/misc/level_ball.png b/graphics/object_events/pics/misc/level_ball.png deleted file mode 100644 index e873bc17c96e91ec1cf668c55bb08b2373ed7a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RWplZ!qctNVV`gIb z*|YcO&fR;xT=VD8pZfax5B=@Ey{jM2jQ{`tKTrn{yz-u$4x~5>JR*x37`TN&n2}-D z90{PHr>Bc!2*=Fi1O>q}b2t}T#>S{MNCro3u{p@pE+hW3p=CzD`0VQv43c-ArJXz~ z?a*^N?c_EEw!`;MZ`*!w*N)`%c?}Xzopr0PTBA A9{>OV diff --git a/graphics/object_events/pics/misc/love_ball.png b/graphics/object_events/pics/misc/love_ball.png deleted file mode 100644 index a37c20132eda511d2f675858aaeeb5764273aeb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%chMjEvsi)o0J% z|G)p~e8+3MW|}60toV`{F7 uxdP1xt0sR-+n|^BUYAXvxu@1Hkx zWn^T$om%|!=TAn{K*i$ubLZ~;|NlQwEgaZBKb8yRa29w(7Bet#3xhBt!>l;7 diff --git a/graphics/object_events/pics/misc/luxury_ball.png b/graphics/object_events/pics/misc/luxury_ball.png deleted file mode 100644 index b1f1268193c0a7c540286d2c4e191f7541dc5fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R=W};gN9&FDirMnK z*S$6M_4P9o!~g&P4^)B)Zhp5s1{CEi@Q5sCVBi)8VMc~ob0mO*uAVNAAsjQ46BGoO zEOpG7_Nj>7KzZ-g9Xu|ZMMX7NsxwHgab4y1icw+W0*A!V2^`Ux3pP|TMHFUQL>My9 ft_oyY)d+Ot>hC<$cY5gTe~DWM4f2i!S% diff --git a/graphics/object_events/pics/misc/master_ball.png b/graphics/object_events/pics/misc/master_ball.png deleted file mode 100644 index cb76bf8516dcfa72a824fc3cf9067b1220c2a916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%cim8R!4}`P19G z`s~^JrH1G2HRBl>8KdhL7qAX9f)T6SZL#j?~bsb&n4I=Q_Co*%Q~loCICvsND}}6 diff --git a/graphics/object_events/pics/misc/moon_ball.png b/graphics/object_events/pics/misc/moon_ball.png deleted file mode 100644 index 13b8c195c888882b2a52738a16d0713ecb95b536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R>p^bOt*>L<8Gru# zId|?}#?buK^4W}xjGD&oXV2dMdC}e5yE^dXd+*57|NsAUC(jWA>g6o(h%9Dc;1&j9 zMuu5)B!Gfmo-U3d95a&>6a*#Cw_M2CeOkRia_7CKsR@nV+n>&BZn4nI{9>EWU{oSrgn^rzTrREZFEAz@&0yTYyfW7UPKoU(cXoZU)0`sw-2Q sC3r60-n6}`bmO^uk_?6#CL%X07!2?5$1rVpdkkc&r>mdKI;Vst0EU)AHvj+t diff --git a/graphics/object_events/pics/misc/net_ball.png b/graphics/object_events/pics/misc/net_ball.png deleted file mode 100644 index 65c302d7285a1dfc20cc5892c4dadb0224fd70c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`u(_X+kx|gn-f{i@ zvuE#ndsk;BhX4HebMD-|2X|g{b+rEf|36SU1l*0DvIfZFEbxddW?R diff --git a/graphics/object_events/pics/misc/park_ball.png b/graphics/object_events/pics/misc/park_ball.png deleted file mode 100644 index 965d2a5dfc3bca896ae8e81a493d1c73dcc1e587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R^+C}@UuJLb>a%C> z{{(_g!;csJH8W5C|NkGT3Jv&siQWbZaTa()7Bet#3xhBt!>l{U1Rb@1A z);QrRsIy?vlSeEgWGiF#=H@iqo^_|muU{&jsUJ=Dxb3<4Hcv~14e4E*{ T^S|_hoX6nl>gTe~DWM4fJ0mq& diff --git a/graphics/object_events/pics/misc/quick_ball.png b/graphics/object_events/pics/misc/quick_ball.png deleted file mode 100644 index a4fddcc134f7aa7f5c602ddcab5a3e1e303e215c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*|9(cz-s_BvjC1Gi zRrb#Q|DQ2_<-?ype*%?Yg109bwgW{u3p^r=85p>QL70(Y)*K0-pp&PIV+hC0zopr04HWRjsO4v diff --git a/graphics/object_events/pics/misc/repeat_ball.png b/graphics/object_events/pics/misc/repeat_ball.png deleted file mode 100644 index 98f84b22f19e2aa2e1ff60635d87e6eb8578a84e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&R<5d5-bN9MBTL1j{ zGcz&#>S}F9M#gMY?$?E)XV2chzdzC2yZZnC|3Do;aLZNaH@*n*^S7ee71-ulHs{zd%=jhjy!q(16(AcuUHx3vIVCg!0Cn_7 A8UO$Q diff --git a/graphics/object_events/pics/misc/safari_ball.png b/graphics/object_events/pics/misc/safari_ball.png deleted file mode 100644 index 0663ccb2519587d0e330b2863b05cd76b9a9c049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3%`zS(~6+`T`4{$yli z^!Bd)IzRL0(dB~Xg28Kp&z`;i|NnoWS~!qWJdz3Ia29w(7Bet#3xhBt!>lBe>UL>UYT2z|bN3#!m;d?m zCnF=Hw|8~0DEs~WiD%E=e;9B7|NnoWS~$4nr!oo1;VkfoEM{Qf76xHPhFNnYfP$W$ zE{-7_Gm{e(1gA`Q&iE!8%bMUeb^61i4F?{D9t%@YymoX^V;G|YTXeyMRhdj38%;e- urH&+=xF@xjcTIQhw{t8Vj+vP!jxjSt_6e}fGCkZ2vewhp&t;ucLK6U=%0=z~ diff --git a/graphics/object_events/pics/misc/timer_ball.png b/graphics/object_events/pics/misc/timer_ball.png deleted file mode 100644 index 6037bc29c7fbd9168e9f28d796661ef54c6ee35f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3$*?%chuj@Cba{>)4a zXJll|R21~~u0FW);&pG$hn4aA`ub}%W!Z9;BK|%1%J>G>o_fE@UFgA1KYe(z8`7s_@@Tn-}G2`oAp^fpYCJ2J8^mO%eS?83{1OVGF BM(Y3o diff --git a/graphics/object_events/pics/misc/ultra_ball.png b/graphics/object_events/pics/misc/ultra_ball.png deleted file mode 100644 index 6e20e316e8000dfc42e003c17391f87ea8e7b666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUEk3&RW;grXxqDq5t$+Uf z$;im)?Om;}um5wk`q{JhGZVxA|NjqE3kNO!EeSvlXMsm#F#`j)FbFd;%$g$s6!h?P zaSY*@nVg^?IAywX#<#vcCWFO?PH&La*|6bs0GG;&NmS_~%=xOsv^eHje5v8{A# smf*P=y?A?L>Bh77W-=IR=mdKI;Vst03-oHZ2$lO diff --git a/graphics/object_events/pics/pokemon/followers/abomasnow.png b/graphics/object_events/pics/pokemon/followers/abomasnow.png deleted file mode 100644 index 141b529f7d2d9042323a30cf791f58668dcbb1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmV+%1mpXOP)K)Uj{dMid8N0);qmBM`BI#tdDuB#0BD z)>P;sR?Lz^BUw%tDIqDxTUy$OP+c@M7P2|9#nM`ANERJxi`}x+^^fZvd3TaoGi}kS zK%M{spPul0Pe+N8^tnFQ|D)#VRX#0plwOs;@v8Ec7N<%Sk!zvv%8nz|imY6T&W)Co zMPwm&cM%miJfZdrjiYNj=PfBo(#P@3WLadlF~E2qcmHc}wzRypMky;6{-H z9b+7SJudK~v5362yu2l;kC)^XcZ)prY2f?Qo2?8Mc!^dk=S^1{;K>B3W)42d(zo4%$0L<0Xnn+2X4_;7MKiC6v1 z^>m^flR$(;VBVx=#t+XY@17%*tr#(b%!=VA@RquL<+A>a8JTII|JCgY#^on`K+Yrp znSfEqRRv) zuiE^M=1c;79Uz2UL;ocmux1+28_oK9D>&ZLBO_bD3^Q97bjuI5tLY`i;(tv&!I!VO zNr0y72117ZutEbb)=UF>BdZbCLEV^xovgny?Z2qi@bdRpI)AbunMW+2T&(RHU-U#5%JDQ_>A`Z8)5C&%J4gr%G4qu>`IqNIrqkA3r((Y*Ke~XyVYI3KiwBk zj@2?-;9M;e2dpm#-x#jlu2+V=E;F#(K$uiXtu}+egk|Ap)auIBUghTpu+6^_Y!Pqr z{)>CJfO9w=sT#L>&2%R?cXpk&*w|_BI?fqvi@tU?8qRIew;gJg^-EB#!g5dLPaoNa zs(P-eYfq!KZ0V*qZM#${U;7BLEe1Md!6zkWEw5FscGvt*%ISW>e_2qroqv`7U+Pc7 W3M#%^h;@4a0000V~9uR+bO=2niT|E zHEkFpc1E7b#hK}N8*IFVvp**tMQ z%i8qcnX;LrZAiQ~!+wLbfXR&sS6HRDpWGm>p{XEsN;}?mJ`-D+zVw%c7ui<3G^W0f zQYqNg^O51g#;jKlW=Hz{TUgGTvrkWY&Ey{`Gwm;{`0noPPG9caZCiaV_t|-wkgK@{ zcg`J|;8<>59_)JSjM$O&&uvQPaSMd%E#`fSa zuP}>F{r|gf^1{sg8Fvh2x1Tus#z|z`J@MaL8iG`KS1Ck4wlT>M%*uXtXv3tkT^(!x zA2?V2>Zy>!i_m9GEg?^49EY)&K}lhOAtCAM`2YX_000000000000000$Y)_000009 za7bBm000XU000XU0RWnu7ytkRiAh93R9J=W)nYtu|zSHF`&Rsc^CVmNxmmi zq6P3A&+!~Gtn|45TbFOh-;a-a7k7i>{+0-?j(Zo@h2Lma|LKYML0E&yiQmd|{nF~>6)Qx@7jI@2T$(c6unPCTyt#jZf0%O}`0O|WU@Xe0W zdP3d%u-Z{-Ho5TskO_YSv$5~BbQ~;Cd=qr485uV&4+~VL)&EH z2~jAQtoslFZd>7-OqK(F9n3lZ?odG80GlypH7u)xs)H)QYKs&j7Q4!0}qvix(Vx088^Pk zAuhRa37Pc@MQp@HqU#<9I<8(u4JMA{@5#MAYgjbB;Zok^q!B8`q_q>9RV+bD$&@2-!z*^r;Bj=yT0E;yKNy|O?)ICKT-6P&-jB<76SqvD`*U(K zzwZdM!*>tD8K1r({hrY>;idnAuicxUzbuS~Z2i~eGE2$?x?AqaT-;B%^KVq z<8#fGE7T0p?V!A4pO_Rm&4qYqvTVY$J*TwSWGh+m)#`U>GR#C;J4U6;0xZ^<$Y;OF zuzNH`kx{?N5Cwb{DNB}0D-&dbdS5F-OHfg4OVK}Rp%iGL@hliA1$%{{ldQ~u{}-NW zAnr$|)C058+fT}PXnA>ND<ZfL9$ zY7JDrK_|mngTh@xJ!%D!r!QG*K^Fd;rZs}vu>Wo;lVF2od~y5#<6qT;v5j}s8two9 N002ovPDHLkV1l-o>x}>a diff --git a/graphics/object_events/pics/pokemon/followers/aerodactyl.png b/graphics/object_events/pics/pokemon/followers/aerodactyl.png deleted file mode 100644 index 1ef02c1774be6839196fa9a70c46e7944504166f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1037 zcmV+o1oHcdP)FN1_S%JBU!2kdN000000000000000z7}d;00009 za7bBm000XU000XU0RWnu7ytkRgGod|R7i>KmcMS>Fc8K?@CC?FGTLqh3S<>QN=3X0 zqO}XMy1Qif07Ze!eS{)i;;qOOJ!OyoWXW#Q0-aivOH7`8AMf{_&dIX>>t9{0Tx~Id zqZc0kRs3R6dnRzmkPaUaSv~lB@%WTTpM-7CZn#L$EY8zr89yxJ^9GQJYB=Rz7m#H& z-NYj-NrHh%E-vGih=>fA8=We#r5Hz&95tY`Y1dsF(6QBcoyo}pJU51KkZuNX+ zJdS-PMA#W&53BsRvxyph)HEjGOg~=6?d?wZIIeb4z#*ynLU84f3V7JwlIH}n8&Q)W zun{-qWxTdZdt}&jp;rPD-cThn# z1%Z#9A!h>bI`uYHFv&6`klUvyfRr`q0@7F#1UJST6Ob?_+2n|#oqg4rQmh5Obj_E9 zYx-7(1oD_XMoOt9fQ^mu+URUXf+c?w3TAs{)zGX2L~c!bx$*S1^$Bn@3*fv}bMtog z;NvJ@i%4+3eTYQy-RFI~TfPZ+mw(t7sZEaeEq9)X_IMvo%BrZVB32E_wMT}7Kt#gZ z=_%gl{ijAMwQvDT1q~)u#I`-k#(AQ)$8d{Um|pU|uH)8P?vTOX1(N(`n!bi~*YAjw zYAEsi?wau>+Pb4uZ)Q+W2-88uZWVxapIU#wV^W>wX7FO@7aUVx%(6rvBi+L)rhemmx79^wUfQq7~w zXlU|YFq1}4#sJxnTm&Q;RtqEv*_(U*8AebY2BDGBSlX9V1;Kmk1qNg*fow+NF0I$I?tCHd zN&jpdkdd=r|J8p3*p%7Ji>|-$)A$Pu>zCtyyzs9I_^Z|rZOaA_4Afkb00000NkvXX Hu0mjf$7R>> diff --git a/graphics/object_events/pics/pokemon/followers/aggron.png b/graphics/object_events/pics/pokemon/followers/aggron.png deleted file mode 100644 index 1a72691c938b0970a63c2cda271aa9021bd53707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1225 zcmV;)1UCDLP)K*0FD^MjQulWHGQh%FyLW4nY->pBLl7 zRa%L_Pp^j@#{L6Uhc|bxTA=bSvt%p?2&^QcKPxrs{2M1Uo zB&zh*-jomczQ4O4XBdw9TD3KIrpxo!E3SK42jK`zg zMDD0*Me%nD#HXJ{?poL__60L8FffVCFu%}rpIhUZHFU>Z_M~ZC@^19Q$twPo4%0TP zLeMz|ZfIEU@S#Bm_8Q!=`-QF17Awlp0eR)E;#b7!_S)==^agvr+=_CC4Xf5yUmsHv zK~K}|7At2jGV;wTdQAp$LMTjWk+)dUx+1-G`1<@t+d1Zb%LsgLp|G^Y z9U)AQuA(`C)2sYG9}($+*r5pqp8ugA-;#ZS+Qo|OH@{jC2n-C37Gt2}f7{o;a{~Po zCrpNVAT0~Jz90mT#hCcQwI3VDd^REj!~ds8iT&7lApGoo8NpGvpZln56fO&@7C7n5 zvgnS&D!(5=APsJL)I-Z5CZTaknf=&#ps~XcbA5E5ukcR4E^Nqx8n8jOF!ZG`FNzi> z%gVHTn`oe3Q$|HJ09(2<**gymAdVa+&n2ExCM^qUx?@u7%pEZbq?ip%8gG;*T>;J* z^&(T0XCEflwbk92VWPuKMv7-*5@zOROnwn41lj%fvn(6XJWw-2voN-7TIMq`Suz5I z$QCJDm~LvTCKX1;m;!vm<7(FfcWD$1=5hg{E-likz+A_#FQWm4az_i@ zAe5C>{rJ)pnW3MQ4a9=zL3}Acj)BYvpD^~W_`vy+6|M^AffEC7SBD5I(lxM@Rd%ph zx`}1VmWJ^qnt&s3V<0{2cEOLga)*CjLhhv~iLI)3+sLuhqGSmCOmT(cL)01rs2dMcdc|K;ohu^>jVxdC+`6=^_NCMRd5tAfR@ zDL~rbzFzTH9at93f4ZtbJZ}tc7?WmfizZb;ISJ1leUjzHdO`5udLD=iQtJ+=1!z^U noC6PLHTe8cTR+@>_0jkjX0)b~Yg`BU00000NkvXXu0mjf2dPCC diff --git a/graphics/object_events/pics/pokemon/followers/aipom.png b/graphics/object_events/pics/pokemon/followers/aipom.png deleted file mode 100644 index 76dd6b92bb14c259d6e4a61c6c7949fc263b2584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 798 zcmV+(1L6FMP)DKHkpTe#Q7Lih>G_Fisflq>iJ7^{v4H>p00000h?Pvk00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>K)G=$@Koke?0}ayZCZKlk(4%ldP;e@P zCl9G_s3{&Z^b>TI&xKR21YD;eMUbJ8(gfPYi-e#3PuTcn%3mbra$i z?tePu+_BPf^VVRZ^#|bSBgU`tW(QeDSg4z@tg!XyLw@b6fLnujst1_kg9F>&;5c!E zni)zTt`?cmMP9y!mE7t=|!a4Fcm?cTlXw!|E-jAdi zOSM2*LHlR8(OKMVBgz83pB1My%X*j4+FLg%d#HPSci&cM1)x^iUv2fBEi0S%>H6lK cg@0JT0h#bA42cB`8UO$Q07*qoM6N<$f~t*nUjP6A diff --git a/graphics/object_events/pics/pokemon/followers/alakazam.png b/graphics/object_events/pics/pokemon/followers/alakazam.png deleted file mode 100644 index 065a7fe79e478fbbe5140c273a60dab3d8ca771c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmV+)1K|9LP)G_d)VE_OC000000000000000JA1Z%00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmA`A_Fcg3_2sG<3O>R60h0ZnvGFh=M zjx!hT#=8)jjy5rs=@#e@b!^DcJ%NJ$%6qb+Sk@)=Ew}Xz3ST6B?>$G65&DeJ_>6xF z(fatC5h8hehsRxls$Nc>&oM%Um%!sLLG|2>rx=k7uK|y{1VrYC;WVS7hcI^=@VHAr zWDhod!1NcMJ~%#)I|Zm(bKZ9zd7DY~w3x~mo#Re{W+~5eCFQMj3ii2E0Ov_Uh%-zy zIPLn}DM0#hLG;dWEp)2!S^HRD%5@;lF`=4iewwTGt6Vz;`wZ*%^i9eaI?GQp5(VwA zX|E~3Wg@R$DUF>5+6-~e=tjyb8oZxoqTVUQy~mXJ34zj#5C9h^X!MPai?fh&v4$IhwP=P~~&0~Rp(XoMoL%m;NvFyb(b z#X$%Og=W}kEO^Ri$`SfJ-hO{bq9mGL<61b5EoUY{j08?1u5u&91EP2m#X`^M$hLg6 zcOD7ik#afP;W4Ci4TvAVgtrk0E(eYf#@0Nv)g(mt+ZWg9A!@(gj^PPEn1=l diff --git a/graphics/object_events/pics/pokemon/followers/altaria.png b/graphics/object_events/pics/pokemon/followers/altaria.png deleted file mode 100644 index cf750e2ccbe4fd64ba35049a920362d61e8d4a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 zcmV;N1Y`S&P)Y==aeEs*TUSxF;*^>w zins)=H)OMylx(_mIaSII#=cawR&DoWq~Kb~rC9@&djeF9H#s4ysEYqN-n@B^W4B$g zh%$%v)t#B|_cQN@B>i9E-*NwfA4 z{gM#jS~xxrmjDkp)Jfh-DdZFus{$D!PpLeph>Ac@h#VtvJhkN}PdHE%wJPNg_gDJ$ zP@qO@OpA#`iBwb%KJJlR!JOMM5nq$z6RTmj21@~TwR=VY(_$h~BIQ-9+}jrdk!urC z!HrOWJ0AUUcx29-G|zVm$e1SnmPLsq?H-rogFl)FIuSXB8ODxZPs2jQvva>G8`lK3 zKUb8$)`UQ0#{!}RtB%WJiwY6IfQVWEESDS~O+zQrG2xp(KULLgMquaVCwn_DY3)Rz zO#+1xl}H8mhr0K*YjXop1Q$fqfhcMU$FHa3IhT`m<~7(WWgeE?kF&*-ZtQS&MMUET zmAE6rs!wV`=n^3qO(c>7KtgiN1R^l`i2BchU)R$8<<8rF|NMfFLuN)6L^Pw40t8^G z{XQ6ga!=;~damwu9RTw(cKjk_0zd=JZI|x3tNpbRye*Z^A=FTS4R-N661|vF$y4?V zk1hMhB_ak9=t$&1WZ1FesWY2{ICIkX<;j#O5(Orej1z$? z%tt{^M1tJ$eV5@Fwm1iS>StfvxARt={>BFI-OnHz$N`%HCt@W{F_M$5jUzFVED?*7 z@;$7+>@Ee|i~6B;c1QqRfJb!Ij0KU1H^5DWi=OY-I>0v-i47D83^DVq1y z#^XLxw`fG@Fpi}|L3AmOY0iBGD)uCXNF(;K%V@WETX2fqKRTxI-Pg zJBdS*;|}p+>AlU3t%I6F7mHJNRAgK?bpo?S3_>zyiUbXlX9u|O>@WM urM%JMe-W)%;2$~s7a{Yf@h(H-KmP`r4elYu@&bea0000KmOqQ!Mi__R;><+b*%(r#@HRdd=VlG( zCgDO1*KH?O-mhQ?%B`1?6ug8pLbC#cFc@hR92UYM?R)^cNj^cUxUnIYi_1bt5q*Zt ztC?9z*>iFxDWhW9M>BeUnpdy>0Q|rG^G4hcANi1t&JO#+Ry#YS|K3kV*IplWg>B&8 zqZ^~kui<^mB?ni3z0(nP0>Aj|>Z?l!klCI01dgjuHXUInaQt(%x!{l@PFJ2HGlf(wYjHP-slNCo3b~fXyEQL3K<^6!ig&3+;9_^ zIrjZ|N2nN1s>TJ$UiE3xh&4L8gjPNOB?8Ql?k9Wek9Czx-a#YlVvGv&g(3M>V+a! zJf$=!)g_QZi>E<>w~bjLAj@ZRGr>ynTDL;QgtqS=x~B4s$}rHccv?8IJVTmOT|y$( z`I_^@tkB{-U+2=^F!*ce34I}NY(ML~;HdB!ODQ+ZDYBq#3HdV1MPgQHiS;t$x`cAV zq%ZU)OX_C@bT*!y?k`2l0@>sdkytcaQWl#PmJB(uguZwCLMtx{!Fqlf`t(+BPw@0s zv;``#=^5RABvFdY^b)Ogo_2*+8pvzd_d~Ew``-k9-U*Z)kW#-pp5h)YA&mBgob7&h p?0$;$_x$bn&gb8M@I83>?N9Ysmc=E)ys7{I002ovPDHLkV1fdXB)|Xw diff --git a/graphics/object_events/pics/pokemon/followers/ampharos.png b/graphics/object_events/pics/pokemon/followers/ampharos.png deleted file mode 100644 index 8fbb26f04426db24b892be32466383eb93773c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmV+i1Ni)jP)0u5pjW;F*!j20Rg$m;qh5fff)%=VR7-%S!r1b>FN2&p&K)iG-uF%$q`1tc)slEE25$ynMwTczd%`6zoFlgaEXF%vKCRmV49dh?{x)r&DYW zy4m?2-vC^ov8LA(UIH|oEnZe!;HDl6!|a>sWLXdli_Mm&hUL4d=etIqOsBn<+iWQ{ zEU*|ufX{tuau-FcSKKv>zxz?4tx37M`ln0XJHr+2_lKps4lyo4L_SSGTwNiHU;F43 z1?>3Iu6X7UXC-u*|I^o*k=WKo!HmCQO3)^tIWwkmSpqs{JNGw`PJ?#5^ z8(Ee6_-C!XnBIqT+i#_?S;h1Ajx)ejxw=002ovPDHLk FV1noaZ;Su{ diff --git a/graphics/object_events/pics/pokemon/followers/anorith.png b/graphics/object_events/pics/pokemon/followers/anorith.png deleted file mode 100644 index 62e93257ea91e412c1e56dfd92dcbd1b53adb032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmV-O1GoH%P)If1Ep>FN2wacMCrF==UWsXK)Xz)XU>pYUcSUjtE)XdQ9!h<6j5Q+% zMUWlJIs`#jF5;l#Bo_k_6&%8#2QRyO@DRutB}S#JN)J7*ARacsQE#)SInrNN>wN!) z<;|NnO-s`a#$bnj4~0+LJkR^SO#?uG`qQ8O{ON=Mi1zYd4;u{`z5M?dC?!_EXK@$gKZJ zL72HO$+S?!uFyhuQ4o2)l5Z8XyMpe7q?!f*d48nnmS>>u!c?J3}a+?}M% zSmy2obTxOpIwGPARc1w>OB!%(2cp_ALYoqD1JyL~tws~eW}y&^ct=_!E|MKqR;)b{_=yIB!3E+4#}883T=_^4a-R|EX1u5PyW6kF z>FKJ~-FBcUnV`)~HV^r#8c@biI9E6{7_K&pWcXI`U> z&5%CsEnkh_Cs#Cge~vG;q$>Lg*jatRx*8*qH7>HZDa z7g$`ghdEf2=snkIPQov(XOZKdZOFN0Z0000000000000000000000000Y*?P500009 za7bBm000V|000V|0Vb6__5c6^IY~r8R7i>KmA$UpFbstS2=Lw^FF-3wM?*GpcSZ1> z6Cit_1Zw9Xg1#htAF`%a|n1Nk4d|;~2iVW8T z4M0%ZX9Jk@Hw-J)2NYaJ#&Av0!1WUR^^zVn4=T=W%P{!E{+bmTjs=rodTQXjJM6zC z7V*TmbY@~Gy2E)_z6cbvpiaC;-etk+Hv`Ju^LzogZD72UA5rj`Lgr=h$;})u5sDIS zC>=aAaf}5j3TnA1REO868;TUersk=k90t(2oruifTNJ!?DaU^fgDuV|4bV$9#PH+g z$c=p94U{Y%Itt$VWZ1jm)r)i@Q3VgCFksv{OB%)>Pi_zejn0fuiI($;?ijE-H@t8% zsPK34ek=RI>Lb!|33$LaS!dIU{d}TFD^C_oGT>TNjSt1 pihTS|_BmJKE{-=AkVNtStzR()*PgqfURwYF002ovPDHLkV1luLGG71y diff --git a/graphics/object_events/pics/pokemon/followers/arcanine.png b/graphics/object_events/pics/pokemon/followers/arcanine.png deleted file mode 100644 index ace23f81bf91be545a6bc419b5c867fc479faa96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmVqN1xltKOF&VM3(OFqp0RaK&>G}C-F?m@zF)=X!0000000000_NkAh00009 za7bBm000XU000XU0RWnu7ytkRV@X6oR7i>Kl|gRQFcgNpiR7(`f+E3+!h&TmBjo^& zG_AU5lthY#TcAn^R^!H@X6Px8NlP)_js>9rLp}AuAG6&5p;P^VM-|(={W6>5R3x(083bL^>!i0JXBVau$~)1RFXn1gU>qn%txi>_8t|KSs7DM1l$qOsmHe>($;uj|u3^vo!W-!#V*yfr# zIUl$v<`s=aGJHYDoyGa$%MVFH!FXq2xHnXSzq?%T&@`u8u9BDNo{OSQVshPb^=3t9 zNq*jJx*2y_3I1tw{chI_l$v$J+g6ZW_xIDCuMR`DZ3)aH$=KDWrb~s(s-ybwfYR5A z-pX0ewSJ&%lP9*?aHldrM4zH6qC^}uADYvXDOQ5=@V)=!r~_A_}Zs4;LD(r{!5dN-`OI_CZ1qxh)# zsS%}W3SeIk8?ED13yLZxBxGg^Ma31HDa0%(l7<~uv1V4}YlFyp&SBNah3Tm1SQ}g>CrUqMWw*kwrkK^#KR}V~zK2ZA_ b_*eY}TnlnUfG6s@00000NkvXXu0mjf6C1~1 diff --git a/graphics/object_events/pics/pokemon/followers/arceus.png b/graphics/object_events/pics/pokemon/followers/arceus.png deleted file mode 100644 index a24917d592396d2f3aab991aebf0333e650f2a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 zcmV--1&I2IP)CqX<(cxKPaXGPB@j*eMvB|NS84(c?K}kt*d6DVq`2YX_d1)nz00009 za7bBm000ie000ie0hKEb8vpKrFQoe zLm|GUs37W?k~VHbmY$Y9?5#gxy(l1@n1aI=tQ-XP2JCT-NaF>?j#$|4!L-RC;DWK3 z-_RMamr^p{Oe41}EqV{Kl4qpvd-Zx4jS)(fDpjgfsZym%l`2)LRH;&>N|ow=AU$}$ zd}&4T`{hgPzivQx>|iNQ=~8@YEp1>@PR=i7SN;t?FW|cJ22^}nPs~@2Mx&ABS{0wG z(O={N^g31=Whp1`5<_jskv z<|K;f)G#vc)_wv$7q;p733dF$e0$3D7{pp&3seI(~v%7O96Nk2Q=z}$+yyKo`d}Nv$;eU;SyK;ou$3E&E>C}8}{n$g7*EA09&b8tuA;TUa$8E6z1!oCiw?1`!I6*1b>(|sbbC3Khht5Px zfr6v;AKHC78qrztgAGvu71uV4cx;+Se*0Mb02ExO*R`v{rg!C(Z-h&Mf}^&t<>UG^ zYGtwb2`V^C$bVfZJiu^*QjX~^ePQN`N0zmkgrhbw`!S`_%p_t13eFNLt`oA+h7*)> z{QGw^$9h(@EPE{pN9|_Q;|+G3O|bzL&uRs)KJ6B=S|W}sdo|u5-4ZXjDvr8d>*HR1 zI((MzdP#WOGz$;Plh*~)6dO=*TnRfC`-)JbBJ5Aa5%x3^uI?O?Y*+jQ6r3eQek)Hd z37nvm>uX{7S)oy+H(v_-Q*nfU%$Mz*RcF$AA~vAlETMkMu?I6a!G39c1ad^2*v+>* z3hkOzyxZvW4MUyIa^eOQ9D8USkB_1w1SQD$pagP6%5ms^$AU216LW*Wo|q*RTDAVHV;w>X zGOh;@N9fA=f;H&zuZjq-j4gk`!HwC#Cd4U0lpACmHu#hEEB4s|;vK8DI0zLw0h`|h zh2lM%?y}A}*I@%8FCf_x4s0LG4Dvf;_}9}F_toM6Rws*3=!(cB)3lf+MIv;Of&|jYJ&tWKbOkjzb=(Ql~e{3=nvFN?WZ2fI4A%B002ovPDHLk FV1mIDn0o*K diff --git a/graphics/object_events/pics/pokemon/followers/ariados.png b/graphics/object_events/pics/pokemon/followers/ariados.png deleted file mode 100644 index 6a6431a13a1e315799294fb2325410a778dce77b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP))600009 za7bBm000XU000XU0RWnu7ytkRiAh93R7i>KmAy|RM;OLO_7*POGv=;% zDJ&B8&c_qRS(fR6u^Qu2fiZUd5lms8sKo|OJmDBiQxjjoIOhwD_OCxqW1eV(v06Og z7|XRk-Sg~H8s~m~O6dw6kRxJoG*Oa*tFvb?M5TU+!F0y znc+ej@6tyP zVuZhTs7}8TdJ)@5akgL<0N#JT<-^SoB49u(c%s;tE=~b}jIbiMoDE7HA-GuH)6AVg z04ODdlsjFsa#0gICfO{~l39^#Am0Ixe(Uvrf%;UxQ~`Ue7o;($AWnx&4#pyU*`yUOh^q_Dk0RI^CiDPpVphx zUg@l=P621Uw?>IQqkgQ!KIZtrs;V&Zq8T9N7`V0YkD4P}<)UVlD7Qsm4tv{boMh~| z7sQSIVjG7W_Mr+RFPc>e-_4nV17f9ECHm?oBy4R*a-8|w$N#Z1u>rq!|2ou;h0TZo zh!&TZS+bsY9 diff --git a/graphics/object_events/pics/pokemon/followers/armaldo.png b/graphics/object_events/pics/pokemon/followers/armaldo.png deleted file mode 100644 index 0ba9f344ea9005da558bce5046ae6f19bdfd470c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmVG3m)kIcbq`ad`m&0qN=ap(#;;smW1MQIV0M@YGJV00009 za7bBm000XU000XU0RWnu7ytkRVM#Kl`&`(K@^6EEhG#!7a<9$E)$5$niFyZ zvYbRjtkc=0NC?CjBw#EOth~JSy5+~7)#kv1sl2A)97HA^;nuX85F*2N9!6f5= zT&jfm++He+Qn=4+X^ccdFv*zi-Kd1i%|aRnZz-kuU@wh{aC`I;jPSYX$CZQHMJtWV z?@N@jfcIyk!OPu(Nru>|P0loOJ8|ny6?nYE9y6(JIw?FE)?PeqbkvdzvGn8N?(Y84 zTne9F_P7v^xY?I+c(wIh{CXMJBf&CZxB8(H(t0C}uRR#2bmIPOUoL-XeBBUjuY9jP_!z4hx2Bu45H`~I_0ODFvkv<+4(OD_7UQBP zS;p({UNgUW_%emb%(BUtwQ{-LulY(=k;sfNb6F1V&j<}nj4@&sNo?>+@r2o)Qp3uT zoHhAMClJkVqJx0NnC&dM@PB6eGHgrp`Z{B4LuPC^EO{ZgtI%g;5N1pU_0fid9 ziS^G@)HySUkfT?SU^EcW#o^M%P+JfTBc6UAB?wp$fh9$PV5r$r2eux59v;u%z5sdZ zj>8EC17Z8~BblYD76e1Ze!*7>91KPoAJKx!P&1c$p*X*4-!35YtrD!ayp?VSBU`|} zWJa~1G*m47>AR|=-ntTGt5OgQI}G6qAPsA;)y;l{$uN}xhypnl8fKakH^;1OBOz`!jG!i)^F=14FwFxq>% zIEHw1zP++BtHnTqy+A+sWy%tc?MG!;&Yi7!`ryv4Z@RY{nxkKGZ)x41`|@1MyYi}a*>NXErgwMTLZ{^}xy#YR znh;&UGVyxe;_WKY-n)Yv_NZRWOsmpavNl6#`@|=6ymw2=R8CJ>KJ(?q4--XKvu_V% zf4gnt?5SIxwr)D`VZv$YFxBmO>>CAKGt9Nu-~9V~-XEO{wraP+eJvhuS>crg6pT=@ zPHlW==&52j^J8($1NGe(Cp`*(dfW7G>Gos4)+-$BebxQ)&xhJxL#sU+>to)Be4TLg s$!)$Z#tUA?R0{rH{#7{H`+odW<}1%KbW?B6nGFhWPgg&ebxsLQ08OXOUjP6A diff --git a/graphics/object_events/pics/pokemon/followers/articuno.png b/graphics/object_events/pics/pokemon/followers/articuno.png deleted file mode 100644 index da3cc960efe0c609d43035f82280495fc1c9e8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1286 zcmV+h1^N1kP)R7i=nmNAdyG!(~OY!~sWtpHJEm1@uw8=)if-lW{4m}N38OP0Ki9)%U1C~DiK~1b3pnk76eGoSVR$a^5LO>&8twxzSm8r@&cH1QQh2Tzhkk*_udoD) zu*-0>`RwY2A;6!?o~SM|O+b|s+KPcGq9STAn`w_%+i8K?gQMh6%-Np%V@JUoeK;D~ zXplfhR2RnUMhRF1Nydl>aaU@O+cZO=oq6<$5&(5{2LXuvvAKuZBFj6X6>TatKxfdV zIi+D}g04KiO$$-z>5KPK!BCYriH1L_!(XPKiM%6Ho&K*Hb28tjv;)RA45!V;dVHG- zAcprhu-ICUu@z#q=RrSRKmGca1i%SVoBjOdLS%OPZl{QL#zKwa zw-4gub`W5S$h;7*7LN0FY($-mfO;z-%5s*b*ES~MqW`VVe$m&aV&sJO(g%vm=A{*ednUJmkOtP(v zcw{d!x_?*ed^JIv1&@e6HiNzI2fTzJZkocnaA|L6I)<&-T{G|p0o*=LeEagLJ8OP9 zKd;fARgZ{F20%S^(U?Lio2Fl&Zt-eRfahX+EvtaftiX@w&T~ygU0%F*OaeRmvJ;W% z@99pFL8K05|LXQ3qav{uKz#E!3iwHB1zxhDQB9Nb#ku<5lr~dDx?8Dj6}@qKKd6vJ z%HiQ0&FAMybYfqpX*N8i3Q(U=2(y*>QxUlW6kuNmfDRN{S48&Qv7-xmv~0+{Ja+{= z%r%-E2o#ZVpqrH@XAqGgApav1k$a5<+^KY9BcI^%{&L++&iXGIsQeT8&{A)+afiwB wpZgCq{iy`G{kNHaX>aip{C~B-0aEb4Y7f3vasU7T07*qoM6N<$f@{lL&;S4c diff --git a/graphics/object_events/pics/pokemon/followers/azelf.png b/graphics/object_events/pics/pokemon/followers/azelf.png deleted file mode 100644 index 3926c82f6340ff2edfd57b99601e020d5ada8a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmVSDFFci0r{z!F>$d;Nm==^5$WmqAz7*EK_Rix`ALD%do?`P00009 za7bBm000xO000xO0b}Nl!vFvRbxA})R7i>Kk}-?hFc^l#g&On+I^N)>rd~?G6bdb* z7$uyB%T(wsUT*6jXcl*hag9LBbuHY_D3oruwErNKb~z~Ff`@?mNtT?%jW2LV zmy&OL{6_C1DMDyJ``OR`GePfeylXmgeka~JeJOjl=OEZTP?KRpQz<96=0MT9ufZ^H zq?B`Z6Q|QwRu4@)R zZdm92-xuYac=%yr1eUEJDg@>~W%)zkqF`ER7+E2XT@rdpb*(Bltn<#|u$;RLdo-@j zXV?l+bWGuvQn(*{Oqdp0wn7Ar&{q}eTyvG9;K6dv;djGfRcM$SA#w)PDP~16<9INv zgqE$)$*B+_uL@OeSm#i+T)<|dZ$@Ca7UFIeUGdTIe8vjD5*kjda6IB&?>tO&A>@_^ zrXoJ03`H-QeKr->!YC6o8j*x%`otit*$4$4lQ5w|7wTMdmBXC%niCB&h_ zU;&E{s1X`QR_L%OB#M2T8#Wc=FoK6-H*DBj2@}`no+n(N86i3V&QUEyi2D8uWC~Rd z9NHWXne#++>pso-nh?Q*Vhjm;BoG4Qbs@{Lab1|W9&l`P^|#{O<*Pnme_i<3#5&_E xp{KUBDy))ty#dFY6`R6cv!!s?G==|e{s85vzfxLgmy`ei002ovPDHLkV1ffUUM2tl diff --git a/graphics/object_events/pics/pokemon/followers/azumarill.png b/graphics/object_events/pics/pokemon/followers/azumarill.png deleted file mode 100644 index 4bbc660ed3b2ba4f853b0a5551642d95754aee79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)IJ$pHZY(b3@m0000000000RmMWW00009 za7bBm000XU000XU0RWnu7ytkQOG!jQR7i>KlfQ1;Fc8MMcpx-&@Q}5gT6Az47lF}k z72*i$kO1{iWX&5?@KvBj15waLfC(ss`vTom#D-ERqZcE7sGdklB5CwbhAxF~5b(S2 z?!F@>5weec>|-DQNeCNh=IB&p?Nc>~?rG@6(RIC8fIYE{9fMn_GdVPQ@3`)u(DdcN z>NdX_qZAqinwV`MmX0AQfn$cxS_6o&m#5>_01A9Yp=D5lUnmN%%$3pb$}#Y&G$8c! zx=mMiwZV0JML7=ifHek0)JMvhG9V(H*#c=4=RV3Aq_ zMVPt<HvLu_8G#dJBFo5Scb4O{~{28jQ_!LK;KnOWZ{vSlb6z!~@mrtmp1 zPv^2S#RfC^7^aTqvdkS%VG4upmy|r}bZcOy4TNE498a_LJM%G%7+xyX{}Pq#XR1h` zUN`AW=Yf0$0J@k@l|i$dW^TSSF@#SL4KseJHsO*-nJhwA)S=d;d32d^$s=VjXKLf- zM^{Ww#^$xH$B_7&jQh$!C_a!y`AKlFevb=pv;i6_Hm+ntn&mW8-!ve@Ex`7$e*uNb zA7xSQ2j{~IlJ!7oC7V2XU3NTAHt&)_?}J{B@Pxlj4kslu=9Bv^#;Q*$lfR$IA`go5 z)fO|_+$(zh`v-$xZsP5#=RwQ)SM2o))4;>}icD)7OKi>SU?j2S3XI~vz+pFA8#y;Y2^&N4y`X9zm8BRiZZ*iF$00000NkvXX Hu0mjfo}xz1 diff --git a/graphics/object_events/pics/pokemon/followers/azurill.png b/graphics/object_events/pics/pokemon/followers/azurill.png deleted file mode 100644 index b38801275ded72d29f5ad7c2e125b2416e79e51c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)Kl(9?1Fc`&?E^%xQ3c9tyz}@J0e@23z zQg;vBvfb(-ijF-fl3Ne|Pn$DM^7X8qgIiyr@JqvcywH4vOqw)l(xgdIod2&sts!S- zG?3<^0o`#Gt9h4bzr>YQ==dl5G z90RF!N&^s|zv41OCZV#y92>kj!wvbKD~(Ufvk*zAR@*JSGt5m0G_%@Tow%f&)h#rM zq2~QUgN%u6m{eb zv~MvX8-^I07*qoM6N<$f(9JtD*ylh diff --git a/graphics/object_events/pics/pokemon/followers/bagon.png b/graphics/object_events/pics/pokemon/followers/bagon.png deleted file mode 100644 index bb4964436c66f14e4bd88db4aa7c1fe90d57070e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)K)G=$qKo|yKCm}!IoM~{!1@OY3@EvDk+5ydABE@ z_kP?BW-@8gq)GFCvg7{FKW2gE$-TvPcZ%$JQZu?hH9~uzn)pCHsfP&FWugrlM=ec} zRg#mLK{yp+JFvgA^vqj_ax(XjAn>!W4EpPU2nx1$?*#FV6%L{OTUE)#)T()!fiHVn3vaTcsuAI{ju>V$5=6E_fZ~9 z7E7`aI#|0u*^4z-;iAlRJGLwQ{eg5A`;>62=;o+-(Ph8qOjqG*t%EV@+Y{xx#9pC6;=>HD|nkSe>N`I9&&GiCWku v=UV%eYRhVExB!PPgjbB6ul;(%@juHaWXKWf0;d;C00000NkvXXu0mjfjbHSK diff --git a/graphics/object_events/pics/pokemon/followers/baltoy.png b/graphics/object_events/pics/pokemon/followers/baltoy.png deleted file mode 100644 index a6c84e7772fdab389d2d15fb6e28a947bf6b6f92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m$!raO1+nn>!mL z105%JMlv!oK0G;dXP_of2_`7pJf{pO%30tMS1Q?jOiZVW~mJIZOitE zW*Zni^ZQ*DYHYl0_SCm8#2wa%&2JHyDf!&#%C@k+NZEqtU#FTMns4;M;>^^VtIUS0 znLjs2-|s0?c2ds<+E!67ZOPLD^$Yz|T3)CNxg^eZaWxV4^~rX$TXy>i5RSc>omRp00i_>zopr0AZ}b6951J diff --git a/graphics/object_events/pics/pokemon/followers/banette.png b/graphics/object_events/pics/pokemon/followers/banette.png deleted file mode 100644 index 9b91d3ddd4dc37a24825ae172670b122d356a040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)k7R7i>K)G=!tF%$>zg9tQa&j;v`I%^d$+$|<| zAUJ)3LY7SKctoN{e4Rqck~NSaTWmOZ&Qy!KiRLctm+DE5C7o(rhtjEjlYghv|H-nY zB-z)#_O-A7sBrZc{?p64_;}c}cEC+A7+Uu%7uBHWY25Us9~ioOy)FQXx*9McH0FE> zncqFMobo2I;*0OLv2xwhEt z835-*+3umuijNMs?$s%_@de1n!Qc}1r3B7svK*)2I z%a|!sl6Yqu`~LL)x<{cO~<0`-A5dZ;qdi;SHA%KAr(u|3OE}80000cahbWf$r(Xu000000000000000|03Hk00009 za7bBm000XU000XU0RWnu7ytkPq)9|UR7i>Kl(B2VKorJr2pl0(N{H>)|G+^grAx%1 z#nsYMoC@J=>5^bIq}_^>lORQGrgoBZu~=K;{d3h=%-z#Vq0*(~+kWqR@B4^`Ae1Rn zrcD1r>JPlLhT0^RcUEtj&P!<%#YXIRtcH0Z3-U@wRa(iX@L<8c?W{(&B@_T&sdP`9 zRtld|I+C#ZPCL8>d8KMNezww>QYv9}PDciIlY%9~e5E@c(~g|cmA+36z~8<`=}T@l zSX)arD=reGJdW8bU$6%_=jmNzJL5Uk&9jTO7c*BFi{z%YPah~7lLFVh=2K)jw<7KokJ*8>Goop`YL?VS?6n@?u|c_;h;1&h`2MsWd7YApSyU^vfml z?@*ibw_@Fg-(WaTNLj$ZrSGh&2Xg3U9iO4PB~;od3OMP)SRcCXC0o-r=SzQHyfxVC zx9VTB)j&Eqr2#u5d_<+oiQ2#BMuLvrcO*5rPcV1hpnC9Nu%ic6s|wVv?*{4E{W`vI zEk2^A?~`~;CdV_RU~Y@5vx!qrD7zW#jWRvh)Hjr9fG^Hw^wOP~ZBD<(*2p`VDb+wS zQ31)hS+P-h>FN3D*;xSr0bx-g000000000000000OMyaV00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>Km9cKyFc5~>K?^+zkd}7K*p7q(*q#EA zOC|>*3#i!|AVBg2d4py*V&I&Gjnkr*7PmqQSbDioc3|BxW(su3l-s`J-T&WNl+4&$ zyv3`8F%yiDG5@3Dw;|Pgsjvf=(k~?(c>_IVwLB(GQrg}?Drz7nv=kpZCAr7IWwAjd zv4J5iTxqNrd48Ju^;PDWR4KhP;BE&jVL6r{rO%a~;+>lxRk1``j%JP%GSv6DH*|uy z)G<}sjUg?m@}5ZBVvG=Xr7NmbVcy0-)8EZ?k)jHq39wdQmbYj)tqfq^#yUw)DSyBt z^9z8P-OoB50?d(t$J++b1=yF^MSvq&08IORecr?Xw1HKae|CbG0d}(xcb~ghLZa|m zKEG&SI{49FW1lyIvzy{#9_B^YGYar>`W4`J+BbW=$$bO3nunPWZ;Gi6@Di?Imi3p= z=Pv$!1h~5lGZ$J38{jqk0+GGn9s1nGX}9u2mMs8-@!&BtxeytikTQ>R zfGoBlX7?Mx{wev)k5rcHB*@Gh0-WIiC`Yj|pJ6%*u@lU-%CG@tR*Utm7_$&ZG8czu zV&rk(&x|-pMcH%NF`Bp*<67VsjdB#{V=+bsaW3i_8`S4o9pGztpw&5=crg~DM)ka7 zWN5^wERmzBMY$j^&UI6v1>6cvb&bzO)zb5}!Too2#oA9KVgHan5YoLT^^bF2K2LDV bUL_s@l@&<^SEFK^00000NkvXXu0mjfsLDx= diff --git a/graphics/object_events/pics/pokemon/followers/beautifly.png b/graphics/object_events/pics/pokemon/followers/beautifly.png deleted file mode 100644 index 33e2eccef9e9506adcd17f6f72ca56002cc33166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 zcmV;p14sOcP)5%NdW-?*;!$+v9bBtX<G?rHNdN!Klrd}DKorLhBhX+loE8-XBEB|};{=!J|sXHi2!; zAMlhuLrj4ER_pRKJBYqx*#TfMNDB#ZcJNPnO#CP&lAVWQLA`U?1u~AF?|gNV!uOcC z&(aya$Mr5JHfci|lILZWl^+hvo2Ymh6+yOxicV6vq{P_^mi}Fji5KdS543DEtMof6 z%l-SqV%M_FJ~|?ClYdm~MnL_-ah$q^!=e-EO>~43ONCU=JB%2}P-DmvLSb*^0)1l( zVn+|`Pzf1E z1BYDqA)<{5J4Z2S7$RRZx=MTqL_N@d$n*-k%*9TAq>ffgDM@Xlmm$sIICdn`)sgSxu_&})Xs{V6@sM3rvOB&GHGleq03NrOKd-h&e1IG~ z68h5Kl{c=61#(^Y9}(X|{>Qatf-%0~_GyIehV8v;;|VL2V@D>}-D(Y2cZHs#j&7!i zA?C;qXn16Q~)DLZ7!0Da7s%w$wtDN{$a zEulx3H5NJuV@DG~EZ6uz$r4lN1(B&EJhvw|i5(F^4CXig@%hvdnbSZLN6E~Tcy9B5 aAHMKmBDYDFciiuaWTi-lIs%^aBJGNyCbBI z^Rz>cRU~V@GAgGxnnsPe0ig;0Z)am;Fv&Vi+IH$o6y-C|zwbTg1rYj(kN8i)kz4*t zzFWxmUo@1vxwRl(?->qJAbA1j?*m%_#8!!=UGQM2fQSt!3EKp=!3l6uF>>~MdxtSp zKnAAd9F+)1mI2EZkm)4GIsj&76S^Vf;unSrIOJkyf3Y2Du|n6m1TwnTnlb^vJFSJG zLkL;nQ329W>kb&uq2%S^!O{r(bS;5YFJd3)&EfDl^@HB95C#vsp@0`@*lP*g4M2yy zl4fTaWT`KKkZC{$p#*}bHPGxpNJG=0*H7}g))LsJ>C<39EG;XF6!5mMFuIZzUK;Ju zirgPFzt=t$hDWNj0{R9hPLI@?KQcfYuLFMSCt>5giLC2JYjK28I9tGNe}pviJ41Cu z9ngc3!PT;kz%qaiSQ`U)`$1NZy~Z1wC9_3LQ$6gpHcZPA&haD4Z#?u^0|TRz zuVi(nXBqFB7`%N0UVKyzwXX~nQ~?u1TV8*w;@JM5Z#!VD8$d;~6-Ur)dAD#(Lx`cO zy(k1Kk+_Hfq+!Ag@XK%?a5$f}46F`#2P|4884cs)z~jVUO9!_G4gwy9;!D?2S}Vhv zvL3iGKykU`bMQw7VyTfpl`non0NyUWD*P0bPzbySHw>F7JS$Ny3H0UR*Y0uswTe z^I-!OV`>a}IR%#00$FhabkXu+e7~ORiQyDjR@2AbDbPXhYb$>WEbWKM89-@1&g)73 n1bBi!1^h1T{4>Ch_=ETfoMSxQjC%l100000NkvXXu0mjfxh;1W diff --git a/graphics/object_events/pics/pokemon/followers/beldum.png b/graphics/object_events/pics/pokemon/followers/beldum.png deleted file mode 100644 index c0662fc9aaacec5dcbd8e287df30f608037c2de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmV-80>}M{P)FN2I$?1`ip+RAJZw~ok00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)W1u^Koke?PJy_+p@Fz`bEu$yhi(p6 zager34>Hu^puxd^!09qreEuM!2%4q;g#SX34w;->lp;nV$TN)&ZM=6K+@#;_GraG+ zgX2o2S!S8#|3o(a=4r9~eWPu$Vf6F`;23T92S!g#hp1t)_b}j%YO<{8(Se#icm`Xk ze~@s-&%s1v(Rty6zd112YWs(hvF#tm*)kg$=LvkjzovN0w%8nhH{-U6-bl(0F#awq zM>o5Qce5o#v%wg#O8`wk#-oJuw^3cOw#r#y%hB5o2_?V~&Xm^qK)rgux?JO3_7Eo) zj5%E2OS&Bj#n0m@Iv=Q2SB@5HyxrrtkB;7_?|b!ZUpwAbTIaV)w{EYzl(jV!aepn* z`=lo*4d5d7l-A#c2rj0)%TmggtM_>iDrucA;)dS&fS29L^LRU1p>*}e9+4DqEPhU0 zbUsj#lyqF)&spEjliqd!NjQW6c9hn6f`pQx!Pi9eddV0OOCbdnWIRe2035~ploppi z49-4=kc^I&s&^)bk1uF&srdK&c64d<+;wF1-!nJG|2SVSaXJ7@4|%Wv0000Kl`(7EKp2J(JP3s>!ccJQ{D>O9)w{ zMOlkz>!Hx0G9ioUAXC(}OD6{#6-80W5El$3TWwM|kW8hmT1b{4ns4fsA-|z_isbw5 zEQeC)RDY8ny{G5Zon=hOVivQQ#r(IUb_oe@$(1%Cohfy0Sy?Vrf~U!;`(~byC|-*w zZgD~R_@yh@W(#GZ7j)pl3)w*n_O5T>^P%1`0%h?$e!`#3P3&I(J}6&rRfd?c(89d~wvuB|t!t6X5{rfFcN zLQ7!ND)?YCbPjATV}+QrYZeol1PL~7xQx*pv#05grcv=-fj4aA4@n6LD&udmO~P% hLZ+$rE;Ri3(9Q|{J8U4(?!Qkry6xRD*Q}d5n5%^Ru$aulEsYm=>mfbIWZ2sh(nZ&9+Y>m;sVoi8g7x(UtHtlau zzS1jMu+h@C{BS|}n!NWZXRcl@JaF{i1K#KFcI>%-ddA^NsaCtIKIG|tD9h3f)2i;b zP~h1eRA>FJ?C`o{Z;EHXDSi9>F<-&N`aMsLu5Ld1ZtLydYGKcX0Vn4@?ao~;QNjJ+ ze&IjY*p1Q8^MrLD-ip7lqAuonVv`BOC0l3ii@Po~9Zk*LH~sg0_t%r^^&)5Of68q? Wd1m4!?w3BGp!Ib1b6Mw<&;$UGs=Fls diff --git a/graphics/object_events/pics/pokemon/followers/bibarel.png b/graphics/object_events/pics/pokemon/followers/bibarel.png deleted file mode 100644 index 5b9f17e7ec7bba6cb3a9e2b11297cf5d60353f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)G_!%De2LH$)RDfi8(nrF#rGn{Cra{00009 za7bBm000XU000XU0RWnu7ytkQ%Sl8*R7i>KmA`8nF%-uSbVJt1X-L6q*K&%ECMk~b z^^Q_#=>HH1@es(+LSzaFE);r8GK9|gBTDGv$vC6tbh06JiM?2VLnYlWNzFB(c+BH4 ze00|Lt9yD+^1P>biWS9LHn0b>Y_CvF+-~SP3cQ=;c z`O(eIa+L-v|}Z> z8#ZyJf7TmV17*9al$uF(Ing;!8kthhPt&fqdHl0)^426b^a1WM7(w|-h{phccgGc{ zlA+?1b7hGW#(I5=3qu4DP%3{)0hc)j>1PEU;40@4D2@w`_2+XwmbKkm6x`CR4V9o4h-(9zWe&B0SMz$7RUG5pTu|2bbYOE& zpKyMV*L69={*;x=m0-AxINQ!=hPBnl;La8usv>B!EjT;D2x@8JR8Ku^JqY9LU7TN<{@2^Pg fFN3D(SgaKVL3T5000000000000000O9SF000009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K)GyrC+Pt?w3`*Pysc8jlFMNiL2YBFtVsE{FLs_Cza&{UWy+K(Q~pr|8?!`0 z;41Au)Spq7HijBhtCKz-)DzmLjbR2b(@CS?@k5&{9F$1=q68D3GU7C-=G%mu9TApv zsZ2cuEN)a%DV*(uwvkkbyh^%Nc0s7(ElX^%nc&pWBHzQI zk2hS-Usew^ZDL*&>U~nX#A~47vkuh=300000NkvXXu0mjfPXp_y diff --git a/graphics/object_events/pics/pokemon/followers/blastoise.png b/graphics/object_events/pics/pokemon/followers/blastoise.png deleted file mode 100644 index 018f0386914b0dc1d4bc7e690cf2566fa34b4202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmV;s14R6ZP)>48xR@yStPVW}}WS&4~>>FN1VQBk?Mxd8zINht}jaT&>}Q2+n{Xr#Ta00009 za7bBm000V|000V|0Vb6__5c6_F-b&0R7i>K)jez5KmZ0{O#-7yr9;6G=oOh#Lx*Z9 zNjw-tArvwwIoCvsF_l8?IU&JQ3nm|4LZQ@+$P_S%UCPC&Mn5nn*WB5li|-F1HZV-}>frp;E=ZEm2OCWR6!M0^1ei*#xZ;jX{G zQ47*`(}wf{*lix57_SB1h_R?E079cbo~=Ceg@uT>ufj+;I;hh1Ro#F`ZL z4mLNpTfqXtE-LAli*pN=&g`gQ%-&-;qk-4_;E!86?N2wG` z`ZC4u@I+PHX;rQ9`P?oK`~nSg=^SIf;3ISblVkZKxjU>*4bV%0t#c4Lf`YyMQD;^=1Vv- deT@Hd`~}D1|2TWyKPvzL002ovPDHLkV1ho-wGsdT diff --git a/graphics/object_events/pics/pokemon/followers/blaziken.png b/graphics/object_events/pics/pokemon/followers/blaziken.png deleted file mode 100644 index 7c49d9dcfcc21d4c1eb3fb4fee4c70dace448d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmV;v13~KkS@G%NX%PYGF)8`cQMsw1>^uuQ00009 za7bBm000XU000XU0RWnu7ytkRG)Y83R7i>K)xB%mKo|$$gY)1ai?Q=>gmcf56~}H8 zvUUkVA%o~5@M)VcZ&e*SIko_H z4*;x87aI?*`!(Kj+I+*Xr`}&kH{fr1&MXg1hrL)?#-F`kk2eq=Z_aE(CQN?bp1;H+}!5w;hE8b`-v98KQ5YiKtv--S~u9cK6v3k%lB5eLK?RLhD|yA9T+o9YA|iX-5GM) zM!4MGyCPt}Y*nI24y+iyqYcQ%P4_yAL+taPh{pAg&kLG%9R;$6+^fgIKQ;?=HT4>wn*I;X zK4tT&8#P=#HY6<$#M2?wG_k?uC7o!R9tQG;+;n9n3Ov$19iN=|o=(X`_qM}^h%JSh$k8ZJtz&W3{>O?%T8-6l@aU*C1`QH!1^K|@raTxtMSOKW(2BX+Gq3Z=5( z5-C&!SJ&5YDO$f?Dy<>0<_35m+7NeGLy3k3iiE&fLqwyDS~Y&3J-`F!N^HnWyrw{t gQ|W8x2L56F22EVORTprSjsO4v07*qoM6N<$f(He{yZ`_I diff --git a/graphics/object_events/pics/pokemon/followers/blissey.png b/graphics/object_events/pics/pokemon/followers/blissey.png deleted file mode 100644 index ba65960e21bebe744dedc04cedbc504de68bf2df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)K)iG<^Koke?0}BpH<}RHoLxxT!G6vH{ ztq<3tbBA_KcWjZdQJ8#n> zNwERG>CH+fzRtI@6|d&ovfL5LpI@zfy)jGk11Evjw~%sJ*Bdk~;_>2%U6W(!Snq>Z zXDo#Ex-6zz#$s?Lt_!2Rd?G~agJUmd@P1h}P%J}M;EC(fHTXd>vQJ27EFUHSUXDby zJP;iMe+@90>5UeVsCX4czRt2BPXX!;>K1Wm7vLDa&}mO=Sujtn!M!n)N2xVXEOK-h zuEaxy*LF{9^t7n=`HoG`PsLGYLns$j%aM#=GN+5lCDFTc^CK^Kv(b>Kgu2&jDOjOZ|HdH zl>dR^d?w@RleA084%@cTouk2w_T8$QYMK5s+kQ-Xf9XztRP`>cywY%b?lfL=!MU^C z{PFrSRqC~FAmSo5ja#I(jI8^0OI>c=_>cJw&nTco{rB}B00000NkvXXu0mjfTW2<> diff --git a/graphics/object_events/pics/pokemon/followers/bonsly.png b/graphics/object_events/pics/pokemon/followers/bonsly.png deleted file mode 100644 index 013d39187ee28d0e7f3420625651dfce66c1da2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)Kld*1tFc5|rVlj7!Qq-wq)v0fgA*s|% zAl0Po;DL#u$U&JqFfvq$)iq*Z>=H$Oxx#gbIckV3bqe3)@BY)BY=LEsjEsz25tD_v z5A_1i<=ohZdSPi?g{D5#3$-OHqlKZ9`m7Ga-mr=oi{iPNllt6V!0>`eb@171bujcL zJ+J=Dn^${DX|@W@-1f`0It_b+A7vtCu9=g#YCjQjsI46_qlTWcGCc3@I*^H6B)u-Q z{?1saX4o5Sk>~lY&ucVp?|tUYlngmQ_SwVcv&Wl(8YjCC>ZloVAiWL5+ceR;QxDWQ zpXRL$I}phGr^l1q<3fCCJopx(P&4F!SKP^)!ZmWQkn+^Z+71x7vY8L{{<1xCu09** wTqYOhT;gnd#Gk1}I)8>mFU~0**D3rbKUrSlah=yMFaQ7m07*qoM6N<$g3GJNc>n+a diff --git a/graphics/object_events/pics/pokemon/followers/breloom.png b/graphics/object_events/pics/pokemon/followers/breloom.png deleted file mode 100644 index a133c90b616b076699bd40813aba6978ffb57ea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)K)3Iw4Q5*;GH|3@fZo0A1LAxCO2Tnh% zgIxZFLH3w4?4Un{9w#^BV61 z+~u4N16V5zFE~r(+YZ3$gL)}fPq86fKCBdY(Uru&C-nB`8 z*h?8VPLhjM7#?TbZ|)u+kIa;_XjuFG153=e;T@WeXdR3gW5XYBUK};wrksU$*y=SW zg0nQI;(2H2aL!&yGVv0Rw}Ez8k3XA^ah88Ly78|$UXl^-ST?58=3IO7RYtW|k25~e z_RH^Ghj;8ZEZ^pAbXWFn{jwa+xOBt!x9AO?`ThpI;Y!omi#QuwzW?ze|HX7;o=Ul0 z&sph8d6SeY_Q192{&?WV`F=O%4_mP t%vkJ?4X=a_#L$L@TdZm4=e7H1`3(ShrnOUQO&|aO002ovPDHLkV1j6YE&Bif diff --git a/graphics/object_events/pics/pokemon/followers/bronzong.png b/graphics/object_events/pics/pokemon/followers/bronzong.png deleted file mode 100644 index 845bc18dd75c4601f5c24b1653cfe91e7dcff3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)K)G=$@Ko|z#122M3Qo(NVR28IVb1YCC zdu@M0rcQA|4%CZXauW3-OK>{nrZy0wZY4vBr?wd^P-jp5Q9bDt-}#brif4b5pL^~1 zJFpM{``OQa>cKz@cX$4CvrRStT87i>-HkSuKQsUl%&w;4u69V=5!+Nb`x&GW3Aw%ym97(r6?skX)Vp zriDh%7uK!{%cE1>pXg^iugw<1c1l_SFOyvTExO@P^;W2~skd~)e%xp@ONrsHL+V&` zbvCsiG-0STG<|yXxY1uTj;s+6C093sD+pJ7=|c}q(^EKEtzu*eq2zMNpYdosE<&Z3 z^v1TrCheem86(?`sz0bGU_x+i|6gW|Z_Y?cY@>96QMN!nwEbxddW?dz@+XZ+M)}JUD!5rbMzNLl>D@gPTC$%1&X(@#4DB-RZ~Oli z*h%l>VY8a+xBT~F9{;=dua&uO-L;r~2iu)@o`+^tt>QcQ?82HoWwSF@XTAA+c|qh& zwuLXluI3%~Z%&(;QSZF*OsR(1!apV%)9e>NX;5`*QJUE6eTujFU7p3fGH)HjePR1f zxcz%#&X6bFxAtq2>bDg;!Vg9!D8Jr2mp_kNJuf-2bM69-)@{OdQYP95r+krT+@k-L zfBwpu)6Ut1edV{0s#YsiH>>CURl6(#=(tx;_A-Pq1@x*g@pL$0>(TzU){~aJz9qw3k#*8n2$7piaamL#r(%-Lf?=o?LLU zYm^n;zu>I!le^aMx!Ci*->=)bdwP+Hr%?CNq>VT7mCheNdrgP`u19S*bQ3_Qb4lj-4l!J#Awl*Ua-zqpWJzoY{LPBD8Gg`Q#OI>`KZ!Gy+y$ zPhYPmZ`Iw)uz>r^3ibueJ2!sv%&sb&_MJI)-?ixu?^~p+uSCV0$ni7F&U;(WEqkK( zZvK~_(T_hCsPdgRlM<bP0l+XkKfO@a$ diff --git a/graphics/object_events/pics/pokemon/followers/buizel.png b/graphics/object_events/pics/pokemon/followers/buizel.png deleted file mode 100644 index 65a181148863f2c0d9e08f7b7e5832adf2714170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0xKl)q}*Kpe+~Cau3q2nq!u$#Np7IjGYi zLnu^aFl4hac<>TGLZ3iVY|s!488h|)T1fHc&BoxtPY~!JO`-)oLr!UzV`M1l;+p-U+0fyLFeBZ#=C-!$nyLj`p1DBpo@YaQfm37nu08V zR6vXPb^HoJT03AxKX6-)tici=19 z&rXE75atc{BY>!1`earnU8k|a4Gh~}v*7%^NH6t+gZCchLYN13V*sPc1u_pE$2waf zJ|mvDWtHU}T=eqSeraMZgn2`Y{H3+Z7G>5Nj%8h4aKUm$h}Yf<4%ymCZw^Lk3%nIR z1ycBU2niQRtln8*UGclCSu+CU*xa7bXBN1;d^q<-HWHf${s8!j1tP20?7Mh4HcP&H zLm@c&%@iI%U%e~uMZv~-*^r{GzW_Ym`co{7JTEZ}Uro0|_b zD;u!w%}qN){jg^qd5$~cd=h%jiOE@uvuT0_G|kWv(EE`aQk2-ZA5lS|u=x}Ps?)>` z@jOjK6SL}0QGjZ*NxXm!Xu|q@%&ewees1LX`UN|Q;TXg9u)+WU002ovPDHLkV1f|X BMAHBO diff --git a/graphics/object_events/pics/pokemon/followers/bulbasaur.png b/graphics/object_events/pics/pokemon/followers/bulbasaur.png deleted file mode 100644 index 637615bd8cc0fc9a6ca7434f6d365149205d98d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)FN0a0Rg!&89`w&000000000000000MoS?C00009 za7bBm000V|000V|0Vb6__5c6@o=HSOR7i>Kl(A~VFcd`vnT#fpAq4+~i$b7uYaXV; zYlrMH4@##@{*9Q1g2x{jA1mcq#`Xt4uc0pD$iuW0Im`A- z;^C$+TVxCCipyk`gds#8E@Bi9jCIRhZVcyF#%@b5ld2inWteFiBkow%Zko%w(C3Ep z_@m>Q=A)@RHbRO@8E^?kB+cZh0_gVt)a_0bd7+xG69;OEW<|2VJ@4- z!U}L$KM*&Dq6>Juvl*E-oDXw}TTC%$?aW=)0WYtZZiSc0mGv9hT%>1w$2Zw-k;~ff z`3vzZyi9LRVJkrM&(9jDnUvQ1x~vV3YGc6qiZq{0AaKrCiCM3?wFqPl2uasibJ`CO z#~7sb2AYjw0F8u?selAd)=^P_1n7+jDk<&5Lnw_dkx^Oc>G`>lS?R%vQBg?%0000000000CoaSs00009 za7bBm000XU000XU0RWnu7ytkQ8A(JzR9J=W)xU4rKokdX4_DoM5(tTOsfAQ2Yze4? z7aMF@!b=E7%$?d1D@hO0xl6XL*+5XI*D2ts`R590e7^VWN0p(fD)HSu_wMeU&-}2g zV~#oIm}CC`F!!+kdZN~0=kX8tP%RJhtIcfN1>?wiyzRcC%rPC!UJ<Z!Pn&vG;G4pV@A;d#7vI30WUFYqtnT`-c9dZh+nExEBA>Cd_6vc(=&U z@$BFvBh2jE>u^<^51F;!r2bsR7U5X~+-=Fv4O4GDrab%THP&`i)}3Wu09Y>l5dN|Y=AA)LJ&^WT-3q7(8i)vH3)O>wFr$`*@845iu%;7A(I8u zNkdBTgfB6Z@W!!qq;x6EK-5E{!HdjA05-Sce=*UfW^Ab`8&gWDAA=eXx^C40*a*+-6!Xd-8x9*Ds$b(;Y2bIlKMwqh`~pFc@J27#^CAEM002ov JPDHLkV1h)uKp_AC diff --git a/graphics/object_events/pics/pokemon/followers/burmy.png b/graphics/object_events/pics/pokemon/followers/burmy.png deleted file mode 100644 index 5c95ed87d30a7616fc037c08fab053d4528a2b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)mnLF}Zm`iP1S>VPOCO00000000000000000000-A_Oo00009 za7bBm000XU000XU0RWnu7ytkPo=HSOR7i>K)Im?eFcb&ynJt{{gWx>2GiJxNC5kr` zGQ&skrnsn_NxX04z}1K({kC?4(AO#wiQe`<@!MXEhMm36(u2P zeQwOhcT$M?wpP1uT*Y5xOO+OhZSx-eIPaGsGY+*GtS!1Jkf^h5=DOa%&!?+N+qG%P zf%3RCX2?EJQoz7$){c?u+=MiyXOltXv@1X_34j_t-^<9n1(j z8SL=2jAr;N97=lmX!rM?uYq-5u^F{ZXwNc`tph@CaYJpqw@#+-HAsK3&)dmPOVUHP qt1Q3#yL*0exP58YJohvE*L(sv;CEJGZ%q>b0000EamT z(fRhWVfG;h5%v!}2Y>Ud3wxEf#?Jg=)68fl*`-d-+X8a4o@xKM78daS_P3&m_x6TQ zR@@T(@AmsizxRtfp3lC#%y+g~{frqqCkv&0Ss8IPHm&@$w0hZu<)us3e?I+lDq~GX zyYA7jZ${t$ikHp&FJ)C%H_P-}P_CzB`NYaOUuWOiUt3?cym+?pOqs-M7am5ewVz}3 zPKjIQ-h&l0|GwPGe#!6qa`s1`nnJkTt~72w%2X=T-sifAVXjlIi`fD8rOEvDk_$7o zOv~6C(&b}bw%wF<{_!QRMI@S&moP7osEAZJv%6u#_W0$x7kAy!uv^I!6dfQ@uj4a6 zWuFcI@tJyaZZO``c*&4&?$`IacB{FE)t{yv3p^r=85p>QL70(Y)*J~22F83(7sn8f z&bOBjW*u@6V0&s4TEl-@s_g#qxSu62lXy3)ef6@s`|75&_T;k4mb+3n zlC)yp)XyvbQ@C5{%jKotTUVHVWO^u))6{rR>oUWdfL#(^w~p!0lZaKUV2+ggw|L*S z);A`tKTErtW~YUzhdt2Y=G}byAw%YFKaS%1=xl}ef0-+t)eCCACYLN*EXt^)U@kj1 zPk8rPwg}}m=0(4Augy8Dzxy?pd1E7ASjL;uKjkYg#EBm*zs2gD*l2iw{RZD=%Y4^u z6K*h6i@j6YntoutX9C9_wL7t&3V3!Tq#ib8Et_d4vAIGkvs>1F!xry#Zl}Y7F8xd} ok7R7i>KlQC->F&Ku0@!~~6@Rq4Rpq(7J z!NqtD=*A|#7PNy7lk?P5_6p#!0uNnWUoxCeoqO6s50$$QD|l|#u^$}j^m-x+o%xl;ueF(<Ty4;8(j`LQn$-Ama2J=X+bk z%wP}9TP9RgWe5R@tuAy=jBX4wQUH$6w>SAk0K@^9fKzR_1=au@&`hKq2;$k81yGCJ z0`hb#?6@&Jf*N&zPkXu-)cqAwN`|{%-(O|+5e5ge0F{L#Z2|U3@-v!^-3b}PGy6jH zj_$TMuW83^K)*IEJ(t&$I$o25c$HRdzsAjGF%&t9z$6Qw4Ky(DnbPRwL+V>~M$cUUk)rGw_PUar?m`$ga-Ai}@vrGvQz3&3T= z(tcT@`6?k)e;K%>F9Meh>*()QdSzruf6Z`JFV`OeF7H_7cL**30000KlQB<&Kpe#x*l3uv7)@AMP z;U-rgaUz1zG`2~wjBRu{oguqb%=r86OKg{!4xtkg_3U67J7K~{QLB(u?>v4TW??e3 zO&xfiH$Y2SeWi?xS#<$NO`$+yw&E@D`d|dh*nzq?0IOBV4uJRKW@jQZ73p4D;P>?Zre@(*fOC%O3B+$ZbooHDgV07*qoM6N<$f^?z|*Z=?k diff --git a/graphics/object_events/pics/pokemon/followers/cacturne.png b/graphics/object_events/pics/pokemon/followers/cacturne.png deleted file mode 100644 index 29d1250e13b43722fafc862cad217ba9993948ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*y!2mxbkGBrlTe! zBV*%AN6SRZpEn}|0|PTxCIVHVfm{23oCOMT7I;J!Gca%qgD@k*tT_@442+vRT^vI^ zI^SMBnAc<=!Tv$*Ew_oHignb-zQv`t*LoCMYu~-=G3(7f_ZxBzXJ&lZrfs$4ugGSP zvdBMv|9)Iv&+6HIVQpUN>i@wN6AF9uZpF=1W9~_>bIyoX;bD`=pJLBg5X^0PBtP1| zb({9BTy}};Gp9SSlLSnB*SFWAhHS3b+!nc3R%N%4+yqHWUSA{0`;t zV}7`9gW>f3=YpT=O3eD;IZ;ctl$r0@+pellkL%Q@eEa55m%$_p7U$BU~SdrcQS0d7kTh=v&y`E@QK_#g(@OHeb1Qve5k7gO0|t z8K)NQER%ZXebjB^^v#{W=SNsurrmvQ9r4q@;nPx)_2+E4WzTQ@@_FjxGv_-$^ea!{ zD0pz>%kQMLp00009 za7bBm000XU000XU0RWnu7ytkRK}keGR7i>Kl|O6SKp4hv=pZl{l%>I)a+F$F&^gc! zCCy+%vlQ|bf}s$I7ah_ft0p>2j)zjHO`V~kP;*%vw-8aSfhNQmng;3=t7Hm>5PycA zY@H-4l09@P^s!{?r$5j0>Xm#4z<>QK;^y#Q%TQp%v!@zm`(eK2 z3>vE<3t&7sP9J)PwBPPDPJ0-tcNu^iTwdb&C2TT7##deo#2RikYNp7JGgesuX@A{+ zuy$bWdI3}H8Z60tW=j-3!yCq4i_9E``4z!PVBo!p>a=U|V=1%d)ck$TNtt z2@kZgR_=+D9(geqG`l0uH%#bnH zgknER21(X!B?+4y1ob^pfg1QDJD~890huAC@ubAPm z_zJuG0z=6NGu<}yP+;X*O4oIhuByitLdbT%e8Wz9bHfj~-rNLs5a=2rd%6Hi3Ibi> zVbL58gG=h$*iP5C>w#f-j^pS|5e^&|un{U?W2yjG_3KSAqAPP4(X-Pdb_wTCJ>i;y tK-ch20ii%|SJ-BJc66Rj)Vu;_=?^M(N}disXx{(;002ovPDHLkV1nrxyF&l~ diff --git a/graphics/object_events/pics/pokemon/followers/carnivine.png b/graphics/object_events/pics/pokemon/followers/carnivine.png deleted file mode 100644 index 78a13adb705bd72a145207b94022bc204b7b296f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmV}!6``*fvG`JVJXR(5lN95kx4P>>G^3XDFFcinaNo>IXQ`88EJ_zaz0kV00009 za7bBm000ie000ie0hKEb8vpKls#zMKoo!<99^o(IN%{$@sg=>PsXkV z6-E~*WYCay%8;#N!FbTn(QCj^x@Bk~6gm{Fa5ZT;XxEadT{?Em63E~mNaI0$C)<+l ze6oj51wVoC_x|5I`2e=EmH$JCz?a1f`QHmnBY@$!kT-=>>aJrDJU$ZQcq}3_1Kgv6 z*K-jHlNw`zE1-x0zD=DS##lX$%na6}Dq|0_u2g@%oI@u`9}6+!@-P4SvG~` z&L?}g)4ghX1{#0bPa585Ms`N8u@~kq6Y4B$#;0!>JAE75Mz+{9eB|rE#Gn6s!D^zu zJRzM?$lWLog3;aB%ob-fX2IC;g^5Yn{`geqILFf4z4@sd}$lc*P$q(Rre*+*SBI47-taa}7KU zccptJ<4%<4O2X)0&il)XyVtq>fpwv9qtUhT%S271+m-w7hR6eC8aC_&LyIms@dxj0 z=`SntK`tQ{bX&Q*o)R=VP1F#Z!s6}q{G};ja_iU&o-6&nz3|71uSn0&DxBk>O@}JS zO#CEaCQj3_*E!_vSdlz+GBb_{PLJvF3Iov!0M!eq9kzNI%Mr;3s>VAlP~}XW2=40> py<2BqjVGFYRYBL{M*po8%U>rCcNBczxFY}n002ovPDHLkV1nb%V_pCN diff --git a/graphics/object_events/pics/pokemon/followers/carvanha.png b/graphics/object_events/pics/pokemon/followers/carvanha.png deleted file mode 100644 index ceba6596d6a9108f5513bc78538d8d8593a0442d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmV+b1ONPqP)FN2YvAHohLCHBG`B5qP*&zS`00000zTbFg00009 za7bBm000XU000XU0RWnu7ytkQc1c7*R7i>K)IE>WFc=4L3)NXzFjCr~+~SgvrB*xK z)I%*Gx+G~F;8IJ;N$G-aC1Gy~Pbze}Q!+)jaRXzAlmYTxNSil1#XS}lR7)9t zar}Rtyf^?H#$g=B|1$=APr&?;`OZNb0f0JZ& zm)ZXzcAR-Q;0mC`WGhu_V9rhBoi4M#ZV7=~HzK~ModyaW)@(j88I~Ecd6Vi@VCMTH zE+68f345sRai8?NGMj9!60Hi%JZ@I)x)7gF*qH`qdJ&Mh4D1j>3Gd#76owk3lwhX_ zEd0K_+*q5P{=_EOUTq85vwNA9vS5ewZp8w(RRP>1q>G0|VD6KaTV8&orv0Qn9%Zl9 zNN8rZ$_x0IOyjOrte`&b{hD;OY(K%#Ca((2{k*yZK-(XW$#L(qn&m++H_AU$8e=>~ zXIh-kpU2pHWMVDZ&QD)=PP_DR8JPQ-=T;ToUM!xzSYDJJ=FWF~dWYBA6*9x(4iUXJ zP>4fgyP2IgUq4+U-zowN&#HU?7hk@8UtCITG<7Syi6h-c`8!gaFbM-Ydq*%_epnjG z+AbDv%vKIx0Gy74=%p^P?E)*hi37d-%77InQBc4L9VhgXqCn+~j{18$)q@y29OWCl(v{$v*(4DLn8U y|4jiH?xE5YCU?9&cZWgk5sE+jS~olXm*Y2NCiJz(&hha80000tpYZX`r{2yiuF)@f*Kk~~wIVF?<|%Q5n7ZV{cL|x;ct6Wm3xaeUs!(V?!pZ~FV&wmzs)&$rU|2?1}F?Y MUHx3vIVCg!0LJjV)&Kwi diff --git a/graphics/object_events/pics/pokemon/followers/castform.png b/graphics/object_events/pics/pokemon/followers/castform.png deleted file mode 100644 index 33fbe7e48ff0859c6073f58d7a4483006e77fe80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x1-O@!-LWj*fwh zjEpZ|{!C0PT)1!}P#!Cgp2znUD8X6a5n0T@z%2~Ij105pNH8!ka(cQrhIn+oJ-0FM zkbwYO!jg!)bCquNFIuxqWYeM>m5d!nV}cU$x}RLnf2H%S)B4i1m7naNey+EyHu3TV zf}Qb4p5^~Ndy`9+%XZIx)8BJ>E+l?6+2g*M>3m%D2jR!9;rbDWe2!kr%E-U4rqOIu z{e_1CTh0kPwMtFI`2zxb)}@XbB@CYlw=l%KGB{cVYbzS^XcYx5R~Cx36xI=MS#jqe_w g>HwpozvZ8EE1mS?+P>4_Ehq>*UHx3vIVCg!0MN;*n*aa+ diff --git a/graphics/object_events/pics/pokemon/followers/caterpie.png b/graphics/object_events/pics/pokemon/followers/caterpie.png deleted file mode 100644 index af99246e6bbe4de4dd1318c1ad2e9d44081ad9ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)Kl0R$XFc^mgh681jJ@k5;Uqf*>|AD*9 zcwqWDj?{Q>J2dImK!}_v=?#rCwcOxbK4oQDPF|^vxk9`7H|eon{T@3JA$|Jv>C@+< z@})?>7w?(>okqoe{XYk?BERSm;zGs0z;EaC%gB!bi_-Au3e)2>@ZF1ponl7h9;3Kt2NW*cPI~SAwhnJZcM7Xeb5Y`Ej8opi{|E zHjrl{DHuGp0xjGbg4y&8X5~?#QCPEE^J%j#ijnV;?V{b(LjFV!q2)A9N>pGAQK4cc z(Qo)638%~>RV&cK!59n3I)ETt9v7lQl@$Y@HS-U_Y|T8=U$lJ=f_Sn=DU^I-2KmA^~FKorN5;anO)Xc2>5#aYrt=u&(N zqC*f0YAGm4LGeFua&U1A{(#WVB6V>vh{i%fRS0Cr;{Ri=QSaT$4|NfQez&`K_dfTz zCXJ$uGtM}Fme4CKYhm&3?*YSVF<_za0DfULj;RdG9+S=_Z85clx`OMn5wA+2Mx{tA zm%YhbG$k3a$d6l0nz*Gn080a?Q4FxGo(w3XH7p8r-ID>LN;G|_8-jkL?{j*a?Jqa^P6s#{>hu1_{k5kN9>=J&he5l$H; z4UWTb1~s5Ys_V2|bVZU;=_!0cbZV4L>bhlNC^6D|i)R7)ky-y_v;Wmovup>QZe)bU ziI!pPqsNdMRei&#`gum0;o|p-8}$j`b+qB%y)JUo&Mhc1QX?PJeqIF_K x{{D$kR;W=b#E7J*_Srx_@h|H?_(cDsyaT~C=!Q%gjfVgL002ovPDHLkV1hh=BH{o5 diff --git a/graphics/object_events/pics/pokemon/followers/chansey.png b/graphics/object_events/pics/pokemon/followers/chansey.png deleted file mode 100644 index 006c1e1c914ff50f33c694d31eefda533fc6ec1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp`10V*Ov}id zojYenHokoMbLGy94-+eaN-)8b5324!QO*L7$YKTtZeb8+WSBKaf`Nf?iKmNWh)3t! zE9d>24Mf;KnEhsd!NnPVFX5wwrtxm0dqV4-|FYZY#PwdZexy{tE!TX(m82die;dE~ zc0Vr3OSkx#UJVKM{hDqn{78IRjp>V9)4nffcyxT3oz5AT+btbD3`rZMj4ztale{%O zN}_Pv)2i)799)J;hqe@-e>;<@qIOQIli7?_3*S^d{r2YVlUWvP83V=Bqy0KwFJ%3E zXW81$%bG_RqCc}b3kw~p;ykUg_rslK>$7K0Um{vK^H8mjGw0ihH?A4qauaYo=;rg| zrH{?>OiTYs7B9{2eyhBGO6XU))tXbemCL$+RrK6;xSi$Urx6(Z>yW{#)zKZRb{#Ui zuq`U2&}vJ~nH93uzWnF2Kh*X;|9bOUvSo^r_u`r}9R}qG~xI5Eo_LZQ6EC<^N&wD^4}(JXm`_4ivSXu6{1-oD!MKmA{MQMij>fhDCve1r=VB`vW#91;dSu zO}Zs1+^jjoZPF#mKAX8loG%(7lOhpoi%pd##kD4*&8u9PO+e)}DfX%qY1V(j{SO&w z^vfpRR4D>Ch4Dukz3+S9H$Mn@Ki-f3%Ww#xk1=74Jj(wv=!%embC?MO*onB$gzgFM zu~h^N4m0IK`Oab15B%Nudu*-JbXQ=PV;_-chnevmxjkkMvv9D&fHid)ZuL}*n2F#J zGX&;#@+o=NR0FGwe2w_)D7*Fw0s56)vwdoUS^>|&x2mR6wF-u#JKq|J;&rH}3N>-BL{M5%aX%c3?0jtm zy!aQPzRbKzpm%BbdRz&_0pHvuR@Rst4A1k#Qn)JA&$OK|l~2Te!O7xjsZ=JCJaDV?cnUH^E?MZ)v9FoQn-81w%Tl?gXfwnPW^(A1KHD@OYVS9hS zg=PIgWVjYs%1{SfOk`9EPzW_oTY(3GYSEr11;e6qdPVTvcKa8!JuqAeN4(oTlyJ^lqWw10)UKDD7yQft4<|+b9hVF^P5qYC(X0Q?O2%rPFZA+LHRP)Rr~x ztxrB?%$4m2a>m%pA38UV3;IBA-_JC6uP{Pi!mNAE7udZ-Wp{ENRCY;9t24(6q*!Z*4GSN}-<;$Op zjEp-Y6(4G9-dt&@=^6R)Vj)l!8aQ*{(Nv%iXMsm#F#`kFTo7hdn`--wfq}8j)5S5w zqx0>gjec7VB-*5%ZrF<~lFs#e{6>~RvpHGYSBAfHQUPOn!51+fo3`Cs11!Ed-+p@j z{SoW0nGY*(GbvVodvkO1^Y@1$1fSH4x-hJqE_r)b-LGaQVZI5Xa%SiK4!0=yad>$c zv^H)1bL>jqGW8B~R>j7rdAske)yX~RAfWCZqu?l3*SAD7pd){G>*AbyK9}SL*YEJL zV~WwVKQ2_2VOaiFYtMY{W6F;fs{1WcZ;*caJmPunH6^(?v1K33#OH86dgwFf$m9)Q zjWa(LhbhU~iLFyh{PlODxZl0IOqV<^q&7UR+2dy2^srLa>w%lZR=I7K8F$4P*L`Z- z)hhZ$-0n&c(_`_6)86*AW}IROcUU=n=gm#k349_SSS23bRoDNUQ|Ik9wZGLs{1rzl z!;#C}Zx3sPG?a3QYI!W&Sx_=*rr5bxCx6J!V_pB)^XE(xFY_G%*5N0%7S&F?#`F7Z z$k~=^wLs%=k4I4pjEhzI&b^+kf9fKCQtNHb$2!dYIbyB?|MT}T)VL=wU2+z_28uaP LS3j3^P6G}C-Spfk7000000000000000##oNI00009 za7bBm000V|000V|0Vb6__5c6@+DSw~R7i>K)Xz%8FdPT)UIvAp1c!nTAbWgv^2a z%mCI8EX7WpRA@pD2Y_ifNs)UfpwxrB@S6c+u-h@!bM*u3jU()d9bi&%1J~YwlEZ4# zr=tiP1w86oo)>;g$SAZs&G;Pns$q&fwgcWzfe%{0h1oLX>DCekgy^5Weu|9(qy#Qo zWRSZXZd`9IxFES{cpYIM+W`s1hxx1PDfY|ONl7xIeV_Nq+KRkkLtOXlq1b^?OZipH<7WENB*PE;ElbM_hAyd}v zoecTRvMI(7j&F+2HvKR yy7}=N-VlfD2JVPEq*}CqR@pt2Gxuw^KdcY*yF-t7xk0)B0000K)iFy0F%$>zgPSsnldIw$IIWyqUHX>7 zEg~H{TMB}ioZKB891auP2Gh;iT^!rxAlpHqgOiJcAHrUQHurjoI5-IXZ@-t^%cbev z1;HkpY_iG!386ld42>c$A~U}Q^;xv5)3M9a#A}jfJ_~3EKAVQr=bskP;B{G|)Mqi_ zfzu=sQeD5drIeAx`!+|gX$-dT%cHyMwjF{Aa4 z6CKa&e+Y8fknxXqYtc22+5C-hhX+M8yVwqwEwRm>*-5ic-Hsb_5WCD7WA_n{1Bc6y z8SBqIKHQUhpE?{qUd!F?>e0nEk*_bA$KmPD)|u1fp%dG)3Ga0AqdZ*u9t4)ya;E3Oot~ABnx2e|jE$C&K!wO)u0@*ykk47*5n0T@z%2~Ij105pNH8!k270nmz&PL_~HV`W;Whm);n9y=YM^pbuKqDvRd_MySVP-n)H0t z&4N{zjn0*S^Qz38>wW2qWBZb~&$s0){do49)9I%XC#~ME*!)~u`^CxFNX=qtmObj_ zsY`jXlVZO=S+^$SjK2EOsI$@sXEsTG)bM_r%aOiv7WcuvCgTpJH-Y~oIT&<8i|2JT zHGSXEwB%a!^TXGE9oUiT*s<=cmK%4{CWU3(Gnf^lvmGMSgZqD7lz+Yiiuh9Rk_diJe|G58^^x?mgW9Fn+a000000000000000RP|8w00009 za7bBm000XU000XU0RWnu7ytkPxJg7oR7i>Kl+9{`P!NShs(Yn`ELEt@i=>6DQfM0L z$^>!)E|bQgcNZ7szCq|dM(R`cs#RxhY6+#?IgrISGoCXif11`;Uw!q}*KbPq{#ejc z1ogdh?&*~;{EY57olN&fil8oR)xaGJXC#t#MP*U2t+3^MFQ^X_O(|c9M4&s|lG{YO zE151xeya`k45yV-=CQK~i8Vlm7G=$}Y+(%?$~EePp&&Q=3KtK!$sk0`3Z6A+Oqsp+ z$%5ntMnaH_C6h#z!%~}3Heg!Qe5WsbG&QD}4Oif_n(;unYA%*HtzgNwFS{B5yu}J_ z&v%%kCq@odxoR@LZUifiAgv8D9>r1Ex&t6KKQ`AS{Kv)~qg$(H_6k8GSn+YvYz3+0 zQ)`g%dCSHDd=mZu-WuKdbrTURdDnh$W+a)n;~+)+3_!w5j^SR3FsFhg!*3Fm*sGI@h9ekAm$3Fu@&Q55zYUZ4$ zKXRUTu@U4)@`k8foiwK3tl4-HUOH#N9nmr;EA6bzQ0=hG=ju@Xr~BXf1TluN&NM}p Qvj6}907*qoM6N<$f?IR-z5oCK diff --git a/graphics/object_events/pics/pokemon/followers/chikorita.png b/graphics/object_events/pics/pokemon/followers/chikorita.png deleted file mode 100644 index e654b62065e5a80b431d35b0c5fa323f0d3a5cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*yuP>bLGy96AwCC zW(qPgGOpCrEZi9Q^5xHiHw%HP(11>uYYI?^v%n*=n1O*?7=#%aX3ddcU|XVx}mzH=={x@}w#TLVhzXZP@&7FB`##Htv1~WGG-8xqonjUtJ z--5v~RW|th)75k1Pl@hgO1f3Ga$QAM`mygC42HR~B2P{7r-l7HcWb$ut4Go9Ekz+m zEDk*I^Hi3a2`d+KW zRu*B#to02FSN2+!pSsud`J8%$-0E!we-y4ih-aJiCo@CH=0HM3MZ!a!3GCNq*{;7> zQ{-?wo8b<7g%p!b1VaydpY^`OjD0$}U-ql8f7s$}^zPcsV}0+h9j;c`e(J}?KQp|) zy(?r`ZBb`0@my3ZA?$bi*Uu9dt396j=gjpJfAZH)*})p|Yinido%t`Bm+ai2DeG)@ P78DVlu6{1-oD!M8bg_0qN=a*|~9n5fRZ*L7`buJ@ljb00009 za7bBm000ie000ie0hKEb8vpK)IW&YP#g#F@ZQk*c^pj#Au+>6&=T_q z8gO(HTuy`xnF`%Hv|9^Zq7~ob;5oTCIUENL$E~-VBAg)H(LZCBPAy3HZp{mA{pFdL z7E0j;zf(THU;O>_sZo?e4msqIhm*n|jI<1AHh)If{=q0GED+2~K`z^*D>pKQo6Y?N z1=7{BYzH|@W~>JU-Yh!asglH77L7@u9?4vZ00)ZZ(Fr4P>%P@MW=x3M1qUWNuGL6X zrE=?$iIHx^ui-Z$n8zJQwWEn8bv&?`Zv9Dg4bD?EPwC5=jBdA@%#0}nsX*55; z#~+Gp{_119t%Y;2ojbfwEN~dLkKw=^t@Xi?RP)Vq`0q3$KmOe})$&CPOyh1Q7hrvT z^A-#!y;|QGu%BsJ&~z z1(dNy@&hQyr?v(Q1zJCa{Z9FPvS0qR>pPwu!X|Rs3G+~~pkV8-``CV&_1gcOAEAY; U!lePS0000007*qoM6N<$f|Q9N-2eap diff --git a/graphics/object_events/pics/pokemon/followers/chimecho.png b/graphics/object_events/pics/pokemon/followers/chimecho.png deleted file mode 100644 index 336a5656d85458eed0ffa64ff822997281af7e49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*tm0|<-(N*4_aC> zGBQ>+&b)Z>Wn^Myp`zl?n~|NFiZ5UOytptBs2l>C);xF&WN{XFL>4nJa0`PlBg3pY z5)2HCLY^*;As(H{2@Wfvkxt$q2Rb`UE@a+WQyM<;wb-j`E!eE<&;ewkx znjkxXRaUEN~%`A~+_W~Ql85lAy)n0uW*xL;XJWp3Ymvv4FO#sV5 Bs@wno diff --git a/graphics/object_events/pics/pokemon/followers/chinchou.png b/graphics/object_events/pics/pokemon/followers/chinchou.png deleted file mode 100644 index abf39ef13689c60fcede09253b6cfcb058614c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP)FN2wx!C{!00000wN3G|00009 za7bBm000XU000XU0RWnu7ytkQI!Q!9R7i>Kls{|RKp4hfIIKaM(x9Oz(}^n3E{YB+ z+&Pmcdk`UXIhvw^y2aq5YrjF)t<^yaq~xxGvb21AoPu1> zp`9S$p&#B<-GEntCAe##s)?ho)~a29~ zJ-%%Ksx8+8DY4cp?>HF++!h=iG~aN4?K}X$XI4XZWNug+1m7F*--rqy{y|OLMd0V+ z1q4UZa2DO(u+$PPg0;g+m*j$V20acArf{8$yhbfGu?yjPu@E($Ri60e(V2)-OK^AZ zvWzkpLZl{C`2sW(6Y7*4qhJiPwT>**JbK*dOwPn*VhPSdmoZ9mjDoQV6{9w6GA|&b zi^U~PM^l~hG^6u5a-s1G4JhyQ{PWOZnQXQa;@vWpX@iW`@Lgnry8nzbO0$kh zv2p~-lk=WI2;=dRuEwbj6*D(HYYkp0!TlbG$!h%3{u6m=Ge+uPuqFM#Djh0ju9=(6 z!T*AKS+ec6Xf`pELtLH2dxJyv$YzXm^HrUAQ|nNRpPIKnbmp*`lu43Qr*)h1spQv_ zHiDCf@pG)+()Z7*uAyuuiaSA%dr6tVzTuRTy*7oQL@%qq1to6n_q)<= qPuN?KeY=BkyW9N6q%X(dztt}Re6HsV8}6V00000G=Qv00000THles00009 za7bBm000XU000XU0RWnu7ytkPph-kQR7i>KR55G9Ko~u8^ar#MCkruJ2+|?uXycI0 zLM4-lq?3!3Zg%QW=~xR5{)2#1J5(I~2MTpM|3QCD?*e+?U97d(4uw3(aCu+e_udN$ zLOF8e$dTjUqW+5T*#1R9!Y(WXv43y74~^XoXvTJZ+-Jk}J24;ogJJXWYXki^+Z}^> zOEIG^#8u{KQWiJLj^_|Dq#D50i@}pG<}2`7j?BU_tEB$|?v$bcn8+A#EU#{^6A>vb z*HagwGOMHk6r*A?(p%zz_|kTvNK}kEYo5#qk>x7NLcYNRjUd$NC8J&o(9J;%4M6^& z5ItLx7#S)H8G3k~jtP;py z(M7mQlhB*k73+DT2{@;~Eb_JFxS+!kwKB+`e=H6O=#M2LQlF{7EnP|iwRQkMWRq87 zZ01X+_XKls`+uKp2NZZ|im`(zUsYE>h|pr39R; zi{O$%=qfGT;1EcP+|sF2KY$3)O`%}h&Cy8yi-Ic5ag}g_wud*6r$|&V}*4j8$d7EF=MI4T}mP zPl?&J^Ld>ME%A|o&0P5vBq4aC!N_@42*0?tm9-ZQxKI~uC5w4+zbpg}rPOICguL$7 zTxK;@!a9O-1Bdpyf)G&7RN%Of4+TP)T`(6i;q|mGM7qd4^vu7ar%INDT1s~z^yXtp zU&e)Lzs|gP13>%!b+@79xRA4JKxoXy08GD;MZ)|{zanzDhWmH@8=~Zti#lyXn5&_8 z+AtSgmreg-Ul7V1X7Bdlevnf#z|gjI;Q<9Vf=n{JRPdJiJ?w} zL-si18RJRiWFmZqGKV+p1iis1uVk&9CuFzyJs(WQg^y+P6^^>P!J~NaE9^mC#UPlr zo`jmr(ISBvvW_uAO2)x+Y$7s8A;n*_{O8^DC;sDn0(7*Weg%>Jp#T5?07*qoM6N<$ Ef-*S=W&i*H diff --git a/graphics/object_events/pics/pokemon/followers/claydol.png b/graphics/object_events/pics/pokemon/followers/claydol.png deleted file mode 100644 index 45cb9b9f023554a5e38680f5b01940ac501cc6b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)~jiFsMUNqO11S?THdSy4fWDM7ip!Rd){0RaJVSxEo@00000@ADTN00009 za7bBm000XU000XU0RWnu7ytkP>PbXFR7i>K)Uj*SP#g#FO4bZQQ7SmK2{lsBWF^)E6N0SjW^g zRINpHn^j6|9+FVHGc(kzwazJxNjV=mJ4%n~`;@4eq!)BME!Si7Y^GWM87kJk=lUkM zBa2KyoFvmw#rh}~f>BXoi=EFpaRTY&bz8;elWq!e(s^9GAGWw)54w{M9Qkb(oBkPe zx|5+N7a)rZ=C9EkzdHDJT5dT5 zEC4Gk=V9}e@SxXwXEAvr&K-xBeY3IFDEn6KSbpv9?z*ehdB`HHak5eFgxq?0!g}ld zS}!bn-A!G$GE8?FRGpmxfVzP}SZyJyJ3G_E1sv73i~V^1ffdJo O0000EWic{xe>!NC9k000000000000000000007!~;;00009 za7bBm000XU000XU0RWnu7ytkQ1W80eR7i>Km9dVTFc5~3XxyTG5%y*;9OWrjY@O8> zd4f~gSh<02B~WZ?6v4c0#`c1ZW70)RvA?tu-`M_VY!6G8J@n8+5B(p4a{G{Ct#7-` z>ilDZpD(~GZaG}bJr*rBd#tt4Kd#;|<}7=<5(paWUth{3KQoizYl?Fsh2H@dx0p@n zE73r#%PzM}ZJKMOSw3Aai(AY##)imC%6+yS*{UDNg!|hLAC2SG9m@p2*v&wfPW?H}85DphkB2hBHBY3mKll^cvQ^hkHC5pqSeAFri=wFTSQLi@n~5~_{*EJd zD>$TrgR2~m%Q&3gKJ(AN;Q$)hvvl+J?g{Nwn z8?&ppF=?CiVsdR6mxKy{bPMaEkgcHt3=_=g*(Ffe5(Y8HYDplJoKc}#6FAlu2JU;+ z_{GD_37Tz!yh5Wefsy|^QL<^|-Owd8?B*-d8$&e@Do$`Wj1zbk>@J%u$pTSh9&jek0 ogz}BS-v*;8dGs~=Gw@IK8%A$vBVO~Bi2wiq07*qoM6N<$f_51mk^lez diff --git a/graphics/object_events/pics/pokemon/followers/clefairy.png b/graphics/object_events/pics/pokemon/followers/clefairy.png deleted file mode 100644 index 219f37e4c0ca3e2f3072c23db8689624111eeb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpm}u$v^5xIU zNXwNgS1t@p+?m<(5=-DKc?KzH9->jXxZBMdzlhm0be&Mkpk5VU}w>Oqh z6-zol&$jy8pT$>>$H&-jIJ0f?onVnaA1A6#P+gPt^GaLv%;y4`2ZE<*W^~A9J6*q2d+Sg7=HU4tU(HvU!(%Fg)XZqgkS(?6MM(&EKw-zKxpjd)B3@ ziW@qqk>^-ruiVPI8+f6ivQlZmHAlvG?Ys*vw(-uG&bz}$e)<-TH(%0zuL!lRKbs$X z=XBMVg0eF~VTZS@&g(OLKK-S^vOQ~`{;OQ@SyIhAl2^g$MndV!H_H^h2W>bc9y59A z8Xwjt&m@W&*C#gZJ#+d&dgDidJxXa8rz|dQ?udLO`FO*;Y1NV@y@tN?zl2=q`zx^3 zq{<|b`I+iY!?Y8Zrm;A4iZ@GkeGorZb9SK`*LwHRz<)wwHLE|J{p)l!H*TKRq}k7w rzj|lYduM&qqy*YWU^Mr1 zaSZY3e0zCg)?otywg)2(ztSkMeD{|A z&kt17(#{L^>haIuTmDk)r;4GR{K-pis$CYJu5tcRzN+r_ACN&XLV4I#Sj$&EUP8Kf55+d%n8Q%Imk*AAUW5*ZhKK{JZr% km+r`yh}>}Xc-4Qi`&+Z;HEF#(S_KMcPgg&ebxsLQ0NVV?6aWAK diff --git a/graphics/object_events/pics/pokemon/followers/cloyster.png b/graphics/object_events/pics/pokemon/followers/cloyster.png deleted file mode 100644 index 4515f8a2180c5e6e53789b1b4f0e788ded2b6a6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1096 zcmV-O1h@N%P)VL3TD>FN2wvFVXn+a0000000000000008gM_x00009 za7bBm000XU000XU0RWnu7ytkRzDYzuR7i>Kmc5UhMiju2C^Aat>fGK{SFTKg2wkN7 z2PZ~&TeL4|s+?q*RVwx{!(-aW(ypsWXy@?!l^Ny(xOKdhlQf~)9}j--y!qR zn+yM8Kgqwf@uK2yp5Ri*%P%V+^%b4~uf<;^Ac)mv1*{h36>jr@WGkbFcI|vwF$Z<| zkwb-IxWaKB61rK%cTHP-wPMbcs#nqJg%m~P0PBVIZxfI6ACf7-9Crz@{+o(JrLS?- zE!JTy8!n>&r@q@9gOrtwZ3yaNF>#m@6iYnbVGA~{uLN zc9Sln+tY`ts^0aVs1@u!TRs~BPGh52t`>qV031s|D{S?&RI~8@#Fz!2Dan*A-4Wsg?aewsF zRxt6P%kX2W7lviGEVQtoF`I=?H--o05*lIm>IRR?I_UA$>p7p^9vdxum^bh+wd~?g zH@rL#Y8HN1Sx)C2H5~gR;tA&yAl1+x#byzfh=mvGmMpshwNN#=YP^tihHLZ<1hE)T z$J0@9-$AMR<4KJEND*q(!gAh%iDNJ1Y#4A1yzqO+^F`Pwe!@OQFl}6|{Lo}SYk_l71 zT={}ao}Ll4c=@kk9P2g4$dmeOj7VM_`j>3(UHok!HC~N>$(O!=?fMJIOEK(mzYXKo|z_qln?g1W_9tnhXs>w@%`s z=+-&kKy*zzGzeX~gu0~`TGO~hTzYhK%9suoLqC)~-h}%@63|V|I|P1B`#w)DMW~*7 z>Zzxm|2hX(Kl}mq*|o^>!k!$UIP6;F$^h(}W=m)z8djMInS6j~2%a|t!}Cu1kBh6X9X;;CoHtQ+qoQ|O!R2tRQPGRdMWeJyIb(fhTh}> z$usDmSXF-1qeYn&*B$WpWW$H!Q>W6?W~m$Ay$~)N#&v&h*L9?O@+>G}E5VaaI`000000000000000A{dc%00009 za7bBm000XU000XU0RWnu7ytkP&`Cr=R7i>KkU?wWKp2LDq}~I%(4K;u?v#3y{(woG z#@0Pqv=&b-NP3s)er5ka&kO#6g%sI2?`{8FClhtP`6}5G>CN}#Gp~8xNj&e6Lk>CQ z!)flx|INew9-I*wWu0_%%jvFT*o;w4CO-_S$SeKhY&~gR{7xD9; zmDlCQgZp-r%>!yQ%j@#_?^%etcU)wsba*{(=%09;a{0hasTr@}iUFSpDVGl%t3M~a zf-47J$-wK5ftJc0A?1pJ`23fW$VItGBA$Y_L;}Of_8?)}w+d}WDl23Dw61^=`IQcp;byIH_+g};fA z3fyn>^-99ai?l*z__-f$`ZM?e&&&=OK3n%p4s&sDbxf!MX3vY3g56CcB$Ne<<(i}3 zfSodSWqZTPMad#s<`X0o*TV#}z7g+sCO2IxTz)S&6x&{m|NR|rgnH00U-w5@|MC{; zj^-B=%tkRulb&aVjb3^=cKVp~vF-hI{taK)&(g8;0y>Qz_c=Zgo)+RhirhZx*uEdR oHbD=JkcJLc^zL7G9eifq03tfj%7Nzl*#H0l07*qoM6N<$f&!`$ZvX%Q diff --git a/graphics/object_events/pics/pokemon/followers/corphish.png b/graphics/object_events/pics/pokemon/followers/corphish.png deleted file mode 100644 index 00c485b72de420b9d940d09cc3d43596a2cb7cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)Kl|N70Kp2OwEUDCEL=1H30-+)cQoc!R zMJ1jX0%JsLndEL_2pw3e5}~6oA_Qcrl$yvMERb=MyARd(J)iAM#h;<=mUnTU+^n7AqGz34sb=FsuM({VmXm#Ycensj1U4drdK$R3elbp9QWD?F)%rE+jMr1pX&`}pA zY{3L0gg|<;)f|v+2RBO{$E717A|up+$T)x}c6k!n0mxBmZGj%{fWQNp5n>=RZR{Lj zL)CE?g%IaPh!?|+cPMOJggh;8AoA3;ZYW)AMT=rMIyXWL%=lNUh7IFkbs2;wZ!;kV zYF=Kw#dS_c7tN_#`hZ<=W8Z|k-QZRI$ML2SVxZ>A?Y3^CYTdgM;=<2_7^r!_rXPx_ zSeg+6GtsvLh}!skFTUUVMhJnLSuO8c@Ep;1j8F$6?`4CNZ}k}=@R-d85c;LwKdu)- zwV~O15}4yS&AkE_G@E07|KWZ{2>h^P9hnXYm)2HSq9?h+0^bjoBwIkJ!n;`Uy z_Y|17Qr~`W2@ij^wnIBWbJ4;ibDG>Q13560+4!2b!ducy8fFmKQ(jUq_J?fT`QVG)o7z_lU}gp*E3u_8cn;3N;MIjNr{rSKtf zxqIYVJ0MAL*E@)1xq}!u9a_Sn=SA!ZP8#b+PU04~h&ua;3#nFsjHyzj{2hnSz|s=J zQxjR^6gdx&e4!Rm>k$d=U}`yA3m+>xP$^|k(43FsRoVYCdaaK;|3m!-sM5b-YdCKy P00000NkvXXu0mjfFmQvd diff --git a/graphics/object_events/pics/pokemon/followers/corsola.png b/graphics/object_events/pics/pokemon/followers/corsola.png deleted file mode 100644 index 62c09dd48a8ea71c889aec2b056b740933b11038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)G`QaS$QEr>4Bl~slnN4fx*$~000000000000000VD!{G00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls}8xFciQIC#=2w22JSF?e3t%Euje8 z`UtmmFmBw*Lx|&yCCC<8jqKOCG?1~}aK&G)k`wEX8*^|_=#aPltf%*T(zES(*SN+t zu5pe3B=QmCY@E?Q$*1{+`iD`q?cah!=A?}{JPGmQvS9l&c2@8)A#Mgi(z#tBou+!& zniJ4M35sG^9|E3!ms79*s~*)EzqWHN(cr4<)vhG+607SJL9!McTdlq8VOdIR3re|B&?|?^mY!_4Pv!$$&=p#Bp zEOQ}Y)*GNWcE4`QDNr-hG5f3cvfzAuQHW)3TU9#w#73wB3Enio>M8baKJ2^wOrsR; zJ2nW{RabT2Om|~e1;dBmY4?##v3K+4`T5sd?=sU*UDwU6>lksrVgAtF&!!p8Z{OWp zd(e~Qr!$bd+1;(x@R<7z3q(BfT9*GT^PjxH|2F;r(uDrFd0ap*00000NkvXXu0mjf DWW+L? diff --git a/graphics/object_events/pics/pokemon/followers/cradily.png b/graphics/object_events/pics/pokemon/followers/cradily.png deleted file mode 100644 index e53d6af1c5ac4884544cc13360143cb5d559de99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1085 zcmV-D1j74?P)KmQQQrMjVF6J`_Q9=onK%szS1KVM%>! zpchlndde=ry(~3**c^HiGVv`71=EAF2QkJv2aEW!U=Yly6dD|)gXDF*@_Hx~dJPo% zMLN=Gq>;OFmO^hGZ17{vypJ`1elh_6w-0J+$lw3=`n_#E_p$D;_3ra!&M(%1p9=MZi02Z805rq3srAe>tli9u_uL`CYCxp!Q zXf^=*nNZ9zy_sUXzRDxY3<=R+o3Z#cph;N!)EP;;P+2D5b*(%g6J}R&ZDaO&cJK+# zdI;vg`jQ!5<%0br?5We21P)5RL-G5CD|bBqwby$wp7WJdu;5f!OZpPc4>aDrp7QIB z9|@yk51tGO@m{V>i?a}N-WbN;JFiOQf}bIvLU`ii#o70vg(dV6~wX@lZm0LA^G$J$4(C3u<$ z*MeDbT0~kae~73)=S)aXpSR&U(()T_u=%G`SkzNiiP^k|N+GZkVa`c=`&025P|jIG z)M5)fn*NzzUO?DV+~1@D7^ru5A;1zR3tUv=dh4%m76;({tRBKfI0~f8lmg{yAqjQ| zuyz=I_lMS~VwHyVP0*49LCY^aadro=S!g1pYt_uEQ*m%p?iQ8eLjq{Rw3@*e-3V$2 z5+hpTdjeDh^(I7N6$8M^`(t=e$!tL9xExSsz17qg%}NG!7Kfx&-DWo6_s`1#C1wX< z*_HoGZF3!IEj_GeHh|J{K$-vf$8n3G?4^Q2+n{0000000000000004G(I600009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K)G=#=Ko|z#8xEYcfzFCx=oSbBIvHa) z$XvmHP_h|wscFa1ki$Qay$wYCmGum1zPtF{)~UWzo_oE|Qz3-(>C>mrzX=WNnufRu zscUryw5hueob1zeh?`jZG$V*j-S5C{k{m+ZM4BKrb=P@JB#Gc5W@1T$V=1oG?#^=H zMC?;>dnb2h(!ASL{svF0yG<;b#Hi`G5~7@iout{<0Xl z&b_7WfKK-%Z;tzFa$a}=Vyjr%u+x1>FdgJ3vkm8%t;kn8-7@qc$VVY=YqvQJGt9IY z#^B;R%MC}{R=bwR^G{{7W|@d__~k8^abM{p z--o^QP0UvgtXnSG87;tKgJucdkTV8*&e`oibOiooWMcUJt^(VP)8R_Zysj0d7*;!dB36VJ=`DtNUQ9(J8$pHZY2aQfn00009 za7bBm000XU000XU0RWnu7ytkRHAzH4R7i>KmOp3|K@`TfN^uaDYYxsPkVeoVMX(YC zVT!mH*&=L{5Y#51O?sPvt<`}DXOk3*$ZTYryJlbDnky_8lI9vAY$3L?kvkJ-62>=w z?sjg?CW2^{*ZpSZeczk6?{?2|ZsI2XTRgpn|5jjb_iDa2t`qp@2G81gCA+g*zwxyK zXt(u(Ziy;BDG8QYB{bXH;tGDZpVEa2o-5T>W*Kg$)2=U6volK5L0-Yn-_jYeGV5D4 zo1MIx-PJTr{mXf-xy2Lv0wvZ7ezU&oS947YdYAKDr?b$qiYc>BAV2FPuZo4krJ$8% zSdGh8y*?sVF=bW}EuNfwzq@xiyJ>Cl9#StZch!au!J7#P-q=jkCQ z_)v|YGE^+m6c3070BIGuWmXAnCnf&NqC&$;uok8v?@}5XL2ZZ(qx}KSOYO%Z0Q8IY zmRKdQ4=GupMTMHRU=2vbDIs2H1krFLIpSd}k;h*}0FhPiEIUq^dYm4RB(f@0%vJ|@ zQ#S(22!^KxrJ-gPL5%yKPNm?q>1CD)UEbSh1)v3$q2f_jRT!~EwWMVP(a>v@Mt;ct=$j1royh~h=Ux}<0q7P0EuS=(a>jNFdr~uRh#D@~>?|#1EO_wk-a1o) z(onO=mgN4ta0E~q@xB%u1{rYVe(qk#mJlKcO(1T7?z>#D*_jVS+*?}?`mq*7L&M`u z(^g>E5(eTz8}dXl*Q0noARbOd61Q*dO&5HN9VcVJgWd-3Ye6*BoQNZR00m<~8J$c9 zql#69ZaN_Tn8ulSez2co5gYFxUXd~BA+ZMoUjtaw~+OPRNrmk7Ar2`jjY$p3`-qhXN!CW h|0qQ1ze1U-;};O>yb~%NZIu83002ovPDHLkV1mtIvS8Sw$0ij88X<0dGDLMJ6;pyr5*=ecq!C^r`K>z>%zcj%100009 za7bBm000ie000ie0hKEb8vpK*3C=XU>pbV=TKT65FsKm86HeoVX*el zz{X$)g(?i@VKBV~qSCky6;Eav*>RhL2~mgbBe7Sp_z&zb@MK7NE*)C&@PJcLy!3C_ zlb9!OOX@av*kQjz;ggr|_sP=~3c&yQS0;5Umm+7QrZYBj8{c#_UC{Fv-7R+YMELAa zrj@Ouk**deyZPpVa_dOyYH_lQ;c9p}Q3H?`?+i_K^N~2&PPP#VjQSS}h$yxb4fj?_ za8IHJAhXcgS|f9b2GgWPT2g{no|>V+sOh{}IBD#XS4&Bzf!`tp0gn#89wLYS$*Adq z_a^MXXFCa|_mFJ9H3H(Dnm8mRuz^w2zyosJG)db`Fi3Gj**w<|Vx1ameYOKLiXL)c zv}N)^Q&!vBQoLzkpHK`Gq`5w{&JD1qxw}TlNJeX_K?9(ufr4%2?RKyrWEwb#5DT!R{}ULrDWY&7d?uyf5 z|4e5eV0O7<4FL8;bd1gRQM+yE362EP*BGk^Y1n;@Q{#(5;Zif%<&HZ`7<+jDEsN!a zDb+gwuMOe@!4`&RJb&fy$#gFZZa}zXg>(ChyihDirW9|uE2tYqp3i}J zSFPUrhN__gyxvBr^kyHgA)&wuH`SS}An=uCw=m7j0mgQlN%gJ)2&~yr+iLgxfJU4GuEw}K%HY=oem_XBmf%7Jo zKyXr{9OwU+p@r1rZXv{2?mZKVo%Fo(Te1rmZL>oAp(BA%Gef2grBb5pqKjGilom^F up<}l&HW13-H|OFsROtA+@DBt3+WY|WK@CXRFz*-u0000*H0000000000SBp`K00009 za7bBm000XU000XU0RWnu7ytkPp-DtRR7i>Kl)p>EKorNb+?J)FxCb1B4#E-q(d=EL z@mXxLilCEd4e0Ej;82`ZNXC$%xelcvQ|^y47iseD+5{;$2>EWG`|`f;y$d-_>(r@J zr%wMz#LMhfcFblbAbD#nG!B!GZJC^gv6Qc{kRB9Tv~UsxVH1x-#_-50|EfU?lOSMh zjuue3lq(A2?N~I!fhzwLh?V2*I8VgLhn1&txz*nF?dRpa-Nc&9iXz+qar%-Jm%gYx zmCL~1)AQF&&u(JPVTDX>Bj>Mo3P$?u+stIZSY&Tza=ar2s$44bX7BjVB7!~S zA2IfTeZecA_e?fGfdxlO13lsZIr{SX9DvtF`ryj<->@$@TKVA3PjDc()=X|dhUb*_ z>#jOmQo8?GjjT_W(`nzW{aCQKV%?1oa3Eoh#N`Zzk=21@C>Ux#OAUjL>IM^P7*=(K z8FTtL%{5brMIr^TP#~lL6yG^Df%2L;g|zmwp=05+iwTuj1o#Ub@Bu7z-(5n++(>G^q4k)bg;>DghaxzV9Kmc4G&y zPC=E)Z_rJqQzG!#p~#$}=nJHKWJ4(KQ}*(ovXchr(k1j@Q-?g?xfDgYC|=uZJ8C@p z4eY6_|74IZ^-py`(Zo1-_Ba2h4PMfPE;t4NtdAyHi9c(Q>nERB(&f@879HSaoV7kI zfqXdgW@QXw3?7g55#YiZg6?D+uZ#8LApivqG67=Z0Lb;GXF=yX5147bZvp_s{1Ha} z3{WDH0keRfg~S{K!08UKin?qsd}1xzWhxulgk=cm3OV3F$(1$3-X}Ic{T!#;wpd2p zr8bGxz6k)Dh1E$nNh=B38%&fl>wRK~rbhs$I{+mX8DK)O@T}7#fT8w<2W)$92)MPQ zl-H?L187&w>9RF9)+Q#vRahYu1D>%FpgX5T=S*8by~SXFdTJsOkW2_T82zkCfF<*Z zi4_6;Jzbe(fP$;r?>O8kWv|u7$|jaL7y#_91oa2j+B*Vvjm(|eH#{UJRs_7i$ARn7 z*&*wn`1{A)F-wWPt%xI@TF2d`&^Tz`_{VOsvK7gehs6E9xejLa?N(tw@`t|G55IKf zw@g{#`8VwEWbYry`A%qR3!M4^#G{JzsZ%MjXp`YP8cG?n6)GebUmqScm*HY1Ohw%L z!Ft})B!x2-64j=nDkb(TCw>t$7PAwF?^#I(>*6e8ZAIRn4l-5OTGy4Z=t-s5XQwf#iG4XiM%&KcSB!F0ka~75#T@ulmihQgT2Da{LmV>Qm;-77k zcrqf08yQ!Sdd=rx&^iF<52m7z$^+tS3q7E76>V8atk`Ig#0?}sxryg&v1rzA(QNO{ za{$q~elopQlk7GZa04RV_i}TYgeL%Hwx#{?Eqpf}m?sASeFYgHD{kQcKA{I>x_beI zqdpz^2Y^B-+H!s#Y^F(g>xOyBegS6s{P<5msAU8IPH&00B{QKM4Rd<_el4E?Knyj4 lxR(C|D5rd3k9m>FN1FX^E*RL2<$10RaJtNdeI@NdN!K)-i9>KokIAtFi|qFHxleq6;7)bxfZV zFwS5&3pIGjK$ZqYDuIg-T?&Y)Q#-J>xI^7k-MUnW#pzI9hg2yNrBUZf%q*ztZ@@h( zch@7AA|aUirhN9h_b$2fIfii=m+`;Cy1;*3V7fBQJtbT9g#|9KeRBS$>OU!1)!V8Z zoyc=moyF72P@DB9T3aWlKYJeyt+N3~`$HYpYrf9bkJGJhas$QLfTKfyh;5v%?doiO zs#dq8FRYqP80)q65ZkzoyE-#^)!Bdp-03c8Z9j(sIJ1L&C%)GJC~Wp`s%8VOdx-A1-s9NLn++I2=Mz})qDLxlTduiD%JbN@lG_i}H5 z&Q`1n_uQF9eKVPyqcg9?J|vm>lR%OprH#bt=R@XxzTHD8HY@ymw0i_oTfBuC=3mA! z@PcN->;=5w-SitZftzIRH#A7vfOf&2bw6GvWD| zIPd7ZSkk<yZhis`9>EU`6b+iQqYqxm;?T1$PLp7{PPnKTZ-jMv;Cd_Hhuy8)?@VWD`V&Y O0000 zefsq2^G`zZY0C-N zCKyWpsR3HsQkYbLL==?W9GurjM+y^a0#MPxew{Ncysnl>Fw9f79hLSVlU{kB71i@U9*D53j2?c zl;{bOJYdwZ4g94c#Iq%q8-rhFZnwD|L;mmB8>~uWXJh2cr zuwfj#nSwz&RalR++2;A89oFNUaPyp@)3cC={Mu4E3ukz4?aNcx@wThas~;-sxf?J~ zELhKp$Gi*NK)?gG{R?P9s)vwITi*oTV#JjW)Nx|z&2ZkMEB4-+=BGrA&!i>Irue~^ hFF!QjU!C+H@*Czh^R)5dFzx^V002ovPDHLkV1mB*W0?Q| diff --git a/graphics/object_events/pics/pokemon/followers/cyndaquil.png b/graphics/object_events/pics/pokemon/followers/cyndaquil.png deleted file mode 100644 index df71eedac9d1eedf2cb2bdda011ef0175a2c82e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmV;)0yh1LP)G>fsQTfqfQDLE>DJeNYQSqS>VLuTP00009 za7bBm000XU000XU0RWnu7ytkQKS@MER7i>KlQC%9Kp2GuA}R z=X`8+0B0l40nat6HNH6@9F19NXkByZU}YVv0~_j@4jV5Bt8}!Oh~p?Mcd;mrMF4P3%>95#82^oG()91xd@f*-U z^ZfR<-)dyTPPevFySI=J&dG4YCTTIP^Hjmwi=Ex%4?IlM^#=BA*AMo{>^OCvs_V79 z7Kk(^+y{+ZLb`C?C&X12E3SOsF6&Ks&F)qLR*(AbGq|wgc8|XU!z16XyrB91F$i4! v`Mxs!_2bot+J0?L{@=`vUTr$J@Xz!c`qCwmitc1700000NkvXXu0mjfwzED+ diff --git a/graphics/object_events/pics/pokemon/followers/darkrai.png b/graphics/object_events/pics/pokemon/followers/darkrai.png deleted file mode 100644 index e52ce80287374c2a71f9695312451c34e5e3bad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmV+-1l{|IP)n+a000000000000000oYh!s00009 za7bBm000ie000ie0hKEb8vpKmOXFVJP^l;Eas{%PC69?3bOth9a?lO zV8zI;w0NdOXi7E{LsaHfo4eHN76V06eah$fBI?Cg+}|K0JZFSa9m`ThlZfJ?7IyMth5Gn4v>~{2SR#l0kpo9T~+-$Q=qc zdd%B&*vZgrtK-zW3G5xZd`|8*r!m=(76k5cM!{z=cDPOcjN7R*=a71Bp*sc<{Smr( zuERV85jo}v_h<9r6$Yl!rD1sV?#x}GpHe0w`x&8+KBP>?X{{57IidIdemcR(VB!r^ zRHeWDC5I(^26j8R-{SsR)1Y|m9pEFf+X@xI(@8LJh%V|8g$CQJpy(cvy@^@qC_!o$ z3w!J&3EhcKaI2DF$2vLCbmf*-1cC#IOuYkF2<-C4-71#H*C}$SAE_M`CRH`C?W$sK zMTG`Gf8M~NbPo6~vU%_|FhJj9M$gb8c!!C>^#hrG+dMScItfNj{$}lNjcxVtZf)8J zw{Y7=uG=eLBUAl%-)!2#gew!QW8tr%x}KL=RwcnHle)dZrg{Cgx(zj(FqN#%FS6(P zh2aX>mWi2k8Rr+T-(;tGC)n{->MFDQyt>amsl43jLkz6^l`r$#}IMREM}Kgt9hIf`Oq;`WT}8sOF$PD1DHrv~1C~ zj9Ybxt7Y+_6)Fh^E?H_*0+uc<*lINceTWGtJkFR34ng(@YN}@eir2zLk7_jeKdu~wQ@UBfg^X@tbEtRG(i_4955qCZYd$1WrU3Xe3sbA6NJas>MDtS)vmuEu2Ucq;|kThbjf2XEMdCdrNA&mkn>!s??8RB$2sGL9Lq2L)5S zSR_nI4B`(K1N(hO6oMRKeA{A8dk6UXA95$DpJIwXE;z>ipTICWGUhO*D^sTOY5x21 cbc)Bv{|gl!w;a+E!~g&Q07*qoM6N<$f*0oM{Qv*} diff --git a/graphics/object_events/pics/pokemon/followers/delcatty.png b/graphics/object_events/pics/pokemon/followers/delcatty.png deleted file mode 100644 index 9896fa83684d545537fffe634e3358ce596d95aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmVFN3D(Scz}i2wiq0000000000000001)Odo00009 za7bBm000XU000XU0RWnu7ytkQZ%IT!R7i>K)jf}!Fc=4LOFkKixeDs)h|C-m+OnMz zL2m__fr*3QG?`MBChEti6y@YC>M5%3K4pOzFa(n2I#jx62|w)T|2Quw0KC;({XZoi zF7XxW*clMMay~T2nn>N(2KSy9z2YKK#jOF@6NpaN){tQkwZl3t8lb0YLO{Vfz=%(Q zdZP6jAkq%(x@<80RzS|$F)rUSigDEIatTiW{V4Q2nr4Hp{*F zhxx*f%l#rwxD-&>%x|c~>a~8_TR*CmIj;v4PKa+3p9&^M<>JJKMS-DOKybynfph{y z!w1{zZU!8m$VbKWkB0#t(!lxUkVx>|zBVMb{>;`l3SZ^E z69&kT1S8_h!(OtVEEzEL$2Mb+bs%>&j~^*qH3vMiuFcu~F4DDr8}{sxIorCsv@5&; z0LO@KC>#$ONX}xEztlzwbsK+kx3f_bSNNR+#L^@MEr2GNN{Zk-5JjyHDhY{_12SG|1NNl8iR>G_!f0m&H|000000000000000$k$yO00009 za7bBm000XU000XU0RWnu7ytkQ8c9S!R7i>K(=l(;Koke?Gg)qo>%>aTQc^(~V;P}R zrYMn>j7*)aM5n;W0E`Z`qH~xmMN!^}vLG{6UJ(9roSnq?eC>5WVnKO>rJr>7fA7vV zA*VXksZRBuRLCDUp<(gle``7(*W(luVkAwkZzhkK5WVThq)psFF(C`E@~oSLT5m){ zTkBgliE*H6LY9+N{yX+Vo#RQ-aH8|uyY(8!sTN0uZT<@qttkxiY_iq3k#_;m#HvNv zF?@?*+0@x!(>!AVdDx9RfCM*CEQ+rIV7(1>CQI<%Y$WTB#9I7asxBsi4s5%L-b^&y z1RBQxqZ#V1y4VmT@gfQIX72&e6)muzd|Ciw@=8=60&m{c8wk&5Eef;6+Ftz4W zC+%13OYaUcIb$<4v1(C{?a!EB1(NI1X{Yj!RhsTlgPN&7eLe5UH0pZ{yO{X9xHVG- zI;CBC!j{iIq^4Y7+Br0cMyu?KRmUgM_@{@xPaF+W8EBN2r!=m_JCz3@r1Wt;A3n`& z6vzj;V=E0Vb}eg%uFWcZF5MAqlN}& z^B(e>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkRHc3Q5R7i>K);(+6Ko|$`rx_|ZNI_&M2-^_4bn4J0 zu4z6*hjSn_Lx!A+L7)z`z@U7PPA5Vmdf^Q1oFx=86c2$A2?Q5nIs^pvXXu^Ida)wA zl+vlaNx%E!=T5rQ$pHV`zth}5F=ESM-Le^bzwrJVqnp8U{hC$#fZg@()0IXyc&T9B z*@SLzyx#rQ{)CrDuRHqz#(V4CAFMLMm{beaEmwrX5aYfJj5XQtT@p8PS~zK z&${J^`{5DB*k*XY(Zu#5S#ac$L6c=cKUp4N$p9Q59KD@j2OrR86Neo2iA|g)qX{M= zDfeaFs>?helgXv?##&+F5Yi`(lQbEfUy^uOu29{ojh`M)&M)i^U12UFLWmHJK5Jdt z5h?_DSn}D;xm3)04=Z=dmgnCq!Kra#*fv-SEV;ApHFL{8dPi*~tp# z&I)F^AjFCDoE292*+nlpY}0apnjv7Og>Hi{;{=&jKxM%W)rPSunB{&%#3;{Asttk4 zH@FX*07krCIKCAq0P~b2hfLM;#^y+^}Zip0Z-f z3s<%kz)Ymm?Q|yY6attJwWH%ZSx|P(+dIDSb~}q4O?l=Z1)0MOE)vxGUKG@xR2~vU z;Sa`6?oY4ufQF;ZZBl%bbjdx&y(g%R7jwiq;f-{H`6)%^9b|@Lm194KVe+m!h+IQ>SFq_N zxl!!r`L5F|^3p1o&)iOVbxCXXg*=y2`Ett_OkE?9YIfgPuEzC z2Guiu+2dH>YsI`c7#D3uf#0pM?^54gWh2RM8!CSAzeOHwAzfon+FfO|{QY|1tgo`I ie&6-!KK$GD7u!$wbyi@K5&E?N0000>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ+et)0R7i>KmOpFUFc`*7mIDm|)8XKV3(eB4b6ff~ zbX}SuLwuz)kajqMK>Z+{bd;W{f)Bdi5=t`^w~!?QgAOtU4$hyU?<>pyRJ%i#`Mkkcg*)S92Hv>#y zJZ+`>jFrM1J(7c**uVk)jD~q*<};qDG*ohk=g3pu%Ou0GsndPNsmnQimC@<^$1vlf zekSWnO5;|5$58vQAj`f_=f4ISTN3y4`N1Wfo|?KRK0_^jinrN1I}#UifJ?)EKF^{! zHmv}Uq0*hW%GMV~?Bo!~Cp13o=ktr_;MWT97@B5`_;j#-kcx7)k7KCQe%|}`(X7 z>Q7RAlZ_igpJBm-ZEhYFnwJaGE9H3Mc%qGojLvJ_ajBC-Q4|GlHtaDhkO?b_TPE!S zVp^P+I&=&AR_S5Q_DF=8jY=Cs?lBthAh>avh82D(c496aC1IJ{C zcOb$_Uqq-wK&6LxmrH0!yXD}o+5tiGLGDMInTNp&=Ly>ej>#>abX7nAaE>F;3*3NZ z9HQYkZGUd#kaxc70-|86GDx>L!XCF v!%jz(Bpog%;X!#vhGY1DBL4i_^6%<5E!w$Fy}k|t00000NkvXXu0mjf^{0!* diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_normal.png b/graphics/object_events/pics/pokemon/followers/deoxys_normal.png deleted file mode 100644 index 000d6ec5027b314ccda4155b783ccfbd6af8c5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmV-{1AhF8P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_en%SR7i>K)Ip2WKoke?!OOxs6oRlqa2NI@h#$ZO zzs6J$_t3*mBoe3xGZ2Uu!Ot;4oZz@AtXF&4gPwX>!2|+X+LKUdKZ7$#)6UE$^`f_Z z^zuuZ|Gdn+7NNVktAAAobie6%zyF&57SnyE`1!csG_qE=EGxu#IPUksImRC9Gn@~Z z9%frT@C##H^gEV38~6DW#=f3rTb7U=VW0IGxa3fvZi7Uizkp?VMVzU?;DzY6;JFIS z1?%+1cZ|udxm#ARbawu7h69XQmw}L6E=Y3HytwTzGd$D-Z6lO9M`Skp5jaPz%W&<~ zf!9unIt-VyVG-^EZ6h`F#b`FY@(S8*8dn4lgQ}f<(=fft!*DkNw(CkiKAhf9S)U;z zgaq0l>xSul9(&r*TCQ7;K0lkDim15 zN<0y_KMcz!lgbFRtrqYm&dG7w9z7+dffN;ui`*NV4w^H%x2(#N?b2+^xh7S)I9XPC zGbIPa&vc_qo@Z6W>lHPbDiZOs{RTsZRbU~~Hc&InH-YBV z*hVrb8zW=iEJJ|~WLI^d=C+JSJ1k57bEd4{5UEeEGb_-xdO{xXJ_~iF*XF(3{;%~1 XwVfML`xDa%00000NkvXXu0mjfWdfXl diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_speed.png b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png deleted file mode 100644 index 01817fbe85f58bd1e5a6a37209e07716843346fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_(?=TR7i>K*1>AqFc=4LuR8>E2$VuMOq$E?gUyF! zeh;ru+N%SGLQnB1w3plhdx4!4%#uuv4co4{gt8rqD3q}n%skT5ptO00>62v1abtI^ z^fnO+KdJiuvMnnyjQ{O#+x!mSx7E+8eeVU_6;L;;eP;{zaHStSAZk{)c3}AaLAhB& z>0VOlYD$vns+t&0^bChXD)-SNtu#&Mdg_DSPgr=5FXMe_+;7j!aB&2mG*5}#0W7L!~+ z!F<9^(3ot5SLIHjt@g>({+Z@pnxc7&KE9Z|j&P}mP%mEXwbS<(>7m+Tw+xMtU;R%} zLb3`-T91dUAjypji-P9OMLbN^KTGS?u=#X@q-he&Jkg8#!r3I^e(!}T={C;fcqqIs z#-E2VSuFJRasSSpB#4@%OGwZoGqEqmXVNa8gxrL5d+=$9*MHzi%eR#THl+()5qy57 z1IFxN99hp=*ci@W20B;ffdjU_6ZPX0tLwK*-*iLBb68?-Gju zX%S%99d@=~s{n4a9I!cR4e|lfS->zIwZd2jWX=NM#j5Lj#C<)_1)#SvPc~T$hVPkZnXd0Q^Wl6Sye0wg25BpkOp#>S7!D9$r4$Zu=qI YA7AGx4^3@50RR9107*qoM6N<$f;Eq$>i_@% diff --git a/graphics/object_events/pics/pokemon/followers/dewgong.png b/graphics/object_events/pics/pokemon/followers/dewgong.png deleted file mode 100644 index 5ad0a155eacf1b645aed3bf4c245dd88aa39ca81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)KmOXFVFc5|f5Yi7&fp*rBQdfr*+?_h@ zhFu|R!V2D7ApQM4ejFt_cDe)w3WSrNgnV8ezwF)aqkXjhr5RJ8F#C7*tFiEFeBS_J z%YXr11&F`!+fAd|3Wc)ct1kPyTtAinx@O;7l>uPKOWErJ{nI_Je_ztLxO17;b^y5* z3I~_25Y~XUzsEH~FbW+Pnt6LvTq&$O`*@nRB_g8T-(lJ@@Sg{a0n8leTXiM;ZWo8g zl?M`T_kGL4f0iLNY+Ys!ye$N^5emhFZZHc402To$@RqQm1wfo`3$Ixtg!K{z!cobb z0&fW`O9ps5zzmYBf1%-iTXhIv=D?f6=@;6U^)Aq%L8JRE|3GGKFA8mA{37iO*08@L z6uqN4tTWy@AmP)7dz(3|xkYPsLSFG2a3!QAn6^t&2m=pxw9EtQ;51qmycgMU2*N(^ z@Uw@g(_Wrq2&P<1pW?j&<0_bS;YVr7>Gj2Z-;LDsY(F? zt&2hz&$SsGpj#{~97tomj{^j>$`=G#06r4g7Y)v zr$C&FKoTUOVgZ+!uDp8hHm8M z_;1*IcAdfeo?fHus9%B-^7+a7e5LoKXGajyN-M3j(n>3>w9-l|t+digE3LHBN=p#H zE&2bUkhu-N%h{X9rCW0BSC4Or=b+z<-`}(! zxJ1vZNnSz@Hif&koxwknaX~MlVc07(1M;{act1_vs|ObeIoJe!+wR2#i06X7dpe9x zVghiu;Eg8V9J$NP03415kzI%l5X%MKh=x(9vjcFrHW~L+SF@`LIoL8#A0dSqfWw8- zax{t}?P)?TO(NnqEHDIl{PqF%rh-c>K@OLCQKY&Dkv&MpXM&?JK0qA5T>x;Zz6@1& z*+%r643Co*-#8sbNNFeJpKKe^^D!o)l_T))$0f<&jkVRg!&>vlbI|ssQ?o?G#FD$S(8S|n5HxC?6IDKGH=4om zVgL@urMl*-WtsO}MgR_%+COfrmC31T)GN)!CJq;|Rn6D8^Ge$b0?H8La9m4PkqGWt zi~u}dyt8rAz|R=Z>+Zawq~vgH*w7_O(v>FFkH?AN!w&go2Z-kxaXnn?dSba`9l4bC z3XhA8vMx)qt~+!;9v49OVW->aSj?pehvPS#p(z<&%inUhXd!uAYVI0vT`t#HlQ5P8 zIjiSk4(9R-loIf%Ae0P*28Vn3S^_Sr&)_=#g3L)c=hSBraGw=}tmEX`yY4{(P7WaJ zE*35a)3L{N05ugdkjN6lL39I11)#F&rqpXpabf|CSNp zn!lkMfHi4#JqlM%jsD>kj|<>8Z*7QB{|Op+UI8tvIWRxPGoWvesT?>bqj$k}-XDz> z>Rm)JCNqBirbrdgPNQiJSOMmo^|6FrYK>2kjmAhrsJGaqm(Ebwx6v7ugOYLeu6uvg zk4A54f}l8xW_+yC0~lzC^&W@x3&`gJI7Z{1jnF01ph;;0$76K2fG@(B#(^}tsC0h+ zrTb#^o*rN_=WpqQxP|&y@DW1Po45e3d6gBwI4j8ONP7S!>VglPje8JJBkdB>IG9}2 zg8R9)H+oMULejsSCD?l$4NZjTk6Q40&glV3%Y%X`L-`BHxJI8BOi6~U1~7?CZ?{x~ z(O=a4<*V~4-(Us!AlMA(BMg*-T3kS3`lvMlQDn>_0)WJ7z=BY7N^$_R^!qr>bqHq# zoC`J_#{OBS78j7bL=)n0AO{)Ouz4~Cj0P;&78@RLayhDip34>qX9mQAqiDDyGfx1N z2xkQ(W_1#7wq;^w0}&+uK~Zv9T0Y?C@PVZaGawesJc!N(nR*AoYr$*I44~JY%zVql ztcIB&5m9`40AHDLdcdjR#??6zwUvX9_117^ZGV0 gT#4VA$8TEy0IlnjH+lskC;$Ke07*qoM6N<$f&%{_ivR!s diff --git a/graphics/object_events/pics/pokemon/followers/diglett.png b/graphics/object_events/pics/pokemon/followers/diglett.png deleted file mode 100644 index 958ca3dac636ad3b2dde025eb83e70a19c824072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qGVLTv%A>Xeh|Y z$mrD=jZNX1*+(dGh4RLQh4YatNqw-S`s7;wyM=+<~-* zIXYWE2Y$IUv%P3@w%+F1rX2~}?KPk6p85a(PL-}E2>7?Ia+aU`l9x-<|I|L%I%V5w z&zasoE#%a><~pQqip}fV^`1B7i})`lcha#s`S~3(7vAFV>X*C(hQfsHx2K5UwF*o)^dY$|J`dDSI2c3@t$}y2Ndj{u6{1- HoD!M3j-%Q zIyy2kGCth+5h#fZJiX?B3n<4~;1OBOz`!jG!i)^F=14FwFlu?aIEHw1z70Oz*KEM^ z=3q^O<`=ooJMzD?d$4?8rX;`N>Z*dq7 zb?-tpv$*P-7B;9wNw~BXY<0d;vf4`E?vFK_!U`E)O!Al>`@pW?8JFzwDpP?uV(Z%f zc&Xg@dT)VKcd_gaZl0J$z7BI@#Tqv$Ha<{9 diff --git a/graphics/object_events/pics/pokemon/followers/dodrio.png b/graphics/object_events/pics/pokemon/followers/dodrio.png deleted file mode 100644 index c25503d7df045b85eb348d006a8c73a3fa52afef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmV-G1i$-G@$9A-O?W;enC)u`xM0If-#85qG&&00009 za7bBm000XU000XU0RWnu7ytkRwn;=mR7i=LIIINo#C1z`OQCRr1fr- z1fpj7%>4BE{xma^jnMz(npFR?V8rDl_=kaY)tut2^-l*LCbmNy8%9imlha@ybObyJ zCduHAdVpgd2aLFGt3f0%35Et&*d7Mp1$!Z&wf)w0HMjxTZ9&$BerHe*=dirybc)<% zm4T$HE3K=Fh1(GXF5G8S!eu(`yQ?i*Bc_xxD{M_*w+LC|pNF%)BM3ZaX(n7D7(8Z# zGF!1R!r&4DA|sUjsKBo2tp4#l_4*EF;42za)&=;+poKjvqZH~; z(JH^z%qg82;UpkdsLqQF%(-q7>UoK9U=NWDEa7eV!ya2HBuVQVA>QwJBAIYHjg3%# zJdIH0$UxYL1=98LRh2c4kC)X|V4p|{5vda+Ts?{6Qt{h-!;BEY`7%P41Jmg1LVRYb zKFqGdKsdg*4V^$K#HG)SaFw8mFB#|Yp4rCBh8ZD-?PQWOhD<%GMclxfe`9=M2Amt# z!g-m-LJJFdG9_n?*gR=rTf|KSXIKfJi!3lqbUiA4UQqV_;YR!5W6`rJ$kI4%Uuz+< ze8~`gQo{0eGs~xe7J}faHf*o3O*xG|-aZQ$?QQg2-dE$mp{AL@=8*l8M?IW^z2 zyp}}@ulC*j??)Id;e>K#?snM>VgAL|i+bUhbC1$>e7jAKupIEZZ`BJ-zWwmHjgK>Y zo2VCV?{AK<8tA@NFEIJ=aQFDz30_9a=>7d;a)jjocb4>k(Jvow?~)T-wr#Q97DpM5 zbt{~D4D8;I$e-KB{UaR$59Z4Ponrhw`)T3wo8-+qx8R#+^6UmIKHlhD! zkPJF5&>#?mXwVW#hJhd$1&juU52O{x>4jSk1c%1|==vMwL>H_{7~=x~0000EamT(fKy? zbY8Q8z?K#D2TZhVn_Q>JDVxean85lj^a_86$GasScHytu%MJNHDmU6(abDV!a(we< z>)q271U?;L=KsSTAi;g7Q&m{G@i)W$_4bDw-+4XT%b)7i%ctmpV zeJNsjP_*yG`V2R?qT3m@msxZv7^o8zencT zz5cS}{I0YQHdp>e+Dq%os1GsLVxiN{iOZBd>e=^fMf%I-FE;z`H%o|Zc%-5o!C4w0 zS-}#pU;S&$>zx;F7F48^S}svj7rD90g?Z8Zk_&UXyh{|mtj^)FUvOS5T+WyC?Abjz zUYUJwijHiW=&Q@NW6CF;<$=k2lmQhjFX&_XCXfQ^_<(xyZ6*a9=-DC%tf1XtF^x* zpS8NGbdg!yjAcK6xW`velF{r G5}E)e>F_ZC diff --git a/graphics/object_events/pics/pokemon/followers/donphan.png b/graphics/object_events/pics/pokemon/followers/donphan.png deleted file mode 100644 index c585893cf43bb128ea2dce416ec99c1c8bb4f563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmV00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)iG<^KokdX5zb5La-iVVq#ipprUbf3 z_LCH98CY0zejLxo9)aUp57*~h|P`l@KL)&t+etYEG-v(g0s{xOth zWdp?PC2;dJb#pM(KEXl& z957J1x1OADWD!M6SyZ;~P_o+4OtY}-eYXDKmQQQkMi|CN>~SbawpB`3-NPE60!tGg zO5H^e$f2;OZJA4?J@s4k7Rarq(rYiq(8HjEWU^o^*`OHZAWce4F%+B}ydk%s&(L@N zXfz|bp@jC~90+`RLFrALr@ep$T|!SI{Ke7yuiH!hq6bD=??Y z>C^z=bJ|SzkF`aA-N5XgXxSd)@5)xLmk+26uGT@t- zG1l}ITEN}`Q1u-gN4;;$?%mHOT!31JLPd2Uior{k3V;ar| zM|jP`c?GLi2{q7pq5uREF8g>Bi0dCtHu6BMg#pEHN8yZDr~Ke8`1I;U;PwdzK;FTa zaZXI&Io)MyJ2IXT)8qM-*n-Yr4!EBj&)q&@2RvJJfY+?*0DNHv@bl#B>JRDGXS~ay zSHG^rYo?b6oxjkNpHZK%1MWTSlHM@A9BzaGbQp_PXfShcc*)85^&O7F{{0#oBhJ1bR-oc`?L!7KUfLN1tpw)i4$a^>p< z~_qRvT7NY>ph&wdgBt&w-ILP8Z1;OvlB4rr&d2**{hw^))``3f3<%a~Qyos*a> zUsL5D-zZb#wu*4gEiGivWfh@w(71awF(pB{QxZb1wccBB%_rb*`9=^QE@&Cf7iMbw zo-EgO(nv?824IPb?$s>lo8bAZ8k5M?x|~!#5$DI@TZc)IFeV+qjjb;kS>7bk8@+|GB7Mw7W1c}FDvkiF>rWkY9 zb)$L;=-^rv916B002ovPDHLkV1m7T5O4qh diff --git a/graphics/object_events/pics/pokemon/followers/dragonite.png b/graphics/object_events/pics/pokemon/followers/dragonite.png deleted file mode 100644 index aedbf448ffa80f2adc17537fccd64f99256c0efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1030 zcmV+h1o``kP)FN2o!O@vvF`1c}>B*U4VPVm!dD)3UDNnPS00009 za7bBm000XU000XU0RWnu7ytkRd`Uz>R7i>CmcMJ;KorL{2o2c^{ZF2w!HZ066mU&6 z6ydR=axbk3+!9BBK>m?Z8xL+lTZhacLomtEC4WJOQk2225=7|h{nAN3;iQyy>ccqP z>D~K&Kc{yWTh@OOcErC&|4v|VVfT8@vh%z7QFDqFcw~Wp6u91iXn`k)9Jf*4@8^a8 zh(!N7rkA>YgUE2)Z~La?lE(DtqAs~fG==FD-s_=3WH`1lr-r0OE~kr&YSJXKfk$f_ zk>S{eqx0Ml2tKVIQoW!-)DYMpl8!4oar?ZtHUww^ZLDFLM25iTSUT=&h4`WC)r$#% z6+ks-cO;QsVhZetaeKot8LJ&|pr{uU>;2U!z-g`u+TE5Q8iAT1JID$&iYz`**)2{NVlEJaUvo@DS1pGd zXu-S=uzP$@!F#)&h)r;I!xKp~30-L^54eDjzy%#vT^L}0N$HpgOkPSr3h$UeyS7Jh zm{4ZOJCrGLI6RR=laNn1fJj*VoZ`wA4#CU$7}=soI`)vRZGQZ#S0QPAq7^zpL53^=66Y`nx8-myHK43XLoo~&}ll(6S*bM zp(09%+#zlr1%})s50Q$Gs~saIN%%@_3!$b!fOA4p+?N8Dt%#20dT%{ur9CW02qIw= zNTOb(9diLvUJyIC#Tv$yfIEUUF0a?C7EzaqBZ<^wvKNRp#XVmo*n&tO6XqBTLaefl z4{p=kqYEt%+0g%)Wkt7Tsm@kJ9r@UDPzo?bnb4O+<$Gj~nL_na2j`Hxh_mYUAi=|O ziM}$x4z409Eg)|g5B0VxqEdi4W!=dI@5|+FrDzaYH0Li}-!CQ+b1aU!HkbuWv8r#`X^~~wH=J!DvU)y0 zwY_pnOrnP4J`>Q{JjRROv*-Oqnb075F=GOwk9vtg)NpLgvFcKh(Thkls%~e4h~3`~ zI{{Tw7(`9SHmP5BjQNbIk3VlC;u%o?ziSdT9iMeJ#-hE;W6~tz5!cijL=DH*V?Tnd zCXp#%5;Yw^6$TL>85xG)6OR8N41vENCehaT1wax&NL?IBYybcN07*qoM6N<$f}R`8 Al>h($ diff --git a/graphics/object_events/pics/pokemon/followers/drapion.png b/graphics/object_events/pics/pokemon/followers/drapion.png deleted file mode 100644 index f84879346d42370132fa658398faf5a04f8c3d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmV+;1l;?HP) zd2wk$ak06G=Tx0U;qNd4Y*hAxV*8p#T5?N&)1100009 za7bBm000XU000XU0RWnu7ytkRnMp)JR7i>Km9cB&Mihsqm?F$UV2!JE9tOP89$Q?t z2<8f*n~+5ZTSZs6SU8R}DN+TTTz5u=kl~tK5mG6#oEtw26(+^Oc8M$3*CvIs8;lD5 z4S6GtRD5wau{Q+va=152DB_x^%xWW@>f&Na9dm(o+>U2ojg>9znNGSy1PVy3gd5C`c@dPWd1{2z@A$Z3Z#5Tj z(hGZj(hU%79Lyanq2adfSEt1)2 z?6?t5am&G*vG_3|t*}lyW)brAk0(o2OX!5irK&?9X)2n)I-xg_@{yI$uolt*t|vX> z4sO9#hz$*^gMGaC=X)nBv!QE*$O2~Z5LDbgOM1Zh&F}Ajvl1HCLOS4h`gO2}=@^%U zdbpbnd%6MM>^ojo#+~r|My8olzE)xTa11z_-X0!;mC$gC0?M&YGcGd21BVI3sAvga3PW$16 zJa~I@a^?07o@yraF~{X#w>T^3=ll{yve@A1y~DCS9<_?Dy&@~PhnGS0ngzPRRQ0?gxLl#bS{1E%6^ zu?X`7=n-KPmgJdcZX#mc87|(5JZTX~o*_G(!5cXF6?u?%LVB>5$;pevr+3DeL d`RGQ&zX8gO3}KkD#>M~u002ovPDHLkV1lUO`*HvP diff --git a/graphics/object_events/pics/pokemon/followers/dratini.png b/graphics/object_events/pics/pokemon/followers/dratini.png deleted file mode 100644 index 1ab1aa0340e4c86c55f8c78430af4d6b524ae3a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)Kl(B2uKorI$uea!^K{#GYQcyZJa_P{i z_%xVK0Ubqn%YWd+RBbY~|A9j^yl$Bcp6pg4r1#JDPGH}APuN?Q;x`yR`MdA;-JMVn z9OpR4`Cq2zeqO(vKS-h=2(R}CaLxTe@013fGI|mjgBS3Ct|oqA&Mt7A`JHmWtf=Ds z0bNb};<=j22<3y`ND4Tc0mP_82go$_HvpHV2Z#cyct-Mj=`}!tw#9)=Gyl^BaG;pO z0`c60Mrhw+;Ve&ZL3#5TTd+GpN|H<9sBK3f9`FHT@f&-*d5&<}n1Ul`2JHS#_QhC5? zHn{9FfcSa4JYS;#4#a`ZuL1PdAC^DhA@{4}Zv)6UV7yw55P$ zu{fad7iUjFkpi_P_>xbMH`*^3CFDj=F+pVI4Y6e9yz!ld)EWm`Al9O+raJd^oX)hu zTMoZifI_cYtG5o(XnO?+;D9*>yjS+fxW?Z*7pO*?HPu^LtBmZR1*)-c{9%ssJK8-O zmub4$r|kvUNq2z`sK)Pny)-2U$hDgx$>%zheTB3Gjz6x6n|%MdZWqaeIwaaE869wU b^h?e^?||>8EtLu900000NkvXXu0mjfixokg diff --git a/graphics/object_events/pics/pokemon/followers/drifblim.png b/graphics/object_events/pics/pokemon/followers/drifblim.png deleted file mode 100644 index 69e8ab561a5ee51bfe8c4180126fe9c86652f1d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)G{#ISpfk7siDbf5g9>2L1}4$eyw>900009 za7bBm000XU000XU0RWnu7ytkP*-1n}R7i>K(XmScQ5*+wmmoNDXl!se0wKx9ocjw} zbZBXEvdM-g1tJu9K{fl}2nxa>h|@tq#kT11VbLED)*_`{5HuCh{Z8@je%^a0Zh_z7 z@bkW3?>r0yW|`&RM9GOguLvAOB{tlTwiTiKlyBu#b(hHSdl*$|PGG82#<6i~Lbpq7 zD@VFYX`AmprMg=1cK?`Cm7UogvXzFeQ?(^BRe27YpPgfDh!kPwE0;Ba%^$_FbgVOa z=O~e_Gg4=2k7xqxtj@8N?lV`34C%&5qY%z#1+Lc#$K6;Om2O*S2eI^PHIo&XkUYo2 za+vaNY<<5k*@nio43@nu z6%XNQc8P4At#*rh*+-3Q`Gt_E>}_fB#9bmog5~JS#Y?0!IvCj5%d)!%4^eW$9GB48 z%=7o}`O?QtXtWu)3{%lO#>FDUVa^XovM#jjX3m*oAM5m%d$tzcbs!_ELg3u&r!ibi{%cN_&e?xrbi(kf;I$CZ~8H1 z+45$~PPM0Je%?~N|MUMGgJ~WrLW?W6l=PQY@7OoN_8O~|=EdE8_V0pj7=GF(ean=m zb;=7y#Vt?MuPk-g$S!>VMf2=6~N-JUM)u`KPDXKQBE}{&C&BHxt(TxtKq< zxx!kvPyAKHC7Wxkb^P2*y=EQX<*=4V^lb9o#EAE0rJ^4WO!_Z;E{1*6)tr5NyMpH1 z%(kBSn0b3mY#`9~A8Qxxo?LnF^0U*^-uOMUjA@wvLMDCQ{^$c|&8_kazn^W`s5@J1 zn}7G)7kA$NVm{pF`=M$5%@;L657yaxuv9W7eO@txrS38lCS_Os9z6lFSYxd}j_$_}+c6q7GwrxR+dfr}Wyf|?}UTTNZzuekoN7I{5 zURio7c-s3Dd!O&NU^y5X9$R{K|3#a*PYMLRX08j8kKZ!?{UuF4B>@IQ5xac_4XO;) z>SfN?su-)ZI(`B9QoWvO~j$0>(^zpLW`^zQpACULXws?}K z5%TKsNoE%{o%fI1?_6(qcjM^<i5O)&pPQ;+N*6lO>57Y4XwS!oTp~ypIG*A zUCNp|jha1gcz&;b&ceZWe$E;56yr@h*ekk&<Tc5MZrY zer-d~MAv#jr^dRH)|SPOg8#pF`IMbuvF(neS&!;9gDB>|?65lN>&^UOp|HVWFXwnx&agWTU0ZVeOcKH_mTXxqW7Zbr z71U*N>A=~Se=Iq3CM{l479=iHe^+46Nz*ws?^^oB{sr8BuJOa@-Oruspm_Fl^>bP0 Hl+XkK{YvoW diff --git a/graphics/object_events/pics/pokemon/followers/dugtrio.png b/graphics/object_events/pics/pokemon/followers/dugtrio.png deleted file mode 100644 index b60c3fb73ba29829f09888c7ad535c529d7f4878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmVKlQC=KFcil{oPK~@#x94GKnD*;+?E_T zP%cko4T(hNa?5=H2k*@yXy!uu0s0wkwz=X#TcL16zDu8E%eG|BJveTQAdsJ>_y0Zl zC4`*TX`R+-{q^#~@L!I5;q-%wnGjz(65K%dc)Q#YdP0bOM}>p#aW5C*u1iR~dvR}7 z*a>c6Pc#F4|616BmXLURnOOo`*mD9b?hS@dKYn%!@zBfTbNXkYD`?)xyB!RFKg>FW zdW6~W)e_jk);mYe{LlLP*XQ%W{H;Ss^hlyGssmfXW}xO=9I`TE{`h?`oYewXX!?_~ z4s?Z9pn3@-DP<;vHhRa~!Kb_qbcLjxs2qi+!LRIkc^pIVMD!>&wfq27$51MFJ6P;n(rbAa~1y(Gj z{EO}!BuS(7v?5W>;rg&BCR>GCZKieS62-_a(XJ=~^N+m3L zk>BaS^s;1`*6iVL{-6XYFRoV!xe>5kfE-}klbvR&8HELJH}Y2?(@~Hys`u9wtNr;K zhGB&tYkeWC85al2rN0isXuMDi@wWhZbbMu+*)kaW0i(cT-P9Hg16TKt~#R98+og*egs3}Q$agQVQ0JVrIcPc>v+!ht|Nc4S6)%?kSL u#&DmKJ~zZ~`V`A~9kv2WSG1Y`Ki4~`z@qj`uf$pa0000? diff --git a/graphics/object_events/pics/pokemon/followers/dunsparce.png b/graphics/object_events/pics/pokemon/followers/dunsparce.png deleted file mode 100644 index 2a886d622bd4d4ef6650f94e9d92e14824acd8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmV+w1M2*VP)2aBfX;GoMK~Z5rIXQX3*#H0lDj0xd00009 za7bBm000XU000XU0RWnu7ytkQi%CR5R7i>Kl)sDGU>L{WhE8o99B$|!NT77MQ4j}* zP4z)!pM!Ci#QmzuOxuGE8isWzT zo6E2Fm5ah*H=pfeUccYx$NRhhY-1bS@FJ$uY;N43MYEybeD3xJJGA12-?RZrP;4A- zxP(|7QHqlXt*E27G(a+CV4w~6=-&A;ZFn@>q&(Zp!Iyg)@r%Qhp-ErdWnL4i*pZ~J z(DPZli}^DfFo>NanN(cnb#`93?y>R_8 zYYmY!WE(T|>DLFs(BZ%kun_CXzzTz7%-)P*j@eV|uRd{iHDKS+3BxIw=pfCkHf~AMT=O0AjEt$&^=5R(Is3%2 zcof$|UJUt3sIaETs_$f0+`^|A2T~tSP-+(>EkKsGb zZ>N2QR6&FZk`J;l9fW-)~oIa=Do;=>)&floGk=%wv1Lzk+w+(NQURGe6sXbq1j} z@E6-<2+2hUAfLMt?F0gg*X^Z$*18;p7x T{(WgQ00000NkvXXu0mjfY4CON diff --git a/graphics/object_events/pics/pokemon/followers/dusclops.png b/graphics/object_events/pics/pokemon/followers/dusclops.png deleted file mode 100644 index 472bffdaf7b8db85414f69c200f71f22618f497d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 915 zcmV;E18n?>P)n+aH79z500009 za7bBm000XU000XU0RWnu7ytkR2}wjjR7i>KmAz}*Kp2MwhQmt+V^A`<84k}T#b7V) z5`>o$?P(Xe39k#a4WSS%8ImRS&~(d?jvYI6=vpX*fU{`mhtW`af(D}@p!aX+d%BZs ztCj+V4u#yL=T7%~?n@`bxG(qR|0$(HE^ejb+`&ev?G$mpx%_&Tn}@|rJzS@V?`ST$ z6QhU?gIymMbEZdz+egd(ER(Y1IYm71me(Z1O>fzsWyA2j$(Ld_3wUkd4HsLpOf$A% zzx(&R-vxAxd^U`s#p^pxK99CJw{w}@)Dis!eTJp-8|PD}fH~*&TxJb!N8y4X!&EcH zPoHOgJ_i)o$mLNTMG(#XS*8xrudziHyYb&p!gAcd0Mt7J|m8)tE#4;8hECI~4M>Lq!OsL=j|n*krWb79;RQi!Q`2ObW`GImYg#c2o5-DAhiPo^Sf#k2?nKk9#v3> p#ed#n_^P@)+F7>!kBWa-egpmt_h;_i^!We)002ovPDHLkV1imhqi6sC diff --git a/graphics/object_events/pics/pokemon/followers/dusknoir.png b/graphics/object_events/pics/pokemon/followers/dusknoir.png deleted file mode 100644 index 7ec4800c37dd84a274ac7bd7b5834e2c135ae944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmV;b16BNqP)p}GA<2Oe(P3dxQBk3xp#T5?000000000000000lqnw$00009 za7bBm000XU000XU0RWnu7ytkRAW1|)R7i>Km9dWFHV}pxh|P6Tb`J}+l#qj5*&>U` zl`RrD(A^b_dw>K%THh82y~RlsV2n$9o7GchNK>*zc(cG=lK>fDf&E6q{~r!Ti;(~0 z-xBf9Kf-TS6Y|sJryt z^mQgw_H1!huP_Qm3pl2P?1aVj$iBkU7$M`rwD0@#Vsn#GP(`dirBt>@Ozm3ZdE*RG z(9&e+Arm6cHg(?I=Glm0P?QmSFT(M$Nl7!k%UZmbt+k2 zoRmL$;aOU?f{T}yG3YZ8m=PrmYz;}Iek*Wbe3TOblc?_2;?FXdXF<-)mvq64pm#vQi+Qo z2gB`OcUds<#c-Fk{kcDPqd~xGt@Qi5*1S)Y6Qp9~o!B_RvZ(>~z=xM$;EP5D;&|e# zQ846P3wl-aa$ia(sMgZ6_7@2SAK(y!7*Eaf#V~3T$sryEL&mpOni7B;?SBfubH&n& zgoYTJ1jeb(nSM;Rb#m>Pe!PEZOfztFVusha<@%{`f@tWOx9sd{WDEe!-Dogp3W{%= za{P$tPKx9X296+K(!(KnICPN}w1%EZnVXA5VmrPc6av;P}ks+Uu{PwE#5f} z``Rp>pfwygD!z>~nM^3)s$^2=>x9xa=FQbEYg; zT3qcb)}j8S9UCRMi(v)%gs)uyEMH^VDPEe%_LP{hZ>ikO8D?CX=>`H;bk+`j0rg}; zKHdcxqh`ph($ M07*qoM6N<$f~+j9E&u=k diff --git a/graphics/object_events/pics/pokemon/followers/duskull.png b/graphics/object_events/pics/pokemon/followers/duskull.png deleted file mode 100644 index faeed6a2041b9f132d0c5b061369decd89599b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmV-80>}M{P)%tcq00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)iF=PKoke?YNuOeQCAm6;>BQ#U&6)2 zui(mXG`QeIaA{H!yl{((i4->n5?=>Q2U58YWob=&ee@bkoD6UKweQ~l+Ca}RcD1Wr z?P}{H99`h<-v)>U3Y66wDCBd2o6)o_0&s(RpRCYg5p2vi1Y1qKg=HwJLz})vln~n=xm6P zT2#8Fw*5z7z5H*2oerE{O|I2|qD^NEZN}TBjvsc!9G*QccCx@b8cul4)0zRiGuAHk zdF^<_ZkO3W?4)RiPaoP1olVA=wNwKX*SRfNcb+w4r|;x+;NMw#Ta3!4(#c%_&iYaxQn~Vua7H&PdJ?Tf9o68S_EKmK-I?p0000S-CMu@o8y!VX0}EDM48wVM!tJ*=Yd*0RR91`rn;t00009 za7bBm000XU000XU0RWnu7ytkQ-bqA3R7i>Kl|O6SKp4h_p;N+v_eL0Jawr{oQy};| zWXzIL1qZSk+@P_9Z0)9|WVFH=L?@N%f@sqr1d>4Z#>jDSk>tLgp{M&RsUgjf(4o1( z`0mmDp67jK-&xkvcpCrBfX6n-lgH(wQOy87upuIGZ6Ut>K`|DKj-vU!^^0VoZjjw+ zfG(4EYcjsCzSvAM5>#JvROwkg5o(Tc_tL&yXWiAhfF8rwjLfJZUL>e$SV@E+S-i4w zcj<=(Ac0Ef^VsOT4~>^g5RG~!GOK8T1lo`RRU!clw{Ip4(7XXB7C^1@dARk7>j~w$ zmHuj`Db%SEIc_AY1ZBMGQC;i3QNgiMw=)SI_N%Xd?smm_a6iOz)Fk zn)UpFG{D&V(APj!kuu~PL}CeqD6q%g!Pq9T0uHxv*YUMZ2>DWcaD5rCefRbW8A$_G zk$LG1C=yGc1^sX9-n;b^H<3LgWSGu~&Ita11cdZOMug98uk-nh`dO-qM%usvS0pyT zxxKOZJSziPVhLn=pTq!>Kj1oIJH5_62_#KbWd3+4@Jz`>mBS+kcnwDVu>lyI{QA&*qYFvU4L}XI-a@_ zR7Iu32tXtTwUpDJ$0xb25rB0oB1T7fjJs4HHjNkVj`zN$rm~{)6(kdzrsZ)824DfD zQ&ykZfv%U^rNa!(-Hs7uMJ=oJKwcy+?_h^p`80%U{7UB+E0q~a$~Rc8BK`oRaObt% ySZ?1X*G9D>G1{$L9xRP&;=ej14}B;9!|@xJmLpNQ;M8LP0000FN0a0ReeoK>z>%000000000000000F0hie00009 za7bBm000XU000XU0RWnu7ytkPm`OxIR7i>K)In>5Fcb&yoB}xtYn)e+eS-~lEk$T= zWmxcLN{!2I4rbPG5l5@!I?ABma#5HhsoB_Jhk^f|e)`@^U$Fu(Wy+K(Q~pt)a2qlJ z8k8aGunNu0cGIeX!9CCi7)CxrRm+NC+%OX~(FWS?8wyey0}O+f*JasqF>YAxla2m; zEvq!V=4D$6mzBDY!+FV>)P7Oh-N1sYP~kH2I}Zz)hQ42E+g-SCpsK!NPJ^SGI1}TB zoELhn?H>p9TT9B0*|^&mzoJ^L?LOp@zmm*tc?zSm7&o~lUJ6h%^jhvyGcO>*X?Tk0 zF8UaE9*|kuwEXL#w%s=@?>u}TyS<`Y`s6TrxJ`D9Ki`0H_t)lflfEt8{=oAXpBv2q#3CzIRF3v07*qoM6N<$f`9VyKmY&$ diff --git a/graphics/object_events/pics/pokemon/followers/ekans.png b/graphics/object_events/pics/pokemon/followers/ekans.png deleted file mode 100644 index dc315987acabdc3b2d1bf3f111f3bd9dff9cbe15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#_tTzPS!VPT@?$;N|~ zft87dnLlqjGBPqwOq>W*f(dqTs2&4~au#?*7Bet#%>`jbwW+q>7#J9jd%8G=cyzv< zyfN>Pfk4}0uW9MxQ&Zktv1@4kz-(Zk*2Ob(^`dp10;bwsKJPYG`zhMZ-jcL1NHwqV z{kebj@il&vs_#6O`~JiH;Ff)B6EsunydBk+&iT6~?)3%hXW1; z{`(zZTiS4(HQsn-&>O!@p*Skux^xjE|^w^({_*1mW>-$N(NCc3gYyWcTU zTA_G3Z|{P6Rn1pstcm+s%cD?{apU3vpA>6f|KOCZ)n|@ueK{v#v*eE4mWE$f1dq#y z9h@VT;NI-0nz*{CUh3K^*?mIWKAx5?X!?EUvy}a(cUJ`OFWC1jxvPzF`l&}AqW2tD z2`QvMNs=?_4Nl~YescIHhi{zL3O2@loRzB?w6r@Iceps_$1%uUvPqbDtN2my;+C)C z;)dtmB>KAD@11dgWpAajOO*Sb&+hX|+U%aFrSx?RPiEikJE6cb`2Qh}DV0Y)runGU Zi^tb@?$~&x%Uuu@`<||TF6*2UngIV)`<(y) diff --git a/graphics/object_events/pics/pokemon/followers/electabuzz.png b/graphics/object_events/pics/pokemon/followers/electabuzz.png deleted file mode 100644 index 6a24e3dcb746972d617019c386ecb189591dee4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 692 zcmV;l0!#ggP)JkwG~j>FN1NQBm>H0RaI4F)=X!0000000000000000000000000EL%UF00009 za7bBm000XU000XU0RWnu7ytkQDoI2^R7i>Km9cKyFc5}a2mxn8u;evwAVDxS3n-ed zMja3bn?LiKmO)_B9A()R`sQLm`(KR8@$8QJZHI|CKT06a-@%JUneOVocsfu2kNNex-hAC=q<0s%#`MVZg{Qy zc5w2Tb!_<$s+3Gy;S*Zkbw$9fdn~dJbk)!t_lB5t&Dt|;{$^Y{!!5Ub+8-UuO7qWI zx9oML`ry*UY~K8J3*BYw77VRr-wQOet-iNNAKB>-JJHG_sr-o)Yq{=T z&Oli9?Nakwl?D39PA8CqtjhO4z6daMn8y@ybD_OA)ZN(f^Z?1ZD+ArKGu-PlmcP{C z3QL~5=M7>LRa&cxqF!S-MSIL^QDfb(KWEYn;-a$=pFqHwA|4m$#jmgPgc+B}P?}pq zk2m;K%b=(yMdR3Q*Cap~##Nf{w=Ss4KV0RR910F7~f00009 za7bBm000ie000ie0hKEb8vpK)j^BfMid9|K?HotfCP)xg9k|$yNBqS zTiHw5O9@$s@t$-p^kQw-$OI}F!{V2VpgpypAm5<$GlU+ph0@&Ikp;^u^FLdLZR>(1mvrAmuQ>f6lx!^ zc#iWa$5taVHY2o5D&Vnzg8cgCyiFV#1L+3ZT9vwiWgOXHJwnUv)!_m$dGV|b9GO&W zn&|~uIY~~8Bcs`s;%!#y5n9HH;JAE+Jkb-fje!j=xW%8W&duE+Q-H%!u|&KTe#SQIx;d{QP^i~ZJ|^RY?FrHXatisaBM;jA%FQE;Mr^6 zi%(5gPN);N;03CIZ4&N3DEK>~1IH%hu?MS*?fzy1;oApXU3<_~I8RPZzrM)uOXFu< z;Mj!R6+UD>&ww|-DL)xJYa1}G^L(Kj*rvZI`uw?R(E0biK^Qgyqy$!YKK^Yve6ZI( z$F3~SmdndVx|{OUq+xu~{5e~byk%$ixv|3+jLDzBkwWa?nvgjRRt@J>>dH&kJ(KP< zQ5!h+wR-ai$?nAsP3e0a$syEb-J!^N~pM4C>gtV;9-2B+=6gvBnb zn!-#3&7&9&y)ls1>bcL$5L5&3jN66|kE*2JtaAL+8_10#H9~a-gM`Vdy8+@9uoSX4 z20C~Ce#==9`}lsV`N0v&v!HEAWJxg*^M(y{rcy^l47gk-rD+fYXPe#>@AEss#Pkqg z7FyyJDHH4uoQ}T6!8FWVn+;5~gDw!4T+Qm-)j;j6$O%f^VWxqq} z;`th1U)=_1rtJ3DM}J8fk)dK)-yfUMr(d)S`%*#gz8xB7`RRGpu&Z~O8<3-N;-@J) rKF}^0*EsNB&QmEzC*?yc{+s#-Ym1{1iw~L_00000NkvXXu0mjfCB5rt diff --git a/graphics/object_events/pics/pokemon/followers/electrike.png b/graphics/object_events/pics/pokemon/followers/electrike.png deleted file mode 100644 index e0c1b95f1879779a8eec26448c76486d938aceed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)K)Uj{cKokb>w^(vUOBh||4lN@(H6f!V zx3MzWB4^QV2=YX-b|BfV!gd}T5<{CY3yS<#_Mi>iIX)99iqwH``<>74!!|a+A%`4t z$g6X-$8XNBMYI3=f}`nOqu&}w4Rjg|ju6n~eM!F2Jc;dwqdb?$*`g{fti(0Rjx~lWB2R8S|?OD;%3JiZ=d7khS_P`glR+()Ea%poqX3O6U zw*~1$x%KSSJ3$@O=7#t4Cf;{CaOnr=NK50ANz&C;2uSLMjt{Q!X3~0T*B_~i z)J|8>p4i`kFQXT_FE{8*>dWH}%wxH%p737z1JqU4tyyuFh5!Hn07*qoM6N<$f~o8j A8vp(Z{Oo^j$gApo z&#V8P<^28cQ{(S_^N)J2{;;mJ_~zSvmk*l+-m0^|TX9*<-(Ps?)LoZd_|Mw4dt7?) zd&yZ9=@-A(?R)cS>tZ{ZB5`%!saHB*Sl|C5>-(VLg}g?t)?X*PTYtRo8hq^jZLm1| z$_u%aGpzp(hP)J;b@ADmKacFT7_q){Oo{&SC)nuEQ`UDSZZ%RzZT;SztD7J@p1i6#cqeTk%dEMKmoiRE>aMYFl;4mWu%l_`SxW{LhU0~slI&L7U6@|7qb^Y@ z)MjOuE#I6=UCc}0uF%SSp#I)cL%VBD&0Z7z51nO}nbF!nZ`|+6Sax*VbLnFCT&uP5 zGu+yRZg1(>miu{|%}>!5 diff --git a/graphics/object_events/pics/pokemon/followers/elekid.png b/graphics/object_events/pics/pokemon/followers/elekid.png deleted file mode 100644 index e27d185de48cfe63dc20cae626aa254ee5beba4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!XiLV`d;D5F9LI z{CP9c($Vwf%b!4btbqSv?i`>5XMsm#F#`j)FbFd;%$g&?z`(e~)5S5wqx0?5v&BsY z0!JlhytH-uaH{=+wxaLe@Z0mQ9-B9DqP5lE|I(W_sw}jaHuGM^_WOC?_L^Eeu$Zjo zJImyy-p-G?)3)xBI4{W6yX@@ROLJNmTP|F-@a)=%gP$&*sabseaaha58lBxelHb!e zubF6~b*$)A(BpqO(@Y;J@BJZOX8Aa0d22Kev+=&qhZXw{-~V06(Y8`_!Z)Uvds*fO z@`~B|LS1B-&C?~1)h6CtdRu48%Er9Z2RvMH6FlxUFXY(6kiNrJZK3g&NS-Mb&x-91 zH?B(Sx+utWYUllPXATCi=rsna^4C;cM7d*LQ%)awajsBnJ!z> z8!{TbA4>+PACj*wF%@Y%aPPd7%8KkM@iVo;elNV5=)JY}<8{vD<5SvS30co&+;B}? zI^21WO8ee>K7TH6KKCgsBS6%Ar(D|hMXoDM-Dq$&ELmp_o#C9-vg=BL9y%U>gTe~DWM4f0LJjb diff --git a/graphics/object_events/pics/pokemon/followers/empoleon.png b/graphics/object_events/pics/pokemon/followers/empoleon.png deleted file mode 100644 index cf127f9bdb9a62c8e62216ac2083c7608375875d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmV-81IPS{P)K*1b>LKo|yaOBJV6HwF-4YZQ55t0gN+ zx5%=hOt4f5)7iONj+wf24&b_unKEDzwyNNoV?;tx`_J`!=a2Ixu3Bg}US;{^k)QW$ zVFg8bnV0!j1D@lp!+Iz?n<;v_(NVonHapMw5Iof|t{2K?=lRgu5zq8jhOy<;7u3xz zxSG04^c%;H(`dL1;@Seq?1KHN*Fw#hY^CN7Xn=k@$}d_0aCtptRSWY*yM z-q$!4+GNuKtT1S_!wLhm+4Jabx3)ks9ozaee*e)%O~&+z5P~-w9z}OvP~DzvcEOwL zski8$Cflsg-fVdJrRAE!0?F9`v(;+tnvI50Rv2#f*46g~Hj^@xolS(DWsJR9qY0Y^ z&zHM>Re0#K>48Ynw``N7jVAlqr@?mHaNHD?b+WSq^|0FUdc~1o?zGHLFVovaROQ@x zerAN^G^z?^D}az_)gSzbNdDlw!l=kkFa6I8AC}FSr?S8~K9lp8be){W9m~xqqM!37ND9#exIf z5KRlrR~PsA1ndUuqeE^*N3K7S#cC_9< zz7^i{m4+v0m9ud*+ntGDg!ZJ1{xF9VS}62UYg)ZuvG&&fYk=EG%mX#5JF*#BB**V!sA*mSwSy36O!O;N$0ZB0_>FN1dVR@-}QGr=G2{Tej00009 za7bBm000XU000XU0RWnu7ytkRrb$FWR7i>KmA`M>Mij?y&_qH*1}_=2wH@U}Z3GxF z7a7suK`7uqKmpXf2C{W2GFJkMlSzP$#0WY%q*@yZETYn2p#j@7pu$}ki2r~D&>cKc zfUif1_d^N=b;!`6ZxHTt ziha2DpVWnPbAjmrs<8) z!m?xc%FO1l-J@*=+ixa}&wY&jlz%#@B6LL!g4L_K;>3XWIXbh@-eU{3%xn&hbf3Q2 zt@4C%(#4Fey+_~IsX+rmiFNFk*ep&7nua z4VDbCUu4rKr*(g>9#@awrET*OLpa5a0t{eN=3>gP^>yw2@z->F3+J^aJ@c_qVO&WV zS618}e_N{;o8w}7MvM!v!3T1DTL1II^A~@EYz}BSIv$tV{Rz`HO1aZIMM!(v+&^3y z2rjY&HR_(~Kb|`51>a;%E5oPwTGI{$H!x0FX}yTta$r1bhs#Elm>Uec=hwLFuo1P% zKnWUCeE0zfh9x{^j1oZz{Wp`N`~lCGl6oc9i<5fbTkub%r6zpmH2dCt|h}nkO~YA*!82!0Z@eDFHaIJ z<<%EFfo{BdG7tt!aXy^EaxEJsg1JJ08ypt)Wy5xuq$(xeX3283DG7cQ(q1A65aO&P q1qee0Z6?sAB5vOuN@fB7PT?P7R@7>QyX}?$00004~v9ak1gC*~vLEQ7L(;X`$)q`N@&d000000000000000Ty9~N00009 za7bBm000XU000XU0RWnu7ytkQqDe$SR7i>K)lX~NFcbiA>87KFnQ`bR7(1Cqi?bYi z=(&u*uBBjHa$HY4$(R`hokE}_9>@d z{+(d*6weUll{mpa4>nwgex4!9d2)j1m>`LQe*PwyIBnfD64Y)DEt>A~sIevWvU$d! zUQ;CO|MC6rI5}!en0pg=)}6g3Wtjr#j5LJgsIj2lXx}<2;gG)A{Q&|VgaG2W8H}9K zZ>**C4^v}inP92}A544P?0zDcFjsSLYqeNYmgP>3ZR?th@aZbznN?XXOHp+j+M7sW z`o~q4Nvp<=3Aq3rqwe6kE+NID3As!iv-|Gge5)anRS3_b^MzE#gq9#nD9oNqJ;A~3 z5lR?+#&ykwZ8n{^wL$6pGiY zR|U3Nz`FMtE8*rE%r}5%8c^WLjBw-mJZ&9*j3L!)VGn_0!rB#)vWBl;pcZ|`mrKJJ z!~`poFh2YpCU`HT?DBOc)vWCfoBHN@Q>Q&9WO~;$_Vs6>TDPw&+-?d{Cfj_S<)l3% zG}-)stMBWi$GDbgu+7YdT+=v{5#F07aJ_9eK&ZHQ55o^Z(PK=Q=TFWAj@dTDXlA~x zZ7-gsEGu;P2@~`6Ajfxmig;>9INS(b=J4X#oKN>FN0Z00000000000000000000000000GiKA00009 za7bBm000XU000XU0RWnu7ytkQ;Ymb6R7i>KmCI`5FcgLbUT7^F>e=R);4FP)7PGJku*wZQyA!CpkC!O_WvCn9V<$GU*FgNa~1xJ1$TD-Qem;) zwO56oT-sk}RlLFes!*xzHREwNf6V%zRDS~Kt_bmtef(I6^)wgtW&ARAs)uP6U$_){ z{xMjXb525j9N-Q!8TNJ6$42~Tul4aFSE6ert)(VGF#bZOsbCdPy*CBN1+C2 z)i{P{=zqK+oEl|TlAdcxl_~-PSX6_kS7z0I! zT$n1(l^<~GPc8)FSGWjElW{NTg~m%@68h%XfQi}}YCsA^Va=?@xBv`%gZAV~3DkH> zFq@lwSYA(oS^|?$!^l0+qlOKv{6PY>tG3MPL#IG|;mJD*#EGX3My_W;XaM{n28xh4 z?4tJNE41r)k`!2Q&Kzi_skTiW#}aztwo^%f&xgRjT!vjd?i@Vh=NC$*b0}vCGzLHY zZQ#vHSOmD53h;R^fg+&yoy;u-PG(3$iNDU61GhXGUEo)fu{QVt@bePLLT2sbiW^g< zlZ4NqoH?*l#RfJaa6l8EG2+O(%7H8#^Y<|j>)FH`bdu&A1Ai>ibER*du+ogZS49>` z!kqbNE^wd2*yEg5Ifp=PQqw$DnsMw)e4d0EOQ4BI6)kbjIRq*G?q^Df!7+0RaJ7NkISr00000c4My`00009 za7bBm000XU000XU0RWnu7ytkQ<4Ht8R7i>K)<0_-F%$rBfj6T?=tg~rJI>=Rhc$XC z90#Fu=+G%}92jqf5@LUYbO?ns#`Xs=mWNZ$X%bg~E?oloE`5ssL?=sWA$05W^m~@y zdwM>D5&9p09q}Lh)@XHK_nV>)5$aG}S029}F`P!qZ-`YlL>;zDE05tmVY8@deHwTD zhQL9$m9A3daVx1>6ejZ+PNNlTRBIUFI*x+6mokqLCbTADOqj=FHtd8DDG61(p-iuM$|OrAXKFic z)0?J**O3a+ZO$@QDkc#$3^om$Rx;p>L=la{?YK>El6Axqs8>0yR~9j%__m?tR!mYE zC5m@96>aN!oYPv;q;gwDurkU5LPNJ}!eU8C&_zxo%n9Kvk-S$qjd1k5^JKTwrr~%@ z6d^Q@oqpbF9Z}t~=k#VK0xMT8uZV6(RlR-FwvP7cr-Z;)7gSDTp2i9uOTt}N5HXGT z?pI-3$5hN`YCN3n9z)A86HO#^bh|C)Bem~-Xq^#a3a^F7s)lk&tj^q?3Nb!YO70eF z8ww7^LWsqeg~w>TN*O#lYq!T@F%(x9c=rw2hMg|Yr+Vn6$7q(aHT=GNZvVK4)64$8 zoNXvL6w~=!eEaAzlI*rD2a;4y--+qaENC0z`|14;aer6&tkz|zD^^b957W{4vbfmK zYgwlr?u3}Hy+-Z4$jc*Kxvj=RjIx)4w)OeJ=i^b|Yjm0ExbXS$cz%-`1#P2tk*bZtzh){oS7ICCyvVY0;5E7_pe3g}j(f+`2<-9C2BXgr|jL^=?vUqPy zq|D?lIqxxa$;PZ}x|0;e1l$aB%TN&pG00000NkvXXu0mjf DY<8AM diff --git a/graphics/object_events/pics/pokemon/followers/exploud.png b/graphics/object_events/pics/pokemon/followers/exploud.png deleted file mode 100644 index fe13983e17fc6c7d03dc292869773da9a00c6925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1163 zcmV;61a$j}P)CtHc0RgG8!Eqrmxj|{Mso`mHiHRvexO^d400009 za7bBm000XU000XU0RWnu7ytkS0ZBwbR7i>K)<1~bRvZWLhq+KR$|cku098ZspB zzz9xokOzudEJFVshi=8MJT!Q4Lckshx|725BXy@v?U1cUaM})C4dto>W6Ill zlv|R$cX0hZ>G_||_ENf(KJf67rSJDiPm+z$|KmS046)e=mF$1y!%no(2-P~)M%U|` z>{Pl-fkh)5)w@>7+F+--!KHF{X~spPQrCjO`r~yrK8j$*{pLEC>K(CEP%s2KHPcxv zShmr%Yo=ZAtusC8RjLblMWfQKNn3`pyw;{`n$^4O%w+nY+ndJ~jY`&?)3&72ve)@G z{lcVdjo*^8ak6mDi$Zh7oV8 z15WYux)p8Pol|o1*tS;Lkn(qlUFHR__`yqUyl$c{|Y z(H35VYjcJ}zd0Pfd=#|2i7K4C!6LNf(5=5i3;3e3ntm399#&Jqydd$1Q{VY%w zPHjYLjbJk))DJ^L1wx^b8@^yF!gzB`2PqWn>Id=7aR|>cnHsi`?=DAweH$PZ2!%6e zUxKM11nzWIralJA9O^$0#`i23q%NJlS(GKt%k%N9`Fc3~>HHvCV}rm*$isaV2%k@s zpkn$p3nPI;iWVFJU;67?D{zgI9LLnUcP>7}fT1y*rU~$X}^T6U*Dn!>3 dR!06C<8PQTiEA)gQ8fSn002ovPDHLkV1g?WHNF4< diff --git a/graphics/object_events/pics/pokemon/followers/farfetchd.png b/graphics/object_events/pics/pokemon/followers/farfetchd.png deleted file mode 100644 index d4eb66b53a5f3a4ca74eb385bf233d6f88123682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)gryp#cE_v5_fBIVtJs`H68s(b2)Nfl1k^dC9qX_6Vic!^mtz{G~X#vE{M6>{GZX(=QF{;|HHA{hZQgfZgwdS{m7T_3F?bn)TDcJ$X zJk3mkZ8B5#>umWI&vji+iqfRk=f;rzam;g)g0S#3gsxH0 zk6#w8T^pmnV?C6EwnUST3ZoS>2_Tw1>iu=X@tfl;wnJUx0zQ9h+X5Q>ozi?L#;pnZ z=pK!3g0lePU?1&B;j49A?{o$iX!ji3IY;vP6up8*uwR-Beb|yVAs;%v)&Nfl*98@R zzVd~FlMvniuGdZJq40#wuhhj=X%@n2_g>qCqVSn@0tylvbM11+ruPuwD`pCbBv($+ zv>fU?v@tr4zyByLe!e?7unAdMIIsyr&^oj+^8%20R|CGN`C9;4c?Vp^aTkw@L4L5F z-gO^r!iFe}MtdP7xPY+m^LFw(2^xo9K@8ObVu%mO!ICht_NEUCA05Xm-|+xh6fQMd zc`KZ2B+iJRo(3a2>bF21yjBADGEcQ}0b>=Aqb<~@iCs*a{sCZKd&4PUYD|AL$2cUb p-W;M9l^K=Z>hKLuHxK&f?GI$4+yVl_I;8*r002ovPDHLkV1jPMc^Ciy diff --git a/graphics/object_events/pics/pokemon/followers/fearow.png b/graphics/object_events/pics/pokemon/followers/fearow.png deleted file mode 100644 index 99508e3be13ad3779dcd38d71aff4be9ff511aae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmV-01kd}4P)L0LHwxv6pK>G`oyd9iU3SrG~0$*BPW0RR91J9O!800009 za7bBm000V|000V|0Vb6__5c6_rb$FWR7i>Cmc44+SQN)^HK!Q_s${sai)^uwENLd- zX2=tSJcGAc%m#u)z|yXwfi#goXx?JGG-`6SoQ)V_Lm-$ynnYmMOsBDh^$fXJx*wYH zM@&*|vA6M&?#J)^|L2~O3HjfQ#W&{tA3T5j_~v=|;{G6Dy76MM35dChTS36}uLw64 zY(B$wOyJ)e0HBYG{4XZ0NNssBUEjQ^2(}A1I=Q|O5K=W6#REVlkA>$GH4pAUfe~vL z{&o>x51`ahA-+|~M#$7lXIIVlqNF0N(6ce7YWeYHz=+jvWEfzscVQtz&)KzQ7%-y< ziUGh!>=cX_N0$ks*^>heK&P(>(5nCuGm1cq^(cCXonzz2M@NfIz`^X%fwDX0fUYJS zpiB*IkE(feH84~bN#_~GGXvC(*twNEZ$4aj{_6Hq(4Q*}AI!t?-Du44u0o(>Nu z6W`B zOi4g2KJ%JXCTlVZ3RR;Kf9-aPcvash&tZ#cLl1XDKhIv;#wD+6?o8?GlT5Nfe8p>$ zA}-a6Aj=XtJ30}Eb4472pOxoO@mt!j`0&#o=r#p^_9X)Htuyxi@0BeRh7d(fQZ#K; zRY|4#Z=WmtjVls=_mt;uq)ITpd;g3PE2klPjw=DqS^e`_ZR@rQOI{NkNK8_iyp$5! z1dEC*s<4AZ3NiAH+cT5t%;TZ&iYt-jy}_#3qVNq6}bXHL`?<`Z9SuO zXWszGQx4c8()0IXKbBaUUoqa}gF7giX#C5tnTV)~J`HfkYG`Xw-4;YBl7QZG(lm^F zuFr%Lu~hMi0K66e{Us1J(Q$}#ZacBkK>}P6SsPaU*YJ}h0CP1J2r&zuL@_h#ADG3V zyj{Tnz!i~=vGxMeMgz!2(Pz7QYqA~y0JHx6MQS{uEL?sHv`<&-~(;-fHl<%9R=}HMs;#)06*=vYhiw> q6FI&9--hoWP@7cz`i6!7(fA6lIobLU2fEn+0000K)G<%OKoke?iyTP@77~qvWy6FKA~6gO z6%Q;H5(f@DxR`)p&~Ly1#v@Ji3z+yN8W@PMn7SDTqJxR_yGTiC-<{!@98CJQAHDZ~ zcTEq3qKYc2sG|BurF3~);)3o5Z>qSEXbJ&JMq(O2=N^joYRlxkFAiu+Y+8Jv=w(A% z?%Y*&y~{0)d*~SpJ1nHLGUMs(+j^Jce4yttKNF9dLz!c)`?1z!RL{ad&scb+vB~2= z<{WWn@JRVuXsmucY=gk1m39~QBV+2mYZB**H5(2nrrp3sYWh9U!@#A>j2}>)xpPh8 zV?C3Ew(fc>aBaAocU%9)*d(ZLU% z!2outH&hz7C?;#E{y<~isf}$K1p2nP0sZ^&c-RL4p26L=5{w>!e-ma>dgKqR%ufwl z)q|_=yAJaaxlkv&^>E95&ke8#Trl%sy@ePf{=mv}=fqI+LEyq90v~c zjNuZU@eNiGfM3Z@-9aT_T0KCd%dJP1CrxV19~nB~6t3Y-PB@26^s6x0U`=Ks>_%w* a)A|9^c&DxN$UYtb0000FN0a0ReHb>CrJsxTT^U00009 za7bBm000XU000XU0RWnu7ytkRxJg7oR7i>K)2j#B3zr7gj9`)1!+4xn*Ep_Gn&Dn5)VNVUPEF`Yl{ZdzM*VZlTxYSbv zq~WMh?%f-n$YmcNlvqu;>JA4Cy9@6C;xg}k`v_h%*Kgwzs|iO9m}r1fbNqZ2`WI{8 zl~_#>M~6cJ!=8DZu6Sd-ZH&LB0OIIkyw!w#aR>jsQ|^`Yj_!~5a{(VS8F;o9kF}bx z^%ch7Y?Pac<3q7C-rd!?w>%9@#yf30Tc2V2>4sZo4x)JoJ)YCfo%OdtHLQC_oz8DP z?*0YcA3`0Vomb#;OXZdT&F0vCZle0p@4sy=gJ3w{kx{2lrS&C!v^w|D1m+G%)=w#g z;|5SF)BpzBS^po^YV{r_CNMP~uw_Tin|(U>)1?l?QD!H*B?csrfg;2ryHL7?W+Iz_mb}oXB(zYh z&4uucec^h1`E$?B0%bvM$O;g7>DK_ecC?*NuZ7xJKQ-i2K|*A{(j5VqY1=?-C*Uk1 zS)eS)GuyP6_SZsrc4Q;gxteeu=eDCKdEhw+OgOqp@>}>3F!r>Oc*Pw#-f?&q2*gt+ z^_S{qe` zgl0k~O6?SO{AR-|0^7=D;A=VC#`4L}>nk%KCD>twJJG`3yGylgy~5fP=}$~S6t%i{ z=;h!7q?4#+3Rp`~$m@w2z!&RYm>8ql_RQj~ehZbNB{mGVNlf;^QVOm4+WS6#o03FTNl&E^A>i_@%07*qo IM6N<$f_Wtb?*IS* diff --git a/graphics/object_events/pics/pokemon/followers/finneon.png b/graphics/object_events/pics/pokemon/followers/finneon.png deleted file mode 100644 index e1eec3dd80f23b0e8c421564850ea42d89b5a109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)t$K>+~)Nnv5BL2;qc*=Yd*@p+;7xzRC6K>z>%000000000000000+C)>e00009 za7bBm000ie000ie0hKEb8vp(R7i>Kl`&6)KorL>cb}j~OgbK@jp+oXGBC<5 zvb7Zl$2Mu4?WCiLhOg052l(JY7D%;t63CV?ho)ImO^|rtAb8B=T&I1vgptgjfJ?+9e%A+?E6K#CB}t$3(8< z4F3$gZ6-K|Al!3F4WvJjZM@fdhZPF04fqWVt2x4w2Y7*uLsvKk<1@BF5UtoSynvpy zQJ0r&(I)8V61rkIvQWo$5S>g<)Opi{CEI~v5NWrCiD1F2eRdG!T1WBDT3duA?s~{g z7DYHY92lQD2SJ?dU>(*$9PguPo(FZ8ADH~hUY_S$WZ(m1Lo8VFxDMj=CrtkE-VO#P zS6hD2@d6tH&wdarca&PgLlC{iOP>eYK)G=$@Ko|z#8;rpaH1-F$kfmcFV-WO= zT|zTSG){srrp?$X;RZFCTxu^Og_zVHGNp@BJhTA~pBy|iWRS^J$RJV#QAko7{f3^B zNcwbGrck<+yo-5s_ugmD$b>xRF^~CwG8|0zU!M>5V47zJLz3m3oIXo*80lPRKc|?K z-!VDMi}p*3*F=Xog>%;$WLts@_n1s}4jdcMbkTPix#zBn4s=3$XnhO%dWLg-0Otq| z5PbJ+wAJtHXUP|ILi=bPcru*Z>Vu012o5t|1sh<^%k(RLo|War3t;#c63ydlaN-;* z-V_65dLK5f@qwawq(-o!`NkAG0N*oQFq=1;p4^G(Ff+lbd8myuT@Dyy+t>0$cg=&7 z;V3y!bQs6(nY}MC$Z{D@8FMUoqPvF&CluX@=(_{iFVno%2kV04D*=l!NM3}LyFK%T zrZYKTOFMN%u)U(`_LE{QWfFDrZ!NHny`&Hz7gjzSBR;J@n|68t>+I=v{p)1( z0{qxX3cJ|BnCX_6fA+M7O~^Vy1qRl}$9i!ddnfATi{DR;x7GObYu~RobFK@`OkqI{RoI zzsAmv;I&2mdg?0igW20Xo^kcmMzZ M07*qoM6N<$f>ir#N&o-= diff --git a/graphics/object_events/pics/pokemon/followers/flareon.png b/graphics/object_events/pics/pokemon/followers/flareon.png deleted file mode 100644 index 280b5f4506144ccbbc9c58ab9a3222d9ed23ef60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmV-C1H=4@P);!BIg$!9gJa0000000000tNfAh00009 za7bBm000XU000XU0RWnu7ytkQvPnciR7i>Kl`(7EKorNXsEbC&7@9F>G-Q)?61KoY zz=mMR;uAOcV-yEu(`*j)nJh}=Lls%OWG}QOW3v?eq59-Vx+gUXDQ&mBNk84)`|G`X z?}?CCd$m_9jj`wO@6F)dXYe2RcPzUZ!Ri71X@HJHyNzf@@CF3a27ZAVlvV|RbqK~P zGDMfes|IdEKsew!gE4RzAU#eg%8{|y7@feB^9DY!*%&*lGlcB%V@zOJZ0>3Nf3vO?rgD8l zErvN3s7!7bBT5G!q9!II$MXCWEimyMt9?=kyj#gDzpRUrQCZ%8Q#kE2X^uqA~$tS6ElNkti;b zm^5;Bx~Ch(m^!*M`*JAdq{E9=(yRsixi4mH*~nQR(t}>fJ?9`3c;vyySdLUjLI_sjB4wF*Ng~&YDjn1r9D>BP=9^40 z7c~0eoCy$^kqUD(eY{z?2$#ZcV$-9RCD5HHVNuI3C}mU(p|vXPK}hK>8rCwaeYSwcYLX=W>2H z-u*~X-@pJA{1`g`K0@rKtv3F>m~rcHt262{cJ`p>n+nEkR~>iej`=ZSNaOG)ULP?Z ze-KF-o1j&wl{9}keanbC{a_m6l#JXeqZPx}Q;01usaPX=oM0000G?S^DXF>1(YayiaWO$*dAUg;y?Am600009 za7bBm000XU000XU0RWnu7ytkR7D+@wR7i>K)-h|_KokIA(Mf1?ha_YvIVd&4saNA6 z|H5F5L&#E0HfM3jQrnQk2sK(d1|kb$i^Hjx{sM!c1i6OLLMc83%~CRS2pEKjdp$`f z>8wcd(6N2nckk}K=aU5Hxc~9bgz%SM8P{sM->tB)!rZmJ!s!FR73PG6ooYV+J;e~B zTQ$Wbv;|Pptl!$nh6`jam~_aYNkPQiSk&H+D(y0N5;ea-7$Ga(0&)u;2Ztl}4ot?AiIrji zz;=QaG}}dHSTJh$0KS;bF0Dih59^J_b35Mc$;S&5zX}RQ?L>e09(}p&t4Ze08YG%r ztogyG%OO4s3P$Y~lr8k_@k~uJ->8GF#t|29UN&yJjc}T%$uI66Rne?m57wxmpVtrb z$OKFS&wieV-SzPBQ*#5cesVKz9sBRDK%JwTWH2P(4%UJ@YJ1Mng=e`}!7yD)`T!==xNr1;17{%7q~g-Vx$EDKt5-uatI6d#xHR*zxV>*JPtD z8*Br|ryI23{N~MhK@%ap0pi-71Ok(lTE4WH?`01X%x9FTg{Ljuch@s*zzsmJ_A`&i zB{lGQn=yH>fw5N|fo76ho7l#7CdoVydu@OX|Dg&%tO3T(4)Rce9$Isp4cyBp54d#@ zSlD;G77PeQ9cn-f4d9YVL9(*+?KvC5hC)Zj)z_NM3R;NX^ zER)wDyWjcWps{(0TMoVxS%})*)MWC_r}? C?y0Z< diff --git a/graphics/object_events/pics/pokemon/followers/flygon.png b/graphics/object_events/pics/pokemon/followers/flygon.png deleted file mode 100644 index c10bcc0b3c3efd853cebe87ca09da0b8b61126f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1067 zcmV+`1l0S9P)L0Nf`IRF3vh-XOw00009 za7bBm000XU000XU0RWnu7ytkRp-DtRR7i>KltF9bMi_>NMd+a0m=cN$r53@59Qq4- zNQ$hQ7N6?Rg!RVAjxuq3Q;^z5dJxl zh5M?3mib~2N1yKgg5?oc5Bh;_d_B2D~i-B#|wE%^o5HyJ=7u&d^>6;kWuvePUh)kPR zxvvljLEp(gFe{iZE)25_7~}G>X+#4|DJ~JqJkRx8>7gJp(ko92`tFL- zu`qbs{{nnh8VZAy8Kly{Jj{vQjX{^vd2ZmZ=#?O9(S^Ga47&7}OklA8+meDCNJC-p z@>l!!z>^WLIMH{hpGpVo9-tTHT{=H$aD(=BmokK0@EUTxS3jrAd9N7rGTh}4)LlAK z;Y1Jx-Gy*49GCQnbC|W?Qh+N?)B>P4ULkla0=`xjNP*8L_MPnJ@_E(4M}3@$Lh_g3s`1 zf(VY8g1MT5+vt$~K6DqJJQKEM{vlEYWnyGbJG0wrGCj&1%@rJfe|q}k>8J_aEMgNJ zPUO7d`lw0g?QhAbgZCR<8s-Xo%e;+#E+`YDmmmAM_vP1-xM`*{39Y?9UOZHdN$84z zh!aIdcBnxbI1aAC3(Owsa9%Rl7DTZ&wx4}f9%@9$jI8p|BJnMWb_x=-voxZu8WEyy l$=?ZXl}4nOM)aSqKLO)QtuyVP^wR(U002ovPDHLkV1m|R@Sy+z diff --git a/graphics/object_events/pics/pokemon/followers/forretress.png b/graphics/object_events/pics/pokemon/followers/forretress.png deleted file mode 100644 index 286ecb983e9b709c1e95229d9c372496cc81a3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)FN0Z0000000000bn^Nu00009 za7bBm000XU000XU0RWnu7ytkP;z>k7R7i>K)G=$@KokdXAu{M2c*#)gx)^)Q!y%AG z1cj(KI-D16fx4mn02hJ>6U+FjtR51Lfi~e*BNMm}5Pz)bPI|JWSas{tDgICX>Hn;E z9N31j%Pza@@{VHhfAFT^IOeUq+1i_i)yjz{Dc{nYhE>K38ujO+YDYApRUSu!!55h? zi#CiscYYYZ5T2dHPGm0d)-M1!rm%WecIf~`$HShK0J$$0 ztl~ls;NbkouJCEPaIIYcDd(%QY<;P`eR~|V0=vS$JpdUiG_$g76)xBnXV*`o3OmU{ z-(F|eRd^uT_LAf5h131o<9;oerJg1B(IF8}TnMt(!#6GXx$Hg zgnKWgT{~T4j*O7Hv z;YqJai)GO&)}%iu{vrN_tK)xm4pP#g#FoPvSf#{Pj|M}#sccqwkX z>{To-86AC~w@^YP2X`FwRs_M)4T7C^nKSo#@lYqogB`XVcJSmxCL@+c|Z@_66hd(UU&xSP7E|Ds}ttL>LjU*TBgz^J<)3|A82xzOGOE8DT? z0N|(hvYqd1ESD@Z6bJ21cuB}tIv{KTUl8&ho6+VCY^zinv_C;2q(ldV&Dq4QDHm<6 zw$?~fY0zHP5@)Gup6!Mg*o(G+O5#x`STeN#Y}&a0v1gl1Pe>+ClxW}D%!o&%y9|TA zoRIDJJ9GdrLYX*1(SEy0D(-%kONRC*JW4(Obe1%kMo5yv4FVr0z4MZngV2|Ow>#Ml zx&biCNKza{`xt#m5qS_a0QT$0oknlxA=?wlEhXBTypfa#!EX!NFZ;u*?e*yjdw~q| z-&mkGCXn$y8hfLGR!MhC=c4b_UJ@Q@1v`Wf6YawUK|KmQRnOFc`+ckSs?v8R00+EcgZXj)dUZ zoz%`1qu_Oj@Om_ppnU9Y`PY|@nwadIc56cNv+eUd_H8Sg_P_nRZSu|fr}f`f946ND zj|XGz`e}}z(N_|ed49exIP=9bdd5Ia{6Z<3t_sd}{9z=|7z`6@I;9l-BvsHzeKKF| zp3qkkYdQl!2CAR|8UGxg&{q;`Isl+G`y#mF{opGi)%k(JFtKJ9NpeE03chkY&J~gJ zec)hL82E&NU<#1l7c@O#xKPB*_cdmdB8L@Ej1xwDej!;E6nStW^KuZ+zK#u-r7WwO zIN*jEGEfAKn){jtc4H-Mw~pfw({c8Pg9X<&lj zw&;8{GcU_LV2we;gykR&M)g4odV$eZ@Fx1;(Ej%NvaeN6 zXM391w>kgC8UqUMxZ~QOh`R|oY@lHB@=@75@LiVLw>f`l4A{>t8FwrUm@5r($|yw! z3Y!byC*8iyKbTk(2EWPH>A7Hg()cy)@FN1-iP33kX@M~j0RaK|;R#W3xv{b7IZ=6Ok-@n^82|tPFaD(e00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmAh`+FcgLba3~+4dzT=SQ1&9I^dn^I z*cS*gHiH8rC=?4w2}6E?juBA12liBCYBvpK6?t+7BQU29-t-J5tqYHts0Cc0Q~pUG zDgOWAMU>|~>QRsSZ({5pn22bn(`AqN41f`TUw(N#-SKnT3uUg!an1o8D$jxOlrFUk)_1pb;q?Eezt((hQiCiePPGmRF^_UK(x?U!%q08I0 zxTn-Ih`Je+f)3UNkFM8k-#y-neNyTR>t+rRK=v??^<2NLqxNl=s{v1Y%Zsd=X`ZfT z(Zf7m{**UU(r&BETam;0-Id?Tj27vtzyVvXiX?CmiYROiUDgtUz6LnOiH0LlpJqDr zlU^XbcGk=@Ob)6@@*W^gZ8?o*H6WGLBwrRma;K4frgJn zla~e|Ksu@ob>P%+9M%<)&8cP^KsNfSni4#R;m5K(KWan8?T@lNJ7`Gw6to&c6KFUh zb(v)ILMdcOejOURlz<%Fs01cuIY5Te zFxn@*0wLIgK`L&$nG^{&WFt`kKGx*(q~9N$_+3nMK3it?OS{J>Gl>l~2StEZ$a|g+ zCj8I_TxEkv_{@X$mTk$r zh<6Mb#|xx2)aDd5ndeKi>0I&*|7WS-S%LzGD6DFb&VB9lyKOYW^;dJi{UUY--)s1* di2rBq)Njkb-_w{^ChhFN0yX<;$3LAfzW1E<=L00009 za7bBm000XU000XU0RWnu7ytkQtw}^dR7i>K(>-h3Ko|#bA>2Vj1{o467mQ`xv~o%) zw2SegA&bz`euKu)KtF*=z?nKUo8*|JR|OZ35qM~t#azCCiAy`R&`^pzwAkQ-3>g9) zdM8`Dmq;!&rBj~mclX@?IZ3u8-PBF}v-DuTJW#@U)NVQ(~ z(b%W&L^LTE1sxPPsoq1AF8YydrM`_2qJg5xQcFia>nJFJWRrn7kh=i2T*rAR7YB+a zfrBCm96so$7!M?Y>;;P0fa7dVbP@Sd+-c4 z)AgIvraf~MC^>f3t6KDl zM#Schgq7lDL zS%TTOK*02S6)r4eT2}^4&!iy1{L+7D=p002ovPDHLkV1iOX Bb>jd4 diff --git a/graphics/object_events/pics/pokemon/followers/garchomp.png b/graphics/object_events/pics/pokemon/followers/garchomp.png deleted file mode 100644 index faae844f780ecf293a98559c41386c3b9a2a1e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1162 zcmV;51ajQK_k^VR51P;R%5;5$Wmqd6~&+X=wle00000EV8yV00009 za7bBm000XU000XU0RWnu7ytkS07*naR7i>KmcNVSHWbGNBI>sZT)1kAD^e*acD&16 zmHY#XkuYHjAI4fUJ6DBWrcI1}f=rV#kZJ=V45UgENEMb@W7s{(j$+p5!Iu|AtNQ_w#?&Z&Lm~)`T#PfAW9Fv}v+*q&H_~IjfA(WchHK4X{0G zlC&q8P_3s1Gp=M>?yPMJndK+hcDy@wTzg)51~;omOEPCt+7#wnTdxlJDXwIj0UlM8 zoo1Yzj{=@Cbb#I?bcP70Tw0kykC7pO3A1O5;=y3X?v>9jpPgNbr&y2#1$hWy z!lh| zEJ+>)XH5TunenYux1At944D)9{qKZ){v}3b%y`>6re9$e^kORtqr?3(WBSLA)Ann< zR$kB>BG+VTz#y`m#HKMV_Yq@89WM_~g#HToB=#XVO!%X1a<8}F?eB~ibcP1`wm2p? zASUl&MXCzMUBr-4$Mm4Q#@Yx-X?NczxUQ2Ci(>ahyV&2o@Pf|p7WvJxE^z(R3|`-W zpl}gKR&<=C-BzxzYPh`8U7x~wtIfcyNld(0EMC0XI6*MHYLOEY;kq*!LD?@MCg~!M z<)P*7UsLB$AhBXHpIZ9g`&* zRD7voD3L065A&Sk7(S6w4@M~$44N{>kRk0WQ3{imrBoz101nJF6Y}!tld(C(quvuBSvi!e-n;|fSc5J`WDN$gq%YFkz+ObK)7^8 zG3tO?8`ufb(H9MWjtoKYs3zm=sL(KU{O!^avko!5K;CUr!785&0*_y!Vmkb8#|NAK c06*FO0lnWrzacW&@&Et;07*qoM6N<$g7EJdF#rGn diff --git a/graphics/object_events/pics/pokemon/followers/gardevoir.png b/graphics/object_events/pics/pokemon/followers/gardevoir.png deleted file mode 100644 index a1fcb56e4d89a52257d64f86e47b5a80fb47aa4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 zcmV+q1MvKbP)K*1>DjP#g#FCk5e=izPYuTn^I1pxLFd zld%ax*}D{S-EIS!UN*slg0=n?$yPRgDGH0wkrbg+5n4eQ3yARUqh~=7{|R5JP2YRu z)yb~=K@OiZ`F>v?X(&S1b3NB{*#Ynu`lC+;YY>TmPAQZ^X0$Z(=dFj_yyV$5hDYf|F7uh{y z?0h4pwb>3So^DCYW!~9Z%hz~u0blUi>(0DDaW?C_S>V0Bn#MeE)07M5c5SxVYSVdv z;%Q*i_Uz{KxTZ0tln{&NkDg>~pIw}uer)6yE1sT%SC)0V4O*AWgz%%#*diAW2C_J@ zhc&%#)b}Qj-T4W3>YN|y^4m={&m&}F-V#ojWI{|K@Bx`DK{b#$2=0qe1!8& zhqvQooD76JGJlyB;&D}cF(5oTSV79%Og4Hyg~#+qw9ykjHWD7#*Loa**p9}Piex^+ zD2T*!!;=HiI7-4O*4l|8Y02EnaszfwAgPLu1IgXK(FdIkXTL8l*>HNvP~IdQR*@qH zgmFN0?DLDZF0dZNGQ8{Uu2?e>ixruS1IXO810000000000?9O2Q00009 za7bBm000XU000XU0RWnu7ytkQLPKl)Y+OF%-wONpQD9my$`44#BUHK0qKO z;4FdG&CtP%ErT*#DEJEc1X%+O6gqe@H=wBj-_`D<;}nQt7T1mp)xxTjkiaRX1UkjY4j)ZdDU_5z|(l z6@sME<|pn+4ZAhz2Fsiox5iXoglF`vdXbGb9g>*TI$Sz^3~{dwm#%dm5N0(oJajg< z!xBsg{a~heZWJ7I=3i9@`y?HyY=M&(2SFGPZ?&<^q5$Zderbti0i6?sup15L5NWz; zs5kM@Efb0i2V)!HjBu!qQP79y=CG`wPq(*2^!7a2?>WPvK|$h#S!A9B0_Rf@3{yGo z-BW3{Pkfh5Q?i?A0Zxfd&pl#)#U~fZMk(tv&iOP3J!gM3A@d~ZlA^#C@VLhsY1wc1 zXmT%OaPj2Rk3&Nuwi#1l zhU6D0;CO18E{)iLwIy5Y7Wd%&j?QlBxXlH^P%LG(?Rc`*gMxVrT))K yN~XDCauc#&&@&-x$i7408v6IP)KmAh-(Kpe-fAc2-b4_n3rO$Wvy(80Jv z2_CE>C#GbuM3fim;2}^l8d^c1U_%6^c+J*DO-w=c5(+8AU5xDx>J7!vG5<@?58W#$ zLm^Aa4;%Bj$M#_cq(z@M;jJLo?9JiI~KMU2x1U0qat5-07xzk7$YLc$o z7Wqk|7Y*8Ws?eJd!3#_Ul2CO!Q$Ef;Fd9H8BZzT4?LA8qb|$1hKcdSLg_;+a_`m>P z=wd$T=>v@W1`Uvf9UVu5Jf!`iu!9M(FwMX?Yy+WsBO(YfZIy*uhfIR(oJFBW1Xh)H zsu<%-OBC!(DpRs$I!G1*824v9gpggpmvU@=llvqAy7zOmK!e!4sCm6 zc3qaG8`(VLPR^>(^Yfnk_UW94-SaeSdCOSU3t@Jvd5oAcl2kJE)_#>fa4d2D2^D61Q= zf+MzMS7I^(=7!gh{lD)Bw@BbMC)oNXuoI3eBN#T)80^85;Y~9~8)RX3>juZyb-E>O z&Oh0$=!C|&9Kn7XYkTnPa2VzeQiNJz?Z;pc>+4B>uw*JEXJm|Erk}>zQS;02dw7xv zWT94QR`9RV@p=ja6_p_@Z#utM{B*_id0vQo-#_gaQiLFAX3AxFoUE7#7R&@Q6qOM| ze^&ekEjbYa2NiuEp)?@~=C}4*fgXvoV8kw}kBTiszRMPM3CO1b+vpZOpB1Zg!fY;_ zu>cfB(PtL8-WZC85;jUVZ`*3IS&p`2fJRNUs!`?>0PC{RLP9QVo|FQWXFI N002ovPDHLkV1n$Yg1-O& diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_west.png b/graphics/object_events/pics/pokemon/followers/gastrodon_west.png deleted file mode 100644 index 4abd6c42aa27fa6d1103ab30359abbba77324fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmV-`1AqL9P)KmcMJ;KorMCIDux9C0laH#Q`lv1(BiP zTx8UwDj3D0DR>GbG?2}Pi-$lc863!@I4zY46lW4riRl|U6g>5R={b&cKU{Uo zQt~i}@9FOQc~9@|u%6aW?Io06lOxSA9wF~=}Yv5=t*BpG|3CAo_NH2m?d2snk0 zrUHO;2rv*blz|#CAs(idfyTL$`Ymk9s_ za2_atpn90X9xnER0%QZ21(y;KeSu48akDKLw=)Hx2Zvk!F5g@#&<&=5*584Md}jdu z&b1EOnbKvA_@+hp92H1*m|u<8Edh0NXo2ueg3SanrOR&X3eqbvLm7w~%&#i+Km_Vr zzMlk*qTJS13RT>Y&K?PTY!M+t6{t@Ee7*$K&BzRKJL47LMj+_ff@pMoDP*Vs8Nd|* zvVI#`DJE&2v);qNdX!2v)K={0wdGPEy9@b~&6zHMUJqLdel{r6#%ASW zbQ3MTDgheZO2XQ>cvPY_ME5b?Kk(`$+UUl%ZLbXq0|ls^RxE7c#S;#=*BmgR@jj*W z*MojTXZmNpfYOd_Q_3@xfm*-E4%X^X4w!xdrfI#qtnV@zzpRnN^(_?BE z+rpbnffH^(<2e4r4L6*rwgv67`L6dcg6ytKZQJd<$R}(&jWF~$VEg5S(%)QfI3A@Q zH`GI>8~ifVL%rj)*yBNmO)cy=&9E@gr`I{+3#wr?WWQx@aIZBUdZ_$!Q1$%4W5pjq W`fSlCi{y6z0000nNc}uxw*NKd7&vOIoV-h0RaK|siA36fdBvi000000000000000rG`?W00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Kl}(D*zs1Z|i_wj!ROWtZIs z4TDw&Vb$aavod&`(f9%bT~;X3yi-^4Y@T_Bf=ALCWvZOnF z2+TaYcynM>aukM1+2#{^0r&U<^~et+1D1eCHu0V-SI|hxu#%Lm3B%e07;3*Bd~|yxN!lWe}JNFn%MB}Vg3uUt2{6GB6W_RCyswwiWGgyhX#uhGO-`Cv{y`U2+2UWMs< zl6NJXS?uRS)iyrgQknwC13zHnF@4F8aAL&?B9b94Ra_F=j{~Dp)4bI35^gU zG8q!HhNU>o{3me=4NbfGADA&z*<5k*lI>&vU*4tgf2QAtq+v{>j5T8b0000lY{rh4U*TqXf@X7ztOT+zl;u9;5 zyuSJ{@*Tqkv8l5xjX3(3JBmzJ72E&FxZrrwY13l2yNyl$oQmAS;)nPI{g1YZEnB;A zB}fe0msn_)ALL*EN=3g!k4wyy!yz@+1+-= z>>cZ=dA$9l2XzhkF~6mm55` z_wJf9*EC>$@b}hj_m3qdKGJa!|G6}&^A3nmPyxdJI||mbgq5= wYoXQdLTB$zcXN4Ixop+^n$PK(?Lt)Koke?fPn#TZ(c7i;xz? zQ`pY7wpR^!jmQX|GFUp8ehOjt1B3)e#?zh(`sM62CYel~ltmUi^nd%!EALG@GnTc@ zHrs6Tb%Hkd)0rjR{`3Ym4cK7DtWI0#k$1X#0Ak=;9hOUu+ilLxMza{y9qX2%4kTSh zLK~nM%}DIE=Cv)CSmpp{W+y2ZiOI`;;40hEE%(d80XIv`rXDbZ5s6)<^wTXf{~;S5 zC1z&;+~8euLw)7Mbj$p_&PZHbg=Pc5zQIFsBYfq=bg$N)PRZ@bV`wx7|GR7O@b-+o za%F&Kndvyuzdy1EWnt-OC`acp&j_Q7@*Yt3MKnXCJ;D zDfQCjRkVi$pt%5RmP_;rJNsu@-4IGwTSj6IE*zx%L+@OU`Cr(8U;lVV8!+z=;gG|n#xjAv6X;C==0Rc%-Sz&RR24XUB00009 za7bBm000XU000XU0RWnu7ytkQcu7P-R7i>K)W2)nKoke?8?>J3p$uL;b!kR%P4Q5J zi`C-6hC&FqhD;3}3hwHuLuv&w)Jsi5kJk1O)c+w{p&n(hi0WF#7XpDmhIkBkC{(Ir z-Mg!Aap{%^9zG}O`+QG75W27Xy01m0E*8Hv4G*m{LSYx7>(1J~dMn4N{^tfa=W?8C zgm8T}8x7ZX2zsw_bU`ib)P{PeYV%(0LT4OyzDa3{5en?@7|SdVj!!|q;R z+JIt&##YE!$870*mVLq4UNg7am~~&%JlKHZsHWR2s;z<6l-6pLYK$3c@4)#gj+ZKN z;K5L9pGK9@IK|iz3{)Lgal}~N(Yrvmw&`Pyqj9!(Uy6f?4O?vCGh?T4m#S&ir5fX~ z&S=g}0)-1Czr4Ws$k=9H1gOT8bGgAmW$7R6^wP?>JIlbt#uF>KYsUMdSC3!=#i&fo z01y>8UruP!-n_KTiHqzUE+nYM+>OXiUuIh9)NuqdT7C&vzGr!o{m( z)5f^!w%`s_kB&c;q2q>k#ueu~CDbB(5h%xqrjHd(a58zWx>L@8IKV*xcx<>hPR#% z8#E~a$9=`|$A{81Y_LzM2|V54rDp@^pbYG13s#8;j}=EVKP)-~KIf$99721gzNhzi zzxbi=d3orPC*I?@0sq;60gZQDYS7?ZZos)XAE%u`P_jL+uo2kse1vbJk34XU^P%4I z`FQr{@dO>C1>BIncT)Q5CG`*dB`zP(kA463fB*mh07*qoM6N<$g5W%G A+W-In diff --git a/graphics/object_events/pics/pokemon/followers/giratina_normal.png b/graphics/object_events/pics/pokemon/followers/giratina_normal.png deleted file mode 100644 index b26f4c55716cb52e6f10e36ebb3fd51c9421cfcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2291 zcmV z-ska*FSW~b)Ao=WA(zY^b_!E+%dFP>vQ2f^4aS172YX-_9lH(`eB2NwpyRT%haAkN zR8Y|W(%*ZsZ0YHzq(e^y{|1|kKGJ*NuYSMx(~}it6Pwt?CN{B&O>ANlo7luAHnE9K zY+@6e_`i-I_P4f3^Z2nKjsNHCmyu^I8}eW$`0>DwPiChSXnyRFpH>iFUr}2b(!d`3e0O;u zX+Yx9|JVM)3fghq;%>+j4*e8Qqko4x_} z@=)MjC@`!L#K4k=t2mhge>p*I>U`za!UPE?Jt#h6n{Jq!30) zmjr4HEyZp5aa=C)H4Xw*YUyeHYfdb}PLM9NP}KVLuis3*n-Ed-@eHe!3y5(LNa8mj zY^$Wq^;LBxC6Kq(#hM2}Y6&QWeCHldc43iPsDm}9jK~}W3I}etT>a>6xM*VnmHnA$ zn=1}&)w+xi683$SGzvvR*3X654dMetTtk+C(x`p}0>vUGjHMl{Ih2?sK`sz#Lj9!7 z-jx3+mPtb3zq@IE5LXb08&H2_GG@Y~Hb^$9P%&F^(JAH4M5pfV92dXlU6PQL!X&4O z+ZzeAmHLN2Z5RJl=Sw&tP`#wWK*U8K*q_A&hOO^uv1u5Mosi322nu^c`dth-N}}acS(>%5aavZM2cX7+1(|zYtvuM zFDvd7SfF>a#02e5y9)-E+_w%o?c@Z6_Z3n&^Sn2u4rEa3Kjy$j5DEjF> z4k@r#JYd)w1%Z7+j)|qWyQGaRf{3e^Z8A$5&;sa0TJ`C~ICROA{QgW!COCj1Vs^x# z$Li7>m1_HTZs%LayBWJhcwu_6l#$$7Wk6ZGsqxxHTi{ESVx+ zM2p;n3=PAoPZg8z|dxJTB2_G@U5f3TdUXNeK-VyO`P~OL zVaB!RdDqu{{AZDeI0!ThchUlZ?{wTioGY?{#n2({&*qmqZ(A7x2N55kzj~<63vXl? z@I`S0D~@#_F3^Uzh0=fvywX$pWS)-G(UGX}X9g~CxZ)0Opzni_)kpO`#1-u? z^+JiX#w~B`VG1AM>d*TZ*Dnn7SKc`;@bo<5gA&G@eKLR=AM{CKy=qFuac4F(sU=L{(J5Q0WUTOsccGYq`A zy=^+q&~e6&=N%ngW%CP+GkWTL*6W>`XIE$jERPL1cNj%E7swasdFJ)j2>4BwK_x#l zt>^z3TQ41lH9_FH%ne3v1s_{S2K^8x#Vs``#gXef{XlxX&Q0 zGShqh_p__pTljJYX%z-%%zF->7Q#Uw{Wu8Bp;JansPK5iIL|T&0{fnEbUt({C~rI- zS)6AXgc>-zE>Z8WX~0*@NcSq{9X|g7&gsL)NpUXFVu5d!w+yVt)uBL zNoA1H#hl+)InOc(HR60(8ajohF&q^L(rZtFnS(D&=HRf@PjN2r5r0*nW)m+VYEsTK z403^wpvzEd7`Oq$q?~6N1PNQW{qoBnhx`jWrT+3q*4Vl=`3I2*0>x2y@j(rcQm8x2 zAQ$+|IHIbNv4)I(p7Sh&;vSknEs}8xKMao|lYj0Js8)-34VS7R&oBrAm8N$Mdw={% z%a045VNfXSg9%*`U&sjjFq|Vk*#ebJ0pXxo2Dw1hlbf@24)8345cNlvT7-?P_(HDc zhv6LY$rkuvWD8J~v+@1c-p{!NF?z-n{4hV~zn1#`k^Wu({rG#we*m_s!vVHB>r(&# N002ovPDHLkV1j#SN9h0n diff --git a/graphics/object_events/pics/pokemon/followers/giratina_origin.png b/graphics/object_events/pics/pokemon/followers/giratina_origin.png deleted file mode 100644 index 14043a68083814d7afa85cc678ed6bab80c86c68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2017 zcmV<72Oju|P)VNntJ`Oy&(5ji=cMo@RNV<3kyg^O$5DoYjLzhe9XE|2I$6KcMEn?>Z_YIQ*O29-Mr13YsmUas=b$s2cQL+owSx|$VVCzGCdmWNw`pi(2s&`V!2yfL$`qv#;2O1L zm%?o?GZN2Ax7kdj2l+||9Y!1)RyiLf$=`ecf8#CPfw!Dk9cVrDe?Nc#Q+2gSLBwGS7PANpjN1u^hP!7|R@#I9zIVeADNBpL5}W&NObW5DEr?tJO8Sw+3x4 zyT0W6k-_oar3c_ZjYby&V=C@k`tPDDnMZ``QEngBL0_L_j~e24zD}LStKjM zZvVG?-Jfx%SBntUMhYi-kXeKtWD!RF7KIWwAu3#^yI#=1TEUDf;M!>rs|@<&`n99M zC)g#;A`BJIs8IsoL6}7t_3K5zn93~kbGQaF`nk&2}}`@z)Ti_E5gJG8OL-ptCZ|t+u$2p)Ybxu_e*srkByN5cJ2dEW zXfhB8YYIu+ScI&qSZjI9oe5gEL=nn6aklj+JY-szL0~!xnS$h z4ioim@nFocd}2KT9n7Gxv9apXosYi^J`y=3W86FxUNankoOtF9UAK8+`^lu3lPdKV z|87vsR%4%%Ii|1C0vNU-wtRHgb?*&s#Y`?aaQi2ubdqzgn^iEaFv>vP|xY4F*UF+p~?Rk(THCH~1UT}aZIKl*ls1-yC;IsVP!Om94R zdnuQr3kE0t6#oLc#G7{C^k5>+lQe}-u5*6$)%)=3%e^2-(&h;&to&G+)_wpg;!eHs z!QlGw@wKBy{Ugixh5QbGA*xjD1Lpb`aYD9IFG+{Zvl%!Cw4T%9sP|6XVF$tb-Q$~TYVU_;ngFIt>3ppXRChQXK=&YGQ(`Y8c^LONavKwHIfBn#2WknpfvPUpS z^T2N(=<7QPukNsYHyx#*O{mmoDd3QzC*CjV`A;_zYn2sou~nU>Z<6Hn!L+&l7kre@ z$@ao);KNK{I&DmHCC3!qffPSJb|2cRtcVk_Rh_;W;V&mUBV&Ch;KWH@ze&%Aqf^#g zq`fDG16Oj9q7)R)h{K3EcmXHkG#5Yi7C_-}WUT)LoH+bj&tv=P56Rc}pWFIC0Vj{e zDPz|J6LOs6u?IGMWUl`N+~M2L{z_hZPm;jtzXvCdhx+F8)fI5@4D-Ajw)LNYJ8OVn zybhiW>_1Q!akvZ7nUC_-6>(u9i>G^zO<)lRfe_^m`MzU+vxtKQL68q8;A6{;|J59` z8b#(hP{98?yCVKY90lfll1;?_cPsk;MV5P)K)xC<_Ko9`nEtc(%{5-%Va1UT(Hz^cO zR*<67GB|EFSRNyts+>b!Afyi{f>kX9QkTN!Kvx>W1wB-xoTdFa%L(L?%F}%s?+*Jn zM(7l$IK}@8UHko)zlva|d>|!#+yZyXeBL7$AWSU~$$5Zd#=1OObv>b4KyY;&%ifT- z$D$e`Gn7ZGu1e-fw-+1S2e(hw^so`mulv^RrMu{N%z^q`5aTjF5V)shXI z0wko}0>y-lonk$nHpim)vcC=upzU<3t0foi!g1WIb_*0ENSv87PTMh($%{|x>D!`B zs;(zI+f3dVlkd;yVI%B+bDY?12S_Hv-pBDRzvimzPhX!`w*twtIa4;*4w`)E zt)^v)n#a%0!woNb!&2o5tF%%Xho0NJM z>_U6Tot9p*x3yWWqI$c``vR>oZw7cUzrKb(>M(JM72E*^ZljEhy+=3hfCW0jaVp#7 z1?>J8fX}bAE+fn$#?QF67d3CmoNNcNSL){eR<(}#IlLbQ#qHuX?Q-?*!ps-8&}UH; z)25icOIi6NQJnK@jlh@{#l)apMivVr@u^#NfyR2UvlwG-dT;3u#e#PeUpwN=H1ke_ zpNRz?_}8+)6T2PGz!Uow&U2|7%Eo!DTTIATu;ku`v&0r#IJWgnp723lENCT~;R`l$ z&62w_vNb|QL-pm)^MQ-7vE|kSO122e1JqC_JeCLb_k_yB|7H9HKSnHz=hs;o00000 LNkvXXu0mjfEO1jJ diff --git a/graphics/object_events/pics/pokemon/followers/glalie.png b/graphics/object_events/pics/pokemon/followers/glalie.png deleted file mode 100644 index b2e15e52eb75d2dd61f6c0dc764c4444a5cc57ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*jQNE$;ilPY3Vt0 z;YLkOOU=fE2T$G%3`_(n!32k8f6oGnau#?*7Bet#3xhBt!>lwb4z(Eqr=@x$hH55*&L!bD zUT4F1Zc}T~_@C?ZG|zN@NB-mDAQeri|Mp)H3le{b^r@O;aWV72CN=~rXl|NMN<-Q~ZYjL9{_-ya(y zbm#4Iy8CsW%wLuZ_Lj|VsV2Jv?q9kdu;sg3d99LQGGnStHS;`0CK-cmzIj}+dMWkI z^Io&=yswjS{9fhvXBSe|aXsB0`fuBBYjgE``N9=9-|t~`juAiRnepk@geP+KaobvV z&33={Un@|q{98k}$^C{ELYbe0_UE)th+X*3O4~xN;D7b;wmD9nt|HQZHGix!dwjYq zsQmM-X9`Eya?Bo-F1TmmBE9(K9}cHauGTAeOP)@f^n9932}2;)#B`IX4AZv0$Xog@ zE$6AOaox_HyH2iZU@1y7i?`W5t#synr*{|FU`MyO`HmpKd*O6E#a( h<o3eNxl diff --git a/graphics/object_events/pics/pokemon/followers/glameow.png b/graphics/object_events/pics/pokemon/followers/glameow.png deleted file mode 100644 index 2ba92443e9749049ed11c1676372c12e3f2ff0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)Kl|f6xFc^k&5OT=Pi)VjB3KPBAKp8oE z+I_-y32ZaC{sO%^aCc!7y#&ncA%D(h>)L#2GDNB%>^+n|Yx{lg7v5wD9d*=Ee@KTxs(T(3{`ar zvmfeq$PG>tVWLciYh&ha1HkwuSFY5#*1M^;LOdES3YSRv|y6~nVY-&6X` zmAGEjbNyW!$IbQPg()TlxYC$;8CJwGUKmdk3}Koo|DA=Tc+`zWWD7z`l`(=NP< zL)vXXR6=BBMC2%jtkboM+`*5bAVH@MR-LOZaauxXcR2=;Z+_`N z|6HsXp_h88m-;t_;lTjdUAF7Xv)CqS*ACNe1M8i+Jd1JO^~1T}ZHTP5Q-osufECq@ z-A8o39JLPGFzp!P+Fdy57hvVr}bVA>B_JA{KH4uqTSKzWhC9+tq8MDjh$r^QN725Bzlt8aQ6M52fl{F6sAaU2rO3Gr>ICrnhSbSEU5lOfj;X4kA(mC?c^ z7R=@gqNgAdB{!c~c~wRtF|xqd9DAU3D*UL@u~TYJ3X%F%!6B!iX&{-AjG8qPiN2h( zn{z4?BQ)7)j`j|vK3q^yi>1=}R!C0y=7>X5UU5I-8$Zc;ngwRbcEAb3C1W)3VIT%h zdLI<;?TQB2VJxCR(m9ifc>}|$!Oi)yBcQgBWd;24*dWW)OuP^zm z*H@dymjhT%_{441prnGSYJfvZA?-JZNU(R%44^^pcs=`i7i}heWiUBe&+hM{YI39- zlyoUl*A1v(evu8V`|sfIHGYbFt&Z7o^~;~dLA7}=Unz;l`GWI0w6&iw42096IC??(sKTCVYIP^|@58~Ikpz^w>BqtgR1RkW!`##+68DQA_1-qtf}DU6%1AgXQ~wCIkF@_qY%_5?YL~4X2dKm7!R?}&1$d0Nel>Iq gZ9MJrw*CLB-x5@!LziqCmH+?%07*qoM6N<$f(>lD;s5{u diff --git a/graphics/object_events/pics/pokemon/followers/gliscor.png b/graphics/object_events/pics/pokemon/followers/gliscor.png deleted file mode 100644 index 30a2639de322d5b48f72f8297f5e17c4a795de31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 993 zcmV<710MW|P)+~)At_mjiP3o(5n*9rnVFgS**PI0A(^S+X(3UmDH*A$sbOJp*JR!r00009 za7bBm000XU000XU0RWnu7ytkRS4l)cR7i>KmO*RVFc^l#tX=XC!Y)HO7;-XJ+>UiH zgYCg)SYeh1C5OUFd)vhw2y)G3KO>}vfv<6P5&H*Ym%=Xn3p*{%x%(v9iWQa(vK{-; zQl3bDAH7NlMd*I+=YNcs>OVNybN%lEsSHmT?+q^4g1kFC5EM z*10Tp2oaDQ=`db+?^F6>a){U%C z@1rPE%W@g$KyP7%Ueh5fs3UMWuY)#Vqy%_jg}M=>Sb+*Wsx4!wD`fm=;p98)jqAl! zKd_kA>K5{DKx_iXin$5Qm-axBZk#R0pRc?5no}#_`Qqy2QJ(jUE179Q;29y(jUdqD zVBiH(fu3B(tuTW<2m`!74{Tt=d29u&xIO9TFZ*o8AVf84g{qMXL?eE;W&u)xc+85a z5l-2dA@oq)W+$-a+6uB&qB<{WvW5n#Q7cr9R3LovIZKeI0&zjj)&!dnnsQAOf|v~L$x5GLX6;3Oo)gSAC_bQ_u`%OC0}m>4Iga;i1_6I z_7_Bu$GTBSjF6~CC?vk140;_3LV&?Yv>^1A520s2`0;5c&~UyH48;ddFU}$+CXbs& zMyMMhPl$5Bq7fWGT&n$tLJXA97s6yv%4yySRGhJ;W%TI-&))KkiCNRA73xMkzw|{I zg>Y~&RO>xKE|swKC++*nUO0ikDJv|Zs;WkuJ*}#lZDfSH5t{n~ZX0f15WS&CLbcaR?P#LuP(cRz$F=O z7|v8>ujclZUL$Ou?^R?thhNKcBdl!T-AZ%=w;2wJ8S2d}KF~taS)XB6ZPwvH^J?Bn zhzc>OP?vp&VN!>-gfN-2p+cB-*OQ@r!wpw1tAN-+yv5t=4ySQ4BeUJC15erB4BuAk zxN{-fY!0+MjrZnk%f8KOj`>}@FJsP}wQV*p-rnxdfBc`KojCqC-Z{Sj6%Wp982a2< P00000NkvXXu0mjfSF*)6 diff --git a/graphics/object_events/pics/pokemon/followers/gloom.png b/graphics/object_events/pics/pokemon/followers/gloom.png deleted file mode 100644 index d79c5249056fa9bbc9bf28db310400c09bbe539e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)K(J^m=Koke?8wqi7F`fMiZ?H*O9lCo7 zc5^Yr)d7bNwC3R1I$|Ol9cm1p!h}HwKU5D6JUEM0nl24*`~CmkJ3vC3X{MQG{>6kp z__w1^NEBUgHfnagwefbia%7`AONV`@rZtQCf$8XBg+<5$p4IeX{q(t5Z%(yp{_{{| zdY0+A!)vVhtCzb$;GW({ar#n8HuUrCHfsTOE$Yh)6sHH$ERYLsGBei;W=>A)RP)&= z*)5L9mOTdMTlV?REIz8mhQ8^Bb^H;H8STrKmA#JIKoo_iurzLMY57r_FhU_bz$!>- zya**wveC$K30e#&4KB=}t=Iy`$yTuzDSm+@QeGeuFPHhd#>UQ4L@6Tem5Z@I=A3(v z2SDhlp6aRo%VHJJ%oW-^w&xs2?5N6Wt1{m)7H-uN=Nib?=Q#5-QA``#vcabrUFydn z%@lA*^}gMV&hlJMq&Y))+Rmgxx_e*JH=C4t4XrxjyOcoaz194JQkv&#BE@+mc-moX z1qPm5$|x^@Mv1Eg@OA3^iHnI87m?tXJ4)-?;2kZ$1oM&$^z@CG=Tx0m)f;p&=0f0000000000`qiK?00009 za7bBm000XU000XU0RWnu7ytkQdr3q=R7i>KmCcIVFcgKg8iC%RTNfJa&9yUJ(F=ja~a$Ov8P zQkS~aKNtSbf;i>V3*@Ex6G5J&00~b5uEicbu7p?NL6Vb9Kx6sXZ1i5go2VGY^QfPt=jry48hSO)%$RfkY~WDs>W z0+AVJb`ENUqrF`8KTJo7F*F^uu+f71HM4q-!_iP4-oVqZuaPoylvb8IKWJpHIzME( zBV%YfYASjIL8c0ux#Q6kkxboG@ZpfzE#wEo$_)nIQl+T>7t}brQ%dqcA%q=4MN~h`^iOdXVcGEZ&OS-%U=YZ4KnrV3Ct1rDeCWf({)K4{OEfL{<7a)EN!{uI z51v-`2hg|v9Zxv5g~b@`T4<7F*#8H000000000068TQb00009 za7bBm000XU000XU0RWnu7ytkP`bk7VR7i>K)je+;As7d6HWrptic%$0XcZ*H9Q6Zq z>Rd1FH|P|dWFeh0cgWZwd#=Mph^bQdGs{VY4^_bD;{h9|a+FMdGX22(dG3uMbgW|? z>#d6TznA#gvV$F7;%ABs*4e=wY=j)dwu!caJAJU7;|V*ANN2S&dXEjIbxX?i0OCsf z1>APZimH(@sxw2ySSjILnk^m5Dqln0#l^JMA&*1a!z{_usci@(ko&rCq$7@zKq2Zp3on9{9U;pqe57S)fX~8|e z`X#DHjc=LW?DX>F;vU}e($fO^_fHm3cx(iPJpp5Rat`xKuR9)}PA^6n5S*UVt!k`k z!H2f?)Pa-&EZuf!xO-ZBH+||Nx|^Sy($pG}o?E;2W`W@h!73dBJ}$my0nwWP{9v@w zot>?sSN-OCL=Rgg%4LoL?DUMnfZ)}9NzxxpTCLKC(c{z*=~{IQjt0`JUgSrGH2m`y z3Id`>@b&vo*UH&4dP73n^M-;A*h5c&L&dWt1nGSh^8xa9OG{E#d2v}uk#S+6p`ic(00000_g6b+00009 za7bBm000XU000XU0RWnu7ytkQfJsC_R7i>Km9cKyFc3gFQ8NX|nSB7QKS-ARK_(HP zy&5Vk1GWc4NyS0=j}}Geq)tk?%z6Xc2OZ zV;tice;d&>n*IaRC|Z+um_%$G45kM&oiT6JGIp6z#$3h*hq5yh0Q`jfi3$0r7kKLf zIp#ygcwp0ACXQf&L*PyhV<*6B%!M)OXB?5hnFoAw7*nQ&Y()AQw={GE#sq`)K|C`; zcS?Gh(2#k!Kr*)xG#qvE{ft7%JQ1`CykfH2F)>jJN35XcL8+&#ZkW(32Ae*nkrYx& z0ir&#E)%l2m2jPHVm>y)o#9EQ1&bRA)e1h=Oj=w$(P9$QRi+xc* zR14>pZJy(wi}ZI57n)68<<@8A%QQutL-cNbgL3mB$q~ z1yu}}CHk71tKtv)V!4Hvo4m~9kxF2BXD-@x9#)*@Eg|;JGB^1&4=c6>Lr}lwU^h%c z|1!DDW6LO<;||r;gArUksETdDw9cm&4PVsxrXUT|=;c5wR{rWSv5dmCqZDzJVW;}7 zh%JcbzPv3+=yRUD`1J?vId6S%?8?{C7QUOuV}CQ_?a2R%-^Wu>{74D&2mk;807*qo IM6N<$f^qa;>Hq)$ diff --git a/graphics/object_events/pics/pokemon/followers/gorebyss.png b/graphics/object_events/pics/pokemon/followers/gorebyss.png deleted file mode 100644 index 08c8e2f5941ede9892cf821af0c3dc55d2e970d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmV;O17iG%P)b0RaJ-smZxfVaZu>i6Kd;nepk7q3P-Qq(QsN00009 za7bBm000XU000XU0RWnu7ytkR6G=otR7i>4l|N`xK^(`=2kP;7gNF{mlt(F*g0{P> zVxV&&*hT0lPMIupda0$pCLyJp*d?9%e3oi)Xvme2S15+IW)Oug9RdzP zFpl_ZR~4dh0M&v2BS4Op@i{=8YYimWyHKD3@uR^6!6bjnXu@m2r~`4=L4%B9PZfkh zMW6vqEgK^vDpAYDpV&or<(^Ooav#tfQljQK){7*9_|OCPEFa) zeoTgC4<}!VUoiG2!P=gRaFE5nG|b{?^E%1az`{YkxzsOZw7R$ zG@}TU90~wX9B|Bfuz?*ntmRqmX*6-r7X0hq@`Yqc*sGWeCk27sq_iOgp)k(k3eg2s#vIu|J^q2m^J7s1QA5VwR6?|DW)IPAP?O!5A&)z;W-T7%8l(6($K6n-v90R-|Z>Uoo~`V0_+dNba@ z1!2SMvfx=Eko-uPrj`oi0xWX6nDdx8q#Hmej?G3&KsV1A`y-<QcTr?yzPUyxLs z2tWrfm)Xf8=s*z)0R&crfDjKpp)TRT{el#dOq#{G@yfov2s%)Nr2@jingntI3f8hx zaMJ4%A(%@9XH_BubD-pXJKF*RMOZ3W?Fs-2A;=c{yFy5|j&NLY=VXZxLLKY_0dCfz zKoOc72P-RC3ItXFa`o54HzZT0?rHSQG5fSsBrdHlgWmw*PWvMiKq2bq*B)6qda5Ds5C$VUn?fkmoK;KWMy-o(Mm4 zrt9YBDY!fNC^{C5iV!=P0s$AgBBw1Pvxe{8_g>50KANBM)jtS~)S(GWzGtOCUNp~0 z3OEqEuwJu}YukKl|PTuKoG@^kejsk8R$V)6hs}A990Bt zoVX{VPgdh|OH4+tIUPx5=@PB+r)1U}d&iqUNCvt*rO40Ee(PC##-4Z6O*j1;mHBo4 zTlFxz&SmLUzq}iJGlbSHpYlc^iWt*w96{L%blIb`jYKE*5jQ1^bD2sWoAcLsCoT|E zF|lzj>zWffn5ncI)BiE1HqB*S^DL&aQqhThQ%-ZsE>|_l!+HVZ=+FeZtQ8isZ*S8~UStz^p4D`!WSBHzE}Ov5i0}CV z4ujrvIM0QWDS!=hxvC02Mu%5mpOfLp`jwbp$@qRI(iIDIne=iHN|l7N>5kIy@^$Th z(s_OB8$S94CL`XtF4L|JWC$R`)$wR=WO$j>J_IDNzTuf6Tl4t#NPw>u|aUvMHP@T%{8 dUmX0u`VDP9rj)xkKZ5`O002ovPDHLkV1nMBMRWiF diff --git a/graphics/object_events/pics/pokemon/followers/graveler.png b/graphics/object_events/pics/pokemon/followers/graveler.png deleted file mode 100644 index b77557ca43b31112239add542e7a010e2dd2348b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)Kl)rAY>jbJAL#ARK$s+K=E#;YN#-g3zEBaViSTY243mRFZ!pqJ$m z1A~^Yzy^EJ-0qHF1|AGgf@PK;gCtuNJE?zr)W ziD^ezK{*H-L&xT`RiP>cC}0$H%(`Og$OwW0UXMjx;h1~Fg!aH}L*NCip=ajOgw+|W z`*G-w)3yu_r7O5l^?~WZK=+PELt2CB8U{gY=-I!fp7FP|ovw}Jb#$$C?_0jsP~k^% zH6$o9$f457E$)Evb%CRS<+R2=Fra4OW`BV}%*0M4GwW`$nHXO~I_gKJ*Y<99Dg@YP;VkZyhKOr79{f^_?bLLxf%Z3_z4gj V5npD_r858k002ovPDHLkV1jREHVyy) diff --git a/graphics/object_events/pics/pokemon/followers/grimer.png b/graphics/object_events/pics/pokemon/followers/grimer.png deleted file mode 100644 index b9c9c3e56023447c100e70647ec5b7b3f8075bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=xFKq^5xIW zz{-sicQ$5rp4@n|GI1tQ2`0Gm;DjDfl(WDivY3H^TNs2H8D`CqU|?W8?&;zf;?enb zqM`p`1A$iQ|4nSS&K(V6vew$r8??W`786Ei32kB=`C%{ke)n=!Qu6}s@8=LY6U9_ zuN9atYjx;ki)gM~cU@m4cs0{+hHsTE=NAimNaz37+;c;$qq^~JarRg4-v`#u`#!tu z|Ao!c9#Kj2EoX{e&w9G=fVRp~5skOUzienc9DH7F!z+WT!#)$U_thTx{(Ix?8BXce zf3__>keexazwmc%rPynSYNwF>OeveHmHF1Ld0V+_Lwd*}=JNNi`z$@q>2AKmGHZG& zcjWURsb@722lhIBWe{amd#^7WZZS2=&scWH8mq9DHGV0g@rS&g-TnR3M|`@-j;Ih> z?>`E<%S)GidX@fp`I1ReChq#?8={|X;{Fmjf6bqpoA+>j7G;v%xGg5S?^TibW2S8f zlDR_C{)C-7EVFh=*o4bEWqXpB{de7Yx}vUc@eHNM3Y$wF$Qo+8oz*vRTXe3#G`4IapAcs0RaI?Nl7_TIRF3vp8e|O00009 za7bBm000ie000ie0hKEb8vpR7i>K)G=$@Koke?8#>B@Lt~BREE$B>pvkBK z&)SSfcX11WfQN3u-~-8>y0vSULbnVCr64=D5a=vYN{JvANHv1c2z`d0Wm}SuI|_kL z^&1Sod%E{OpNs)G*0GLttpBCN7zhC5&o%%!KAcE-EjQeyD8~Y+(#p1^&O4{cb-$F^z%p0aR)i7;RW3IzFSs2z1 zP`Bur*H~`Kvh6Tkgob1TT5;V#ByTciJN(fMd`oo1muS*0=4xnTx*tA&GIn|AS)@#4#8TsvXmWfjm} zK16{Lvz?FN1d5eZ3AVX+}04FYAETx4dx22aH!csy@ zb8QE~9K^N|li;g9|h6XS0LF@v@|+24e7GG3t`R6?^KT z6ml?|1s%k6KBWE7%7Nx#uzs4I|9kW1%{&=~w$LpZ-YL7Vd_sOC6! z&eJ8uGApO8^GSB&a&SXo%bmg7uXX>+bvW@VI5vPs6%EBKvFmkYBGKCfUaK5u5Y zxnERHnUx*TESpTy%`14D04WIA#}%A7Jj0mNG+%F-)ru*Wf;bJUxrU(32!dM`98a<* z`%TpD`1ux;SnAz*{1k*czF*6I^;6T3H>hnKBd2qemAUQ!z)ta85Qg^`g%8c zNeaO-tDI+~J!O-{9<1_ROl8C=eptnaCnpEpl;L)slQPSQpTWH(IYAf23QGJ*>`TGO zc~HgX-rm7C7pO(^c*<-T1U`db?w$OAE+|u+7K{{I9?}s*Z&by2h_a~7Ba|PmGMgfq zX>_vZQ`A;Ri%tuM>afNT=#vXjrs`zDj#i{0rs;2>NP3CA=5>sR@=wfDJ6eL0^ECYf3PCemK|RO&)nj#7FTOn~vx84{i^KPci47bl`E0C2w{;FAfb0`bA121V$EE zX6;}*;2z$wQ6Ix}jZJUH@y>8K9Mq#(OWg73GVtq%;>9uMf$+$VPNP6ZJoArE(a3_! zOmxycuf^^GWcNwB&d3hF(0X(hi?Sh3kZO`d-C z(v?$U6T!yeul4%iLps(e>ZI=;*6Y^>Jp=`_e%B#D7>oN|vd*dwJqHOrgj9;w8P}yn z4OewRWcPgaB5x^C3~f)Ci=Z#7C_)80c_D6N*KY$TBxzbOUodi$p43y@uF4d8k{gLF z9hwRAeSjc{#2$;^Q?biAlSCiZnjifWXhB>spR);UM`Waa4S`@LQxwbq6e+6@Vpq0Z z;oz9El#+BuokVdC3oabU79l2iBK3I}tVLkX(gAxV4B4DZLC#$$nG_BZUo;=lgd)(E zMKA>gCkqF31|C1MKcl$=le=>^K__8fZ*2UH?DkX&wx=$XOp>wsa3G1u2#_lV%3=N} za+ENmFyBq0$47k%=MEMejT3cl5>RY1$Y1ETM-ql&033*by(NNm0n|*E9AL2;eDrF5 zgR*hLa;_c!KG1=V{hkzPL>)ELJp6Y@@>kwhTeH!SOc+y$Tm(c>U;tHh2~old2ffV>Su974eRQis z<_)K~$NLX;ncnRdZ?vC0E|ci~Kp@LsECswv$nv+A+219L(fP0N>i@EtD}GBurAhM- a!T$h3kvHA7q`~t50000!f diff --git a/graphics/object_events/pics/pokemon/followers/grovyle.png b/graphics/object_events/pics/pokemon/followers/grovyle.png deleted file mode 100644 index 4b2a2df5867ab13609cd7c2cde3667b336c78cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 658 zcmV;D0&V??P)T5di@KX&D(|nMs++d6_9GL1`)Z*;%#qm000000000000000*`Kl|OIWFc8HZU5Ab~gzSM;xPuqUS1M|` zwPU7$&=;@)B7wJb@LE7X;5~qsj@>*)g@AxxuA~(4pDZCAviVK^>8SUPl6;&@&N}O? zv)(SmF&?kJMNkwt%vcn}^A8x%!yYS9o_hCq3`I=2mma4c)566bD}AJSN#h|-d0z5g zwyGFirkn=d`KnD<2xrnF}ECX0@N`KS?@_~gdj6=nqdY)WWrVhUS^xg zh0|TgjiC~`Ag39oEt{&(^IEU9h9PS)QEx?M1AK;QrVTeXz-6eL-^MWH*6>ho@7(~8 zVal{&WdmG(4Ks!zw}wxL`>z!YF=0{&X##v!h6fd9nhUw@=|za&WQ3*C0O#WAuytx7 zw^|92j4_kW27Ctg^6Z5N-0FI<{yD;UDxe!BfY+*MheODXLHYeteq}k*jP{Oa{Yc!| zqQC?wZr~?~*wE&SYm1f6VwnmTjbpN*BTSFbV-~VxXi0G}hH0zmW^GK0$ zna1{!02a(;ZSePa{9z3dzZ{P@SI&ZRMq`H~&4$t#rTb1{h8P|Qc@myr?kiDs4C}bE sK$hNj3E2Nk`zH|Kf7JcOA-=Ev0Vj#rZBkHlN&o-=07*qoM6N<$f*6A$8UO$Q diff --git a/graphics/object_events/pics/pokemon/followers/growlithe.png b/graphics/object_events/pics/pokemon/followers/growlithe.png deleted file mode 100644 index e0cf29de2beeb1b919e06f6d24805c048259d51d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)D0RfRoA&FTj$(d2<>G|Qok-1SB000000000000000aLSfM00009 za7bBm000XU000XU0RWnu7ytkQ0!c(cR7i>Kls#{pKoEw}O8Wx_A8BYVD-)lfN|DN4 zq!jKrl9h<5+(jwfxIc;0iaLM5D3;K4AmN5Tm*e=j*)?k?MY?+{o}J;H*-ytg>#VcR z`fD*^42bo=@mmT}|3P4>H(Lz=dl`Jx2IcNG zPLvWBW+BF!zrmwn{o}PJcCdkjP7EXAbc04j^7)hE+~GHhCO(&7NdvA%E+WT^Sx<)1siW01X#>zbF4cmB; zH+LS$u$tR5`6$_76-hg1oh!PQGKgqk_6+dgA?`-UnW;bb>z{kSj&1DlZc_!MC*Czh zIfOY}xDPGjbT1~}k#uK!-=B&r&&Cc*5G!&vSQa70^{j@1DSm(SU8Sb-6KlK7vtIx=bQ5)UBKI(7dI(O;3&eW0nU~z;vE{t> z)7H+BS5$NcmxN_e)+;xeV8u diff --git a/graphics/object_events/pics/pokemon/followers/grumpig.png b/graphics/object_events/pics/pokemon/followers/grumpig.png deleted file mode 100644 index 8f757d50ce1e18020b957bd5f7f6967e467f46e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 zcmVKl+SC^U>t|@BBQs`mp5Iyv`wHWJ4(nQ z&_bZ>6%Ru3_d&YjJhx0K#Djl^Udxa{7=l>n;RU6L^`eIfyEzzCsHaMCW4Fe)NzMDs zyQO#$JoIxYecrrzK6#TjQIu6yS!I>~B%PM{y@b(%+bPVG0sk*yZ@)D;>G-V_Mt;QI z6z0BNE9sZGl& z7k*;;v;F|GSM2|70jjEXe@_Ty=E)XW{T4HpF;5zkt)6!vu0|m@lRQ6x@>|ktEMu0+ zYmaI@@>x7onWGb^{)9pS_0%M@UK($IU=#{vo+nfIUZ+36T?<(gtWqAqnUELrn_nrd z+u~%I=kYew%GC`Z2w9IGY9tiw!NRqj#!HHYOlF=dzI)^Ns8Nku^@#Uk;cM<|fcGHc zMIo-gpfk8j=ZqgD3)a63jaVo%^4(KPXLkIl*bTY5D9ozV34k!GZaok3$G1fRsu^dG zcV@aM2)Ss*Li3c~3AFesHFJ8O24qoaRHnWOgvNEf8?1jk1WVA&VEi)>!dl2s7@U1G z#eGF)=_rVg7fj;kheB8|s@-eDJS@n#LBX6kLKv|SI+bQwvjCS%cQ^kqHjC%lLm|ZY zeY=CV;XcZ^6U!cfT|`EfI{^i@-7FJOV3$kx?0CWBHgkw{j!ci<3+jd6*!jO|0PZc;rK{*A%LWD7PV4=ka#L-{ioeUe~fw}NP@Di5h f%Tq57{KNbPMl2mk75L+K00000NkvXXu0mjfY>H3T diff --git a/graphics/object_events/pics/pokemon/followers/gulpin.png b/graphics/object_events/pics/pokemon/followers/gulpin.png deleted file mode 100644 index 320f5fce9bd70e5b7c1add8ba90ff7208b80d6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)IZ07znLz;o0UKlrd|QIFG<$CAg-Mx!(>r(Q^<@f&Y{k?Z2A*58PQl(1$ zC(&1%s^P`v>U*w|8^D2tOi%~C#V*6$6UWXExPgSM@gH=N`PjiO#xn!CKrw@_2u08i zK41R0qJ`lC!-w#mS9O~!$<54|$qQ~yHZ$U=wT>G$H-c_t^L(2Q5$}A%^Y#Xt?Ki}7 z0iL8hw0XC}EL6naXu!wTkzJNb`A+;Uu}~4uInTy>YXOI)d^xZ!<|Y69;UDIVif1R2 zXRx=MG0TldGB68^*lY5`fe&V9nTmA)zO?D`u?8{_!Xoxyd^miAo?(jBgBQtG=23p8t(6)U(*{Y zRvUTC006Gcx(=&A5JeM6eaTxh!=Nb^FxRSBgFm!ygux(t!tX8hqe0vFN22k&&^9F+q8m5pzGF00009 za7bBm000XU000XU0RWnu7ytkTAW1|)R7i=vmc5G`M;M2v2wM!KI7pMmMZj02OA&<} zT#P~7!4)=K*bS)BCO(bAVBI!G8y0dR-H|3u8aHO`lV)K++CRWmNC+V$*q}p(1#tw9 zy+j6y5Nibs=gB)WJNoihm29O)JNtWP-uc)?=zqD$8~9BZ4&Tt=w!0d-&N{{Aui&sl zkZZZG5#DAYFTIBKQ>D_&8T0)b`}t%cctOazCFf-DYSt+{DZQL=XVb21ZHJ3nYeLKU zeaj|ExX##Ri@eybb`$hchCJKpFK(_2kyqL7*j{5EIA^Cb?*(BsJ0C7OwZ!=9Cg*u~ zF+uA>L}PgqAb4Gclzm(5gzI;7aaP9miSvcSG99=qv`V20WK-L& z2+He(ht}mk6-%=cB6RO%u-*+Cdt&s{`2uCTVQUHN1A)d1+ zh+-PT@6fOmB6R&;gYFzYPf>iS*6sCsQrJsz_iI(6UddlUVXvwV&3_{8ASs+&__u}K@?_%1!P=N~}@RQI4 ziU0%=18%ptVI_oh+3qIKVMSVUaFX$9(u3KF^v-W2U;VK0OE5g#K@Ax=7Xo`lU`x!7 zXq>C#6YnLO3n8-H-d+!;AhZ(IW6PDokv!7XVPTP@jg2c!GKyRkXoNI!$xH{L2+AP^ z@->R1ZfLkTug9Z_$gC26QXCGwk(`ncn^(-i#>P7b-SK&r3EiR)W?4BX0zEPF(>zYQlFJk+E`$iZ z)jNMi(5+#sIL<);EQN|5C)USzOM9mScJm<6!gud(bj!QIO&w^}h3}{1vD-zDE z7ea^_T|7%enzWm!5K6u^^pp?}L+j7ubleyOyE0G;pFT`M80^+veHg}!`~HX!*;vlH zr`QOg$Gnwiw3QcAfJc!4PVQ(Sm-~i}(|X{`Kq-U~NujSR27$TYM{dy=wRdC1MhKI7 z!F##r1;~_Wq}T}6e>cwkNC$ExM|2~tN51|BXzxZM^4s&)xV&Kf;yoPuH-d?&5D3>; zrIfiJn2$L^T**zHX_Y~JXYmDNL4B54cG>saML{+1uCRKFmUrkHn+EjGPI+hP9x1Of zth;hEYVze4#BZ*CXu|S$U&+K>y}8b^@mh=Zxc~0@7vM|jtL2A4`Tzg`07*qoM6N<$ Ef=AAyzyJUM diff --git a/graphics/object_events/pics/pokemon/followers/happiny.png b/graphics/object_events/pics/pokemon/followers/happiny.png deleted file mode 100644 index 776e02fb64e7784866dc1ec6e593208981c93597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)FN3TvB9}vfdBvi000000000000000OO8X_00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>K)G=>@Ko|yKLvra1k-<)QXbNlN;Hm-X zNEBk-jr{{!Vn=Kn95FHR+&VOk{K~?az}+Wz?b4)!@8ol@-yO$5qjAkO*Ie_Df`70y z3YNQAN)4G6zJ<1l+{My|A+x;$f9I@_lOZ#m$PAh77N|KZNB)&S(}}Ls@(bR5^25-1 zkT;fl>dg_{Fat4io1kDY<0I+ibT5Vutozt&r^n*+_< zlqEEMZSgLNcW+`p#26=Tz0p0!R?;)d68Jn|V$*WPcKS)u6M524Hj81kTj4oldgoE{ zK4dO6&h0P`oW-2$bC*5xmX6CjFbbTDZw2zgX~g&@3a2jDuV5clec*=NeycFxzg&4j jxX?iUuY2T6%0JIHPPDgs&!K(P00000NkvXXu0mjfGXD7i diff --git a/graphics/object_events/pics/pokemon/followers/hariyama.png b/graphics/object_events/pics/pokemon/followers/hariyama.png deleted file mode 100644 index 541c6a2f58cee07c6795093c46861337f4ed18b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmV;U1YG-xP)G?rXiMd%30RaJFAqny6!O?*^a49=F00009 za7bBm000XU000XU0RWnu7ytkS8A(JzR7i>KmQQQrMi|Bgo5ND%gCIH8y=X5b_)u15 zX@v_l@v;l`MXPc^OY|i|=Gka>9l61-z!@ zn}k=E_%aL^^)2iIJi!Hnw{z~A?>VYE(xE|m5Hu)fOS<=S7^=;FrnkxW5%^erzOPSC zD7RBi19nBs;=bn_$?~AjcuJOp6ZS#4=uA$Rf}7k~j0$R9bZ(ESUo+(s8Zbm+;YCv{ zOd&Ne8GB?&Ig^uBB<{=046Jhw)x%Tq?E44ZTa75Tnkm<(SkL#2g)2Ivedm^Lg1=-h zAO=od)Dg%G=IcC-o$j{}$D_}W&JYm@GM?QHaKLjTJOzEw@7|hZ%5=#|&Tyiz+xV~L z9{Ov{$FYNcwDkUEs~!hQ$4zudxZ}*?D9H%CQe^-h9oYe$@f%~$OmgP=uVqoX>bg49 z=lwOt20=XePL__x!FfbFj6Vp^q8n_$`4CplEYNp4Z5HCBL-{M122u}wGJmE zz^;e6b$QtOCS@MIfzZ}YTa5}N6Fdlwa>Do_LW#hyTB8E=vX-7rp7AlOs=3vPClk#T zdr1VjAb#C``h%A84C|Z1Sks2Po|#zkQ)mXhwCE# zQ`HW{2gJaPk*%svQYHpU9vXsDqf6wGLilTDz+IG)D2fI9F-y@V_tln(`EulkGzSglg_VL+Co)E;6%v8dFj+y--8>HN*iXq0GS=3o?$wYHWr z#}(1Dp@N%Tb;Kl(BB4Fc5}mEY~h_g&*PGAgTAR*lQeV z;Uc;#FcK9hf+hOA#C0TRR+&0oUhX`$!Nx#}q&S_le}VW0&p(4PlVulObkTn!)xOW4 z6jic)kBJD^kFe@xo=1KuXXFa6x8j4W#ws6lOEFqr8fB2pN?*&W#*|u~y@JGGRopBuJ9izfA zaW3R^kg^VoQ^r$q!j8U$0p&O{lmK!vq`h`ro_#=di_x><9v+T|!=IlpClF+zW<%OF zW8Heg0w#86g+2({MIEa=ql*ef*$egKRgtrdT0W4_Q7evFXFki$Q<~T;n3b)RV%(7b?dUBSF6NCxV_;m@kAhIuL z4T+u&t;%5Hmxlt&pKPtPppPbtB1f|9SR_j?`q%mkDbyRNYXl8;00000NkvXXu0mjf D6YC75 diff --git a/graphics/object_events/pics/pokemon/followers/heatran.png b/graphics/object_events/pics/pokemon/followers/heatran.png deleted file mode 100644 index caae4d45f2bab509e0ed054e534f3552dcc2ed5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmV-u1eg1XP)yswQGtPp@lipkDIsA&LBYY%K^ZCO>G=Tx0kLUW>6rmZQDG@5DTzTr&i`Sa00009 za7bBm000ie000ie0hKEb8vpKmCtJ`R}{zZs)T_ECA*rE(C%L8+gLKq z$mFfN=pXQQfs`qjg^MY@JjJFUw9=5e3@!>%U(wv45?nOAlXl3u!Yj28o4|-Xp^LyX z1i=hWliT}iG}l@g83MeL6YI zY~{iE`aZ7WOmRNmVBG>=^! zr*d~Z&oV+4x(r8e-wEY8d*cdP+05IUm5wjy+{1%K{OzUD!WdjJmKYL^K{kKi_hS;RcpU$?Pds7t{TRa}h;?!8OD zjYD%OuO^ojlzg+qx1iKA&r-ggZp4qA+Ym;YX_hcPYh#;~WC5bMYKn2*`X#5w0U95Z zCDB6mor>hW*d{;IR|ij1lnYYY4Pm7H_!nv6cH2JpM_f=d(h13xKZrOqlMEoY3)HEJ z2l{nK@Th8Ta6j#j4vf4H4wZtl%oK_9Sv!OOOhS_jYUQ}%7h=*Qor}7E495<=T6x2G z@zSP}Nx#GMt@eTO4O6r79W=$XBhO4r57$4%nNQaIlTEQD5by{o$5+&+baWNvjw6Hg zNU-WC@}YZP0Xp=-lLa{Y$3x%As{-Y?^~F!_tLI-P;RUY;FBNY$#hEb2B_>Bn62ums zItjt`s}->YHTP1dd72xf<&@Rj$GsiT8>IK-4l&0G(~iY5hBe$`ie;;*cw2PD9VfY9 z;sa>#{3$$=EIUHz;siX#+rbr2YX3l;;rFX@hu~$xH8UCWd~1i#Woaj-Sarl4yX^U! z^Y?dbnSUf%cElpksJL$b5`I>eAIHJy`0$n5A*AH%Xf-@9J7SkR zHeRoy_blDMRRyl?+FM)riLA#Ru~8-LQ#NWSLUi$)jp)R&%6~5NiK#r&)+p~3l`N{> zGo|FvU{QH72uCuGE<}U`jZPe^ynGP{uVa~K3dF97r-|KHI%T8FqVh78j>Fctqr|*C u?@0Uz0zryTChK2~p6&&kb}jY*0000K)z502KpY3~xh$Pa=N8>F1rLF~z?P8UVIQE!K1f(BW^7t~hWc+t*K`aN3O(ev zm;KB*-=CwqiqKO%)qhZvlW|u?e1zh^^}9jf(Dj0Igcpxkleo}#1BY%F9E2aWQAbNp z;=A+&6}`Ekn+oRd{ZYfd%;wCQDBEso=yvo2JsGub$~>XLg!Tf5t}8<67W-pnQWM2T zhGB@gq3f|(mS*W<#D2D2N=!@@6%<6`(DfKF-AuI+TcGJOW0lNO0I|WLt12|z(zYYE z=iteVA%-$gMG{xFWT2$}h!5s7kUCWp0N6(|S3N(&{-ru%nD6Y0*e@^pfkT&%mBa6__e1k#exw14UYCK&RBnYG!;4p`%hz)^9k5@l ztH8~cFW`<^PmXm^B3A?s9D6i!Y{w1TKoqt1ym}y7KwtwnORWjSG50y&qH81vft;ruGp~&u{O6&n*Iffs?z}TTb##v1k|y zDRk zdr#uBj3T(mJ5H?3HG2*$QWWG&Z241dgPSB9=F(!tU-M)YS57uv0-8*Voi`F*6<3{p zTJ=7~mg;ZhOgMG|QwanZ3+F)=X!0000000000E$>;@00009 za7bBm000XU000XU0RWnu7ytkQ3`s;mR7i>K)w^!nFcb!04%F7gNY$pzQv|YL!(Nm| ziiviiqcA4W$s3L^Q1iw0AW^*lLv4`{@Qy$Tg*@)xc?uMn14Qx~TWl4UmviK4}LwgVS#K z!KHc6h(`r|1 zMx3`()DW}Hvg=;m(2)(fZ@1u$w`^`U>hSw(RIpzjHhSHV@rQ|TbzDsN1Iw||i!tZ3 zyqJ2MS6}z4VT(+%fp2x(WCzZj-=h$CHU$$@azDx*1gcKool(`CWOjbX5SC_ase=iL8Ac z_WteZ(g#;cxy+eMNU8Y6f{<6$0M3bQcw8N9r?GUjB_U^S5Djr`nK(*s%Z7adUxGT)j^^#A|>07*qoM6N<$f^Fa|&psQ>@~000000000000000@~Kmd}oxFc8LlK=Rot68jpF(fSIq1!}K- zgdo%2phnDIbBZ4z+9%k&X9o1Ubm8xO-cggoOJ&-h=VluEwhhxN7A zMY7M2M!-?<9PctA08o)H_#osf3TmG0F`+NkM&1KUe%PR9_QJfBmwXUG*_T8VJ4|Se zFFgga$1avt`(&CKuFt&9cbHIxM~Ww0F`;M%T9?%}cY+u*1D_9@ATTeAc4aNM8A^jk zmM|JF`S2Y9v$pA$bhXI_V(f}gm_cyK#5lpJ#B)}FyKOiLE}4*=r?_&FVn}Jp!64X> zEe_7yPJ&|1Sn`PHxN?=kwf2&a4BAtdPAFPk8nI>+WQ~5awk_(xV8I7%Z1l;(+a+pC z-IiFkCHI2wo#5@$V8%pdUCO+b$rhvFRhKL(GAOdTS}{f)-hNqI+{SNn$#Q60&%om* z6W8A{%VP<#tYO8Nv51=5UK)smJHdjxl62vh$m6VxqwgqaVlBl9R*ZriQk;%;KK7jv zj$trJRiAN_CR^NOsFsG2XjN$%I%l9xu={d&4ntc2I35jC7D~<)W62iNjHfJ0BV#~7 zxaLl<>1T_&e>j8thvUJJ$dE+*`kdc>J$|R-Pa}NdNUd`wMo& VWAd?4X!`&F002ovPDHLkV1j-%OSS+2 diff --git a/graphics/object_events/pics/pokemon/followers/hitmonchan.png b/graphics/object_events/pics/pokemon/followers/hitmonchan.png deleted file mode 100644 index 852fbad16e90c6beaf800a9c34d3c72924deab12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 zcmV;B0&o3^P)FN1NF)^Wu$#H3c0RaKwIXRheK{+`&000000000000000(>b=t00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>KmCuUXFc8KCi$Ktm0s`S%U<+Zdxn!?} z-tDrXX&zwv29==~DTTOTU8Q&(OOur-lwL|ceEH2}z8U?AjnG9G zUG)D5=V|_Hf64O{rw3R9H^^2}a-QPk0GNSc*xB;2oKAcP$f%HzPD6H* z=53qZX&z;+4+kS(WQ zfB3R+%!e_^qUA!!Z2Me=2d?^d+UVBX6Uerpc`%!qUY*vp+ByEvJR6ev+6bY$dG#U_ zwOa>=0N6&FuXS0Mw}T-bxEdOoT8L6_hX#wDhk;%-532I~em1*+T>~YAIvGMncwY)p z{}{Kh=V70(n#Y;%ciU|CD3DV3_W3e4c)UM`#t|HQLxsGxEB+odSUmac3Z6cF{5%>e z<+uX*DA)5v=^I|n>k>4;Myc9=Tb4@c9OV55L7u2Cyp{W3@RLJCj)Hf%LReIPoPS>e qzq0^3`$8aSn97q11(p#cE_SxG6ek%6IsQOU{CVPRoOF)``s`FUYE(YbM%iCF*u00000kO_(>00009 za7bBm000XU000XU0RWnu7ytkP)k#D_R7i>Km9cJvFcd{CdGefzZ|IU1Iz)6T-7gtJr%ss|`$x4Q#m@#*gw!o};=F6_b&LXpTy)Vz7mXDY zVmdoshxPgm=VB@|+v~8FTF-epkvF#2VcmJuHyfr-yE$>;G<^N2L9zsZk>qa zfmJ|!LLZ>4Rwi&&K@kx;$G(Ss5Bq^ktY_*cfyGL!61kU}Krs`d!oDZ+3i~G^JhSC* z-%j&qZh@E)D$u*8%n9|-e?^>B$J+R7kI<_1#hvqR%PVJ~12f3lX}0}LtwI&}3is`{ zZk8XZDP&jI3p>so)Pa7Mw*mSZ7wW*UFy}x6n43bjEuF8CJE#MRkIqe9<3b%s@i{9% tg<0vGNM~S$_syu^vC)XRah<_`>Ib>LXPH;!J8S>|002ovPDHLkV1k1R44MD{ diff --git a/graphics/object_events/pics/pokemon/followers/hitmontop.png b/graphics/object_events/pics/pokemon/followers/hitmontop.png deleted file mode 100644 index 9a64f87a5f6d003ae0704e6867696a1af6b2ca04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0G?Tvp&2=8vAMwk0Re$g82|tP000000000000000in%x&00009 za7bBm000XU000XU0RWnu7ytkP#Ysd#R7i>Kld*2XFc5~RGN5#`5>SqU%&tCZ4iRP|ewpQb1iQ{wbd?{{QnisZ_4I>Z<=E<3c_v z-n@W+lYUXav6qEh2%6{f@c=h~fbKYrKOy*_ZaU}v}46lhSk?4 zyk1#g`@Wos&P7LQ7oO5|*P+fE#)RWx=H0q5+znl4Arl!wJFa0Vw}c_{4l_>}XYzjb zxlqE~mbENr6n?c5Hdgi22TRs;F4in$wS@jiIg>pMT~DpMUi@A6-cvsy={gq%quw*$ z{Tv3|_nu#Az{EwQ^_*qh@bHD&xf z`9eKpG#m73eJ~_-j2@A`Y-TEN4Uw*yn5lt-zFsGR)oG|SJPotGD?t5770vL+x~Vp7 d>iz$zz5wSN&RqL*BYpq?002ovPDHLkV1jDA1a1HT diff --git a/graphics/object_events/pics/pokemon/followers/ho_oh.png b/graphics/object_events/pics/pokemon/followers/ho_oh.png deleted file mode 100644 index 714171a55d48f4b2fc027cf311bb9bc6fd603c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2252 zcmV;-2s8JIP)ZfQ$f+R~P`w52U= zX-iw$(w4Tgr7i9M!EUbqxBc_${Q83$2(BN}yQ)5@b1-#0c~BdCr<-3PkC0j&xepq? z!ZlYNPe$}J%kCq@i&B0cIfQt3ZZe*Xxxy&Z$@>TudQM((E+GKW zspJVr2-&-@RD2Y9cgzLjiOfwhK)wy3Qa*tkLi}XZQ4~4n-GmTNcI}M@>R}ZG6gwbb zgg5XOgrJjb54c=HynCrAc{yN8h$mm!$L$7Iqar$CvEzgyj`?0fU`HkCFx!P(LVPIz z0ogO`me3BdeZ9$6jDT-6E_No7xDH|#tGZp!2 z#03*7U@UVH5+u!Jbg&t7LCPYDTzXKU6e z5+gy;fglmXj+}mZxYzFwTk4FEI&Ag(r!7{14Gs`?7Oxsp1#?1zO?K1OcBb+@oyK|M zo4RK8hZRbw+v;1IsoMmZ#wPKQbzt>{mc;fgp&jDs=@5+EPye<5RA_o}xCO;9O1n5E zWY!H$(-{GxD1&NM4e6(NSHKQrE>k}_ZBRlRduOI@*yIWkz!M~ka{L|)JuR3K0#`^n z5fOaRfu{EB*u)HL6ri5(b`R&2oN)s1`P))+@5cV9k()g~2GeX3#`OWq<_~ZTyhuh88I+DpZ&gjq|&InobTRIO`Mfqku76***;+mQeBHTszv*+7}&m!@|b`^m9dOo3Q|F{B6HXye%Y;ZtU5Bz&}g~ zSvrc*+umIZ)JjYTl*Qv^h(gp3%#DYB5q{TOGUv~^SIInf;g3xptow6>BW z#Btjuxgv^0c8H!H9cpE&psq+|>OZ#SgdFLU_?Jbn(Kw?D5<>7}{Sny@C-&o5K-g6$ z?wt`{Amq^qN)zJvp+%02dKrS)YGE_fgf}Un>3qZlXtZ?$i=mCZbCVbeAj7l1Xl9;F zH~X+i9M^)9i*CJn@`i>&n;`@dM7-xe_}gb+J~r4zGIr215<;GZ9$IL6p#Irt3^l&^ z+%l4Kz1<%)Ga?9f+y_*E0uis)u=1b0`8W8lGKA=Q??3}$Bot?``{&L^)gJ+pcsW6WIxAo zE5G{Z!NG?tA^rn{eEea(Q!H;jB_6X=jO|H6XdmzS7f~-zilP!a5heg23@jkzA6?|# z%m|uR*7Vbw=#JGICV+c#0LBucQ{eE4(kV*&LdGNj0Wl$5fEkH5vRF}MDUiR$Pxezn zs9U$qXm!Z)!;0#<8FvROpkV)d458I6;(h#5DP2m>o*Lu`ontErp+{)DuoF?Lk}Q=J z_zUg&mQbDo5I{FNg`Qf?IRC$=Ztnk(CB%O~{P$iKN|)EqerFRrgt&wdS_He?bDj-C1Is<)5JKg6`3dM_0p07wm+K%P!R*?&!CMLwp%c8AFJV1;n}qbh8;-Ob9hW9fyuvsg8TmXbbIePUt$v zvDJ*r^RzL9c;j~11mtpR=0)cHx6oD#T@WyG_-%Bvu|Viy|HjI)Id>uZf;J~ItwG_Y zTC1v&aE`8H3xwW{fcX`yfG?!?nDvUz5}F!t0o*O2cjNzqZ7w_Of_6&izvRz5v4qgl a7VJMRNp_@OCf~*Y0000K)iH}2K@$Ggcur0vQx6`*X@dK=9d#lxC^AX#d0Zd@Islo*KNA28*73`&kJhv>JV_%%?-z4 z(k!Ay^)6=nnAJG(k)pVs>_0y%qy=$EHu<_+I@b8{oi9gNX&I>>W2G0HlFv_He) zT9due$kq8pwF4!nN6Y{haBFp`gm4lgRKA}Xn zyDh6kb*9tpeBPSsJidq~!vCH-7g=i;6gAuoq2_8!YH~Z*HXXNIrsAuFTe#EczAL;t z`4L$8E$NQir_>P#DBXFsmUpGRyOv+SPZupo12-z9lE3Bk@f(#!y3c;oXLkSq002ov JPDHLkV1icDOSb?3 diff --git a/graphics/object_events/pics/pokemon/followers/hoothoot.png b/graphics/object_events/pics/pokemon/followers/hoothoot.png deleted file mode 100644 index 991e214d0680b15f64399565954016bbea0d7deb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)Di&FxzQ;pDY1cBX(=g*SwYFMc>n+akOBYj00009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>KlQC=CKpe#nj2EpXTc>pMr1D2jEa7~B zP62UC!%e0dyn4zv@RTJ(*I+ds&dnsU_|OpOTngf#MBJ36L;D?ir?XCXmnu+0r}{1C zcklGx>F*Ol2OV_KLH~=W^Yhni)_WMCRkK7#doo4Aja%TdeBk&7EvLF&G@q5?oUu6XXQBdm4{x?PlvbF} zN=cj)dC|`oD)7FCYbxLOyfb}PulzX6Sp#ZJc8sQoXq3|P?xDo%w{fN+{WypE$TP_rEfFy&TZ1<)2gtUr*N zRIS-Cn|9oYR6oB?%{7!GY1oVeVMwgcASqLMX29AHK7+s_GEXb6i^#gvYHmN4%PSKA zShM-l(J&$9h3((hyg1+ar&mJosJoYvF^=4Oiq4kHrNT#NmbeJx6552PFUi002ovPDHLkV1m&mC*A-6 diff --git a/graphics/object_events/pics/pokemon/followers/hoppip.png b/graphics/object_events/pics/pokemon/followers/hoppip.png deleted file mode 100644 index 90dc9f1260659cf67e5bdd4ac9b771b345a0d32a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!c1!Rnt-_IxEw_oMVzy}P%bW&OUZRf-Zz)^99* z_T>9!-d_Q~b=I7TYGb@I(KaFQ-TdAK3l+_shVCb{On4Sl<&!g$jb^Q%cHWM zNt{Wv7vWYE4Ae?f*{`XdG$Z7BaKQQG6Fkd!ZkNv2cMW@JqAoDkUq?NuDat|Wr(bUt z&o4g%XNI1)ZkLpQ=1uH8xu?QN^_7H@{Li-yarg7y+?#Ht=+6?BR=o18-WKMILH6mN z+wJC?gtaHnTyvsfZC(A9_F{(IJ6{Diu6}!Lsou1#6#j&rc`3`vq@EwY^i9w(cg~%C zg?38$OWtkSXE^54dohsT~xOt||* z{FGb4&x(_0{hc}^-mUC)VivvbRk_2^D(2m_*}ONHAI$xHT!Q_E%ZE=NKQ;bo>ED~b zC^-3wpIEC({l(1UhK{GJW$vHcJGWfzS60sPiT`pRP451z5mFN1FK|%S^p{cpikr5FoS&0Dw0g<`k000000000000000V|e~t00009 za7bBm000XU000XU0RWnu7ytkPr%6OXR7i>Kl)X;FFcgI=Sqx+=NbJ24Rg)~inVN2$ z7(s|ijDX+)5RbqUIATbO8_s~g~h=bAf<Bp5}QmzYn&-Z2l>vzu(r;8%7 z@}!&2pA46BEq;1pPRx3bxKPaV#K!FU!CM%Cl-CzI{$Fv<(H3zZtjsz1x5k!GUMtUV zVJ;Cn&5ORr9H!`I%4@~pVOE)y8TqqO{$u?B`}w{gWpk6A00000NkvXXu0mjf|FidX diff --git a/graphics/object_events/pics/pokemon/followers/houndoom.png b/graphics/object_events/pics/pokemon/followers/houndoom.png deleted file mode 100644 index ffb3524bdfa239f2e02f9694868a8fc1ceb7c4ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758 zcmVd^%DJe0Dfst`xc}Y1@kr^rJ>G=Tx0jZ(6iD5xGIYDW0aR2}SNU8tU00009 za7bBm000XU000XU0RWnu7ytkQY)M2xR7i>K)iG}qF%$scH=J~mMTf$|Y_ilT3@Euw~RdPUA*0ZTp;t&B1O9r5>wZIMox{My-4(&y&Np$3PL63l7xh zepjuTUcfSHg~?!V7`8nIU=O6kT2rQjZX%l6sO_?&WSpmZho-M6FwPUctBu+&A5c?f z^b%uvhJ8jdPwQnu?)LHlDdidUdktfJA3R1|=Yt9=JEu;srhM|*TmsYK0pW+>_N|jG zDHr9{c;WIgqWwF!_v_&Gp2*_7g3@cV9~~ zR9CCbZ+ki8`Mp|=w7_Qw=Daupx7U8GuVXUo^#B?!myxr|<3~8BKEpO)xT-CgY5oc4 z!;PHR1L|~{kbF2b3YdmS@M5ABu*`5i+sGM@sM}DqF=yo2pMXW^&9SmM{_a#y7~{>4Mu8yuIWo54^!=AubBuRlp(QMic8r3Nnhn>dgh>z^1*Vi~ zM-w1Mje=^^2SocmuRx#|+%8|bqHWyJStd09gE(cGPLIqP)d^%DJe0Dfst`xdFko-NjXsg0RgF@xrt#xvAMxHIYDW0aR2}SQUp*B00009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K)4xx`Koke?8yM)oK>QCbCI%Bo3=1P6 zCI)wnn7E6xNrlM?kT{(62Rux>DvWM~_&=c0M20%BC??$BU`q|Wd-ia0>)Sqk*YCS) zdW=OCRa8+$HLrMMnPYjiOZ{ghhIRAQ)w@6fshQ0TU^mFZCHSVl^@%EH|`IVu7Qqn_>Pt8O+YdM_IgZ`Hc^ zbkxBM9WU@oZ&r|UoDX-c({-jOkU9u_>s9Yx^kx=-CBog#ol6(>sDr?@X0N`gH-kH~ zE5d!5ZAsaHd6zoa(AH<;qmb8{Z3A==v5l1tN7mbwq6l{ocyXD%K;M8mmhyItPlydk zKkzssG!6oDha1WO)v@*6n|(Y$F=S-7>7eqib;IZC6O?3<&3e3W|D+Th+#J6;4* z&mQ&RafIyl;Q_6%xa(TV06UEa7PuVq{9-w^A9y>sE+OyS4s0~g=3f6`;e^+>7AM~1 z065U*V37ekg4xOm1XBkBsC@v`e=RZNdJiu@#rz30l>eOl8n~qI->XCswOyewc!3rT jT+)Z%%ME&$|E<0O8OqH+3B&t*#H0lqw|Jz00009 za7bBm000XU000XU0RWnu7ytkRnn^@KR7i=%mQQOFK^Vq&JOsS$Y@DsZAnZbffC#cs zQre5)!Rw|>j8G)ovSGy@y;X!XBrLRuNwK)lPtcw`Xb*eZ1e*%gPv9k<{SeOV&g{-i z4N_EmFUfEIJnu8_%+9W+{l6%6{&j-ozb)8N8n)DiKTV)GE(ObfIm4E$=WjUobBNx^ zV^t>6RrpdxRLB08bDjUM*mYg(Q~4MEF7Kh_nDpani~k38yKV`6D*swg%_ur1ap-#P zl@fIOa*@=Eh>l5Iujv}h$rz8NlBk@{pE^>TQW429OHc%~EorjKWc=aAx1QJ#DHV|& zlR!c*SdR|!?BsMv%+_SV^Nzs4hSi~HsZx_I>b{@=`i_&^3pz4ufXoEVPKjGeeWE)Z zu_EvyL85=kd`F05wC*^VO{a%NWNMxyaJ@89>Ye@~PZKHvKHK#~*y5C%dhQstody#u zZ7oYoqH?5@1a~=uD4_|eVnrmuoafvzz%;T2-|T;CiJXomGm(*Su8uT`(^ZbghzaJL zDNx72Cwjh@sqKGj5$+C5yGy-CcdXL$0S)7qs{F42@+gE z{&v7w15PyRkU}MFet9J_HG$JH{Ytr)393vTk4>~4xJ(e4s6zO>#}kyDl>>4htI3e% zbD~D4VBYB57ZXt4Z0p={L%$EZ0OsR{gU zo?yE6YC34u-wkSP1+yOwycuz(QCgZ!XESrIuwDp`{BDr%85$fH@AMY2EJ%51Cl-Hf z%JGW_C{2(pVDT z1%0F6fVTR&vmt~=eIZMNRFgEgxdw!`C$1 ezY9h1D)AFyGD@?zGGAo?0000jF#rGn000000000000000>?&nR00009 za7bBm000XU000XU0RWnu7ytkQB1uF+R7i>K)G@D{Fc1fD53sPE63T8BhHOZUQgsTg zBcx71FjmJRWqBJ)kkt?J_B2C3XYGUs_7PWAq;|>;QGSN|pCJT7p7pF}{ikB%$73em z)(*rL1tEU_xV_8{#3tW*#>A`JLc4d`%b>RNZR^0Ovj^A~+P%vvFEkF$tOFw{yH~e` zcJH!~)^282l}lA8w=?af!+s=>Ka488Y&}z6t9Z;peTDEmreXh0 z;BCkEeLWe%mDOzcy7o>lelMJcYtwxT8ATm@8UwL)1!*JYVR3fY`lrSTq_Sycv{!ztiz19R==n*;Uk;XE4OO##U}&gD4J z?|yp->@NVMaa&6XkWN42eg#`I4qFGZ9Tb=I7zj0sdee*B5J?I^XAZ`z+5cPG*Id_#Y0=+VAB3tNIN%*z>7; S^3>)40000lzzeqZ-G2ymLU(NaEe7*DsGNLi(cDcL}Hw)jmbD!UzXAh%g3BX7lL6h4PDQURS@; yJ|p#W&288I$o1tW_q$ls)X)4l`MBga|5xs9p0Sr@m;#$Y0q^PR=d#Wzp$P!m+Qq#9 diff --git a/graphics/object_events/pics/pokemon/followers/illumise.png b/graphics/object_events/pics/pokemon/followers/illumise.png deleted file mode 100644 index b48a801f2c7054c4a1340eca9633cc1310cdb66a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)$w5I$p~2~KSvgsu>B+fSF+pi5DKV+3$?56&X=!l*0Rhpm>1jD>308gD00009 za7bBm000XU000XU0RWnu7ytkQk4Z#9R7i>K(?4h$Q5*;GTLf=7LU8DmH!JifsHdcf>I{Qtn686dqzi(i6D7 zj2J)y(S`}=z!?L91`SFe_m+?!<*e7Y@`uwtAJ~C#dj$ZQ0WMQ5h!ci9A2fjq0O6_w zNMY65LRgjO1-8uf=NaHGgmBdZcraHrz%>O_vjCW?JTK5(f88?};8k?=9>UF!BRS&( zhN~F&D!>CKJ8}UgumkUZAB@1&JrBtJAr%O>PRO+lxS(_9kzT*n>r(H;0_`2yf!;Tr zI9MGFqul}ppz~C6E0r4drhw{zzcMzUYyBF2gWRtuQZ~VN_Dh}yHrLncH+ZeY|$fN=S)&_p_iCNKY(2Jyi|`rX-*!G4IReLG#qF)(vVV7PJDH zi8VbUaMi@PNe8f?AoSySgN|T9K2R)ZJRlwlMS9JFGkq4E2^6^#nk_!?hW^cgx48ZS XMiabqCxuKq00000NkvXXu0mjfpmSQC diff --git a/graphics/object_events/pics/pokemon/followers/infernape.png b/graphics/object_events/pics/pokemon/followers/infernape.png deleted file mode 100644 index f227dfa83063c23672e9e36d0b52c2d8750a46ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1108 zcmV-a1grarP)4l+SD1W*Em`kaRX)Oh&^XGzn$&vLy2A zF?X3_36Gc>8HO%?VUSfA0xM>?U>GEYoy-mk8^PdRf=kUh>5zlbMek{}W>3QGD+hx1#Iq9S4eZJrC`^v8o`rnjBqfq*n^#$u6m@#DX#1yjv zvx%7(j3Mjq3I6Q>Dzk}g#*sGsOCBVc^ee4HW4Xih4JHt6$mY?6GCUHY#0JE;LyZWQ zNe^Jg0Ok=&S_d0ect%30tYJf=1O#HjT?>LiD7LUs0<3v?LdKebiCZPe7J-SeW)c_? zmuVIVw&51BWp~1_C=kOWuA&B+5DRV@+a{p|Y@0T~?hxn;CNc1sIqd3n!u&pK(SCvf z`~5E5l3-`MHZ*iM1Sha*8zHY`39+r{#C^upC*`u@ub+tB#YyZL5JK&cm?39G;yHv( zk4=lZXI$;{c;zUwIEfKwyBhC;0TMBnITJ-6ZPrbzLOl;69AWIt3; z9CKfvoE}?|p3j*2#C+?cS7&Dr?zg0PMr%8nY`3 zSoRZr@bHiAn+N(N<}3A+tvWOSy!P$mmp6)$Aj|$hQJ?MSd(tFE#kyNP6wCS4-ZT9G zq-EHvL~5D*w>koqk zg(Wx2uo~(WrmhVjyMl|WZ+@Oa%VUFi{Lym5zG>%^K|w)5<(O4J00009 za7bBm000V|000V|0Vb6__5c6^2T4RhR7i>Kl(B2uKorIwWRy8L49?(8hX+$Nj*Y;J zJ1I99TF4}V!HWra@l?`aXxhc~5Xc-t{tH_Pso{w6kPZdYzri>j0s>FjGBjt)l1>-h zEhdn`-=yC=>HFT@lLWBQMjLJPel#BGd0nM0>snr0e=lky9j~iY?dqbgVKf1lYZy}F zF=%+}lfw-yCBv*R{+F95*@8b;ha*t(Rw;YpIH%ZBFgN^iS*K!v$jHLHp>}8}GeEh4 ze>;bL+$<(Dpd6pceIa}x#%Nl`J2l4%3}s&IsF}s>ui4B|F_{5!9rfFP+SO zz!POR^tqs5?Tlt!?zgx7BS@DyFg&C20Fn7j((U8ej3S=VpY;E)MjEdcW%iFG&kd_) z6yS4sWPOIyINR?f@vM4hlWr+fO0NPWUdq^YseKn2dOk<%XME^`^F%fX7cC#Lm7&aj z@xwPtznf|%W}`(EJSTZV_bU+WPv+&BxP;ndsAS$1b7KJ_^UItaEy8db=Y^r^<_HrE zmK=RpMrT0s?zw`|fE0-E>oYp}4k6+Oct;*%o={?(r$Q5q>rtFRg%^6!<4p83$lM#o r1AxJ689g;i_p^9`O#mf1zKvc0Q^yfpP8i$s00000NkvXXu0mjfE3PDV diff --git a/graphics/object_events/pics/pokemon/followers/jigglypuff.png b/graphics/object_events/pics/pokemon/followers/jigglypuff.png deleted file mode 100644 index ea877a890adf812292ce324f03d2cd5ba30b751e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpnCR(PxbSCS zU}d7FO>_%)r1c48n{Iv*t)JFfc}Xx;Tb- zbiTc^F|XM`fGt5nK%0lva2d1z1@{*d3}qFPRD{xRoDc|j=B6Pl*>LanwHvvG>&&9f z|7ir-9r?R_LPKiq%}uGNr|H^%{CWG^wL90e{XAs1rZ!){=D6=sL5kY;tQY$FGNyy1%s6HsAjDkl#V~QC%6&yU8~# zzQ24s?Jma-k)ZAytV(=4Z(1zBe(Tsmr>Ex@O{?6c6lb&9`JTC?jGuez_75d$f2Y~1 z_Va6~Tds1xc=LPh*P3&$zcZ;HGXJ`-=nv1y+O(6$)o;F>>ENDY_2>D4{m;1dP9G{~ SnQlA}6d9hbelF{r5}E+7AG@GK)Ip2WKo|z#90ts(P-rkve}F$@7bXx` zdkFZ!f;oC99!g!2-9itkv@jZ|SI^!(?4eYs$1N`S{eZoAa6u^wdoBnYXOd5JMyQ61x2@dzj66aeV1ALx1fG}{o(yDCjVdT%(9Li zLOctoT9kTsckAjYF4fwdB}Kg8rq9^m8|pZ{y8s9H+b*ZQN5eg<`0HEHY0_@)A0ZR N002ovPDHLkV1j8#D1rb0 diff --git a/graphics/object_events/pics/pokemon/followers/jolteon.png b/graphics/object_events/pics/pokemon/followers/jolteon.png deleted file mode 100644 index c75292549d2f3155ded51bc02c6a64bc3add50c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmV8WWU`NK)lYBQFc=1KOHmFSBZxw;nTEv8sS}YM zD_*p4gF-ZR?V2x0xVz=u z2pep5h8z+KZG+1qQg5u`aLNha&auHZgAn9rXRsW!z^Sj1hUYU%37t<&UO)$+lbCGJ z9H)({b=Neq;t}C-ln{fF%>f{(I$XCMCd5rs6g&@0)3W4ZB*%0&b`3_>LX5|cGo<$d zz@5X$a-Ju>X_+sba!fCbw(pCg5Xu|W+<~iQvY*9}5v^suKP&;3Vq!8X{GQ)CAg!%( zIz)a49vkU=?$HASU^%LpR~G(_INkIQTFVL(A*L*0qlwPvvQ0T@)z)pgxDhZu-5#_K zVF@(7{9sk^?>=rJ6G z>Ukckwu4LmcAC*H*1N3GPxrg)zR?yhE2JjR{9YP3gO`olG%DA1dR<@VHCr@WXBjoQ zC{kzbR3k3!t(~=c+=-&s%asOlX`wVQ@W{ZehSZ9ry%)DyM~}?bS>>Njv{wJXknMKlQC=KFc^mIL*1h|4%U`rD0DPm4m1Yh zJ8ta3QSj)}6XXvZWHjo5Ru?+x59D`NmZjQ~V>L^cl5a_@SNh)P6`!K$TGzVPXH>B} zvxtiDp^x-of7p&4&>n&vg1SqL0AM@XvsbI`w&G&lBfiYQCl2U-!$f_<%uba85@CoKmQ#i9@t=5)<7;f^31G-Nf3nA)zum4S^ zR?}(XknR)TU{RBiL6r&ocbYh)`@|)~M80|k53ItB^}BrHrPgO>b)Wcwv8Tc_D1NfG z`WNXDqovjtXA_kNOo|_lK>`D~HYDWi#7>o+3siK8{@Ay)CvE>jVgZUS(PC#BR>O%a zRU^n(LjyI*c!he0h`&H3oYyiS%15Pt2a|?n5@5*N#C(DUnjDpUyx5NR_CeX4Dbq_?E2`{%j2R zf1QYPZE$4jl*Bh7}!Jx|PFEaoD002ovPDHLk FV1nmCDw_ZR diff --git a/graphics/object_events/pics/pokemon/followers/jynx.png b/graphics/object_events/pics/pokemon/followers/jynx.png deleted file mode 100644 index e2c2430691b26ecb23bd953a8f31ee301755e629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRWPP)!NJi%IXU^^A&FtZ>FN0a0Rgc&A^BNJ`RTd&(P8m{p~+c!tCfIg00009 za7bBm000XU000XU0RWnu7ytkQ=1D|BR7i>Kl|5|JKoo$zc<^{bKq>Olt!&6dRfaM^ z5p*Mkf>IhbkeEwkvVfRSH>XJ&T|!iKVCZ@3f)wA>fdR=GJa~xYn_=t7%K83mUu%nn z0jV$3chB#A?_I3KFs|b|{+F;uCj6&@S=1t4g|K=66T%8)^@P}DSs|<(!0Zr`YpEfN zFR38OI_N^mpnQN<1VFA>Ll%1rLP+?eRCvVzIbq8tB>8TXAbUOx=~?)rRJccxBqalw zv|$*=GN&Ow3l}?aCsbBlXf0?Fv2z3Dg;tG($%06|hAcWs?B47q>QEP&Q7SxFQx%2g z*rw^MxQJXpUbwE?QHQ#)6NNO+vmOPZ>2A;q%aTQ8F^krz;EsAPE(z^~3W$BR@Rj>1 z-%-OfU_XBU$bH<6q(BqG8U04-%(fb!AUysxr0G~>aCd;6nhW8D)QF`?jrLknm`V8HWTDdcQC9XA2UI%-G@_8U?A_yV?;j^pu- zgpji}XaJD*uZesnWNeJm2eOVDrYmpGj$ZG)nT?#D*oX^b&W806u&6nZ=arEEragbV z-|p8`I}Ot~T$_Hof#Gn=6B}`%V8a-;m|%O0``Co3kh6*B&gNQOHq(%oOm3Z>;gwbS zT5dunTvgv&pEVo`w(fJ`Gf#9pf!k~9t+||c#nvek?ucZ7kdKh;xQh`&K~{XFKxce9 z381gIAhc*h><7NQ&uM`Cd@(=7KK*!QY~jGi2$u*U!Z^q!Cq6DTV~22x^Z(R3PlL2a zZU82fOdp;@FISB5<-dIhy$Vii=CG74t)JfPZ=!mDiuePEk~d;5KI^jp0000QCGL?Vsm@j1A zvBRv8U1dhmw)g+$WXDS{^qj2bJImzd{}#*tw#oM2n{zeTAFxNR)|j1i?oV3(+FK_2 z3oH+Wyw=zr)me4kFhw~i@^I)J#w|@bb2zUuEGj$M@H-;#vdff0KTF@PoH?BzA1kye zx8I3hbx!lcs?I{aBbka?W~Z!KI|U3>oZs>tDNwcFYbnX>1!9{ks(a&Dz*j{zfZnrd_6iCUfOQLBy4gbz4Y;sO~yyo%Ki{~IQezZsorAln^N=aPj6p7^Re;a{=SbwVWDRI29@vo zcJ1w*aQ5u8d$$FYw(~4ZPVd-O+#xvXG=Tx0clAw000000000000000ej@V$00009 za7bBm000XU000XU0RWnu7ytkQw@E}nR7i>Kl|5_QKpcmUED_h~3Z|i%VhEUct^@uA zU6Z0lIAe$$)WvP69o$704L+o)Yo@b}FN!pkk|Lxp*E^kbFN)nx-Fz6N=U$%Q=`YCw zVApnS*LF=b3;&(5ad^R2P#*TSF|cL_roX{phCz}5e6WQrge{EKsuw(K`KI4wCT!(D z57V=QEo{xu5n?~Qg%_=JL)c{2!xy|pZ?~}3wr$k1&pVqLB6LYKTa*7C0HSu+zHE2> z&Aed3Sle=w%dTUD&h-F;CsENkbGn5J5Ii51#5UuknKCw+3B0psmfDin1qIWIpy5rC z9d(LqII8B?>{S(M1t@j23K`4=p8XD?4>p-p0w|b{%Sh@@yPX;Co(LhIFL>j#9M20#em5D50%(nx!B87!6orEV2ibB~nu{Dn|1ul@zI1*e|(gwO+l zmCz-SGo`njq1*RP!bK9E411)SFWBqx@x|d2nnY^DoG-p<7r+GL`Nyvp*HaClR6-Ugcm#VQU_Xwc z2tR^S*kph)b(2i(7-Lq780Z1uZtl8wb0riEY6fA}?c}};Fu1(t>r^i~yc#>i2)K7{ zPwyQi)ETS@%!42Za~U9+)J2X5`u``ribIXrv~?b3=|Bb4+!y1pSgx08Eo?Gd5!(ax z8nS@C!E73gU-==CLX#l@LAXu=Uk22i02vTRnGv8f6IhuA*pns$FlV2SRQJta5L^pc zZ^f#}_s)&}X7!!MHwUvg`kM$LB=8d}w)SX)z=vSjk!ZCEWPLKA53Go&*FN2Ad0_wm000005xKW000009 za7bBm000XU000XU0RWnu7ytkQbV)=(R7i>Kls}8xFciQ&88qrh4K`WMgW(P`wG^&o z3FjJeAEA?#<{q(|4qf^YZs=rlMxc}ofoq`RI(Erg=#=S(zzzN`m2KHp)EG*jTOJtv zlk|R1|7^oJ#VJm4ihm3$9y2+fndZ~kScHZVCr2~#mA(Tk5|ZjUlCvP()9GxWn>C|+ z+|5qGb{E4aUaLBtMZzWKE9atKfu{zist+}VzbS|3CIp-^{n{mNb2Y=xFK^5v; zC4AEadrV3p4iEF!cl=Bh>RcrBou8Y&BG4I&Ex{dZZp3y4%4{_jfk^+&W;0X^lpHk! zN}+PdlFRFk_~Q*%4plN!F5Pm6311PbK2_vZoY!M0!GJL&Oyg}aV8Mr?T-XRJj`;Vs zz{C}M(#MlpxO}SEl}keTj;=AypSQ^YUOddPDy%r>yj_ABLF!-{)xya|#ZdPT@|eRQ z_hf;FuS($vV+)){sBx=E!&Rrvfit9~BAcU)ryXZ~T7>VENq6Sm&Z?2Jq=K z%<4l$l1ZJ?gGszrRtQna>ODp9 z7H+cu8rfIF4@|_`$+P`;R9kJ6VzvcSy!oGBot>pDVtdX@R9spulVu1JOw*xZIz7WP9)XVXcHy z!u)%YPlRT0U7Z~8T!OK7!2?%DrfPB3y)4UKpE$Je(NXgaYnM;wx!}~^yXU6--r&|3 z%Xwo$g&G`g7jB;ZZ))YY+US$dyJv6R&$DqJ;{wS$Yi}8U`21#Lf$WECD@_^niXX0R zpMT8$4ezRg)N9cdp-+ED$yeOSw$HTrb0_-5h5u{q7-!zjzH@Ek#n+&i@O1TaS?83{ F1OU8@%+3G+ diff --git a/graphics/object_events/pics/pokemon/followers/kangaskhan.png b/graphics/object_events/pics/pokemon/followers/kangaskhan.png deleted file mode 100644 index 9faf8c2adf6cf28267ae44eecf004d998d6335c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmV-P1GfB$P)*DXF>9(Wzl^adAO0AxTL|`N?_d>G`>NacKzw0RaIyIYEJOk$F)$G9e)n00009 za7bBm000XU000XU0RWnu7ytkQzez+vR7i>K);(+6Ko|#bO_~HnL){FapP*Z}Hed?D z%@8OZu3iGMQ*(nj5QREg+?GHF5BUUzP6Z8z!VUcbZj;DGy+&i`i#xVU3x%c{4#D-# z(n)7UN{6&tp26_Dlb-+iu|#4Rmvvc}^^c1F#TPAW{d~(vdI5hvTx?jiydD60u7}-b zzX#oAeY0xAgmef%m%?77JpjBWTjFAGQnssFtc-VL!=>@0$-B~P4W16c##C!qwW!1K zH2@xs*PHxy^(p}OSNG~Y^?yQAGnqwOgGBfH+#iMPG9Q#P!6Ui8HC zp3rkV^SoJuMZ;(Pai|9@SeEI$@VpOxugQjsXEU4_wT|{b-SkmhTwJv*$GJV5z4HAg zn-LZj^lBaBch50Nip{F!m%>r7|1k>iq~3-TVMcIJ9zeGxvIx~iRPlT%kSB`DfT}qr zOnlUv@^*^T^2Ak(iAH3FkpmX|%zQ;TpE6>;40MPJP|lA@X^gcW?2HX34P8nT6#KO{ z35^*eB&B(vtIXzIOm90SLHP(&ZJ0Q4J9i%s5~c!3<_KpE2zTX363%LU>~#_v!=m5Z zp|1tBS57-Wz6|cEhB(N4@GCPN^PEYR9GJE&b!C-@dofydjD+7iS20 zARa7^@>^iY#UmDRl;6F#1!>5+nz}Hh#O3;nnY2*YcatWEJi*w7NI8bmD!>?Yn3!7m zY7OqR7>V^)%}x5Yz5IJa`RKuG+iq!rkTa6#2XGnTusAa0Vq9fEbL)m!(E1xkn<0cf zI#IT$2_Y&2<3vngai4SKriC{*i@kXQsw`Nw{{-j_4G0%Eh0Fajf3eRl{J;7G268x6 TZA1$Y00000NkvXXu0mjf$}4+t diff --git a/graphics/object_events/pics/pokemon/followers/kecleon.png b/graphics/object_events/pics/pokemon/followers/kecleon.png deleted file mode 100644 index 22540441b3f3b085f079afaffbfde5f773f368ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 739 zcmV<90v!E`P)K)xnC|Ko|$`EF`3dUY14DJ^KVDwiT%m zSS@>qkPu^JHHTu?^GYk}b+KLJ(u?#FTtVy#g}P8$3Wdf?iKnQC;Jizdu_iNPhL%11 z9YTJ7$$!SlL>XpZ``XvO{r5(5^TwgL zxb%y|&&U9T8Rp>}yl9qyOEc@t^>fp4lFj}A{S49fyIxa*J2KIHQ@-GK5(06fE~lq=c1RNApy|wj4kV()3xG04}Ag8&F?F1blHx2 zq+#BmJOMWv@(`ipZTnSg>qpg#sQ(uF4xZP*m)t1TiJGK0f!RXg6nzh%k$taLU#fot z;egPaK35z6?yBOms7ZM9;c>6mOU3J^LnBMlsXWrU@qh;O_GVpZwbUnZ7-1OD>i7E= z-JDf1j5f`DUlh8?7T`ZV#vGO^=nnd7lxM~vYE?7p5@K01)TqxNpJ7+?siAO)zi2@q zga3Fa95$dFJXNf(wUGhqsUp_3>M6_&_IJ1~JkSvED+~eYb7Y*p8~3jwGj=j*^#{3n VKYW}c9-9CF002ovPDHLkV1iuIUVs1q diff --git a/graphics/object_events/pics/pokemon/followers/kingdra.png b/graphics/object_events/pics/pokemon/followers/kingdra.png deleted file mode 100644 index 8043bb032d06a45443d23e582a9d329c296e337d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmV-h1ElPx#Md$}g00009 za7bBm000XU000XU0RWnu7ytkQ(Md!>R7i>Kl|65pKp22;K{s^k-l0?$N~JFCU$B#o z$Ot*6RSH$*~S7{ZhY=13G>t1xuPkSR;mA#?XGQRE>VDk0>d_ZxZ++;Ml{s_Ms< zTkMAyKM!Dx5xQG<>z}OG&CAuF&im`?t4u~^gb2Cz%pMjRbu&-a%zHwFJR3RPCZobB zLXpn{dXNQHa}nqTbs=NdA-0SwL71-zA`ey!Vy*@ILgXcZ1KkEps?ePge@(DISA%^a z;}EFW-$6j*f&zQfFc&(%H}46NK@!UL=WEBtlr7&l=G+K5Z}a(tb331`5h5d}b%(}| zJ6j2=@Yrrx1npLs+|Ijz8q|ddC)Mh7pgkp=rA;8p{6QX1ZUeACR=C<8`-4Ihv#AZZ zta*S0OG-!a@ikp(ker z$zpy&2rbAtrRU^Sa2w=2g}{tSJ>mzX1{-0Nl13P^>-GL@K~e}s0A|Z_Sytjc(1S1z ztWyX-4+gm~YlVm3mgMG!lAE#k;oUn*56k6s^!#Eth~MnyZZUbW$-guu$c5>CBg7CB z!ft^uI~IZLlaY(}ZLM3?wsQs4J4*8~w@??aaP z;*9j5E(GL)JCC+R0O3c6*H61gi56t@+=-65xfbjTjR)okvhD*2y>i1Z5^6#AFe{2w zo~yy0(0FEAPe2y9(@`j)9z<@j0GYKQ?5RT7bF9ED-${q24*H6aI_b@*>T08&%002ovPDHLkV1f|teG>ox diff --git a/graphics/object_events/pics/pokemon/followers/kingler.png b/graphics/object_events/pics/pokemon/followers/kingler.png deleted file mode 100644 index e9844c2732cfc132bd73520e7e816c3c6b12321a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmV-~1bh35P)0RaI)DJij;Y3b?t*=aH1!I=O600000000000000000000dtWRh00009 za7bBm000XU000XU0RWnu7ytkR`bk7VR9J=Wmb;SMHWY?g01x09@d=W=KtS4ZM+Jv4 z)sf-FQf&w`TRWajFLHw3($4JL=HNmQ;>wN-PpX9q@gqU}9}YlDN%GoW+iQDm*a#H= z(@o!Kl^*|l?DfgzCV<+UnN(@5kTHuAyZJ_7# z)_1B_-PimwFrU_+=PuB3r8x+zNLb41hto4D_%q`2A&!8C$m-Di1tx&`X8FgDtqKBpb>JM16O{CPuqV!XIC~)(D0W%XUisN_Yz;Qr-iMMW1=8sHjp)`G+d@$sKAO4 zR(5TU&vokpQ3xEf9+X=G`j!3q$V3|i3}=@`fHJ|~{e6BLIo&UxExl-VL(;5Yt_NuS^U{u}y)@huCu5qSKAy|3>xl&uxWJ85SGL1=>& z88*Cq#K6Zq+nKJK2T;IzszaG`nU!redB6mky@@wjzljCU?dO#s^ zO&>mD;FqW2YP$#azP4yebrM2=VJYD>&sa43;X$d;ecyaRh&~7z z0ofcM5TCB8Gy~GWo2BLn^r|4II%3oje%sRlgivbvjTIouz*LnrQ4$1>pv=3Y*+?&x zir)A&LOtV0ik(zau|4rWc*h|7eT5{>1;|N%Ajh W{nLk_n2fXl0000K&@oHHKo|z#lTZk_SW+Q_lT*e9PRQaA zdP9Z|U4$-KrHiA~rEtYqj~16so$I2VYH?{Zi8nYzaH(eLe=(P#$z6JZ26W0h1fE>J z_u~RUnKEU{{7)*ae1nTG_FT6Ly5fd>zhD6F*D4{EA6(Gxy1hNx99J7C1dz%<#C|OaBwmQPeP?!ADrkitTPTVLiEk;CR4|20q)xtek96qn}zJ zn8ia)8X$z_jtZ&7W-~x`Roj+{jt6RxQdq-svxO3y!Mlz6sRe@BjWy)i$ZP0wBTA9P zCbbYuFAy9LIEL*Qse+7=jU0(p=eq{=A0{}{`MKOC`Y%vv9`xK|1AIq mb&yGBC*I>+>{GM-f0the@D=KpbctjD0000IVm}Tfr07i`GHAM0RaJdX~C(f(P=qB$+>v|0000000000A#|*f00009 za7bBm000XU000XU0RWnu7ytkP`bk7VR7i>KmAy{GFc5%ksRKiXcJCCrbghd-V5yWy zv|{8Pkaz+lrb-}D7-NJmD-z=837|{6=b^YuY{$OFEds>UoBHLm@6Jw@V{9AS*v9`x z(f*e2c+0pZ-r1O+7fXNTve_3)*LO8_b$PzpWn_A&cAAwe(m#l|1uDN%z?ARW0=S_y z@(WblZt}cXxSngW?G(l?Oabg6?J;w?U09*H(X-CN_pF5!8Cq1#>o*FwmdPZu2xoJd zdd3L1CPCn>3~?z>l{!uK!;A$& ze0+Z}I1&*z_VKga_A_aea87tloWnLpZiR`!#i_0?44r|ea1(- z;_+1srfXQ{>0lZWwl^k*sk53e##lTZh$|Kmwx9N~5E-!jK5Et;NB}w6O7_Orc<%&O z)F0T2%kQe$gWM)uxKxj)lIyut#%#vi1e%vV^N>f13g40fWzcEYF#W=wlZoC`;CDfX eerH2_e-vM(M=tlM=F!Cf0000C#e7OxM%30tMS{fq~PIM0r zE%Po}dZ_UDc@F&}4g%GQ-o=MHYnM;G_3}vU?ezj&TUShIXcFJ{W!C!{CAW>P&Ro#H zLU2`oQp*#ob~!vTR6}8db?Yuq%3z|K|_L~;>C1T zi|yynFWL z-ktv}&B!TZ+Ue9+=98l5-Mp<4_iEqwGr9Uc=a|1ZbU$<6Yw}K`%lDj9$O?I8&PP)= z#ChZ=Ua>K4+!GZx%V&E=ZG}msVe90VtvaeE(<(jgu)j0@Y`u8#$y3VDxzEmC6cqj8 RP8lc)Jzf1=);T3K0RUm@;OYPX diff --git a/graphics/object_events/pics/pokemon/followers/kricketot.png b/graphics/object_events/pics/pokemon/followers/kricketot.png deleted file mode 100644 index 1466d70256e9c4a284e1520629ed2e426b278ab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}P)FN1VDH#C)0g*`=i8&$h(UIYCS>d5ksZlvOIXSsmApigXm)Sj+00009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K)GIAokoj58*MjIzBS1g;#}p~PCLZz2;&!)t5dNM z=VFoVqC|`$>}GHIaWB64-oZX6?xeg7odv@wQz-~U8ErS*R9epq(+tZXEt{rIE+E~m zh_z?`*^qJJ!(jigd6Hona9Lf~h<8Y*>XOs9H2(uAd(YpR^^WOpr48IZw-H3T*%>s4 zL?Laj@aC>xJ~+-WZQ(*A+U*O|eAUOBGTJ{kvioJ(U&`s&x?gBqBlK=Xo43tb&tD$0 zmz;6-WsTY1RS?VV+{to9UR`8>a!MQ+O3)dp(y~&MBfw%tFTD)zNmhO1L!IR!OU>+NHdib6XAa*^s>;2L{e~ zs099V(GfkbZRR|JFi-{+`WJG~LMOqa*m-bw)WKio8^_}Sh)0F6MF0Q*07*qoM6N<$ Ef`)qhU;qFB diff --git a/graphics/object_events/pics/pokemon/followers/kricketune.png b/graphics/object_events/pics/pokemon/followers/kricketune.png deleted file mode 100644 index d80a28757f2cbbcbbcaec5573ad786fb984f2f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)FN0a0Rd4d8IegD;c;2<(UFNcA>pA>X=!PxQ8_s|Ik{OOt7Xo~00009 za7bBm000XU000XU0RWnu7ytkQ#Ysd#R7i>Kls{|RKp4i4fHVjy=-Md+3LTm*CXk`Y z+#!R&$PL0Wx7ZjJb?e;8;v!H#Lly^N(5EPd4yHqkRFR@!FoIBIeTLrY{z@Ss33O`S zLGZihz2|w)+!=tUdaD1WjPtvB(OG*agT!kacGy6;ISwDq09>H<$Q@3a4Ut&u8pQcI z``kYuQx6chAuytW*bz5;dVWtGcVsg)j__1TGy*MJBr`pHB;$dnmTE{?Q9%ri(>!+o z?=gagMGMgpYU`M#g&WSG8bG)mpdo~2!r-B-ba*M>4zo7%W>(qGF!%7$oh zbA$>@>Xfs`g%&cX3e^>8-52=|?TM4wI$j=TFN!cxV^t(2`sc zUQ68mQpB4Kv|(+JD*IM8SG6;$zN@;U=zINAJ>E`-$$)RI4-kJC8jKyT+h5ln+$_aZ zaf-R*e;qr8T@4hs{U7}n6T_wcJJVLqZ5)mCGxuFlu zGO4zB1|L#gE8V=XOQ!3BGrs@0Ck^!onsrYNz&2WPbvXviaDp$ocU8=BFXZ~-`3s@r zRn2R7!uS8F<-;PeD$_Q{wjnnpHMSkAtq&|!AGCEx2((Fe+AkSDCD1L+dVqdIzS;lJ Z>MyPdz)WqoSkM3f002ovPDHLkV1n%Xe)|9b diff --git a/graphics/object_events/pics/pokemon/followers/kyogre.png b/graphics/object_events/pics/pokemon/followers/kyogre.png deleted file mode 100644 index 5af391b3025ad5d398447127bd6f1903de7c12cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1311 zcmV+)1>pLLP)@x!E~6IpM(}VWGh(VVMB|0m<3%$tfvW5eXSNS(&M^)b@MR00009 za7bBm000XU000XU0RWnu7ytkSl}SWFR7i=nmceV=RvgFQDUb&hCn)js(WoKVULM4ruaw5wB$pd}u zp8j>R<0LQ?)wz?rK;DBue8xRYM3w~-zNd?N9QTYJCxHRy!JQy^8*aP^Z6mz#A`zJ| zj3b)>lI{?7cbE^PdwPQh@@P0V7*YVM8ynDfFTplo>$Q~+B;Ceey8g}Fa1tn1v$9va zr>osT5v4gkr7Z4(QMkCsr$Yn4?*2YL+KYjKJVWU+)NJTRDgh+EOa83&`weZN+QQ2Z z-LZksn0aZCGF@d2EBD|MP#?-B7 zGix|CyE%w~rQ@ACS?Z!@4E1n{q=2Sx(7DC_kBzrtp)`x!HU(pOh7+5KG6r=BrSMYdC=$(2R2tk{z)%4M(3JbvWULXKx56kX5GEVH==D~Jwz&oMGZ8oC(SatF$$1o{Q2?h0Ko-izP2 zw(XYCX`teE9p`6;qJ>YZSX!&!S4vv*R;~6-^#-lmXBb%^4SN{b&S4U`F`LyXAZc6l z^taE->XtYj+T0ckd&S=znE&*DSnSXHrDO9Xifn9%k?o&%AdtWwR1c0&yB*Y31$7D- zn4Iu0mQE{M+uNUr0TeQeJUSI8O9OGz-RBsYCbfr=(St*iNFeby&Mm1yl+-Dp=@rFT zz5BOqy!nM*^ z06f~jX*RXOEv0!&*Pp2_uq-#0CaQ6#dCz%=sufM?}VB zLoOoA1Bwe0%N8$*k1%0I3K0?;@;M;Hq3U6h}4VK1Tgbzmsd%{Y{!#z4d8!Ny5kS2e*ynl Vg>?uD8_ECx002ovPDHLkV1jM)UOfN+ diff --git a/graphics/object_events/pics/pokemon/followers/lairon.png b/graphics/object_events/pics/pokemon/followers/lairon.png deleted file mode 100644 index a76983a3df798a43c098180af326947bc9a9a2e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmV-p1DyPcP)G?rnfiWpLX_3jHp|R1?;b~!U000000000000000|DtjX00009 za7bBm000XU000XU0RWnu7ytkQ*-1n}R7i>K)4^-nP#g#F2MRfO+OTY}Q(qFKc#*t_ zw7IRx6CLa{=noS7Xx{Jp z%S!~{rC#d4slp!rb7{5RE`i^#v9x2y5 zrk>+)wivk2(@+EmuYMn#YLqHkU_3&SW!}J14Op!!OwTc!h4k!snr(?z>$Ic5fUhZM zm=|$w_-jM2oj5QtjvMx;h@LinBmsX|lKD#m4@t8s8|4i1vYl(%q1|g2XPdA#p1E3bB}fZl#(4WrRVVZ#kmqu5cyIkLSw;*G?X zcq8tXE&?s*p-jlDc{0F!<;!>gLW0Jk*)jsl>3H98>JdX$?5H6om{?}K=aR*R(?H@)oW8@>1~4NhcMOWy)vyu^a{7fHiqA94NaQ!xpQ1~73EF)=`22j^@R7i>KmcMHoF%-uSgz~{QmJ&?i0=ASG zimyv!0@><7rZ$s<=QtVMhGgzqx*4)$C6SPdd=%qU9!n_o4VeS|8!DZoJL#^} zE$J9--*->n&(p7GTh`-v9RF#Q(jj2V?Fab-KOOT7Xtww2A;8&ydj6B~H3ggjps77d zgz9AzkOa;GxM{%92!VoGaS}KS0Mh_71eOz@3;(u75G6y{1XL3VBsn2@=%(I+D6s^9 zpzHl)&OAA&rP)i@YTMGHKC(-9a}SGz~`Y> zDH+?l$Qd`adOGm6Dc-aF#$&_CcsYuya-@-LBNUPab|62PXQwUpyTn%R5uun15INAK(P)1LT7t> zFIY0?hp+#zYbl@xnAR5p9q@g;qv?H@A?UCeYs&1EZi7h(@Y%vk{E#gP1W`$t-sYWS zy}}TPVng3e0)}3sGZXH|9A(7{2!<${aBDlqx&a3&4M+`g0IZ3tVu4l20dQR|u};sP za)2+7O#z7n0J85+4!hG~Q5rD7$aantpwg^i1cwmSnvF2OQp3=N7}XjgzuvpPV17d+ z4Ha+D>?&r?G?cDT>8x0A_oga3YmVjLX5oCji@0I2{R~W7epjFTP>@j~9Lk18= zfR{XQcE2PH0Ac#e8>Z#!Ar@xMip>_f(kNkOzl=ad0PvGmkJ}*yP{4v{27s*R@6T_p z?^dNjQ)yWt+toQZAGJfk?jtVq>VP~GY|p`G9}y{tiUp8hWUKx`T5o&3_lqRjk}}ux zWFrFDaKUVbb*QzfY#S~$H%q{l6?0&x*&uNWC^)BcQH4Zl5}9u6%~BwZhTraNG#fz0 zLLghdmO|JO>JySWlLnZ9_JLv8?$kETUl?NerSwdIr7c$gfAd%CPb2j==x_fQ{Q}`( VY*yvcccuUU002ovPDHLkV1m-hri%ao diff --git a/graphics/object_events/pics/pokemon/followers/lapras.png b/graphics/object_events/pics/pokemon/followers/lapras.png deleted file mode 100644 index f55e3028db1e24253f5a6c479eedaabb451f1052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)KmcMJ;KorLf1_g>1bqFbR$rY3ev}Eg$ z(TTz2F9;djOR6Bykio%JWNC+@`3iyu8U+U7DV?&pYO0__e^lRDce*s31OO^r+AM^SDPrwH3aWNpLOrN~ zs0O`;CXg=zN=T)^WE!eufVm(Y7*T^f>-Xk(=nnGFpf*Te%Nv<*0vsdHKL8Mw+!JK!1t zR|?Q?r~}tfg5gUu-aQa?OhcAkv)(Zsl;1pfqc!L^)PZX#-IHu!o^^aikZMfwfw z;}D|bryJ_Pbu<^nrA&uF9O9qPWi7Dnmzow1aTzs-{e}jR=a1(3MCR?vap=ur+||B! zHi@Qryue)~cfV<<12Hyc#bl%`HoIh2pLP#B2l zO`MM=vodN6hRJ8RDaNtfR@6+_cs-RY!H3oKagB~!pmZGEj^koJmib{4fv_hdf#|XTekELUra$MXMmvX|xO-M;xH1fI~ZiT3q-CGCGWXgfA zIGGmhbhjz-GDD!8q0Mfi>`dL5dw7?-bLduJw}xQnV-`qV5#LFYPp^r)5)E7J$)7^W zZYet}yUVF&Clo)OwgIXjQuq0=#s@V>KCVIa-Eo|%5ldS diff --git a/graphics/object_events/pics/pokemon/followers/larvitar.png b/graphics/object_events/pics/pokemon/followers/larvitar.png deleted file mode 100644 index 6a12f6d7b0adae0b363d471572959d05ef0c81e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x0!-)6&s%;m(ta znwlGLR_-)3WMpLYjMRMj@@J)@B2XbR@Gv$%4&-wdctjR6FmMZlFeAgPIT8#EjG>+` zjv*eMZ?A03Yc>#Idyu2BZL-wNzRD@v6kl~M;ZXT`6V)>V=53mxQDAq{ z!}E&X({1PN_Z?O{m1KB5rugjFeyxfljwhYcqE}TM&`MVP9M6;SYT2&airFV}ryHI5 zR4se0qr__aTC3x8^zJ=bCx0pY*}ip_ymdDir3e+y|44< z^Vpu9&aipygGfcWmisT{ZWs2pvoy{-@O9}!_IKY7yck-knZr`Vr(S zvDM3#&#{d6>x9C1GYKDG(}xjLzg)TWYu0Nv1-12Oa@$WW|0;EgbM>-mcI{kY3LdBK zgbL`Jd+PjY3z~ZA`HRo5MH75>{^mXY{+h|+UejC+Y30m3+b8M~oQ`@QbYk`2$j*=c z71{LZ&ZTG*r!4jBLH(5~u7xU@B}~W5n135@dupO%Qtc!@t7&WU{)O>tzopr06go diff --git a/graphics/object_events/pics/pokemon/followers/latias.png b/graphics/object_events/pics/pokemon/followers/latias.png deleted file mode 100644 index 9e6ad4240cf58d8fce798a10d8bcd7841aec91d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161 zcmV;41a|w0P)i0l`5*At@KmceTqM-;{f%nmyBSZMx&9s@2dQLarhS0_|Eja`WQ>N*uX-FybRC%Ecy48msN-wMR zLCoLKnSDE>l`Q*^ODS}~i{EJX`+o0zyDK5||N1vq>s2pYxjs8yAy_-tM`yjdH(y=0 z-agjH`rURy{JGh8IDbGo{U`SF4Q2+mGD1cP=((HT)Za@8h7h*5;x zHeE)H`AKuQ&FO-{p*47`Fz95uC7f1TXh#&cQ+LA;DGn!HHyY8U#C5J#rGb@-pe~65 zL^Uak+83E2?udyp6e(-u8{K%5MItIjHX|+vxH;s!*_as=#70n+jRw{AdC^fniVbm| zo~n8(HhK5=8$tZd3I9&{bz}w&`7`24aYBF49G>kohrLr;W@Lzq zjFiL5V?rKZSNcUpmKX&4qRC$%l-%!>9pR}V9>aZs*`K^Ql*Nap}RpLVM zrn>gl%cQL$4-?SC6Cn0!S<9VBi1bX-GNWK!6FVMc6s1AjAtcMaC}mY*5UlfuA^C+6 zDG%h{GGf(Hrx!Jc=^%rS{4@sQJSsL=8i(HQS`g+DnJa)>75S|T%KPPgC4pF)5#gh2 zoIl;7W$hc{i5a1s5;B%>z9l|Tf{NJ9?|!8WJXeJvTjfZAI5REaqt~0mJ6qJ0GSv-h0!dmSt20P$=@ z0n20NRli&dVmlIaFOSu~UnG|hqX+7fp$BV>^%Nc0m-W5M-fY^@Y!df7{U_do7zUntqL42wH be|r4`Jxp}pI@Gz`00000NkvXXu0mjf?hhS- diff --git a/graphics/object_events/pics/pokemon/followers/latios.png b/graphics/object_events/pics/pokemon/followers/latios.png deleted file mode 100644 index 553453a311c6bc0c29278f45a134ce57487b425d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmV;!1U&nRP)At4DlSpfk7xyjKXaj8L>*&!(@>FN2Isj-2PnZY3;%%88&00009 za7bBm000XU000XU0RWnu7ytkSIY~r8R7i>Kmd|VBMij?Y0v?KwJ+!5#isJ2x9JaXZ zF0FkjhS206DD+}nP$~z?G#er-Nq5=)lGe_lEQ`dGZz9;%qzfseNgT76Yf65=fmj3Bnrqgw4lY=?lgLOoB+GZw8~ zO2@9!7sOJK`MECU`ADQrEQ!Me*nu4f%4G;HfaR!^CvM=x0(q2ryl`PCiBmzl<&Lpd zw4`4FBr()QzT=cBEi(g7->7HAg%U<3e$ivW3u<6RtOQ@8;~iFQK^25DVzC<5)ixJA zzV!KBqm&UhB8(m~hXrnMgXv$#8L<>x-=#aO+9Qw^X_h4RMLxP}?dtm2y-X%Fbzc%& zdXE|E%%SCZF4NZ|tcax`I$OM;u4bCh-A@g+CGm0EvzGg%uD{)Kla4vMfdw&&bhaq# z9~iy*?N7h`s?dzyx|R_SQ^D$)enHXaTKq6Ag5wFEzV({jlmHQqcd#BK~lz|{l4K`MPeoE=%>gEy_2Zg}RLHiRB z=h`%v36MdX4SS}UBW8kJpt1PJYxljc$tZ?yy2=}pcq!dh_Ooxk|LLPAc6!7e0{)O0fRsw{Bb_{WP8#zE& zfOzgo;!}X3*r>K$^}GiF{vi?1iVaD;Bo#itN67E5s%MlVhy&%g84?n&iu)O{Kav}N zq5O;YD?r#4Yk;sIR&N)l|Ge3|yOjwFVr5teEkgXbo~Dwx`)EbZ&~Cr-I=n~ZL6|09 zH}3xS+4Ja{n(lA|<)<}ci}8j%bs;4tM7?qrszbjf7kP$wUEc;c)-waq5>)^J2Ot1a zR}&KAcS%@PmJ}ZlILO_dCf1&?nWJYfYzeXh%XjRY0VghIEz!P! zH7ys@#9Hw{{J*dzwrS>m8>GZpOBjMS5tGC-!CJzI=l_J6OFR>k#Ipu=V44#xnVs>s h`u`ku^7o&NzW@Oraw$AK62brg002ovPDHLkV1fi=In@9F diff --git a/graphics/object_events/pics/pokemon/followers/leafeon.png b/graphics/object_events/pics/pokemon/followers/leafeon.png deleted file mode 100644 index 8a1e959f661eab1d956dc0918ec9f364d2d6b56e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmV4CvvaZw>*p<(gap;0jzsfkem0Rh>$S(#}u>FN0Z00000000003@{H>00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>K)lYBJFcbiA->e=hRI$Pb;J`6NRXzYn z9H)|1`2q$q4zAkB`E%kh(r%YjOaC}MO;q{goj8n^eLB+8rnZ?oB*p=0@Ahkx_g-FX z2Y|DodN$Nl9vfX@jmRz+rIG1=p?8!vkLkIDjDLxjHQ{dEB^65P|P4&4NuB725a1}^KG3HRRIt~JTG zP7t!m>oOPAEZ&eC6I_%tU2q*r2JZQ&G2;t_4Qp3mV)t{05&^W{%L}}^wX^?eY7cKO$c<)hc3x%7?Y1Oli-ddcvSCqgat|cfUrgAL zu?w<2kt=i81CJrQz-rIfw3A178z$`9XRH83G9LlGF6LNmmt|S5a*eu-F>b)6bIzNp z13KqV5BQwULeB2F?+>ub(9BmZH<3NfBw8>FN2=u~Fe6IRF3vTr6#900009 za7bBm000XU000XU0RWnu7ytkRc}YY;R7i>Kl)-BgK@`T9P3eM1K|Dwytih!RLvTO? zO{L1x7|@*bD2PZ)FC}b3XG@#CROlRX5>e(7=t&Sf^%(3WhXlGu(bM)2gCP{=Z}82| z%w{%StQQf)7jk$z^SrWfB{)A{l{-Lb3xd^|N$hu@-%3v)HTr5w z>Dx8a&SxjeBwlM+D>xDXlngmKwCUU%l4+JH#5M1t#c2>sj z`CX62$714!B*ro2vRe%p16l0W^4#G3K4UHD^I9S>94QA76vRT%WYO8)=}EnJ8boI! zCCJx>ph?HINen%8r;w_^dZ%pSva!5Xk%$}0TjqiRC%!KP&D&A5hfdh>N;`_|M6j*| zEx7P5L|_5ji^J!SduOm=;@Q#w5^=+a>dbDVRYBZFtNhuOPw3u_6V|(qRzDgS1r4)M z>vBOxUB2D?(ffQBut~Ed^h6?9Z>l@Uk%PTsAnrBELHqy_xBYb^YCSrLXXXSA1H*9@ z;Ww_v@17k+)nMXx`szd=5g7WRbTlf22;ws7lw!lfu-cCBHEJYRZV^+nGGi$Ls1LFmZ=W8X<)@Oa>Q$KHZ?(>NdNX4h9FkYP|3naM<1{;o3YvK#WZrL zvtS{E5&H(U7RRoAc<4^QwTA!zMeN6 x;}?}qltDaS7lCB%QRegfu#8@CN?r2zl{002ovPDHLkV1hr{*E9eC diff --git a/graphics/object_events/pics/pokemon/followers/ledyba.png b/graphics/object_events/pics/pokemon/followers/ledyba.png deleted file mode 100644 index 32e858e2b77cd3cc9188040e5ad28cb6851c4b25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 zcmV+c1pfPpP)FM$D;eq*aG2uBOIXOAu$tmgS`2YX_S?-on00009 za7bBm000XU000XU0RWnu7ytkRcS%G+R7i>KlCf{wMij;m2}CYl=m4E8z-9!)LsGO| zx^yBgve0PA!WfA>Fh+6(gfws+%LGKBgW!Q{vU$iX;92k#g@8|klQ?uCT>>auVQ@1t zWboh6yW^2ZD~W>!Ejlz09PS->@B6;r9YSC0YyEG_T>qB^Iz7F1U9~8=H~y*lCes2X z3aLWr_U_=zNBU>F_DCZ#hok7*|ev-(9<03M{-#Rx@8#MEH#_J5Z>s-NXu))@= zxHTNF$d)6MiCBir^w*mJUcu9uMA9+SNbbdrAOc`HCEI7K?PjyHdbBYwdM=(OQpn8C zcm)7@4W<=}iMZn;l2Wq?K^ywxOu!DER=@}Bwl->Au3!h0QJyFmj;U1a0MIr-un+y* zrbtw9+@Tst37RlyFo;xtAq?^I@9zOleOwE>ykBmxp-9A$)w<$I1ET}ir5xRnLgtG^ z%CmG_K+@iO553_y%FJ+q?dr)J*sH(8p%mEm-89k4W+(*q`)ts<<+g_0l|mNrL_STC zNyh~wZTtp$5N+fL?XbI8eE@r;%2yo8Qi%OD(Pk~=y+K#WD`)5NwfKJH8B)kZB85yk z=18(j2>7t5w~1}7FmF8l82~@yD-p@YSt3XNM2L;K0CpB*!CfMAZ@CSHOgiq5{cK?A z>2(@yU>wfp3Wx+WIi_3Lwb@xB^^1-1)tx65?8sgqJK}=NEJY?AgO5X{U>sBWFsWd1 zf2xerUw%s_{)2bl*m%Yv+@bby7=Si^RiVb2q5yZJV`Fa8KS8~ zOX2p_a*~uQp*+H$U3Y;evg|M&DIHJjT!5c{v1TnU6$I`wYciQT)B<-zA}!$DnON3j zt)>K=E8p`()=zfIEOl)CVCMsgfn&U;pAj;+!rURzi7tyoi%Rf<&8n}HB(A?mkJwl0 zuSFtOS0hu$-=V_5lla6##SM=g==sx$&W vX(GMxf#c8BRHEscO7wZhf4im<{ipR8+F#Rp)L@A!00000NkvXXu0mjf$9v@_ diff --git a/graphics/object_events/pics/pokemon/followers/lickilicky.png b/graphics/object_events/pics/pokemon/followers/lickilicky.png deleted file mode 100644 index e2d732688d3851d1b93e563b98420165fa445d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 711 zcmV;&0yzDNP)K)jw<7KokJ*8w@u;urO}7(4k|7EbU~M z6GrYN&_f)a@(pB=IE!Q|89aEXLBiZ8C~>Dk^9>5kkPp?T|0jbkq$QpFH2w5W@10I3 ziLrB>;~f7j)HCLh-Opa{M^>|SXf=n(YR2~yyWwE<+!=wNobm;0&9?6u?;1Qx^p(qQ5pT*lW;tb;3CFQkVUVhNpi01|$C( z;5ryK7Hd9i7ihdQ8#G-o2XF(65gZ(}a(x<)Z9#rw#+6%K;I;RZmR=~s6uo?BuAY7s z44X8+?VGWWkO>tFzgbl71cmo+E^GT?j(F(uSh;!=HoM2)0#P;_pWpUP@c~wwr^g$= zc`WPN)5~T8#f-4aJC(}`@b}xhJm{=7kvwY$Km9cKyFc5|{O5*_fx|M4WiL2%JU z7hUxKC|~~_zoZ)5?fD#faXtq@goqDkb68^QI{GZNmj`frE|(G#$Ia(s3D;+GsNly3 zdjXGCX@tGdKjY5OiTC+6hS27DGsLVjtn*-ir6PEb_>TOB88&Q)`RF@h!_7PKxjP`= z8YhEXB=Sm$)7O050#6Adl;*SYSt@6M4cI${n%8C{g)}7Wi36rNc^XH_8ipRrN<(;> z3a|#6Ticg`1k76n&By*%p$uaLy%X`J&*}gI5duc-00$-G0KBw)&D}szy*kK;AqG8Q zboID!S%*UMcmQT6W{QcKV8fMRwLZo7tDgr*kpbwHMbr5KJ~oDrJGosgt|!K@P8Hh$ zLY@Ih>yvzcwcG(gnON%sqTa#&0StEsQZiq{#NlMMaJizqqV-9R#P;s?S^$g9e0Miw z2TAOHru6f4_9=6DzI2(;Vv~^}4)-@es51|!f@NixO=n{#@!Q+!j5+~vPA40uUn#bM z`zFpNb|FEo3Jy!dH)1Q?M9~kdvb^Z`^McxbG^WnNrHV1_{e1*cAEms&XMOpE`&;-; czwqz$3!}ap)px;SuxSMNm&soVL6e}X^Ekc*#Q9oDH$nIIZ?quVE_OC@WVKz00009 za7bBm000XU000XU0RWnu7ytkQN=ZaPR7i>Kl+TOPKoo$7qKuH@VHZUA-yx_b+0sje2uS@9!>AgP zezROCXy3>YCxAi(jOjS+^WFR^F-+3t1W0I+56>kx%zFkx1g!d|rMpnTLfeyFlVxo{ zAyvnfi-APH&z=Aw23DudE!zhJqlOoGU7z_g01^s@TYGVD_kyp_6Bd9c)V<3sFaxT& ztsn8kcAI5F@5)+mw&BeeA|SQ);!nmH7%XivN)C^j=6qplSPOzc%=Q2w27XaTU-z@O zo$YuvO5$!-gM_5*tp>ran12Ueh=B*&NwP1)-^l8G+>AE|og4s!g62I_6h+P^34{gU zwdBF)7B~o0^IvYq*6Zw(AfaFk-qu%?L8Jqr^GAq)r>BfXQ#fRUwZ~Vdt!Or6EM&CS z5S0xf8!|7%zysZW)O9DkAO*M&@7SFg01F9;t~c)2jeN+w5Cf}+{+m@Bo#e>7soeHC z01%S&RLkOqns>V>7&`J!xM(iy^o9<%i1Xjhkg)Yd^9myZ|9&|CxA7CvLtVD}XPn>w0000G?q^5!unXxv{C4aalo0Q2+n{Pz%0X00009 za7bBm000XU000XU0RWnu7ytkQ0ZBwbR7i>K(m!w0Ko|z_(+xK;FfdeNGaf3$83}dB zLMD*-2(X%fE>az5LD)i0J_O&u%7|b>a;3iZ(n>J+I>68jZg)NgZ~oYKXW|Qz1yi2w z=fux*u|voqhaB?XLS4K2ho^S;A2_$WZ&-D1b?=0br#AO}N9?AA)aIZP#NxjgkXOFN zd>jXk#rp?jYrr%M9w%IMdw;^RGzMB`d6DEOm|7NFY-UY;Dy?ODw!lHU`)@%EH^*3X0e_Tn}RIglBPa zs_t)_P09p*c6fZlVVnTu%g8WXZ3fpjyej5rFSUY}J;+PA-ff0mS&9AIKFv{cgSbDN zeK>0N2wPh{Av{hF(QZ%SJ-|~u|F%!FDjXdpRdlb*`1%Tb!p%T!XLGpkALDmYV&7<| z*O@%1;D_gT*jpV3mY2>>v+(sY9!gBx+P{Lnc=+r1nKn2;59j0^uVzX3BNIwtgBLV5rI002ovPDHLkV1ggAA;|y$ diff --git a/graphics/object_events/pics/pokemon/followers/lombre.png b/graphics/object_events/pics/pokemon/followers/lombre.png deleted file mode 100644 index 72b9f1badf97c57e34cdac518cc63c439d359e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmV;Y0$BZtP)G^>v5owu00RaK&SwV5B5lL}DnZco{F&O{=00000FWlrs00009 za7bBm000XU000XU0RWnu7ytkQ9Z5t%R7i>K)xT@oKokdXn?TXnbZLhyQb}!S2g3`N zKw||lWb4$SLnos^mvW|eG>hW1t!J$M0flBtp~kC+1U%JH@Ss1S{cn0_66McXPTppHZaq*D$6z95{=0fHMWdM(##2OZ!tWkEohOAbE6-F9B8)c`jIZR@5E zfM5`GD02ynK`M6o1bqg~cznxxLQndf!$45x!e>0-yFEbgeP0ZcyI$MtQ;Q_P;4~pU zn+h@ew%h5M0@-g+mqfIKp64+Ufb(u*6%gL3QzlZP1xZ* zwVmQ6w!LoquKt;qt15d<(t0=iqGg;%*?Pk9&^sPBX}g~1xs(soYY(z0Xj`ZM`q$4_ zNrhkJxkq{YW4L&_C<@wMZ|T$LE39%qUy>ewdGkD+7oE0s>do`mtu!KOr@Qpb6S1vx zbl7l@9@5VGo|h$*>j0iHc*|6EE!%5Z?{o4u*&#G~8Ne&brXL1p`fEwz-s?srwp0bA4m?#BM7{04GDHC(_+qNM-; N002ovPDHLkV1mG&KCu7* diff --git a/graphics/object_events/pics/pokemon/followers/lopunny.png b/graphics/object_events/pics/pokemon/followers/lopunny.png deleted file mode 100644 index b553e209d481762c6ee23457de10a8d75474fd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797 zcmV+&1LFLNP)<00009 za7bBm000XU000XU0RWnu7ytkQlSxEDR7i>K*1u}oKpY3~Lt1XgkhEY-C;3DrqhxSw zaExD}Tc@m6Kn>cWKu*LNln8P{et-_yEV!5(leQ9Ehtje1p?Z#;_;fx88t72SZ}Lay z``#ZNk^p$E*ZN-y0mFK^GbK$m0I;;&>cxgpZSXaVnv@CQ$uq{5JKkuxD-XVIafOqF zOsbcf?8=i_H!x6j7{!NoXoJOqNQ9*&DZaw>K-IutNCbZLrW-5*{V4h*45MDAp&KJxic<|hFJd!ZvFT|???FjjUOKmx-h?3Lc2;q! z0T>QZILUo)*wK6c+#houg(q4=9#Q|>Dp0l95k^Th$;xY1=p8bjbAA`HBb^D)nR8aG z7NB?$C}xD^0aS~?a)T!oMUPE71JGv$x#9eC%4kRDA*1emK!-7%KUA5xVeDy7RL?sc zZMk2{J+btT-a#8<96NeXzTfaFTm`BIW+3+R_r=8zGo(j)`vBp{GW0gadu4pSygwQP zvk`8?9n@-qcfnhYVI%P22(^xlAZTj*Fjy`Hsy1n3`+9bn(WKERG=_8(w0b1ncSgZX z=N)8QIi<-mPqo<7e&M-Q>DhE~@Kt+#+8W?^-=RZG<1}sdx_0;!s9Fq}7tYi{)MlC1 zMm~iENOpIS)`19#Sv}Oy=PYq~m?X|_Ba%R?Jn(9TD7`5YP zY#hXcNOnBH-R18sTG%*RJ>7%}?$)1n09^M@64{rh{hCvfZuFI%9;8y6@afuHxpkb@ zY-S@%w$rS4fmvhKZgwBevy>LpX7kYD`1uR)jnZy3Yt!*-jZPD&RsSfN7y6rar5UaL b`ybXH2^Fgy?6_C600000NkvXXu0mjfKqzb( diff --git a/graphics/object_events/pics/pokemon/followers/lotad.png b/graphics/object_events/pics/pokemon/followers/lotad.png deleted file mode 100644 index 3e81947f9a22996c3d5dbba6be90101e4afaf561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)G>HkS?Re!sd*V;K?wi=00000K)W1u^Koke?K;iZy5IRR9IEJgCyBRuL zE?}pmF^{(BP=wI62qAO9-9?9tf>ZrBbP)d-Um{6*XJ2q}%a<&ld*s~@E-{Qgefsq2 z)29xD^69ehXfpr^m8xnSaV>*!ufrTenMEbqj=C`m0mXAX4oPz%ggYc0rMRDUyCL0% zG00**k4(7lu*oU23&C9znufZ|p)3}bDIn{xNqP*No1#5G-Q^3z6c5$gSRJ-VFTfQp zw-)sQ>Mmbc=PAHun^NX^nxL(tzQzON0=9KS-DM)4=lPb0v@;n{W|K?^FRy3+By1+kB^&;Cb%5GIdt9C*c3mFIG`;-1_@;t`M!T}?{#AaXG?jtJfVH*NNG=x zo4uUka?YEEx~t3|Y-bmC*v1fMdt8nTR?P&JXX*s-wSW5vX(!Tlg2Osm*1mb&IkK2F z#mY~Q$^;4As-GS@Ih+6z_4kEt>g;`1$W_~read83DE$qlZs@1SpX*o!wWR$_|25yC W9=K9&Fd`rT0000EyWp diff --git a/graphics/object_events/pics/pokemon/followers/loudred.png b/graphics/object_events/pics/pokemon/followers/loudred.png deleted file mode 100644 index 1354686f6d971fcd8c57dc361af5fe7458a0c4ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)G^44nJFCtHc0RgG8!MQfp$O00009 za7bBm000XU000XU0RWnu7ytkQwMj%lR7i>K)K6;@K^O+`q3mUjK`e;9BpyofINPK_ z0t-6^SB;=}Xg!(kGIbS1DH!UXLMX_dBr)siAU&vvAD}`HvG+p7OL|$#9zFOioY~3j z?2fCT;4O0q`OO=iXS1^`0JAk)vo%}kGVq^0-B8o&0pdAdO-v9iy9@fCki$kT0{ z9K-;?WPDt1*m%ai8A-2MZg6!sE(Gc}_MbE{b}sZjmm6+2xEpAz+<=}Wg-h1W1Ct~! z6yyybZE!cpR=IJ!e~=H<4F_-cc9SF-jpc4;n)X?*H#^LBPtG%o!*0dcAv z20DO>LTNa$m`5gbTg=D@BG8gH5YOo(@xA74m8TnYVlYBUGC>0oXe+1B$*2iz6a+iS z5`iOA8gd(~td0HLA1ImyhKBnQq2&*r2<*ht#)vy=8t%#t3XlgyfpVRBIJtF9qcd5Y zZdPE@^|hOL?S>zwfp(Y~afgJG7DBDMPkA6Kl#V>+Hy2;UiK(twH~UY73I~ZcM$gCB zvN?8`Wnp!m_UP_p#G-_M~w|7GJpuAfjNjQ)_lHW>f_002ov JPDHLkV1gsgcTxZV diff --git a/graphics/object_events/pics/pokemon/followers/lucario.png b/graphics/object_events/pics/pokemon/followers/lucario.png deleted file mode 100644 index 61a299f7a648179a7919e92b9ae2b449ee4f599c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)G_!%G3mKcd0{E3xydOhDFFciIcbq`x$#L!NdN!K)G=$@KokIAp{e+wP%k$1V&uhCZUzeq zt!xj$Q$sU16#5^!b@kR_D0FEHfgsWh!3x5b(t>@i2779($;oD9f@2Dmn)?ma$@Sgo zY{}42=#Yn(@80RXr;{Z?xQ*NRKSJE#8%H6Z?69SH18;8dFpqzKYtb>I<8r=vgV8wJ zfOD|oPJla3w4C704Zw6FPbUd>C%zl+L+hNqy%h%+)KtHwCfHSXs*^ZF+!aWv{Ueu>A3@yef)Iz(SK?h)Mps#xf+2l-khXeT^=Jg-@ zWJKP!hYVzRsJ+gj^5`HaNJi!zHucqm-F=lDI&a(dPaK_26*W{4@^$*ec;j2vtQu0< ztvCZ@mK=!=#ThCp?2+?aHNGw1x`MNK%g5<-R?n~Zokp&s*<_j(A20IY zlTp(Ik&MS1FZtl@UK7xQqtNusXW&h-DboBP^fKQ`TZdwyOv-hdYKwJHpk2&9&&sr* zkDVuPBQT5UK~`cKhF<0+$@U7BAsJal{WI1$wi=ChOu=?&Hs5#bNFIC1(xB^AB#EBU z&;A)}yyPJCYm{WO+>bSIWK&|Q&7c!8-clM!CHCuCk|ZZ$SuMpI&TO_CLXypWO@&}V zX4ha|i0mz RiZlQK002ovPDHLkV1gV@bNc`Q diff --git a/graphics/object_events/pics/pokemon/followers/ludicolo.png b/graphics/object_events/pics/pokemon/followers/ludicolo.png deleted file mode 100644 index d31ae43665de8e6175e33364c1dbf8da45cb426c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)aDd9fj3NihKd0g=%WiD^;k>G{!t2{9=Ni9rF;u|es{c|k!*y`g@;00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMJ;KorLX1}&K`YMr5U=+ZexiCPFL zgotG7D3e9Tj;trw#s<^k`vXc$mt^cz=$65BNC;#x&d{x;6iO=*FqcjafnY($429m= z`f+!OU1HiTZ}R8fyYH9xB>7HJ?&2=~QK&VwC~)z3I*au%2ZEf;bi-vs6gWSb&SHI| z76@`OE15>nC&OEObK zgtGlQAfzV@L9aB8x%x~FW$U#7A#L1}%ygxM^sWnC9c332hP=pfK4k-GE5~l_D2K*V zk(suXHFVdq^14$h&cL4I7?x!@hLIh~$xJt(GPHKKJlH_R8Q5#Jyo%M%mP(O<#B77P zfS0FC-2hEb3tEwiGyKi=zI}aQSlN4pFh-t zSkS|D#;}gZj+w?_uQ0eMqy`a3BLcj7W?RY3RnTpo6?M(rtONM5ATzW9f>-9fsKyP$ zK_Lv&5k(yB542WeNc_Ygz{>@W6{Tz%J|X#7kQus!*p9go6;ukNk)#hVJ^$6p1 zs1gHqLi$=BBom>AJX3>JTJC>eoW$LFKuGUcnZ)pH7}&K$kQxfCutTEP&mE<_qV@WS zJ5{07>x0IzBd}2;hx|VSH58b>c-q_ne-BZMa|bz1%o}{(5%L+-)pfj zf;~q9Y@K7Q19cq$b`BB1N=Vjg2Kd^&o~#O9M0}_0ibm#!D=A_6paMHgRe(>hs>gz?Im3N_329AgZ2&)zzU#B z#i!)8Q8tuyqiE-l!4(wJK~NQqbj(+rzoWfFhLid5!5Ff8&=>K}A?l=V2tXR&DvP@W zSOkFOb_uKjqz)!UBc1Xt17r(ZhZ00#2IDD!zK!l2vXCJ_4$?q&DVG9{7QWA+twRa* zkVzI=c^{1!6we2!cbE&meKLFk|v|Db#ab0FAf>Z2#=Wlx9#Gd+Z5r1EBT#OX)d7 z7T|ZWi>P&I3N^Qv)|z>u-C=z$DDwi+7Qkr&3{QZ#k4@Oa<%j`H!V@SL#2x^@sVkWs z`aahTAOLPI0eAsv>yT3fn0od6Sg%BaiY-{OL%e{*`P(Y|@+`aPMW^;x3 zuu%n+!J)Axph8@%5yg9!Iw+7Q0BHgFV za^e}rr<8mD{P-~ys|i0K@O{wh9qy#Y1^(c|pUVHHGtq{ps8k#xfK$W^4Iql&2Zuh& z3Mj{TlW5YOCCbB#%WoH#wO>aZ%@1i20L&GKY=Px_#E)a_yew_wEI4#0-n27F!wfsf zpzIHVtzvhpOOE|7R%z zXb2$Xg?cIg{9P4Tf#eXq==^*0`Q6PwP8(th>=4Mu40SpN-shpz0lY)K0F=lp$S1M( z-RtD0f<|7{F-&(>uho-VE{px4i(7 zok$M(6yTR3J5f_03J!_4_=^uUU971Sr_4a>P@g*9VA5_4^m9mnFH~FQZ6!2RX2;D~ z^!e4p6T{>hK=B%Yqo4mpfPB}GKc30}!6EUMVF0Sfxf&+`xmw&h)Thm9FDpNHBnZeM zZvkc+Kwnfd0ys6x3j)ZsISdZ<1v!}?1rQ_7vu%-cR%u_adq?))Neq`)PW)mKMXf{q z-Q@X^dQS7`w#t-`Zbu{D1N?#kFMplt`3ce-{c+D_ tAbKmA|gqFcgPvPaR{2irg(RRItLKBI~^% zF;|tU`vQG{kf_j&kO6nREVOUi96Rx!RNM!s@b<;d_d7mG96}!BF&^VF{@=mU!3BAr zspuB7EV?U{p^!cemNIY)81I?ui=%Q8VMR1vKbt^lDwHme{|N&`=F3s|)fZ-lg%M`6 zWq#Q9#BdEm$#%sggFU)btY?GXye$6~Xd#&%8*%%Y<(C&?0u>;GGJ)72 zbqWIJ0c#=igl$id6nunm+kRNMtHiH}EE zMj>w53fTp+CKq5Ulza|w=KZTn4~DxyHeCSt^&fW3QZ18=upB8dktoNz4!V$o;6%M(5W(h#8&ixIuJ@RaC%4^Gq>O?**iQ_h~XT9aD z1Xzo{$7F1{@Ptj?3(;ZNlsH+#9xB10%h$Yethao=037G`W1#}seWz?sm5OF|&$ASn znZVJiJjQFG&fWBo^$m3euuE)((y(+wlGKE`d4k-XSEJ(fS{KS5Mnl#W7T;Ez?_*bC zjhy&G8ifZUwcDdVUf*tsI~tIGC;m~<3bQZU?MLByTp+u^c6=C|jvn)0^-Xxw$UIyw zNmA`<;%mfN?7I;J!Gca%qgD@k*tT_@442*W3E{-7{ zoo_GMX15qf94O?Tbnak6taYgve__a!dG{A&H_eL`y|uZo-P}fg_eWOKmro^QUf2JA zdQf7~w9=B2k}v(6HviqWStl%g)$vOT_p+_ocjPbIwfrcD-wNjY89U`G-dSC?{l-$@ zEL*wnpc#*J)g7Y>t*-|<4c+4sHpE(fGWlDSa`!W{Kin4gZ@ z9HuXB!csp>9!@*y{QUY8UALGMygLsrsmat_dOG5J#O({)+;pC7{d8Q-^+uh^>$Y9X zceRz7CJ8p4m*0Kn+})*->s`KI`TDwUtsu90K;ITa!F6{g=+^hXTX~wlruayzlksFv z#q}wlufLG17TfNBre&r3tr<@aeh8d?{q?-?yBA#NUMQc;>N`2b_^NHFmidS4O;Wxr q$q&<3RmZLUHakQ#JbhLFhdRbezqZ@nyCyM#Lfq5U&t;ucLK6V-5yG7S diff --git a/graphics/object_events/pics/pokemon/followers/luvdisc.png b/graphics/object_events/pics/pokemon/followers/luvdisc.png deleted file mode 100644 index 29d568c356207a27d410dc8591121e0b6b451d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmV;U0bKrxP)G}Dwk)bhR*=d>SnV|px00000Jqvtp00009 za7bBm000XU000XU0RWnu7ytkP8A(JzR7i>KlcBD{FcgL-D*6DBCL|RkJOr8A$R%)t z#ehYkAR{Hg>;|$;TpVwJ-~|Xg1)^%0z6;O^dJcCLTdwQpzMk&?+b#1vhr{7;INs2> zhSLmAvA@{gt2^DZGss7-*SL%;`>)D3fic9cA5bc;>hz{^VFY5=gi1B4`m>CI0_3#| zLM4S6h`n~f&oeMGX4o}-F2^8%OAt8VGAeQ6^IXL55%z-bb$S2=>l79&SXAQ4tjWw1 zC$l#Dyg_fP)nO00000I&q;G00009 za7bBm000XU000XU0RWnu7ytkQUP(kjR7i>K)iG<^Koke?!-LSG!7Z_=C&eM99Xbh0 zD9su=WNEiT2L(IFQRMHSQaFzGx&#vNSOT_jlJ5|(5yITyU=SwY@6va2uOjbcG)CH?f<9W+N- z67e`~8!acyhAlB`j;O^@Fu+T!Hc;IeAEl8HJhm8ue>H9gt>QH-8!bPIloaVwv^X=pAVe-*Dhq^xp4OoA4rzyk8zb)^RPR8}N^vjKuE}27Iflz;w&|3sI^|9G aTk;Rsn1UV0;>1}100004)-h`vF%$q`kxd6(G6mA%@D#{+&0znH zPR<%=N&iEKLWZLT*6b*mT#Ve+Y%VdRwuK2y9ZLRwT4^ zu>#ZTWQLP#?RI_p`(fJRW(H_PW#;)q%eQ5nP_){8oIKU;*z`8n+uXE#<*u4b88JJ0 zBN1V7V|hMr61rl^=d{gr!r!hXJifLuAHKf;APstcjR$*|x^fvmrEP8!PV0nI8}rc@ zrOe_h@;$kl?km?0Jb_l%k$L_-h}cb~gq+MN3Z5_AwK_cjyBTB*TvK|!&ZanZR+>FN2wDM9h+aiO8fQCVrp$;kl$0RR910cCnn00009 za7bBm000XU000XU0RWnu7ytkRJxN4CR7i>KmAz^mITXj$s8tj40tcp&5v0f)WZTPR zK-=6fm2r8CEnTE=x8yAXX&RtTjIYWrR0Sh>#+&Hv`;v=_H@xb+)B<{8>OW8@?5 z=L>83>-bwn;$Opgf&F zJG9*lzAPZIG|to|5is%vO%ZZn;m-IhEIhj?3Fzzm6!7KZ;@qnv7GY*Fq4Ud4XnLg6 zJX(lC4qQ0xYe4RmxluT#CF7V`9HT>B5Pk9LCKoG<`2(&25b)+Jx{!r;S>ZsM+03~~ z-m}b8a;g*JICay98jx6;7fXP!5MCkTRXEG{=|$zH%|eI77tL5M;Xe|)6etR|MeCavy^(oB}(&eDTh49VgSVgX^P6QC?{Gjs z7k{YKLuQ?v|LS+ITtm7BM23Fl)Zuvf8m?ciTd?PzV$TRvdXlDaI{N>-{(J>EF2cwf z!zMt*xtG^3`KlUFIiH#inka0bJe(`XZC97qf1K&DE-&$W-ooWE;DDxcM8Vm542Qxx zGc>#>+QC#$*}_ReWdG)4u=tocz-)GCY`JIP{*NV~a-WtIj8(wH$R(g~pYM9Wk8VAa zk!L+_ct)?#b=-aya$w;(2b_5kSm;F-2GbV)ngeEjP;e(4!YDQjzN6_eg*FTMvvAN! z2wwKY3ok+rEF5xxBHQbYQBgl{0~ATLj~+cf4p}(ER9I1|9|vZ%Sr}j{oa;h9wL7DH z((MA`8`(U6((6@Nc&(4t_PD8MuJsOj+#0RHeL#mWSqk-q%RSO$`6Smje8Kl`(GHFcgLfXyTl;6FnHT7DWW)5^j%? z9wC5NXY82C(IQZ=14g%C2FrP4yA;g@I`l3jMcRI%BO^7?rSQLf?-5U2U~m)#q}ty1A+F;t@OLc7n==d1kp8;AH;g_I8dp z&}Tnky=kAWfE`8;P#rU&1%_o-rBqqLaa1jE&0q1iq#@IKItxz=Okdk#L;O^IKu zm#r_p1A{-Kgw0xfsWB6^kqTI9bh-=+a?exKJxIQh zxxG^((-2s4&r{>i$f#b|#7r8fDBOMBk`SminP+PRKluspjfB8_lX(t4seiF04y^0+ zzPEs>g#P}c&JKZ|RbW%ePp_{M`JRJMu79f*x6O6a_U}NGsrYa;9qj|_vEz*DouAi2 zDC9H8JD+^kyS;cx^bzn%*qsoI(LOLR@<+O6*zXu0dasSrZS=WL7#C9EKrJN0%x!!3 zd_vIz5H-G5M+?{jMMXEh7kJXAEPAmhi+?!L06(gFw|`{6HU3}e4?DMFt->hd&Hw-a M07*qoM6N<$g5In*sQ>@~ diff --git a/graphics/object_events/pics/pokemon/followers/machop.png b/graphics/object_events/pics/pokemon/followers/machop.png deleted file mode 100644 index 37f625a5d0e8126b1062e8503b68b8acd5d98290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*jU)u`SRpUOG`^e zM#h7hjvHqdzI^%9GcmJsEamT z(fM}r#=K?&fwqZfxaTA!`u=8MT5b$K>yj4|UpWQd734?z%zE}NU{S}a zAohQ6KexX>7ty!KH2d0`$j|nRzJAkd*H|mQ*(z_|3}Kt48eMOL?nT}X(yYw7WpcJo zbNcbK#=06muk+qo_c}{SwLK*F_O7>1d0X#oWNUJs^Ih(B>KdUV51Z%seGvKF_ao|l zqRX574X4~ZJeUtY=gt3dlFLiZ{2*`GO-B=pGtyHue@!Wnneped5W@`qKX0$TY@O@( zY0I_QmrqV;s(jE`#qiF3U&Z0s=Ph_zR&I6R?wj+Iy*5WzI-;n<^oDg*LCUYGXP@ue zQ^Csl`>7UVCF|w0%eN#Pd+(VVS5g0!YgOaEm{8u6Z&aDT{Sn%j&U--e-Q1nO?)+># z@o_4{|kc(W3wW diff --git a/graphics/object_events/pics/pokemon/followers/magby.png b/graphics/object_events/pics/pokemon/followers/magby.png deleted file mode 100644 index aa824e4c4a3578544305b3314e89404b74e7a30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a?JP)G|=&IZ;_@(J46q0000000000BKw0G00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>Kl(A03Fc5~L$YKXUkq`?~#lT#3$`INr z&ESQh%n=E0hAc=`o}h|u$Rn_H1zrHwMp2RcP{eLS&lfdABqsWAUw+?zXUmRd9d*=E zNBti$m$_Y;O-L4DEm3gMm3^2Pk(6~);03tdm}Sw@@Ca*h$Tv`QV;1Ke(8!dvyci&h zy737BEc5-yl(nk$RYf$1_swnD+QgHZE_!yeIVssL3O4^0Ogj3ypTCMz6R?p z=e*ctEe!q=4zT^<6doFw@^+-iS$jbX3n|3`zIzL$L>}dB!8$3OpoOJ0iZJ(ApN2pQd8rT14aW z{64`iRq+6^oXsTSvEq8YeHI!M+dYR~B8$yO{RIw~j`}H{IN?Q!2T)x5_Gwb$UxVF~ zN#k!ff4Laq!0_QRHT*a;8Y=#!sfTx8v5*EUg^&0as(bi6G#aGTpYI!l>BPk*3l|3K jf}s6NtKTr2tN&0xT*mU>tCYpk00000NkvXXu0mjfgEZ@E diff --git a/graphics/object_events/pics/pokemon/followers/magcargo.png b/graphics/object_events/pics/pokemon/followers/magcargo.png deleted file mode 100644 index a64af468ebaf3a575f1c458470f6bdeb77fbb744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1206 zcmV;n1WEgeP)(OKb9NqHF&000000000000000Z>qnf00009 za7bBm000XU000XU0RWnu7ytkSEJ;K`R9J=WmA!AO zP~*R1aYnF}^V+VlvWZYfHR((^OAYldkb*+mbtF$djHxdYy^B=vyXE+Z&O0iKUNsAf z=tU>PD4(G=JRAD}&I$uR$2Hy#zg$>tpZeXkT-1ZxMei$vhIE#)`=d#Hs=vNCJdqBx zGn3MAiVwfN+%^g(+;fJ#!oVN#22x+Qn)!h9VRY5@L;8OGQwPZ_}4X6F+lJlD;K~eI0!9OkR96kPhn^M?m<_YIkwDNu3oXbiay(bt&)b7nHoc880?z^9V zY5)WXFk#?2yZHvx4HyUmcg17BBdCn;Ip37G!Zj#tPjQjZB!(jvD93b zU$w*}&Ge~IN%B4DbK6cwz_M89v75g<+9naaD`$9TIhI|rX95<$ZehTcTo}5u?9b<7 zT|qX50~en{D}YA2B8s7l;y_eoXI=%O`1pmW+9#;>ZPbm+C08xR*t~dn6i>398<<$z ztuZI?JTsuhueKYA2Q2G>S<4DU%E>yY#{n_*?G_hrF_wb;Vh=F3iA_rGTL1#Re0x>N zg&}O+p0pr12e|-wMLrJ#IQS;zXRQFXUXV>bfCi31Ft|M_-_nPIm=NTYh6oDgxa7X% z!jLMe2Y`WAevuI&1i%1f>?YqLg|cQ>787Fa2$G6`jDj`Mih21?V9BMSd%}eSLhK3? zA(0!9jhtNP24rK&$+=B>lz)brC)lq1sgL_HLFKJb(Ih5gRIp3pM8Fy~vxbx5oxRb{!O`jI`FSBh>8VNSVL>r5G08a*>eDGU00009 za7bBm000XU000XU0RWnu7ytkQzDYzuR7i>Kl|N|IP#nh}XtD@_1KVy+4(=%jS$YNE z6+6_VT;AOv_^x_MkHl=LTKzkp7nb7TwRgdfqgYwY zg{!FoDNYC@R^4#;{t2E`S1Ll7X6AEOU38x1|0E%gqq_^Ys(iSx-h|@vnh>U$3D)zb_WDxH+Pq9ju4Kr-xfmSrKz-=BL}Zc!Y>0@gz}xw&IeKkY(;hhrBua#HaSn z&AsD_6D=^!JhX}XUmdVyKB^mWfo@j_d9?P<%1#Le8hun-E8|8(t&~+1R1qw>aBV1t7#8jjkVK3Nf=>JqB1bY_BD=ZX2H1k`@bj zmKp^LXJLW8hLL!!5s{f7YJEY{3wt%IV=5fFg8Ifn6XYx zc>{>T?(4djpVnIv8yoK6J}G7Ot|x@Nfd8;(LX%4rv((m4Vj<&3z^?REQ~Ybs_uN`^ zmqX5rX}{J35(!zs8c>R1uxh)s6bOsusDxd@-3}C?9~ZdyOvgZ`R3dY+98I?k+#{wC zvVtZt`}Ki=6bs#sU&E0wVDSC=w6ude2hR(TpUPs*+c13)LRQcQJU2Sn?<^)@;@gcE zD9PfY1$#c&|De~ZncUuxg{+`co?9LZSzWu1ald9vv`~V#Q5?;A{L#gunf#+530c7% z3(d}xa0SYIZp5w9=m8n9+y)T3QgzDCa?Z+P+C#CB7qn1Cv`b}vBse5qFlR+>WNrS& zR!A1}CRLI8uND+6#|>Wzx&n>gdd}#+R6ygqxoTxGk0eCNj|pOpSZO8s|K$%@ykP}C SMzELw0000ArS!q0r5#8k=r(L00009 za7bBm000XU000XU0RWnu7ytkQ=Sf6CR7i>Kl)Z1$Kp4ioWwNC#5mJ*dGSQK4otXFo z7(rd$NGLfAhIXP7TZYi73@rR3Oj)7~j^*&-hT?M^pia~#*Uc@c$#HhhzKh#ymogyr zl`Z*qAJ6lgeLhXQtGoJ7O6PZ0PIBE|4V>kj8NQ9LTMTfM!A<>|j#mY7&fa4aT2h31j$12{^_(9|Y+=uGuHiRMUk){~98Uzm zt~F~)aTxb<@2Fp{)r*dry;h^%QgH!l#A*qHm_6B$EvapSxz$s1*{ZNh!38qB=r)8} z!jfS;;XaKht*Cj+>R9cDf(=TkWec^0CBt|^i3vs(B^zLw^$t?-0n@Xjz(|cMg$~H5X_E&ei1F#4E~kQeThhpCj=z>IqAN zA)v4k$PAG3mv_fIbW03QS(ksz(ELpyOdWJL;aS%0+b&x8B9vjfGw|)@c;hips0Nu} z%6L!cyY{d5`=n#?AwyVlYB)ref4cDOEP!wMi-(@g$CEK&ccD$vZq7ro&4)1B-T&~C zM9aOU!y@633+Pcq(8V4KMF4`%Llj1Hp83c6HrBj(w!j=SK@22pIH%8+{m+AheQs#L z%thxmU@oXfbC($c4*51Hpvj&Yh{Ofb49&pJm)!z}KiPnHw^m!W7j5E@(h7 zh0v~N<6RipNE>E}T~r<;JrW<87|l{0?un1WITg^1UMCEDb{2qhI(*tV8)Ga4r^DSH zj5EJjpxw9HeOt|yYTd3>RXjQ}(Ha$p19=*aN~U~R804h5Mgq~0FcCcJmy7*u+iH5k z*?6P+=wwt9(~Y0#F{x<*0RaK=(E;h{`H4wcX#oMjVQJxsnej;>h-r&u00009 za7bBm000XU000XU0RWnu7ytkRu}MThR7i>Kl}&5hMi_u~=wS|XkuUbrK-l+E6^jn! z()@(}gZfwsT}1JrF0{L$KI|&ko?>N%a%lyD{EQe<2So>4Zj~(bwA6`jErv7;nM*fx z;qB;SMju{p4!!iyfn9iJr00F->y=^r-~J>P)*gn)$?LYmG?Pw8#oJd{{Kb z1)En)o|Y6eKaT=Rz4GZDaAjGBq}p$YXt$#x@PCJgTT!xbz5n&UMdg~8gq zc8+o;jR@2h;r)qyJujrNw#^MDozP_Si53=IPe;B0QYftJIFc&@5YLTh8Pm`Nw1pNH z%<2Im!Z3V@RwZaKT@c8cRo;ab(|{qywdu7uTM#LHi)c}MDU*dfL;!3^=Sw+8M5vvb zHXFn?{7g8c)^ZjJlWT%jnO2L*=L`izm9E9I2a^{dggq^{t~9(0`+e{Ev&7eHQm|{)11z5G^}ZPYgi6rl zSU|Gh>+u*ww1mma+3TraouYzqSOtjDI-bpDua8(MXt4vfYjF-tqK79H3_`D`i{8fgXl*b56B;M0Jt&!%Uh!Va(K{*3;x2|v}bu9k)h!3`v zKyfY@1p|lOOP=|bbLYqG`B3vtUX^3B=VD@b>TW4kt27EXobI=LzdLX`8+pKrGr_@n z-@~y#_7?}aa1?0nuMe|YeG?sSd#v2nHX8?>zPED|Sg?B#=7R7C#dk8nUVrclTFBYo zr@2rDEIH|alLcV-X3!g7VpIlT_}9Ms{8E&h3E~~Zx53w^xljfyxe$;oe$IUK{mp64 z@_EI4E8jAF^r&;gMOFL&=bc?H54$>6Tm0e!DO~?Z3l!%9gVR@*+%yhHG>+CNYhq^?M(7!?2j002ovPDHLkV1f?q B1p@#8 diff --git a/graphics/object_events/pics/pokemon/followers/magnemite.png b/graphics/object_events/pics/pokemon/followers/magnemite.png deleted file mode 100644 index 5d1d932c308bd16f8db700d1c01166a12718e2c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qGTk@!-Xqfq{XZ zoiATHI?i0V)6&wCk&&^mu=3^0pBp#s1geFDMHgiCfgH{PkH}&M25w;xW@MN(M}mQY zF~ZZuF~pdW^X>k9 zTwZ@BGu-B1aC(uI$?iSEmjXU!-{7`A&;5(xGf?5>h#c3t?vkTsdT;+Xv{foU+AAou z$inpd=dZ^;U-HxV&1sPP`?LHZrzMkfbXy(;O`DsVndBtUrE_3MrNU;hUB6!cVx3Yj VM{wr3t|y>a@O1TaS?83{1OWY;#)<#{ diff --git a/graphics/object_events/pics/pokemon/followers/magneton.png b/graphics/object_events/pics/pokemon/followers/magneton.png deleted file mode 100644 index 75f67de256193522c4ee6cc591ceddfd8cb6d312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841 zcmV-P1GfB$P)KRZnZ%FdPl!;9RvrVz&G4y=-Co0PDWN zpr>S@hMiQ>R`z_6Nmt9!dDM_oFKh8mh0(b4m)lR0E&c3_FnZag3JBisN$)-DUj~Ec z_S~M(r1;n3(*#F#wL4~~*f-o0pg(uCDgH93SKOJjCqRGhX`ZqjgMM+xa8Cf38%a+E zj}q_Qo3-}(Q&2?5nj=7{25`P4I2!C zi#qaZ!?KI@kffsJk44Q921AVJJq(5|)`DB4HUue*&5Z5KvYhy8U4NNAmD|%`zfzoLT(Ka9#h)E#*nvyL>(cyw})K}Yx*%M>S~i8IUH%j*yAN3 zhUD_c=@esqD)Nd)kJ6tKr4140DIu%K;|vTZEw2Ryl2gS>6`VUPML@%B z5XkXKdwsYu%$Vb6Qz;Lr=a<@$GbD&^(I|bBSL%bqm(|5<8VdP>(&(2F@P>{*SS~T& z8a9F#c{TBgzuwLlvi94|>nlq0>JfUiWje7lWID0o$?|lJd248RBbcJZ?{0esH@W&! zs$#P)sbV&9YiJWEDV-6K61bp_w}zHCf++FyMju>%)p(MYk&I43$t444ZSG^Nmo~v1s_9!I`}m zXXh-&f_6Q2+n{=r2I)00009 za7bBm000ie000ie0hKEb8vpK)iG<^KokJr0}lf2r6l8N5VQ!)X%M7n zYiMbvk_Z_WGW7?jcEv%9yctZkjOnDbF-{Nc!O7OObVxc$gP?HW#S}dFH}s^FEbDqM zMDFM}obQu#@14%}9RR!7#V(2<;Wk!D^{!}kWp95QU!GU%i)I5ZK5gT#7uAHK0Z{fH zZ{v689@uOJv!>_eorgQU^jny3#qXbc;NX%pvrY}O_^@AngR1>Q4_&`*eQvT&9RqOC ze{|Md%P3fJ8^2EagLbUAwG0~m%T~WzCj85;oj8NOOReKt2G9J~zzNDJi?&TRz;Rq^ z+RZvPk6t(qrg4!`v_h#(iPIjlk3?=nea8tRxf}5Q6~-q)tmO+L7%0&+rdQu?$8j`G zWHzW~Bp9=n>JlUE?U*Kqfe!hUMFZ>U8{N42`F*UjPE%qCb!bq^S}1d%-x-PJLfzoM zDbb)~P7!|c<4*6O8|29h5r!;T2Wc_~unPm)g&m{E3zVMmB|;{J7RJbkktOj6mexad zf8E)V!tO1NO_(?{Q1vqZ5^#s65n(K`N=Bs#+lDI+(8y!W+w%Ys@P**Pg2NQA{VvM~>dlJf=j!Vstk+fjQ zofQP?;5g7sqpL3Yl3$;F$-OKJgu^V+Fw6@GPQzc!SKC*bwYOO21zE!3D4=XL^A#fD zgu7TFmXM!+R5KhgeYl mOnFaCxOr5~`0oiH7JmTj^yTko{Rj>K0000KlreAHFc5_ep+K~r5*1V@$$$Z&o6Nzn zw{|GJssIbE$}h;)bQ2{AId`ikdo1!tOH!mIGPV;aNGCsN(02#EM^YjulZ!68=%W9m z=?nZ;dBJ&>k+FQnvPUXAz+s`5_+d4glh!tLSq>OE(nH0MQpj)9X??4<$V zpy#rxg-F_9Bqzld_+ZK|s~Y=0WqCY`y^y5{WDst%(u_&PCpnRrA7@X#L%%$irTkDC zl2iNvWC3oDvYHIQVNYCEhEOn8mfjM+!?k%N-Mx->Bo4PK~^4)$4qmf{r+sEU&KvdqIs)E7f{|n)Vnz>)U3!FfULv9 z1a|z1c8T7S)BpiSTOGL9JXcr~VYutE569XFb<=0FjfEST#6!wWSX zTCZ!m>{sBh&?Dv7lu|H;jp2pfvj+f5Ga!o&uWmKpE5j88jP(D#;91VCbKv6!p6K7m z7(UXD(HwX`Q6DwE*ZiQlYcAn4CH5OKeIZ6AOBvMx8l&H_ZOaw~S}d>`G*^I72?^$$3MyZ&v8Jv9IT N002ovPDHLkV1mZ;4krKr diff --git a/graphics/object_events/pics/pokemon/followers/mamoswine.png b/graphics/object_events/pics/pokemon/followers/mamoswine.png deleted file mode 100644 index f5f7e77671e75464f115e267b3d3bad7d6012047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRWPP)K)-h|_KokJr+q_+IA<5E7PVo|K+JhVc zRRQBH8XOvI@D|d+-HKxkN2p1lbjUAg=^8wFsK*W+HF&u=f50ljHWd_Clr-HOt9Pf9 zVoS2y1~L@#hLG?1?!D)8EI8)$iJi zJ+^rC?b{ljbN9e<-(>#Pe;&YJZ+*F?!S}zjW!cFdOZFEyct_R(-+6=3@=)Qkh}EE= zmS`|KpIaX@q``(>vQ@c(YKaD;jYxxyXoCyy+Oj;4_7*rOXo`o&2rXYPpIys@on(-r zSM4)JX}2cb1V8v;Q2#CUSpzR-Rbr8n(0l>Rvw~t|O3jm8 z%m93?zHMLo2{B>Rpn0`ZeN!x)R*I8)+)!Z!c}4cqY~*4FaC7CfI1vNWE{U5JT;D&d zR;qiQ@Y4Z>1{*S+JXAFx<`_tk!Dj zmw99-nwOd>7`2gpnDG-To;Stf&(OiE=^ENRSY5-m7qcj+cG(W~ropT|zYjSW=|AGE;YN&evweXL4)GiD${`?7}f!?y? zW@myl1EC>8{v`<|kiQ@5EoF)jMhIy$Hh98cP|Q!+dW2kWy)@@-VU}T6I3W(k{#OfN zzwv}C|1EHpoWqI-^|;wcgcxDM%j8@ZiM42)G0000A^v10RaK&>G>H+p+P}GfuZsF(P2Sh$p8QV0000000000000000BE%}00009 za7bBm000ie000ie0hKEb8vpK)Im$bFcb&y976jA1kc8>)*d~2N=vY{ zpTMg!ChRmyF~gf<(6_HKhDtuAX_PeyzIYNm?0@R7P2NjdQbJBS<&;zYRn#wz&Q)=n zqzYCsN3$rjig~Qp67*la2o+NLboMJaGs zV?o69!4#Z3s}1~h^ZfDYEaqCjOU%pVV(ueG+p`oGa>G?rHNdN!<289j<00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>KltF9aKorLZ0(0)^CiY8qiejZP-U}sD}D-f!KL_T@>%S>_g8y02634idSe@jPf)i|5@taA0gOGCn2pe{Mb&^jC2$9?u>C6(s zByStm;s{fV`&K%$#CDPl4RyY@j`7g|gV$riB!|Mfb%Yt?ij~sX;JJo~1;iPu#kkEx zI@ds0E2S~xxiS_ec_*xiRHmv1LO+e!t?lP=K!ORCn;f?Hfyu%h8DV8UPS)Nd@vk%`paTB!2Nw-X0BHGxoP=@DdLvv>^P|AwcD;lZzZ8y z)&sB`Z|Kd=BQ~$}w&_MpNT+BP5t0n>2OR*y`^o2=o*?VpPjKKW zUx2d}h%Y&}^Z?UkWZd+aAFI0RR9107*qoM6N<$g1)Y9r~m)} diff --git a/graphics/object_events/pics/pokemon/followers/mankey.png b/graphics/object_events/pics/pokemon/followers/mankey.png deleted file mode 100644 index dd57bbd4280666f35c89aa440fc4e181152352f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)Kls{|SFc^mg))zRq(R3(X3qEABTo4Wx zDW!+k+q%Sf3EYS1-hPs97gEZ5Xt``>Zs?Q_$ztPBOy18>$^Rs~xuYC(s^9I=PkLS? zStewxvBnx}tpB4N?>N_kjGfH$xStJKSI9xK;6&zm)H4oQ6_wWjtDDo=M<)!A_x7!s?t+=QXS%|tk0ma#h-*$7#<7y#_>FKD~eV`K}Pb zA;#Gbu*Yf3^bzyPHY2T2@obCPSJ(bhDL%h`i}?}edpyJuqQEfigb`l6D#HDhN0_hh5Yy;75eare8s(R9lJ%aN6Gsn^!aOwRPV<$OhXoh0*+Io^?f_$3W`qs{ zw(bA$XzGjR6RJxnKDSKR=;c8P!JXf0>XId)}e(4Iy93&Dk(0R z^lVT-OIwF#C}aqR`~{}OTU~Gq1*fP1iFk=KR0oD^rpUX8cyNgdwLwG2{ujOXOM0>! zyInHnz*y(^bl>;g-MeQ^yR$pH9W%Q8bF&32SE-fa6^miSKQ}WV?wa`V==eVXmK3c8 zC^g4R0E#37EDMx?ON#82tj^J})x2B?A1jDPSm{S1f~5jjV#AJ?1JK`eODo!_wIHC> zQYAh62=MhCd(_D^S5zjZ07xe#!dMxe=a^iPZYKyJ7-s;QZ>4hpi~7SXs%}|k z0bq2MuMx5fXcs()pAv^FvPtR+#$e?Ne248uHt|>n(JKJ`0)nCl*--?HPaFz>-(CXX zCHUYn#skWj?Tu;i866-dwx)=p+w>QQBUq{;k>AWr+VZ&~T3Lm0iFRHXRcMNUINPnJ zsJtDd0BPXxgiLcqv`etXGfSlep@<6LjDrxj4rwnMumf|pyghy^is(W(A4K4@4#qB# zim*#e+Tw&}gV675jY|;L)db^+xWswRPiqM2F4S;!5?_iUy3m^sX5iBd=-4Gv5q62G zW3GE08m%+K+_N%EKsFv2xzfA6?{ z=fO1KePr}F{~6CPG6ug|_sOLBjr#9>4p8l8T}UbsK-lL+#N|v8k}ybsAy3Xu?&JP| zpVu;1H01$0yYPY35x@jP9m`bau)>6m?Sm%tP{uFIQq4@`SA2Ww^>MA zD#`^Ehab9EDqI8OH2D#fg~Y0@-LN zr|C3vG^t2^r*HxN?E)+SkTn;aR8%naU%~PXSTuhPK&I#>E5+lL07kGn{y$i}65tl? Y54EAbF$x%2xc~qF07*qoM6N<$f+!HnO8@`> diff --git a/graphics/object_events/pics/pokemon/followers/mantyke.png b/graphics/object_events/pics/pokemon/followers/mantyke.png deleted file mode 100644 index 2566de8c4876971ebf2347fdee887a532b70d921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmV-~0(G_$#;Sphp0000000000000007HVv100009 za7bBm000ie000ie0hKEb8vpKmA{MIFcin7NvlPBi8*cg7j6l3Itbj5 zDT7P?3>ykE@nq8AM>XA_kfHQ&r$CBD-al8#mg2K(=g88@U!371`~B3DLdc{^lO|32 zUt$3vG#=-F#Dn_+q&XpBG0rUMI+Sp_FF=?#zaeHZp&7OgEo*h|)yJf~#lku~4Rcx$ zp#kRpon-*k^+yFFzr~f5Suo65#WHvTuvjiDGR*b& zr%$lw)i|eMRK$ZE=BOcpz2EabTcu$RIfUK;%W4+BjnbBEp2{zHZX6cRW((i|&b-go zp%w)cDs(AR;n-~h)39GG&ExyZJjV?sHsh0IBDu z3li|K*lw@8DnWPHOf5i`X2z@;JTqjDRULq$E!jxnHK1E)d`L7ILp%9>4xxna>lOTX za~WUWYKGGFOrSmhY?V7r6g|6=nau!S+Lj}9SX|1V5BTSyES*8(_~^S@qK+bkW$XfY z_LH0;sMWCzu+|->3E#X%o7W9b+=}DtL3sR)Mi*}~_w2v_hIlUD9UBv{!-ULc(brip z%Jk7XJO-m|0?b=$Qv#k}$a}HfZYOUt;;(p|1!5;*xn7a3KDg`%<2=5><~r@(*Z2M( ed??Dt-uwmh3@JM!qQJ!f0000FMeD;c)?p1qbQTY5A!E+?>K(?4(8KokJ*(^;xIGcdbnY$$_k;Sy!C zCH{0|0A5F{i4>Q1=)lk+BU3wei9EAZa=t;7j}VFPU|_ug#zdlL%l7?AT(tumkLl;T z_ujqJfzT;Vaf(y?SGY&6uN|D@Ht_HFN=Kogt29^re11*d!4mw3y=3H<#s*A?uv;~H zVSZmat_u?fA9Tsu<0{X=EgOOsuc$h!r_9f@Gi?FZuZe8!so2trJP6LCvcGCD9}1*_aH$73Rc1wtljK*_|NCAUsMd3WKk+8>7lkD>Gy%MFZ{71#Y|yqXknxU(LOp@*C2U`gIt8 zudOT0UR-!{6$C{C|9uHFxuUeN|F8?W+jrIl zd$zoR;;dk@jF-!@z%#!egcslFx-dRib?$aMCX@;d6lWQ<8UMDEY7ahyl=43!8HAUm zoAJDn)+;WQ*%qCJ(Yv1a^=gyBh$ey?f-z~(jXNsm#l#rVz9(*HALoP^f;B?OTv~TK zVgfeY4qwMjg8EJIJoAQ>o_<1VVEy0MiL!&O$?3<8KMgk}z>*nwdjJ3c07*qoM6N<$ Ef_t1&O8@`> diff --git a/graphics/object_events/pics/pokemon/followers/marill.png b/graphics/object_events/pics/pokemon/followers/marill.png deleted file mode 100644 index 8b7bd99a521ec303edbe9cb8401e2caee884c2bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmV-E0>S->P)Klf7=jFcgKaRYj^iC4vqxBGehAEXh`| zR5=rsnir@LuYh=rK%~luXAoi+@p-EzF}UEiE@9S4A3y?XWP)$4DBo6F1< z_)Qu3*K*BD$F0o(h|O6RWfwRTtBXHchHVBIv4St=ck_X-E=FPCypuMI2eyo{*PY+V zOsa!N1smEUx7jvqt_Z*^-(|_!%&>h56p8*hU{X44nvnFf@4#Zr*wzh@Y`j#BF4&$X zP)!SmP18*+3{Seb1Z*?^{h0AaTsmyLbZwqzQ2`av0g{<&5{88PpZ4@n z@x97r<0aKl@lntc>DO9IPE?aH3<>v-WdP2nWg|IMfpr!ULQ1@#4kKp$Zy?-HCVBkk z1v*gj3`CPQd4)vsg1 zQ_j=H=&f!zPt5eLA)Zryx9hbJ`8Yp&t3$xT$nILi9@g%99Zp2Ti(dP+@KcY&Ibii! z&BL__IulQP>2oN!(w9S7pwX5)9v-&;k;~``x|Sh##8O2X|lIoGWZZn9Jp?%KZe4F@Hct1KYgHklg^vD{34;76E^C`S}?--E34r(U7qIPY`%MLoDsy3%_;O zP_X$)qDW^CHY7rZ#S0~@&-Hi!F7zIJRIVcwhq{4i9TmEv0x@Ro7Z&XLUQnR2 zG0lob_vjB|#!B6gM;T)SV~BK&VyhvBVmeX{5qG~Y7NE(&=#>Tcv+;6`T~X_PX1(~< h8-8fv&+hpz@f*R1DRdFAR-6C;002ovPDHLkV1h;4mrVcw diff --git a/graphics/object_events/pics/pokemon/followers/marshtomp.png b/graphics/object_events/pics/pokemon/followers/marshtomp.png deleted file mode 100644 index 5b04823a6bf9749da2008436253bea1365825e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)K(=ltpKoke?3|VgI5TuB!TcAUsU%(+D zWav;Zg!Eeo)l=wFs6%lHHbGC~uF{T9?bJM+FHk3+>jb(y8M#!W;v_wn&aWr=^BSzl(Pw+^Wi&&oK#`4a$M-cgzW-b z^6(ueVVc(Aot9QB^r6eSQ{WI9_VRAjkXxt%@2_rx|~^=kNXx z7LGSAFq?I?@$@<058^cTba5|`8MuM!i*Pc>b#PXn%&uzj3jG9P1x`hCaP6Xo78sox zZ#})m82K>PbiUzyoJ>wlqEb#_UlxM3{p< zZfJ&szK!-gi1Z_=o;b+rtUu~)(4Mm!9&E^epgM+)8w%SnrMqGTLaqlvBOfoOpVI4! qQ_1NXT~L@`Eb@d(pWa#c%X|TGaPn}mH|Ng)0000FN2&SxK?k=>Px#k%Pg&00009 za7bBm000XU000XU0RWnu7ytkRK1oDDR7i>Kl|5@4F&M`s@NyW+DSl~MzkGr&hYTg8 z1e-hPP%vaDX&@dv#CXWksd&hcLfZ@;Y?`0G;zmQKwx9FiaD|NlLYd^!N`<39c@>i<~ZDBWo}@&?fK9>1i1YhYBwKrgJN zh6z(2z`n|h@yu4xGBzsu+z`v)P-24Mts<1nNZIhbwDutfr^dF=08}{M^b3@a>u zUNBicTI`AnYWbee;N3>4F;qVoTX|Oi?rZ`{=n8m*k6!V7ann^X8r{#QZr-?P_Uc@) z5G}8(4iWOaRO4b^1$lP^+z}N}!T=#tNeI0>?{j3-{c%9^jZt@Ca)Z4>S)D-x%>(74Yc*y&>fKb!1Q##2$(plV{J4YL1oR-A95{3Cq>Wy5^f89MCu91~1Z%q{iLR26u2$`TutZj&;oK;g2 z4-X{@T}lXEsn1-eflrk9K+U0rv1MrsG-4JfS>m)j;+v0_LIH4Z4`au#4>+;5Kfb&l z53Bnw;1X+j)FGF*ZBr8K=J3ff#wYrfOQX$*rC_kLw7>s0)=`2kaa(S3Na$G?C#UJT z#7iISRqQtia$+gy;LP$qvQr+HL&D^8Dg>z{!4{racx^nN7-g`1;xlltOB_lmfz)az zB?Q2*+&vB4n8hh#|3v>6>GV5^Dm)v~fB)mfr!4D6uCG=Tx0daA0Nl8fn00000000004!rO600009 za7bBm000XU000XU0RWnu7ytkQYe_^wR7i>K)j@09Fcbh_v6INnrG+lbB_)Fp_5()N zON!YcJLOO){s}t|G~$a_T4HKl20iU0r}N_3x!YK|Y&*=T`cab_E3;fBY(3{)%;#sl zCo7Hwz&`e|kA3_{BxJi=iJoivpX$?sY;!B6TE(UTfWEiWVoX43vCS#vWxadT0M5`y zZ--?;?%z|-Y>24OYXzGI03(F*9hNW6mOSvxhRBU^Z2=$I7xfO`k!`M8mVB6-J+s{c zA+||241?b+K(4L&)6>XgHu{0<#ZxvBfgtObobTug$))+e3tC z{I@~fFmuJ{5TH?Ewv3jWB2;8?Znh}MC|zL>m<(rb`ibDot=6n*8H;I9r1@f+n?1Ah zl+xTOfyw@hps)yjv#JUWJ5dWP;|O0OMWy@KxU%FjZAOI{UhS{CH< z&tJ#S2mH=6dgd-8&L{m+HPGDiM?nGLFMdye$ugGnFSh-Cz|<=1hO`)3BI28Bk#+aR zx50`)zNEzHhbfb9w*9`fR1I{Cf~;#ug45}XLEp0)z1i| zy~=TM8V|Y$bCnY&(rPwIcObSt%rZnweh55rq605xssZde(P3G6Stj`0iOxN>pyGcd ztsZ_hi9{vHht&q(w2b7$vU(*cIF?QpHDbYpB{ezQ9h*a{XQ&D00000NkvXXu0mjfMOS0A diff --git a/graphics/object_events/pics/pokemon/followers/medicham.png b/graphics/object_events/pics/pokemon/followers/medicham.png deleted file mode 100644 index 25f063da4d1d4d58a9c2464eca29a022ef6d8dc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmV;S0$%-zP)4~A~>G}EDS#fb;F&QDjp%IZeS;=96d^)GK00009 za7bBm000XU000XU0RWnu7ytkQ7fD1xR7i>K(=lt?KokdXE!LzhgLe~o@wYHnEnQ4- zyeNZeV!5f3ArzzzX~%MuLYCBDqI5C1L%kRZiiw3prVQOmkV|Xi&8R_Gm1Jn&J?k!A zIu!EXe(&u6J(((O}vTNrXluyQQ|~s`GqaAg4V&#CiJb)GJP%bQ}%Sr*&EW8 z*s;iRjINKjFIa|Re-l`7DRVt`o*)P&B2R-U*GjNT4cL#oS(u)OBFB`jc%IUPSs44? zg4~oc-zv01X$pUG*u~7t3KNfSe;q|@jum>Ib`5v|>pXq?JAD&62G9Q4SJGU(nv^=Y zOWhhM#4ZYNmuY%CH+a6B5kekcPD*{1`fIo`b{_fY_%1mzxmJ3+gs8{muDDv-17+An z_AkuCcP+jvHPTe2atGRlIRaX^&@CIq`g}HG7xrdb|76MBn&3jgIs4MG!N1He($!$#|C?6C00000NkvXX Hu0mjfuWC3d diff --git a/graphics/object_events/pics/pokemon/followers/meditite.png b/graphics/object_events/pics/pokemon/followers/meditite.png deleted file mode 100644 index 69d936343b3f9a6b6dbddd085f29091480beb2ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)FN0Z0000000000XR79o00009 za7bBm000XU000XU0RWnu7ytkPqDe$SR7i>K(lJlMKo|z#COxN)HqnlrP0TqJaA{mx zazgM{aOsLHP8y71_7@Z{A@?sB3Jjf0_+j>r9$Zg*nCQU38^(Ln*khhBFx#|%?Q3V6#WU~JXyXFE8PGzPfyt%?>=5C~nP%~9ir|OA#swM(rjc@{ zTRejZUIg_vEnuT5WUg|inFsWWLgl@58yB#r5HhL`ubSuHX9&^jsLsX(nh+w!cGGq9 zv~OaT;$~E5;{qY?QwnwS#FVDRC#rKh^it+Ee|C5^nf25Gn#C*Q_49a*YaLUTvdRLA z8{_rFSN;LIH;vu%GvznUg`K%{)-4KWc)q(XT*Ci+@s)*ji^7;-5))YfM#7z8X(w@T zN{N$f?{8e*$M3z$pGG$?%m(?Qzm$dGQFyT(FzBvc-&S{WfRhLl=}teY^yw}Nogt-9 zC$iAO!eDzX&-CCVUcNRLAkNXr2u}$00009 za7bBm000XU000XU0RWnu7ytkQ!AV3xR7i>K)IUgDK^zD08!ZO`x6T2FAkJMn9_^Et zNszX8XDwLPR&q)Qm@**yteX?fYDdlp&44FIjcP~xuPwwp0 zq0n1iKKI^zfA{|6N67#2FO0%KKTLWsFt4}$$ADh^T{}#;Fg;y0;w;N66L~mQ0jBBc zA>q|RoD!$6IXAX!8%y@y;Q|^DJjO&0ovoBOUASB5#oCr_4-@5rf!AaT06N6&LUk+t zp@&%>E_e^{_7;D{KuFxaP7hP<(g_b2^a1+GExx6|O|K7nqV3^=GdME>Ow$LL*ACsj zIRt2FYi;KXKn8aGX3GFiL$^=yZlS8eY!3sM`~Bsv-%O6s?L1JOn{dA1>-}>1Uf1tP z25!6k3Cuv-`GSY|){aB3NkaxEZr9rD_&&t=ob7zPkT0$3_td-)0dc$bWgS{!@g?zC zjynzfV?`%^@70UNJ>hoLU2n5sadvdlwjA|+#-p%4E?QrbUQnK$%d**`+qBjWA`Ile zPui9nnpu(`#bU{0TFFX6%w=nC(-dFH#_qwm7h0Bqk1;UN3Yeyq%L4$R6);WkquN|J zfTqvn_zI`CE)t)QB7Ets4X^R)T@38-#BExMGx6r?gW6$yE_Rj46f5%@Q=gITJvP5u z(%O@4e5R|5Pb&H|HjFz8pkow}X4TR4CGq+ZKD1GDv5k*pMVw#0T1kA)|F|m9Hl3-* z7Z}(M+$LmGY-HayweNgrU!bEvw)za)UtoFM3mR;Gu4Fs{Y1JDzizW+1!PrNo;*Q=9 zZIed1wcq4gGvi$BfGR*)$fHOv5b^W+*YpWf9jxdY<4D|_}#%_Fb)*YJFQ)^aExI+KJ_yvTC VG*W;9Kls}3aF%-syKxK-(fuix)sMu!4lVpli z%NENL7&I0}OR5dIz=H7=7Sd@D%PUf*OPOLXFc;Xc_sQ5Z_B;s-8%(C)3-TP9 zvbt+gK1FF@kSYYm6~Eg8su-UjYAla)QfiT!oF8TytS#g|1t5#_B)@{@YR*SaphN!tU}&sac!h^i)+M5hBz&|38CPJnEl!X_Ln{~ z(&ZncmAie3Fl|cE268*H(=ae=-RGaUH2Q3PC@~eizn?d#r2pPa9!guCQ3L+MkI-pAo~2S2R8<6IaJ3T%O`XPvP=O~ zV`EHM=Ab~2Pj7he>fY1*1{y(p&Tu)V3XFrXT7*n!Zt8oKz!Fmrzk*7zrd#nobYQgK zO+pRc3PUE-H1RGuPp7*Xn3{e!=--Fj+gh#h8PiN_TwhsUEmzoJUDbO-ntTw+M-(l- z-OmC8qB+IIkpZW;8g~;i@BeEu8q!=4y2i`P1;#Na1_yXkul8LP2B-t^|4sh@LaErD T#+Ho$00000NkvXXu0mjfR+cIt diff --git a/graphics/object_events/pics/pokemon/followers/mesprit.png b/graphics/object_events/pics/pokemon/followers/mesprit.png deleted file mode 100644 index d95756c1d9473c4cffb41f264377cd445f0216b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmV+;1Kj+HP)FN1lF*&i(`MFVn#8S(x00009 za7bBm000xO000xO0b}Nl!vFvRnMp)JR7i>Kl0R$PKp2M)1*%D7*CI}c+tMJ_)zr=4 zDWsfG1R1=PEG=!0Q^j>DAw%O^T+yL)3E7;F(9cntwDHhjD0I!#QZJ5se`QCF2^b0; z{PXm@ul;+@IsvfCDyyvW-^63DmuK&seY&=6upEteb+IgaLq2Jfxn+Yz+!5!zI$x3{ zOggi+CX4J(#$q-lOR+bWwzGQKWO<g$l8`<0Ae9Gqp4VI%0ub%Dk z-sWQNi_ZeS^YJI&8utM-+a}Ars;-{Cm~yg^`NecHT)#TOlZSFmuD{FXYmlj7TB0tc0TQ!l7|Qy>nFvac&u7*>U!uDo~ryJlBPW zkr4uS8#^I}FoVu^u7#GBP!u|W;1s&5upHE!4b(lOHuagDn>*563!Ro( z78<5nILL!8Y9;F_Qia7XEi}{eiGGn-7ZXtK)^C~ST3GrJm)(qFKO|aMvlJG)1mYq~ z1*<|=?lp&rZdm_*nFEyiR-kw$bW*nvKPcE5HbR#OCJZQ{D0E4gW|CE5xna3wDvGp( z4zdR}oXmvc#!!;LI3h*})&vK@3O4}2QS=y?Lb(^5+PyeKfGBL$eTsuQAz(fr1R(pD zgix?!g|4U~zF&Z~-0l;>%KlfP@*Kpe#njD`*#4&tGQH8fzz59na% zgbF!ZG?=cXWbG7hO=yYT(BVJ|+^m0-qYDK01xY7{gV|hil*gwRsD}EToeVC^%Zp? z)O9t?bhSGPD97<4ANW@s>KeA#HOqq$w#qP9NJpXT>ahxlIWMWcqF&i?_d8G(2+kM8 z-(2@qOtD}rSzk#nM~>^dv+M+tRRJC$HgU<)u{dfo$#^Bbv~{+><94xpmyA%pFG1!n$il86NI6Hx48F;^5KRSpzcp?N=cJe&m^tKURh!U@ln(wg~Y|gp{7L(ChtPFyrm%n_p)J1WBq2 zLw~Z?JngA~+w4Klgk~|9CgWb`KJm5A1OW8lx}ebiO#>HRtP&Oq=D>! za*!Baa>IwKAedX)FbFOM=K{fC05qiwPIR6)kK-AGxhNPiLnn^pAZG{-16dj|4E=5( z-at3ePkKw?Z1gC+;cz>W+D01P1eN{RxDbzZP$G$RQzFjJKQwEMM90FK+e z8Yl|G^pfAprpamX@I@DKSA|d6B{Cnc4CG|NkLDQJEKmO*P1K@@-oau|9E3@u%HsE9z^ia zbLl`a6c3S5y!1CDA?2l0*h`UIZK>8+5Jv)wQ(Pz%ib?P)XnsT^fh{Qxcu{(DW_CB( zT^A7*y!0Ki`|VD?_jYFXB?w)`Ra`|B0JUH8Uq$XNg2C{#hVEta?-cM$&OK}o)`n}R zI}fv2k2eWXHs_^;{@}yxewuS7HdMlon>Vr#k`g>3Z`dcY*6)R!Pcg!U8vl zr4%DvZO^};wA`^CuV*qGkgiI|tpmv5+*0*A=?cMlqh!XX8KDM0*jm}S54*2xS&XkA z6e;b}vbDFU*Eh~sjmWhY=R34Ziq=gtKF!Lo;D6hzJo|oOWig=E{)n#Z(B<*-ni3wu zjA8qU9zT9|*;T?(G@~g-_~`iZX|?mUZzk1=b6yLfX?OQ3`(6RG@X(L(g-O7z%Y9DN z=82Xl!Aj`$`g@hb-g_f#N`K07tP=Ru+f+WSz8sfJ>q@vA=aES;qEf0!Cw`b9$x0}^ zqj!(`o-o4Zn6Z#qQ}M2B-74scyYn|4C7dhHn9T<@suj6LZrjnmOtKaV+h3H$K**>C z%rHQqTvI}83kvriQFSOP;hc!^8@;K3$pS6aOD_T;03_H538|A%h?lqfzGmy9UtiTi z;s{SA6kc5m^Mp^C+bY4vku9XZ37g@XZcdITaW+D5q*^f}#O_IB!&fXT%~RJ1JrIHk z*Wp^2C&h>bv2}&VBl$p_vsSbzk8FE9iLn-*3GpfvVz<|Dz6kMFHdv6L=;_CXTHXk; z?3T|APpGGtv2N34U%1ouiOHDSEXG=RrcOd3f>q(EHwxbo?rJR*nvsDJpOi(&f~tlG zb(<4+)}AqtiJtCR=Sm3?{>;2}J-4Ev3rq|1%sUUh+>*jkpUjrRpV|;^b2;(iy*(vV ztzrW}SK?Iku(S|C8=~#f)=%iTM8*;znAB~V`1wf+^;skc4oRVI9#LsQuL405LSWpE zXG{x!ij?rDz-pT(?x=okWvl))aJsaA`Iq5;#}Cg{Hrx3Ak1GHG002ovPDHLkV1iUg B%zpp? diff --git a/graphics/object_events/pics/pokemon/followers/metapod.png b/graphics/object_events/pics/pokemon/followers/metapod.png deleted file mode 100644 index 2ed08761c12d7682f308f336699d72d6967a826d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qGUA`0(Mwg*QDd zJtY|#8DGBq36#VIviW56fpVM$9+AZi3|ww>d4!uZD)leyu+>eOtZk zgW%iGnf;iI>aXOSFRIz*cA#^<&27&G>3*Wsm*!qu&Uo8K$u!Vnw!`b+ht@E!Y25JW z%t4n-d(#8L0!xz9{jySDuVtKQcx7%PpNPA_JpEwRsQ0|@I|A3_+&vuB9>?_b`=)!+ z_Zs4k9N+kE+7bWql>U#)@-A28Go*Bs?lu&W;G6sLtJ?Y_zvMhzHs+asyTIRm?!=s{ z3~#HMm3eu~FPyGCG|yn+uY+RKlhS%-er-Dz%TaaUu&i(c$DKJ>sajNGFiEN ebN!S5v9-((OoL9YicB&F1-z%LpUXO@geCwJ7ro8^ diff --git a/graphics/object_events/pics/pokemon/followers/mew.png b/graphics/object_events/pics/pokemon/followers/mew.png deleted file mode 100644 index 3ae89a52f1eb3a3d0fa0c61b38ff7d73ee873f91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)G`o~saY{m`O)dwp}BEcaR2}S000000000000000>WLFE00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)-g}xFcbjbNJUuceD@o;@uUuyZb6D5 z8JUhBP&Eycg-YzOHrG7Qgg9?wIC00nJXa*eFFIQwl?CA?`Re#R=h<=^1fT7*yq^p2b@L3cdw5hB+dU!b_t7Pl6CAr zh`?!~mgM1QPwZVXnIqnP_juN+naivLm6?m64ne;RkP4uyJ+7s@zl2R_Vo8W>Pr%+K zXB~iAxSb|7D67!vu79wERi(HI7}*ZBUDPu$ZQ*eWlDHQ8{#`{DiqETfW42&L2&&A z;Pk}pvV&x9Cum|dnBnO+vmX0^y{9C>5rRqTGs>JgnGY6-+T8D7q4!@>qjSWy*Lpj$ zd|C7LdBLp&y=j6nj=ULl&ye{b3JGR*sw||7s z>El)7^V2Bc*g?Tr=5xuJ_Idh1KmN9GFKp2K^I50s|h|uDx>d;b8=@~=q zMUE~?vDTChnT*5@)e=G>nX|-@r4T429hD`@B3p_|a(}LOk|lk*Sn|-NLk|LZ?xg2^ zPn?Ai`ak}S@k{(^Kic_k$4(R@^zzWk+Y4Z;X;c_T&$qWP_pQ9O0GfSj1}Kcjb`;Kr z?YynP?c^EyR2G2`(L-dl@|FTScVsq!euc%b!zc``cJ3~47u`otsInABQPc=fxvKz< z!n-i77gd&1L<)zk++9Ej$B(35RXG=qqlgSUxT}C8;06d)7DLO0lUD97V2`7akhtES z!czE+c-}Z@=dJ?S^9UiMN~m%^W^X<3gVoBKyoCgt8IL}S!eDy}=X2Q$8D}6fXK)Z~ zvQOYsg^bx_2-8)TQ}#qu3P6dR39SRk&l|Yu22(}|i&5{qg%Nf}Hur+05@MT3c1Fbn zw(!KsG8YyoczpwP7`M>H;uLLWo9TGYmwqJ_|47D$mp=tMq{L5BuM~>Fg6Xh$N=~0o zt={Fu)jEFOWJLF3%`lAq@meSXPb8y6xAN=vJl_bI?yZG%X!{1wbkE!M3xPh;QSbVs z44BdeqfC!c=CkxmAryg6$AV*&8gYKT*f3@Op;HJ&AUkwfV7b|Ry(QNcPh?ODsh0EC zk`oJIeM*hPLMQ^C9KpKSOTiqWDV@@jLMQ`|1zSif4<2^no;j! zg_&dv@p2vOtJJgBLJ?^Dt5g&y))8L@M`uEKT?)C8a}|g*cCff~CY4YdNd`yR4i?uQ zSSOOL^6n9H4ovg3SDu=L`3;trd|oVU_$mkiK(HvK{-(X00000000001Bbqs00009 za7bBm000XU000XU0RWnu7ytkQnMp)JR7i>KmcMS>Fc8KGYSm(8@G6N#S;&hb0woZ4 z>QnR$I-3MaAesXdeT8h!;6m*g%KSd^bUGTL z|MBkxCUr2tURIwf-=O63MGdI(^{@&I|K7kC)cm45&<-+Z}{5lRFhK2w+P^8FrP$N4r83>oE^3yGtg!qs|r1~)N&)&Ot0ex~z0 z%CG^LL6rAh`S^W|5#Ff%Ud{3-uea;nd>7+eSRTw05-=MIr`Ws$_%+Lr%fBt7Id6Np zMdO^V`&nzW`9mc-JX8wZ%>XuQG0YDcovQPdIzi){f+~z)q80N4{OZx$JbW?8w724%q~6F9Ck` zGRBChVj`So!s#R%rsJ+VTj}0N7&{y(As>D}{{V2YwFUtr-Yh1W(>t1CG9|-pQFTJ7 zQg4!tvdKte-b^y&BxF4x#AHHk3Juv43R6LZQjbLwvgw@_!157CxZy>{Ez2U4#NJQ1 zCaG7Ek26B&^y?R~vMC4{%ZxSU)EX>G!U}7MsueA1qskbg^JTT9?n4ySvT_VhGscRO zIODEiP1TSXBQ8ttkPn$oNptF!=?Q5T4(pugk8>z;ReNWmX8iHJo$%^Yp15ZmQNsJz zkr-}Vu1)i_GZJ3AXatel!f}Z_LoJXf_r9zX*YNEDUJGx)K_mD_c!qkn!2%NQv$^Kp hfP>G*a|?JP?g3LzRml>Qd^rFB002ovPDHLkV1kFjXEFc) diff --git a/graphics/object_events/pics/pokemon/followers/milotic.png b/graphics/object_events/pics/pokemon/followers/milotic.png deleted file mode 100644 index 724a2011f6794bf558e8684706bd150531913178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 zcmV+#1m*jQP)Kl|N_`Q5?q~M};04W%Yr*MeW@e;&gbI_PHuH8q#<3cTF4@Vme+!NakbN8n?;5ZEPc z5g^FD1m5}DeotH%+Y9D1PoNVpEGt_EW;6DDmR>`^M5=w_y*_3QJX$kNJu7p8ws3S= zDQ^`B`j4JA%@gz%0ahP^b+QsdCI3c6~`8bh1qX znebp+Xl9#0ytOoXhzlgbMg^fq4QIFVyq?R=;|I;RA(dm+z_tC=3lx3o1aiV51>c6U zG@6>{0*P?VK;e5G!432zYC#oi3nap|0F<`X z+oZ8DvKX`yI4RWH@Gxx2nmaW*V6mAKq72o2K3GfRl`c?_`jl$I}Kb` zyQ&ph)(2OxVywJtEU(+3rO%h*c3?8jgdCIiyt}anZA2nE5Z5_IRqhicPe~BoPfpyWg7-FCpF4LZ%%05O zMpgQ~q{2xiC`9X@0|v)yp$;K~$oFju0)y zh8IFiAQ}hTJ783`{`FXi3;rzgu;@b z@WQYp#;G7ZJ*ydz20B8Q!9oxrsLjl?fgplVy_wTkK4}erUR+FT5b^@A5Qq?k2Y}}O z5HCQyEpqwzn*j&Zo-Akq1A2v+C4L%uwnf9sWJdiZ`-J`jX`a(|^B>f24$!-P0(hwG U*KA1kG5`Po07*qoM6N<$f&*pNhX4Qo diff --git a/graphics/object_events/pics/pokemon/followers/miltank.png b/graphics/object_events/pics/pokemon/followers/miltank.png deleted file mode 100644 index 09393dfbcfe1d0036364453638f8dc4dac9c35dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmV+)1K|9LP)FN2=iJ?hhd9h)6@u|T%K}lIDInlX!lRau200009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)lF*}K^z9~MX)(lh?gD;X*b}Z^b3U2 zLJqS?Y!4yq_%ez&4>qN=pag=qP_Ut=qJ=Ty$su*jr4R$|f|r&i8zdC+1=2uTBwqRn z(pmRyc6CB8z4_qfw|{+x-JL;6nrEJQ=K0sa$>$btZHayNhrcXnmT)yyuCCwW9Yj`y zK7ZzK3tEyE$}5QMq~3^KMWib9IaK`%1T0AiKuRGXLQ~UJWR=oYzAk7fOxu7`kf7@# z(>A3EDsY&s)%Ml-&91Z+kZ1!nu`X~)L6j0TKHE7`Mf?s3ngt^D#W#gOp;hya6oGSO z2T^VZ1Z`$}*l7&+#V!Gs_-rpwgS`>={Y-h1%E{@$hhwo-vrw7s-zP)BZGb78i5%=c z{rdUzLg)f(RFbn@dGfvnp!Z0EHoyO>`>tuEwKM0!*z$L~F;eW;Q{~LwCui<>GSAgn zA@B-=W+~xX^SENHVf*APIJTd1sWa+gj9b`Q5L<3c=3xW-3WH{WYa`I#1NA+pu%7|C z4q7#Po51H8+QC}A;Vx+T(3&SPz=x||UC?Yzi0^Ihzs0Iks91I%B*c`kPHxT)a-(Cj z2>J#dcy&dfH<`oSO+=2)Zf?e#SI$AoTfT7TeJxG2&XwbQUn9GyW6wA7*ci3E!c9CF zwpvn}+encwKOg*Ax_==w)e+Hk-aVSNeaBcr-O(WA6f*bdpcO*=0)>x@i;wti7_g?t zvigzdm-;ev7nH9d(Jy7UP`>V=?4=yz-}5ghM`6Kp()4T3*HC^8%bruFoyQ(Z_Ob;z z>K2BQI_$|&iH{nGu+0CVq#!KuCpW$k^UpV8-aMQKh2@9dG{(q#@&joqzCt)X=MSs@ d;0F1B^B3elf20uJaA5!d002ovPDHLkV1jQ2c)kDt diff --git a/graphics/object_events/pics/pokemon/followers/mime_jr.png b/graphics/object_events/pics/pokemon/followers/mime_jr.png deleted file mode 100644 index fab0bf4040c359ab84affba064e64d27c1fe3097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)FN1-f$7mfS=n)sK|w+BvB_Z}Iay(`si~=XNm&2@00000k?%jh00009 za7bBm000XU000XU0RWnu7ytkPf=NU{R7i>K(!Wc?Koke?99>GMT$O}2QyRM1CGF`H zoODp|Ke)-!Zoxqmgboh=1(pf{>mpGcnv&@z!T&+(Ut@Az?p}JYE`me8+vmN<<$lDn z>eQ)I=l|q>i}8WxL~lYDmE#HOEdzHa`ZTm&(?|$gh&_!r~do;vMcEEmt zi!=hM-J)iW#K?+w6ufL_6GUB8n(IXqi!249sTb2iaz~-t+~b<%W2a^Cb^WCcOM0 zw>LT+4@6ISFzEHE_GhyrVVhk(y1~x)bPy>ELd($jF?A{CoSRHKo&Hj}PUv;qbR45* z%xH4uEz~=QmU(y1zcJ6s O0000LMn<42H1M;|KpQB;S>O>_%)r1c48n{Iv*t)JFfc}Xx;Tb- zbiTd3G4GIp09yio$p?<5%*yNwPx%OL5Y19CYI@bUwckN|XO8R&C-dN@75BGwN^a2K zyQ1sL!k~W#PfhPWUo^)cY^m2&t<|0CHb2Y!G6EL&OQ3+ znb%UgmA;q?Q@y4ApYFT(#6SpW~I+Q zFZadavfZ-3OoxIixRjQ+%tNIAgWkz)|AQYGxu1z=G-o*u<7NFnSJzqlTp3k1BCpEP)y6&VaZ8pX@Q|3FG|QYDFFci!9jshahX{O0{{R3A&Mpm00009 za7bBm000XU000XU0RWnu7ytkQ@kvBMR7i>Kl(B2uKorK0faqY*(2iY-h;soatD$QU zcxWi0RA{itVo0VgN0c|5ovF|c-TF7QT}5hF1*siEiUuhf3Z_GH#iT76D*QL}BujUv zEAG@W58L=B-F@G8?+GDvTeo#vRhe_`!s0(0z7}ZB=7*3$`auk4D3r=A3MFIpe#lW-e9b(&$ zs$&|Q$=4(Mu~!=q!VNG~21a~V9AOK}p-jm7a|kRUI3b%oO0b*>7l5aBQ7)}{QgT@L zHQ<4Y&jZzvf64>FRjoK*Y_o?A~oSh9E$)&MNvRdEYf+$pKp2~x0P zPc=a9+ll?*oul!d*aKw=ji6$GDfrPbTk@<6SlA9um) z%bO)P_0b*2^E`Jo8@wZ=vx27>I;V=5&Sgu6VgLQ%-bzN-mSxS+3U&^0l!3Jk6*?7VQl|4;<*gdq=nd)3@u#US#6>vAYSk9bJ*#e6yOfbQMhljY)bIwGY z0W!4bN@w2Jw)*-CUFiFAal4_%*+F_aj`mz>OTw`6dPJ>I-K^!+`L_O9e*giHi{~Eq RZ*c$s002ovPDHLkV1jTyk}&`P diff --git a/graphics/object_events/pics/pokemon/followers/mismagius.png b/graphics/object_events/pics/pokemon/followers/mismagius.png deleted file mode 100644 index 65c63d73f838d322d5343064acc6c10d90e0cd61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmV;S177@zP)#xAu#{|00000=8lx<00009 za7bBm000XU000XU0RWnu7ytkR7fD1xR7i={mcee?Fc`?3v1gZNhXzCKhHn5Jq#NR?VK;MOyqRRGe&woq6uOQQfD=^^xT($%P1jZY%x{_=8CgeRtQBCm zokM)@I1R{O9p@34$y`BF&VW|3ENB)uj$iBw)EJM?&R_zKshmCQ_Wkvj3YLQDvD0nu z7DZ=9$R$jmap?G?V?x?~u=(S3Mn-EIb-R<)dR-rl+cKIob`#Rs?8noHkVz^Am5l6_ zkSsne8phAU> z$Xg0ImV{UFgO~F(`yj0CKc;gjm~>@D(IDbAOxm^(a%C&|flN*=E-WFOP1ETt=M;Il zEQl}3q>^P*c$^MpPQQxth};s7k+WpeRys>VJMt_#w25d}GP;rrR*o-z6`T1Q&)Lc5 zXPxCJ?DZqjo>ek-?>4;M-8!2EB_s|OukTx(OUGr|6~(NYao8(vFUWM^(n?0`NeYr( z-|H+TpMOM?r?`%>A3D>-^=Tc?$$0=?UOLP1eqPMyem&!6e&0g1%(}b<&jX!h=LO^O z@BkxREKofglqyH0&g)0RgG{ZKU(beUDbYI1VO{ga0mhc#P(!)kG05;NtPzwy3&l;Q z{P_EYA7IVU?8u#L4gT`cPr;fq1X)dpjQHgjG#r*(Z)o=9PLDx?Q#*!7?$N0bFkxwU z9Row$DS6jty5T#CO(h}zp4-+6 z9Mh|u4OcsfZfLF?8o0p17^`;#yW=Pc(Q3*@*$na!@}A*nA$NigD$E*+UwEVSDVB!m z3^F$1#b?j(vHSqOQT;+SUwIF~s8AUF6Tf*k{-4Jm%#EjeFi1}Y00000NkvXXu0mjf Dh;ys+ diff --git a/graphics/object_events/pics/pokemon/followers/moltres.png b/graphics/object_events/pics/pokemon/followers/moltres.png deleted file mode 100644 index 70d6298ea3f4f35bfcee3262f12810e805970e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmV;11bO?3P)G?r1F}ZPJ`N?_du~Er^IdMrjC0HmR00009 za7bBm000XU000XU0RWnu7ytkR{7FPXR7i=B$NNkLQ#gLL(;!r@H|uozcu2 zjpeX8EDN1O$aqG-KX2Z=H8QO#w{+3-z`DkOS*-A?O(sIq-!sK@GhIfm%Y9oO)jX@=$-s|Aunv8?t5> zBv!i7IA{_Cp4M6cCh0u2SQAtLlAs2d?r8$&+=7td1sp}t z!}&#`_8>w?lOXWAlWhRk0I={`yLS#-g+)o=D_KG@&i4~FMILE42=LjH?lu5%4FIb( z50Cx=v;7G;Qj#mh_#*y8<#PCCyO~6-*PU$u=?FYqt!0`rBZkruM6gm^=C2^2VK=&N z5RB3wJsp|=!clz$_EkFnTm2t7{kU?36XK4w;_`B?0)ubz^s+%P`}}qK#Sj2!TsgwY z!i7*KOFDrNIs^K(aO5+EC=|E20n!yy{IYzP{<)1Gz4#&h{YQ1v1E-*sBcE>ItXi|> z>SqYi9w{>6h;F>DR@{o`W)p=lK_U-7#|d zz=?$;gTP)dS5pW{6;;M>g`%r!&ol4SuZ-GLIRY?xIOg@ANAK_mj@c593J|;~mrlcx*iO)T}e|V+}n0$OJI{ Y0|$E&pV9HaQvd(}07*qoM6N<$f(L3D>Hq)$ diff --git a/graphics/object_events/pics/pokemon/followers/monferno.png b/graphics/object_events/pics/pokemon/followers/monferno.png deleted file mode 100644 index 93b07258760e6c13a08cce667e7385493a9b1484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmV+^1J?YBP)FN1_Svdg#0nt%G{BIJS00009 za7bBm000ie000ie0hKEb8vpK)G=t=KokH_fkqR-p+&Sf5ISYEYp5?2 zdr6iK&E~}(1EDE6OA2yF^&ni6Mi3HAJVZ+|7(yW#3?YFI&X9H~aSM(KZ4juq3e?x3 zL$fsPU2L7sLP}{uJNa+#{^{S>=}wX~jA0DpzlD55|1pw@8(2UFIoHNz2-L9<8#8i}jiZbteG0C7!72F)5WSV44^wP?G6Zi1#kFdfoN zJIW4w1gPOwN`u`5&4wPjv}N3#j`C!$V7Pk){Vx%=uOfQ^SQJyrw?Hz!oLoMqD zAhhGywiIgiK>1i-(DjxTKxu#U_7xWw}_^;49hI%R8I*PC|2XTED zPt1q?n8KZ*IL`(DQ!I-=mT2`hzJ;IJ%e42)>`MzD`8=-Uf15!`1CU=lA)1 zSR?C}`;uF}bd6Wc)L!gWcf~yOD=(kQtR$pZeoNw}x4>VJ&R<>nNWPxh`GWLRpl6K+jL&!zirU>q13l-bre%UVs@mrH zM<1w17f<_kmJpIgntXj3Jx++GGcsU&%q;u&z%s_i;whWIvty{LS>*Z6d1~bJD=1Bz zI{(!6?=CcfDVjzbR5moi3ldkWtZGMo9^xj%gtwG+nLR3H057oWHw?|iQPFHjot?qL z2t>0p;vW~npXV9D8EVMgv2cnASs9hr$l&j^TOKmd#5WK^Vq|rHfL`;gu%!um?>WC^V;T z4;t!84^kA?&_X9>%RU=MXz^-oU5iwl+GI#HJm(tUF^AY(b;TG^YJ?K zhvWOV3e+d6AFoNoh?PLQbg_>UYSy>zITyQ41Qi_LYB_$St3}j0S^J^Jkf^9pLQiCNzLt5bg*^!d2ubUEJlqYKC0D?G0$Gq(+vnF=94(eOPcx~uX<^PgB|$Rz8xA$`p?s_%@SGCFbX5i>9GHt zsl)cuxaFN9Bd*bVQ2mpu|31~e|7l=}G-;qPEj8%_xLf9pGh!pKoPhjR-4mW9+GcQm-A6n10HWT58`e+m9|{RO)_ VeqN}VdKCZw002ovPDHLkV1kACxC{UQ diff --git a/graphics/object_events/pics/pokemon/followers/mr_mime.png b/graphics/object_events/pics/pokemon/followers/mr_mime.png deleted file mode 100644 index ce52c1f03c82ba1a4471b4e5d1df18e5850fa4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmV?P)FN2YX?e-X>Cr)1X=!P}k&#I;IRF3v6tnKm9c8uKpe)k_=XMw(cr;D27!|YI9f_T zLm*^msR;!ubd%EPl17z=LXrmvcxdMiT}n+#2c;Ma#RLaDb||5Xi#8jX8qr3zo}qX8 z%hpMjtQYV%2>tHl@B8$ZYzx9lE3LE=2$AJn*%QK$9SgYB|DdidjH<*10mSzwq~Kvb|IzpT%nc$OoX z*DoHv?IwmXgQ57v14HqLmlKHa1%9u1$?ax1`hefN+`6)7hJ6oM45G{K)<0ToB<{U& zCk_OLK!i^y@BwLNhT%6d9Fiv?7zXQIU~}AO{7?Gn52hZkye;Q87=p9cQgk#6erpxpc92-{qO< z*!69zRm_uJNjhv4G5Sh;-p#C9ZrWc!G*IP2kpXLS{$TrmiG?rHQCYFs0RaJVX_28x5wWq+000000000000000=*}(L00009 za7bBm000XU000XU0RWnu7ytkPLrFwIR7i>K)WJ%_Fc=5$QN{?~+8vah>`r>MW$m$= zLIqzyZ-Th{NK1MwYiA?AfZ#=oFW|{-zMLj7O};fE9STDKr~L9y^YxTouS=IMUAp|E z^tUm~)e@Q~&f6RLOzEJv9#Hv#(n0^t0GzirDo7?*&>|5o!?tFGBytDM)Aw=gwKPg7 zt)%JDBA60N!tYGA=4q<^|?Gi zHjiUwG@F|HIzJ7)dFh&ujm9apt>=sTbqURb>{s7k?P+b8@w_^=nmt%dP4o6)u`Z#- zh0fvI(mBxDsH?kbR%<+YaYkp${Ii7?Uj&Su$UbH4NOr;8nbzgV9m}r|G!F(l=*A6Y zM*--W_th8C#Fc*-jjuM|3Y5bg_VfOuR8OFN2gk-33siD5};$+6jaVVM8`00000000000000000000b|~eT00009 za7bBm000XU000XU0RWnu7ytkQPDw;TR7i>Kld*2wFc5}C_XWflV$scJVgVUr!b0Z` z-EDyaG)j!G@S35IP-JZj8_?U9M^Y3;$wq;qn>hse$kYGbQF4;p*L~gBef{m?eD#k7 z!CFjfxs->|W}J7kV8Qt)e-qW}EveVxM&6>kQJ@25Xn2ll-IlD=>%t5LbN+vlo=_r!HVK zd*ith1+-3RSWncN8x#5jmk`aANz2=U%0>v=p5cZ<&!}9QdVH#NLc@9@D=>*dHw?{` zmjzbdW{oeBmE;IrZ&$1u41+i&>(Kgw=3}9FfQi*y#4?WWF}OaI`a|$0000< KMNUMnLSTX`r$vDP diff --git a/graphics/object_events/pics/pokemon/followers/munchlax.png b/graphics/object_events/pics/pokemon/followers/munchlax.png deleted file mode 100644 index f76da3270b2b85b10ffa956a6989ef30107b6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0G_eFkpTe#K~Yfv0000000000RevFV00009 za7bBm000XU000XU0RWnu7ytkP!%0LzR7i>K)Gv#}bbhNQQI>DYUCNxG5rT6|E_xi-<&MKa{y^=)JqP5h6O}ZNL0;_wKIgZEaOm zRaI5}PX#~tw?({Si)TTE;V!E_2J8%#>`!;u&>Wv#djp z+5rl6^NJ{?R#47_MzoEVtb5Tk8$g3{-p(epe3|JMO&K5HmUGq&7|8CrdDY;FwjR9# z^CQ{daqEFvXhPkK0k_n?@iw~-*_g(9zuDIobmfG)#g+<9KR zJb>;#TCHYYp?BEnoS-unX3JGX4HFzC=dS1ZvuPUmpQW2OfQfk=%X5o_WrO%C^DD|1 z&Sx1+(>cCKbn{&eee=|%%eLcYW`7`89K$??c$vq-`4N$iqsT?Kk8aT*1qUFJj=5*j zR(9rKuQzcF=7KyE;_RkPP|t{j+4~HC=iG9eK)iFy0F%$>zBS?mBeuEIX3=RcXC&h1Y zkbpxaM(%;wb8z!BbP^Epr&ZJ7EKW4kps z6~dNT{Zavg-Rz4U+w1|r1q<5^)B%t9SF0hm&DHGgX{N&#bw^v?_{eE3O-me@>4`i@=Th5r^}D`74fx=8>ev%)ncwn`IyBl3J9B~nQ2z7dD0FAh?)o6P)!&Jfx&S>QE7P*AprpaVNn6O$>G^aS@F?f>FN2gDLJ{BF*#8oOQI=N00009 za7bBm000XU000XU0RWnu7ytkPPDw;TR7i>K)IUqZKo|z_;^2+tXlUL1lOdCjN;?nytI6z2 zUp~)<@oT@>F?1dpT~8zCDIKPR#C@zbq8P_d+1C*Pe@={VnWr|QsXM1C(^aQ`BHs)w za%eLu8&T%$Nj5DCdTJK^mXlfX?hefC4E`(7_rDYUbi$=R9lF>z_Rfw=(z0YNcQ@#*22X`xve8KI$}>FN2YshI!(00000y39sb00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)jez5Ko|$`o6d6}Izcir&&l>qnQvt!iB_ZS8Ce}fZ2NF52 z1-4DEMnU8T??+j;O`xMNfm(xx2QhGf@^qe=(35?aG52uqZI8XwO+mxb@3NFJI52W- zTHATO+h>rn!@Z!}RHO`m0rD<~01#g7y|D+ky*=W<41#meXMwpH23@9U4B_bHKo*y^ z?QL;j44k0PG>VNS?>0{Xu1+G)2DZIDt!vkX>!8;PjM-VYl{uS?qpl{K&Q}C0*JXE3 zp9h#i4AmhG56snAA)=I|)7vre3*w_y)MqLbV@&Z*o4}(LN?eXfr}LWmSqfQJ?poX7 z7`2P~H0UyA@Ih-(_StQF+jE@XTh(Qm?R@GM^RqFcLhacG)55z=;E3lE#%LeQwoSmX zUJJ$_QyU07f3?nh%pBC2w$`~bzcA;~qpStyR`mw-?qad#o5i^eJl;9JFXnGW9*Dxe zO0e*a4R~58iPZ~~K3!^EGvRW+*vvnxpGAXJlKV2TTM{9LAW+@dhH7hV=jr@%IT6!x z)9HLR5jd?~1n=8svswCfB-y#V4F-tQ*Jjl=knddHwsf=pF%e7O-exqXs!Wu3F&w^{ zO>6^&ElcfrW36lhQMg>P)Km9cBvKorJxi)Nh)4lY{mB?v?{#n2^F zJY>q!Awx4+M^JF^(oUshEOd^crfR)-@!+*nX%}fw5q^JEPbcf{bdl&#+9?lV`KKp+ z-+QM!o#Q;kQ#{503DP+|=D&`BO1;1v;6E2YXI({$ee}|F78Kq9*M>8z0FxaGVOPJ) z(gX4&$~xF|3@^@bQL6i3m^3t?1!J5v?gEK3TpEU{!m?86!n zm*DlWTVTGQOdi^sZEl{3g&=rCOh${U!j$&18;foxr=wYGU~wZjt>(ql8{~OZmQ^(C zWiFb@j+x5ZEaUmRHGY2Y4YChQzJz{W;QCh<@-RK*Y?fUyCgwfUo{40&SX>IQ1f~rd z9vuYZk5_C2D`n7S*)fd8xcOSJVcoUJl`t+O@`qKTw^@i?VwSwd_m%M({HYA3`2Ns2` zAp@2JJG4wF-Eq#LwHLevgGJo(Pp`A9RVzsDS2Zth+gm8F1)&{7w{{bpv@hjugDVIV zrFR!piOCMhqAbfIC3riRtk+6okhJ-P!#MMGiTns3AXMwpN$x8ySby-`>@Lf`%#|Q% zSj__$YQa!Xf)K`$uRqD0z4bYO668k=>d*!}-0ilYKNTQ3)q*UF7&r0>05c4?RE(My zbT`6X7&?X^rK9P&;^~E8umnvO6&i-l2*fN4m7trZ;tum2OfST*u}9Q@UBghQf!E3V z!c!aEoG`HkYC(E)l9(&m>Fhr}7pX^RH!0Z26IK(miU!Fc=14;X%725N)PdhV0S{2KNBH zfeYE}xYdx3JwexQ!L-mZbnVh><8il4GFgl|hXl6k(^P1CqHkbdUoaTMxHGwz%=v0UAF{jwUe|GF zFq>wh-mo_)=lz7X8=Co!&*E;FRMMUAeJDa-pmLxH%j_~U)UFF2iLX~eAplkWS1 z@8bqBcbd|j@Cwq@#A{$;*VA13YcqJZ1+~`hfT7#4w|i@vI_o!l`QsL(yXWv9G6lkc m^C2Art%>#uYC2Nx-|`EtCT#bc(REh<0000FN2|nen+92>}5CQ87_5acQw}(V?NC000000000000000+*pzN00009 za7bBm000V|000V|0Vb6__5c6@gGod|R7i>K)Uj&AFc1b{Z}OU}2i(xF)VlvKWD=$(Er6uYr)x8T)j#up7%)sewR;g8#wrN%rX?%kjJ+Lxv0)@^4b; zi+{dPrHu7emFN0oBqW|kfV-?3$1eM&NX&ZJp8u{Nm=;bq1)Y`xf?mVOo?k^}nN@|; zpbZWa5dbwh#@0jY2q3#koMtf#RcJL4S(x2aQCGh2w%`T8qqzVwr2v##O`z^&U3GKF zOq`x3f@k7FkU)sLw1fzNZ@FUyxERZ_Sr@;L3tkk%FxfjdcKmBEUfFdW7M<^}dv*jrQ(da)B-WO|Vp zVa}QSsdR38+H+4mYlOT&DfHa#18m#Vyj+uU)aV*$>2*E^nV#1@?iJfcOt+QvF$Ty$<{&-H zNVafXvu#w+V$pEHK@2sRPq@vPg~xQUfF+wVr{A{GS$Y`lpa1Wtl8?_eFM$uF7+{H){vu3u0fvee&&SI({LubSW90$g|?edGLF?_|t{H0M<`WWRgKe}%S07I!$4@397bM7tm9SdK1G(V3#KFj*@HMt zoYZC)l94Z|Bx}{qIl(N?n*|fSEA-4kVz?a((5wy_kSU*LT;w8h?vOFmG<$Y_#E0*+ z7#m&;RjUr&%$m1q4#c|S#NE3GZC*#NzcDNkbvQ^7cLD=l>8^4LP{VUz@K^@VoiqLr z?Vpx!qhN`HiTk~zt1D>g1X6p&!Y=ryf204>A7^#OBu3va3;+NC07*qoM6N<$f`HR6 AfB*mh diff --git a/graphics/object_events/pics/pokemon/followers/nidorino.png b/graphics/object_events/pics/pokemon/followers/nidorino.png deleted file mode 100644 index ee64197051ec1f52b3a041fe34920531bd6c1fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 692 zcmV;l0!#ggP)6v3be4840nm!AUt$0RaJtVVT*P@c;k-000000000000000TK)G?2nFcbh_Z+Jar=?`e7DqF>tv2sO{ z-;v?&rVJ?Ho2ZT+#M>#6z-(2hFz;9P0l_v1nxX1YDKAo#&#~Xb&rS%r$35)pf=Cj*J~BIJqj)>BhzdivoN4{z3bp@yVEZ zxT8S<%MPfE>#lUdu`&4fqJZK((Nj7f^*N=@nWkn*D$wE8K8P<1ca`+B$Hq8>&7mpY z5An_iJ;mA9HF#!$Z5o4kSh$Mqr`^sM&-jSXZ~f4rv)&Qm=c+2tW(RTO?jmA7fS)eJ zrry9^h>v(HmZn9W?Sy!3&yyC=UfHnU(AZs7^=YlXeO7ZOvCn+QL;XE(?6(DI>cbKw zz_lfv>jLZ+QPqaICF^d$PFOOYYs=PMLBIaBtf7GZr`s5cx*q(L86Hd-KWgtwq~dS?pCO!CaWrU_bh1!(e=Z!4Mg1<>-i zt$JP;M8{2J4-m9TNM%0!Z^2HdsqA+YzJ1Mu@JT;UnBah6zv54}9)4<&HXrRdI54^7 aU&L?1d~RSvL054A0000FN2ovB6K(Z7q+U>FDRXDH3!%WbEta*M-lDfNm) z3RY>MlTfl&8gq$us6woj!zHD@#hbK*1{_5}>Ut`5NIAGmO6ngVTyb&`{2zRi=6&;~ zCWjzyd4|HLKfd2QPXV&YCYx-s$tId=<$V9s2wkY+K?Qm#{+kC7dgoY>aubZlf|O!E z&o6{@gDye3g=XJUG>g6Whr78wj0@a`af1TF>?0SrX<@ss;Gw2pO0)FFs@BKvq!cS7 z<-+8(9p!Hrkbaw-#JqKoVxjp|#)JFZhB4>KIaS;{qH&uBIKC#A@Tjm~rUjuzn{M>j zFXT3ixrVW&K5zD0kZe*=Zp=Q-zBFjyra^BTqG;UfLZWL}v{ZeYD~Ovsu{U>K;JFtS ztnJY+$Qt=mOL8mGIkkAP^!eeP9TO5A%$1XgIp3v$$P0X#9d**i7#pgY=(=(DwCp~* zS}X#y=)E-B#V8+nPaNmj8NCQBSHuTwfxJ=0;@;pU4p&e^57!qd?4SO6dtDudfxd5i zQ!rn!Tsf}eeTWLC#9vvVdYB*Mfr&<8ffjmQsMNgOvmdh~qq6>#cxSnKpcdFg{Xk9D zT0dFA;yZDN6>5jzT9%!E75=1c2Bw9sjozOq9gzkSFQ&>dw*U#;f-PVt0c87Tg(MKw z8|0AeqJe240yHJBw4N9iHn@BNvLRtup`YAo#XlrQ9{*KNL7G`>#X_0YB>DifyIXM6T00000000000000000000S`>Fh00009 za7bBm000XU000XU0RWnu7ytkQph-kQR7i>K)xmDtAQ%U5B=Z81r@p|n!)~^)7)L52 z=JVcQ0)6E;sa5&_F!$?yn)9X$^D^c-CN zpG*HSU;7z@+St$8I`WY*-CZ;-mR!kVf@$)IVv=VI^msNIInFE_Rd@<%k{44{tjipK zh=Fl}aKVJm6QT~}f>jEf(4MSgckXzBiGj=oSvQ>mA_hDaqOihy!~v9+XB&Dpp#ep_ zWg$YSn&>s~G-7Ltv%5Fi;`)CU%d-hN#=wB-WByiitk`qlTC>8jTHbeB<64u&Hjq~`d`!|}6Y;zr-E6BHh2VE||2xUZSw_;5=> zTXibg)@e~Tfz=0D^D-noIOqI|0WO+arx7|O*JFV? z7h?Heyfm)22bAD?V?J(Ac`;`F$|?p~cicgcpNGqUfoA^8^AtCAM`C(ac0RaJ#VG%hoN%7%H+1cR$0000000000_|@*h00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Klrd}DKp2L<&9XOdO}hzVhv22538i!q z_29TmX$fRjK{1_-p_U05WH+(Ss)vLYYB`IYhFG~wp&4AXxkHW7kLum&?sN@R3hB_r z-*S5V-aW5mkN}pmoaHR%UV|}Pa(HyV{BH*|%c|40Y1Ptlc5xwcHW~YOsa=B>6kqC-Qh2dR-yN=*6Uf2z!uqrEtTv2zO2MsTBH<9j4^~{xK0Mw@kR9 z7HpWcsXv%XVZmCXOcp6@`zKu`FHjaa_+h2+4;eA#%^;RoPD#JK;%5xHKw3QRr8XOttJe-2N- zyG2u9=Q_qpAvv&MLQe>DUd$dO!t+E3n#Xv77-gJh@%URs2oKg`F4Yqu#zF|t z*MAN%{xU1ECmOWF8>4E@^jC4pSr$@ZY3m6--+C^DjVR_>T?%{UZI=rHIuW`oZwLJu z}em@isaWFB)fA zNQIsEz5L2i!xcYpb|4Yj`$9-&(xPmSVnUny!T8}sekx)a8vk@NO!K7332bz=4piKgG|1IvcwDtohotg4q hn1F`v;N|?^`31)AOLz^(^Jf46002ovPDHLkV1j5WRTKaK diff --git a/graphics/object_events/pics/pokemon/followers/noctowl.png b/graphics/object_events/pics/pokemon/followers/noctowl.png deleted file mode 100644 index e7fc38c3d95c4c353c166148ca5a7b1cab65c5e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)w!QCZ=ssc9)G(V=n4adGMC`Qh22VM#fGVNn4A0jV)D6#Pja00009 za7bBm000XU000XU0RWnu7ytkR&`Cr=R7i>Kma&T*Hx$N&np7Fkfbl}&V@KS=z@DZ{ zo8q|6#E_7y?yrb(Y}^EHs;Ra}k#y-&hb%D!2DWhR1Wr|oykWg@5!f5Kca^87C$09f zXS+|-%+BcPec$grt!9MyfBg4`oaT2rd#2y9FwMU`u&|ke9_TV}{KR~En*n-mY8NAH(hIb=3v``fqOs<C%n5sA1eLQ?)RL~Cyx ziAsN6N5?G+gn!+WN2d<;n@qqoulm0K#hFlp>L?QN5RqGLZ!p2rpP^Dlg( zoQoA2li+*w4?rD|Tx=IUa7l7M4$HB4WGf zz>HpCG_X6!P4-?w$L9*`Rb*R#+_^Qew1Q7Za)3l)_tZJlxXmt-h^AtfZ}w$&$E)~t zC~{wE5fQ~u{||SV8v7irc!716PtL#H7bqZYI>=s;smR$d5zE7JC=ulXH@*eDfMwny zOIjQdD8Qslqe=7o=?{z%Gz-`)baO}`|1>#3c*`h8Ubz1a5U%)G@-x(xs g|Im651^RgT2mh*D-Pz^A&Hw-a07*qoM6N<$f^Cct00000 diff --git a/graphics/object_events/pics/pokemon/followers/nosepass.png b/graphics/object_events/pics/pokemon/followers/nosepass.png deleted file mode 100644 index c407b389206da75b8c0f9e7a0b695b97b2bb3216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP)7m000000000000000RdY%{00009 za7bBm000XU000XU0RWnu7ytkQH%UZ6R7i>KmA#MCFc`*@F5K9+CmpU?NGEg~>TOJ@ zNH?>xWpO^X4kQv&jRbOU3qw?AJBFzBN~hzW!>;3x1lkS=iJ|ZIdmra{9Lpa;aH&gO z>QetrF~(MZ!vKB1Az#(J-kjnc=i5`<@^Ns2&j)bMPw{%k5`V1`vrBZb(sGwWk7C@ zu3`X@dq){J`F`>4DQ~QyW_w{BmMFLTBJ8-+VV}ku*4jM=`*_Er);r2!^>DpdVDBJl zb^}~w%x)Vq2BMg8j<2>@7mh5&dw_VrohKOrH^ZasY@n3w*i nMmTtYhOKk@@B#b1@$c#vnAR%3PJjP`00000NkvXXu0mjf#RocE diff --git a/graphics/object_events/pics/pokemon/followers/numel.png b/graphics/object_events/pics/pokemon/followers/numel.png deleted file mode 100644 index 96307f1364bc85bcb91c0a7512767150efa575a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmV-W1F!svP)K)jw<7KokJ*8v@qQ#e~q1cGA?Li@An| z8cHGl0wn}GcW_H-Af04n8-(-kBHQ1fi+v4bDj@RM}!N$*Z40G6?gW&9_B_)oL4{r6ZYmHuFj@?_0^ra^9BPNy2IY(rSe zwoT7Ljt;CWgZf0yry6X--5vNO(>&qTg#jscg9E*G?*!Bn}9l!ZB^>A;sEn-V~50|4Vqn{$%LxINAANdsRgn@%|)o2m^j%!X;PQ3i!4V8 zjfz}AGN>Fth!O=PYXfQzT)r+!>E=^ldk%Iye3)SXj`*Z+CZ1ZdK@AhT+nc-dWuclU z>|-1r`;cLv?eIy5&p@hk?~G3){B`y5HGGifuw?PX@f@f5aPHi~q6rYLt-`IiK+>j8 zY0$OL3Qu9dN->Yt9kWWQS-m|^Xv}?g(S#!yM%*LG4gK67xFZUCFq$>hVF9OG_5GUD z%`j;8U=hN2=}B(r=8$5O_KNiVdWyq@uJ8C4-lZs@7`!P$e*Gh{j3hU7e>lLl*DDq~ z>nRRf>Uu+?M%}o;%!@Zm>uh+C;(WR_{o7kiY)t9wT~r+v`1lKVfA&QJ)dBA0H*kKE z?vw9(WWum`*;Vr}Ph0x^Q(Lq^akx|D6MKVdWS}++cN6AHCc*p)4Y$7N`jsv2Sn;iT zbUUP$VLswD9%DR>Z((oL4akUy0`7BNf62sYHVGZ?ZmlSxnDZM3V2r1X@jr1zK*rO6 zd|o7+BK=;AT`mfYXBOL~-Nxlt#I~}`H*hv7m+SEejj`hw;;W#I**>zgcn?PiAgeA4 z0(){?E~CT~xS<2NK;@(@6+kHd>>vbgMxtPgR1m75#3}B2vPIFwi4jrC)U>IgrQg6m ajr|SB5)U{l>!t?)00006Gi9w-pG3m*9Nii9DQ7Hfb00000?=$W?00009 za7bBm000XU000XU0RWnu7ytkP=1D|BR7i>KlRrVoZJI@R8Hkvr(0d+{zvq7yF*zxT;K&vQ+y zY1`S(cK&gSS5j6;zwp0qNx670IznEnLi4sI<>KvKLpTmt*)Exj^M;(SPec*2s@-z* zvz>;Vo4co?0bpgjrC}2(SU@ zGsK8%j99qfXq;+#s{e33(xt zS1IceGYlm>!vs?=bA!wd?3sk@mE}z7ETEx;XN0^70f4z-l}wJxa;7w?eQYFrxsd0ZdMW%gt;A4| zIOiTwy+l7vCowd7obB{R&R8hC!kShigNNtbBjQ{EdS>X0dcnoQBQIEE7X;}2(!RSf z7u-k;a8?7lxp#)&p=!6+*KJYMJX`z>*a5iE^ve1=@c&`)hw}~Y+A^sEbtuUI0000< KMNUMnLSTZP%ok|@ diff --git a/graphics/object_events/pics/pokemon/followers/octillery.png b/graphics/object_events/pics/pokemon/followers/octillery.png deleted file mode 100644 index 261f3a46af5582ab4df428f27959c6d84a9a1491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)FN3T*;%nE0RR910000000000000007)bf>00009 za7bBm000XU000XU0RWnu7ytkQDM>^@R7i>Kls}8xFdRTdu|B|cxwSQvgY37PLsEh# zU$LC4ryDF8JRXe&+1sJxEyZiGeV|WSDXFEO6<<1(c4@RE4@vJS{u6{Q<1#Me{~7VS zzbkyxJ^x|wyb!OIqG#p_ncG7Ct*}t>O`E+sPoBCDGk?IR!qN!$K)8MCo)zGEFzVuN z1!hBD5Y|@s==(30hu4C4-AxShA)g8(W%;uYXnO!3m<2Ik$4dEp$VzyJv5s!>w;*^n27s@5;{?p(lgu1BUC5D0it*tDwM3)fE? zD|~bh_bh-5xoLXsR)@SGMELfrYQNl0$db|uGnOm{aj|*mrGIKdJ{2PLVBU+3Tf!=8 zjDpByIf$!o3?4Y-6CsLdP1nL*5hfXt6=NVS{pz2y2dj6>r#ak zZg-Aza|tTPs2rL>3!QmRdrc?a?wHmj)d}2A;4k|0{V43Ri3@WNN5=~Rz_{CKv%Tku z)0Ly)+z0Njr4`m!*~C?9&g2+N%7&4;C&RD}{9=67+Vihm|Ngq^(;x6nD|Bv!<(N&J zVa}0b%;@}@0`PGdJma%B2l8QE1m^8m%F#a> ZKLHA#KTcAMl;8jW002ovPDHLkV1fZhF@pdA diff --git a/graphics/object_events/pics/pokemon/followers/oddish.png b/graphics/object_events/pics/pokemon/followers/oddish.png deleted file mode 100644 index bff7ee3f4edbef0265b9296dd2b8a3481a15ce58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*l1bkD7es2(NmL= zk+G1G(Xnu*rl)7;!A77GOklV6=W3uRXMsm#F#`j)FbFd;%$g&?z`)4o>EamT(fRhu z?ySQGB5V(gIZUi2Ov1%fvV}duPm6Ayub}_HC3dP%!1bz^+2Pw3l=iDG$CX}3O*1%f)8U5L*`(i#bgfRV>68@Fl~}3xB;2I? zZTIWbZZ~>6Zze2TEX;;)9P_NR;=mXy}6UVqkar$%a?Y2fGkTfa;> m`t;$tDf7Q+=IL?O&*Hz}n!38msdf=45ItS}T-G@yGywqYe5yGB diff --git a/graphics/object_events/pics/pokemon/followers/omanyte.png b/graphics/object_events/pics/pokemon/followers/omanyte.png deleted file mode 100644 index c20f2bf69c123d6314df1afef1afeb622409f830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)G`Rtv1w^(F-cJX00000000007@AxX00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>Klrc*yK@^1-7Pd+wNUEtukhKeM$zzMx z2%;!fK1M88Uvi&fenmpUZABEte;}`ZwL(~k%#U*JX5E>&agxf)oGRa(-E(e+or$8g z)>><=@1rcsI?H&~^Q#n}A^u*%JaEBZSum7xw2b)xz8`1c$1#qgt_e_`F!RDZMNAt% z{(Z9VUtfpAK%TF*GERaOhEtu002ovPDHLkV1jj!3sL|8 diff --git a/graphics/object_events/pics/pokemon/followers/omastar.png b/graphics/object_events/pics/pokemon/followers/omastar.png deleted file mode 100644 index 5f32df5ec9050d8124f7dc43740668f76b1572d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 zcmV-L1G@Z)P)Kl|5_QKp4jlG#=Ump^GLLBQU6ui#--f zp&vux4wTWL18HifgpjR6O6g><;JheuV!J-H&n*__Uojq)AlBgm)Jb9(s&1NLG;7t4CO%UlrCB@LZ^ zM*h5Gpk~doDdB!*;4qf~34PdwK`(1AJ)2PHFhlCmkWzOZ9p-8b`@0>v=x3k0E)9B^ z@rH0gf7!!jf`>6iK|f&~Jc21&{t5x?!Q;zF(3!-TXA)U53&M#RHt zbeI9y-f%(QH6>UTELp#-Sm(SzsAWKKQNk_^Jwk}5wr!XB=Sfb=B`ZN*P;em*i*E9k zP|90U09jD5ZdU1tAkV@COTjMlgn=D;6PqmF3qiP5Y>J;2=VL-cG8KYlLBScT46QM9 zuw4sw8Ds_X!-owG5+$HGORE)`D`!lI<-|ge#gdaj$=dn!Dqnd-?cy#2P{8l2kAe5$ z*AF3><%;!+VZ2#8mW4J#kQbC3S1Z21zrNkB@%~^{e2tq2EgyV)MCXsULm^l|#i{J! zCa@8jl32DdmYj$VK3)AZ5!!d8;&shD-$=gPTkq~}Vkwv@HkAVsSW^qy4_W`o*CR1NX!0XBL$7 zq)DKM&XoiH3@`;2t{lZ87B6tUoYh*(Ci9FYURpTE$q`gP=zE~F(~@5LcIjq=TOQ|I?B>Lm%Wtow0k21G~Q)1SL{0~HQ0erKLplIlF;r0 z0H~DLZA!)r7;WF&f#{PqzmUD%uuw07f-W6v8pkwIi;fVbvAl8zxEbvm(Kn5$!O4%f zoy$XQ1Dj=fM`=ToYhwYiq@CiY_23x`P{a)-WJO=+(NNn!X#syW^w;n1DI+O6Z2-H$ zGiCs$pL7ar?)^My7iiC}c=?|E9t(Gt%NdY)#@x}q?SH#yJ#=$msBK_v1JS6HQE3R! zx;Ui}Fd6rbO7Zds(Yjiv_u){xz|tOru}dV-<|%2Wc&ZkSSH@U6+Dj^lR+_BtgQ2#8 zth0fojAaG%2V+`iXS*Uy*#x`;P(8L>7pb24p|*k21y-YZQGgbdtlf?pfH~(TVoqSZ z9ym+CmV%o`sR9$Gz)HH?5e==Xffh0V$cxe3CKgAuNjH*U>F-1T8UEXrR%w zse>Di%8ORsb#{3B_8R@bm;zx-SgtFm^R=opTv4TR2#gNtw^j55LlDBue7t1f3t7Py z@i`|DfUi060lPi`_y#ry*UT3-<9)3M0Gx;xFuCHgh5)?T^%*EPdomf3y-`Iq9V%>J zEqpaE(gM6yiS=el#O4+|U%p_6r<5_cz6cv5yH(DBD=Q+7-J2wt*|HgUn|EgUb{REq zAZF|d0(Sj#gutHQRFh+rXNyLr<6;z6N2NLE3lOzO%*)G@1yo0VmLvs$!;Wk+4vry8 z`zMBL2Oydc(rI&ShG7AkLoA+$4qPqm+q~#A;INdfYS5Co3l#k0gIJ|3 zkf*gG%Kgfstt(EsXT|*#0ZPG0mn& t{1r_aOhB1G%);`>E58SzpyWUL`~@&ZLL1sDV=Vvx002ovPDHLkV1i95&UgR- diff --git a/graphics/object_events/pics/pokemon/followers/pachirisu.png b/graphics/object_events/pics/pokemon/followers/pachirisu.png deleted file mode 100644 index 7d65105aa56979f51ff133072e457060fb3f66b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)FN2gvC&ysc>n+a000000000000000Y)sBX00009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K(mhXuKo|$`8@Pq7A3+lrSCo{Ep)xq3 z0+y~8Vw}1dJZ4J|Rzi50NEGY!Q;Mxp?(9*M#!3DI$?u-Khr0s+`t<43=O0Db%9%?`1f=CFyq*EwW;jN&6Zhj76eQK+5}tU zu-t8!;lOd-?SUA7Ex?#=K--SA%TV9#&$;Jr7L;JO*SS8$(Xr0AO(cbIJdQAay^FH% zhOF1QI$6w*biU!cJfwc(mPvxcL?M~Z@n!*eLRE*wu{@k`EQW*pMj?gH@h1Li<+mHu zp0#aD%7o|Dppx=pyC2r;9jD2eVlT*D}p@>Uf_`AggDu^geYJwOnmUx+-azC>PA z7neCn+8@kAMM7T?0Jo3Kkt&axV*4gtpP;4=Q{SW}SEB)(~QBhg3xxt}Pp%D=g`T6R+WQ;Y+#Rl9Kbbz zaN0wiL_k0aNM%=@QQhCLJ5jVP-jR&krvduDh~npT_x=8OJRX%wjWp6oBaJlDNF$9j z(nuqXG}1^TjWp8#vBuEe#jglmk_SpBjFZHFw#LYdz4LFVeR@eA=uSRoJ2Q@n59FUUSbsIuI5(i8K9b z!qDG{86%1J1wcGcgS_zk7-=^AgXVuk1y15jHz(|hEbcy;1E50ofsi=CfTuN76?bv? zle@=0>#n%KNt_wf?aF+V!6d$AR{($(ssiLUNrRzU`+Qxayei_U^iM8If&5tAJr)j- z#HnTt+tygS5;X(hBSI zaz@uP7!RiUEAoEGHk7|52D{YZ@`-Lw z=yGNWBQ#v#B;K#k#PW|szaCw|7{0Yjh!tb-LcksJ-!J$cwyyluuq%X+MR;F#HH5Jv z<`Bvv&MI{4*~E`06Gv)P1>^Xq|0IfKFMoMxJQN!22lV+y?&UXp2iC(`SzacjTUJ{4 zfri4XeZb+-43q_&RcPZ`Wn!Xo6j{L-E?xb5M*#*ixF9sx59sq-3fUD5K-XBE7I=p! zq$^(s;Ro`7cS$ElJ`r$Mq3xLmlk(^9MpiI}OLS=EafRHxcVd4fFxU?m@ErBQ1xQH{ zW0Q21w%$|j%W@WkJo}k3dV36Ah%V?QiI3i_6~25 z1w7}9H~_VX%jD``9+4KE<8`l{=lGNM%P)4X_3m?=RcH$2PUwC9_U(uY#_`lnXa980 zxpqvl|61zu25ErlbN&?(u5-*G4e&P_03pvsj)1pc?tXKvXK|cWsJlX#!Q&zkS1^uC zs~Ad|^t3vPRZH@MTez%8go1dz&|x!v(xi_Q?w+Y|8iJ69jQ*DGC-c~3=rL(z3*8gN{i?M$mHI@_x( z6jkL|4V4grA$}4zn6B^inoj0MCUYa(Y!WMMP;!R&Hn$5n8|Xv2j80hv>M&2ga<2xP zw33}-mE+}>1)+758hilgLD_@D)T^}(cJ{C>e&mwKo*-0h2l?ggF-2c$b?;<_3wa3)ir zlbmn{lXxJgdWu&n;evzdI)Ahh#-MyO(?T3)2GiR92f$eP!(vt4LA@74B`$fVhY$=n z0$jjUn$Rh(Ic$z&I?2N;cp?v^enPJ_+%I5$yOyHG%h3-PY*a5*HwW2a=SjI!0Qtj{E-B z)`fVxwjJWWK?HSOUo2JsJarh}Z$eU=dN|;MfGIj3>$o;UJ8czLu>-9MUN?|aLxsf z*dXZpD+exuMf$peaRYH{osVe%j{63gv}Q~6#sZ-ia8ba(Aa0pfRk%^G(8_=d0}gtz z0J!Vj27o0%Tsz59DK6j@0f*2*#O$NrFujF8jx{V_grBBN2LbQ4{J}5XrmxCP{73j z2hBIgNOzYYN*I_X%2v53Yx`rvB7>opRa%$i(-RywzT1Wle_t-N;Na! z!hi#%XBQDNV=hrt18Hs!75o2Ai4FPz`+W5ubAkZWAlhy|H`nl{xhe`^n#F*N0-lZY z8&q3~n`03Tr17~W|E$>HAYk9hoGzF`%phHz>EZ?#!h2aJ2o~3UE)IC+V+onFaRDM4 zNaN#yE1|*jfESyF3_`lLHTI>5|CM0M=i-28&Ggrc;tmoTz_XJ=gBMRi;Q;KeqD#bn u?BI+?1dQ+fG7ZEnl7IFptzNB{OXz<>>8ON(;jsDu0000FN2YF-h5BaR2}S0000000000000005Xc-a00009 za7bBm000XU000XU0RWnu7ytkP=Sf6CR7i>KlCf^vFc5~hkZ;f-83|bI>;QR$&IS$2 z=q5)TZatMQL+6!&T?{;BgcjW1m_}8n6dPRCrHB<9BSQ{ zNBrK!kxQn^xQS2MM1jWv4g&EYOpIHySKYxQp1Xc3s*xc!lx`F9><9yg#1x-|GvslY zf`hcZL-F-K#$pf{r!$cf-I3Uo5ImdEfPMV5g$?j&v*)VKZ;Wq%@Xeed8fxoVM^@mE zq_tCn+W4PrLt^~^_Xu1~iyd#Z<=W;ATHJN}=8zhUY$j%=70Bz>FN0a0RgEoNdN!<000000000000000=K*II00009 za7bBm000XU000XU0RWnu7ytkQgh@m}R7i>Kl|75&Fc5}SxKSC{UD%Yy5M1vScU{hB z$SK_wNwM7)QIXOFgzEhRUY$WGogudn{mL7CSdN9A6vuU$%8xYjzB6N!Aasv=+`~sw zmRI?oV@>zVYkVWha(R_e@=59G3g3``^g(va_GEjy!Z#$=bU1L#2z}oUk7B+daoYe+ zcCX86zAlkGLHfl&F}sytEs zVM=v9&TeJfp+wJ(P5*W3vSUWLg@K_X+MY)lN@k|y?V%oHtX(^MpB=L~c{Fl#qtBxZ z2WF{Le4N2LcOW=-{xO?;>$!VvpGO&e7&aw-XG1==uARBRjoBQzj`Xaa;MNWO79=kD zs6Wjcp}M<`7(NN2^h|4gR{pI8E<3|VJJP(ZM;OmF?1b*SHx@HOMOLb#)=G%X8K%N= zQ>M#qXVB4hub1yr|z_7%!|~LD<2t5RTDGX+3+|>vQ8JI+o`C z2Wif5K>Q`}+Vpqo*a?0uetuh2!Wjsb0|&#TvJ+~hR^E^}Zi)j?`A#HLN+>T^zAMI+ zYVt5a0)l0lkrnd>k`cp;$~A!xBqd6zf{TMQRF&nt&! zl}o&0PB01VN^qul3Xv}w?hIvanK!v@Su&7sWG6@%Ye>~#R$m%G1WR1mucI?SwS)=N zY$=@}&SY&EdaiwajU-P(IpfHIKKaV38x4 zqi`JrRbV`7*eAIAkYJ=S$NffXE8gp&{_Zkj!|4PyOo8W#ivJOR0nq89c(@3#iU0rr M07*qoM6N<$g5#B09smFU diff --git a/graphics/object_events/pics/pokemon/followers/pelipper.png b/graphics/object_events/pics/pokemon/followers/pelipper.png deleted file mode 100644 index b4097c06c22ce1d3c7f574e5552d4a416d19180a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmVFN2Ak&yub0YPbz;n7KnX&H%$nK4OmFh2US00009 za7bBm000XU000XU0RWnu7ytkRY)M2xR7i>KmAz}*Kp4ga0T0SxMB`HY2Q<(Qi7}>- zt#EaO1{YIQN+-1#BRsTV0t(3>D8hL$#oaQ?wbPn&s5@jz29t(RC>jcd&_5sqkHG{S zl0iM)hb)2#5#+q$j)w0!^gFNXd}k59HN+m8=ngf#bxCD-V2 z`=k|AERbw1A#3IGCD-T^iHU&;pk0&(1M&8KEVl zjpt7g(ZurVhz`ij)OTm#Oc>PPeXG}a93Ko$WPTXg!T^N^cuYjMlPB)ltF-B+=k0a| zjutbhG~RoSx5i*4Vo`op0|gK zoJwwSB603ssQ?3j$8<$`7Qm!LCam2zMB=u1NgH}l_nhcKYU;)8UPc!N6GWsZK%)WT z+bOHi2!P0syb&fYA%4u6ff+SOG*fypqwC72i-{ytZJ6)|RL)EsC=u;1fR zJU&;g6s-xDpju}y%?Kw4=L3xu+m#G2NBi~I)Q)s2dYY{}; zz;sFoz(FP8dbUG}TJvGzXNahL`UW*X?Q{qLg(fxlA|lG1Na(c^ev;DKW#D>(5p;y?_v zK7X8^J284Vqb&5?lK+r3U_|VlPunMMj~cjbf0b`4B{If|^`fGLiOJr2V%kc~1T)?h?*x!cNiG0{g%=Y~?$VWBULtGl(eBjmH-N+y?PlKdL2@CJ-% ztYh|nBGh9BBylT?&%?*Sz~)yURmbDvZ%)K2s`EvhC{{wFwL=WPN>>yoy0q{_!^x6+ kcJB)L21>@)&$*fU1Ixed$&Iw|UjP6A07*qoM6N<$f~g|XfB*mh diff --git a/graphics/object_events/pics/pokemon/followers/persian.png b/graphics/object_events/pics/pokemon/followers/persian.png deleted file mode 100644 index 4ec83aea565c1bc8ae09d9bfaf72a42c249cd621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 717 zcmV;;0y6!HP)En`N64q@!5fqX;GnpX+b$L000000000000000eBX&_00009 za7bBm000XU000XU0RWnu7ytkQLrFwIR7i>Km9fs#Fc8Nhd*lTeqZla>U7~o11sg)5 zkHC(Qy3!yyjE!6Q{|4yOx6zHU%O}*A!zN9A4sz)bCb&vff3kh|zw@1&W&iD8HCZq1 zP)5jMmi5npNHX8AmrcPrj3jeZ%cj5~Vuyk+TqD6|4kLbccDL@nQhbly4DbY@yUOM% zzQ@Yp2A3GzCpet*9VV;U?oyC8DtikHou~NE#(RjUFD0rj5PJ(?|0c-^r)0KTcYqe% z1%#z3xOG~Qh}q=mGX4`QGF!?Wprh8#c)lL-N{_#$@t?Q~!^#RsH56HjeL_H&;MZR- z%J(Mb5MXt7ZMQn-DbAFWtY`*=IVLGDOw8fL>fwap$77!2Uy{kCN37tb_}8*Ef!z&r zlEH&J@P!75IpapgP2fs6@p~slNOvWCR6Mdm&VwZO%^d%>cZs?{eY11oJVVR*bQ}(d0(kGfakFUtkr{8Y%fpK#PL&A zu7P)Xn%k&ewQ==L){R}vLaLTABVZoq%|!&za{8vtUz&H zXI30veq*2>$?o7Yw&La@r^^M)o1Fjd^RL)X>ERSMf4=7^00000NkvXXu0mjfjC)Go diff --git a/graphics/object_events/pics/pokemon/followers/phanpy.png b/graphics/object_events/pics/pokemon/followers/phanpy.png deleted file mode 100644 index c3f9fb8f3bfdc2b059f5db81af0507ae2fc033bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsA!qF^W@D= zM#jL#jWZP$fByX0x$)vfLqnh{G*B1Dp9B=*EbxddW?o@Ehdg**1G^}Kmk&6)Yu z(dd7d4x86M_g8Nbm^1|hOuSEd&q!U^eX}mVC+7T_7Yc&LidQ01vu{px%e0H;6u$QF zm}r#T=cU{+rHKm9E+5HwcK@@>Vy??JWlJw!-IXJIf0s?e=I)!mHapt9)+hb?Yg)Ff z<+6Tq*{+N7$M$sDohyqz&e47NaJK>T3hPZLf}I!N`)>38F;AG_vjaN~@)?dhobjs+ zmbGi&)A?Cs$C)Xf0>A6-DIE#!J$+n#Dt)|c-p(6k%K5hY zL-&068};$io8XMMkLS)3N~!2Nu}tjOz5QJ4TJ^T=(@%ZjZTY+8xWw(svV}L)BpNRC pJi4v9B0>D>jgMc~EbaS$k^istmK4VlhBu%f_jL7hS?83{1OUv>$5j9T diff --git a/graphics/object_events/pics/pokemon/followers/phione.png b/graphics/object_events/pics/pokemon/followers/phione.png deleted file mode 100644 index 9ee449b5409cc4dc749ba0a06415d16eb98af416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)FN1_q45!Mu>b%7000000000000000;JQ0M00009 za7bBm000ie000ie0hKEb8vpK)In>5Fcb%H0|l=Jre*ymyRFc!uv><& zVsDOWueHodKfo@%NgGP~4f-vYxT<-DghCnY;Jf|u*Y`|B9jC9p`s(Zd)a2FfM{59~ z)sGLLPgXnBv-pnflbG3ksLUoWVOg%R*AA}yP_3;7W_He*5E1sNMEzY({gcf={m5j( z>98yWcFfTO`2u3@Sqn`x`&n?=HwaZw4Ah{;Xv-k+1$wXaS$xSij0`#{ceiu!4 zW7ROyEsl-d>$L?#ZU@#4G5gyyLQ=Y)+a1 zS2qLe8y4RHduBE;QGvmQxCpKWFb`WB;EYDF7+LJAhRDDg4`2@vN>J=(pei?CO=pSr zX%J;c%kz-sdam5yeFQM>vevX)3ex#9gRGtCZl&j4!vGSWrgJT4K5cWdU5@oX6DhIl z9S=Vu+MPiF(tg*_PlgcDRL?=nH*@q+Ih*tg_jic5{mj?Y5&e6s@d zU)U6QV7=+L85*ce@6FvjMMvTW_*Y!l;1Lff4#~|c_|y6UlnKUX(5gUz00000NkvXX Hu0mjfaX7a?gDV{m26n!D`Sa(^Oh-pYpjtR^WyvuDaySb-B8wRqxP?KOkzv*x2?hp6 zcTX3`5RcBcSN3}!b`W9zAYCPUr+LBb3;P{d+}qPGKK=7iNyWR>tTD&ww!>W3kNX9B z+~d>^>g=sQ=dJPO(+Ad`9Z#h>YCaX+KQPgyL(#d7N75)ooS}Nsf`2Kuo~s#UmA^{0 z{2E<)<=eenf#VB<9dg$wUn{t-w`3c)!FKnR5z?#UjMGI+qV6@ znSA6#$Zw-pRz?m-_+LC{K63h!=90Wgw^%J+KNq=wQFlq6kXXcmR|T;rEOZ65)7|bq z`Ns1(_~`F@-!hMR_Eo(t2{fO$KL5v^rz~HaK2{XZJ3B|RRQNvkf!7bR z+phl5apKOT=SGoT*VxjE8J{pt+854LXSh80m+{~0HOz5YSKqt!=}iI!x~Hq3%Q~lo FCIBEw%W41s diff --git a/graphics/object_events/pics/pokemon/followers/pidgeot.png b/graphics/object_events/pics/pokemon/followers/pidgeot.png deleted file mode 100644 index cdcdce3cdd81eb872d5065201498aebbdb7f3727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1177 zcmV;K1ZMk*P)G|=|arwb9Q8^jmadF8>A)%q6G2&_w00009 za7bBm000V|000V|0Vb6__5c6`4@pEpR7i=vmN9GOMi_=w2(FoC$#uK9y)F`N1pAK+zfSr!7$C4WH1Ori41bXmkPxDi+CIA*aBy7gFTQrbnpkRtY$sZwM# z-^^&_i!U6(nZ}Yv`kwcFzZuUujvRLJd%CDz@H?nZ{r z`-Whl?rj}k=lL5Of!2dN!0v6G_ur}~=oA#T*Y7Ll{XFaSdX`EH0IC3B6beC^2Bge5 zDm7r#Q7r3o&MlP}>%pbEtNxe6WTle#w z0a-;4`!gOSa7{F)Qt_Hk{nR0YSC~FlLQwo4y{$?9-esS3WyjB2&=S(|7ClG-E zth3tJ5s?u%LIG*!mE!9ug*VpytiE=-TW3=Dvzz1l0cXzyV2`PY2q~naipYpSaWNs@ zN&yDfdz}V!0Vz&&WEGYfi>MC1$POmZ@l8rd(g61fIcXx2iak+(0c&cVi>W(+=&yeE zOQakC;I#yRg9-rf6~ctX(vbixwc>(!m_pTh=Vn5VL%TjIe){9>yM3k{1PmOZSUC`Y z;_-zBP>~S;iPS6=7vfz2Jo=Qs6jL2S#lQP)=TBJlh~gjtKox^1MB)apMlHS)Y^!q;OME`xl%D{64H`g`m<=l#N*rm#xz~f znF3I}gvd%v6`=TDlz4Hb7oWQ?9Yw8T(GG0(6#$OC`bxcDCF2F9>8#QjFG&*_DHpJF zs*~cIfDFGb&FXfgqqZO=qJFD*vl0m%?{06I?(rU`6#J^nE?ovqWN`@woa)pWpLu17 zUKxONWC5tC-zrA4W)&6Nt4j@VON^Icr87>4O=O1)m4N`b;(v`}0i+|-#Ek%8&nOoA zN-k5r)d1#xi}4R3(h)>u6WLN{ERL0fZG9WcqXvd_WB_Q9VvLPq2l>LFm{vyuS}^n^ zijG)Y03tKrpE}Xi!LMO^0)wM=aQuACjbZ^125mlTekpLL1wdpLz=_0?v;fkPP5812 zOdnzbfM?e1Mn5+NAhPyzHP6fw>BuVKxb_|LDPDaL0FgN#7*Q17KZ#~^(E+mVU(o!K rKjpfBboTFW{g+Xs;ll!)$Xxvme`|!V|7a@-00000NkvXXu0mjf8!{AX diff --git a/graphics/object_events/pics/pokemon/followers/pidgeotto.png b/graphics/object_events/pics/pokemon/followers/pidgeotto.png deleted file mode 100644 index cdf9865eba7d3c18059768afe3ca99a4c408394f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmV;B18@9^P)FN35adGj{aq)@a$w?uhA)&#UK>+~)u~8ua0000000000F2s+r00009 za7bBm000V|000V|0Vb6__5c6_21!IgR7i>KmA`A-KorLhZYr7%Z?3kCU1W|JV{7Y} z(HI1of{CE=pW#KtW1*(aR18PBXmBu1O{7H#LXqAd)syarlv7#=B%Si`p!=cs{eIrP zlM#B0w|J?*-fIi2UoaV+Juznq*hKUh`SIy_e{MauC#>PWN@zJg4fcJ3*b=aaCTokZ zOH@0?)HuM4O`7%vf=3o@qDc^2>z$!+jD0W@r{~8wwizZtD^QnT5*eF#5X=W%_YILc zr^YdK1dj2hN6;1UJx%26IXqaj0(hzR*ALopR+!~Qyy>4oS72J`1f`yHieO%K1f-xA zs2xM94*>_8tfe&q3nPF-Bk-_PbF(5ouk?m7^JK}ygL0g~!386b<~;#iEasXK^W2jH zqjIO0Vd58h!6OM%*P<(8omc(*sYYewX~(xES7y-m=EI0QM!F0W0&*RvBPg&|98AFZ5febd_hP^^Wjn< zxHZwR0YKx3C5M92B4b>3ijy^hkQ&FpY3taZ5%9sBiD*mWO~WvZywOnB$VnTbN+!T; zm7<@QmwP7-Ri`+jT%hwKhg|@jw2tY_g`$|4ujBYfg=RdAZagPva+A{#>2I*OqWE}y zeQ2IkPC;aDHo6bRDYlLU5)@whhjO>tBWIibxLF z@ibHfKliHMa^!hSY)!n&-rGxqR^5)|Wp!6w=im41(gp=)A9va0*d)^<+FvKeO!u>O z(djDv^z2)scjfC3ih%a=b5 z4Gn)@44heL$;ilfGSYIQr6f=l8u%jr*aaxWS>O>_%)r1k7lawrrrLgEU|^i%>EamT z(fRi3LBAFQ0fq~00+##}pK7^G*Z;6j=Afctpti&-4kU|4US!#=Fn%IdA!2>b4{!F@gX1{CQ k{PJT`Kgyo5|1;XhkfE`%ZVlHpMNoWty85}Sb4q9e0BA_*>Hq)$ diff --git a/graphics/object_events/pics/pokemon/followers/piloswine.png b/graphics/object_events/pics/pokemon/followers/piloswine.png deleted file mode 100644 index 00942dede2d2e0867ce1b4a9bba04c1ae38a6494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmV-`0)PF9P)4~A~>G_#yL6Ipz000000000000000->Jj<00009 za7bBm000XU000XU0RWnu7ytkP_DMuRR7i>K)V*%oFc1fD4&(#SP!~B;_SK@NYybaWTCa&RY=l{_l1*TntRGWO~JO~U8 zfp)@j!Z_v-$fKT3IWIRLTEVH&&4lp^^7JVhw+V!SRIkCn%MJ3V4OH%61U83qP1msx z3~hEq!@)K8U5>j_Ht;xVoIqfz-PNJnK)Ir;SauDDCbiuXfyVsh2L!HsU}#fyV{Tee zb}Gk>_9+A=85;Aa=lr-f8|nhR58X4UE2(u=iwWbz25v@u`&{KYHM@5H+I!y(lnDLv zS5vzYL*vA5iEA+2BK-Md#q`!s?7j63SabF5&(r;`IjrFQP4B(Gu>ikC|Hy`e_ zkovSmLnrG%DPIXBk+<-@s5Q_1~AqBXMtHxE0lG*_E*e`}@ptapsQK8ouH z=@tmLWaR<4K?@G;q;Bn;R&^S>O>_%)r1c48n{Iv*t)JFfdAax;Tb- zbiSRqG3&5_h->r53!!ndE{ZMtc5CT`vq3IvZ2t<1H*VS{G3k7s4(q2sM4Myvn`#;5AdPxo_97 z2?hPi(O(eHY1qAeT93M6ruBpi8Ap~R@V78_Z~G%&8!q~LVe8XN=NGU$oq44DU&HR+ zJyl&Dm29mG&WQ)Ot{EQK_2svJ@fB0eH%Gr60qUyw@N~oGFlEQ=n_sftF-P3EmG%lK zx>uTIjpe#+f0B)(E*?6#)!@y0C!3DQ|Dr(#D>F5&EsvNUbpF+%jKnqkPx@S&noO_n zXL}#EHh-7@#(xt}dwn|oPNdpWP)G^4CX#fBK000000000000000`(o#H00009 za7bBm000XU000XU0RWnu7ytkQib+I4R7i>K)z5F*Fcb&yT%*g`bpbQ=ae4;XiNQGTFTyv-D!8i~5IS~`(|+(_K0>CxG~TX;F* zZAL$Nj%sPT^FWuQ+2`}Bfpi&2=2skn@r8?R_T5c#LY1aFD>2%drrF<&qgE5w{c&xY z?8SB3Odm&AQ&T1C&g${FnVP1*IY#YXC$xWTB)A!K>I3GeWI@M{X7 z=0vwazuv?EAK}pD5b~M?9ga=x)dO`K_wV2iZf2etwL2abf!?6QGx(nIQ03`1W(;6_ z2~0L^ngp>OPs9q6fxIs*%EdVI^1wvpX%5mb{%|_NDlD5)(klc)@wb7^^CFFsBCE7d?Z;o*Ljrb)_+z^tLP-0#USOBD7w z5Gz-6f-$CQiZUmx?(A0`3SonNKFn}XS}rtt5gvp{!(oRFA6OuUDvw+OHauVtmX%nx zv}NZ8X`0$0Owg+K#jfy0wGh#{UG1Y0000G^qid3mw%d1*lb0Rcg2;jy{dIYDUv0000000000&8mOG00009 za7bBm000XU000XU0RWnu7ytkPQ%OWYR7i>K)ICeXKo|$`3|Rtxis0gWI#h26n#uh^ zt#iIXOF+5^4uT!xOQqT|f_OM3bO?2jDi}gOly~Rg-4pMq0S6)fslWU8-qI4s>C&Z3 zmoEP&ZWy+=8wRMHQj-Ij@w#YpnV@XR_{PUBt7&ec$ z&9q&AW%oqC9=4pY)qiBrGuygB41M)_*m43uJcJ{&b8)ERXHSO!>VnvE!aO>Fs4zPx zEF}hCLImm~!Iqg#4q=v9ObFRA*qcv|Q{`WS{WZ8ay(nycA=K#GMNZTMV~d2etTzLT z-&p!?vUfwMc3Nad{P5K?`xw|p@^MrAE7>c&R=TY&qs8 diff --git a/graphics/object_events/pics/pokemon/followers/plusle.png b/graphics/object_events/pics/pokemon/followers/plusle.png deleted file mode 100644 index 3609cf46f5b2f2c0a90365dc6271daed918d7e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toJYvoO-|<;$Nx zA9kKxnYhz4vQyKMk&*FXVI@!%8faVh>OD}1v%n*=n1O*?7=#%aX3ddcU|@{)ba4#v z=zM#{G5e5#2>XWsi6^UeJS=3J`FO1oVhNpJ?Gi&b-nD9 zpT|kI%Ch~HcdD=a(rS_`xjJ~c-(0Kzsxz(nL(kk`D=j(ub&hS^B}YS)X5DvnbB$ z^S$S0z~ovz`#U#B`9r%8Yo)fGe8;hHulAd@Ee=BO4#wRw%@M9Mme_v!&g4t#XVlwo zUinqD(SPzvfymCiY4IkS%gc@aZtA+R>|xRF_$fDDAJuO%`Y$jyBlT`iO;o7e%An)f zw`RB5Zm84mhP?qrho`Hb%Q~loCIH0L)xiJ& diff --git a/graphics/object_events/pics/pokemon/followers/politoed.png b/graphics/object_events/pics/pokemon/followers/politoed.png deleted file mode 100644 index 0180446b328032a6e3b7a6fcc830bba81b12928f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmVG_%2aq-DX0~Kdr00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Kls||QK^VnX7|23wgbP?)Wp({*G{vzb z>;$)14#K$*B%F=yiN!&RfGk|}0^xG4jW%8(2SN%#A&syJT(P7Ov9yVL0d+bdr8BdC zX1>WKQ9-MGRes;gdvE^?YZ&WU&wBpXDFRiUT~}x9M2WFuO3jk|B|FPkZ?KGJrVdl(-V&M z!|Ag#ie;eA+z?jxY}G=Qv00000n?{iC00009 za7bBm000XU000XU0RWnu7ytkPgh@m}R7i>Kkuht7Kp2Lz?!=U)bn~5jzL)QP@6JxA zRjXF5TD7WVny0gAD4xRk3}f?DHnDEVo?dI{VkYA>K78v+mdLrrSf2id$4a@%e=X=m zdEi+B7O@8q0dQHE3u(L6von}B@`xS+E5<3!fO{_v3%u0>2m~$*`NHC6{rWhZHnR803Pe9$ zX27U_%`WF!Vc~Hu3t{1o(ho5}Vb7=0kW@@q0Wf;#V@%vK54bGknm;AUm)p!vundXl z$9`6D|H>!Cs{SeGP`m(J2+uEL_Xx+9T;OejJ@9?#6W6Ic&T@XIJ9)pD8O@BGO|Y8^ zY{yo?DA|ivjd>ukZCe~LB!=wIM1Laqb5A}lntN(K3;bbp%tz{ZYlDB)Hvmb|;m5a3 QkN^Mx07*qoM6N<$f`G~Bm;e9( diff --git a/graphics/object_events/pics/pokemon/followers/poliwhirl.png b/graphics/object_events/pics/pokemon/followers/poliwhirl.png deleted file mode 100644 index 5b9a3f1fde67aceea73cb9fd806d4b7585b6fc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmV-90>=G`P)Kls`|xKp4h*iRnxQOmTAI1DNANWK#KK z7=gTiTS+Xknt-_01UyD!O$;lOd`ho(E!R6}ql1YC#DNWK-(pjwthOm#niedozFmaS|E0jFN2gvC&ysSpWb40000000000000007y7Bo00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>Kl)I1GKoEz$(#f?KCnmWrQ4+4T_DmgJ zno#DJwNNUf4elW)L3=#JiVmH13S|@uxW6*9>s`OF6J3#1jG_2uc7F5l!?MnHwzHk> z|5zOVnZfLe?^$d!8kK?-md80Eg_Ig*w3$bYc8iKtwk*y@7kbPMfPI4ubm ziy9a*ly&QQ#NwC)Q9-TDa%TjN(;#f*)au!WVHnSXCoEl*K~Dh}QI9$1UAQT7m584~(% zcm#W(dS&LS9;%6~ODND0SrB;J5!uF+4U^rz zmu$bOj?v_u=EyWKB+~pW$8b6k>izO3om>$0eoi{&uRD)>$K;VmW(9_`IF@>D6C;mc zuONp!?3D(vIDGu$Ap)m>R>G_#CQ2_w~NjWJ10000000000S(wS{00009 za7bBm000XU000XU0RWnu7ytkQ9Z5t%R7i>Klrd}DKorMs3J21nMF_lvY#Gx>Z8g<5 zXorA@2ArW zfA9V8-5tl+CN{B&|0Z~%4J5c(vWc-F9@ao@a2;y~=oOA7f^T zFUB}w2VQJ9aq4z5%=5b?=dc5Vg!|$cGmC9%FojMdhv_LXcxZk8#pXBgUP>vJ^;Y}| z&u6`$PtKqp^zoLMH`bKsXI5*)=`BD<&RHElCO~@Y4NE>Rm=yFAqQ4fcQttwQhZ@$o zNC*HvpaP-d0WB!^u&%f?%-smu=*|=@(d;5&0N%;_l7(Vo2w$Q$))kkAQ-1_LdXE&h zwbw#??7fQ-ZxxIS21nf!tQWk}O=q;gZ=>OizG{!fRz99&c;J3K{jTX`Qzux@kDk7= zg)Hw;166QN4CWa%oK*GF@Lv5IZ^>-qjb=d8t0Rqisy+iZm{R<=@e}f@@}WmI4OsvH N002ovPDHLkV1lY1GyDJm diff --git a/graphics/object_events/pics/pokemon/followers/poochyena.png b/graphics/object_events/pics/pokemon/followers/poochyena.png deleted file mode 100644 index 2c92a6b8f4cb1be745e76dc2b9fe5145832f5ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmV+?0@(eDP)JNR7i>K)Im$bFc=2lu(C^UacdB73cIHUO6foF zrYoECC}E-WEO^#o3B3t=uM9`&uQYAhmVENm0X|Y@%?lHf|p@@z$x53yE9F_Jg_6 z!l{F93z<@Z#9b(p4Pw8L?JYg-54cU#Uchn3h8gBsMN3YOM-JT=GUiU;I@T)Fn3wEv znfT>l5V}psD5D&AtW6O6lqt5W<$f5tFZ`szJIC$mLfcP{}}&cL!4gj5x~ zdVkNL`xS}%)L9{LTxY80h{Z0{Wmz^2;;!&Tgs+xI#@g9I4R&B#T$*RfS}$~4c#&Ms zZO@bB%(AB=>5Q);X*JBw7f#`ovHM3G&AI11w}OBPBjJum!Wti?_3S6+|&TrxRei!~%egK(JzTgV%)2;vj002ovPDHLkV1h|x_yYg{ diff --git a/graphics/object_events/pics/pokemon/followers/porygon.png b/graphics/object_events/pics/pokemon/followers/porygon.png deleted file mode 100644 index 04115d119ac348ca23b89893617dd8e9fe11fec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)1mG>(S!C@IOp}EP?L5TnW00000$endD00009 za7bBm000XU000XU0RWnu7ytkP+DSw~R7i>KlDkR+K@^6kShm?}LGu84g$RmOB9oxI z+U-EV6t0(5BG!|P-a6YGx@U$$^usVw4_-&5Rdg1(arqJR-!0Ap+oN0nC z=e!1Hbm7xLh#~Beup7EOgof`{Bv z8+=h91trM6!WQb?f(v@nW~>DEDK1Qf>L3#Z$L$PYC4}7bPv)?1mrh2&pD_FYGxTk{ zdJ9+zA0fAb1H@7Qcy}Rej=;Wzfsh#CS~lx60V^ToB4emm!cR7x(1t&m&ho-OrD&lp y)O#!>&NY1TuS}@A1&*jeDdHb`iD;kB|Cx75GVvEr?p{{_0000KlRZnrP!xs_mt=HMx^xiQM2Di8TsyS( z4n-3vLct~Ltst)c01>wibrT%@1yXb<4#q4(9a@qi$o((gen{S%8ZB-@UXtPAoSf(6 zizrW?JbC_4+U>trS7~W?&h-YZ-xp^;R96^4##QJ1q?Xlh3Lzv`mxR9zQ1yurXSJ;U zwUl5<_}c&?PpV6z@B3NhMw~ukH7!&*coO2{E?ekHl?XWz+I!W>V31Uog(`;wDF^** z;j$oMW)0u^QvoaK!UfL-hez9e5Tu1hH}c-KJBqwSXgQ}3>XF!?E?n?@!2Rv(4h%>O zso4lG0gY}W1femtvEkRixiH~r_{)&vfRvC-H*5h?)76Bg-y-&0(1i(4JM2IkkP?zv zFSLGOQ^u|Oda}_>2&{gM-5}Nmq=dd@>2=G(`mvO85jL6$aYN=uUR**}LSVxmJ8>v{kH!nzM6p|hEigtiJ+C;8za9%DT zONq=H)q=LLVib}aaK4KhhP|Q-%!(z}DtX;bCz>nZa=}Q2+n{8Gv@100009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>Kld(zzK@f%)7EN)fuad1G|d{Hm;+cbfa=2YhVj%I1x#_x4)C#D3w72 z_HdlP9+pRRA~q}x0EZLN#7Vw+c&mEoeI|OdcW^`}V&YuED`+B`nCn4LYeq^m{hEpF zp7jWFIMIs4;-X6pLfx0Yf=Ba-cvSM;uTR8_iGKKs#LwGUbDbq#Aobu!x27^~`ZAo! z#e*_bM>2{^zN<$iXW|PxjC~L3R_+fE-gL0IkmP=%$8nI$l6zZ-Tf>sGXFr%_a77_LGH+3w9!FnEg(aOtXUbA@{aQ&c>Vl96reO8Pdfv?Pq~I7x0h5^_+`A1-C2e zk)_8=KO-)&roV%T)p4C+%89lW$~816lxkaI->=s}oqqIi;zw`U!1LG8eGHd$QG;v^ hO;^6+6Z}_oeFGxZ8t#!s0}=oL002ovPDHLkV1kQPCvyM* diff --git a/graphics/object_events/pics/pokemon/followers/primeape.png b/graphics/object_events/pics/pokemon/followers/primeape.png deleted file mode 100644 index 1a4d7c813b88b056728a32a4100c4b430027e5c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmV+>1KIqEP)KlQE0iFcilH&Ty+CQ^uQa49J(km%+wL z3dUQ~Phg|A*khp-I+ao~T({EBA)d5e2o$GNf|s~UuVeFF`Xu=|wl6v8m2P>Hf0F(C zKRqRcoa2ADmg0mJILw`H}JHKmzA*1Qn**|f4@JM zl@>xEvRIVDY#(jv0d-zGy{v+~G^zItPbBN)k-{Of5oA{DTxM)cfv z;6f7Fa>)C5K}`nV)RaetjJ7W>?Le zYhf9lK(l0D?ti+x{kme5MzID^@M$(a&FeL&^>v zOo)f(n73ajoXHsx#_+WnIp1Vs_}rwZ zdz9MZAWW_8);dUh&A4ySv~~bEpv}C7pD1_d@REA01^S}zIaYli*scOQX4>>UTwvs3 kwF4j7#~;J#h5uN80Nb6+hDsIIK(lKk>KokdXA@HEl22Ea6kzh;^6x0qH zv^ZBnT?|R7C!sH40z!~ZUerx>8f4LE3tc)n;4G$JBC;qN-goKgLf-OB^rTC{cH3rMD;F8WZudOXmr zj(I8+NM;XM0K$TQ@s+pg;CCXsnlm53GY+)BS}jnv<7&R^>!KSs`%H(TYwUOHgFeRP zve{%y^6ppM?7Jlt%LcdFJ`^2PAeqg{&rjZi(QM1}J-@-8z6L-GW!DRTET4n|$yTB3 z(BRXjhY>vUOm;OI47#0>v$dL4o}nDBd?@!@`$!k^Y{&Z+sLcEn89)I5F}k1nrQi(# z7Z*ro3vzht=J0y^25K892grGWU=3VwBmNJN%`TPp=-lC7A*&tp+yxMF=1svmgK~-r zsPm~*a7#wyJS!XBw;^||{nmyj@ZRP>pf;q1$aIqDZ$mO9v)`Lq?K5*0Zu8K#ZD+#s zer2o9wd(;H;DT$huv%dB2q70n?`6S++1wWNLpz!}A4dbc)zC-<}vTTx6U zxe0E9ST$;^Ms1Vl^C(Ji&b-MJauI|nUzpHBY<8v~2tw>cau`J^_B{F$;+ut#J}a)L zXKJTnrIvo}2>Cn}9?<3}H`}Hn+-w?(Jm$_7Rk+F2q%);Bm!95T_CMzjW_w4R)n++Q P00000NkvXXu0mjf_O~}Q diff --git a/graphics/object_events/pics/pokemon/followers/probopass.png b/graphics/object_events/pics/pokemon/followers/probopass.png deleted file mode 100644 index 779bc079608cab1994bbadd3ba5daf1b1373b175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmVZ{0000000000)~ccK00009 za7bBm000XU000XU0RWnu7ytkRYDq*vR7i>Kls|9VMi|Bk(?FIkCjv2UtI5IUCh~*` zgf#>(0ilpqPtKASP-mONg+-<;$$BDSpbm>9M zbML*s=XojeJn#SY&(=>u{HwaVg!p?;A8+e=^9=By{)08I>*lqyvA5#_-TJ{q`-x@y zUjK0;0qb7iLH&sUUH_Rh*meW2VPm}mxInjl5Wq=1n}MEn4E(iB^sN_oPZU8s&WG%#|=^8w&^Zd__fotg2od9m)$#tI3-gFJb!_}2|2I$tE z0B+)m07KC=fb&9J_5GAvV_$&cezK?vn>)J`lX z+D$xFiFd#$oFA8AVRVL*ck#y$pUVs@qR)&@DpP;ODWxSdbuW$8L_8d}K$$qQ&* zb2!g$k=aO=uTH+wKfbW^R2vMe4op2+tSDtTWhQ_zGyx<~Cce?fy;1%6rQ~<4WO~D2 zRrq(BPbsd(sv|3`E{D2)itZK*&Z1SN16aeL1yTvriT!Q!NbeSJ*?_BlFJ={H#r*OH zSEn4F;}H+6#!Fpih#~k@Ox7WQHPiuGp!T2CVp<}E@CjG_Ubc!bDz^6kJmb*e^TO(~ z(sg7ER2>3XLj~9Ywf{vUrZ?K4)Dz3$L(1&E8I|HZ`v>5hlw}F6e4JFVg#Op3s iLqsxsPX7?_->vW4jT!d`j(ukU0000F!e6xc|e_vkP_@eg1hVZM#a#%(D#q7QIF*0;isPHB*L}(2_!zfO^64o)bJ*e3I)%x*@2;AW zb}sbTQH|s5ntd7*Hid7V{Ar!tVHuNi{YAB(+uqIDWPj1oYp2`dr#qzna0%&tlCA#l zdFpJn*_)+ru80Zja1DP{@#Ab*=(VgT*5B+V-#$0v;d_nW4O=G9=3{+ktKN~A6J&aB zTkt{Yg>QCcrIz$D1t+wwJ8>Z9N!170`G3MPTjj%MKkl@C%Xm|9g54UmlcMhX9{<|C z!@fiPM)_JFf2krrVorzy1IGeGHFZG#7V8-4X{yn5V0s%Q~loCIJ0| B?alxI diff --git a/graphics/object_events/pics/pokemon/followers/pupitar.png b/graphics/object_events/pics/pokemon/followers/pupitar.png deleted file mode 100644 index 82cf9f1bdef5f6774b12ac1bc32b947d1fdca300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsHmyAaOcUL zhK7oko-beitX#OU^WaHKM^B(CG;r9Il@%z&S>O>_%)r1c48n{Iv*t)JFfcy#ba4#v z=zKeMW1qC5fWyKYb(#W8eEd$`d|T`EiFuhrPVFiFHL50gom*}d&h#$awV$`bT&Jf{ zM01zgr;xgNAEhI17$$$;aoqOb{TKJ5EoA=f+NZp9O0-j*1mClM?hAjvU7q(nwX4Yc zguBG?=tJIn-xdG8;C;y<&U{5{jN7+IZ3cx01g@Qzm5S!l+}>hi@!Us)i!0G-@{K=Y zS(;qRPp3^-+z==p!zFw^t03!a`Q@Aq7LKQQ6}L-FIiM-6o%qO;@x)YFHd|36pkVuF zy$5yYmIrYL@8v(|Q@65w!{Ln;YCyNJDs5}or|Bd8Eu-z_mXZ>8mjjC!AGS^SI9>M9 za(PMZM4sA163ds~d-0d&Xz$`X0!IHnv^}3MZybJT%Ki_#5@n~GiM4y}R1M*efAHh$ zM%_JG4fnq*bhEWYJAM7cbNu=BwTv$J%UpbRA2~ef`t!fSBKew6r(LM2`1(QZligP4 zIf*AKb(MdYR+Svj_unx0zUcNApGwv4SsE-KZd+^;pXO~FK40FqP#5U^60^w6gV8&6 z8{E&WUpP_Ww4>`z#T1`gSqX)yv8A7tp4X(inA+(+oHpU8XqdTg)BF5QpROuDe{e$b zxWSWGMbY_}B8qpMjOoFN2oNpVq8Q2+n{k~)5n00009 za7bBm000XU000XU0RWnu7ytkQb4f%&R7i>K)iG<^Koke?8!ZkB2Mwue(3+v6@nBN? zC5oUBPEm4}sQfMa6_*lxQiT7}^e9G8CJd;u0b9K0|eKD%~k} zB~a+(=Ry8q-T%EijD*m(wzaMQR)PO_|7+poqjX?zuC6clUFsh7l*XOs=~e4=q)vMk z@45*!}pO^+@Wpm$(_xY@(2QK0l%0wq?vH4R_meCw00fHV}>XS}s5w zJK2Py(P@hSF;>L#~_8&M)5+<9Ok#tbu8o%?L^Dkk4Nh-|RuD zBsbe~_~`|CXnpm4g@dEu;NZlS`_=JFa~UOhH-Sa7Ezf?vA@|=#0hT&>EV+-*&i3s; zk0;TG^JgYZ<}tnrEIM7`t>+iuDy_vA4RapJt<~XY)NeRHx^kym*1c+-mh&SJjkJE1 zo>Yc;1Hp6{d50fY50Jv_Om=iicgk2{gnKS2J0m1_iF%c*hLZ&r%@*`cSU(x5JtXvl zt}=$2c~o_>6U0y#%xaMQ?Vfhkc63rEw!*lwZ(h|PJ3(AoH;0^AO~z((#2F_ZaDg77 zD?{lifoKBx&(jbl6A*Tw=~R3NVM=wLFdhTnAaR^Y3um?0+nm000009 za7bBm000XU000XU0RWnu7ytkP=Sf6CR7i>Kl|66UFc5|X58NH20=l^poZUKzg11cF zTY*AHSr@VJY`{)_Ku~*5;g5gYqf}8x)-D_)*?iF8hZNt3q(v|YZgs0$-Rk1f`g#_+ zbozX5-d9Rr%c52VPxQHIQ&i=ZJfYtO3-j4jt=z`9@IbkCpDzsj@p6tY5i~1ijVE|} zILFOonBC|151KP_R< zY~2S685;&Bz)_Aeoyx>=0Z?0}#|Q$4NIu zm>t&})eGRr*t`lXkVc2#3FJ4FpRgC8VcD@5(Z7~$l-&bp*$Ps#qq0xSk#jRb13i^x zX&5aNNn|J4Wg3l;$daXvIGdUe@AWX`tSio1SCP6u!-Br(Df{XNI;QD4`N2Fa1Lt7q zK+Kuo%iY-NA4IHQz%Z=FEG@$6(7OPI>-(qe|NYv(B87j!eq{XtEUx^dMHPFP00000 LNkvXXu0mjf+2az> diff --git a/graphics/object_events/pics/pokemon/followers/quilava.png b/graphics/object_events/pics/pokemon/followers/quilava.png deleted file mode 100644 index 00fad810be39ed66a22f4e9724d20b2625fa3df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmV+>1ljwEP)G>HsNhxu8`O#syF);xF0RR91soTi100009 za7bBm000XU000XU0RWnu7ytkRoJmAMR7i>KmCbA0NEpUNU|=ywARpR8OGtFdp-T^a zo3KcmoF+x27!0vNZE#s|lfxDYX%D`YJ&a&jP@$KeOGQi9*`8d7P_cXIp%=G=+6J?r z;y5(@IOuQajAYM@#ikItJrs5@*pJ5Zd!BjcLz?z~`(B&=tqp4BZ*1UwwZZhv+@bw@jK^#avp}%7sC=Lj#2F54ob?xMMU~Y>sV2p#F1jfC!%WI`rsajIG zrX(&vebBAj5?7rDqH^vWGT@~(EP;A$$8nz4j!j$uSO%CFpx@ABdSilDR?EwQZ=9#$ z1^KYB0gK>VRTD3ROsr`ku=YS0c;gk%c1l_EYNcs|LJKPE@LcGf7Sz@udLa5a4-|u= z7QpUsEIgmO>FiNvP(`G|4NzGHR#YIkfm+l2_S`?k4f;Zw1ikZepetAfLemsGAmDVzDBLc=C4?5Uzu4_wz&1O?Lr1{HXyz zY;!3uL<2Z*MN{-Z(RzRh#-ud4OIXo)bF+XUEJ3%$4SsT~nPGj|Ve+DwfM(e2WZH_s z64OgUR|nK1u1EXh0cb!xOe-{7gV6b-o}LpYD^UTS-_N9+!OX`)fR7{XIQ_xjBeYG2 zA^>H2?`|gke0AmQ3l4mSOX&D_?eX1Y z{MdQfVEl+uD}6BPbQ-rI+M~Wa%I7=q^XoZjFw1pOmh32MN4xT}V+XA*51NsfryJX6 zqR3pxA|wZ9qhUrxOAOEslFsXcq15wS&nf-IWMr!ST+4pTEL!uXSsWW^GuC|3H0STg z0mdj9sqc^Xw~|pq0U8Pa$hL4tGaABRrZGEYP|Mn$3|ZJtEK3FCo5A|N@WRUXCu5X& g#M8`t3Gg4b&zrV|mCx|>K>z>%07*qoM6N<$f?`tg6951J diff --git a/graphics/object_events/pics/pokemon/followers/qwilfish.png b/graphics/object_events/pics/pokemon/followers/qwilfish.png deleted file mode 100644 index 97f77749593a37487ac50f3b208af8ed134cecdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)K)iF!MKokJrgK~%HREjQc4@`wPqy#!S z7QrnIv=r(PQ$2?`Iq2Xbf>T#P&>tWj4K!4)lcJ0HQQoyp?=I$wgAPg`6#A9id%2g_ z3qs3S#xnj-;Fj)|_rnD`BP}ED-~4ca=96AvbN#OsSll8KP)Y)`zY%z-yQ|eB7C;!7 z{f(e>kqPh!jLuEq7xNjV08~z9-pCgTw~)!chqVpojc_6sM4rin3e&*gR>*ucVctAK zvA{BV(h;R6nsGbkyO9a=o+cD6v5a=7EpZEtZJ=PwM>e-|I1mW^Ela&a-L<$6FtRJf z_9s`%yPFwznd~u$1!@7^B_@_Ir_dziSI0w-%$`Z+?)YOq`gQvZpc?l~MiGr|nxH}x zo41Q~S`ixts#8|ZR+KiXCjjSXhfcA1LdHWapm>E(ggxp%rR-z!%i7H4vMk_+7taqD zmg^LoH$6&{q#_H{qA1EdV3#&8N3(>P581lx@e$k)V9zlbxhrkUn-38;4v(*99^9RX z?Kn+V9;znte}hW(#{O-i=a|gnU`Ia;U*58>tB;qAje7_;H$Bx_kXoZr3Cvzp0G+06 zoW9Gs&#V=ArF1tin;+-fdVypw@sO#H2 TR1qMv00000NkvXXu0mjf@!=D{ diff --git a/graphics/object_events/pics/pokemon/followers/raichu.png b/graphics/object_events/pics/pokemon/followers/raichu.png deleted file mode 100644 index 1887d9a74621bb5f563d79e33fe53b5784c7b1a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmV+=1KRwFP)Ct&p000009&AD100009 za7bBm000V|000V|0Vb6__5c6^n@L1LR7i>Kl`(4@F&Ku$70eA<)(+)8N66H_W#gL?E3ItlH|4Sv^Njf_@+#1>` z@8IK+zVCfc(jf!ztYAF#w# z!MK1KJ@-7EGgRzlSekn%R}4z`6@(7*{=nLv&wrJR86s5n z{65q3g7wW&3VO)Nxs`%>&sho(*KdAJ9%nx{kCWa0!hEuu`@eaQ%L{&8J^&Wwfk(33 jKcDy9rO8JF|4zRF=C)~SaP%|M00000NkvXXu0mjfUC(7L diff --git a/graphics/object_events/pics/pokemon/followers/raikou.png b/graphics/object_events/pics/pokemon/followers/raikou.png deleted file mode 100644 index 9f092fbc5170a10abf0ac75d1cbc1f89d409b48a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmVFN3Dxj~^>xk*`BaXFD$K`A+5VVTLvBKjg@00009 za7bBm000XU000XU0RWnu7ytkRXh}ptR7i>K)<0<5N*Dm}!w@tW51m{S0>-5Xf|foF z3TQQWE7>x7Y~OaaQodML78QzuP!ZQ?FYg4JMO;kPUn+@(9ig>sCC+p`pL0R=8yWRQ6nAFe#B3X4k1GRp_Gm6 zmAyib_&ZTs?h`?sGmW@|sUab@ANq!DYlH_^U1F9ICr_t^0wqTwxNW92N6NdwB@f5q8nOJ4P$e6tg+C6o6FJ*b*@`%H9Yw?}qxuSQ zge==E*OaTNVP%I>wk6RmZNwGJ$g&ZiPgr(iECGn`)A0?3T25UTf7t*yqRcRYi7|B5 zMY`p(5rFRbkR3|Nbx}|W(O$?5gYOyO@S1}TOHP8O)9D{(xGn-AWTD8_=6u};sUvJ) z=f3E;AVQu`6Z+m)#PE7S=47#0Ra*zY>(Nuu$jjic==*p@XTE>u``#2)8>s|Tq7qzb zPWSJ+%COT>$)6!E__tuYg)8I6@4fau8}X8^P9OYNVx;XmWd6I5UBtXO@2=ZB)d)RR zCn!0@al((fuAh9!3KWe%aA2eH*_S||bYtt#1;ya$z0#aME;`tbx6b}~)9bzUPFL0D z=0kTf(S{3@Sfg}f>vv#2H^yttb>9WJ=>B#MiWGX?-oHU|HOuCf!1wz{T3TQUlzi;t zFDCZY|3RP4^@%= z^ZX$9t|_{qSW-Vcvfig&Q;M;7`k`_lnKa=Au5uJNlas;81g;rwD6(|_cOYg3BFeFM z&hABdWYRdVbQHI618_6CX1LL`CGcRqmwHVpCqC@M$ZVPC<|mvOTD0R+R)Cu|5!cGu zq<)rpG_xe-(oA=JJF`H%G?NAF9Ny08>(R8&6Vn-zY2!k|fqj{FMD2XRk-2Nzt?ZG0 zF`LwB0lJtbeKU?|mNdg2v}Rd>DB)O2&m2YVe8Kv|jQU^LL}6+@P5sFnE>~ zh!S!bvIMl9FBpv<7Ygj+d_iRoZ$Hujuhvx8*@Rs3s=g>8Vep_lfd;kCd07*qoM6N<$g6ZJo(f|Me diff --git a/graphics/object_events/pics/pokemon/followers/ralts.png b/graphics/object_events/pics/pokemon/followers/ralts.png deleted file mode 100644 index f28f077b4ee2e8bbdb113ffc4c7a55cf30b4b0b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)K(6LIyKoADtfCK`m4&n=FbC4!6DJ--I z*&@ZY5)0Fx=L1*?K_xdN_Y^54UK+~-D^bB>+XI_>7n4epwH=a;ASE!s2(VYBQ^qJ=MYDD?d5 zjMDA`WR@cuEvO}PD73n!lDwX5YN}LD0|kgpLg2w9Ap% z1L8)vZqUy*84=HDOYE-)0pSO1Z^t8q_-%>J0!O&7$ugIHt^F0HLMj zchc!Bmic;_i=E7tT!~$0l|tD)qDbLk>t0KN8-`tfD$KjAJ0K~?Mc3sy>hCYwg}OQA zuBrTp7U)TVE(W|1;%*OFr%&^Y`{!Do?QzrUfie1^poOx21;Aab17vu?-{k`^)W0T_ S$`J?v0000QMtLf>1lacf$3pkVL3TD0RaI)S()MC;d!C?adB}mIZ*%r000006jrXF00009 za7bBm000XU000XU0RWnu7ytkQ{z*hZR7i>K)xm1pFc=4L-R#49_+TN)$a}Pu?jd^c z)=>5UyE!aHZgC-QS7aOK5QbL^>ca@5U7n&Q8%~D?gl=b%qVXE&VLweBTk=O>y5Z;7t}oV5mqPH&Bsx&-w$oQ5%&mbY*I=tmAQ2z zgz<5_Z>1R9&F0r|Cu$GX8!@GYvgCCm6waQC0xDIH2KF30QMk%a4K(FCK9ighXR<}2F~-A%-Wm5m^&Uz+F?rF zk>0o))3&X(;WB_;sx>lLjxo!%MlQsYo~<`#8L)49n~OHfJGodgDXnfx-VpRg2R+7E zhP5UO>K-Q9LR?>31{!6*K!>$nw1snkNSHTVM1Br0tAO1$Hxq%YhV=l?lSU@t{UCb%zS_Bj2SP`f zH_TZc#e3EFtqa0(8MtZ)mI!F=_Pj_5;3pHHMPADv9iIX03G;?Nc79B+tLgctJM1Wd ztzG^H#g^DM2Uc>COe`fJ{K(&vzO*^((?ojyf%?wn;@-hx0mN|`!>)WIA#+E47CtB_y&H?f;pf^>7qGMpTvik`79Jfu3)}S) ewi{RVaQp%@mf!%PHTqNl0000W{QDK3(sd4#HA#q_rxygBKmAz}*Kp4iwE#^Rr7J(sy8{woTn_q+w z@#Lk8CkxdGvZ%uuL6%~YEcqjJc9FTcbm*M1ixbrj2K`ahhkakI5(*hQ^vw|ebh_tx z?n8Hm@xT6+!c1kBzO}xkC^Fi8+W?rT2AQQ9(5~Wut-p295@Sp2Ppw34x787AuWREi zJH+}367>bDwqtdK%u*GZHvY1MZ7Yg2))LyPB2@z6uG(6%K7=eLiN=xu>QReyPi3~_ zRB&cnshlUX^(B1DuE}!K%4kR#Sq|G6$B%?{g+s}4sxC?%<@;dM$_O%=t%fapimykB zvLr_8DaW#%jIs;JrfIyW7l$YFS7ylhw!EYE^fJ2!$ZYvaR{cgGVDTQ!R*LEx4j z)>H%tDi#JEa3KKqeJb9sm4N$TiU>e?)0TRx`D1af? z!`98Pc%JbkG1z=oJh`8_Aj`dQ=1BpbONKoU&=1dw(>#j#ws)rS+PxJw44qF6^g%lQ z)?)+B;^PBst-UG$Z^mVSXHQ(?{Wuw{??Z73qA*^Dv6un8o*C##=vUC0iFP`_GR(0Q zU^y{N5y1RteHozfHsbA_ZDP*k8v#uWz09%rjkEjT0+_cvfH`5PhkB+EK|eRJ4xx2M2|?OPwuxWVQe zczdC!dC-#2P48>X>h|7?Ex-FU|4HI*r#g#-nzbKd&wfb#$ISS|Nct0pTFd^t59%F4 z=C|7fpNM?Ce*LfQvDUdc(p4AOIUcmhx*Ren-<10z_<_^WkL=$v=gzq|wL$o>t^R_o zUB_9T{`#gXrrM^l=A0*#m)sV-Tryz&={Y!1I~ zaDR*xTb0Rh!F^^o@8PzUIYAlBhqV}74t=c5v#JxTf3&J#W8w`N#r>fkatrx4JQQbG zs(f?9*-aLLZJ!Sv-Ie%x?%5-z8cQC2P-IM4U6z+Kjmx#Yb8@NkY;%Uy%NN|9e>Ug| zbArR18mS5WqSFmLINwJ|-qPt$_|){GtZ%LkZ>is+X{Sr9~j@%+z;-R6fr{WWYT7Tf3* zedoxr-Kk4cr`^np^e4cx%OlBA*E)o(>$hfPd>7EbGz@g@EKS1wlmlH Z&bR!r&(inK15o;4@O1TaS?83{1OV2E{$2n8 diff --git a/graphics/object_events/pics/pokemon/followers/rattata.png b/graphics/object_events/pics/pokemon/followers/rattata.png deleted file mode 100644 index e3b389ef618ba5fd8fc4ea2e642fb665b670f19c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toDWaAo67OT);Q zH#hDCvTojdXsMVPIrHVqpNx!*K!wO4<+z3ekk47*5n0T@z%>_y8P%rReq&%@oagD{ z7~;|ScFM-QW&?pX-Mh!aQcqWeNliJqb@HjRQu7otr}s%3e-lh_?0L&A5TJY{Sj^e$ zUB-zC%YxYb3~Dyk&Nr+VNLsP5P3qPEDS}#^fyjBmhtJdsFQGPlCI#&1==Otdf(YyN*i^(vx2*;)BS^pVZ0^b<>#`fphALu1XoX?12?e(Yhz?hH~B>tyN*#5Vso zd${VM%8DRYmcGX2LN!MMzHXlW`#98aMs~>%g;!!SFhf7`0Emd7*3tr zmpkRl^<8CdmK7cDd=XN2Lw99C$qn0pgXxj`x;FD<$xnS6Yb_aKsrCKwI)@6)!*{$_ n22A-{I`8hKa|z3D&%Y+V_;*W=?+tNTP;`2_`njxgN@xNA(B9~F diff --git a/graphics/object_events/pics/pokemon/followers/rayquaza.png b/graphics/object_events/pics/pokemon/followers/rayquaza.png deleted file mode 100644 index 5a1a1e547c83d3c15f85bc2122ae524d97a9049b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmV-$29NoPP)*xp6TuG4aVU$=UIl;gP|iDUo>@$tfujK^a*Q2>}5C>lL=V00009 za7bBm000XU000XU0RWnu7ytkT=1D|BR7i<^md$G%M;eFg zzaW?$8sDsD#CCiNmK&#cFWx}{N8m+=-9xUyx%m)G29kimEaZ?Jg781!gVnKRVo`3b z84P>ysJlGse9`l!K6+*}BPERx^K`%Ud#b9dtD6vt88OG?$NVw9fOyvBO#l4}-*pH9 zASAz=&BRTA*owEw`TyUWi9Ua*|I3Wz*_k}BWykAe;k$o5Car5{3T*{l3>|WQ%?x2; zwk$KsD#03^;r^kiRCsXf>hAdLywFxWzZKqoJo5JV%!o8o$Y`y6tf%h;r@9+2Ma^X9 z&Po_=10Oxg*?L-opc>JmM?Zb(7?zwv&Q^Ox48fG)K98fO)E%OY&Kj+1Y1A!j}Lxnt>4?d)(AgPldkT*6%H+v zg)f$tbr->tX5miRJQNLY4?H0xqU2L9Q;rBmpwPf}p@dM^8z`M8a`Lnhw!*T!`Pg6YpcIxZ2q`DRecT+mC>w@0T?tPzi>q z@8{`}-ZN<9X&r#8)!E=_N+wJ}*2>cC6iD*X_4?84eax4_4J|CS@HMs!$E+TuBgADm z+Mt)nl$B7i3XHFS+8&@xODoVkQbvKo&Jm4<@Ba{t2F3NIu&#tO(!$X|3+v~uz+dYH zf0=mi$(s>mmPfFsgqn}N&bRHd;UMzlHx;Pa_cY6r@1{m@J>r8wQAZN7?XL`LVa4aX zX4@^?kq|Fsw4YqEY=xSSJJ-H#`GFCLC{`;tb_IzW>|>HD z) zT`pr-b?G~~Vl8z3Qz%w};5AV_vue?$NGdi$&6K?k`q;)dKV$jeL27uYxV-c!K7XzR z^qnHkW9YhZR|WQ5>Frm1GvSJLVA9M=As*W2(r_g-JL?ep!*H1+70)59xYbEewdr{o zQGq0{$I>M>u>9mw#c%$RDyA}yl7I?vV3&ktG7(ZIp#3~dnra{I^-|5F02V(4KclOw zN?-zOUEpyQm|?}prD9Tu{U?KgNG{qHG3K$5yvgWV5&J4nZf&9F;St0))V_)@kmpW`pb0<7T@Vxz!1|$l}O{%TT?sXcw{9P5^@V zG%u{MIQ*OMjs^3q>w(pxHh4vMENC#d36RF)8g@?FARv!#rx_q2g@d<&R zHre(>noW$ro9d-7`A#cEvf7JaZz`BFy}wx>sO^8!xMEIb1y_V<9G(=YN98Y*F$#eD zo?yXQELYSE5ca2OmS?^WzyC(Pq7yb2kl()NHxv}B->FJ3nNnzQ^ae1lH0RaI)X_1k+;mPs&000000000000000>|J~&00009 za7bBm000XU000XU0RWnu7ytkQ$Vo&&R7i>K*2_-YKokbx*;pE0V~|zHyD|c#=mWAG5?d!U=B;^k_gYw4Lje+a}FKC~(8ca^G zA|EE*&F;&TAD)8zPBt6I^@z*1IJ;`{$wHU=rtEHZzk`9y>nsb@tQIv&xe#Z~p1wQk zv+D+b;tLTQB61r{2n`(mB*Zy1SOb_I^=9C2w6@!6V_#D=8-yHn(#c}%2j!mEodrclxt9f6jFn~>Ky?hfQ;snZI}SZo znuT}^gA@Z}&nTZt<+x%DG=f`oK?Ew0covlQdv0Fv0{xH|Bm*4^gKuD)^foKdS_YyS zTUiA{G{*C1Ss<}Ox3C-f7!X=OZ!VOnKUACUlfuRSzRy(0voa42%%~UxeTbrH=I4O~ zmd>7Y%X5Rwf$RDCjV)cY4A^mr%prsoW1w1uY9HLyqVnbZ$vkag$CY;&+Jp6X8kq5H zDwf;wxAw5(YM`f9zgB=+0~f5pwx-x|HIP=%%}0Qb(^b diff --git a/graphics/object_events/pics/pokemon/followers/regigigas.png b/graphics/object_events/pics/pokemon/followers/regigigas.png deleted file mode 100644 index 147c0bb67fb9bc1331ffd3008c4191fc337e9f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1836 zcmV+{2h;e8P)FN0a0Rbs#NvWy9sfj6JQ7Hfb00000a{edu00009 za7bBm000ie000ie0hKEb8vpK)l!9JDcEcmjyw7Mna&`@)N|h>As#K{`rAn15RjO2}Ql(0jDpjiN_x~!tx8MKu zPdVX#?JR5c;UAyIjXc-o48OOwtVW4J83*=|UGS}CS?mI^9DXV{HpY<~)6)sgah~Kk2!y$Uw{&RD9G**)o!vXDb?+vQqBs_9*o%dR{hOPEuiNY z&xD}h`US{y_L@RKU_CP5gf~?A206#s1hv`7sCs4-0VnsXtf^U&+Jf^!-ffDWq zE7EPOI^Ke^Y@P9Lo#YF0!9?bBvP%mB&{@ChvtzcNs0A)cIY?Ht-Rkp#lU|eVqN0E+ z^CZtb`kr)GX#(+%(iMhDu#*aAf<^wCI�HvwkUi|aCbCf1z9FNm#!jt zbi*t1yZ~6?vA^5gLcFJRkKtgtk_u*mGLJiWC$Eung+CZ_YZ>eQtr9I{ubkP zW8J`buupG$(p8`}khvrXRy{YFZWw>P-@j*kx{(TIf-+B{RzaZY&ZntO{g|%Q0_~)P zvw|`G<0%dr>l8ozAN3*b=lKLfnM;CT8#R-7(_{^K2JPusDwqj&^4w3_?n3TyF^8;R zijzPsV7ToP&I@`!{rV!HG=25`cMgF)C-<43cr8fsyddb#y|(8;2wNEU*cZo@3TA>) zo;yva8x=ahc97B(L!H1yQ_p$9q4(=kJYDTJ`04k~g*&qBV}YerkDlc@kOjvHAwv({ z6+{k@3vxl36Owd_E#UNRz~1SBulXo(q2-5yw_kkKU+pG8e=%@C%paL|oIgPQVV=u^ z2JmBIcnN+5F@`U2QYK=}uUwlH}Wo?nx06NJjKNR#Ps5{-v z(cqa7I6jC3zql2=?-T?N@u17jnLz{#&ybJhWNA$XiK?Jz8CZ3kM81NHf}k6{=mzQh zRm=-+Ku<-^2Ra8Zzu zChEri9PxtFZ9gwCVIQEFpx|vnWI?&$93f>x520?E-~>8M0Qz&a0O-LH6L1m*7X|&; zLsfgW)0>|UXazjJqiq%5*HNQV<)5}_@Q7sTVSHzBOU{sH#LG_-~^PQj_wehM1-be zgcLti%L;;T5b8JxdC1F-aDa~j*|$s(an8ngK9mGM6l@YUKJnoHRi9SAhU~uujJGv{ z1{rtg7-?<*UuG1fO{Cg?S;1=)q2E|9Lll&Le8|7e1Udf!A@fEOJQn2q8bZ#Cxi%rZ z;anq_9fnK*J=7WaaVGFwfq22|@a61=4}2(iT7V0(X|89#*KUlHpO1=y8UL-OdVTnV z7+)jEM+D^MH_z3KkIZiF%MjHxd+e$<3&UZq;7I`?2x{!YOMO8d&yBAX%*L3_LLCzh zvza+l3@#=JXXeKgFlV)Y#>>Yy1j??_<|hE} ziRKO%WGD{CGX>aI1gc*Toa5)l7sxbqzj_dpT$$!&nc>G2(B&LIH-3glX@CBB`nXB{ aJNX+q7qIANK_Yel0000Oqf*~zh4IkBOUVJRU10000000000ziMr400009 za7bBm000XU000XU0RWnu7ytkRs7XXYR7i>KmN9SJMi@Xp9AIeaLc%f!Eyt5-s+N|7 zNedKQq+T2p$sjRiwRDl{oDsA`EXd%HPRXJcSqcPbXm8e{c#ELa2)L0*fExT!{f?3- zQW4uUK)0M0zN7RW#XAB7_&h$3j~j&k0~3}%_^&KSHOvQc+!!r#wdeFx_+JB6`~hKj zHMM8-Qy73TJER$7p2@Qbg}Q%Ep*DV6$l|9W#+kRjH)>B;{x#koT~hL$@3&xo@*6GS z10jkSVAns-1=e_fG@|6K?@ysNnhQ3tV0--n2Kjf@Q6`XQ5>1{{^QHgt584=w!vgM4 zE{-=dj=z4*2l7m;C<yg-2&+XD|AZ9fh0u z;OB2_(b~uW-@kfwUdsg5n8dLiibuXL`mr5{1$;k_4>mIp;rspT(Kvnl))*RbsEZ%* z(_?W=3mEUldt`>p8Y`CPiFou?)f!u28pyMJW`?-ygx~}D^lapvh*jTj4_JW0`gFx? zF631!jx&KA1G&=bGxQx%n1Dom?o~d6EQzlusm+KWDsQ+pEAD zC&Ga9%geF(Ylf{nC&F$euq;YCqK&((=Rh6#YbOaN z!fu7tH43^S0}2IGvXcbSXlg^o(oHjLnwp2)PPc8(*(-DYt>u6&9>SLBVTp6=_70Ol zDXhPlPA;w-Fx&xKfRW1V2g@Ed2Y52|tbAZR0A-Abjb+M&HW6Hi1Iez5C#Xf zl;vV4WA~n-tL;o+ZNi~oc+7QBn117~<2vRkg~e7dT-I??p$s}5$8eW{reYYmfSiEr z(B*HXa4`&zE+*%r>ruCz3S|)4^x8|G>MH3bnondA7VjT=_6lk4r6f5_g-I~?_Ch<_ s03h>qJ&QTZ2ZtYbe!kj8`2UW-0mRGmqRg=|ga7~l07*qoM6N<$f)!`#hX4Qo diff --git a/graphics/object_events/pics/pokemon/followers/registeel.png b/graphics/object_events/pics/pokemon/followers/registeel.png deleted file mode 100644 index ad188426fe12e4774614c328b06cdfe9c5df8dfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)K)W2)nKoke?BOKn(5sJZ+RpVq$FW9AC zBw0}e?i5P#Xgi7`(4@vhflhLSbNLUtXUk?Bf6i{roSdX4S0it!Z*0jW^uyboIWqtyMzm`9$7u92x{S{qc6j4a>5EER1(F5Tys~ z1MO~S!@8tbb~ZBaXrKpbumMd+eC`6QrJtn^2p%qxs7 z3W2VfHsB0b^j&&HhyV|0RTjXz<<^}Qg+MFW32%gkpB!os(irsZzFg*>vkB~9l=<0) zz@956fxHpEymyvSpc0Z-e128<+uykR8G_teqP(-Sw)stg?!uiV(XYF-OO$Tm_mTru_5Y$};< zM>ETuEzm?{~* zymR^+Cir!l7*FMwdSl-^AQi3=eOlOvW?2P8Aa3X#LqN6BSMcat;!Q(ILYUOQ!!tDr zc7ms!#5+M2_hn!Ug_Ky|@yd|MvU= X`Kgag_@>}l00000NkvXXu0mjf?s|W6 diff --git a/graphics/object_events/pics/pokemon/followers/relicanth.png b/graphics/object_events/pics/pokemon/followers/relicanth.png deleted file mode 100644 index 10c4c9943484b306dc773121761a78465e2b0c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmV-m1E2hfP)BX#fBK!WLX000009 za7bBm000XU000XU0RWnu7ytkQ)=5M`R7i>KmN9GFKorLhAKtP!E=~py^@+GkFee?A zOi=|{GL@1hO`V}FjSM0~D6}R~pkN3lwT9v^(7BMMS+lw}Xi}#ToT1HN(>M^~&rn&m z@AL$68pu+}0}Vgj-TyB=-Fqj5?&CiGqnK$z_U=|5qZ|dCNQ3cYWPX%y3`5D30m~LJ zEUm!#QNA&XvIPu^>Kz-X@_Qhts=cX#w>MC$&_DwQNqYxP;~OKfAXm$PwTrM}sbYgi zjxzHvOye0PO0p#ZR?W~j{%9x_G=*#a^`sWd2$7OpmH?{?Fes|f0CLgKr_wlyWrP+Q z2W1MGg;2{I?jst@tkFYwbFLT1{x=&Mpm;Wx4fi>XW1~|Yc&=5ZUWCJfN8d~o&-$|J zKBF<5ymn649k)$qvXDdFCUJIj_$wqBW&J{R7ikQ?J*&S+%{zIuW%+_t=lkK8 zkU+pzJL^}*79ieyH`&pDM5S=_t63>O+?JX`J((ldGclLHE{{A5IK%tVIevd9sgv!y%6ilXcs1UTy6=yM+qm z{D5*n+Ycc)8?eHkn57j`P|}neD$M7xVe#^-b6{=Ncg>MOl!pt_onzZRKA8w&X~ewp zFv}885rx6ha?6_-7OxzqMhbq?NDs0wknAh_Q@_Fm*@#8XYY4QiFjY5IvGMw@C#*U&8o#{B(xq=gf@|?dp|6Sra z$N7L&(VTEK-1_{`x`NlWHCJj$*c-poy7t=C3Dw(pQYtua7^mlk5M%)}p@Bg!9~y*D z3r1bZKf?KZrkgZJF+=>Tv7e6zf1ZZ29B@-e$S^|)!vh>CS*(YLb4}KS3sx9io5K1w q%n)`X>)|kB=$0|lj@FN1NNl5_#0m0Gf898ZjnaL?pfsw)K000000000000000`44|u00009 za7bBm000XU000XU0RWnu7ytkP%}GQ-R7i>Kld)^UKoo~>@whc0A=a%}5jr|`Y_UP= zA_bk3szK>mGRKw%#VJck+FfY3EE0MDT;pjj_iVikg--cR`R?A`cbDW5Ql?CqGG+2u z1zZ&7sR!tqD7jc*91YB|U=gbMuL2fDp^A$`btTgecvEq4R&`IsD**5mTo?wBD0olFi{6H$`WAfon-3P;{bG567KjQWC>X;(qh}hoC)_E#x@opt_(lpV5<*u zA?Jh8iKicsc(iI^&V*cA^EXT5G?Q7pT3WfVKTDFWwHH!IUl+i}?pTOlh!ux(E=>DQ^JIaf_ zFm8zxGG{T@jMq+6uy3b)e}nEYY9su?6kmXhrD@h;X=6Qf#EqYKjYb={Xal+Jeq-z- lXnL?;Ap{lv=Uxj{J@iHV8X+1Yt%If)@T*|Avx0RcflLFwuF0000000000000005%7_R00009 za7bBm000XU000XU0RWnu7ytkQj7da6R7i>KmA!7QH7$cpUXv2;%?zT<8tpvgx0SzbS&4n@=n=#z!?{1kV>lB zuQJF66v*RjtwCyKNJ+^#nyZDW>&+^+H9!q3+yV%W2Ge%VQPY4x5MyC-E)1}V>5T=K z?6D0_jpxgF_a$2IkV;&z&V`BHEyFEe>O+Cia}N%u@x?_v4Wb@$l5=;a%lp$O@t}5VELvSRMjqvNkLS%>s1ZZocsX|g zwO`&ps=IWt580w}sOF5;4E*ZNdGi2-NPWmT$AG}Vhu4j0hY$~0V{1@1GgggB{H>99 zpxv1BoQq;lKP?KirTy+0mx4%<;gG1`j|Frxa(9H1FSYWZQbuQ7b^Tm{B#iCnp+3f? zP^2^qc$6bEBrZz3H7zLANnzk%sdsR7&2O{WQDES!>yFVc9CiZ4ik|e4gMi8e)Y65- zUK8qi=p^e{Es&~vhvn5r*|8p4Ie0XIbEJBQEQm&vM-|ewB2;{Dv=+mFrHIUWC<6)m z^~APmHt?i~Y(#qBq2pVJ%==M* z9fqL8w67_!9!&zb>Nk&2N;A6p%xK6@4&A4d+qM};K@)ikxM3xWG@$lc3QXYd4F1=DEOjyh2G~i?dNtF8+QFSO2yjpEn1)`N}`CKM=Ww UiAokZPXGV_07*qoM6N<$g5W)Bk^lez diff --git a/graphics/object_events/pics/pokemon/followers/rhyhorn.png b/graphics/object_events/pics/pokemon/followers/rhyhorn.png deleted file mode 100644 index 78faf7323823f376cb0a990a415d7689934d3f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n2LP)PbXFR7i>K)xnONFc1b{BzS>|M-Asy9{?9u;mF`o z;R&i<`v~bGu~!zW;jz~wN({s%hwZ7#+&+VU9D4{+^sHw+>;I`d+xDlc$hQ621;ng3 z{cr(~@?}N&h9gd~-14K6&=6!{E0hX1{HS8ii(Kij35X!T528woNhGz&DeHOk!UgL|+D6NPJP_K+JwmT`d6$*V!v4?JFE4 zn%3{QhiXvis8i$hw569o47oK^pl-cp31S=vMgi#aGy!M;(NoYhDGf-fstdm7ra*a@sL;26739lBQdO#n*T z$m^L+&S#zuwIeC{bnB{MW_yO#7w<;T@9g|8JK&%6@9P7*&%d_w=OpF; O0000G{z~Au%yAiE(KF0000000000ZHXpe00009 za7bBm000ie000ie0hKEb8vpKl|PT$HW-Hq^acT%ii4-yR1IowW zp3WKsRa=lCz~zIqMF-cC8&>i+NG8{V!(>oScY$!!RJnk!=7;J_Qj{Da4$uw-0vs3P zG0o>kzx;>LV|#3m?W<{Y_GLzN@Xfzrn{&!G=qRh-KVjbNzq0-8T4bw(zyU+EBF0$w z1-@czb)4_cM7G(Xql{3x4T4}hJIYD$gt^mWY>Qg#XfGVFT_DR9`!liix(Rm7HLoW@ z5MOj<9WWOn2wB|a57^$L6F2_wZ5_Bu2!S0#pB4&e+k=2Z<|DCPfiUNMz=a8*(fYUN zDGO&(IAj==x=QGpIrR*)u}32jxjPmo*jK)u+W=9Wf6u}f(c5!R2Us1~z;$7Hu@s8X zlR}OTxGvD$XtZ_TG-;gpO4u`ROY~>1xeMbEi_ zz`N1QS8uj#(^jNsQ_=hEo%r$m+WSQdWuV~<#@K&nn~4$ujVN)k8t)(w8(ye*PsM=@_#nNqqx+flky!khOUs|nUqN(fY(kW>k8 zUBgK%`NRdm(q|LVr~u#{O`H2agz(#d%LG?1N*sv2=IvDR?-R{UFx^cAfe$6DryZ;Q zlQmvU_V@2aL-Ll%Q^A=KnCgHBoMN2d3nLVlnv+Y-_;wv)OoDZ;d7rjisu@~tFqLcG zkfqxBz=7Na4W{~>qLM_xMQ{-r;RDVThwVw>G+IH$Sx9vMjIl zmBhJnt~?`LP){+gw7~it+q*>y zNsh5k%XY>Vt`uW){lb1MvCk20w>}7Y$qUN}?D3eu->OVMs%Ql~9-DsbR|%$e_e#>- z0_J8soZSLyg1Tm(;#?kqP6!XI&Cw?fxPNvjEk4s<9X`|6CvP^T=znYf09ABSvF7hR Qs{jB107*qoM6N<$f|kz5>;M1& diff --git a/graphics/object_events/pics/pokemon/followers/riolu.png b/graphics/object_events/pics/pokemon/followers/riolu.png deleted file mode 100644 index a49e6e01eb1fbff2dffbf41776f53170880e0e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)FN1NiNTo}F?nGrIcbrpxydOhDRH^+Nl8gjS#baW00000?%<=m00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)IV$7Fc=1K+f$Z+<-^2n6gU|I9Dwq^N(dZX&L&Hf+!HXHss5tD4O1LTs}@7PSml zv|mVm3d@j9V%a8t%x$5|138O7fHLgvr3xu);&x&-EFIpKH#2xA*d|mJ_*|1!0 zzujxb`$Ft)Ouzf}^+<y98>#J)F zKBp_Obqu{Z-#V^7Jsg=*H3Vz1P5zWx$FLyRI{DoDM`_zUpM30JPzA6NyUk5BX);(a zoiq&mSp3wsc|Kj-SfHZaF=*Rhp=DE$RALGXvPzWTuff|LS7Z2BVZ2aw6^RNQIX$=C zjZM=C7O*r+;d~M&rPD0SPZ(GomnW7@Xk_17Fk}k)BF?Q9ew@GVA0`ojlZvL6y9MFn zBlP0Xo@R&r0Rn9u&ePw%{KR$tiXSpG0`K4n=ly@V1Mqs~+!1OfSpWb407*qoM6N<$ Ef^&8hM*si- diff --git a/graphics/object_events/pics/pokemon/followers/roselia.png b/graphics/object_events/pics/pokemon/followers/roselia.png deleted file mode 100644 index 5c067a5ee2452e3c03c36a7e127667700884aa72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)+~)SrIYGL2;>pIXPhwkttE3$&mm600000=ql5R00009 za7bBm000XU000XU0RWnu7ytkPZKo|#bAp~d8^l69(A+WS4ATlMw zYpDx)fYjt6y2v6yPL#o&T4)}?2JKxfQ)=kpJq0hxlELU*a*ieW?(>~Nbm*f0_S0wG zUv~&u)7rFY)22I*?+YnBZ=`;hlAXrA?S@1C$g#_?eT^)+@3PcNV*B)3&R70+WMDEVZ+!}$oO|pX|hPf zAID44$L6W9F8fTW{taW%I^S{d%+XN_7ZNlg(gToO$2b0$yaCmx@0X+n-e&*+002ov JPDHLkV1n3+BYyw@ diff --git a/graphics/object_events/pics/pokemon/followers/roserade.png b/graphics/object_events/pics/pokemon/followers/roserade.png deleted file mode 100644 index 77ce4ef4d770a1fe8dea1a6ecd83feeac437919e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmV;t14I0YP)u@ONTVW~;U+1V*+nd!Mf0RaKYL2-!@Nl~fksew63NlEGH`H{hC{Wej-00009 za7bBm000XU000XU0RWnu7ytkRGD$>1R9J=W(=kXJQ5XQ=2e;gEL%aw#RebfpC35Fo zA%#+jXKA+JlLszl4296G;ONDuoK|twfV+k|6+%Huhc43T2&7o$3bkZC5ChuDzF_X| zy_a{c?ckg8{qMd1|KFbkfXDT?9@pdgKb8^%4;lo4pKgUa%zJRff507#nQh)mIb2G0 z(8f$f-h(L41!-0SsN|#iDOj`+-bh=&MQ5a*?p;ORSLX03vp2Qn;5X5@u z3$27mhcKWnvyL7NA)-?-?u233g<*V&cW?h;W(tYYO<3U?UM=(rMuwE^b zih6f3+U32Dbd16jub0EFj;G>oc}G2CRHjm}mNEH^@MN^hdzBQN3b8A+jB$90^u^>d z>$qofBT2zpA-@`oP`t}qCSPhu{jeDK50i!_ed;pp``~InhLJCJ`zZmO&PB(Etiv)n zEq0syV-PtW<>q}~5MoTiFemn^X+dbI$;f$6lZoI3u>+V3`njTlyaxqIC}_uj4$gAs z&a&<@ZaiY%v;Be-DK^J?qto%*hCP_e)A`bsnqukY^4;C?Zv&(l*bu*h4iJ0y=H1B1 zNZj3!?|U8}AAh}aE4J)E+grKWTu|IJ=go;(wVvX&Z@%O|d>QcvR@55`pGeOF}psJVNcEzI0j zT4Gl#wSw(rwPr(PrSfsCmi)Yj94%A3dfxO!mYZJBbZoWcRa~Jf-kdr&XU};}kuR!W zZp}>cWZuz(GwSZ2#(~ftFl#f{nhFMA(U7HVE$e6ngR)(SywO@)bEui~jwfyxi${kk zwlup`vy#)6)^jLJX5QAUB&lRtHK#uC#+&?1QA+L-+r2tpAAo$xsc$6>0AuYsu>_=T zmugy)PYpoXl27Y^ZV=?R-GOBnyl|;P#Ai$(ihted@6iFqGBY%Z%fOpGpXWD+0{t~K e6~UPP!TJlLJoAZ>R)D_%0000G1#n00000000000000000000F5OSa00009 za7bBm000xO000xO0b}Nl!vFvQmq|oHR7i>Kl`(IFFc5{=ZqCr(5M`!GvxBf0tH>>x zLs7e-_Nr6nh={o&iukw1*ch7#C82GGirYS(!|iApHST=ddn|LN=Vi zx81vZ69e$>)4`0c?cU{^7~p)xhBA2Ea_{m@48WVO%!gMoy4;#cmt{k{rP<;&3|{1B zhI^Om`p70cdKkvIe7xg3rhl%6?WwIN{Ls3dGM{kX!#J-FT!s4mB>RPB5PTihvpDT% zUR4j{%YpN!@Td)H_DkE~{quR+9zc?*)icf`Q?FU-_%`EwPpC7mnUVRclfTKLg|El9 zEd=YPgr4WNUa`_4nC81Ug{B?Fju8TsEZ8h!Y~G5(qu^~p7wMR|Njo9QzPV5VOA7Kl zrjn_t7LrwPXZ6>7ubWYfW&{wj6qAGjs^qtY4$SV@a jVxrTP{mW(Tia)Gx>tOjFm!-DP00000NkvXXu0mjfkaYn( diff --git a/graphics/object_events/pics/pokemon/followers/rotom_fan.png b/graphics/object_events/pics/pokemon/followers/rotom_fan.png deleted file mode 100644 index b1d5587af103e3f779fb2cee2a604674ce87d7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)Kl(BBxFcd|_KhR^-8f_=O2+%GXDA3Ke z;0peL0^L&y$Y=#+sxL6Ibx4P<7Alup{;gCO5$1?)FJ6#7QN*`x$%|7KfeI%Dn0G zlwQ9mqreRaOF1{pQ1C+6(;N!?9#82W^XWu;F?Rxpr43{P=>sWM;To!3zHfO#_qgzQ z5wE%(`$t}O0SGgl%LrvrwT8rmh9`871LH+f*?>AQsm|<)IEEFi&gDC6Xt=Ioqw9TN zues3$3-@PE01(eRrcTc)Jii_oUgz|{V^L~7IFvnoekiSuK))&9m|E6>k=!^non>2@ zETzhfVU|b9DpDD6Vf1*_*W*qHq=3j8)`6S?psVpZ%jc-lMQcdB4J0uahI2X4&mA2C zYNfV@fI<0!7==k-!8%hajfF8ZOpWD8>ilYbv3+}I4QrdON@_U!YUmltA$(=>gUS@^Lp510mGb+zyx%~Q*d*FRps<9TX%9qK=c drN*+1c>{0Reeop}AQh000000000000000oRW#!00009 za7bBm000xO000xO0b}Nl!vFvQ;Ymb6R7i>Kl(A03Fc5}4dt<2j3Kgq|1kbzxL)8~R z>?n#N#F&kaAfdL4B`@F?2sAIp`F!WNQPV`N*m~QS-}nEQToNI!b**c0$xC?burF&a z;IYF#Gt=ku*kQQhY*{#WCL<&>_u1c)Qe~l(Ig2GiH*=ryQdQ07RS_=AgyjU?W*#7o z@*_ukcxKDhY`$DkgX!3BYfQJLhr&o2nwbMb!}4av4PQF4%*_P7TmcluzQq7!4ipv} zpr8S6Oy&vadV*fA03e_?91vLZ0#XC*cjTBY@@bt79WOlw@Jo-Rl*KNCQ^p_8XF`4mYL)}-Z2M+pc15oh5%&z7gz=O^lVQ{Y2b~NRe|H?nH-HWM+x`BQ8idruT8krwUZ+5v8k)lZm3;U*tFXvW zI%X%17VNMbFQ#D`IiXFz9X6Y2xU|JLm$0ylb1LX@B)F`x;=o z`vrLK0(y)M_(WdxAfF8Qd^rs0F*Q`LhX#GV@D5HHAb&hP?gn^5fN&dMTQk7YZ9eYr zH(Pg<-M2s7?UXq6hYqY03{8WKXOn^ZJgNFEXIT7K{Q<-848WQ7`>6l`002ovPDHLk FV1j=U5~ctE diff --git a/graphics/object_events/pics/pokemon/followers/rotom_heat.png b/graphics/object_events/pics/pokemon/followers/rotom_heat.png deleted file mode 100644 index df8ce752d06cdfb3f5d3c459546c1e0c1823ce0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)Km9cJvFc5~>J&_KmD@qiJH%RABbZQDi zI#(!bS$KnrwL_LOI zwa8f^U+2N1pcv!OGE-vQC(5}5nxN&TJVx;Y0$7~$WKtEpT2)c1RU{z z;w>wjf&6FRPi>!A`<|-qF*}Wc(|2w8+k6JaMYY?cyG;FG zDj85xI8+cX1$ScIn0Kv z1}N%1`H2Am0qN=aK|w*eSs?%b00000&UT^m00009 za7bBm000xO000xO0b}Nl!vFvRXh}ptR7i>Km9cKyFc5~rH_!#RqBYQ=TOXkh(6NgK z8nDo%gH<7D=4Q$2Fh(*YK!GkD49Koa$W!KSL0|~-nn8fyB}Y-BcubsTuW$QA>i>U{ zC-UH6U;EnEe^UYgp5qtG>>5ESWwe_GL~MG(Y5xM zh%@=s%pl-h3B5+aq~@EL&+%v(tzQzqE(E8f<})!n^s;IVikxgd<#MGVhQRQAmYhHMQ?!bNZ3GXNIlk_2^S1p#x* z)&R3}f(s{TdBXm5N_eJJ_sNeK^W~b}S?6tYV_~_l24CJW!Irn%dDQ*5SggtPTveSw zZu!>nvZC@08g32#yjObJ2-;D{FzO8Q&Gk=p{i_!YxG*cCRME0XEZf5ZmumX4OkHBb zpBl#48LSRptHZZ_Ld(72YHP}!K4{qvi{wM0E*2(nbNUkJmPc-Wp|>|Tf9t{-aOQ$W z!}81$=%N#h9M81wFFi3J)Ox1jX$}NK7BHwvAi?(Zwam^UbAN&N=n)T$q29@$XU&ZW kJ%?B3Kg#+=JNcP<0OAy?ZPI%MT>t<807*qoM6N<$f<|RqeE}5CQBhH`>G45fq1kaU0000000000000003A2Fg00009 za7bBm000xO000xO0b}Nl!vFvR!%0LzR7i>Kl|66UFc5}0W#Gmk0t#nvE_Zb`mwb?3O9Ae5CiXU4=5l=oLzWF< z&pCEk2T<*`$Llga6UNF7^TYv$HD!a6F}JW?))`hetKR2I5W<=6F^_E`d6{)qA~fUl z7&57?Ki>)TnFgP1A`~w%4ZgAsW83EbyKDsq&usAAGU)OtgKN-h8+6$UUSF^`7qT(v zG7TiQ{Amo@OoQJ)Tkd-dnR)v8ql8~#>P2;2T{nTWvFmX>!g}q01G_;e>T~0`a5un} zlxZr%gbTEwbH@hdH4joNsH`BKvYI(ME`Fu5ECIN&7LJ|6TBqvPEL56k{aB!(W9Xre zLIk0Dc=(}06f}lA7T;0uGE@+u5Ths3=4xCtP^t7eA4)L5*B}_~*o>a200a5O_uoq^ zxSkuwnTLXldi@|shwZo!%W^t?JHPbho#E)YR*s>ELh`B-j8G7Ua9oDC!nqZUgsz@K z!@7QJ$8tLUzy$~vYf&54j6M2^UdgfV`<0;4!m+%;J#ZyMD@f;74>`2V>m|AkmGsSG z7>VjL63dBY*fiJ!W9ZZhDioyfr1i97Rc(@K7RvCh*nMX7eHKZWj;!llr*2mA-hY?R z@DW-=lLJq|5PJ-^Oq81B1_f~jy~=^rtlovoEJ`D&q_x5FJc<;uI|?Q@7{$)e(rSiV zwz})p%%<#r%v#FpjZZ-k3Yv4Z9Og4y>~d8@tE9)ov X>lU>#7C}JS00000NkvXXu0mjf&x(Zw diff --git a/graphics/object_events/pics/pokemon/followers/sableye.png b/graphics/object_events/pics/pokemon/followers/sableye.png deleted file mode 100644 index 97f7ccfc2d88b4fba2796be0c76c4eff16c74a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)K)V*rMFcbw~qfK<{6BrGpu{#z*-=`#C zI)*+(CJ_p4WGyu`AX$?)J6neoJNKa~I}l5%6uJ~T_zVf3e~uK#+$fqdWy+K(|0dhZ z#_{kq3mKhELXL3l6uNFBMEcKwkr-SAo!f=3brniWVlH4C36yliT);9(_cb-@TeWy=^!Eu=BPo<4$z~#zNP9W)gH^C*pv4uKVD4 z-j?MnedS#@7P{_}$_1!HR>lGIQt84{QJ))t&yI|Ru7|>#)suRBPUC=?lnSJj)MpM0 zDU0#NcRduo&a-AY&*OlZZq#AaXMR{^Ql9^>AMS(jJ!@VbP{ z+S0aZYDR;mZ@jx_W}oZf*pY0iP1*)s?BBlfO8Cu0BCpNeI*x|XFx$q~sIXl} zY)5hBH>UiyFxwnQ{qRC^U75oSHS5Ciy9^scva$9HiL-#dr6Sggg*T-7^?BUp)-%Vg sJ5BqaKmQQQjNEpV4r31#d7ezGd?xA)!hp;Cx z7>dbpOvOS$Q+d)@>wJoAsgDYkiD>bm0Uyd<>`i$a3xV`t~F$*vq?Nndx(ESzGHHCD<*qiu%WBUMh2CuJLDsHg)Qf z9=+sdndz@Q6c?M--TCQ%{8gD%{L#RKhUtuQjM*Bn6C9C!)Z^SOG2WibtKsTw{*rTU zl~@gUp-*e$bP9P!!S1aZ(VHcY4RVZv&xFQq8T1l^9II0S18bX;XhsF@@nF6fZ&u;? zGPsTeip=>)V~puuVvu7(J#)0M$b<16T32w73lI;7tJffKOjZTslo}dq=zM38Wnzcn z08sGa9`5n(Oy3_q9qKUO3KSW`0ciA6gDlg3!;PU&$pep@UIk+Ze*};Gr|&@by-1+Q zrtg^m`*?DA1rPolGC)C-n{Lf3GojqAJI6LVb{yh$tJoqwKNp^f3tqv4)w=~8=vaqh zHMhisc8P5W#_+Oew~`5cJ6{H)xLjaybPPY-3hDj4Jp)B1L=q{b#&jtyYE?3E0u&4| zzZFaYVE&KLj6l`{Qs(IO20|D@=;R(I4v2+lSk?UE!vqF1+_;7ef(ll%GGHXn!AKN} zjDtc!$P6II@&H}JPw~O~!^bf<=GT0_6I6!C0b~qp z*8gC$o|#k}u=a$t`IhC)4QaI=(?k#rBfh!W=AaLaQC2WEd<)<2a@4nt7p+U<#7!1u z!t}!@dh+2RqlP;{Wtdju6Sq9R_I843=py4`NLTq17o^`z7p33S>18^@tWUO(u*7{q xc7n=~swykjgk(Ql@JCvd`BJ1E3ZFoqjZg1CM&9dp_FVt~002ovPDHLkV1nUvq2bx7VL>6esfhsr0U=>|*{M0{>G^qSSpfk7000000000000000ici1R00009 za7bBm000V|000V|0Vb6__5c6@e@R3^R7i>K)Ui&(Fc1LH3{i$|CxUD70o_prbAzlZ zuvN5TjoUPe*g7D@XbDBf7nBd69rBgLO=&KU-2sUKDL3_pL$!|oHtT;UZtoas8`264#FSU0pgR>KY5i|IP@ zH-K&7cA!s`SS?|@q1S2pSn$NvOX9ZFch0O1#;*&>n}(*31=H(`l)0TkfiSf@UCfaV zH+`5IsnsoSe!U%Yp65zAoZYK9BwIGE3yP1?@-t7IM%@q{Ufl@{Nk`MV0J6uMta*wZ za|Wz+0_vUMDk7J%o42h)UXI5z^6z-orq6`&0$d(c-6D3H?hWPulK9YYRF)Y@1zA}x z$w0~0v-bLWCQk#G`;@*3y{fcjUC^G_$puM}8LL^d-l?{=`?L54K|7z0_>g@#00000 LNkvXXu0mjfa=h!D diff --git a/graphics/object_events/pics/pokemon/followers/sandslash.png b/graphics/object_events/pics/pokemon/followers/sandslash.png deleted file mode 100644 index 7977fb8fc91d427b88177ff1eeb30954e46960e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)EW4KSy{2MvB`-s0RaK&>G_FaDKQ}tDQSV>sX@V^iJ@sBzBqal00009 za7bBm000V|000V|0Vb6__5c6^Pf0{UR7i>K)G><_K@PSq>o}mZ6 zUtnsngRm&bJZF=9p_^)A$UYTmg*Xj9! znRxWDqq{B`;!asAqq4$SYlwQIAJs@(uY`wv#aFm0wSTuL2s_pB+NX@fgWU|8#LKmcMV)KorMM7AF>#OR-SIk~`NzHzp?! zsTg6m9bQ_ebJUfk0x|I~B$WrxC`Fb&EjsB z7yScw<+&V;S68Yy{#YBdxQx>;Xd8DkFQi-y?&d(LY81Y21S~_D z2LeoT-!U|-Gg$KxoPKAsGh3536B?1H^Orw2{+Si5nMP$krrPypx zaMkSV7E=`iW7r2)kkCZ4A5ThF8JwZu@!SY%L&Mp`td+wzjJ^6auN7M?E?~T17=;y# zGsDqjiFNicUzQ}xtYKyt^Ho)N&xi9owUWq?%q`=V3L#}Z$c&&iEExhN^+ZY)eghHC zRz?sFBg4Vi&O7%f(N{5wtOEy?)a(J)gmLauBd85a#$u#8UkG}crs>oQqM>0=F0Ejy z{10L@wgzD^Od7_6DdRmR<4O<>4Vx3oLlsztB9DzA8dhAU%&J;MiC8RHubS5E09eB! zBJz+umxJmE#4p2CSB!YrOfw;;m7s1aCZejj%8LYNjaM9uvz$2$v{-Jg`?(QBLt6AU z*F|2xvgiv~=EuGfM8lfxq(&(!a+y|h5G_eFu~`ubX>p06At3+&00000e}i@500009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>Kl|66MKp4kwIEBG`zX3>mfzBST!L55+ z8X?rdMTr$Pjl={CqlpehUQm(v08NL|A*iOZdUzusg^WiP>2%+P=lmAiy@rX2K9M5- z?wg|0MWd7{Z!u=8a)VOg6DrizgM$ChKS#Ryh{V1Z`l111;#-_c2V_ zsu|YV3LG{=Z`SoT7zCLePvGx91~02-SYsscmBNQ4+qm_)*9;89a&F zW$aXy+wNyfGCj1vq#{&-+F#lxwg_SS7yi27CZjl{!U%H@Ig0$uGY2M=~FvG9HX)sR1Dp7yAVf5n5yT@*LS#yEkhM3WKqy z8E@rZn=ga@l!iOgOi&xezc;u)34hw1JcEGRzs(yR4MIw}uo3N0Rqyfu0000K)jw<8FcbiAfi-0_5;#Y`gnbg#rCF?4 zAZR{CDQ$*MM%NSJrqV)t*+P~m(}fJZ%NDMrL%v*PTXJljlR`s>Lf-cCJH7WL|2Y6& z;wAo@fY0rwM#UON!~W-8LSP??6s1PT!YX$Z3?oJLDxW>Xm_BY z!Hz-kvDR#OYKOLjR>9EaNrll-1b2(&tBF8!w z%w@N1WA&A(1ZnzxIqZGAC6=L)Nrw#WEILLfrWt3;)kq8__SBNsk2o@)GZbfw^FhO8 zqf5-pg&QZd4aug3Rzg!}=*;rQV*iYCk(oB{-Q){aA~JdyIJ9l>lkSoUrim*kapPak z9IX&WyVvm}j!0HsoIVU38qPL6vp25r1*P-dw8_Wo)9X^*EUtV5Z`|a?N~)Vxdrw2# z2E^`(#L5?(Z5qFFM&^R*>BOAlLGzdpIx+sKgn{jj<|&hlZ*uGl&c?OVgXU`!?GYk{ zEXaXt&>A`F7~?lLt{mUnu(D%Yz<$;2MA@M)I3L%}BWL9DN60libottRqwhDFzkjyh zJ)3vjG!U8K6#Ie-;>x}OAU^LJAfK<_1J3R~Qa)`D92fHsx4id{LttFQh<6$|`wxC# z|NBP8{2hU~{W`;(-4R-(-3GQmPSPXP7Krw&eF2~6=wZ)sCm$)hO!!CE1|vN-r)nK_ znpX21^$Kq1eZ%_tL8l_=vt1BISn#R5eYg6#p#}daegjVOPa+cd12_Nx002ovPDHLk FV1hmAfT;ig diff --git a/graphics/object_events/pics/pokemon/followers/seadra.png b/graphics/object_events/pics/pokemon/followers/seadra.png deleted file mode 100644 index 64c61f85ffd643510743cf55b6937dc965390e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)FN1FK}o5((MgG^`O%>>@c;k-000000000000000bfRQ)00009 za7bBm000XU000XU0RWnu7ytkQqe(KmOX3RKp21zjtm+dQ%c6Z3J7UZbh!5E z2Xv0=iY6V~Ur>qkP_{G_GTJACdl{WV$^FVoitf{OhK6o=2g4(Y_jx~jLI}OYOT2`N zcJ;jbPX|s>o+7e0VX*4&i+>m5`z}HEvrib@qb$V_PYJO@KI5&(DYpc^P^Ns98}@|= z5gt4FJ;urWZj*<5g(!z;if!n_ketDnEKg+ZGo5}?-odORdJmQwyQOZJ2)7%DdZ3r9EykPJXC$mcG~_s5^4 z`~csM>zGbtU@zP=xo{e0tvg(dk>8&bY z^(cH~OySFC=*k|S_PM`wQZtC^uWG4y6ke+W&P5gi6-u}`AB0qK2HnORvm&2SSu&D@ z^9wzq`LY*&oQ;gHqBbL&H%f@F2H{#WftK0F$YWHz7HtxW&E!<^AY>CQtblW1GtJNm zd88N}5So!vZ*1UMX#|*xXWgklh`6=O;mV>LAe)Sa+x^g%3cju^Av_C443K_hs&X{R_f+zSmC%cf~+tAIgx zqBsx}poQ)SiFMDfkR8M|;wh`A)?FloSlI>iLd_h0!tGRVB!Kukte4gf`iu}dOdzy{ zNU+9v|Mo%+obv{o{(?A$2D=UH2zHn`?-tau+6XcM4Kl|b$Gl^=0fejiY2LK^83S|L r%_3*sk3rIBFmb*Yx`Vcx|Nq4wm6Q<;${Sc{00000NkvXXu0mjfaMotW diff --git a/graphics/object_events/pics/pokemon/followers/seaking.png b/graphics/object_events/pics/pokemon/followers/seaking.png deleted file mode 100644 index 6277a92913ad1276f19a6bb7272a711df435b8f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmV+p1o8WcP)G=Tx0byZb!9i&N0000000000v!Cws00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kl|PT1Mi|Da&C$n!RkZ0m5;9C> zDV58UW_7o2(4ifL+Yb4gRb-}wd_C&(x)UmzbV!!W}F*^O-}?mPv< zk7b@`-ak8N+Sl=Qe2Jmc;q*TY>W$|h@CMT-5A*$zAM_|1%~}BMjSld62Bn)G_R}F6 z%~~Lw^yu>pOvK`mAKn|NlqiEn7$o(;z?jGl*=+Lm>VjM#*hJWn5h8En5fm&@8IasZr0I2J)H@w2mE|?;>Rp{EgWz#P>uR-S zT^INO_boHEBLh{}SA@3XS9SR@tvI_5lAf+uHWwW2uyny@m| zp%gj2t)qkNV~Ee!S4&8wf{z4;0*$;NWJMMkgd(6lqdp_yQ$l^ZxU4ufu{?)ru0Gz{EI^j50tV5^=Fk}-d!!defEKnYBnon zd_AiGc*vU-`GecudWV^f1U1ulI!1-qa&txqv1W}lP~2xoGph}G@$Gkn{MyKn6wBW; z0GD1n5EdQVNO0(4SyMvJujZ(+wIMgE#=M9dvi$KmA+NeUnC~UubcUvj5EtYZENi?L zj5G26yUpbrVp((KbZy^r|GxwD%Nz3cp8R&}#GRpJY3Spk#IqkzQ*=z%e#04;g*cnu zy-b*8ou)pL29irh8RU@FT=24FaV`u)$r%Vk>Sg#(%W6<6KY0d1oJ-_(^mm+HSuXDl zd%!jiRHaCJ$QW6Y%j_ZT45{Mlyjy~s)}V3a`xAaVeZqUr>%X{yz0oJ#cyhMgSne?{ z>d?1NeQ46de3xekrF*%S2iT7M`=4LV(__rQKG|;hnUo%8aej^zGiPF;<*)D3qs+u1 zprhVk!tJBc=Xi=jaT?Qr4cSfZ5pEximrwAcBcH6A@_&tg00Y@wusSF>#U6+3B&l(Rp!E>FN1VQE34I0RR91>(!B%00009 za7bBm000XU000XU0RWnu7ytkQs!2paR7i>Km9cBvKorJr(G+r!p+lAq!X^L6Q&EQq z4_46R$vHA*DtKy^o{XU2U4axbcIc88TF4r@x1g!Ku@{3S?52-2*U?_!`6HSzWo zR0We-#x%W^%@*Std|>PuN-U-v@Yq9A$I~ZgG7m3j-)33!G~Kzq z*-gtSv6up@d^id?1m>PU-lXXn49clnVaGhy?a}G@%XpklNj-NL2JJc?Pj+{%aV0~+ zCFfCW677zD^`Fg0<&;<)a-BHV24T##L5vIA^wl{E_F@#&takXZxq?WHZu|ZDv@i)B z!@1E$P>{xvF-$`I3iSMSOE&bt2qLQmp9d!33(B{yF@I;N^OVkVhS%F0mulR5hNFG3p~kA zN1y26_}g2l*LovZR~tUptPNGoyraYAJ0m1lh9z%xILODh7GLnPa z@-m%J8fKccp*mC|{Gf=J2314H_X7YqqDGKhp7_33{fiVrl>O?L=JHAeDYC`xKMg5Q y^6FpgWxz2!bo~Z}bmGeo2S1Gf00003K{+{radBBm2>}5CVOdcjAsOk(d3jMOK|x80c_{z@00000$^SVm00009 za7bBm000XU000XU0RWnu7ytkPFiAu~R7i>K(J@QIKor37;&R*=*Dm7XP@J9IP7JvA z=(!1gfkQ3VSjUtmTM$q5BVGoc4QsY0QqDPi z*|kS#NDW)pQM3v5)3S?C*D!R~JJvh>`s_99*^}Da5<|CN_5aS2&zpVc{G2?GpPn@q ku*R9p{&PczjSGL-H~Sd8>GSk`W&i*H07*qoM6N<$g5J!>m;e9( diff --git a/graphics/object_events/pics/pokemon/followers/seel.png b/graphics/object_events/pics/pokemon/followers/seel.png deleted file mode 100644 index f5d2cca52acddbaef5bd6610a791da443852a862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 669 zcmV;O0%HA%P)jQ2_w~;oB(VXVPWa%`2YX_-wAx-00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls%5yFc3xs1f~vNyOGxh6j+Xxk@gOCUEWJgrxpvXv@JCK^hZq@g$P(^N^Y#xR3j|kNfy< zL!=(A(sX8OHx};{WU!)G!J&oxmN0q!i_nWKTP{GvmI!=du*QZhxDfi0g-R)h`>;p~uohLdryF zH`~J$*|Ii2R`P6Fsbn?J!rUr)C{(zx^&pXZMk)|BBuQP*u~;vS0Hf(sqCx?!t&u)5 z)?BbR)~25047)MibSLaTwMSbLv*93cERo%rg*&wM97~8xRhG$k%nQd+2hZ&pP~w=l zXDSe~Is=^5Sb~M)-S|GL;Ml_M`!wHjKmYmT78{&4?3vwiy{!PYYB(k#J069hYaQdg z&d{;yO7`L9^b}z;_NIWSe0%)-@^uho+VRtLQA^u8#!M0%SAEHTKJ2g|UzKCt z7xd=z`}9i=r<%dhGHE9Knu=1|L*5kq|Jz|pdv%x#&H9K57`%OY$iu-ZbYZwqWLAL( znkiI>Q|3_9um0Kt>!9mP$6-GA-nQFv{^gYi|8V>P8YMM=K)%QP00000NkvXXu0mjf DYBe(O diff --git a/graphics/object_events/pics/pokemon/followers/sentret.png b/graphics/object_events/pics/pokemon/followers/sentret.png deleted file mode 100644 index 0c51731d0780e63c9060f4d309e4511ce4bae1e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmV-m0-ybfP)wae-k;*};J^AsOlE`H3Mh(W!x1NjU%j00000Jm73500009 za7bBm000XU000XU0RWnu7ytkP)=5M`R7i>Kl|M_vKp4hvNbS_&prHgb7_Hv0r^@E*2XN|LGK+# z86H*`&^wjA@|;ZYybw9Ei17et?sZk%W4VAF#{nNVw_yPjuX!?4@uS?%FB}`b&lh0< zR{>zH;)kccwC7TmHllWUx3CM?5QctB!R~MxV6%idUt$AcXtmVbfq(;Mfjh4HLx6zP zb}LS}w#5NjXANsGkwL`Ba0E_ZU1j4(PB8GtsUZwRJ$!GN@OI1VC;%d5iCQz_Y=B1f zErf_8q$yA1$<2L0!gPaor3NqJS*n@pJdgqe?gBdZi6NI*m;NISp2f3Nv!P#e7qzf0 zkhW68s3X41c8&>W{Y+lM3Q*5Qi&nTr+2n8gg2bMs6LdJ5!e2fsg@HX8;~(5wPR2fNqRninrxVt9_dv&{fgMe1 ui#`DZO9jWsHfGiU0000KmCs8XK@`Ua_7a$0)*pltJUChpje%@7 z#nLnf<46xZZK>qagY*yt=^@at2R(=dDb{2E0#88^HW9US+)FMMj2BaSaGn39Z#O^Y z&889rd-I+0-JSh>=FPq&ggn+`^~%UT1m)}9IluG(e7SaKHaOQ?xOYeJfIqjTUBWrf zx!%IPJIXK7Oa%#yEY8L(=Ow)7p^iosyl!4-$aTM>)r! zX4LJWjz$#?A2?l)2~{2v#5)=(;7~&7LX>k%N+l3OLff_pN%W`MufDi-L%Jz<4{@qSLUgw~NUx#CX1esb+- zPu5Dg%HNWKFaj>t%1<=`76MQgv{?anv=9;jY0QUj&8UUCu>YPgtg~vZoZRq~AQE~y zP~G19$b2Ow?XK6Qmrox91Zd#MOrVSs?g;cFb^$_y4Pn(k)? zL@L(+kvEfWiG}TVg;6~@n{+lV2Ed*$K)@5HqXegw^o*VBKb+@p+;*I!;<6_5agp9&rV1_Jp=E{*fIhACvjIZ4s*QbL$1Kd>BI zkVqJnf4f`13KY=41)&D)tRO#S>=@-8DvGi(_97KI6RYA_O3Sevj}DgjY`e}7(4XI} zw=`g5WxSyBbq41hIPDH&Rwp{O#40f|(i*dztZEVn`|6FrTfN?{XFLo%HajRw*)cl< zL4q_He6eLwMoYH97sjcAnhSdUd>;WJGn{Er0utT#WBDh{fK+2(?8|O>if|)4cnpg- zM;HKyD(zU-?jK3mzv8`uFN1_iIG8Zp>Y{8`O#6Ksj(qhiAhme*5qyi00009 za7bBm000XU000XU0RWnu7ytkQU`a$lR7i>K)iI0IKoke?@kp?+IJU6RR_tt!w`qp3 zEM$T>g#?ly<~TcRudxv<_X8Zb99v2H&B+#W*lca1m6K$5FEdGI zIZnHK-ETJezn4iiA>^iR>Yr7x#aqf6noTUn>}}-*W?#2~1%c6o*pAs-w$MYfw>L1` zq8Tw+uJ{hSiW?0?U@{?GI5;%en>(|*wT2;L5F1Qv7!1HMIGu}`P#TJQLm3$Rq}wC` zN`VHQw%obM`<)GaikYZQteaS25eQM2i3g4ka5*w_=YHN_+j1xho^5{CO&Iq8QUK0| zttOUiAOJSIu6pMIMMOr|SESowxRimi_%dTn7Z*@nfw!JX^`jZcKu*_>zV1*?TLpS@ z>Y(9OpwJp@ypzw$qbc4cZ6-EPQ|2l-p7T>Mjy5IOOh( zdP~2}76%S+0o0?c#fcn-$>LcRsJo~)JauzGe%NN)>qCOYNMRrRrjw7r*->ubbPyb ztsD@?fx&kC0tTA}i}{MHu2bdxEl*KMZXX-{d;CZF3hTadpzhtVt?apOS%>6Wj)}U5 cy8mDO1xET)n@>z2S^xk507*qoM6N<$g3OFq#{d8T diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_land.png b/graphics/object_events/pics/pokemon/followers/shaymin_land.png deleted file mode 100644 index 68c97d6f0e61478cad411f018f8b1e60554b2716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVK(!WlFP!tAm29ho;jy!^nZ3u}oktZM~ zhKV)|PEGpfHYrcQ#(2C;UDVXAgSo=M!hpRG<-Ij6aKcqnqZ8lu-!GGm%`>UMs^UcvZY)z{urBIw}4mmU%u|@U(KntafgSo;6FlesFmMa+pljViV z@0SdKT`9~NTtHeEVvCh)kfD*vtLH@cN#P2>1jtWy*y4fPZDJ<$(f`7rw80Y52kEH| zSzfw}#g&KHSJ|uNiOO!v^QIiK<2%9rEZk+gx8{Pj%L>FhDS4*{<7`{{^*@0v6K$-K zHGG*Wor#Z{<=viH_pw)*ug4*_%!1e>+g?nSUS}c-FYW7?FnTJ)KAg%~jzi+sc7^9n z--My7@L)FFc>DTz*oWv7Lgq~iPTF&~J$LK59+1ch>O$QK=7FQNLo}Sh^v838Zy+7_ b|5-i&q9q$gYXp?200000NkvXXu0mjfB;?z$ diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_sky.png b/graphics/object_events/pics/pokemon/followers/shaymin_sky.png deleted file mode 100644 index 22165842aece9d1afb2cad8cb6568be34dcf6225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1030 zcmV+h1o``kP)R9J=WmO+c-HWbI*F&c8|vCw14CkQB6HqP9l zLntW(Qo&l?+p=N1^9kBhpc!x%UrI2oe5`A_e#~vyx%jrpf;;4}U!dQml4DCxE}gd5 zl6U+0y{G@*PqGrvJI6WBagKBRFM})zUp`vEm*mj`Cv;_RqucDWn*UaiB%yTH?+Ox` zgqHt7faD(c;`e>-iDj$j#rq*zu`5UtnKJ*SGjr7yEo*@-QwETLW^xkH5AyiHqBji^Xt}QMF?OJN z)7$V5GI5WX(h%bXvj#{ge>N%)p z=!_tRjLppi2xP&?Fa`LEu@3;$2yAO^40(gJV2d}!py{R*Gy|p0$d!TAOhEG-PvkU# zLK#3?peC}lOw;1P(t=unw~8Bq+JRt;d|+1dsOB~svzhYxhe^iTT+z8^)JwvMRd^yw z!!Q-MYQeSVvTY~H;Q@cgn0fK5I;B=$aRg{0W=Y7uNX^Ho4j4q1iM)M~U*B5+%~%i) z4`@@@FA)bnsiiiyRx?0`?4Kf1w!Y1bpK%I^{om5!yQwu$^AkG}0=Iw+T)#scWB^BO zKymf`u&aOh>Ie`R1KuZ}$B2E^6g;s_H6ugo0N@w9*mbGc^nxh%6!j{O%D);YBPd|# zaBexsMTVPdzO%)5Y0qrD(}A$T?3(j1S<$pU=DW^=kipX+KH^E6X5uArw)_p{R@2P zZ+OmjD%=E%UVoS^UCKg#v%+l}XjdST~sj3Ej4 z$iQsm{(;Ex3@?Y|!*e(PJL33;j$7h11zbU|a}VfzkGlL=bPfI2{J)Ps0YmD+veZy%`2YX_07*qoM6N<$f&v2L A$p8QV diff --git a/graphics/object_events/pics/pokemon/followers/shedinja.png b/graphics/object_events/pics/pokemon/followers/shedinja.png deleted file mode 100644 index 34c74185d9305b143c13dfc8afd561abc42cb15f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)FN1-X+gQM!Fh3sIWb8A0RaF200000K(!Yz_Fcb%H;Ul*M4>m`$)L;vNmKq9O zO1A`+Oo7ri*A6$dOW=kMF)nZNR0{bE0vQ5@ETz-IjhQ-h%V3)jb8zo}shnSDDRRgk zkT;loZ29~2nSdOTCN(Xm_=ln(`9PKzS#*uO2gEyvBfC~y!0twGs#7G z)k}oOI%$pbZUIGSX|~0q9tmXEeZFc!Y|)EFEE3VHbLXmu!mTkEtev~veV}e)QO1P~ z>@rGCCNvQ1YE$1}D;A>bGRWy>KHc&T3@MX=G=Ru#5aMlLzGk!~TY=m#z_x*AIdKjw z5^*Qy5!M*Q&EliXGnt9D14H1j{ZHvG-zf4nz_3%G*%kuaEIvV!o6JN@@JOytcMVjR z6=VplB+GoWZN3SF&}1f_4|%ek&fs;R`^Z}_a>qA2fCRq(lNay}wz|0BI1IwwC)Hf; z$O*m7K`-#kM!srge~V{Dm>O)iLh4O2$Jriv4vyQ_ccd6s%6T04 bT*vA^P;yOVVc|Su00000NkvXXu0mjfCg?&Y diff --git a/graphics/object_events/pics/pokemon/followers/shelgon.png b/graphics/object_events/pics/pokemon/followers/shelgon.png deleted file mode 100644 index 5d959acdadeef4b37483645686ce427e556b07a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)iGe98xw*;d>G@e%X#oKN000000000000000Z_Pnp00009 za7bBm000XU000XU0RWnu7ytkP%1J~)R7i>K)z50%KoACSgKpJZY)UBPqGUp#@hx6N z zWtaab9=yUH1Z3E>&E0je)yo^Vz4zGLY^1i)366`u_3;^FvyCCOiT^fM@xeAH=(PVG z5zp6;Ol@tPs1Y0v2t!%38;t@baNd15xG)>D@^ z@N5#|yyrA#lL=;NtNq0E;muXOfVh0)Xl~v(5r=~x%m3a zZ8@BcTwZ`Fgl;{A($M(&YCV$Ur;P$@UHsX6)jeW+tM!7JHrBJ|=e+|EY!((k{xi1B ieeIE1r;P)DKY7p**Q5$0RaKQS+Sv^@kt>;000000000000000LP`1$00009 za7bBm000XU000XU0RWnu7ytkPw@E}nR7i>Kld)>UFc5~b*^sG2plgG`CR35zq*9c$7B)Ip=(7{A%dozH~Tmj-`*|)^ZoL07koVgsPbe z#2e-Lw#26}P<Yw4h8C^1o8$T+%P5)zz$4+0z~b7HF1ss0!&}YRr!j5HmU+N(4`7MLwz8we1s-O zPr^-sWEQ~LT(QYO@8zDZOb6Nk!>fsjz;BL8>KSiP0bcIe^cDe5SB3(CP$2ET|B(VE z>3QV-elie{nkzW#HJh#x;HCol+6&5K&{ya}G^@VSy`#k0RaK|**P&WF`1dMNoj$p$yopZ00000yVg3s00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>KlRZnrP!xtUWC+sb7V&HArBIy(5hr_1 zNeV8CqT(b%!NI{0ISvj@5e?dAK?WIQkpGkU`1`wMnde=_iORQG&|b%T_g+ z`Tsy;bN5wbC9Hh^(vUe_U`@AgW>dHrt%OH(KHhF$i58sRo)hdRGD5?urtpvuVj_{P pQ^RU&r*A|30^jE@3|ncOoOk{=xD1%09_Ii6002ovPDHLkV1fks1NQ&` diff --git a/graphics/object_events/pics/pokemon/followers/shellos_west.png b/graphics/object_events/pics/pokemon/followers/shellos_west.png deleted file mode 100644 index 673be6447347c9bca54aa9ceeef77a275ec92ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)xw*+%F-iGZ(E$MgF)=au(OLP4$?56&!D*3^A!z^r00000VCMxu00009 za7bBm000XU000XU0RWnu7ytkPy-7qtR7i>Kl(9?0Kp4fdgmdX|s7N7`{s{`YO5I%A zp)C!`*c6091J+2 zyUT?bMy5=eGW{Qwi+}Ss<}W_f1Qe+Carv6fm~L=e)&y#OT>fh_LY0Qs@W4|XsPj#? z?7~^hQddo{>9x`Wb$+Gp)!{5=sg4M^00B5q=i^z-QY2*Iqoz>jcgAeY;ARj@<>EMg z)fDP{Jd0Us&KL{d(gU5PUtI6wSG=Tx0a;mDIXO810000000000^XkR700009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K(>+VWKo|$`gWz&@Nt;1Jr%WOpltc%e zLa&>f>EdRgOK}g>&8g5YAh@)OsAmRospK-m;$rVUl-JkXU7A$rB;>#SdN0pCcPRix ziWDhQFN2QvALm%K~Ygz>B)H^ISHY0F#rGn-7?X?00009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>KmA`M=Koo#)uvkzA6x5ByLRF(o5iYX> zXJd;RDZ(UEDIk9%@5>-^fjnpZBK#L-EVreO3{)Rr=cLzAQ znJRV2lMw#6_r7;OY=h8aJjP@EH*x&{KOFh1Y(7QE0L*nWczsh(|Iw{|r(I zxeyCTF@&Uyq8TfhOyaoM&UxZvn-IR-dmR0g%&3{ge{V1)&n5=(#Auo$;W*0o$60J7 zLNTdLp2F4C^TcSHA5f?`MbzqLgkIyIXU~NYSbuKKWSKW;92Lu&z3AX_ zB7}yF3nyGCLzH0x(JT*(FB!)T;nmc}zn#L23xQk5hb39wXWVcXeY;XuI!+>lhKv`( zO<{2!v2|N=)*GT;-NE(Uk`VTls(x@VlQCoK*6knnDyLi+HB8uL!lEgUMtfz4RY1UsNDfFs>^S7rF@}F2ppXBU8NVq9>Emav;V#6>Bl9 zt%O>;)o{yrl@I?AU1%c;;;UYDH3PWou+&}UW0MA|DzNVCxEQa5QoVuK9^|+J-3w_w mBb_hd^$M(}1nKmD8GiuxGpc)naq$oU0000x#?M1Spfk7;kg;<>G^S?*=boRF;Q^<0000000000uV_7000009 za7bBm000XU000XU0RWnu7ytkPtw}^dR7i>K)G=$qKoke?gA6yssUS$*TC89l(gw`n zr%-qZX}3aL4@0~nE-gq4P93^*3>6`Du#?g*5-I`dhw4RJyu0R-f=dVgxcqW=@8!u6 zg!b8IpMCyQrWxKf`Y_!)=kYbw%Q;i8qb#}~Ysy(To?CknRiZQ{XGNLNe+(I}j zJB~)p6nm{z(~f{B?DZ$YVcBtNUe{3D0}t4bBpZjVDt}gX{D@eku|bvY*(HFAO_Ci2 z5O39gR%LHSzLfp~!JPmAY(LpKs5IkV^Y2?BdtGp_1XvD;%6JtQj8LN4)+XDk7lz4> zbDd`+mkLB>6pjG=1xoY>E10JSI-4eYJ#wDC5gZVe^}8_eKezh@uNseV*uB!~3U5Y! zfW}j#^!&y(O>O|e_+?;^9mhoqZ$=)%#qC0ATl5L#AEkI^ zxj|oP+VPM1g0flk8KpD60rNX&twtS7Y3;2_yKQc@K5-rKTZNBIOL#)f^D@8gI8Iw> zeCld0zucMOn)ETGNDh`7*2D(F3sGr1!|#GwksAK_+!wU~(mx#3iyZ&}002ovPDHLk FV1l4e_f7x+ diff --git a/graphics/object_events/pics/pokemon/followers/shroomish.png b/graphics/object_events/pics/pokemon/followers/shroomish.png deleted file mode 100644 index 2f915128ceb365b1435073c61d3c70edf9a33506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qE8=S-COt;mL`f zj)sAqjt3Vu8b)ePY>Z@NWCW^018WqHUj_e$1S7M9G@owf{8N0IPZrHtR+n)=q zU%oA~^2~WD|IO^Bi`QK&OA4RGt+9FO^4l&=4&lqncsnDyYi<>NFD|gVMn+0X-}v6k zMf>#%!!OtH-l@2yu_OG&(*}K4&e)RH#=TGyWKU->6F>fR5rx2Gfg-WV! k`|a(_?T_`={Ez?1q;zffVWYHtMxfyKboFyt=akR{0Li4o2LJ#7 diff --git a/graphics/object_events/pics/pokemon/followers/shuckle.png b/graphics/object_events/pics/pokemon/followers/shuckle.png deleted file mode 100644 index 01fe3ce737826022088c92c99cb292f92193cb3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0Kl)p>EKpe$`=aNlr1>Gc(2z5ysLQ}hG zaj2sl=qeH+V;qV&Nh#E=8VbF&6a~8#LC}BByQaAxUz<}92cd8K+`GJ&yUWEemRf45 zrT&iyS<~`wWnz4<<8OsrJr6O){URoPbuwg@H#m27Yy>pWEntFA)qKG7`KLN&1844H zMqRZV@=ODa&vneUBrRYBb`LTWJu;;gG9Brj^$VEoR!3c&!g;A22${Vy_-F(N0VoI- z6l?~8yv2~U1z~`Dr6b`$&IYNfJH>2N!p_K8%&6D#$}hHfJHYwi@NrtqE7#M##!dnI zu3dH}!i7vl_WcHVJrn~OlN`;H_p94jT0+M8F|Q{3PAmmNHVm&7oqV*$Jdk8u;{I_I zKgDDI9hn*De)BDf;<1Q>Om}4DTsEzW2+Wutb2@UOSoIm#=XEX1iL6~w5145$iAL>& z2cp`Hp{{jdrpnO-toMmsb0`sMwxc{vA6Rc3OuQanL3qb_ z!V(3SzF@rhW9CR<=dQo`TH?Rfm+}6*%W?2 g^VxoV(KCObPg+jBUN!N3*#H0l07*qoM6N<$f)1SlPyhe` diff --git a/graphics/object_events/pics/pokemon/followers/shuppet.png b/graphics/object_events/pics/pokemon/followers/shuppet.png deleted file mode 100644 index e4e30755ae08ae9b8dea4f9c4e18d66434ef6517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m!cGVPa+@BO{}u zXJTOENlin?#>RyU7alYWoC#Eg288a<<^~FJ7I;J!Gca%qgD@k*tT_@442)%-E{-7{ zoo}aH%xhKm_ZFLP4Jo2CcBt;Y{b%P# zYxO$z&aMk{EQ_E0S^VIBfuM=AS)};o7~g`TkJXB|dDouyoOj2eJacc{iDTDKn$JjR zdCGZILMwFFu?fCELgVh=wy-xSU79iHW3Y1hnVGU1)|z^G9bMG3ZPxj>7R5`SytOcK z-sZHj`<2LZx0f3V@4Y^KJ5iu5CtqM$Mb~DNLmdAz7=&*fe`K?@ac`8_A?XL3_b$B8 zdC_^wH}U(` z#gAU>t4!79dsD2?Xr({*%hs?#Q2A4 w$72D-3xeT6Rqc~n{y*3M_ujcH^WWj03{LWk+!k<0O$5c1r>mdKI;Vst075_7oB#j- diff --git a/graphics/object_events/pics/pokemon/followers/silcoon.png b/graphics/object_events/pics/pokemon/followers/silcoon.png deleted file mode 100644 index 9ab4c7665e4392085c397cb99a52f474fd2ebbaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*x1n1U|{eUf0jb z)h>`c7|K|L9IdAXM@-Xu%x9y)!O#8aJ*Y5s%EA#N9>*JogH}96& reb!O>YU0A>dgab%ll)`<-TuQMv97=WrqAzNpz!o`^>bP0l+XkK@M*O) diff --git a/graphics/object_events/pics/pokemon/followers/skarmory.png b/graphics/object_events/pics/pokemon/followers/skarmory.png deleted file mode 100644 index 0c3183449d7b086385b0af23057705716a57172b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1071 zcmV+~1kn45P)KmcfeaHWY@9L6AN`>DI{C%{AUxm?304 zQ?fMn)o6m(W3o;WDtHsxBpA9&2sCun#eD$>leT)f%C?Rid&-@L(p|NfSc-K1|2s!H z9?SZF{Oz!vdrzSIwomUCVDT5f9yvzhUki+gMvmG20@+AlC^&Y^*7wG@f{~@6KOYkNmt_L_|gc1ESWkEh|06590ebIWhu>b|1GB^)-1I zCVfDp9LH85wI&wL7$fuof|@yEkV|&C#$bRNqVBnM%f{vG={E`KG9#PMwZloyl-X7=yFRaA!_t(%Rtio-G!;D2jt?FsDt@_Xci=!$YdBCb zpF_IKS5dbD=*m|cy@-7S?Gh~4ipVZ1mpI@!iNp{4TyLjK=ZuE}LS8u#l&o+XqCmXt zH36<>VWkx)Q3}p74pjUo2FG@$;zL5M7b z>9?*TGWU#ef)C5&;6|o%AQf-WUJ;q~jvG(wDuVN>AuN7MvotNA3dmuqhzLYuNpuR+ z=1thf5AGXju?MM+tut5pLP8vJ37qA!xXA`tNGxNCk1f*7_U>MPvEyj?(RnVE#K=hectE!&-^zXO4WXb@ri&VKufz3pyOufCb}Eo7pVtd?jT p;T?g282a)n{vV7x|CRg?$6p9`LNL3+1JnQj002ovPDHLkV1fs_>k0q> diff --git a/graphics/object_events/pics/pokemon/followers/skiploom.png b/graphics/object_events/pics/pokemon/followers/skiploom.png deleted file mode 100644 index f9ac8a5d941a196aeea12d7c87a4b29d24574da8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)KlfO#CP!xybq@k10rEegP4mE4xE~R;d z&Z*GFL7IX~QD_S;5we72DQ?oCLMeokB~XW$^HAP|COP*uH5Ji8a<+Rv&iQ>Oe-x#z zy6URyZ)!gI-T7ww`u5vRRZ@hX8V}O}WoMK5kEJNzJifk6R|PvA4GdFmkV31Z1isNO zFWMwvbaSN{lAat|B_(iktZ610XmU7{0;EtimGY0|t}&YqEs`#6R1#{BxzzZsXu9Y8 ziSSf<$5kDSVGxr54o6~uWUOMGNMUpoKS6{5Nr1Z<7(g~kjMC6`cIojJE`?|v!}%#f zbP8KNUV}~oQ==p_H?}ccLa@NCb&zxEaL2t5L>IdGG`w>#EB z&JVcb-a8^=T{?|#&;z+0<$$?`@e#{2>Re9EbD zG6a44oOCFv&?6Wp7fM6=S1A-WDl^_I*|@44Ywt!h-k18y_@CD&qS`o; Ttp_yY00000NkvXXu0mjf7PIjP diff --git a/graphics/object_events/pics/pokemon/followers/skitty.png b/graphics/object_events/pics/pokemon/followers/skitty.png deleted file mode 100644 index 7e3a386fc339917144e8806224d5159e9bae8791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m!ZFXQHL$&xehT znVvs8XKoCPw6u(5WMl*?!2}1dEB6CMISV`@iy0WWg+Z8+Vb&Z81_s7XPZ!4!kIuIj zZ1WEp2(UevJXKL!XqALwtHy4}BpwBU;#u60-A_#RH>8!Eo?c%jyFk@UW=q!Yr>;&_ zMISB88A@MWSsDEN{i8b{^M(BmP1sicBR%)ja`tbHUUT+6{^DsY=)rI`T8M3$$Kttf zKXvad^O&V7v9jDp>Cl7jO%E$qZ~N-PqnymzHuHeX{{m0RK=Tqc#l!;F4Z<^DJ#9(s zXA0C&N%VJNJg|hj<)Cfv9HF+qUgl@wo|aZiRCcC(e10rvdVGzHr8>_$uH++3>!S3} zxGPG|3rqSft<7-5PyO=CnQdQ>ePur>x9oatJ*(C1I+^d<;vsjnrNtg7KYVZ{dYQWg-KKW(mj5XDu<5j;keyjf@xEzWwrei)nDOze z!r4s^HmCg-Sbntqtn|K8#)>}&&u=Qe`YrKE;AX@9iRz*|H!8jT;hkl3dY(3K?sWE9 zUXuP(Zf#lh^_c75wL$4;^S zd2t!Rv3Y^fNlB3@p_#F{!8timd4Y-P>G=Tx0hyuUSz)mN0000000000f1ydZ00009 za7bBm000XU000XU0RWnu7ytkQBuPX;R7i>Kls{|SFc^om2}GtYh0sqC(-xd;J-A@J zwOhwPQ$hzrj#CkuQ|Je1;UBFkFC@5{v=BX z9qLerI@JGCM9@m@Rq(T%F7_$JpX}eu9m40=uku{%5+;c@B_twwFdBfB+$CIF!VL+@ zW%A&*iUrx*(aS`bCQ8}YEQy4RxJ5*(@!MEPGP{?6MCj}0G$D}?(aQ@~z!IiEQ-NMpJ05IAFfdyYd`1_-B zbCEXe+7r7rdI7aXyIMkNs?AK4EXrc4!X|rRSp*?|ecayDiid_f#xN{;ox$m9mA9GL z%r5mzH>}?kC!FXe2#-$gPHkg!SksOh+y5HX7nAp^<%f3{VlyLbRGv#7ttrcM)*=7? z!`dceAz#YAqlJEvoxDzW^i5C zbZCiL$Gl6#zF4J9DZ}WLA0w;J{Oi?l)G&A+Hi-xhHahA=I%ZuW%oGJP>pyG95)6!P z24ZgL{F{m<@Eo6vwUh367_TLx@n{At5eRqi<4DN!=<-VLsxd2+T+V9k?%rSh19ZPj UG{nmCK>z>%07*qoM6N<$f}9yRlmGw# diff --git a/graphics/object_events/pics/pokemon/followers/skuntank.png b/graphics/object_events/pics/pokemon/followers/skuntank.png deleted file mode 100644 index 1e31df863a8d9e854f7554646db251a144c4caff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmVMk)bIeDJd!G>G{E7L1{5@adC0!*^vPO0RR91_i`PQ00009 za7bBm000XU000XU0RWnu7ytkQW=TXrR7i>K(!q+_Ko|$`VcA2V5EyGqAnf3_JqQJ1 zPra209s<(9p85t-5PX4Nq67(~&9zYa5-wpI_+TEOH_t_J+zm*Hz43v8HJrRbL3ZOr^%r}8}cyBUpiRUDQ^M` zoH8PQlw)hlXq?=M|0Q?o?d=a|7|&*Szw)uSfjLWAE)^VEThe>4Trj44uV=Gq;`=<2 zuYAJW1FJQ;T1f#%PL?syyJR6uA>Ld6itBk7I#a%~CHaF1q99x2t4u05a>BYao=62O zrqJG7|MKf|4$v_nk{z{o-dxJV={zVd_=%L<0&W(F;=fT!)nwGfXHCYx?9$#WvJTF~9ujD7xYvnH;UVbSjIExaI izCe$rQ25mS74sKK7Pl2|fk2x80000Kmc47+Kp2OQa*$Ej4TKCPB!qy64z0Qd zY^wMRoc;kVGy!qiLK2L$l@1{!Swg{s&x>g=AwFm`btvuHu|w;033w|ubWj}d5W6(# zE8XeqDy2i04t=r3J-W;Dd+#Jn5c*&LNZlZ$3~%ATuF25(B=esdkh}SC^K|?wHG}iiIttvAxdPdl{#Ue%y5StEwFYn zqf(PKa!HJ8#s(-+*Ow& z-AL>Rn^m>DTxlgSI&g(A;+YGB{mBfa)m62tKCI^w7*ogB@!zW`S5;L#XLZXzA&H^J zi(L?&WrqojDHuC66cA=t*lCbW6wk2!q?+pWK4(hpcvdRZt>)ucuHH|nvy|2cUVy|P ztmK#PW$xXtXgsv$vk)@c0bi$i8prt4-Q~bAeMb78ec*2Irz+9)R=dR$bSL-4|yhF$izQw6RC&jR;tc z@)Rj-xI&`y0G$Ztfy$1yTOdwxq0At(bqcRteWT9<3Le`zAtb~(@gN|==;~@jh`Hno zflXp8nSMaQHnh3cbdmV4A?J<08-Qv=R49NmZ%9#KoSz{?{QM}20doO^km&1|x)}tJ z8ZZelu`H`Vid^W7EX(xg;Shd(ew3%8?+|aD)qE+()kt@`_6LGen z8&06N-Yl3#Q8x_##n%nu@EQt)aNU~s65SE@1Gz9y){BCjVJHycvl-pFEPBFfz6RfI zuK}UPn#X+P2RgzWno6a;2DVc(2nB%%r_(up5tW}`biYxdT)|yeh_p}xpb7=@sbJn+ lfaQOUZmIaST5MZ#{Q_{ucuNtrxC#IO002ovPDHLkV1imp*2n+= diff --git a/graphics/object_events/pics/pokemon/followers/slakoth.png b/graphics/object_events/pics/pokemon/followers/slakoth.png deleted file mode 100644 index c116006819e1d275ed05b1b9568efbeed17f78d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)>G^pfA<Klrd}EFc^k~Ky$Id+qri!WIG2s^dDpk z1ou)wOXA#?De2a^h2wrgmky;%hqlluU3xUoQf`ti*lD1HzXU>3D7lziAlrd!=@LtK zm6I-Air-0(r0;$8N!SQgs#K{`rT<45;~V)_-N~|ZowF>PTKAiN<0igM*awKU3J(B0 zeSO5fT$J)(wCBgR4Nif?6|4o$B}o#Ma^6lb0tN?8Ci&q^GSB85+_^) z&e?2Z^Q+Y`GG^(J!;`)Wm}Y5skg`F#U&?q*ocMtXkldQU>OpUr!+;I910zer=dR^PilcF)f4GP^t4mANDdi9xO8vbeU+KZ<FN1#F*(6OLBYw<*>Pb30Rho@fdBvihMSP800009 za7bBm000XU000XU0RWnu7ytkQo=HSOR7i>K)jw<7KokJ*BSS%h2a|ZnQiK+_n07fR zF(HC3g)RjTf{uX}6%Y2{p(>ax@lZhsxOVMw1nWb%LtG9Qx@Qm$*mc7hS`~vRzR%D* z>yOX!$r(B}Z}RWNdr!JM-vMwJcX1d0Paw42|5^Y+h_*Q6u4gBGYXRaxsFPIp#^tqY zNwWmVf}}bFUqSc;x+$JQ*b}QI%@g<=i3O5gMvA#~SFE<~TMGc7%sHz~xv$yRIEz)a zqt}dvXuVGc@py2mh>0E4(FkRFxXKM{s?ijXR9Me%97hIW_ z34d(Eu)ls%V-F1DY-Qk#-dz$O0GT_vmkp@XiH7?`W*%s6u&DMbv3*DgzQ4fZzs<0_! z_PsBm7g!sdX*evnX|oNx=A-wc=mX2JXbNU6DG&cJJVBJtv*iGZPLx&wYi!LPM+JWc zei-Fv+t4v5HV$W0*@s0cn5_%_X&Cn@iUvqv5?Rr(jjKT+3Rffg|P2?6U#c8rdsKm z6*n_l8L6i*1BGlJ0Dla<+1f`l`E$}QYT6EkszB?mGDY=qcwTt=uTzQ7cr mZe>fptl+lTykq5KlK2aSx58`yz@R1o00005fOP=5$Wmq>B(X7sjK)-h|_KokIAK`#(8cglD;Cg7!Dk+hSq z)>%n#sY9^5XmjO*R?x)(WhosJsKILps9U!diicpifg`^l!D|YkQ=vm}-64i{yZY?d zI$iFRp>%5B_TBltcRKu#4C8~Xrm+@XB1XRecs^4VgnFvbWbnKyCKqf9YctlYCkHYygal8F8PnlK9H3G8XR_SN9X&IQinL vX(U7S86~a(l$VZ_&&T^9Ik$?1zZt&)hAgR@|3CZZ00000NkvXXu0mjfo^*SI diff --git a/graphics/object_events/pics/pokemon/followers/slowpoke.png b/graphics/object_events/pics/pokemon/followers/slowpoke.png deleted file mode 100644 index c57aeaf7db67e244a600643c47b96f86718362ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)G`3lvBAN?VJR`0Sz+;+p#cE_`N6RO0000000000lLfbF00009 za7bBm000XU000XU0RWnu7ytkP@JU2LR7i>KlRt~wFc`))+#vAuLOJqhbLi5oSNZ{Z zbs=*hkReN;L!on_qeZzxj+bW39 zGE7#fleuAMGNFKo$-v28B6;s(3hm99EIM8ec{DyY6^eh?W!^>@ruW3ol&?em)tD?4 z;}hc3K6G(s3+Xo5+~F=Hr$aHhGL+H-+Dvl5q!pks6Wv;g4G}uGvI@;*Pm9{{R7Q3x7Os!lQ zeE8`5vv;)tQ#@?~0S3sLQ_dBS)%fSj1IFsvgjTL5eD{5S!ZIfVFv!8moBKn2x%0$ZiqAx}Jv))m`9tbpRgo^6+=01I&Z)55mlejG@nR{z6t`Ed`UgY3 zeNt<}o2cu%u5JCdvE;w#%M-`ndjAPssL?*(KK0V+KifaGt`@$}f5!h%rCt79ub+(j z45rQERCad^z4O^(*7Lcqz4sjG3|J5&?V0D;7nN*#`V{Yj$qext0=HY-;DP4bO=Bi4D+Yw zXV(_3dnWwQx9@h30snVyXLlFo&+qRGDT&zcj-6_>ebeFzZ$d66%Ly!uWO&or^8JsI z%yUoH{*tb(0&M%|RH`&BE)eP1aMH)OaUxNe$z|F$N0)U0F6Tt+Bwk)R(z4|epPSs4O4rYmrK0k$NlM?;n42z^ zKl{qh!`m#^o6Cf>I82k5yM3(f+)tb7Wwnjfo)1cV1JC{1+N787G;LYQpTBl%^^Jo6 oS-0Am&f1y&`iuAb%l}v3UlKd9O#Iq}EKvIKboFyt=akR{0G&q|)c^nh diff --git a/graphics/object_events/pics/pokemon/followers/smeargle.png b/graphics/object_events/pics/pokemon/followers/smeargle.png deleted file mode 100644 index 675fbced29cdf6f451d570b61c3c472ad3053000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)G^SCA-TDU000000000000000Ng<*D00009 za7bBm000XU000XU0RWnu7ytkQEJ;K`R7i>Kl+B77K@^1>gf5p68ORglZ>3DY7jUKn z+0M0tvvHwzhHQk4Ug_RUAcIZv07CYeYO7Z+oR-wfrK;?os&WiL2xQ@1^;doGIj739 z9p_Z1I@PKEpBm2wN3$D@jdwPye&6p6j%0T+&09`I|xy%J>O_QZygcyZ;{JG`G z-{a+vIV*R!$1*XQzh?c_E8JnbX|fE!MP)ldotsi{vwA}rtqd%diJdz838iVf(K1+^ z`9cZCwWh_5mb^86#=}a`W|??*@8(5>vmUuOZl$;xLU7_JL54_4hpHl>wQr*Kr{z4Yps_TO8*n-2wCr13xlYCcgE$@jzSp_|@y8 z!JTd?C=74Cw^hH3m-?)DYw|AQqN^_sz1Z0G&~pqX6H@iNUGu}Rzo5zzumbE);FFIB c7XD%V27bUjU}ofAy8r+H07*qoM6N<$f+O5CQvd(} diff --git a/graphics/object_events/pics/pokemon/followers/smoochum.png b/graphics/object_events/pics/pokemon/followers/smoochum.png deleted file mode 100644 index 973d42d240ddc2e6cd1fa8eed876542e0ede79c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^FN2|L20qM!I@zx;h|}nF;U5ZIRF3v7Hf>k00009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K(mzhaFcb#xNLbmQh?<=Vv7s_CphUQ& zDu{v9sADX^nIlE<1zL#%bYWm&>H#CaF7UjEech71`p z{ZJVYidQSx|H=5aRA$@Bnq+ z0wTg9ETDNN+H!AobjY5Mj#p`b8T3nqZj%$L{&darbFB*(%eT$cSl}2`BS5#en;GLq z;dV2%tP-Eom-Xy4LJd0I-Y%ysHWxTn@gL@|>r|j7x{-GKV6jSLV_17`dUyCuZ$5iW zXdTStv fyft(m(4Xc9hmOAh<5%6K00000NkvXXu0mjfA@KFu diff --git a/graphics/object_events/pics/pokemon/followers/sneasel.png b/graphics/object_events/pics/pokemon/followers/sneasel.png deleted file mode 100644 index d512ecb6672123eeb838afd39a1731924bb02d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmV`2hg|8Bux3F-fVp$?>s4IdO@Bk*S#p0~uLy#!yKs00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR9J=W)-j73K@|^onPSYER--{b6-KYY7r!8A(-9hIy285 zQzpg!tNYFD%$wPrT`!YKlO|1?G->{$IOm6L4dsU&CF>k=cNR7E++=UA%`MHb${8&sOZ6XA31a7iPuQC&2bsG0#)A`t#8+%hQQ2X0=Ef0{dmMtd1=Q99LEx>fn zp9rGeQ0#3g>`}~Y_J#m+?Y<#jJ03uBWU&u0YJ60KvEyZf2V{e88 zl^S}^>^QUd>TO~0NxuWgEeRk;$@bt4th9%Vy(=i;seT9ylm5j?Q+vkP zREFWnZoRlXmfFPFak}#U^2^BP`mos1zfGpIOi0;Ly@qN3+p*Lai@e*Eyno*07E`}d zAAitJvNW6xT0%(mTuq0IVOj0aVQ`F%AgvefK2E4lp1EoO{Y^@7-& zf>X+v)#Cfz(R(qqIUBH7a?N5s`f{k6y5rdnBPTRu#T0-Cfil^vhp%+S-ROtXQrux#{)Jti3QkJlLCp)%JqfU2=(WaEVK9 zbkk+V__k0^)dEY4YxB3K^lSgODC4}oF&zB00000NkvXXu0mjfGM8E7 diff --git a/graphics/object_events/pics/pokemon/followers/snorlax.png b/graphics/object_events/pics/pokemon/followers/snorlax.png deleted file mode 100644 index c2c911a60272c6eb260b125cfc4b6b82cd7f8e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmV-?1B3jDP)G?rvdBMTS*}-`!Nl5?z00000mIw^W00009 za7bBm000XU000XU0RWnu7ytkQ@<~KNR7i>KmN9GFKorLhEYO?`8A|5Ph0;zL+(vDR z5^uc_jJq_gLpymeNVsHkh)};mMzt2t)mCWM45kp2Az*4Sx$n~VPCDsymXZ?aQu+)w zzk9m>|K8m@VaEQ)KN8*@Y`5`i=l*PkgNmNX%#S>87!U5t_N%exw#qmmbioY<_hm13 z$NG{@W^5E-Xl0q~2Qhw{*bc_=c%l_x@E;i5&OX8fbo(l!C7cAoNjPa{DcHn5Hw?IG zV8#3(;0IA7LyUsZz}5@}0SbGQY3K{*C!9x(45$duz!vA-P|q5Shdx9>j7U|b*vkg& zA;>86IcL|&dd<6_8yL(yNcOhh^TWN)BvbGdgB-9&i7N%me9j;p?DPc*ilV7Z4nnw| z;es!ga4H8%4rss+A(9J*BCl9>>eh#p1eZ$CWcwVqbMq`cdjMH$`x^hiJZ-mw;c9us zc#^Hzeu{dDI#rVy`xGYdb!}~fPVST{LIKGMd>&9wVm=QNwBsf$C?OZY}j(*tLU z6Rc_E<_vSnJ4z3oD37`-hHWXh4DO?7PPtd94{K$L@~b0%Eq()+S?93x SK=^?G0000G`Rtxd8zI@o8BxF+o8=QNd9`p!(g>00009 za7bBm000XU000XU0RWnu7ytkPS4l)cR7i>K(=kiKKoke?;?U)$=i)(y)GYl%P7Zzn zhZ2_?dP_E;gS+5&xT00zpdbzzjGJ`P=+>oJ=u|;Vyj+Ily>I~o4nqE!e(&YpO9JV1 z+O%oYrp-T!-*4_6ANQzjO`JCOK;Z4vSq?YFuA8F5RNH^));cha-3y8B!yyv6C_o7%ac;<4L zT@Tj)rR~J_!1?y#G7Xi}p?M~7c)BzLc`=aME)A!P_-3V)d& XgP7%C()KG?59IRF3vaMQaf00009 za7bBm000ie000ie0hKEb8vpKlfi4+P#nh}S+hRx6kkE`~H5v_Y43FEws==|Bq;CHpg-^SSG?qHcN$`Jd5c>NAhL5 z=ADLQvy>_Hc*&nZA>8f(KYk+L@}!Y$24)kTuH?_N8{}ZjlScAbd7<7H&it7+S@L1J z3gh@NB%69>9@w3e^9k6&hM8jPKo-L8?wnj02V&k7n@iQ}5cd1hTugT%gxLL&Y>Lst z^?qAa=Hjy0g@U-|gprJjp>R8WJ|CCY`%tf84G1sL&jd;+!vi%O9 zN#MT4$fpj4pk5te4TPW&A7KrEW^5IIye{4zG|P{6){*mg%C^6t-@&$w?fur8X46gL}BH{A^) zFB&YymQGX2Kl)sDAKorLZ390T13uQqIiHjiD$zr`^ z$Kaakj=N&HX4NndlK;SJVLLmyU7Vz~+0x@K5N9oH4q@>RIP{Nk-u&2k$+;&8c6n7k zc{88yn?+$BZ)I$^>4^Yb*pl#z*o3Uc!c&8v`9{J~M&d z3$E(eZ1VaOz(uHdA1)IoRGfZ5i88>H4rnt8Et^f=SmW6?fO98oGfZ4x%8~2SlG;Gc z+kmI?bn=vTQ^+;zz?7dzc0$GC0zD!U9;Cc3`SRQ>qC&Hucp>9T zCsb@_GlC~YU6YF z>(cfK)vN>4FLE&wDz@K;HS*Q@LBWT+m}DTV$RF8%w`vF#FG;iF#j2QG>}EKEJ3xyw z`3iC*Ycs5`s1OwWbQy5wjM;t0UgH2@bAr8jEZ9TWYqMIP_vSBWPUu&_SI)?Kv)&9p zB49Jn-uF5EwsC9Qtc~j*zcx2KR`vLK5@AlFx6c~=K^R~T`lD^%9}OD+)?PFkVAePP ja_83mjpohO|FM1pxp_X$CKr00000000000000099UkG00009 za7bBm000XU000XU0RWnu7ytkPb4f%&R7i>K)IDp$Ko|$`G)o4jJCI0S5?eW=TRRl} z76z{U8mA(MaT4s%(OV>r=@7I_D~MFTT=Oz`KIViTol5>g;K$uPPcAQK7-h0Y%>uaKPGjXTb-<00wf0WTaMDi zMJ^)6uFPj-D*d_8*`7B67PmpH_5cf{^3h($ay9650ke*sy}_?|8!2rbhrP422sjVt zOxtb39eE5oZyV{`0#5`w58Tvm3=W11m${lBY<1T~T5ekr00000NkvXXu0mjf5+T!+ diff --git a/graphics/object_events/pics/pokemon/followers/spearow.png b/graphics/object_events/pics/pokemon/followers/spearow.png deleted file mode 100644 index fc34bc4ee9b9603d0aa37d272d64eda1f83e541f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)j5&4Oc>3LZ}K|#qm8M&!(ktq@B>G`2iX@OZGiFrW*0RaF200000TJj+m00009 za7bBm000V|000V|0Vb6__5c6@O-V#SR7i>K(m!j1Ko|yaaq4oz-5P`_g+hW;wuWvc zTSv!kB3b+f4LFo;{UU`7+M$HQk5JIW*w*rXm!5w@&eM}3w9`G??@ph457jgk6%`c~ zm4A$-Pe)tW>bP2)%*j~mbF1AYxLPwY#@0xi7P0v<(e*$WPsorBkXgr=8hn@F=2SM( zbjSdy#O0%(LHkwSRZuyxA-9fMA?Y_OjA4ELvZCw4T^R0Sxpe~oNU!xJrW7DCn@=LT z&QtomO!GkM%sx7Bne_Sa@Jnj{8OLkIv4)tX0w(Xd1;vY5?fK^d0e09D$iFRb}-<4ALWV6 z@bC_NndmYF`zv@OfPybX+s^*>j9GhL1T*mh8tSZQ@caGFyq$$V%nz(7y(a4dIJy7; N002ovPDHLkV1gwb)Q|uG diff --git a/graphics/object_events/pics/pokemon/followers/spheal.png b/graphics/object_events/pics/pokemon/followers/spheal.png deleted file mode 100644 index 94699cc83b064e6bf21207507a19cbd77c69b41c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmV-M0=fN(P)FN1VQE9=ki2wiq!z}%v00009 za7bBm000XU000XU0RWnu7ytkPyh%hsR7i>Klrd|ySt~iqNrBphM}}FJiYsKSS>&Cb=A*gB_dy_IvN$|9`n$qG`2i z)v8tNzo_9HXDm_r2Oh4gZZh+E4}hM`6o83tGILFVYounr1Oi9F4Gz9AEHjp3G>nvN z058N#1$z*9&@J6$#?p%Wt-w*S(Zj%UO_e=}1F*$_Dq|^K&~sEgPMM4jGCvVNAZ1f# zRD|;oJgIp6fX6BXh>V7z6c9=QZffW|N`6C34zm}3`h*ZCzc@0dJG$Z5=2O_A#4dT{ zCqnW7{VU_$em9K!kwHE#GiuhI#xc7dDOmqbaLM~F=d+BP*^v<9_7gIE-jB6I*JDyspI5*9$$QXKIa^08wvoX!rT{$ofAP~RoG%#mlYtEvO6ff1-G|h>?sUc6e5)2vV zj`)ZSmf`{r1B(-7tqEm9o4vFqtok=%mSu^Cnr>NIbwcb)fercBM&-f@ssFTT(A U#au7kdH?_b07*qoM6N<$f`u&xG?rnS*f|vq1j>4L1_U20dWx-!HEIk!3iNzApigXTv^jz00009 za7bBm000XU000XU0RWnu7ytkQ5lKWrR7i>KlQC=CKp2J(3>j1qHMk%$iV{qR61d<& zm=0+$qJ^wo9ny+o)c%JE4Idf&8w6(wbI78r6DX8IhS0f#CI_1mH0U??bpxXZ|7z95`_com z??2zoIsi=3ZbsdFdtaR&*#TG+K^?+b8RBm-2~f%vSz(=Mc^zc0^$$ITdUf z#hn~h0)hv8et7}#=zHErQCRRsVYYzc%y?lOuA@{eBqdu^@V$L%n)bUpDIl58-`cDY zU?dCcT!e(5efShlL?LxKlRyf*IW@sE&ntnXV zd=Y4AingK!bT=2pwZA@RxsZL+0;C>bpY6W?n7?0WE$o#llgK)G=$@Koke?!?}P~2|FFS$i{6zQwyTd zO|~ym>@Ic5l59!Ex$Tx<{J>K}LqT+m3YA77*Z4XWx|Dpm=tLu(PP!HXU5elKySw*) zk~oCWwzjpcZT%;ukv|*Ze1SL*^~dLzl|0#KM6(5r+A0sgM5qOAl|S3XtVSdE`W-@_ z4t)~N$L&YwgRrgintQ2m z%SuOQV!q_8@Z$u)`r#<88vtEh;eAL_qu8sPH%!+6%Z~FP<277-H(r-vlJl3EPym>l zYG;JB*}DMex|I}Rvh#*-bOwtLrqT=+Ghog3_{*>|P&;)-rpow)MG;#$jot+^jyL7Smz~$dousL+_JD0-)^0XVe}(btve=W& zOCzsVCqJEX0do_f$zm)SJ-g?Q&3%8Kq+u)!ubKDLaM&OFMWE(#(_-Sz%P-T;aa0&b z+&8}m;#<8hJY3EB&_LI}mVuaZm;YQG1)Ztj?0n{8;8k!_xiqqQ!d?`;5d)q?(WxUk z-kgdJd-0|`AB1O>PZB&GN}mX!?h!FXx5$A}c>*h`xN9Zl`~zd?h@09_`cv?LzpdbE i1{S|^t+}4|59Km9cBvKorI`92rU%;TR3xJY>oej1k#H zc&E!Me6J2^;SD&W=Y1$jrQ%k3`ZXRjKco3IDMOsQtv_A#0o4>I134Eez zWs!&?9Z(r3v2z4t_(a-L6!XTuBAM;yry&baRPg{!si{vb5>X_hwA>hMuH$y1bZ;0L zTy4V81|*!23N}Pn@0d3_9VIk$0fVjpZ9u2XeSo4`Grt35NE1_@T-Y*szbzX-r(@Q! z)%8A5UDn)>l3=4q4U!!>=JGZ!MruTjm9R%=O)i9^+ed06U?BbsY zE?~wwj-;FtNkkifJU~_78L|cmm0R+d%Uj$P!_2-`%>>#*Ccv1>!am~~`G-$cQ>Ggv zo3b3$4v9dsW~Z)7HVG1^{cDS{MjN08I{1*)e4-A?$U_oAfr$N>5{jX@%IJ0KS*{;g3!m~A_O9glOYia}|LoTy-1)k-gX_nK%-=Zy)|I%* z&l%~H{Ja;7@tGe0TzBgZuAY6p7>`*OzZT=?Kk1KW%n$TYwr i{&&4zv+x7`w(B=hvG}>gi-JS|0000mL9#$;qZo5J>I z>Qvh+m!_^=xbVWk^6FhbWW1Sfe{SQEGDH~ z<_?E+{sR}I3%0P4L(cewJVoKZ?)M`)Z-pi;GG|!et(3`ozX?K1)%cNC@v{%gMsJCx__HNBi j&b?{Jw732@ub+|M_@${_&!%KIC~7=i{an^LB{Ts5?3Ke7 diff --git a/graphics/object_events/pics/pokemon/followers/squirtle.png b/graphics/object_events/pics/pokemon/followers/squirtle.png deleted file mode 100644 index dbf56fd5af8857eeb2176d5e2dab98f8933c67b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m$y1(z0{s&6S2P zU;b3|Ox(G1CnF={LQdw$ogY75ECeb<232-toIpNjfk$L90|VDw5N1@HYWt0Wfl=4f z#WBRA^X=u0euoVN*dFMGrL}e44V6mGRgqip>QI{G%oE9731)65tfjMCRP)jvYZ~s@ z^3C*{z`=))`eDTM# z&gL(^e)VU?z1Zn(M{n#~_;T^gW!HU=U93DLEi5Ly>dejmBK9KJouA6gb$`3+bK3uz Y`m1f0pPlNM@&gpQp00i_>zopr0C*|B!~g&Q diff --git a/graphics/object_events/pics/pokemon/followers/stantler.png b/graphics/object_events/pics/pokemon/followers/stantler.png deleted file mode 100644 index e6c5e8a826eca62051f47231175359512e7c09bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVG`=~F^M5DaamExv2g$Z00000n%a=!00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)jez5Ko|$`!;6oSB}2@OO{RQ-e1oS* zI2~#lxu%ybPG9rc(Nb;e%Q?qn1Slrwtbm`U*x*PmydXi0acfLnkm(mAh^t+e8 zPUkZw)lk>Z<|cdYo-S%0pm?_;`c*^6L6^s>?)_jB?7eP&iG+ ze5Rf#CWy(UC_|y;*(T-vsN^)9PeZ5aVsfqmvvb4)7A~gRl5IEd8q7Hz1&5tEby-Y4 z5Hi6$VBJuc)yuMvQ%>)1GT}7MiW^4g1?BUjoRy#;w-mkGaznHe(rg zfwtSWN;N{wdkioZ#Ayn*U*)pf65DOPc?5X+hI_aH*b=vk&5tk5{qLV{AD;U7{q~9D z9;Q<22Sayp*FNkF-n)H#t#^08ag#JjwNq-i_za#*)WJP|C$^7)K>$4-ZoxCQNHbll zKq)Jb-08!FJP7=#&+3OoFblO|`&zyR+HNM)#jJ{O#}$lo)I+u4{Z7`H+os)0M!54z z%A8|9+p9$FWZG^jUG26#u9mV+IqDa=O7#t~-2^U$`2exjO}AoQe{$j^(CDY!=vTAbOKUJl%-N16%6t2TogiF+ bf2sZevL=M$E(Wre00000NkvXXu0mjf*6Um3 diff --git a/graphics/object_events/pics/pokemon/followers/staraptor.png b/graphics/object_events/pics/pokemon/followers/staraptor.png deleted file mode 100644 index 25f652d4ffdb34cd9389e1c76fbfd6e0f2cef4e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 zcmV;N1Y`S&P)KmN9SKHWbIXaL{n*XQ;QJ$dsvrH!qob z3lj-A!IKXN;4KK!0LgeL1ze3oYS|KS>V1Hs{RUkMD3#DBz!?NbfM^dL>;SQ+-f)AV zl6<62ItLDdc56Ah{h`hz1oFL8xIqXT!B4 zH*bj<2f!_uonG^UO@V{MAFY6hhSrgrn54cE@NjWGX&uq&NlQF}Jl5UhI0u*fs_Zo? z{Zg z?rTTF0>;G0dE~sADpJg93yeD@S;2hzsJxnU6*>5jFM^k!>m+g>4@u z;yFNJiB$qAP%Vwxc)Ujj_mcQNq2uur`^K4RQ6*3kn)rSw&!Z6_Bfls{>ppkH)0Cx_ zSkLfjYiB%`D+L+IWA?}jpd&-0j)xSGdcHlKR5}VtC*Kcji!Hko*%a)BdbHP0Q&S@2 z$j~Y<$5%~0uonzE>I}NO@ii}Z+2o>oom+`nF?56ics^(A&%`>qV>rAp3267$Be#EU u^rqUy=;*Ey!`%d*8Xx;@^|>qlo$)sWWxXs1_a%}50000n+aN7ZI500009 za7bBm000XU000XU0RWnu7ytkRPf0{UR7i>KR=sQ6Kor-gBU<_|bjVmJow6TB0dL(} zx`be296ERCkiiX4NG%2jp~EKsMS_G(P>F3$)irCI((Dax^*8i%ANq1gTar%g8xs57 zyWhvXcb6E(|M+JD-EqAUWVD_;z9IJ~>kTn*y`H>CT19Pw+t#IG5~#1HakeH0c}@$k zS%Ox#tV_itjz%}F>Y5fn%Tc;=R07Gp$`L6Qqh9Q2SmMsw1X&z60JI|_lU5iyYL69< zDo2x9so3v@s+gCo5m<4)Y63t50EGaNs%25>2+fjGu|FthC(BE@I#8bH*L48tNCOxd z0J!S2$rUI^ldx2b1`%Vj0&V82HbIu}yj*F3Y@{7cs9L9-0Mt5l`^pg-$XuZ~9Weew z6l`qfamZQ(XAd7~QtI@TBh=TRDaY4cX71@oI`U&L(TdYqk1^2%Yy3TqL(;Uc@OJj! zXaJ7`2uJ?R(*yy4-eSSwNILSts}wJ}2+@S}!I#Bzm^KK^#fPWQ7E}W)BjG4LrJhUy zA>feUK&^NB!cp3@y;AXXKag|=8*jbf%Z)Rl^z!l6XPPJgClZd*NNpi|q;L@Q<(SN| zEgVsdlTz`7r>08b#T6&;YWNnw+xH*K9Q7u`Q8tw=FnhLBD2C3S^owoj2-}t72?5Y} zh?`O8C1Va#pwtV7(t-)8aFkNH#qHVRNN8su4ryZu($UbZ6h}ez7NAR@bpi`_=JfTe z`4V@<_YKZpIPyRMSn)2%BN-0ly|a{~ZlxH)8lw3lSk?(>r$6t0`ignev<0tlq&#OK z?w*r09W!jJQD(xCx>rImXH2UjIsWGFg2!~9>ESkV@V0|GPr}5osGbAis3hQuhc>Ac z^SSeTc&aDWbot|BCHxzT^&kjG>T^)sPwQkR4qF|pbW~G}@ix_pi#Y1wsV>OevKE0$if9s7mYCQ#z8l#viBh$vG^4CX-P>*000000000000000F2@3m00009 za7bBm000XU000XU0RWnu7ytkPRY^oaR7i>K(lJiMFcb!0Z}G|zm^c8aL17I_PJlWS z$%ss)l-RUO6%aPq3c`GJ867T^O@C&T+5InXeGjl)XpG&G|vs zNjSSn2Dm3H6U6e!Wh_(cHRyUrSFhK%FBxhYnnn@swi-SrQ6blj&~;(oJw7?lP}9De z2-QdIh|>!x+|Ad()uT&(#~%XJGzgRoLd;Kd70SlVhc=PEdlpPv9DWwKM{j;08mrLN zmPfwNTRnTm?TqX`=qjn=mK~8=uM8EpE*=+Y!>O|SL~36m6AC91^@H`Tx~&KQm@og{ V+o@CmZQ}p{002ovPDHLkV1keW%;*3B diff --git a/graphics/object_events/pics/pokemon/followers/starmie.png b/graphics/object_events/pics/pokemon/followers/starmie.png deleted file mode 100644 index 55b68853e3abf864a54a0cf0fa66a5b925394c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)9Ha4SxH%0!MQ0Z000000000000000fsp?z00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K)G=!tF%$=I(T39;3?*YxsZ?%DOd)tH zWJu{))PtK;LFD4;5L^nkg@ob{&?R(}aSq;A=;klir#kLQitLoqZhnjTNxt`gr#p_2 zeeG*s|DtHK+kf<@U8YsMoBCI^)!)1AZPYOJ{o*6u8NiZ&*#36u(lx(tJGEc(4lfD) zXh2srR6;{HQ>XTU=xBhzw08P33{Q*=msKZ0v~|D5RpU)J$C8-VFqJ9{h>a^CTM4}% zDr*e%4hIO04KM0AATl9O%6=)qb?$lI7+AG^8x9cqRS6dm9C~U(jj>V!2xC;vh3S^q zQPzFdPv@oUf_E-8Atk`#<#_BS050biW*}>fyn`y^gYRPzHcU;3m9V%z9-U4=ioEY& zS<4z`S-)M)Cpj*#%?NVbI_WtO0b@iH= zysdV4Y_8-YXKaXJQ9xurl6i4+yE;EHP2Pp?=6kA~4}Q!~WboFc#_GhUo7K1TFSgGc z4}@XCX0F6LqAnI84nJ8>1QH_>=d{iRhuG_A_zDbg8zPuH9_$jAsYzh_c7itK^`9DYfG>=Wf lYqN{H_Y0NmJXrXj^%HrtW7}`jv{e8A002ovPDHLkV1i6rKOz7C diff --git a/graphics/object_events/pics/pokemon/followers/staryu.png b/graphics/object_events/pics/pokemon/followers/staryu.png deleted file mode 100644 index e29b0d9fea097c589d2ce9eaeea2f0db3a0749a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toJ%(b7=F^J<(N z^V^Z#(C<^8zxTfFA~yLaC#ib>3*?ypUf}GZcb_MmHA~&Owe|1sCI(T3`t7$?+kbRU zn4bJyQRhLiZqu1vrEmWIoYDBmSeHSRL2toQ2DS&&cb+axH_iRT6fmRR^_`X^w~EKH zn&pm67Cu@HcXS-`KC9F&Op51`Pk*wo;L_{l6KB?U-Q8=nLdz@cV}OlW@}{}wZ)evY zJ!3Dw+kTQ)|8bLZbJ!%eOt*XcHO`|fbr0jGpB}5P_rEGCPCjhgaQOAyjCzj63_H13 zZht@jy!5**U0*p9ZkhPLdiZ}<(R_ow)wjd)+)uhS7yT$)yfd9;_vysa-K*E#)m!8; z->BU=_V#kuckI^!i!yl3-%9#kPfdJ3y;aWVqQfF-{^u72{62SQ`t7jY5N-VZe73W# q)(Kk~t2im%lJ}4A7XA4k|BSnHG{FY;lVjMftjfQ0000000000000000000000000EGL6D1sM4hMGj3j~OA{(&B! zU57(9XkTNv?|*|rb8JI90MLc5|IPsJcw>i#6eMhW@T`v;&~UtC`6hQy09$hS#r_jO z!2qII7fypgGOU0AfPZ*^I{+R)JQ)}Y(nZB5zHr{N=E2U)^O`mPmO^y}*wQA-yDLD# z*k9~}#}HKruqOx{lyMAI&cKAB1%O?@dti^q4Fxd==<#QJPY$o{;D|pkrKcBYptjbA zXyJ1oOF+J}wWUWudKbk4jzPh(V_bAg!L6PEO#b`>vNlfu_oM@hZ3syZ#};?tjsnoZ zw*Vaicp9KU@1l!O_Z9#a5Yz=L%wDRI!5{WK+W=5s3gtg8=06=!0yUMgaPVH`~V_A1!uE z0JMEK6(*Z$+@!^RHKoSo{Qd%9=MS`fm$6npscj%eZufHFnjZ^#C`7JK<2rx z73dFa?y*knU~dfxU~B=41=tk}ATx}ESR2XnZvSArEoRo3R3%K1eo>$^`DXvR zK!DeFM~#bxeTM-1cf~zhXsVci0u3mg%QcsPqF@T^kH+9ZPUt=SN`YQPz)!y;z;6vz zNHK{WenEg=e})wc;M$OE=Je_^H8U5y<2$h`CV4O_Y3V}sMWNyV@{a(AkHwxW#l`+j z1MsGX6`_qN{0l!P}BF$&k9VT5b)?0@KC*H06rue*twT1 zfLP73S`k(JlVA`BwMy9#iWWNbfbP_ZSwvv3VpZU}xgzNKJk@5OMC-jSKswDX+8gH5QyTJy?8DZ{I$?gp%GsczpTlm3qJDE)*E0mF_fI zW-o&6MCWf^iEYeOmw%AMVx@vtM4`HT0Kj6d+^0)&c7quf8`@RMpW@tAiU&Z%_7;Fm z)%97xGUY^6NT45Rz$QjHw00t>JRmQlhj4k_p%;&5XaE5FB|k76HPWQI+_f&K@yefKGcP@e_47({(LDu~t%r$qNi79G@bNRKud_$jy^e|Co84DIqP)G_FKiMdfZ0RaI)DM0`L00000lM=}400009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K(>+VWKo|$`BZE`&9YPc`*vS)4eAzmM zbQg4R5Z#+XrL~{Jv6Hk=IFrfMp=eR4DV*&=A>Mr#udz0Fp_dlAIP^aRe!brF+$DDa zY_rWa+x(yK72Y`1F80Qm*hRK(zz#3)>R6qq$QHV}JuC3W4NO=MP7Ay`w0B4pcNCi) z2*U!e(E#NdsHUP|muS6nB_596;*C&L;{{GcK}>XZc5U&1EuCj8x~|u*iPlB~!(&|4 z*g^L;FkqEvoED7T(tv1fP*JcuUT!0RZ?Cqy*mB-!IC}q(Upf^&lU(vz4c}gF1EQ1h zL9nQocN+7#9=u2e+04>7qf^SIaW2f}-Vb1NiqKv~Lo)`GKYvV~h ztCx40?*|CmL~koW4JI!@_^;vTa;(M45jz#`ZR$#PR1oMP-({>Ji7 z3%cQB*mJZ7boe$@PMKuWbB7p5qs8t#cYwXjX-dN<9NT&)AsZ-GmeP!ofE%)T=2?8#HivQx^&SzoML j`8Q$8?6s0>xc0ms1Q`<~d4D|Z00000NkvXXu0mjfsWJ+Z diff --git a/graphics/object_events/pics/pokemon/followers/sudowoodo.png b/graphics/object_events/pics/pokemon/followers/sudowoodo.png deleted file mode 100644 index 419eb917e37117b596b509ba9346ab300b6e12c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmV;R0$=@!P)G|P#d09ab;lTj_00000000000$rvF00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Km9eVZFcgLlXVnyw2at796zVy2Eupl# zgSn-?OI{&hQplF2zGS{H(J6?U44(U5l^k0>N4}+(K$nuUefstPzibj2;6C@c&wn%G z4DIclMQJg+F-P@X-pV4U(v-W-`rAp~%D6wVu$a5GWvu`u=P)YbST{#v1^i%+lLEjT zV3CBtjt3WRWyhqD>Ml?QEBF{AY2npi^E0H$80dL$;q1z^km!p<%ajzPj%i_M5U28l zYZ(GPheA;6j!7Za(`91^t5-iRn>OVI&QRB<#oWpe=r|OrpWDnaD;#wfSdUisK=Wmt zlfu!ECZ7@-IJj`To@K8T_PP%YR{ubAUf3I+pO0v+N9+O}4=$V;g;Ajz599-LGrkl2 z%nSR#{FsB;$stfU9tuJ2C4Q+(R_M6bUEoWhcjJl0@`V=mhOa+zY=&2GIatR-A%M16 z6ui)}*k7MWywj=~^F3z`DeMBY%Vztf4exY3(i345an&!Iz zx8>K0+#t#`aa}q5cis8ve*MHRAN|A&y+f^5Y?EgtBPPi9KWzAcA2uz205_uA9ByV) zyk~(i`_WZV$y?bJk5K{VZmlfYV$AwbR)6HIWH&8fR!$0VXYHA=wRZOx-3Abbf5O_< zOulIs3;e#9csajS$2~g?2pcT`Ky-imQE%5(tWFmG;rs?i49^HxIE)wo0000KmCuXYMij>fg&cZF|AGDwd)iWmr9$bpV3pVh-7*ZibSW+-Ciql_!LYj&VpLB+8kpEuN;V)Nq29EV^+n#V?^7a|Z1@!W690ZsjpPkQ-WMx!`8}q&pb<04kDyiE z%L8eBk@rOj2TcppKxKkOky^!lsu&a)-bp`VFI9ezNd|D_m29wO$>4x56@vmJukzst z6O}2>9UDi_o?5wH!m_~~B}>`hjw$R_4&S#VgM@Q~R>NX}MIx0k7aMeFfr%ujQ%ofe zD~Go~d_-7HVNB{Nmz{}40&8;q4u+v1jLBVFQrNpbylq;HW{sUNB{W;oK85lpR?xP0 zGt4GL-qc$da9uy=EtLva|Ji;V3?tY)UqubT&)V!|+Z_=00Y znx0Y*j$a=iEv>9g3#>b^IyRU)37_k59~2C>eDAu_e1qcv4?p2MGX_k?$y;czpzWdY zMTIKI1|%*>7_7h!`YJIvdGRY}W~>jFUQ2mwZm%eL?fTU!s8*}@@qC1KG2#U3^=Z(K z5?+7-!zNyAc`^LrQ)U>@1q_b`gM+~+**3=dy!8Ba^JwXpFQQ$H7G`WfqTGPSH#SLF zpLf1A!n#ps26uBF8^F)D>(@4F{M0-i)zC?_i}isC<@yuUPER;^7#sMLlu_%|qwt0? zV>pNe|0XdA_J8Dmj@;Zp;l))6!yq)G@*rgxJhqk;XQ+Mo%eFeNb{sM1Zn8|dKxwilS002ov JPDHLkV1g!X|I7dY diff --git a/graphics/object_events/pics/pokemon/followers/sunflora.png b/graphics/object_events/pics/pokemon/followers/sunflora.png deleted file mode 100644 index defe0b6fc0667dd1c198be03817daf978e9d8434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 605 zcmV-j0;2tiP)A@j+(Q)CSDS=4=000000000000000Lbs=i00009 za7bBm000XU000XU0RWnu7ytkP(@8`@R7i>K)xT@PKokdXhd8X=zElR16O{Ej&=P27Q9pI60 zS)uvNX|kX+i9)3v*6;~uyGaL?hR_h2FVGu4^@q5mv_l_R!)!PGa!K4V^m<2cbQp*` zgnsFDRBkT59BBYB4|Zn3_#2x_yRVbacZFSg4 z>j=qp=1tv0)~>_{P7FAJog`Fi3#Y*3KDM5>4e4{F5!-|PwHmSI|3qx#*t%6MN}I`h rsJJ&^@4CxB9jt5cbDD=g{A+#z#jz7|-j>lY00000NkvXXu0mjfPRA9` diff --git a/graphics/object_events/pics/pokemon/followers/sunkern.png b/graphics/object_events/pics/pokemon/followers/sunkern.png deleted file mode 100644 index f19116651a5c58e4d3099676fba2e324f1e7cbb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toNk^X1E*k&cXo z2LnA53mF+1XJ&GKyjiGdXqmat^5#xM%|Jn*atK&Ze8vpO;wGbt-fH|MdX+E2^xf z-?=TPY-)^+svf5V{=50(mB{^u4?Dy7<>JKD4;z;-p9yoyym<0(wfyqcIgd-W|0s82 gDb^~Gds=@@JU?UI6S;YMJ3yi9>FVdQ&MBb@08R6k diff --git a/graphics/object_events/pics/pokemon/followers/surskit.png b/graphics/object_events/pics/pokemon/followers/surskit.png deleted file mode 100644 index 8ebf3a22e0a2f65277a5cb901a5af3842c7fcff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)F6XU=)mkQ7{S+fQcf$0-7v39|*b| zDByGKK$S%2gB;Y|L;+u82deexe4u(2X%QuSd~FeF-29-88=V4>WYPIR(B!gvi&Fz0 z{_c&tH{s&5T1#&cHbqFH^MPQ-S)hw`PfWng*Y@?s$&a}t?c!vEa56fdfq^r^_L7p) zU5iLOd|ll9*t<$f%Ek!)q4OCSCU6+vy?ghv1q0McoKQX|QSzLy&&jc(+1U65%)3DU zg82;a7z2W-5n0Ao8KDz!^MP7AaPr%7&Kzw;G7iW;iOgr<3}E2s=wM)oB#+NIHKL<6 z65(KUK2U@*dMcQN*^bF)K!g@7m7p0!Kz;&>Af_%lSU^(%01Kh7oBB&;<^TWy07*qo IM6N<$f^^iydjJ3c diff --git a/graphics/object_events/pics/pokemon/followers/swablu.png b/graphics/object_events/pics/pokemon/followers/swablu.png deleted file mode 100644 index cb5359aac7bf38656fe5474a6d59ba5fd6e1eb2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmV;^0xbQBP)c>n+a0000000000000001xyu<00009 za7bBm000XU000XU0RWnu7ytkQNl8ROR7i>KmBEYJKorJD$QsB=DW$fzwovFfyDRJ| zyUsRxEH>N4Q;W0lXe-1!^%8M?v<2qqlhIa)cj_hL zdS3M>Kd*{mts#kak_3c)wHtISO&j3Jpkad z;?xXoF%hmKR>lr=f}r1J?@NJ{pbp|Q;LGM98$#xfnSTaZtTtH8c5?l;dEIBHVm=As z2POh>h8d?F*L69GC-n4^={=!y;&)6+rQz3?*aF<|-01##>bXCv2bhma-ObwbXg z=!-Uxi8Oth>$*r(5c?CiSWoVvbC3G^Pk}uJeEl{NvFvrI>v|$ad^%d68FmK!wkjoJ zoOhA68UNl~GJ!C^^xp&1zg0Rh=*X}OWvd0CMF00000000006rU?900009 za7bBm000XU000XU0RWnu7ytkQt4TybR7i>Kmc5GGKoo@yDi)Oqd4kDeVNhXYuratv zioAhv`N!`amFfD+{d<+=t4YAN|daEs~Hb8LWXb=jwd- z$|}@q{a^pg>h-#R*@E;j&ExTT3~~(1zP>%u}-j#xW1haZ1DBKH7{RP0r$uH zksjFKYk{_?zN_ThGwnzVZ1D9!>AtUwAS;eP&ILC3df+E6ztalfAOjv&X9631EzqW1 zQ<{~4o$RP6(E~60df*kEA&$~c3FyO>|D%Y!HNd z=nZq5ZGwPBaiL|A&3<3oY=ysy%~-3Z|K|D${_2Xvqm10^00000NkvXXu0mjf9-w!& diff --git a/graphics/object_events/pics/pokemon/followers/swampert.png b/graphics/object_events/pics/pokemon/followers/swampert.png deleted file mode 100644 index 11de991d473dc1225b6c8a272651a61476108192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmV-^1A+XBP)K*1u}oKmZ1CQCi{2U_4}Mpx2;yXagaI z%yADpT>>4uDXKZy;0Tfyou^>jAgf?H6;Ul-GW8LPGi5M@2n~G#Cjq4b_nx75(#iT` zDMLz!LT)hr`SX2epU<)d;bAN zm~}9r1!1Zn?M}F$obO+TYqLT!%Qqe6ppX>06D}y{yVV$vZF+3x?kv}=aBm75?w(L& z(W9Pv`4(Zv{|b9DEp+qD`feK*Y*@`Nk%ys4Y*v`e6Mjq!A#AcjXO?3+Zf;+Hhi^`s zH-(0DOIihPHS88EEIaeyaAr*hSvgc-eIKvRii{zhQs7qO6vEe}PYZ*Cn>BsMmCX+; zA93|?bG67ABa92Iz!1$R8n4hplT9~uBIA?Lu1<_|(YkM2j1X0@-FCm(p8-oW?in-f#W#m;2EEA1w!vcdtL{}wy%JfJpTIA=ZhS$O9WZrwd$d)2rX8V@C^AandJi#*4{hawf%vp-0RHd#ko3^4}MA{>JxjqARK^=MZYkp^^q*b zzoQ7z{{<%KFLEF+=SrNbhBz2Vi#m~BN>dN83Ckm0cxNus)ssK-h^5)TGXHA)0o8~| U6m+8J@Bjb+07*qoM6N<$f?zq9c>n+a diff --git a/graphics/object_events/pics/pokemon/followers/swellow.png b/graphics/object_events/pics/pokemon/followers/swellow.png deleted file mode 100644 index 2412333810765a4996c967fd52c17d411fd2ab82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 zcmV+#1m*jQP)KmOX3RKp4l560{sO^dn>}p-^~?AxH&- z6fbtRcqttOG8!tU(50ncAcS_zEPaVXrY^<#0?E*OkDN3l zOQD54#BjMgKmY&lx#uoH=q~Q!KZ#TJshs@l0#eUpHRc#e&!;5dnz7{Z9 zOGB2w=v0-0>Qb)Wf|V*aXc- zlaRU^Mh9*ziISB<*-in#QDQ?bAczvE#l~?b48V@10Nb2LV)Lm^nk)lR$+`z?wjjdQ zHdS-O3?NqmX$H0+VigjE(s2{O^Td{iOrRDHSx@29V_g+>=XqfmPKo>yrqJ7R)PY)b8w62M-O~cKBnXC&k=_h~ zC;|Bu={P-H^P1f8hgbGFr4x?_=}CcRnof^WeF}rN%ZVUaS<|K=&+|-o49hNv5?M9r zI7-`XDjeenxF`ztv1gK)u@A=rX*U~RsyVXXr@~R;Ry&Ls0sk-I6Z88 zp>&K#Q_6xwAyvK9rRmw?(s`er=T+p5Nvw?DqN1t+s zRjH+WwUe#BfBkagPL##xyOOA{eow$={tMCnA_2)bQK9v@}M|WZ< zh#CeUE4tuBSyo0c0Maq9dSNEeW}hQ8bxEt^{pt7dz|k)Q5=7cy0e7oJbdd=Srh)%(9xdjS=~%oUc!dae0ClR^4oN zaq2iGF+r}rYe*28OHeH;c|82g+S3SdqPcvV8|z=^XUyBw&8li@0ra^^B2^*Bsn32P zJUeMQrbe6y%}3?ur3p*Du0i>IR|1kqM!=3{#IlWI*8gf<5TP4G{C&Wtz4>t#S2kgo z6i950@kBotlIUgynIO6t2lmxq29X&NUS2lVwGBUpGTnJQ!2Hf+wBY{Gk1s;*b3=G`DAk4@xYmNj117o_Ui(`mK z=i4hA^O_ArSOcbo#5u2O`Kjo5{fDQb{Gm&_DnhBe6BQQU4tc=;;?n-LjW;CN@2vDb zde<+fW+Su3xjB}_&(6&J-0x(u{gzo(W;JLD-w^d^wYZ(dTLpYz5)lszkT-`5(^iEx=eK2?Il_grY*Ezv*zXW53^;x z<{xnH;WEvN5~-N7E@oG}clz9`|2-T;g4QNHNWLNCxg_uS7LRF%Roh=Xik3}l<$K9B zH&DMQL-~9Dueb-!@gEYLW;^Y5D2_SAS|~lOy>Pqu4n~#-zQ3-Cee1t^V154cZyuX| zH(i<+_u#5PQU0Y+K_>~3oGTl{r>9oNoqjp@bn2pI-Fxio>veA~@!Z?&Q2p5>)FI%` zUXN*y+OA7m-l?1&^Ofn7II&fvaQj0abG7i_*B?L3R`Rd7GG}uS h@0s~$)?b|el%1isXSv?T$YxN~c)I$ztaD0e0styy)iMA8 diff --git a/graphics/object_events/pics/pokemon/followers/taillow.png b/graphics/object_events/pics/pokemon/followers/taillow.png deleted file mode 100644 index d2a8afac0cda41aa3d5b2679993e4c69f77c4cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)FN1-d4T}|0g*9LNokp>sj)#pLGfv6o=Lkz00009 za7bBm000XU000XU0RWnu7ytkPM@d9MR7i>K)G8C99-O79b8Vx5{Sh? zC@v08?hX}cpn*W~8(6=?m0AkV*0FRD92^SaX3^poXum>-^Ugq_Ge+Tv3)cQTQ9vZHrdpE(;SYiv&CX|Xf>nVG>5NQXAnyn zaf?+$%9Yq`h+S-Wmhy>PtX_#AT#;rCyV!8sxN38Yg$m(7E~0V`yV&qH8h>z$EdzRu zvA$n^SL|ZybZ2*Jv+9==n!UcyZLX=14rZC?8@o;G zbPm9r__)W7`aT#2DA!fhc;I;l@XsRPXu*SD)Yq!u{a-!-N_^W}H$MPG00000NkvXX Hu0mjf&WX?i diff --git a/graphics/object_events/pics/pokemon/followers/tangela.png b/graphics/object_events/pics/pokemon/followers/tangela.png deleted file mode 100644 index a20ce784c54aae25fd24125bbdd15483a98d9707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 zcmV;B0&o3^P)@~000000000000000E98P!00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>K)G@D{Fc1J>Pk6Q}`6A}(?NzJ(fL3~H ze*l@|q&W~1UVO;gQzf8#)t#lT_?5-civfouQ>6~MDWA_i@No)bk9fo*9`XMK-SPbm zw}ZReX3SQ%eeVI9sJdYySQK2CIPt~i$bLyXJHWKMG_NRi7D7`Z^OOcXD;V1^2~#?> z;ntD48(~0%^wJ6k>Sq^8 zwRY#XS~}?oY@dgMv37ALyv3RF~BiE6_Tn6xo^+ zhhS0{Mj-a7Yk5k7C_FVXcc~k{n>pWlX{!bWxehIf?GOCXMi_zTvAFQ~lLXe~s+Gw> zOMq~_$o_y7IEKitn3>J^xLSmkEu2VHc`0|HMUj2MH~8uK+uOr=?k)_nL($;Ny7$jY zIUOeA!sCJO`1G{j@0pFjL8;F{~Y5k*r}tL8tx z6x7z!m_|OWZQhSPFGAb6JRlx6Q(M~(+kE=>OIpIVZeLwv+ZD}JEw*1G^CGitC|Dme zHTF1|Vcs>_whcaJMVHsFre@4edl_|2KKB^rnBi_#&mbn4ZKn;VJcg-a$tj=Dvh#9y q%$D{20d^7dL$~u6*|qKeEdBzbdlzpMd1hV!0000Kl|gGGHx$R`F!VVaT;8R8Y_ z87=?zS$ceC%7xGO^PSd!su4V7h%XikR@V(L!O!EdmZ>4To`#Tx8)Ha?62*Swa0iM zmkVw(O?x}mM;YY6L%ZYfdMSE{3D%oI=fH z-m7aw=D__6e6fV`>K~%!Q7sr6Fz^_A*knWy#!t3*pcqaZugYv1ZfLAPk~9W1hW>!D zqu_RSMaZ1gcN|d1k;f>(lbFD7N>|kgc3f{*GXe!?&5@W9N+ZX&!ygG@q#ra0`5j|y zI-?F@@kzrG>yZ9g^I~0hMj)|!3$_bJAm6R1HJpqX>$`~nrp)8Ybvk0@z?+|i^{1B& zhOaU2ooJQ$dSXGkonDT1$rL`*>7G6u2>uiMf{*9@@72OR2mYt{7v-ud6&>Wh&;S4c M07*qoM6N<$f@28ZiU0rr diff --git a/graphics/object_events/pics/pokemon/followers/tauros.png b/graphics/object_events/pics/pokemon/followers/tauros.png deleted file mode 100644 index bb730a117722c586b38906627e64d19953358917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)}9Spfk7DIpP&k&)@?`B716;i*Xg0000000000J1@_~00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMVCKorMs<5r|dFk6xQ2Uv=`y1Iyq z;<1$#wOcD-=l~e=h@1hEt9@0nRvEHZ>e3;Lp+LB_O}#z{!5~H3Hqn0Hd0>PlJ%ZY#3n5F86DYKrHKXs&)2iz)eh&8W}Z} zn*3dOn4}D7#d(5KP7*C?f8~!t>oOQHFDUi!rH2P8r*#!p1(#Q(^6v~f76L#)w_*=* zj#yoV$vsaNQcYA|PfK-_2EgNlCR$ZyKr5~v(9XDSej1@R-V8o^?E{!VNTquUYq!1; zo3|3{kV?FXYfsra*EObKJAQ&%8M>jxB@TeZGH-0H>9R4vydnpH4V%v#vz&m+NOL-r zMZA^@4!LF5oacCLz?U*(t4z`)j`#_k#gjr%Wfa*EvB<8b968`xyk_mQm#+s~*iyJi z()kEPCZ6D|5L6k>7MP;BccCCLM!a9}Loz=({--Vse`c zl58HHE*nhBzKxubcp6DvqOh+Yg^4+?`VUe{^dx1C^aH jSbZLL2<-E(7hB9VIk@1`N`4Y*~y6j0000000000+)A?(00009 za7bBm000XU000XU0RWnu7ytkQDoI2^R9J=Wl|OHrKp4iExcQ{Y;4urT#|kM)$4D8n zc8HV_Y6+8#Q&iufOfrZgm2Ivfs)dv_@Y~ma@*4cEvV|#V6{`n(A18D5R zZ%qc7+^`LPxH`AzA$HcuFo*8C?neXZ^_bR}8CXDBw?YfkSgIatyUvH%hI+-&y*fR1 z@eR=U3tWOgubs|Pab6oQ!%X0CeRJrh>vJOm3wW2|K%Kil_X71$*mmb1{TQ!M<)Z`4 zzhwowJ3W>PA$1R@1`d7S{}3Qk=jNFkn4F#iAW!FZRR9n3WSDJl?)wokmkoPetyco< zvEQ)t@6KUgAXDepxzbyBI5V*QM5`S|fhP@r@A!#wrusEYpHz?w^l)|lBasWJ5)&_W zlrkL1C@q4ndf|Yh_#7NZ`ow{Gs=TVQyArl{q#qEjWXW;`x)P~hu8RQlu* z1VbM_d7rzi_ea2-9A-+(OnhybR8{4nYI{~ycuOM_I#GO&PPz#GJXLn!`*hmhkqO`3 zbCru{6v&qWE{}Ms1fE2Z>PI1ZC1wjX>+@cZZ?t?=T3ELpnliF<*=pcXUw74OO=X6v af307m3NaIzB2SF~0000>G?r1DbcB60RaKg(b3^CVL3@*p2BK)00009 za7bBm000XU000XU0RWnu7ytkP@<~KNR7i>Klrd}DKorNNRT!=*HrZPGdP4_+mwtg9 zZ#*a-LYK@LvX?BSpP&$EDOo&t@*ro<;4a}fLjzZP=qJeF&4^$$8eA!E{O(>WVG5n< zHwd17r~mIgBosya+Sk7J^&i!GegF6T;7QoW2frVY_#!yP0vq|-t%ESJn(=Ak<2H7B z^?{9Cq?g}!o;DJs2S$jJ7 z1@WEEkGY_e+wxd_U?(@Kj(6JA`~+@D(9`+cq@iH4IJ(nwI>d#Og;F6WVJvlSJVEpn zrwd?$l|AaAqqVqjWhKghlTaW!kZ1w@s0Jx;pti@VGFeZhs1rMP`A!WO=(5icV;`xrkqs<-S!?AmRviZ`@+@?Kx!|~ zEdkI)VYO^FN1-!SSi7sgW63nR!_$X?eM!c~P0E;W1(Pp`kfRVE_OCzgE$N00009 za7bBm000XU000XU0RWnu7ytkQV@X6oR7i>K)iG<^Koke?%V{rh77b3}I7NvfQ4ms7 zg!%zGb+F-4j3D2^A;pxM4$@+}wU8lXQbfMLIyT7TQSRS00d3B=~kF25pi)`qt1V&h%@HZMCh|SLYP-s~lT|P9Ed7!L*zkK*u8a;jKHs5)T?oBFm0^UeuOhNwn zc#%ZK{F>1-=v?3TKipsEzsoYm074sAAWtS2Ns=E~-3S9D$%&D~&=wm!kuh}QEO1_~ znk~vYBK~u z$P&F`lUTn2RqAJwM8*C@=xr2di zu2IL{opMAewUYctt~qN6{5T4VK>gNHxHWr7)~I8TV3wzuMlqo3tU%Qx_ls(Oi@Hgc)2+7QOgHZ+| ze!-bhe$iLdCFF*>uIYq5&CE8WTTM5m;uh5cvt=wiuc~9>gc=POH;`W0;Cl#dVN5Zp f{>}fh@!!^85p96jPk|7>00000NkvXXu0mjfz`t8B diff --git a/graphics/object_events/pics/pokemon/followers/togekiss.png b/graphics/object_events/pics/pokemon/followers/togekiss.png deleted file mode 100644 index 64cd1f5295f9ee8322c52d5f27a259f4ef4ab6aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)W0RcflLFwuFk(sdo0000000000000000000000000lwOfA00009 za7bBm000XU000XU0RWnu7ytkQQ%OWYR7i>Kl|ggbFc5`BXXG#6+S<{D?kQ&+&@JlDUl?>$Uvg|Ilmt>GYr`k3H+)C)10Vov2{_O5c$OLHr!W@ zrD@d0V4tXfAW-)yY#@pZ1#0c0qmdA0iAUJhU)MN8I4-bTr4X@I$_7bmArLJ~d$6!d zBdT&ROo+0?pHM!1Bfa_EF+bu2Xuv6n&!KNs5ZJ2FlRnA&Iyw|K5KZmb#0{-nlbqi7 z8|35Dj|TlFagCFXNa8FkIOvl@cR{TKkp_D%ans_?xAXocThK^bf(Tv2rAFu7@Q|tY z+Fla7U8#G+aM<(2>wTDd6T_*iK;Ul#QFcRI=#B_NCJt_*QA$+8%|d_F$I$1AIcSXl zuhA)G=Ennko}2!zgY-nA1LB|*VADAI>kO0#L~auLlf)J62)w9GWWad+|#j#$3&N-6EBGY<0d9zfoRx6Ye0%w|6CNbr9>pkDDi#t zDEnh4;{LQUB04xt9lalIAUYCyy%t{M>(|&$KQzdR=;$Z!-#|1F)?~1W=eZ8||C(AR zFTae4)3cfwuFN1-$?;K9Q2_w~Am}_}00009 za7bBm000XU000XU0RWnu7ytkPpGibPR7i>K(7#IpVHgMS8*bJ?g$6-zaB7M3AP~+A zZwQJ#a=cpF^nX_W|&mmK4J6n+gVPMI1%HjtZN$HdvSozFpmBfH9|4}W!(AM{wU*H~2cntd zE`K@(U8rKLb=*B|^BDK;i3{vD^MG&^9l(CpFs=gj-G#MkZ(#LkoB7BeUUg~sN!e8bK-1P$9Auosp00000NkvXXu0mjfzcKxM diff --git a/graphics/object_events/pics/pokemon/followers/togetic.png b/graphics/object_events/pics/pokemon/followers/togetic.png deleted file mode 100644 index 820d1ecbc1169087bc71e3126505b54e3f466ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*w{F6;>(vmH4P&Z zS3cC#)MR92ycrm|aN|v&5=`*DHA59B%30tMSEyR(pIAcc9P28UI~3YAetRqF7_+hM%BiPijK#Zu z7&PilpFA@*P+V20i+cvQ=|n%Z2|mwq!p=Q9Kf&g*1yIz~VP{fOQ$Cl0tgwgD)uWgB zJ6e*~Ja6cH+qGySQXW*etJqz+S_A0-v)%->{}tTD?0K`wQGCh zix)3M^rJ7ipSoQZYGix!?vpIb45JHdO4sw7j1pp-*DK~tTw!wDLQC&eBn8Ix@f{PnN9`bfN@ zM)h%DhtI|Qul!Z~Nh(qm)<@T@{Q5Tk+gtbBztU>kIL`lVP33S&7kTYf*E4OmZK>y? z6KlAn#9fwm`PWTQOXpM()O+BqGBHG_&cZ_Zxt?Q*khshIznA=dg*+#_sCU^Lul#Z8 bhxn~}%L7}~%VY&FfzqX?tDnm{r-UW|fMYpw diff --git a/graphics/object_events/pics/pokemon/followers/torchic.png b/graphics/object_events/pics/pokemon/followers/torchic.png deleted file mode 100644 index afaeba264d1fe60bf56af75d139229f40c0c77b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!Zzg@a4;&jEszx zfr1Ms2EJS=`14}o#Y9G+5=`)D%0D-tC})93WHAE+w=f7ZGR&GI!N9=i-_7Rnk#d}%?NcQQ2D}Jwt2yAQ{OELlZv~O>$QL9cRTi5Q}cw@ ziSA#yx+C&$%RQy+eEXH__p;uYa$84f-OeZP81GN!R`V&;{qWzyAnN`3-4cPi9|{#7 z+uU~dJ#~1($@9A_&i+_iec*FpLgq1}{@J!t&Hpm`Uam8FS9pIp7qzfEnL+w{$+}wt2Pm-36!nW+7%THoHAq9>R22+2>CE*UeiG sxVF~*^82yiyY^4FzmA4){vEDixapYp@bJ$@c~HQ6y85}Sb4q9e0C%Oy<^TWy diff --git a/graphics/object_events/pics/pokemon/followers/torkoal.png b/graphics/object_events/pics/pokemon/followers/torkoal.png deleted file mode 100644 index 1e5835f1fd392c88798902aac49a81bd7533777f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)IZ?T}xiL9G000000000000000OgZzd00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>K)je<8Ko|$`N2+Y8@`NSK9IKFlrBXUj zW#ojAyiinNbq$<}JW(mR4-nV7$RkS_6RA@dT8wk)eYu`pY>In!hIZsZviw8#|K98~ zz^P7ks#E>9QbyJO=lpZhtn$mny-k%JLO$CSemTDvTbl}hFwL_;nekj4v_p@IPUNEq zh2>U>sGAZiWNCvI6a3d#Z!f>Nz1z z)j|kyTjn(If+4@Zy)1L(8mT&2np4EZ&z3o<>B?f1cUN|aE7!HABWlfW+f(jaxZwd96ZD=YHFh(Ko7onYgt zLp$`YvynIn?1y6IiAOED;q^VTIO?xKW_38OwF0(XvD@1A2$Fsdg1g2jooOM8)2}2oA}|mH!=?wlW9j&8EcrOVz`irKcsalKOq;;r^nl>K7~2X|oX#jR*h$ N002ovPDHLkV1kIuOdkLM diff --git a/graphics/object_events/pics/pokemon/followers/torterra.png b/graphics/object_events/pics/pokemon/followers/torterra.png deleted file mode 100644 index 61aa0d498fad3b0839eb6256cf91646db73f84f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1245 zcmV<31S0#1P)G^qKF+s6Wh=K+r00009 za7bBm000ie000ie0hKEb8vplS{DF|nIrwreT--Ag-|X9YPy0ra0l161xQk(EncMx=1NSnw`0cl+ao#Jc zW{zSlkHgtxeq-n)-14}^3S*AifX?l}dVz5@U(Yk=KRp7yW>*HeqGBgxFtr0}wzB87 zgPJOnm?_<5wYbHnPUW&7!GE24FfFt~urkcDSRw z!wQxSv60Ppl&;kYH%XnjXGmt&XpO94QxK(qfd@J;dU=Dc-%!VF2o&~kU0-V(7QsYGb&hN zgOH61?qOxd*JjEi7Bl0ya&X9N;tZ-LrwAR?_~>MhS>udX|3WK2_)k#u7P2+43oMwi zbeIIuO?XM{OS@RL?##)9A>j%#yIbY1$E}e=kxA+ZWB+k z*+KOAql;=L+Mt$O`-Y;Wc(gSrj)0i)V7Q;Oc*G-%GjWPmPSF=DFca4w2FAP(UwJc5f=GjDc)GHZMA=o?jx;cTrWS+-ZN;O#?>1#at;2StP1re> zGkpzk>*xgUgwTg%;>78}l!7!i>r=R1+UckDH^bwA46H2F-X zZ)1!}gaHwMoXM3RPv}{M!PG2_8O>!Y3)glcJ!4RrPpz3KZ@m9I+;t6#-P8i`osxEk z-&DkPF||^Q@TXt)q)RDjcjPITJpB-%qX*>DyWzmM>lOU?Ps3^=3xDlj_x-NCuCL9R z2ks|0J<~6Op?8JP=NG^*O6T+VD|a#eeAdelslu1O!ETED(dzt4>fd?!-zGe#hG$?m zjdK*|%8lWUrH1FecU{A0={_OpeyZrZL?_Ne2bxhZlrGnv8BC#D57EZf7`M775kAX^?w^|8M*YCBo*?tOjA>00000NkvXX Hu0mjfk$_jt diff --git a/graphics/object_events/pics/pokemon/followers/totodile.png b/graphics/object_events/pics/pokemon/followers/totodile.png deleted file mode 100644 index 7973715de3f3fe98bd5e35a2b1b93a1a4e697dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmV-E0>S->P)G^T7=|N$Md1)!3Avpj500000xI@)W00009 za7bBm000XU000XU0RWnu7ytkPv`IukR7i>K)W1r@KpY3~EXCVh1V`V%UnB8Kw}RG5 z2!YU!zJO!tloA4I;--V(7)#18bdVy{*gJ>EHE&crO_cS zlmT_~4zw(?z+}Wmk0} z#PW3489mT!xM;T9&!_M9ekUc)PcEbhG}ke{W9~ekP8*!!>F}g0in{CgBbv!OPq-uD z@oM$)A=kNIzkkQ~0NvnnThm;(;aliDEk#4ZEzThUe7-_?54hpGPCOUrKy0gS-V}OA zGf&(cl5so2QHfZ9FmU@nzB^pdd?FU8nsMhlSd;mk!> zxtHuz*j44)Cg;;;r^yCD`u3%pA_V2z$S#NH^{x$uWLZg%M5<&7+j_@OUp;xWaa?Iv zxx*HuG{tP=r3nc7fm$b#^bWj8o}F1A-?DZZEPX;_ov3xP=kNcPPmsXx6`}mWvH$=8 M07*qoM6N<$f)Yv%MF0Q* diff --git a/graphics/object_events/pics/pokemon/followers/toxicroak.png b/graphics/object_events/pics/pokemon/followers/toxicroak.png deleted file mode 100644 index cbfdfb632d3c5d4854719a138375b6379eb6dffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)~0000000000V0Pi900009 za7bBm000XU000XU0RWnu7ytkQ4@pEpR7i>Kl)sDHFdW4VhZp?`9TmJ7PfmMK)!W_F zDY%4##VcR`e&h&8ByQ>ZndGOGP<`d$c@}hek!BVPK4a(ZnK@8%0YH-d64yjvYVUFN4YFV zInJ`Z83tJ|NCiI3j&YWav0K_6`@KKT^De3}c)v(u`0?K`a zF;gA9!>#Z7g)o1G7i8fx@F{Pr>-TEg`oNZZvB~un zHvE>IwqW7UjWG8$XW&a#Pd$CZjndniZJz+23_jzzwcroa7#74!>ROAKJ8Wr8ioF+p zjyoTHF;ActS;CQ9?m!`H#m9Wa=?f2z{73x(5!E>Aq~b~K00000NkvXXu0mjf=LIf< diff --git a/graphics/object_events/pics/pokemon/followers/trapinch.png b/graphics/object_events/pics/pokemon/followers/trapinch.png deleted file mode 100644 index 4a27dff4060a3695d7a84ea5c14b364ffc5a4b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!XZ};mSzQla+y* znwmd<{$yli%*@QJtgI|FGz6+b1J-c|Hvxq>3p^r=85p>QL70(Y)*J~221aL37sn8f z&bN~ty$>6R9B*!S>ffl|@4aBg<7t5}b8q;4c*oxH^2D{(O;_~|%I4^X{L1xRyv6fc zNfU?MFYB+zPygP}?#Va<41TzqoGrXkFFnDz;%H19_ui6M>C6lt(gY4&c*xr_apUZ# z>C7tsVybN3ye&U)X4bo|?rn(=%luL=H}O`f_OsnOwXNQCg~PKlt->FRMKg9MUC!H* z;`cm)ZBgR+6ouYd>(X{7%{^imyME3&L#G=O7plL>shAwPyLfYKVZY`16Q^F<%{-sP z#Ad60n%yhlyGl-Yg{f2G+p_uWKaAwd_(M4#{hht}Z*@+ml-VO|q4?b~CsGaGuD@D# zv|Zr#&H#g@4Y$8m>Rg}g>=`Vic8F=P4*hU%B)&_^>psi`QHvd r^8KwF%4~5k*?v9u=LQ|gyY;8kpWQDIv={ur4+?fqS3j3^P6R0{{o0t2#u9L@rd$YKTtZeb8+WSBKaf`Nh2 z%G1R$#G~`=m5q7L1_EpkI?gT*6tDI&3R#pN@GNhxamjisgYZ+@Eoa+89^T8euciX;1LCH|``KRlauc9v=OwLkOUn4c`$DETAxiW#TYW!-JhPGv7HldgI* zZPv%VANU+Y8{Per6Nkm!2T<=TKCVz3yT;Gmn?z0q$%z9y!b9=l+^@%Oi62 zhOKY2nf;>bd#g0oe0;^La7`v!ZbRnpnkWxjn=^vNqT8OCF-q5*vFz!-qUR&l+Hvz+ zYfhK8xUVIjLYZenw^ovxNk>EEs@#V^J_qr;?>peSy2Cz>&oO)sv&^y3tnClq{diZK z{OU$S>@>5dOD5csef{~RWRlqOpq4Xzdn|qLEi2nu-}?5-&7WsK^PRAIk$-zP`<{JW phu_$xZvM?*x6dwncKr4F8Tu_%=aO6vq`W}k?CI*~vd$@?2>|#8xQ_q; diff --git a/graphics/object_events/pics/pokemon/followers/tropius.png b/graphics/object_events/pics/pokemon/followers/tropius.png deleted file mode 100644 index d052138683fe802e4d6bb8ae6a85fd337cec5f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 zcmV+^1lIeBP)G}E5A)$Fud0|Nb0RaF200000rKGab00009 za7bBm000XU000XU0RWnu7ytkRpGibPR7i>KmOpRfHWKS_;mq$+{?RMTse3ov zRNy$+`ia!@JS1Py_PkH+Q~TdEKm0iUp#Jb8{1|pO)qi76=@hR?i0qSN{m0lT=EqSB z2180O%2qHUSB?iHZHELCN|SQ`>=O>$1N-ue76IXPm9IG)k{SP`!5*h<~z_CLsI5BIUI6)s6GKbJ6R%}D*iYuE~KOZ}; zDE(G12&G_?jUEozcjyGEsS4@@2Nlba^Q$)T_3z)@w274=5_Xr>i7upyjp%0Yd|0nElB3g*|peSOoQL4a%nn8Xkl zMFnl70GMMAr7e<-!g;YB)XWwga=-xE83gM5qt#CJa{b@IHzlL5KK283vGAs|O)hIz~H-e#|Mn_`-AYq)28 ziwLm0UrtW{e$K%;5M+W&<_tu6lmm75rILT7nTSVMPuP_yA@T0ybXyT(>z)8|Yp5DQ zbQ3uqkH{^4c6wIsZb4+btuO*#>^U=rRVJeJ{$-SkQCwO>WM`;gT9Kk4aShHvAuHU& zU%e^u(_a?k~MXc9*pwvNa6A#0B?hcNLHU9ZF9Cq=HJ-<4jz(?D_0R zfLA=kK*-KeiEIQ#0oh0>XQ-#9*?e_JHs=75piAV4L&|2CE&JcEqIB~*#NI>piPA+; zthS1{1rTcCSagN$MY`$<2z+-9vxv=FgW!6#Sj%}gI+)AFdULbqh15rbEYUEK`lyiW zl5~;0S}y0?8nDnbujjYGmYtwdk7s+qv!zmfL%EQ0Cwsh=a=mAFOR4$m?niTH_)#o7 zK@WePY%^2u8_MnDa<}fy$nc@Ti>>$hi)DA~exWaa=rXGQSbSt}s0IHWpl67;dNOu& jaQHXlJ?#Sl-q-#CS{jm_jR6va00000NkvXXu0mjf_{{CB diff --git a/graphics/object_events/pics/pokemon/followers/turtwig.png b/graphics/object_events/pics/pokemon/followers/turtwig.png deleted file mode 100644 index a5246fa1ee76f220f1f5d2bfa69d28446d93b4b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)K)G*Lq)D?}FMq?KrNG?Tfc>w_dX<0eBF){hkVE_OCA+eVa00009 za7bBm000XU000XU0RWnu7ytkR!%0LzR7i>KmA{J{M-<101#Ppq7(uLHr8q546o^qX z_y`Jd5jJ9)gA2zVVcp1yGHkPj1kMzO5S-0s8&!dn2aeGl>^0III)OGR;v!949OMv! z;KB*y3WNTJ%-tecsG|zwf;nApri5|3=ux=j$;z=bvQVam}w=y#Kwy zu;Xt z&YpEdA}V>IDmYz!9{xTyc=7m9GXVbn*C8Q##;iZnus1wyqc-|E7CBq6oS8i&7vIE- z$Y5ru8C0_UBu;VHVA3N*Fd@B8zy#a-p2*p0!JjIDCB8`FB|cZYx@^Q(XvS~shFUDTHqiTxMn7xLwVjrQy*wYPg?it)mq+mIt zFp-97*-(sQk3}kKWEEU+!-W_+)61tlFC|)^bD|7vuXFSmp`$~uBU%!SMU#17&T#u$5Q=8Sm=ZoN2Iv4MKBV!=2i+F|+83-rOCc+nLzmP};D zc)0yxYIKltPD^h6eXx3t*wn+i$Ih1XRFHwRR+y|b9FhPGGSdmWrFDJi7e>XlB=Se)$=z~945!W;3Vxx zW*OS3(?N~OiY-d3^Z{%Rq@!C1o>b*}wPdvnuZQtxVKz3H{iYNHX9{6HsnZ9NnR-5f zZ{%{rG-G=0AN2?e9w`C0_GLof$?h6_Z$LDI0P>hgL1#AMd}CLx&olPB$aF<7GaK@~ z+WqX<;3nNS_!CHJAJ(S=D>*C@(x5WWikNO-E;zWnpN)L^gf+PA2bwF7DCL6E(Rl=m z#7GL3df6uCL#3^^vynxv@He!tOgiH$)(t~o<@rlnoct=y*Af2!;b-aM Trp3Uo00000NkvXXu0mjfUZNA- diff --git a/graphics/object_events/pics/pokemon/followers/tyranitar.png b/graphics/object_events/pics/pokemon/followers/tyranitar.png deleted file mode 100644 index ec13b289dcb6ba3b5f840f9af518fead6263369d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)L=X{qVy`LWq~0RaJFiNP^JK>z>%3@&9J00009 za7bBm000XU000XU0RWnu7ytkRB1uF+R7i>Kl`(JAKorLVF4k@yffe_wRH{Xi)FpRC!w^*&`CBB!mY7#Y@BS_Q}f~`9Fc6BiLq@Dp@f0j362+Uh6eIAmWS2y>U0Y;CrUFVE~&kGxSMSkiIcp6U9S4h*b*e zr2=1dvgo+%8dk_NYNkfA()&7M4VT`{g<*Mr zl)&WJS@U`fv$NNfzdbgF7)d|;_4839SP|qWWUlL+B{WQ^;Vhvy4TmyG;lT-y`gI~J zF4NJQm}^6IsPQD6oDzLExP&PNBe-DsU_l7e8$iq=vek1YClvg25lwlWn4DG$BW{abrN#9L3SB#(N!ey1cY^LNTa?%(QlAZe%G4+BLFiVV~!_Npc{lN8z4!15;6kMq> zZZfJU8^hwzk@CR$;C$=J)qyc|df)BuYa6v-J1oOqXWdG+>RrqKS^Ne`(xO~7a|7@I O0000; diff --git a/graphics/object_events/pics/pokemon/followers/tyrogue.png b/graphics/object_events/pics/pokemon/followers/tyrogue.png deleted file mode 100644 index dfa25a19b8078015b238866860265f33536591e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)G_Fa3CW?^ktr#0QGoye00000;7cV|00009 za7bBm000XU000XU0RWnu7ytkPc}YY;R7i>Kk1=b5Kp2J{4&s_6KOjpxWJ{ZbP7VeF zhnqG5>DawX>5@T$k}J9v`WL!qkbXGVF@u8;{4b3cXzn|6R)kLV*`9mv-tRk2>*(m{ z_(v>^_D+19$<7JA*6!;u5mVVYX6PGro`wEiFKo+b0_-jZM z9wyW@!TSkiKNa4==S{43+Xb*!mpy#70OrB~$vMG0#BZM3eaCTZh3g*=01IJT$xnxY zIcK%*I7&C2A{Q5yy@ce98REf$v8-{<819q(NH8mMTv+6{UelapXt+i!>}A1ye}D=n z{ej~(&Gp9_Zktqopl`=hRJa^ZS>t^3ywXI1<+VIO+gz=3VUnp{DCK*u;zIstls`Zz5!Mv@FAG^AfW&N002ovPDHLk FV1iQP;#&X! diff --git a/graphics/object_events/pics/pokemon/followers/umbreon.png b/graphics/object_events/pics/pokemon/followers/umbreon.png deleted file mode 100644 index d15f9abcfa342221af91ab49b19311861fd700e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 739 zcmV<90v!E`P)FN35u_+lTIYCKL0RaK|*;#3Ed5JjzDLFv^0000000000B*hr>00009 za7bBm000XU000XU0RWnu7ytkQSxH1eR7i>Kmc4GXao&vBsCodq-1w3_Op=3OFq1aU8dQL zXG~cFTpmqIKdG2Sb~G{Q%LFSdJ7a_vs+KnPto^&>G6l;srrZfCW?;29 zc$I>I9csB)3Cq{vW&K0O&cIr3V7-B^u&aCU-t<>S)^Hj!?WWuwWbCXh-8_(d0H25D z(9mxNfhSbpBxM2-Z&5GH38P~(uz?30x>7I*dTxS%Y@n(ddyqw9(|Rrl<5n_GP=9~x zR;U>TM{dXmK;GR~)q_3AXz=5dB!)b--k`mQHO8`35!3!(-k+rJ!WG%^Ds(8_8jy%e z8=e8F@u|TYn`7>8_y%`$^No1}nPvva^~g!#2Hg1Op1HvsenLAt%-hDSYjVd1j0uX; zOwGj^Y0jo*+7K4vV_{a8geCG{M6@6d})Z{F=A?v@z^MopH^Mo6SLc|q+(c=Nc#M+C$`$Ok>B9V%JSsUeeM^Y&%R!&n`9eqTO=@{mURY$b!x+$YAy+mgP99Y%CZ6t`?`*a mv2E}2gx!X1dtaOLnto*zDUw(Bz4v+v$h)4delF{r5}E+^&Ty3g diff --git a/graphics/object_events/pics/pokemon/followers/unownb.png b/graphics/object_events/pics/pokemon/followers/unownb.png deleted file mode 100644 index 45d35e5d5b017259a647b1403867e31ec6820e21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@bDl1aAs(G?r#SK*QV?*R zDQ(d9MalFXr?CD4@q)*H`xSb*XU2CqFWUX{<+IPTzZ(ZgHJyH1wDX^O-?upm&i7g8 zEwYUV(#)Se3!dG%l%er-Rp;TDb@KBWI`%OyDcb+E%#ksBe#euUOe{eYF9|S6cs%1a z5#VC{(ah--b^dttrl(59=?n)Btl96)dgM+J!+}>8{6(iWMjo)fv~vl=lB^ZF7Y>}g z-u{-=S|Q!Gk!>IM=Qk{O^i;y6J=dsT*tsyFd`0lRpbuY{PBj1P8{1yR$bDS3_K!ru QE>KW-y85}Sb4q9e0JeR9+yDRo diff --git a/graphics/object_events/pics/pokemon/followers/unownc.png b/graphics/object_events/pics/pokemon/followers/unownc.png deleted file mode 100644 index 857f2711ac157fe24e4918c9c0d11b6269178a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@|DG<6As(G?r#SK*QV?*R zDg8nCQumb|>Z)-L`VWr%mOq$jI&J2{)>p?^CzpKudHDAh);X`Qt`1+nUze%wQ?_u# ztj5^=jrwW__Rlk$Z*rDRL*Zy-;_dXy#g})tOV diff --git a/graphics/object_events/pics/pokemon/followers/unownd.png b/graphics/object_events/pics/pokemon/followers/unownd.png deleted file mode 100644 index cd97e890722b22f2ffd05f26c783c64da825fa85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@8=fwXAs(G?r(EPctia>) zmUlx-gvv{Xz`O4RLr?uvHhJmZ!r$bx`d?vv`^nuA4V`Tu@K0^pgZl>}iWwriS_>lm zKN!ErcHq-lyNl%=k4D3hpJvQ9+k(X;7(4bcJ=xOvk*%WQ=C$I3f&mQim%Spr#desx zc+QVyWa!y`T*fHBad&!XtQC`hMEX`nwjaI>4BdQnd<+Wrm$ybSiiG;}*qu71?E0YY z?b(IV51wDx-2RZ0A)zprS77~G@+sGFozqQR)c0ZQrtJ)3FE{AA%zGF+C)!Es{hMd=m_#m>?kf4|t5q%fF3 z{1>9@@=l8(anaH9wyYX4@-`2CJ^0DB@2+bZb6T0G$-2$|Qn&v$>&V~;v}Kn; QGAJZGUHx3vIVCg!08!O|HUIzs diff --git a/graphics/object_events/pics/pokemon/followers/unownf.png b/graphics/object_events/pics/pokemon/followers/unownf.png deleted file mode 100644 index f5ed82cea4b23f8c2128f8388e7fd31ef5267846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@x1KJJAs(G?r^NC#D+sjQ zl(yjfsFeH5?~e2qaf8e~{{>g6d@{~xwfovwnUwJNSnA?qC8a>{xBbZ>dCtSCqKTG4 zhQFB=rp@dYTCn}GkeL>fgvC9%kSR=i>tF9#uX}ZqexuRed3=%Kngws!!a~1)e$Bvk zYRTkgxB1My8O02Y+Yc=1YjC@E_#5A)+UniRAJ1{_IL8xEntq^JQs9Ea-3fgP?0MyC zVa~O#49q*#*x$vrF6XTHA}FfQ7~snEMZknj;DQyGN8`QQ%NQKx6kM4Z>fc-pXHl5% u@bIrl!Lw|p9-jMqZrYstqhEh{-3tCtJ{4mJ%kW@ONO`*YxvXo( zD}N;DO20^9f6_AdPiJ5h!MnfuC^)%X7uV{lm8 zUv2S(A*Qzc|Bo}03<0aJFJS%bZ_N%#u28|bzf3W}n diff --git a/graphics/object_events/pics/pokemon/followers/unownh.png b/graphics/object_events/pics/pokemon/followers/unownh.png deleted file mode 100644 index ae4a8141b4f5d5a19b8d62b6ff4e759869f5b90f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@Yo0ESAs(G?r+D)<8}PVH zmaYgnVym^}onV+ggZPVO-|d~|mI>Z$NEW-BD$xC8q4~qsAV-!z|&&pCzIepLhScci zRdWTo(x08W%^GI$L5Y1nXKQ`&!UXj_x!QiMhf>+5zjNT8XmIzca^RsumFr}{X6*@a z*c+m{WlwBEEBpMV$C+6-xtu!J|MYX2qt@%BPHRp4-TO)KgbJ S*)M+`6eOOmelF{r5}E*P*?%YB zeDMr=X8gdNm0{C|-%LFzaoc}++}n9#raQw+ZU^zy^EGTK>ogT6+|PM7tLdFg^gny9 hD(Q_+LvLRRxyqO*F84l9`?Lngqn@sQF6*2UngDL+aqj>C diff --git a/graphics/object_events/pics/pokemon/followers/unownj.png b/graphics/object_events/pics/pokemon/followers/unownj.png deleted file mode 100644 index f9b89ef152cc7629445633b5a247e5c88ddd3215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@ot`d^As(G?rx@}bR^V}U ze8sq-Wz%z>mAl*{_BvEI>g@b4ILqgXe8JtaulMcl@6oprXgdA0XlG1v;3=;v&nc_A zCoFo;n0f!1;s=K_zr*;|CT`uw%yYS@dj6yX#?OD3vvTO1KW@b$XK8%hhFPGNU4mQu zA?t_bObkg6|FdqGv?u1cwq^0NS<+kr5*^_WSp|x{8JU<>tNAwfzLz`3Ki%VWl|F+) tRq26{2JK8eP3CD$9=pQXed;G>uMls&FSmG$oLN4|*PgC^F6*2Ung9VsZLk0U diff --git a/graphics/object_events/pics/pokemon/followers/unownk.png b/graphics/object_events/pics/pokemon/followers/unownk.png deleted file mode 100644 index ddf85a98010c7c8d3c16c188f60200978e1deb56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@L!K^Vz4?;s2 z4r$)Yzap}X*U*@gi!1SoN40{mnnTP4?u`cGbq`sN>5E?%$+M|^#{b@-0Xyk^ZU%_tW~UXn|E~{_5yj_)78&qol`;+04I-dqyPW_ diff --git a/graphics/object_events/pics/pokemon/followers/unownm.png b/graphics/object_events/pics/pokemon/followers/unownm.png deleted file mode 100644 index 313e7d9743d0d1e6eb70e88d7552d848037f3e3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@)1EGlAs(G?r&#kHG7xaN zF2sJLbIlh^XMw#_Ma3JqFBJS&esDpc|6tiA#mZeLyYFelPn-t=^=Cb074}WFK6Iye z;p_*EE2s9)dbQ)ZQzIW&?$fW0J}Zn?ESOp?RCK=8?_-TdROM+0t(Kn8u5-n9#MVC4wB~J8{UahLrJ%?!#_r(s?tWh9{PX+sPo6qka-M6u10MCsi>B`U1qugG LS3j3^P6rOM{-w_7$X|EfA>51ux8pBsup~;kJ!5Jcb&9r*|`*>nLcW+c2jN%tzE_Q z==JOaiQ(TFV&?t%_p<+k>W%%(>|7!S3mBH37j|}MV6wft?qK$TJL&V|>R1%M={~TK zUA>Q~>-_Qy!VM1g@#j2Q)8@|%zAn#j;k=Ey=#O9q2Ez~k87wAQ$bL~4oWJu2i^Cgf z2lqK1tf!VfxFX)*uya}<^R9^a*ZE8g8b>#?l^EKx?PB_5v!>~4R>T@1hSjOn;xp}D Y@;Mw;)lRu&vk(*{p00i_>zopr0GP*n6aWAK diff --git a/graphics/object_events/pics/pokemon/followers/unowno.png b/graphics/object_events/pics/pokemon/followers/unowno.png deleted file mode 100644 index d25edf3962b200379f3c005d510fa693fc486f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@^PVn_As(G?ryS%xtia>? zk!@ScCXZG31jEEL#9u7^-5(IZ-{_x|vG`uWl;+BZwVf(udDqrNZch8V*5irD`&^IQ z%>`#TQ+NM6rSNCx@gG4pJFjnddUWTc#(VY!6C&dLrv<)q?5Nci*}f)R&1}a#vwQpw z3j=EIIA6Se=t!t(jc|igm(<~fAC@x+Bt7`aU?H?WuCHIE_-ZdV$Hx5DmrJu&#AT_v z05v5BRsPV?wG&XtoVZF}J6`oW+k5sMHk@ZJCVXmS2!EfyeCbK{w!1ou?;ZW5_G`b- RAwE!8c)I$ztaD0e0sw{lgPs5Y diff --git a/graphics/object_events/pics/pokemon/followers/unownp.png b/graphics/object_events/pics/pokemon/followers/unownp.png deleted file mode 100644 index 79bd00f6b4263e3ecc368de6b39e7342627a449a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@b)GJcAs(G?rv!2}8wj}E zl}=H8qIB!O*LHSI(f9Q&X7X3xn6z#ED^#}6=-dZ3r6sRp^roLKjq^S7mdP;ox^Ws? z!hEs63t7@;PqVA>;ac_UX|_WZAOBPDgm0U3cBV2kek_tNZ?qJjXxh)<63=`raEpGU zJ+FcQ`+vCu+B=aM!J%tWeHG`CJ0=Yd&(hX$@i=@5RVdr=;h2mxNACIt hyMl@XpKk2@_LWIDQiiwtZGHsEtDdfYF6*2UngDXoYvKR^ diff --git a/graphics/object_events/pics/pokemon/followers/unownq.png b/graphics/object_events/pics/pokemon/followers/unownq.png deleted file mode 100644 index b977aaf0b2a48fdf5acbe48b41c09dea88c7fc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@8=fwXAs(G?r<~;oeuZj-aP+v&Z@PBp&(GNRPpHkw9S?O zJsPx`Tp2=K3zVPzvT``txN`op>}66h|H0sJpP_2~x!H^kzn-wp_{sUIS=G?L=aBidBZtEK z4L5K#+)30ncM*`gbwfP(;_3GbSOmIvs(Xg diff --git a/graphics/object_events/pics/pokemon/followers/unownquestion.png b/graphics/object_events/pics/pokemon/followers/unownquestion.png deleted file mode 100644 index 93716026ac265cde20c7bf735b422615ab09d2b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@U7jwEAs(G?r)(5Ftia=% z$UNoq#mS!U|@7z$Bmy(k5r2ety3vQR$sWv$p zJ*gA9?SC(=;diN!d=jR3aqF#BT-RfS{;C}~wAD%P$V(RYiP5drjb?9!0)oEU<;u-q z3FznzRXpe0v{r~?WwPQEcU_peB|TLP1lXHYr-BZ uyKTGTjLv3PhdIvX(JbxWQqk*P3tHxzGpMR2trFD%dE3*~&t;ucLK6Vr6ml#8 diff --git a/graphics/object_events/pics/pokemon/followers/unownr.png b/graphics/object_events/pics/pokemon/followers/unownr.png deleted file mode 100644 index ee584667115aa095cec7f0eef3a09f2069aacef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@&7LlfAs(G?r#NyQG7xZ0 z&zsPAp*!Txbe=c|{R_R{?VCa;Slw6gDN#IBv+L*I4{@AJTqb&`2>pEQ@##H}^f#%1 zb=gJlg==`eNfpfMU%C5rrVoRI-t^CxSn_tSdRNV+@QrIix7cOg56X-Tfj{;#^r@U@ zf62M&m0ux;fXAY4%VOpuca<3wIz6O2tnbadC0oTT2lB6{tDnm{r-UW|s;qDz diff --git a/graphics/object_events/pics/pokemon/followers/unowns.png b/graphics/object_events/pics/pokemon/followers/unowns.png deleted file mode 100644 index 10bbc64fa82cc75e3d776e7cf6bfd9f1e27ea88e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@51uZLAs(G?ryBA#8}PV3 zmKJEaVaXi&ony850`Y{0|J*fR2E37H^4nd~p?+rjJ@tvXb5;i~cI*AmTfZ<^d0yaV z2E*wNXR0q4*fUJpZz3Sd#>}Gj=gOo%?3Wn@J~JoWuFz5Xd(1qylaVPiLOfQr(J*$p zBDal!N5kKW>+(8{fzOYxljafdxLnK^`Cysx=XKG33=Xp@f_5_1r7}2}{JG1pZi#gM zPwh^t&+C$ptIEz`n)`f#RXAhv`63NthX-LQ{Hq#23aK1PVsKz@zIt%Zi-RVT50<>T zI^iAX(kPyS>lZrjN(bc>Z0Zy2*!i+PKv`OU{&vOtchXE|fdb3Z)z4*}Q$iB}@C=5S diff --git a/graphics/object_events/pics/pokemon/followers/unownt.png b/graphics/object_events/pics/pokemon/followers/unownt.png deleted file mode 100644 index e3ac1b55a343909dae4bd733cde9d9e71dbc61d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@sh%#5As(G?r)=bHG2n4M z%Vy^EWrLGIZOc)nJ51L%{O4G%y;0~hW9O;$)xRdz2U)l{3a~f^IR7)4Wv;e0PC~zb@a#f*N@_AB$* zm^w3@v;`7&{r0aucJJyRr41p1M$B8~H7+#fO7Z;;WzEVH-?283PsCwq-FM|aktu(z z&P{Bpv|MnyXp`k9w%bq7$aQy|UBYB)&y? zku6}M&ZJf4+F@cDVlS5d?hkNYnlyoF+0?2}yZ6?7u|KJJPO>dg!i}-+!^N9t9_{}Q zBwg)T=G$a^{^$^G@p7YP&R>1z4>c#4QrNFN>tc+#7A??vL@w~zmg|;p3)335J@#9A zfVJ$4lK%;tm+JET1&X*?y}vd$@?2>_wScRK(8 diff --git a/graphics/object_events/pics/pokemon/followers/unownx.png b/graphics/object_events/pics/pokemon/followers/unownx.png deleted file mode 100644 index 301b9a22cb52707599761779e5ca9f102d9c1184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@O`a}}As(G?CmV7dHsEo6 zD}Cc&%6Z8ktMG^~OmA5?efj6U!szC|8*WRYFShfX;(o8LR&*|DV}#DM|GX!k%16Cx zd~`=pPq9rk<7brZ&DqvY`)m7r&x*2Yl)SFv4?cJPkT6H#JI>F)U7Z&er0K;3HaN|< zG%r@(6T;x6^JgzZpUT_qA1BV4v-1Oo(;WXsj$~Wm;LpdDWQtuKyL`U3tNzrTU3p5B mRmJ?Z>!G8wijS&AtNmo!5v456vwL$l$h)4delF{r5}E)VJ8(w; diff --git a/graphics/object_events/pics/pokemon/followers/unowny.png b/graphics/object_events/pics/pokemon/followers/unowny.png deleted file mode 100644 index c9f2a702756f85306f9bd038929cc5c0da95b138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDp=;#^w^5suW zL&u#vcP3^|1WMup0Y49}2Fh_3ctjR6FmMZlFeAgPITAp@9iA?ZAs(G?r#SL88Hl+2 z&cEQ#QGKqVF!!>&{sQrW$A9}3)@_&^)Gk$CFC=z2`<{RY$HB)RD{TIIMd|O{5Yv#f zo}+z5VTaCqJHKmHt{R^|8(y9x;gC3ET5(R%?z|cn#c#6=?&oKQ?VqxEAKgB0{$7~HY+3mFxV`_j>F}-nNw;oYp6lh6yQ`8x%I4u6{1-oD!M<$5n^9 diff --git a/graphics/object_events/pics/pokemon/followers/ursaring.png b/graphics/object_events/pics/pokemon/followers/ursaring.png deleted file mode 100644 index 564c10a1769640b2d62cb0d66b8dab9dcf88e818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmV-S1GD^zP)Kl`)IkFc^jf^`P~j9W&*&+fFx_8bcZj zE|Bxkxntp=9NGE<3^v6OG?#0;b?y}R2nhdxj)#t*Yxw?4KgE`<2)j2GI^358@<{Ug zetIP^AhmQE_ON3_I-oRrMh*o#se%-{P8fKC!z)~t3 z;!mG1aX)>>KAY6UX7~2hD$=}RZn@1Qs0Au2u!hI{;=@SfkerzE9f(Y5Ox47$gP28 z$QtIk5ro1TaB(<;B5mhc9Epcs(B~l5sD_%N5u{*QHEpCSJ{T}-*l{yI5lmH%;6y}G z>KaVrMo=|^L2UWFHP8n=+^FToKsQVuOI7h+kUola;Tn*+fC<1o=teM@T0U(%XcDr5 zouMjP!3Umdd*uulTtm<1nxYzNTEV$xyCy*~hCh3YEI0FXr`NSsUCVSQqz2_~0XsZ7 z!3bu3#|Q4_V_4UCb+bXH@58e?k9&jnXA+OeHAq4XRpl3>%wiN|Y&Og}n`@SIt4TiJ zDwoYWv}E|r#+jv%uKlrd}DKp2Lv0paBqLky-{-C`{o)6&w( zPw)`3^$!R^brAHUdUyIxk`W0w)azb3AE zZd$epw=~77aLC(u=U^|puRpvZRyxb`Y%imz$n5I@G5gokqNGAtv)Y3#pGgewfakz6 zcQ@9@zIB6NMj%kE1VK@1pEtz3ad1&kDFjAJsJVQ{{L3m~LyBdtZTf*Xq*(XE>U_XT zh=MC0VLOdy2wyFz6e?Ci{?Cxc{L7VvBCoj0k$tmx!Mmg763$yO10m|o{a&%XyxcN8 zUsgiJO4!SNXXdf0P~^ZeN5~n8%?3X}09*_4I16ssYI(nMdWAl#9UZ22upvx@FKsIg)*01<)ZNJc8Qpm)dInd z5PLn!7trv;2O%(0!X6F0geVPL%xMk9midO0#E2+;}W9MwXEe8c#P zpitzTJ(crA<}515b)V$CB}Dw4P>M=*BrfEP+d`UU>$)%+>6}BA^IS9|>VU>jK1|05I>FN1NiLs%fp)qNRfmsY$00009 za7bBm000XU000XU0RWnu7ytkQ+(|@1R7i>KmO*RVFc^k)CzVcF zYGBGxECa5pH&tP`M65Wpvy_y(St`;?Kn~=5ATo%%r3e&Wc!lFQ4m&#qjCAAJmjXFM zi|{GHp1Vn;e3cjWsw9rOb|%=XF+t2(V|k}fM4;gMDi;j)-L5D7g~5IYNlZpd^q?B~ zf)gQUS3f>|{mjn-1&8T6qb=`cr{8R6H!;TmN0x2bVJ5&=Le6er?4qU!%otpxPl{VY zdJvSPo2W9t6I`XMFl0i``2M>2V!0jKX&~pCB?P^VhWTh?vyj16 z6 z{FnX8B!k*Az&Oqnmgp9t|K!dq0HLE-&TI#cBmxKlGSfGN=HK(4>T1M wg+dKS9f8!mV!Z07*qoM6N<$f}}Bxxc~qF diff --git a/graphics/object_events/pics/pokemon/followers/venomoth.png b/graphics/object_events/pics/pokemon/followers/venomoth.png deleted file mode 100644 index 5d7f1ff73b618eb926357a1fa3be5777831c1d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmV-F1i<@=P)FN1NL0JI-0l~q+p=t4PadGLn`PsRF000000000000000_>5MQ00009 za7bBm000XU000XU0RWnu7ytkRwMj%lR7i>Kma&f8I1q-_khs=Gwn;Zw353csb~g`@ z;!2+Y8$v2CH&O_v4A!}N0uhAjLmoiD8V0)*SMAH)kRmC`mu!*ha5ycn_Ha1!e>0>> zW!eAFfArbB;NwmD%G#gI&$^`<^tS%LH13nT@f!Ev0r1nf58O?|+d1@wK%I}H!p-5< zB7I6qUG?@f2}ckqobCLqh6KROl(Wt1Zq^4%M45@G1}^|0a-V<+fWpN(K}TG5-v{uJ zT^sw!3s!d$XB8cWjSHyk-X|Dr*OJYfe((txbfX~V5nxL;+Xet4rUEJx%i%@cYGY>t zk}^;Ljx!FWMY*pwQuekSB|}B!DFC3{RGUf$03zP7PS~Lc>2h7{&@L+Q#L`!gNo&ti zqef-z-~~W<;(Fxu0NQ9w07P6@2(e!>mqiUQ7brdP!B2NhKC2u%K?0|7Kva&n_7!-5 zA~#(j0)QhX0Si%}KwVF(;}*zz;=|dCawx49Xo}vB$b1+y5o;Vy5ugxXj1xFT;!c#- zjxFL)Lt_>Ktn|c(Ja(+qh^TuQdzQVk+7b6-TN#vRlWfij)Ei1v>o<}BHi1~tj-3QRG(F4(xGfxUd5We!{t4G# zk9}-vc_w0IAr>^4Vtp&n1_5*eP!6MjgttcFqJpd%iNm_Hb8&nR*X>a}#R|_vtcGY> z90mHPMC{apTV8*Cq-qz(-EJg~V-su_Nz!?PD21Wo!+_*JP0_~%M z=@1zOJaH6YP$&>B*b*Awb0S)DgYEfBv>_XBi!F@>f{={`_qR@lN4)_chK>PySr#r2rD~bO-T$##dMV zB8dWycn-i;ud)fCUHv5%8~^^QUMvFBMBL7c%-Z?<3dz3!@OOLy;LbY_;CntdolV3) zen(-NhVp6P diff --git a/graphics/object_events/pics/pokemon/followers/venonat.png b/graphics/object_events/pics/pokemon/followers/venonat.png deleted file mode 100644 index ce572706871a2d8b6c93025d4d2c260485c3c1b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0K)GzTW-nL!4F`dSPmzlgR9W} ztQ^+bPa(KD6)f?HlTdIA2ikg`ql<0@A(SU>Vuud(L%0bhm8MPZUg_dw|JyGwc}cFJ zp100A>#XyCl6oEyOWafraT8(9&N&sC@G_AK)Gg((*t%6iWM(_pI`@y+kigBe!2HyT z32zp=cN%()8)+K4*6|M-11b+9%%qnL=%AMtnjAlpc57%piR<5vRmonexJke&ae!DI z=Ny7~@wk?C`n_$~>I>8vQ{kBXDnKUZRoCi3ynO~IJjN|mL%`fW;|?0 zBm)>C&e~u#bgj0OdPJIAIV zIWD$;rOv{bneAE+ZGHwRos>~m^t)$>Nt30lLQU1RPCcQNCgBpRE2B>0NwPTGwLVgf z*2}eJt~79~FSG^3PDPgG*p`oDx0Rcf_G5O&M^??(900009 za7bBm000V|000V|0Vb6__5c6^_(?=TR7i>K)G=t=KokH_%?23^oomoyk)=aMlR%+s z#?xeLiVs?F1~2if#fQLTYKBfBlPhRDc>GvfI|f1RU}~R83HBl+NT<@Nr#qdj$me<} z9SS)-_!xsKcU1jowAA?il8k+M4!lWSFF3dV$*eI-C>l`r(H+B7xd0 z!tR)#8+oAQitNZ$TlXA;I6e1+rnZ*M`;Fm=WA?*4rFGd6)zl`9-f++}hnm_|m=H33 zHYY>yl}=?XnO|Fb!3{Z%$&~Q4EK7TdrE&ag#QE7)MchWM!wJn`yTRJ{+CSY;GhS z-iSk;MQK4;$wMx>iZP{l;R7syH(WA*EvGna!tt$4c#}JOO|5%AvbC*kdyUz8wSZ_W zCR#SX0a<5>pJ3D$3FF+^b)1c?tMD3kFh0G9alE2|!lD4iX9>ogw%Ri+Mph^w+zEKX z*BIMTvPS&zHtu9+oSw_2#rm=?ZBa7JEenW|@q}fwnZIY7lXZ4=W1N4A!r8lYaBtqu zvINp$W~*bfky(WTsS!p&dLTGk;_Akm0<#$L4eeE+HbTfwkVq&BawBfqvaq!&urY4u z1=>ri)4{D}OKe%TglU#gN9`5M79&|eT4bO!S>dxa&IX#=!uBdZ!ZabJ2(>AdUq>n| z3u-h>L)HAPLN<5)mT3By&&!r9z!~U;fKJo0`R?p70v>-93(9{A+x22FeN=sW*FRam Y0jaAA*XSELIRF3v07*qoM6N<$f~)bV0ssI2 diff --git a/graphics/object_events/pics/pokemon/followers/vespiquen.png b/graphics/object_events/pics/pokemon/followers/vespiquen.png deleted file mode 100644 index 1668d4379824a8f539c76280533db605a96938ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)G{cNDF6Tfm|+7W00009 za7bBm000XU000XU0RWnu7ytkQ=}AOER7i>KmAz}*Kp2M)V|r*jP-ARDsRJd8HyILd zadV(5lu`=q&@N4fmO=-KD3xQhr4VPci9o&J#U{bz$m+c=h2Ww!-3ukq|Duvkx;wdc z3M!e}cd?$c?)T{4(+2?m>)$A7#y`%D30eoSreo$5Lg#u0ALHm&r<)27qa(tFe<~ZB z*K)C;eIUf!Z`8T49`ZUDvb8`lE6WgP17{f&HK*|d|6JQi1jV{zgsj_jKEni$fvto2 z47bicWdspJ*`Z_W&Ld>&8;M{oVIdga8?T&5f(-A{QKsoJw+=IF8dcG%2+$Kwgh1J% z!xc&mFrQyMA7NAB{bc+gBWTj$6FSfrG1#t9O3};t44+bJ>mrb`CWK*GmD4dr=0b*6 z5KN>t+(IEQrGIWy+Li?|<4o5eIvo#6i@9~6;*xaNLRZDhX#)IS!N!@!0~za`%o28& zp52zVokYCH&*-)~9u6NCKF~V!Fn>(o7-7960vYdQ1Z4Ny)g=#92xCGLF2ntXp&ck? zA#51ysjzUVV!bQ^8EXv@9|rc8t`JEBdj^QOt2Egh<;#($ZPt&xsSs+LLim2| z@nAwp^KKr7#I@+a;Cl>-UT#Yql{Gy+4=96t^$TNgr^l*^ba?;(002ov JPDHLkV1oB2k+uK; diff --git a/graphics/object_events/pics/pokemon/followers/vibrava.png b/graphics/object_events/pics/pokemon/followers/vibrava.png deleted file mode 100644 index 466a1de0d12adac8e3064c07a2c40443da7bb5da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmV;F18e+=P)KmA`A-KorNXi!R`$Uc3Yky(L5Isn7=6 zu5IbA3?_rXaDvc+V$-|yVnZN9I8PZH@1x+Ry<}bWcpIA zR-9C3D1hFSP9*s9ODc$mifhJVm>G=6XN5^+h5}rPsv{N*Qb9bl)d8>=+S!!-bFVO| z%us-kg+wPK%eRu5 zjiK%VaF)N4gLysV=?ZZ60hq>y&G{xFkC-q8#7spXd(V=Lw8Pi%gk>8~UEq|&u998C z)oI%^hOA3iV)&pL64GK~r#}-;$_*iVPt6u0%Zb`9?Xn_6dj+%0)z9E6ITzZHuZ-d5 z$cGJCzGKwgb25GdS??JG7xi`9;cABMgZA!62+`}! zM;v-eB!Xo|9_n=$Jr8-63{B=RpImq}YO}~tGm8!595BLgP1c~y`c~I3{4Vkgy4b0$ zk!!_$tUogm!-I4J^H|~ARAw|7-^SSLbSTalMr>sV2Ya|Mzszt4-^!if{ltiA*_d;m qKlreAGKp2KkvQAl8PBI(GfW*=+Rtc$F z6(Xz0Mk*70fvABCz#}*hY;PBf(~MAzi8-3t@?hm#9+5o{jB0 zJBAKbruG)}obP*|`)uw2_&@%cA>DJnz5UEuxd7^amya6NOvDiH$cPD63T-Pkk-|7F z))B@&i;IAMMx~0fE z>;qwJ^^E#4SH?R61UHN_e}fUB7pPecg+H`0&OlKhbxqT}cqIsra9I$pb%|Q2cR72) zdKg$4VnIMikA3E-;EnmwG`WBYjhBLOt@$oi30fW z)HF|XONC&sqi%KdWPZfD|C9q^p!ASUv~{2gUm3Q~O!NKgr9x0(J0?mp?|wGTw>2(s zi!X8t7uYuYh}mp5r?VqsB?>{wQA>`J%zF=d?c7ulv_BkYTY_MSZSaH;vahfcW8D?H z><1DzZST47E%GgW}maohZ_6AaGd}Kz3@Ilnq1k&dwbn8a$u7 zfm3aeNnlX?#)?IO$AC`^v21t(+3Pqigea4~b^~V_lulqUr<62>9s3MJK^1GRV2Azc z2|_SHqiZ_u)7b!tyyLUP@^D!JhrS?Scq`=>Q*eNqo&b#!g=~KA2L|jge&Mr3zak`C zOpwn5fx%&u`c6pZ^or7%f4h0YD=vhC^deB;^>N?vd6QOUtW^N~$^J_M14w7VOM=c0 zr4x>1!NGM3N6tD`^FKxb+s=j)G7DtaDGO{)^aukIUM>;~pw1L5W5@!xsc;vy9L~k7 z?>J2k+fkE6v60k&u94lTN1M+8Bog pf8bi77A*;xJyT+9;|<*B_zl?3>6fzxXodg)002ovPDHLkV1i_Vtr7qL diff --git a/graphics/object_events/pics/pokemon/followers/vigoroth.png b/graphics/object_events/pics/pokemon/followers/vigoroth.png deleted file mode 100644 index 4aad2e9b6ef2cab6134a1f234c117aed3bc1bd7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmVK)IpEZKokJrNlBXUFPcg=k;cTZ4F|Zv zlLK828skZm3bmV*y$Z`85V&nT2%C+Uw&|fq7@O#LbK^z57(AFw|BD?eo!M@Oc=5(N zG<<#SdymO<5IV#m4snQokBj{-qkTTkW%EWzx<6O;dhu55i;{PHwww`??doFg+NRhV zAuEyPHv?kx)pDk{)?_)mYMMf~NfNri%h?b^mb+{Eg7I-Sy~3u@KnsGv%Q;!;0oNdB z8qLLQI$4XY8-(C?vCFd&XgXWrg$}n- zYQF#df$eIG|6J88k7(DLcowGV#pE3yksqxK7r$Ht3$LZ?eo?3a^A z*Ij_#57RP>yq&lgO%}sVB(M~EIF5~myUSNohuc*+efI%;9Zq_G3sQT)Or!qb+2hx* zehvhdLM=M`ezOXdBFl~EUs^aBxee~l8ZgsnuHf<#w6(xeU_?<&u%i_E$@*!FwBV%G zb$8Zqg_#z_-{SbQ5#^jURE_A9eS>!!L#m`!Q_6NjBP}c2x3XO$SiQBcEfT1zLpnl3 zL?Qx0S2Y|EfTL_60+xZ9lY*UwXOV|Hmr`>Dll1~%+cb5SS1Vv8Uv@TdA9r;AXhAaR z*aL_Ekb=5x5oYkZej{LZsJXMrZ(9WFSv|*Z>jr<(TtlhrD(HwieosUX>_vFB0U pM0bL3Xcy&e{Kld*2wKn#WtI02py77)OrIuzOD&`}Cc zHIyl9KuNnGx!r;W@*xi()U$!M&}i6Gp0YeiKAlcdwoWw%!ykG4c_dGaUF~XDyW0O_ zQqJVd2RxHfvMHvcy{OGf53#_XFO$p)OiHt$$+H5tSz^?)Sh+GR3&iadgTw?ee)UIr zhe?bW>H0RSgopflm2bfxXPzLn6c_kB#vBT)e&H*$$u=w39_7LN(+OC7PxpPRXe#KB z@Ru@v^KPkPdmWqWfnt1Heb!^OIiQ9Q-f#N#hde{XAJw72ecX)K;wB-9?!2Jv1p3T# zDXE~`rEJKY_LX{{z9BYIn`^-g(-hJSbAOcC1LB=`kMX5xlX;HO4uTykI^r)_zgo5g1|@DwJPXQlcsN=!!?0{R>2CpchbVMgyd{W`@| zFIRK($N7|*10OPD&PI)7*%fH`Q6m7H09N{Z!)=1IAY6CJHY?`8H953W zFqnnJdS%QW$k4$Y+d+fw!AQJwaj;?o$3L{c6&ChKwBeh=00000NkvXXu0mjf;BzD* diff --git a/graphics/object_events/pics/pokemon/followers/volbeat.png b/graphics/object_events/pics/pokemon/followers/volbeat.png deleted file mode 100644 index 59a0ebd3cb7f48c2d9a6b1fe7ed0e110578f1feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmV;V16%xwP)G_F?nJFnT;cKlTS$7P#D193X?z%(#tFxSoa)TvByqio+JRiM4}z>BI=VBfaPmLn16ks2skCrQmHmZgzm!U0 z+V=`AAdR0~1j{_yaSMgZb-_5Ez~{2RP*F+=!-y*i?Y9UmATx2JfHRZ5jDUOkVAU`R zP-r9MLYYHRG}0m9FSLNn#Fs+-;;=fvoDs$+x_*r1HbQV=@ZK)5J|_L=b?wE!>3+kWT!1 z~UfXygCXu!w10SIaBolLJXe(h%JFA|dofm4haK|6W;gYiOHS1i%CSVQEkB%;`tvChU7P?oHgO9tz zFygN7w}nv(oSS8V>s`6UtUzoH@A|yN0(lAI z`7=fUN-u)Jl)FbB+d_9op#NKU=(L9dT7`hmVyOlA<@aesW^$lLFosN}RS3XR6t6sD za*yx|kk_Lve88K>tuwh-=~c%b!41XyEOa2k(GFoCO|{#S9GG!XV7ZFl&wkQ1G&+i(`mK z=i7cmz9t6&*Nq$6j|k*sK4B2s5)~;VEELV%X?pfsQ`(-!}56I{A%p6!Rbi?{vP z?p(29j^xhb{#!5EJ56U>X1oow{;MGP`ix_Cf0SaT=J{x@x%cdos@p3rU1)q0>s-BC z^wD#z`|IQvUVgeavw!y8>@B|w6D!}^?N}kR_0Xb6nWbTtS?&K<%?NnD;_dlQCP7wN h?U^DgWw+KpFN1-NjX_LF#!Pqxmh{!$(dO}Nr^c*000000000000000()cP=00009 za7bBm000XU000XU0RWnu7ytkP=}AOER7i>K)iICSFcb%HPxkEUgpt@B$=)3)`6ykJ zASE4*5q_yUWjS)=Z7?ErsJeAxxGz_em^yYsh4Ai3r6O&lDudXwj+d&w2WMf6Z?wPpclNpU&DYtQ*R3W>TDKkm|O9Mtk z#%Y|6W;8Zdr39>sIN)yopOTCGECWU+jb)T7?X`(S&amK-%DnCl^|nxAb5MX#1r1UNA+PW0*f~2< zR+hp|z4E!ww+*Fr7BsO?R2IC(Ii(F{Me#m^nTLY=1#7dg>lW%(`;CFR*n$rQ=k6cr z1-|c5*tl)m=a6wjmsFGT{ig*t%Za;!?ePGk0;E13rVWmV@gD$o>(>Ua&x>Y{K4#ik zqw$Op+QGQK>i|3b&+9u|!dFD})sBIm N002ovPDHLkV1gUt8h`)* diff --git a/graphics/object_events/pics/pokemon/followers/wailmer.png b/graphics/object_events/pics/pokemon/followers/wailmer.png deleted file mode 100644 index ea637a5e275728804b149798a9e517d603044409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)K)W2)nKoke?x734&gV3Rn!G(5gr)qMC z;^8>FSaU`X;u1>gzrr?}0O9pog-5f5hVw8Y2woAZ$?|w-ZQK2q{ z4t`$rIZp5UbVvr+)vk86tN*8@?EZx%7W~Gz634^t)<*St29?$;JS|-pL10!xaYV$6Ls9@Q`z_#w^8kP;|koyv` zvVm@)WgFVUhDB1~wY#(porMob`-0PRCxXYRqCjs7Og0)Shzb)33}B07qaj&ud1C`= z>G1f6-f<`6r4DqCC=hc((=Nmt71Wa49QVU&ak0@5-RtW__hH<=J(uXi&y&mqezRUu zAdC3-_qyRMp|=KB9p@Fj>a4L^T1xj%uWL{F?a`iS>tLS@~YEBlWMaM!L0eI z%50=3R^F$3So`?{=yT1o?Op$fRGYrt=>HGv7a}GC3ahe5NB{r;07*qoM6N<$g8w&M A5dZ)H diff --git a/graphics/object_events/pics/pokemon/followers/wailord.png b/graphics/object_events/pics/pokemon/followers/wailord.png deleted file mode 100644 index a27912ba77b83afc272e69b47633439704dea31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1151 zcmV-_1c3XAP)G8cr4sZp^A0RKEAblhsNl6X@A0Hnd zA0HndA0HndA0HndA0Ho||9j-OpJDvFCyIk0PKWbANO?ltfaAv|1S#R&a4sT%lrZG@ z(GgDo*OUOwMRZe^FK$DQzd@wdWQo(<`dP!F{4Fxw4CeyMD&Xj1j=x3X=_Ve`jo{y9 z`6tx?lD|RZ_IY_hEu$o_E5uzR96vrn>*uA`?ny{&n>BXZ zG`@Eensb5|Ck+={mte(FK@m4RMjK%L{!+_$rx@@Hh~RkB@F~*8 ztl+reXbFXOll!Vp^JQHqT|thIHSC{NKqGgEt{eV@6&X`P)g0MzbdFq>RS!R?)2sQ` zbaMjPt9X>cey4;85frlF=vzq$-{M+@NPbyAXF&e&Ucps%{*)Y^$MIUQ+9`2C(Qvec zxgO>wxqZ^J!wYaVhkO~O;y{DrR-mi}OH3eq*XAK|M%2_eR$=unQgf^a#LeEXa=h+t zmmCk{wqV>746`;*`VHV#p{PB{krqZ!?-9FP>&@$U2xBW~YrKT>{uqd)&9lB?Em)Tb zCOB^I1K1(~2SFM@bCFd0WIa!yFK8>E;YbaP(_(+|BEpv0HpfP&E7++KjtfYPVD-lI z0vRG0wK=v*eV9C$+O)_0Cv29-4aYX}j-b|xY(S3()jqac=TqdZD{OOYnTaQlpRC}A zJ5(?T8jjJCxolhTb4QTlbrW|J9eo($c<{sM@yU$s-RvWZ8UEAiutK_m96uN%X9Fl6 z2zBh59&5b7N>y{iqpo8pi|iKma&W5NEC;s8F1ky#r^{}!Z}doiC0&+ z3j}hN)@F8x4U7GEDVZhWq&+W|^00!;NIo^dOK3;Ed zYgm6Bw&+rWZ$*seBlTnFeN2qM(c5XpcBYV@xSX`5#bys(1Flu)uvZHNh z)5xWrJAy+yFPj*T#C1u=d!fmd(3TJ6b-*bX{Vs7JB>nENiEjgd1(ZF|Gcj2tP6(-X zMYeKoCZl%OAytKa-M}f|G6;*gv)gxUG8);tahCw;4;H!Az^KSU3c=PpIOW?k?20o1 zz5NahM!2&Z|Mq?K%XfoC$8BIVB2FlL;=@7>><68D#}QN2Et`z64U6C7Bzv)g+->5n z1FFJ)BYT5;5<10PcWg3hPYU>ZmCWv8xZN}`Ca^E!HZYpx1tB&e11&T;A9n#F76J4J zb_1gc^rUVMThzo?7yWKgkUr5Zo19zYo4YNY+}sUDb^{}P=k(^#n};{*36rlbNI4Wf z8lgtUxn*5FW3MhoBin6YDkiRE zV9hEJV;KAuGRA^T3XeEtY6ef<0fFaF^#ly|=rwySd=G3YXXNvmWuP!}4wpj6xe^|j z%c{!#4h%-uOc);+o7RDv^-F2}3YS4DeNuSf?m#v0=||DgpFioBWO5ZC zO9h}-syTRbxDi+OObJ_@v024&yx)=dvv)$i5AZdw-THa4x)!c79T3m-Oe4nDLdP>D zMDdCRe#ZHdsuB4j0fb)*y;O6s+zaD}k0U#<^A8F={7#c{gwqGh~4hREZyY2;-(;O%=CQ%YT|g~B6Q zeCqX79GoeowNMAvjOc9Y9{(qTuU8b+4;&ghD9oaip3rIFk>lT0|E*2~zgGVM+f#Xh Txw)G=Tx0YQ1$p;;NB2?O!badDa9K|w(P0000000000urggf00009 za7bBm000V|000V|0Vb6__5c6^FiAu~R7i>Kl|OIVKp2NDfjqHTQThSgTo~#hjZqh8 zNZlij#Ab075)24}J$NeN&)_cIn7ek(loeX5dNWv&n8JtZ*%;sJtD!^HrQ$ar9^ZSv z2iqs1D90Rg%rXB*Hhdt`XM)xMW5dSK!IjQK8IPApm^G z0*Q4l9G7zimM(ti85d7dt2 z_y+KGBm^lB1lxqPv%=J;ySYH+@7wG>=Y?C=#ojbGVHnPIAw5sHiSCH#&g?=6T=%U0 zF1sUjXii_D!jz>OsKRi5@6+@Ag2OpjiJ>NIpIR$1&)ECZFcVa)sH2Tgp($~)p*#2d zaFsuUDkR(%LN3s{MM2JL_jBh9E({{heWeiEczg&yBH`rmp<#<5ld;>gYq8FSi`P4$ z=XVwZR5+RyIZ5l2rZq%?Lf>jycq7;uvD-RY|3HvXh3UdWWol65RIt=e&?!;;d+h{J zp+6%wKBkVxc{i`ZxX_nyED8JxrG+1HM=2JncV2=0iHGKgc!|IDx%b;&j@p;6@JD-q grFm&o-uZ9y3lseRDgaK+I{*Lx07*qoM6N<$g4neG=Tx0Xa!=$uUWp2?GEC00000Y9bh800009 za7bBm000ie000ie0hKEb8vpK)3J)%Fc=4LVKN!~0KLiBK78aZOH|Gs z&DADQd`qyFlA8*B0EH{9!vUQ}lwXNhh#lV^+j3swk^E@;Y z5>;=R9H<&3tO;bH))hi1)!Jcf{n+a<7$8>h&nnV6Mls@Fjg9PTy%hpg0}#ik`d+P2 z9QKULx|fB`%YwO(L?$=7}xukkp29A@9`8s>R0)0;pD1C8BR@M(;? zK-IjW$pw6ipZQU!apdwq==J*x#12ZkBT>yO`SaxGHT-?HyIXs%C(XpS{dR{R0$O%y zs(B5f#XWwvC?l=UxnW5u`O!gvfr0sPiNPsB!I?qn>G=Tx0YO1Q000000000000000b>sMA00009 za7bBm000V|000V|0Vb6__5c6@nMp)JR7i>Klrc-gKorLhG6;85DSm;1Q^L|0%z`@P043yD(O!Oqnue zvb_9p0}=mHcoa7Z8@xsM#*XlZSPyYnB(#>b*BqfBqfj<+mbDe^NQJJHEmY5hBDT>i zl+E))Er1=V(2-I?20}4e9U}o@BaofC1h=Ws8fpO=AQOt3gWQzA!u9h=up`6*$nHCK zQ#OLOlV4RLI0uV3?jGFYs^R$`B#*T;-wqR>=LnQVsU8X_zuSi0*w)!3I=#SUIaePTX@Z z9U#%~60+rXV#A`21x=;y&^{-^*(e&oH=6B7l?^A!0tyUMfrU1W7D{;n1$-32CBZyb zuH6B}H9KSttg2ltVtzXr=Q6jI1NV*Qutmq-Cs diff --git a/graphics/object_events/pics/pokemon/followers/weepinbell.png b/graphics/object_events/pics/pokemon/followers/weepinbell.png deleted file mode 100644 index f21e1a243fff5cc84eff2322cfd7175593e1492a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmV;r0!96aP)G^pH1*t)CL0KvB;YqonF@a$zZ}b9F00009 za7bBm000XU000XU0RWnu7ytkQFiAu~R7i>KlCf*sKoo}$4m6l9Ub1!ZkfB}z0d-2C zAT(tzbW@#hjWL$DdhAdzftG9;Iv9!v4f20bVQ8UaJBWh8!wHH(xNUr6*Y@u0yL)$5 zGz7BwZJ(a*dq2GsLi^g+zV>zR!bcA*eEPcn{o@*{EJx_QiE3Z>hA8Sl=+$4RySrdlh{@9K5A7p(0G$JO!0v)wp}(Hn#({mrFV8{WkL`FB3wDHfP5RbE zJ2Ao~EkQq~&H!g0B-#i`r1+HPv^XN>H9IlFl=Odqal~05DXn?U11a>I2Zm{`c_*<5 zKurMrlQMe%SYPFt#-v$U}pHY3WNqclz270y}Xtt>i z{NchjxR}WyA+3)ZJt-^!Gg`0>r=8XHZPRQd?Tjv&-sT-bG)dER0yq}J2r{n?Pdkh) z%^h=IT{E-IZS}Zt3Ix4RX_{3FU2aSn1AfWOcRm1ly(}Yj9NQMaUS@R!FRcgL$AsLM g6GxXgzvx5PeIVm}zp@He?`GHAM0RaJdX~C(f(P=qB$+>v|0000000000b0KhM00009 za7bBm000XU000XU0RWnu7ytkR{7FPXR9J=Wm%nf0HWbGxK!b)1)~-p;a9U0EU}h2` z4KZ%+&^gQH`UiCAV${Y#!fm22(7PK86v$;Q+9qD&U4K*`#UBzWCU?UP9m)W)Kh)!U zU%p41&xHIx{+lC?Uw$6Mi|-xL_TQgg4iNXJ?-x5*h=@DUPYC+*tHbF9BqN)UkdEUeano9|N6Mh+|F|(=i*U( ztOQum0^j)?CWGE_n&3)ZEjNcwQHL?)4HrC3c@z*<#_N=ERE6@X1SlR%W>`2d`gOor0s}j5QvvaGMZ*~gzsbpF5&~!4#QDg= z!K{L_;~9AJHs!%*Rg+zs!a;eRGTF2#tVwO`Z64fT)uvp7fC;Oas@}J`S|Q?3Sj67| zR4irC`M62bj8^~$<642JOkMJ83Qs9q9FHj$bfUe&lb?Fk0TB|hs!ntc|>Lms}y$p4wOHa#f~nq=1cfc zcsXK+lII&JY3*fF(>&kgcy9RC$5EDFW(~YI0vyJgK+f9pveg0{j_B*(;o_RDRXmq5 z;;uZ$ymKYM;U;~3lXVY9pUW7Kan{~mr=6dhi?=s$`~Hq@{VXJH4jAxUe<9lZq3!+v ze!SBGUB;SWw%}cp{p07~1ft&6*3UyyOPna#D<4M>@CEQw$Jgqq!z5ZV3OM(9`wY|L z7yKLT9TqvGqT*EM1iwlxjvnvC=Yp=aKZnI~Jaq8se)|l+`T6f(e*NpAAkT2T2)W1! zm4^y%D~rjS;|)+=n|LmhkZw5K9{+rfclQtQ`Eks+X4MwqbrUV~j8Q6&0A7C(7K>5X+S!+^FQU zlN5+KscX|X2(JT=y^eUPv8K{Oww96?a!##ZXt~z<;Z>L`0fU`n)f1}31WtG9_BuwQ z)#Hr~mvUs9T1$Yc&cq9u3DAy52eZc7_rt=>C5~Rb-u;ymI6a}a4S(^$H`*I^A6VP? Y7fa)G_Baj;fdBvi07*qoM6N<$g7N|;>Hq)$ diff --git a/graphics/object_events/pics/pokemon/followers/whiscash.png b/graphics/object_events/pics/pokemon/followers/whiscash.png deleted file mode 100644 index d364f49360b2532770aeae7f7db64433e289865b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)FN2gp-Ew(*&$(}VNoFg0Rb^ViP6Dfv9ZBvfx$^(p$P>E>K1Ky00009 za7bBm000XU000XU0RWnu7ytkQiAh93R7i>Kl|PFbK^TYMumpB050c`z(jwuSC~TVB z;woDq&4CcOB87)lO3NrjFsb%b*6c#u!v$d%+%8qP50K_QKxA$7;37C222Lz;X4aV< z$2kol!OoX0d}hbzH~*Lg*wwCfwX3aFV%x&b#sBH%xAXZ%VHE&%JOH)y&%$Xkm3)4? zL8$JPP^%MIP}=|NfNAnj5CYT)Ck+O&u&ja|cDmmU^%0wbS_Mng$s7sI8W%>KG9Avc zumY${IP~B#3n;^fyfC~6ED1>=$8`7@WMKuAaoFyLgE&CdG_z0;CLpmajLJ4`o+k^{ zS2hmYzxpF1M>|*{p5+Ch%w+FSaCh%5c5@xe!m^F=h&<6UEO&h@aJsSQvAnIHTS7N@NL04d^kE89>pgP-8<>v>;-aGP;a} zBiCa>naK*k@j{5xkXyq5x=V$Ang-~eALV(J(d)~QkncMzAm&=i-~qVT>-B{IkpbKz zD%37$fSa~`GDL&2dA*pP@3*ON$;m@@N|bT-`sK zxa#{8D&#zk1JslE8GL#=%v5q~ITG4|zjBPNz>D*oH^U6RIr(TesgSc(jJqgL8)Q<$ z#uLU>#{2OE0NweWncx>WVZLnKRNMm(Q6cB$b)mPu-D5nvve_mojO$!z=1B=lw8GQ+ zRrx?~{fLDNb_w%xwdq^SIr|xJqV7_TPYpmbU&x;c0V_P2o!i*5_-n!zX%M=TyNC>_ z##`Jpbj}8`_v}0xDrIM{P9X0w?o2{0%yT`lPJMy+{zS||zovd);^2VYs zPlKy+9p0}izgcps{TgM(%G}k>Sz+@sbtgI936G8soPI)h}U}&Y3q9C#(VCvN698E3l<#`$ezB| z>ZpuE<%(seJ2iQo10SZXzgcWC^>EBeb%UCm0GF2<#j|tt=i3YIX7;)r{dC$4y?TR) z?VFbz+Pv|Gh0l@aaka~qolfJeWma6XKhQSM;O+gB5&zQ#za84z_l%Z@@>1IUBpgNwdMPh_FPqcKl8hV zXW#l|JhxPK&pT#$`%~zY;Eb6M=09}a=KX$Z-b1#yV-i}-Cqk!e4E>n4)tKkzzeHxY z#+~(&$qkZMBsmw%(L8hOE8oqxC$0Tb%q|WObcks=P&t`el(@9ufT?!x?#0ba{6e+f+9_+ZoYcwEcOY z*$oa;*=^^e53^^;Wjgc+cd+lU4Y}dr#r%$E)}tja@+YR&>-3s`X*~8(*G#WdvB;Ju z!Yt?;kB)wM{!IP73;E~lHvgHmeU3zwnWMuY@t{+|Nd@VZ`>eTq7R0}uX?<>cTWe-^ z{tvbAgjWg;y1&|D6W+aca?pKbvva~)p??ud*@{icr^J@p=zb3LYrSf7Dl?KROQJ|U zcG^?bNSjSQa>D6CmTRN$UE|-Xbo0dXsKByWPopmDS5z%Ao%?9@FPEot_-r0(@yjcC mvTOfPs*8GVv!;dn|0@0%xvOWV&D8P(r2$V@KbLh*2~7a1qW?eu diff --git a/graphics/object_events/pics/pokemon/followers/wingull.png b/graphics/object_events/pics/pokemon/followers/wingull.png deleted file mode 100644 index bb40e942bb7230c583a0e6b61dce86e7380ace16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)e%1X`$Hx0Rcg2k?HCAQIWYZNpS!G00000*~8Q@00009 za7bBm000XU000XU0RWnu7ytkQ0!c(cR7i>KRJ%$8K@^=r7DlkMvlEP{KOkCZA@~6s z2sTT=g>`=t1IB}6(UoP4FQ562$?33b127YBouCtcRO8%uFOyDMW?< zvFqdGvti6nlt$9Q$RcQRO z5~|9r41DaC_4;Iap6_AfWYxTe?nD$=PdY{zFjTj;11m+DdX!iPkzdK`O*r1EAdgz_ zqb8CP(y{#-cxO#wZ!O0PjkP874Um~#xT_iY;zUCni?$@UwH!;#z2L)}UH=$-GVVk} z9gDWSfaO>TeAW*8cD==Uwp0@#Ck`CPgywby$8*riwpVk~c*Rg|w<8iS5GMR;+ mZ*U!t1LcK`{uXXz{~6y*oDw%N&apZG0000nR$4-J_oR&Cx%Ef4|9<~Z zafLws-mll9^;c)EQa|(eaPgU0bFB9p2DI)Jla8w%`0v0Y*Kq(?HiW3 zuPgA~p*d>L6CIpqoPDmbUr3<-rc}f9vz>d)9@^z(6qPwC9_Tb&o;4-9IDxT!BEuTl zbyNG5Wjy+pN<96RwEnXVi@`g#eR|K5E-~CTu8g>S`M`(WPwwz~tP#y@C|vxdfcb~c z=IY7C_6!UujOp6^*=z6KV=mX)uxc~I?N+(I%pc75u^((0JoIA%8<_ z)@v)?jVzv)Gw8i&t6uu$51bJv_^t^9u(vpNs$-EVXBrhJvFVCQRBS*>Jt i1-C;SCEx15vKO!XFnizJIlvfWVDNPHb6Mw<&;$U>a_BVx diff --git a/graphics/object_events/pics/pokemon/followers/wooper.png b/graphics/object_events/pics/pokemon/followers/wooper.png deleted file mode 100644 index db6f873b7e72dd5f5ac7c7eea4da4fc81f3b91e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsOVTZ@#Ig> zi6=J}UQE}#?x%o4oCO|{#S9GG!XV7ZFl&wk0|TRxr;B5V zN9Wrq8}phC1lr#6oSBn)HHn*Nqfz-OkCcn%C+38myQyFN&B{-%v6nnzIbFBUededvdW51kzR9?3{m#s8{>A>Oukzod_lGQxhrRoo_u^Db{p^3 zUi@?TQN?j=|3dkh*`h3BQO{N8e>C3fA7UVI$gU%1r$?<`lfylZS@+`=woLfH@BGW} dGj_cB*O#xD+-}OHlU)W1WlvW>mvv4FO#sWQy%_)i diff --git a/graphics/object_events/pics/pokemon/followers/wormadam.png b/graphics/object_events/pics/pokemon/followers/wormadam.png deleted file mode 100644 index fa1948eca761e284541d5ad38a2171057a61eb67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)G>&nNnv4ODXB340000000000L%xng00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K(@ksQKo|$`EJX0?#zXIgz3XV$-Xa-y zrFamUaYS+p2>k$JikE_v%6eKB`~=M<`%olgTtORoKHqpNstF|IAA! zQIbCDqyF1!KAw@+HJA159?!_@n#+35@^ejd$yoDncz^z;S=_Lsr@6M@pVu`@k_>5& z3^_}9Qt;^<7f&p1NGC)Zo{WzdTiD=@rG|UNM(AAXCjOxno01#;p~C@vFA~|o(z#OVy3?^$)nkd__oRA%xV6FAIN;z%a)4`d)x-&Bl@~r zE$zM$r4QCfoag#>Wp9Rg4w%#Y)75e{_wKSgiR~!d9ifSCZP)h3(op)LygJKOYr9#1 zEWb;fNU^TAX8r{v_NM$xkim^=PH#Z3(hF8rxxX#$ff?o-#O9ueO&IL==5+rPR$65X zcFL`P+5hS%uP1ky|IJy!uG&|-J+0D!t_UhDckdUSA0al8OaCx3rU1P8ha?P;k6!t9`lan&UAY lUhcZ)xWu8eT-W?h>o4GGEw!?hsp0?t002ovPDHLkV1n=SN^t-H diff --git a/graphics/object_events/pics/pokemon/followers/wormadam_sand.png b/graphics/object_events/pics/pokemon/followers/wormadam_sand.png deleted file mode 100644 index 5086fbb24686b4ba2a404ad65ce72b23c7905ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP)Dh^ykzq+mNdN!Kkw0tOKpcie78y*31WYul#ibeAFHw%v z#A=6tspim0B%lGnn8~8;499N~ZqL2a+2EeYHK zhl0~0tQuhn5$e8WUp>oo-kBpbOAOss$f}+QyY7c}BqYyc6ONw9bP+Pu)5JzuVoZg2 zDRN_>SaV(wZrGc#&>0~#j9*cdS|O{nAHpm2Zrw_3giUqA`LVEhh296Tuu|($R-#wJ z!s7*UgGeY;T27O2!&V92Yt9xk^+=9&g#WBFroylIPTFN2|If(%Q0hu9LVPRpRVS)LnsbMie000000000000000pMTr~00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>KlTC}-Kp4jdgh0tDECh@j`o9E)@BaG6$2H1e2{yO8GvL47Yl!0$R;jlue5;^IIb9wStDe(m8Pl8uYB4g zq&vwkJ;^y&Pz5WjK|&7g^43*mv9m{nkR`ICOwUc(x4ml&pamhxVqHvAne|VcyLXpo{vj;TQUF#I|%!|&L@go-k^=AFM^-vI5R*g4rpm$obqpBU`6lx zzC()-#2L-0^hfn~0ku$IQFIuj6Yz`RXPg-rQXXMpAWr#ppBnfRQe$Hei-DYx6G{S_ z|3oPY=&PT<%~)`h8yH%ApphFG#3?tUw4OuDE}uPT-+q$50rO-~(+XR~+t&pb2F5Ga zWNZopy5J0&G&J4vnR9Mc1(>R_S~a6OW|j@Z$P8zB&Lx=hsoZRsb}1-S*IjO0!@o8!C*=hOFxw$b(v5|psSy2E000000Qm~iT00009 za7bBm000XU000XU0RWnu7ytkP_(?=TR7i>K)W1t3K@QwbjUQI66*(*p^1AQ7 zxAWPV3}I|ggBsMJ{-5ICy?|HzNAR-+?7p493|QIm$|-&OYu>@r7htT>gw>Ddtzo|P z7VtK~7_vYI8ja@1;O78`{Iv1Z0v(WE)5sL$kqO9mfW0|yHwBci1)8ivK`y)~5J^u6 zt%WHvR;dN&HS*8~WdwkvPr=N74w^yI%kNBsdIK!sMTI=HL8%bwO9nVM3Yq|XI5Iw_ zTh)WdhrblCK&}yuBctF{cfrYCFC)8NW}E{2`lQuP0e{E{C7mar1F(ldCfDmVU|YxF zgaJ6!yE}R>ZIElwbO#j7wzg~N*MIiD=i%u0Vd%37^1H{tFR|dKfUW|)PIhE~i^r84 ztoKipw|4(v=ugp0!hCmSxx7m9D@d|451R%UXScuN(inzezVD068&s-p0BYg(N|FUt z4AShL&*aa@4xBiL$$rWbaV;4aJ|c$3Ux8Y?Z7T{`Ag|;`=$X24?(cwQuQq}pOvaz? zB}z$;oDCJ8JF_X7%?GDs1B}O+fKR1TiNx%4yHF_5`S@OnYB4SIqH!s#%tfa|yID~+ cU;oZ}0iPAdj@!J-b^rhX07*qoM6N<$f=4(cumAu6 diff --git a/graphics/object_events/pics/pokemon/followers/wynaut.png b/graphics/object_events/pics/pokemon/followers/wynaut.png deleted file mode 100644 index e90e1c8111dfd469092533b3878a0f4d1737f002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)CRu00009 za7bBm000XU000XU0RWnu7ytkPs!2paR7i>K)jdnYKo|$`GoWzeMQqKMRElPF(8cvc z+-xP-+w4>vBdteAh3-jcEQjl~<}|SyEhtZHZYWIYrOgN(ay1b6FNaqIo+lQg?1sm_*;reP z?y{UQolGpoZO(~r_MFl#%+g&277g6DxFGk;UQilDAWL^y+d=x@M>23m(IJ zHCMAvdYn(|-IIZPW@Dl*Mt2n`8>Y3!ZgFIBkQlwyX)C+aT{W~gAHo35Ua=~Yn(b)E zr@L%m!_h-4PwJeqM?&^<&uAHVul)g_Wd-c|c=sfC>zpz{h=3CSJMB^I!U;524KHVJ z?=V2OBZOaL=d|S!@Kow<43Is3HkgHuZ}!252Oq-9JGXEG$Ik~d1_M+hlt&SR9ne_x zi3b8p|9q-@5K$y-#v>qLPPD82kvCkRFM1btLoP;OYRlw-xq71&OgGZ-kk zIm2tORQ1Z*`17ke{&fd$mOn5m*5eyX|HS?Ii}?!*io~P~+-9x-0000QDLyg-gyxr0RaK&>G|17Sz%ED@zG(iDLJ{BF*#8oZ#THC00009 za7bBm000XU000XU0RWnu7ytkQT1iAfR7i>K)jeq2KokdXK?mPv4#!keJ7=pXH3`K9 zg9b09m?G-kOS%+yvIq!dV%2BI9^yc8hRiVn58Vvu91Jxb>VnjO)-G*B3fbK|=_EZ} ztdzJPlOJAw_jK>ClVvPP>sr^k{#z{;f8gxmGSL*xu2R_5ouod&H3vhDXRa`?J}^s7Lz)JJG4VJ&dI*VTGct$z}7tTVUmaG~p1gj9`)W1~FI`em#9*1f@OV46|k_(vi@FsshyurnB@o4z#kwMj7=96iMMK!9NXjy4as z2X4CeFKA6tj6NMbx%dVG1hcY?dC{q+yLn1WPBD7nJwAO00tEYO+Ve-+UhFMqa0z0M z1ooMuzNIM`{=tZ*RhSc6v6+gs*u~oQeqkQP(>ASc)_&8!)?Rk~zp7uU WCt5^VV}Q>90000G|17F#rGnNg%>Y00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kmd|SwK@`UqS!@G)S;%!EgnH^p40>r{ z(+=3nUWz?v#e>LNdJqq_wKQDB#Ew!d*089%&A07u@LZbv4AZ#rwRlJfo9Mv z^Sa3>AYvo>H9`}NBjoSbeImA>DIRu-9*8T}FkWW9FHt5cl4i}va$aL~G}?$0$$9>i z(N2#*0;F3YQ*5}MFhQ?@@urp2rT!^L;?HZO(!+-vghwz`4N)Q)209l& zIydI7kv10~w^cU_2?pRhQ2flLL#DU{$AjzGf`ta}#8HG0U>4sXG^*2rNZei->f#V+`0?Y$~e)cShaL*kbCF--Nm|xC4D{XB=L0C^jQP zye|<_6sOc(Y$<*p!#pEG%ncPkoM(#rj>{7R25ZyR;D?}8fAsLtUN!JroG7~Q6lv93 zQNkaN!iieUVTz4Nao>D4s~FMMLCvYI?|61~B?uT21shV8f;V4@68J>SVTuV;{4U%u z+%e(_%C@}~B}fuUYc<^H;^;0CiKyb_-P63P=2boNTd9c!@5$}3BuOGEwF_ArlrkNdyshU+xMD8IczeeIxOj%Y+!=<;2aJTKqi`SS9v` zOb{teg5vRn7tm>zBsyscA_++-w*IGAXoBbztDN&+%ztFR0B3juA7#~xB>(^b07*qo IM6N<$g4XHMdjJ3c diff --git a/graphics/object_events/pics/pokemon/followers/yanmega.png b/graphics/object_events/pics/pokemon/followers/yanmega.png deleted file mode 100644 index cbbb64ee58f07d8db3e81ff5bddd5d4343ebddad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P)}5C0ZCzT>FN0)F&R;*F}b<9F<~L05efN8F#rGn;KmQRb@Mi|BiK?Q>BL5Daf^@93lGg-G~ z4}p9Eqa~EmKyujIf~v*}3-Kj~Si#UkFBX_CS|1i>S3USrs7Wt-h_@&$acE7I$Onh) zLJsT05@;^fXXuRnOI8Few5QI&)=$sO^UP>8GeYS9^52vd`CkrLoUcH2pru-sj8s&` z3xDHn*0UIh&=fzbWFDg`rUAa3=UgBXYFMh`e-MykB#0kLmAsEh6&t(x9vie2GXWcN3n<&dpSIGr%wl|2cK~5N=N_Xedj`&(l^q3=^$A)e^Q4t^2;Bi;) zrp#&yvokmLR+@6epfqE{8jcN_9&xB6UBeHtp;1FDSTT1K4h_XGrO1#|=x@NmRiL-M z8m`aOL=RaDbo9X%H1x(JpoVbYT4vTj-kaiy1)(AR3wcdxLa1N$rr7%})k6+-vT4TyaT4Qq*M zgC_LJKqH6Wz%ANf?UvsOx%ahCUxf|-k51pFJwEJp{8$e;(1p=xD7r5mH|FytY74y?BD(#54WuMG1hEC?13(qa_i*m^lkB1jGp`3Xc+4PZED0b9B<`N57H;r*-1BdmV znPKk6>&fMj`0L5_a^?ZqtL?hQB>{54kdBB3^sXm)JRJ9qdujfa*4@uUQBqo8$)(Ij zKo?eS1dJ1hAmC;$fCi=kxOKYilG)ZtG;2ksh8O6!%<2T>D-4#m00000NkvXX Hu0mjfSYiHG diff --git a/graphics/object_events/pics/pokemon/followers/zangoose.png b/graphics/object_events/pics/pokemon/followers/zangoose.png deleted file mode 100644 index 323463b6766f133d6d6cc1250515766e1fba9f5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmV;B18@9^P)Kl+Q~WK@`WQ1h&aBLA^w?7+eC2IrdUY4@tI)jD-e5YH&|2RYCH<^v&+h{)q0e zm*P7t`+4)``<;0+yM#Q%Lp;QP5;2)SKSXl8$)83fyNPJ740!T}M)B4SJ`%l1CM|z4 z_wwc<*6tqAC@#0~wK^Bc@#~xL24Ispi`_bIEA`&Y`^5eP|(wk)>LGM}XdOw=$ z(|2vN7|923&O(Z_j6GqCe@1qBjfjE|gUiH4ateZXP}E_jwnY^BKSZ?D9LbS1=Camy2fDh;!A zVgtTfe8l}OJocxP)A&YVG)gCAnH@Z=@y zZ!1(7YR@_Ec?FuTGE-yed2dN7W5sH3NbQa+nNUbv!n)yhXo;DHgwZ|o4Ycf+KKrc7 z?(|Wvg#1+)5~7y?QY@X9Jwt#@t~W~Av-{gPsaZ~6sXQ=tI#_EsA9#FPFCd%3FkY`0 zMvHhg#=hYM*<9apmJF5-#|%oMA+SC{7KX0i+j_11qUj`B%bUo1!jK#+?@Uk+mS1~@ z$P5&x{=Icv0&JSldv8rt9S!|MM!~gutv2qsJyAL%&Yt0sVhvRWP;PpLHotPQ(YhMx z-Ug5_rkeq_1?y`7KNQh2*=El$CU=Jbkk81Tp=Gm!tBsa|O_~U~)yBo|od9#eof?2e zsYpt&Jetd(dbl8L(_GP$~Gs-AH#dEmYsBv_1b!I~7uEr!wSj mNLm!!!!s$3hK6SFAID!ZVv;30jR~j#0000w_d0YO1Q`OyL4sTr}c(V=lkIVlG|Q2N%`49Sy4d%0000000000T(64>00009 za7bBm000XU000XU0RWnu7ytkRr%6OXR7i>Kl|PT$HWt< zF2u`!&+mCi%LsjG|E-M>4*tjE#L38Ie)pun=K_tp|4>|22uT%?3~ z2Jy0fw|fQk_EoyC>p%)_Y-HzmTCm~-ZU$UCEbI5Jqlay7iBZwF2~7cp{Up)?XUVjN z&5w2cQ#q|urUdsUvdx1O#I?xf2>^o(2}$fRc!#y4^X+Y7iE)dJMN|W%{Rqr0FbXOE z?XT_c8KmJ=BWNPKYy``CB8oY{Oo*u>4%sx;jxKLm&=Lm)Gsx>dfBEhM0EPBxoh1>_ z^q*ZSJ9RNEf>cKaAO$_fz5yWx79}tyiRD159o?$Z5+??k($`;qn9vATS4N(-I7)&8F<4~eWlJh+qd+OU_W84TL0CfN1{!m&Bja4vF_)PPVBBXc=ITHiwvK4v z5L;xmWH6Jv7ws)GvZ7fQ7JZG7#BF3$dG^AD^@{my*-seN+e7W3J-;F52W07*&-g;L zKW&!y-adY@!##G@=&@lF8Ih!#;F=Bxgbqyv-XXGMVvCH>h7Y*C5;V-u@8i*HR2U*k zbYwkKhdpmM=8OxhYe5k^$Ov!#_W8oz2}RG>V!aN`$HOB&Q<1$SJp&Nn zKZfDG?3;2V#6~)LA%tiJB(cvOWbb}Q1V7vfqJsEKizB}cDl*g(QMCS<^nT4fyQ6V* z*sh4>fd^#o*+?v$OP625Lio-G9oeCYxT@U$1MTS06mjk%Q&h~{1M#X@xqo{)GUtHr zt5xRAYe&w!B1SGUDyqsY&+wU39Y@vxR7U_^M<>Jx$sIX*v~?rv0(2dn5_flW1v-(P r&R5;}r-@J6)A}Eq|J05z?a}rx=?!BBcf(b500000NkvXXu0mjff0XRp diff --git a/graphics/object_events/pics/pokemon/followers/zigzagoon.png b/graphics/object_events/pics/pokemon/followers/zigzagoon.png deleted file mode 100644 index 78759aa8b4ce8e5a7aef46f50a77514c6d69af14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)G|2wnMpAj$+3BPNhz6$SwS%=G*%Q800009 za7bBm000XU000XU0RWnu7ytkQcS%G+R7i>K)W3_`U>FDR7s*Xd0f&G~2se3$W0yjS z_8o$W(&eQTIXd)j=pPWs@PZuu3vLmooP)Lzgx5Goh9eh*f(OMI3gYJBR_Ib_)ckmJ z=gWc6rTBIFBu}2_O?(poPC4b2|0j|tWtfv#l}D!3Zf96(vnr2EuGBR}il*BZS+z$c z@0r~mMc4Ft?CK+82VOuA2V+*!l9(|ykgKl8WO^<$%we)^NU(g^ zfDFlfI3U@Fk&}VIDv+W;Dk{rF(RD#E2*Xe(qczN%@qoRlfuOHfc)lPMS?2IA@?oES z=L=e3sB`x`<76PotBmbGcs+dRT#TWO9q-8kCb zd87}8)(FqXft<1JCKp`bUkH7~Us;B$T6wwbqzhQJH|0`e?+O~?*61#5Xk{G@+@{>T zLFi_%WI1om-CFH7{Zv@pPRCSxQNw0yNWANKe&WE2>jC%RBjjJnOdAW+?fyu8?R8Br z^6UjX6hYR>4TtYs9sT)s_8Ie;Rc0pTsvo+u*x$~~zKk(5)$P?)4bjdM3H!ds zB}R9I?|l`zzAED0zsKAUo}Z3?XuFPe9-~TR{_fMyJ@{C%%$d$JOuF^q^!e#+i;_>A zn3b`g@efbK{rmQeEzey=0{VG*`(o4B8cP`z>*sX%2sPa1IKh?b*wTKylkK?A1L=#~ z#6v|q8vJ@YyPmkPb)CDMpR6=nrdjK9jPLdMo2PjK}^^^Z6g43lmo4 zO->Gv-^8%$GBe}a$qt!kCaf?zZt}5BOVGuA`izWMr6p_1XKKp6>TM|ARbuQIzO1ve z$5VLW0i{yO6$>V;Shi@cjJ)?@pWi~)Pjjr}`*=@{KU7$F=AEzWj@Cv=KZq@Kbbayn z%?=~At-`ZDyDg|@zjIjA)G~GDt=9$*;arQ>x;@CTdwKq6w91R~Re0X}4active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -2472,13 +1363,10 @@ 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) @@ -2507,14 +1395,25 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (spriteTemplate->paletteTag != 0xffff) + paletteSlot = graphicsInfo->paletteSlot; + if (paletteSlot == 0) { - LoadObjectEventPalette(spriteTemplate->paletteTag); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0); + } + else if (paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10); + } + else if (paletteSlot >= 16) + { + paletteSlot -= 16; + _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; + *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -2528,6 +1427,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; + sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -2540,7 +1440,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -2572,7 +1472,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) +u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) { struct ObjectEventTemplate objectEventTemplate; @@ -2662,7 +1562,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(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) +u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -2755,7 +1655,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) + if (objectEvent->active && !objectEvent->isPlayer) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2793,6 +1693,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; + u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -2813,10 +1714,22 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; - if (spriteTemplate.paletteTag != 0xffff) + *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; + paletteSlot = graphicsInfo->paletteSlot; + if (paletteSlot == 0) { - LoadObjectEventPalette(spriteTemplate.paletteTag); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } + else if (paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + } + else if (paletteSlot >= 16) + { + paletteSlot -= 16; + _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + } + *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -2836,6 +1749,7 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) if (subspriteTables != NULL) SetSubspriteTables(sprite, subspriteTables); + sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; @@ -2868,7 +1782,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -2907,7 +1821,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) { u8 objectEventId; @@ -2962,7 +1876,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) { u8 bard; @@ -3089,7 +2003,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -3104,9 +2018,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u16 FindObjectEventPaletteIndexByTag(u16 tag) +static u8 FindObjectEventPaletteIndexByTag(u16 tag) { - u16 i; + u8 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { @@ -3483,7 +2397,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -3897,38 +2811,6 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } -movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) - -bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - ClearObjectEventMovement(objectEvent, sprite); - sprite->data[1] = 1; - return TRUE; -} - -bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); - sprite->data[1] = 2; - return TRUE; -} - -bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) - { - objectEvent->singleMovementActive = FALSE; - sprite->data[1] = 3; - } - return FALSE; -} - -bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - sprite->data[1] = 1; - return TRUE; -} - movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5817,9 +4699,8 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) + if (curObject->active && curObject != objectEvent) { - // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -5967,7 +4848,6 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; - FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -6068,41 +4948,6 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } -bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) -{ - if(follower->currentCoords.x == player->currentCoords.x) - { - // Follower is south of player - if(follower->currentCoords.y > player->currentCoords.y) - { - gSprites[follower->spriteId].animNum = 5; - follower->facingDirection = DIR_NORTH; - } - // Follower is north of player - else - { - gSprites[follower->spriteId].animNum = 4; - follower->facingDirection = DIR_SOUTH; - } - } - else - { - // Follower is east of player - if(follower->currentCoords.x > player->currentCoords.x) - { - gSprites[follower->spriteId].animNum = 6; - follower->facingDirection = DIR_WEST; - } - // Follower is west of player - else - { - gSprites[follower->spriteId].animNum = 7; - follower->facingDirection = DIR_EAST; - } - } - return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); -} - dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -6245,8 +5090,7 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) - sprite->animPaused = TRUE; + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -6480,19 +5324,7 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 2) - { - sprite->data[7] = 2; - sprite->animNum = 4; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -6508,19 +5340,7 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 3) - { - sprite->data[7] = 3; - sprite->animNum = 5; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -6536,19 +5356,7 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 4) - { - sprite->data[7] = 4; - sprite->animNum = 6; - sprite->x2 = 8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -6564,19 +5372,7 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 5) - { - sprite->data[7] = 5; - sprite->animNum = 7; - sprite->x2 = -8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -6650,8 +5446,7 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) - sprite->animPaused = TRUE; + sprite->animPaused = TRUE; } return result; } @@ -6700,11 +5495,6 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 0; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -6722,11 +5512,6 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 0; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -6744,11 +5529,6 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 8; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -6766,11 +5546,6 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = -8; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -6834,19 +5609,7 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 6) - { - sprite->data[7] = 6; - sprite->animNum = 20; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -6862,19 +5625,7 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 7) - { - sprite->data[7] = 7; - sprite->animNum = 21; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -6890,19 +5641,7 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 8) - { - sprite->data[7] = 8; - sprite->animNum = 22; - sprite->x2 = 8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -6918,19 +5657,7 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 9) - { - sprite->data[7] = 9; - sprite->animNum = 23; - sprite->x2 = -8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -9114,9 +7841,6 @@ 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_BUG] = DoTracksGroundEffect_FootprintsBug, - [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) @@ -9151,73 +7875,6 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } -static void DoTracksGroundEffect_FootprintsSpot(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; - if (Random() % 2 == 0) - PlaySE(159); - if (Random() % 2 == 1) - PlaySE12WithPanning(159, 1); - FieldEffectStart(otherFootprintsA_FieldEffectData[a]); -} - -static void DoTracksGroundEffect_FootprintsBug(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; - if (Random() % 2 == 0) - PlaySE(159); - if (Random() % 2 == 1) - PlaySE12WithPanning(159, 1); - FieldEffectStart(otherFootprintsB_FieldEffectData[a]); -} - -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]; - FieldEffectStart(FLDEFF_TRACKS_SLITHER); - } -} - static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // Specifies which bike track shape to show next. @@ -9363,9 +8020,6 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; - - if (gSaveBlock2Ptr->follower.inProgress && objEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId] && objEvent->invisible == TRUE) - return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) @@ -9936,7 +8590,7 @@ void TurnVirtualObject(u8 virtualObjId, u8 direction) StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(direction)); } -void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId) +void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) { int spriteId = GetVirtualObjectSpriteId(virtualObjId); @@ -10114,42 +8768,6 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite * MovementAction_Fly_Finish, }; -u8 (*const gMovementActionFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_Step0, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_FaceSouth[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_FaceSouth_Step0, - MovementAction_Finish, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_FaceNorth[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_FaceNorth_Step0, - MovementAction_Finish, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_FaceWest[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_FaceWest_Step0, - MovementAction_Finish, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_FaceEast[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_FaceEast_Step0, - MovementAction_Finish, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_Shrink[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_Shrink_Step0, - MovementAction_FollowingPokemon_Shrink_Step1, - MovementAction_Finish, -}; - -u8 (*const gMovementActionFuncs_FollowingPokemon_Grow[])(struct ObjectEvent *, struct Sprite *) = { - MovementAction_FollowingPokemon_Grow_Step0, - MovementAction_FollowingPokemon_Grow_Step1, - MovementAction_Finish, -}; - u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { bool32 ableToStore = FALSE; @@ -10318,579 +8936,8 @@ u8 MovementAction_FlyDown_Step1(struct ObjectEvent *objectEvent, struct Sprite * return FALSE; } -u8 MovementAction_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - switch(sprite->animNum % 4) - { - case 0: - case 1: - sprite->x2 = 0; - break; - case 2: - sprite->x2 = 8; - break; - case 3: - sprite->x2 = -8; - break; - } - if(sprite->data[7] != 1) - { - sprite->data[7] = 1; - sprite->animPaused = FALSE; - if(sprite->animNum > 3) - sprite->animNum = sprite->animNum % 4; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - return FALSE; -} - -void RecreateObjectEvent(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - u8 newSpriteId; - struct ObjectEventTemplate clone; - struct ObjectEvent backupFollower = *objectEvent; - backupFollower.graphicsId = objectEvent->graphicsId; - DestroySprite(sprite); - RemoveObjectEvent(objectEvent); - - clone = *GetObjectEventTemplateByLocalIdAndMap(objectEvent->localId, objectEvent->mapNum, objectEvent->mapGroup); - clone.graphicsId = objectEvent->graphicsId; - - objectEvent = &gObjectEvents[TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y)]; - newSpriteId = objectEvent->spriteId; - *objectEvent = backupFollower; - objectEvent->spriteId = newSpriteId; -} - -u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - RecreateObjectEvent(objectEvent, sprite); - sprite->animNum = 0; - MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); - sprite->data[2]++; - return FALSE; -} - -u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - RecreateObjectEvent(objectEvent, sprite); - sprite->animNum = 1; - MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); - sprite->data[2]++; - return FALSE; -} - -u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - RecreateObjectEvent(objectEvent, sprite); - sprite->animNum = 2; - sprite->x2 = 8; - MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); - sprite->data[2]++; - return FALSE; -} - -u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - RecreateObjectEvent(objectEvent, sprite); - sprite->animNum = 3; - sprite->x2 = -8; - MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); - sprite->data[2]++; - return FALSE; -} - -static void PokeballCallback(struct Sprite *sprite) -{ - if (++sprite->data[0] == 21) - DestroySprite(sprite); -} - -u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - s16 x = objectEvent->currentCoords.x; - s16 y = objectEvent->currentCoords.y; - u8 spriteId; - bool8 playerPriority; - - sprite->data[7] = 1; - sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(sprite); - - if (objectEvent->facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) - StartSpriteAffineAnim(sprite, 2); - else - StartSpriteAffineAnim(sprite, 0); - - if (y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is to the east or west of player - { - SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); - playerPriority = FALSE; - } - else if (y < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is north of player - { - SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); - playerPriority = TRUE; - } - else // If follower is south of player - { - SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); - playerPriority = FALSE; - } - - switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) - { - case ITEM_MASTER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_ULTRA_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_GREAT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_SAFARI_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_NET_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_DIVE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_NEST_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_REPEAT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_TIMER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_LUXURY_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_PREMIER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &PokeballCallback, x, y, 2); - break; - #ifdef ITEM_EXPANSION - case ITEM_HEAL_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_DUSK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_QUICK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_LEVEL_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_LURE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_MOON_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_FRIEND_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_LOVE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_FAST_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_HEAVY_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_DREAM_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_SPORT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_PARK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &PokeballCallback, x, y, 2); - break; - case ITEM_CHERISH_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &PokeballCallback, x, y, 2); - break; - #endif - default: // PokeBall - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &PokeballCallback, x, y, 2); - break; - } - - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 2; - gSprites[spriteId].data[0] = 0; - } - - if (playerPriority) - { - gSprites[gPlayerAvatar.spriteId].oam.priority = 1; - gSprites[gPlayerAvatar.spriteId].subpriority = 1; - gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = TRUE; - } - - sprite->oam.priority = 1; - sprite->subpriority = 1; - - sprite->data[2]++; - return FALSE; -} - -u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - sprite->data[7]++; - - if (objectEvent->currentCoords.x > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // east side - { - switch(objectEvent->facingDirection) - { - case DIR_EAST: - if (sprite->data[7] < 8) - sprite->x2 += sprite->data[7] - 1; - else - sprite->x2 += 7; - break; - case DIR_WEST: - if (sprite->data[7] <= 5) - { - if (sprite->data[7] > 3) - sprite->x2 += 1 - sprite->data[7]; - else - sprite->x2 -= sprite->data[7]; - } - else if (sprite->data[7] == 6) - sprite->x2 += -5; - else - sprite->x2 += 1 - sprite->data[7]; - break; - } - - // Adjust the height of the 64x64 sprites differently - if (IsBigSprite(objectEvent->graphicsId)) - { - if (sprite->data[7] < 3) - sprite->y2 = sprite->data[7] * 2 + 1; - else if (sprite->data[7] < 5) - sprite->y2 = sprite->data[7] * 2 + 2; - else if (sprite->data[7] < 6) - sprite->y2 = sprite->data[7] * 2 + 3; - else if (sprite->data[7] < 8) - sprite->y2 = sprite->data[7] * 2 + 4; - else if (sprite->data[7] < 9) - sprite->y2 = sprite->data[7] * 2 + 5; - else - sprite->y2 = sprite->data[7] * 2 + 6; - } - else - { - if (sprite->data[7] >= 10) - sprite->y2 = 10; - else - sprite->y2 = sprite->data[7]; - } - } - else if (objectEvent->currentCoords.x < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // west side - { - switch(objectEvent->facingDirection) - { - case DIR_EAST: - if (sprite->data[7] <= 5) - { - if (sprite->data[7] > 3) - sprite->x2 -= 2 - sprite->data[7]; - else - sprite->x2 += sprite->data[7] - 1; - } - else if (sprite->data[7] == 6) - sprite->x2 -= -4; - else - sprite->x2 -= 2 - sprite->data[7]; - break; - case DIR_WEST: - if (sprite->data[7] < 9) - sprite->x2 -= sprite->data[7] - 1; - else - sprite->x2 -= 8; - break; - } - - // Adjust the height of the 64x64 sprites differently - if (IsBigSprite(objectEvent->graphicsId)) - { - if (sprite->data[7] < 3) - sprite->y2 = sprite->data[7] * 2 + 1; - else if (sprite->data[7] < 5) - sprite->y2 = sprite->data[7] * 2 + 2; - else if (sprite->data[7] < 6) - sprite->y2 = sprite->data[7] * 2 + 3; - else if (sprite->data[7] < 8) - sprite->y2 = sprite->data[7] * 2 + 4; - else if (sprite->data[7] < 9) - sprite->y2 = sprite->data[7] * 2 + 5; - else - sprite->y2 = sprite->data[7] * 2 + 6; - } - else - { - if (sprite->data[7] >= 10) - sprite->y2 = 10; - else - sprite->y2 = sprite->data[7]; - } - } - else if (objectEvent->currentCoords.y > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // south side - { - switch(objectEvent->facingDirection) - { - case DIR_EAST: - if (sprite->data[7] < 7) - sprite->x2 += sprite->data[7] - 1; - else - sprite->x2 += 6; - break; - case DIR_WEST: - if (sprite->data[7] < 8) - sprite->x2 -= sprite->data[7] - 1; - else - sprite->x2 -= 7; - break; - } - - // Adjust the height of the 64x64 sprites differently - if (IsBigSprite(objectEvent->graphicsId)) - { - if (sprite->data[7] < 3) - sprite->y2 = sprite->data[7] + 3; - else if (sprite->data[7] < 5) - sprite->y2 = sprite->data[7] + 4; - else if (sprite->data[7] < 6) - sprite->y2 = sprite->data[7] + 5; - else if (sprite->data[7] < 8) - sprite->y2 = sprite->data[7] + 6; - else if (sprite->data[7] < 9) - sprite->y2 = sprite->data[7] + 7; - else - sprite->y2 = sprite->data[7] + 8; - } - else - sprite->y2 = 1; - } - else // north side - { - switch(objectEvent->facingDirection) - { - case DIR_EAST: - if (sprite->data[7] < 7) - sprite->x2 += sprite->data[7] - 1; - else - sprite->x2 += 6; - break; - case DIR_WEST: - if (sprite->data[7] < 8) - sprite->x2 -= sprite->data[7] - 1; - else - sprite->x2 -= 7; - break; - } - - // Adjust the height of the 64x64 sprites differently - if (IsBigSprite(objectEvent->graphicsId)) - { - if (sprite->data[7] < 5) - sprite->y2 = sprite->data[7] * 2 + 1; - else if (sprite->data[7] < 8) - sprite->y2 = sprite->data[7] * 2 + 2; - else - sprite->y2 = sprite->data[7] * 2 + 3; - } - else - { - if (sprite->data[7] < 6) - sprite->y2 = sprite->data[7]; - else - sprite->y2 = 6; - } - } - - if (sprite->data[7] >= 11) - { - FreeSpriteOamMatrix(sprite); - gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; - gPlayerAvatar.preventStep = FALSE; - objectEvent->invisible = TRUE; - sprite->data[2]++; - } - - return FALSE; -} - -u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - sprite->data[7] = 11; - sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(sprite); - - if (gObjectEvents[gPlayerAvatar.objectEventId].facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) - StartSpriteAffineAnim(sprite, 3); - else - StartSpriteAffineAnim(sprite, 1); - - switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) - { - case DIR_SOUTH: - sprite->y2 = 6; - sprite->x2 = 0; - break; - case DIR_NORTH: - sprite->y2 = 1; - sprite->x2 = 0; - break; - case DIR_EAST: - sprite->y2 = 10; - sprite->x2 += 9; - break; - case DIR_WEST: - sprite->y2 = 10; - sprite->x2 -= 9; - break; - } - sprite->data[2]++; - return FALSE; -} - -u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - sprite->data[7]--; - - if (sprite->data[7] == 10) - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; - - switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) - { - case DIR_SOUTH: - if (sprite->data[7] < 6) - sprite->y2 = sprite->data[7]; - else - sprite->y2 = 6; - break; - case DIR_NORTH: - sprite->y2 = 1; - break; - case DIR_WEST: - if (sprite->data[7] <= 5) - { - if (sprite->data[7] > 3) - sprite->x2 += 1 - sprite->data[7]; - else - sprite->x2 -= sprite->data[7]; - } - else if (sprite->data[7] == 6) - sprite->x2 += -5; - else - sprite->x2 += 1 - sprite->data[7]; - - if (sprite->data[7] >= 10) - sprite->y2 = 10; - else - sprite->y2 = sprite->data[7]; - - break; - case DIR_EAST: - if (sprite->data[7] <= 5) - { - if (sprite->data[7] > 3) - sprite->x2 -= 2 - sprite->data[7]; - else - sprite->x2 += sprite->data[7] - 1; - } - else if (sprite->data[7] == 6) - sprite->x2 -= -4; - else - sprite->x2 -= 2 - sprite->data[7]; - - if (sprite->data[7] >= 10) - sprite->y2 = 10; - else - sprite->y2 = sprite->data[7]; - - break; - } - - // Adjust the height of the 64x64 sprites differently - if (IsBigSprite(objectEvent->graphicsId)) - { - if (sprite->data[7] > 9) - sprite->y2 -= (11 - sprite->data[7]) + 2; - else if (sprite->data[7] > 7) - sprite->y2 -= (11 - sprite->data[7]) + 3; - else if (sprite->data[7] > 6) - sprite->y2 -= (11 - sprite->data[7]) + 4; - else if (sprite->data[7] > 4) - sprite->y2 -= (11 - sprite->data[7]) + 5; - else if (sprite->data[7] > 3) - sprite->y2 -= (11 - sprite->data[7]) + 6; - else - sprite->y2 -= (11 - sprite->data[7]) + 7; - } - - if (sprite->data[7] <= 1) - { - // Set y2 of the 64x64 sprites back to 0, and compensate with y. - if (IsBigSprite(objectEvent->graphicsId)) - { - sprite->y -= 16; - sprite->y2 = 0; - } - - FreeSpriteOamMatrix(sprite); - - // Make sure water ripples at the feet of the follower if they are appearing on top of shallow water. - if (MetatileBehavior_IsShallowFlowingWater(MapGridGetMetatileBehaviorAt(objectEvent->currentCoords.x, objectEvent->currentCoords.y))) - { - objectEvent->inShallowFlowingWater = TRUE; - StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); - } - gPlayerAvatar.preventStep = FALSE; - sprite->data[2]++; - } - - return FALSE; -} - // though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it. u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *sprite) { return TRUE; } - -// NEW -u16 GetMiniStepCount(u8 speed) -{ - return (u16)sStepTimes[speed]; -} - -void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) -{ - sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); -} - -bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) -{ - s16 x; - s16 y; - - x = objectEvent->currentCoords.x; - y = objectEvent->currentCoords.y; - MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); - if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) - return TRUE; - - return FALSE; -} diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 1bcf7b403..cdb0db6d1 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -28,7 +28,6 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "wild_encounter.h" -#include "follow_me.h" #include "constants/event_bg.h" #include "constants/event_objects.h" #include "constants/field_poison.h" @@ -157,16 +156,9 @@ int ProcessPlayerFieldInput(struct FieldInput *input) { IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); - if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } - else if(gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0x9E); - } - if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE) return TRUE; if (input->heldDirection && input->dpadDirection == playerDirection) @@ -314,13 +306,6 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 if (InTrainerHill() == TRUE) script = GetTrainerHillTrainerScript(); - else if (objectEventId == GetFollowerObjectId())//(gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_FOLLOWER) - { - if(gObjectEvents[objectEventId].invisible == FALSE) - script = GetFollowerScriptPointer(); - else - return NULL; - } else script = GetObjectEventScriptPointerByObjectEventId(objectEventId); diff --git a/src/field_effect.c b/src/field_effect.c index 99aaf1ed6..369239f6b 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -26,7 +26,6 @@ #include "trainer_pokemon_sprites.h" #include "trig.h" #include "util.h" -#include "follow_me.h" #include "constants/field_effects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" @@ -39,7 +38,6 @@ EWRAM_DATA s32 gFieldEffectArguments[8] = {0}; // Static type declarations -extern void FollowMe_WarpSetEnd(void); static void Task_PokecenterHeal(u8 taskId); static void PokecenterHealEffect_Init(struct Task *); static void PokecenterHealEffect_WaitForBallPlacement(struct Task *); @@ -1358,11 +1356,8 @@ static void Task_UseFly(u8 taskId) gFieldEffectArguments[0] = 0; FieldEffectStart(FLDEFF_USE_FLY); - FollowerIntoPokeball(); - task->data[0]++; } - if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -1541,7 +1536,6 @@ static bool8 FallWarpEffect_End(struct Task *task) UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); - FollowMe_WarpSetEnd(); return FALSE; } @@ -1593,7 +1587,6 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) task->tState++; task->data[2] = 0; task->data[3] = 0; - EscalatorMoveFollower(task->data[1]); if ((u8)task->tGoingUp == FALSE) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride @@ -1891,7 +1884,6 @@ static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct Ob gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); - FollowMe_WarpSetEnd(); return FALSE; } @@ -2278,31 +2270,6 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); - - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - switch(objectEvent->facingDirection) - { - case DIR_SOUTH: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 25); - break; - case DIR_NORTH: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 26); - break; - case DIR_WEST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 27); - break; - case DIR_EAST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; - ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 28); - break; - } - } - if (task->tNumTurns < 12) task->tNumTurns++; task->tSpinDelay = 8 >> (task->tNumTurns >> 2); @@ -3044,7 +3011,6 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) SetPlayerAvatarFieldMove(); ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; - FollowerIntoPokeball(); } } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index c33e4905a..c3332c7fc 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -585,60 +585,6 @@ u32 FldEff_SandFootprints(void) return 0; } -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_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; -} - u32 FldEff_DeepSandFootprints(void) { u8 spriteId; @@ -820,8 +766,7 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) struct Sprite *linkedSprite; struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater - || (gObjectEvents[objectEventId].invisible && objectEventId == gSaveBlock2Ptr->follower.objId && gSaveBlock2Ptr->follower.inProgress)) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 60b23ced8..b374e132d 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,7 +20,6 @@ #include "strings.h" #include "task.h" #include "tv.h" -#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -611,9 +610,6 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) { if (collision == COLLISION_LEDGE_JUMP) { - if (gSaveBlock2Ptr->follower.inProgress && gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE) - gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_2_DOWN; - FollowerPokeballSparkle(); PlayerJumpLedge(direction); return; } @@ -641,14 +637,12 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) { - FollowerPokeballSparkle(); PlayerRun(direction); gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH; return; } else { - FollowerPokeballSparkle(); PlayerWalkNormal(direction); } } @@ -1218,32 +1212,32 @@ void StopPlayerAvatar(void) } } -u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sRivalAvatarGfxIds[state][gender]; } -u16 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sPlayerAvatarGfxIds[state][gender]; } -u16 GetFRLGAvatarGraphicsIdByGender(u8 gender) +u8 GetFRLGAvatarGraphicsIdByGender(u8 gender) { return sFRLGAvatarGfxIds[gender]; } -u16 GetRSAvatarGraphicsIdByGender(u8 gender) +u8 GetRSAvatarGraphicsIdByGender(u8 gender) { return sRSAvatarGfxIds[gender]; } -u16 GetPlayerAvatarGraphicsIdByStateId(u8 state) +u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) { return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); } -u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) +u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) { switch (gfxId) { @@ -1261,7 +1255,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) { switch (gfxId) { @@ -1330,7 +1324,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) { u8 i; @@ -1342,7 +1336,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u16 GetPlayerAvatarGraphicsIdByCurrentState(void) +u8 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1355,7 +1349,7 @@ u16 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1393,7 +1387,6 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); - CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 11a44a24d..77978c269 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -27,7 +27,6 @@ #include "sound.h" #include "start_menu.h" #include "task.h" -#include "follow_me.h" #include "text.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" @@ -43,6 +42,8 @@ static void FillPalBufferWhite(void); static void Task_ExitDoor(u8); static bool32 WaitForWeatherFadeIn(void); static void Task_SpinEnterWarp(u8 taskId); +static void Task_WarpAndLoadMap(u8 taskId); +static void Task_DoDoorWarp(u8 taskId); static void Task_EnableScriptAfterMusicFade(u8 taskId); // data[0] is used universally by tasks in this file as a state for switches @@ -110,7 +111,7 @@ void WarpFadeOutScreen(void) } } -void SetPlayerVisibility(bool8 visible) +static void SetPlayerVisibility(bool8 visible) { SetPlayerInvisibility(!visible); } @@ -274,7 +275,6 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); SetUpWarpExitTask(); - FollowMe_WarpSetEnd(); ScriptContext2_Enable(); } @@ -323,7 +323,6 @@ static void Task_ExitDoor(u8 taskId) switch (task->tState) { case 0: - HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -353,8 +352,6 @@ static void Task_ExitDoor(u8 taskId) case 3: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { - FollowMe_SetIndicatorToComeOutDoor(); - FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 4; } @@ -375,7 +372,6 @@ static void Task_ExitNonAnimDoor(u8 taskId) switch (task->tState) { case 0: - HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -394,8 +390,6 @@ static void Task_ExitNonAnimDoor(u8 taskId) case 2: if (IsPlayerStandingStill()) { - FollowMe_SetIndicatorToComeOutDoor(); - FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 3; } @@ -421,7 +415,6 @@ static void Task_ExitNonDoor(u8 taskId) { UnfreezeObjectEvents(); ScriptContext2_Disable(); - gSaveBlock2Ptr->follower.comeOutDoorStairs = 2; DestroyTask(taskId); } break; @@ -650,7 +643,7 @@ void ReturnFromLinkRoom(void) CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } -void Task_WarpAndLoadMap(u8 taskId) +static void Task_WarpAndLoadMap(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -681,6 +674,59 @@ void Task_WarpAndLoadMap(u8 taskId) } } +static void Task_DoDoorWarp(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *x = &task->data[2]; + s16 *y = &task->data[3]; + + switch (task->tState) + { + case 0: + FreezeObjectEvents(); + PlayerGetDestCoords(x, y); + PlaySE(GetDoorSoundEffect(*x, *y - 1)); + task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + task->tState = 1; + break; + case 1: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + u8 objEventId; + objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); + ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]); + objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); + ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP); + task->tState = 2; + } + break; + case 2: + if (IsPlayerStandingStill()) + { + u8 objEventId; + task->data[1] = FieldAnimateDoorClose(*x, *y - 1); + objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); + SetPlayerVisibility(FALSE); + task->tState = 3; + } + break; + case 3: + if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + task->tState = 4; + } + break; + case 4: + TryFadeOutOldMapMusic(); + WarpFadeOutScreen(); + PlayRainStoppingSoundEffect(); + task->tState = 0; + task->func = Task_WarpAndLoadMap; + break; + } +} + static void Task_DoContestHallWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -964,7 +1010,6 @@ static void Task_SpinEnterWarp(u8 taskId) case 1: if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE) { - FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); ScriptContext2_Disable(); DestroyTask(taskId); diff --git a/src/field_specials.c b/src/field_specials.c index 4df35e2d2..4ed2a2e03 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -90,9 +90,9 @@ void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); static void RecordCyclingRoadResults(u32, u8); -static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum); -static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId); -static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId); +static void LoadLinkPartnerObjectEventSpritePalette(u8, u8, u8); +static void Task_PetalburgGymSlideOpenRoomDoors(u8); +static void PetalburgGymSetDoorMetatiles(u8, u16); static void Task_PCTurnOnEffect(u8); static void PCTurnOnEffect_0(struct Task *); static void PCTurnOnEffect_1(s16, s8, s8); @@ -502,7 +502,7 @@ void SpawnLinkPartnerObjectEvent(void) }; u8 myLinkPlayerNumber; u8 playerFacingDirection; - u16 linkSpriteId; + u8 linkSpriteId; u8 i; myLinkPlayerNumber = GetMultiplayerId(); @@ -563,7 +563,7 @@ void SpawnLinkPartnerObjectEvent(void) } } -static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum) +static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) { u8 adjustedPaletteNum; // Note: This temp var is necessary; paletteNum += 6 doesn't match. @@ -1497,21 +1497,6 @@ u8 GetLeadMonIndex(void) return 0; } -u8 GetLeadMonNotFaintedIndex(void) -{ - u8 i; - u8 partyCount = CalculatePlayerPartyCount(); - for(i = 0; i < partyCount; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0 - && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) - { - return i; - } - } - return 0; -} - u16 ScriptGetPartyMonSpecies(void) { return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index cfa5d57aa..a30000e52 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -27,8 +27,7 @@ static void Task_DoFieldMove_RunFunc(u8 taskId); static void FieldCallback_RockSmash(void); static void FieldMove_RockSmash(void); -// text -bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId) +bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId) { u8 objEventId; diff --git a/src/follow_me.c b/src/follow_me.c deleted file mode 100644 index f6d26100f..000000000 --- a/src/follow_me.c +++ /dev/null @@ -1,1477 +0,0 @@ -#include "global.h" -#include "follow_me.h" -#include "event_object_movement.h" -#include "field_door.h" -#include "field_effect.h" -#include "field_effect_helpers.h" -#include "field_player_avatar.h" -#include "field_control_avatar.h" -#include "field_screen_effect.h" -#include "field_weather.h" -#include "fieldmap.h" -#include "fldeff_misc.h" -#include "item.h" -#include "task.h" -#include "metatile_behavior.h" -#include "overworld.h" -#include "script.h" -#include "event_data.h" -#include "sound.h" -#include "trig.h" -#include "metatile_behavior.h" -#include "constants/event_object_movement.h" -#include "constants/event_objects.h" -#include "constants/songs.h" -#include "constants/map_types.h" -#include "constants/field_effects.h" -#include "constants/metatile_behaviors.h" -/* - -FollowMe_StairsMoveHook ? - -FollowMe_WarpStairsEndHook ? -*/ - -/* -Known Issues: - -follower gets messed up if you go into a map with a maximum number of event objects - -inherits incorrect palette, may get directionally confused -*/ - -// Defines -#define PLAYER_AVATAR_FLAG_BIKE PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE - -struct FollowerSpriteGraphics -{ - u16 normalId; - u16 machBikeId; - u16 acroBikeId; - u16 surfId; - u16 underwaterId; -}; - -// EWRAM -//EWRAM_DATA struct Follower gSaveBlock2Ptr->follower = {0}; - -// Function Declarations -static u8 GetFollowerMapObjId(void); -static u16 GetFollowerSprite(void); -static void TryUpdateFollowerSpriteUnderwater(void); -static void Task_ReallowPlayerMovement(u8 taskId); -static u8 DetermineFollowerDirection(struct ObjectEvent* player, struct ObjectEvent* follower); -static void PlayerLogCoordinates(struct ObjectEvent* player); -static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 direction); -static bool8 IsStateMovement(u8 state); -static u8 ReturnFollowerDelayedState(u8 direction); -static void SetSurfJump(void); -static void Task_BindSurfBlobToFollower(u8 taskId); -static void SetUpSurfBlobFieldEffect(struct ObjectEvent* npc); -static void SetSurfDismount(void); -static void Task_FinishSurfDismount(u8 taskId); -static void Task_FollowerOutOfDoor(u8 taskId); -static void Task_FollowerHandleIndoorStairs(u8 taskId); -static void Task_FollowerHandleEscalator(u8 taskId); -static void Task_FollowerHandleEscalatorFinish(u8 taskId); -static void CalculateFollowerEscalatorTrajectoryUp(struct Task *task); -static void CalculateFollowerEscalatorTrajectoryDown(struct Task *task); -static void TurnNPCIntoFollower(u8 localId, u16 followerFlags); - -// Const Data -static const struct FollowerSpriteGraphics gFollowerAlternateSprites[] = -{ - //FORMAT: - //{WALKING/RUNNING SPRITE ID, MACH BIKE SPRITE ID, ACRO BIKE SPRITE ID, SURFING SPRITE ID}, - [0] = - { - .normalId = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL, - .machBikeId = OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE, - .acroBikeId = OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE, - .surfId = OBJ_EVENT_GFX_RIVAL_MAY_SURFING, - .underwaterId = OBJ_EVENT_GFX_MAY_UNDERWATER, - }, - -}; - -// Functions -u8 GetFollowerObjectId(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return OBJECT_EVENTS_COUNT; - - return gSaveBlock2Ptr->follower.objId; -} - -u8 GetFollowerLocalId(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return 0; - - return gObjectEvents[gSaveBlock2Ptr->follower.objId].localId; -} - -const u8* GetFollowerScriptPointer(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return NULL; - - return gSaveBlock2Ptr->follower.script; -} - -void HideFollower(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - if (gSaveBlock2Ptr->follower.createSurfBlob == 2 || gSaveBlock2Ptr->follower.createSurfBlob == 3) - { - SetSurfBlob_BobState(gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId, 2); - DestroySprite(&gSprites[gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId]); - gObjectEvents[GetFollowerMapObjId()].fieldEffectSpriteId = 0; //Unbind - } - - gObjectEvents[GetFollowerMapObjId()].invisible = TRUE; -} - -/* -void IsFollowerStoppingRockClimb(void) -{ - gSpecialVar_Result = FALSE; - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - gSpecialVar_Result = (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_ROCK_CLIMB) == 0; -} -*/ - -void FollowMe_SetIndicatorToComeOutDoor(void) -{ - if (gSaveBlock2Ptr->follower.inProgress) - gSaveBlock2Ptr->follower.comeOutDoorStairs = 1; -} - -void FollowMe_SetIndicatorToRecreateSurfBlob(void) -{ - if (gSaveBlock2Ptr->follower.inProgress) - gSaveBlock2Ptr->follower.createSurfBlob = 2; -} - -void FollowMe_TryRemoveFollowerOnWhiteOut(void) -{ - if (gSaveBlock2Ptr->follower.inProgress) - { - if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CLEAR_ON_WHITE_OUT) - gSaveBlock2Ptr->follower.inProgress = FALSE; - else - FollowMe_WarpSetEnd(); - } -} - -static u8 GetFollowerMapObjId(void) -{ - return gSaveBlock2Ptr->follower.objId; -} - -static u16 GetFollowerSprite(void) -{ - u32 i; - - switch (gSaveBlock2Ptr->follower.currentSprite) - { - case FOLLOWER_SPRITE_INDEX_MACH_BIKE: - for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) - { - if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) - return gFollowerAlternateSprites[i].machBikeId; - } - break; - case FOLLOWER_SPRITE_INDEX_ACRO_BIKE: - for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) - { - if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) - return gFollowerAlternateSprites[i].acroBikeId; - } - break; - case FOLLOWER_SPRITE_INDEX_SURF: - for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) - { - if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) - return gFollowerAlternateSprites[i].surfId; - } - break; - case FOLLOWER_SPRITE_INDEX_UNDERWATER: - for (i = 0; i < NELEMS(gFollowerAlternateSprites); i++) - { - if (gFollowerAlternateSprites[i].normalId == gSaveBlock2Ptr->follower.graphicsId) - return gFollowerAlternateSprites[i].underwaterId; - } - break; - } - - return gSaveBlock2Ptr->follower.graphicsId; -} - -static void TryUpdateFollowerSpriteUnderwater(void) -{ - if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) - { - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_UNDERWATER); - - follower = &gObjectEvents[GetFollowerMapObjId()]; //Can change on reload sprite - follower->fieldEffectSpriteId = StartUnderwaterSurfBlobBobbing(follower->spriteId); - } -} - -//Actual Follow Me -void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) -{ - struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - u8 dir; - u8 newState; - u8 taskId; - - if (player != npc) //Only when the player moves - return; - else if (!gSaveBlock2Ptr->follower.inProgress) - return; - else if (ScriptContext2_IsEnabled() && !ignoreScriptActive) - return; //Don't follow during a script - - - // fix post-surf jump - if ((gSaveBlock2Ptr->follower.currentSprite == FOLLOWER_SPRITE_INDEX_SURF) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) && follower->fieldEffectSpriteId == 0) - { - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); - gSaveBlock2Ptr->follower.createSurfBlob = 0; - } - - //Check if state would cause hidden follower to reappear - if (IsStateMovement(state) && gSaveBlock2Ptr->follower.warpEnd) - { - gSaveBlock2Ptr->follower.warpEnd = 0; - - if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) - { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - else - { - gPlayerAvatar.preventStep = TRUE; - taskId = CreateTask(Task_FollowerOutOfDoor, 1); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[2] = follower->currentCoords.x; - gTasks[taskId].data[3] = follower->currentCoords.y; - goto RESET; - } - } - else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) - { - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - } - - // This makes sure the follower is still invisible after diving or surfacing or exiting a door while player is on a bike - if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) - follower->invisible = FALSE; - MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); - ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding - - /*if (gSaveBlock2Ptr->follower.createSurfBlob == 2) //Recreate surf blob - { - SetUpSurfBlobFieldEffect(follower); - follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); - SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); - } - else - { - TryUpdateFollowerSpriteUnderwater(); - }*/ - } - - dir = DetermineFollowerDirection(player, follower); - - if (dir == DIR_NONE) - goto RESET; - - newState = DetermineFollowerState(follower, state, dir); - if (newState == MOVEMENT_INVALID) - goto RESET; - - /*if (gSaveBlock2Ptr->follower.createSurfBlob == 1) //Get on Surf Blob - { - gSaveBlock2Ptr->follower.createSurfBlob = 2; - gPlayerAvatar.preventStep = TRUE; //Wait for finish - SetSurfJump(); - goto RESET; - } - else if (gSaveBlock2Ptr->follower.createSurfBlob == 3) //Get off Surf Blob - { - gSaveBlock2Ptr->follower.createSurfBlob = 0; - gPlayerAvatar.preventStep = TRUE; //Wait for finish - SetSurfDismount(); - goto RESET; - }*/ - - ObjectEventClearHeldMovementIfActive(follower); - ObjectEventSetHeldMovement(follower, newState); - PlayerLogCoordinates(player); - - switch (newState) - { - case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: - if(follower->invisible == FALSE) - { - CreateTask(Task_ReallowPlayerMovement, 1); //Synchronize movements on stairs and ledges - gPlayerAvatar.preventStep = TRUE; //allow follower to catch up - } - } - -RESET: - ObjectEventClearHeldMovementIfFinished(follower); -} - -static void Task_ReallowPlayerMovement(u8 taskId) -{ - bool8 animStatus = ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetFollowerMapObjId()]); - if (animStatus == 0 && gObjectEvents[GetFollowerMapObjId()].movementActionId != MOVEMENT_ACTION_FOLLOWING_POKEMON) - { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) - && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running - return; - } - - gPlayerAvatar.preventStep = FALSE; - DestroyTask(taskId); -} - -static u8 DetermineFollowerDirection(struct ObjectEvent* player, struct ObjectEvent* follower) -{ - //Move the follower towards the player - s8 delta_x = follower->currentCoords.x - player->currentCoords.x; - s8 delta_y = follower->currentCoords.y - player->currentCoords.y; - - if (delta_x < 0) - return DIR_EAST; - else if (delta_x > 0) - return DIR_WEST; - - if (delta_y < 0) - return DIR_SOUTH; - else if (delta_y > 0) - return DIR_NORTH; - - return DIR_NONE; -} - -static void PlayerLogCoordinates(struct ObjectEvent* player) -{ - gSaveBlock2Ptr->follower.log.x = player->currentCoords.x; - gSaveBlock2Ptr->follower.log.y = player->currentCoords.y; -} - -#define RETURN_STATE(state, dir) return newState == MOVEMENT_INVALID ? state + (dir - 1) : ReturnFollowerDelayedState(dir - 1); -static u8 DetermineFollowerState(struct ObjectEvent* follower, u8 state, u8 direction) -{ - u8 newState = MOVEMENT_INVALID; - #if SIDEWAYS_STAIRS_IMPLEMENTED == TRUE - u8 collision = COLLISION_NONE; - s16 followerX = follower->currentCoords.x; - s16 followerY = follower->currentCoords.y; - u8 currentBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); - u8 nextBehavior; - - MoveCoords(direction, &followerX, &followerY); - nextBehavior = MapGridGetMetatileBehaviorAt(followerX, followerY); - #endif - - if (IsStateMovement(state) && gSaveBlock2Ptr->follower.delayedState) - newState = gSaveBlock2Ptr->follower.delayedState + direction; - - //Clear ice tile stuff - follower->disableAnim = FALSE; //follower->field1 &= 0xFB; - - #if SIDEWAYS_STAIRS_IMPLEMENTED == TRUE - // clear overwrite movement - follower->directionOverwrite = DIR_NONE; - - //sideways stairs checks - collision = GetSidewaysStairsCollision(follower, direction, currentBehavior, nextBehavior, collision); - switch (collision) - { - case COLLISION_SIDEWAYS_STAIRS_TO_LEFT: - follower->directionOverwrite = GetLeftSideStairsDirection(direction); - break; - case COLLISION_SIDEWAYS_STAIRS_TO_RIGHT: - follower->directionOverwrite = GetRightSideStairsDirection(direction); - break; - } - #endif - - switch (state) - { - case MOVEMENT_ACTION_WALK_SLOW_DOWN ... MOVEMENT_ACTION_WALK_SLOW_RIGHT: - // Slow walk - RETURN_STATE(MOVEMENT_ACTION_WALK_SLOW_DOWN, direction); - - case MOVEMENT_ACTION_WALK_NORMAL_DOWN ... MOVEMENT_ACTION_WALK_NORMAL_RIGHT: - // normal walk - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - - case MOVEMENT_ACTION_JUMP_2_DOWN ... MOVEMENT_ACTION_JUMP_2_RIGHT: - // If the follower is invisible due to bike riding, just walk - if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) - { - // Ledge jump - if (((newState - direction) >= MOVEMENT_ACTION_JUMP_2_DOWN && (newState - direction) <= MOVEMENT_ACTION_JUMP_2_RIGHT) - || ((newState - direction) >= 0x84 && (newState - direction) <= 0x87)) //Previously jumped - { - newState = MOVEMENT_INVALID; - RETURN_STATE(MOVEMENT_ACTION_JUMP_2_DOWN, direction); //Jump right away - } - - gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_2_DOWN; - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - } - else - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - - case MOVEMENT_ACTION_WALK_FAST_DOWN ... MOVEMENT_ACTION_WALK_FAST_RIGHT: - // Handle player on waterfall - if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && (state == MOVEMENT_ACTION_WALK_FAST_UP)) - return MOVEMENT_INVALID; - - //Handle ice tile (some walking animation) - Set a bit to freeze the follower's animation - if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) - follower->disableAnim = TRUE; - - RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); - - case MOVEMENT_ACTION_WALK_FASTER_DOWN ... MOVEMENT_ACTION_WALK_FASTER_RIGHT: - // mach bike - if (MetatileBehavior_IsIce(follower->currentMetatileBehavior) || MetatileBehavior_IsTrickHouseSlipperyFloor(follower->currentMetatileBehavior)) - follower->disableAnim = TRUE; - - RETURN_STATE(MOVEMENT_ACTION_WALK_FASTER_DOWN, direction); - - // acro bike - case MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN ... MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT: - // Handle player on waterfall - if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && IsPlayerSurfingNorth()) - //if (PlayerIsUnderWaterfall(&gObjectEvents[gPlayerAvatar.objectEventId]) && (state == MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN)) - return MOVEMENT_INVALID; - - RETURN_STATE(MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, direction); //regular movement - - - case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT: - if(follower->invisible == FALSE) - { - switch(state) - { - case MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_FACE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_FACE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_HOP_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_HOP_DOWN, direction); - case MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_JUMP_DOWN, direction); - case MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_POP_WHEELIE_MOVE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_DOWN, direction); - case MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN ... MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, direction); - } - } - else - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - - // Sliding - case MOVEMENT_ACTION_SLIDE_DOWN ... MOVEMENT_ACTION_SLIDE_RIGHT: - RETURN_STATE(MOVEMENT_ACTION_SLIDE_DOWN, direction); - case MOVEMENT_ACTION_PLAYER_RUN_DOWN ... MOVEMENT_ACTION_PLAYER_RUN_RIGHT: - //Running frames - if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_HAS_RUNNING_FRAMES) - RETURN_STATE(MOVEMENT_ACTION_PLAYER_RUN_DOWN, direction); - - RETURN_STATE(MOVEMENT_ACTION_WALK_FAST_DOWN, direction); - case MOVEMENT_ACTION_JUMP_SPECIAL_DOWN ... MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT: - gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_SPECIAL_DOWN; - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - case MOVEMENT_ACTION_JUMP_DOWN ... MOVEMENT_ACTION_JUMP_RIGHT: - if(!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) - gSaveBlock2Ptr->follower.delayedState = MOVEMENT_ACTION_JUMP_DOWN; - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - - // run slow - #ifdef MOVEMENT_ACTION_RUN_DOWN_SLOW - case MOVEMENT_ACTION_RUN_DOWN_SLOW ... MOVEMENT_ACTION_RUN_RIGHT_SLOW: - if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_HAS_RUNNING_FRAMES) - RETURN_STATE(MOVEMENT_ACTION_RUN_DOWN_SLOW, direction); - - RETURN_STATE(MOVEMENT_ACTION_WALK_NORMAL_DOWN, direction); - #endif - - default: - return MOVEMENT_INVALID; - } - - return newState; -} - -static bool8 IsStateMovement(u8 state) -{ - switch (state) - { - case MOVEMENT_ACTION_FACE_DOWN: - case MOVEMENT_ACTION_FACE_UP: - case MOVEMENT_ACTION_FACE_LEFT: - case MOVEMENT_ACTION_FACE_RIGHT: - //case MOVEMENT_ACTION_FACE_DOWN_FAST: - //case MOVEMENT_ACTION_FACE_UP_FAST: - //case MOVEMENT_ACTION_FACE_LEFT_FAST: - //case MOVEMENT_ACTION_FACE_RIGHT_FAST: - case MOVEMENT_ACTION_DELAY_1: - case MOVEMENT_ACTION_DELAY_2: - case MOVEMENT_ACTION_DELAY_4: - case MOVEMENT_ACTION_DELAY_8: - case MOVEMENT_ACTION_DELAY_16: - case MOVEMENT_ACTION_FACE_PLAYER: - case MOVEMENT_ACTION_FACE_AWAY_PLAYER: - case MOVEMENT_ACTION_LOCK_FACING_DIRECTION: - case MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION: - case MOVEMENT_ACTION_SET_INVISIBLE: - case MOVEMENT_ACTION_SET_VISIBLE: - case MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK: - case MOVEMENT_ACTION_EMOTE_QUESTION_MARK: - case MOVEMENT_ACTION_EMOTE_HEART: - //case MOVEMENT_ACTION_EMOTE_CROSS: - //case MOVEMENT_ACTION_EMOTE_DOUBLE_EXCLAMATION_MARK: - //case MOVEMENT_ACTION_EMOTE_HAPPY: - case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN: - case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP: - case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT: - case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT: - case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN: - case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP: - case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT: - case MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT: - case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN: - case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_UP: - case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_LEFT: - case MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_RIGHT: - case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN: - case MOVEMENT_ACTION_JUMP_IN_PLACE_UP: - case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT: - case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT: - case MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP: - case MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN: - case MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT: - case MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT: - return FALSE; - } - - return TRUE; -} - -static u8 ReturnFollowerDelayedState(u8 direction) -{ - u8 newState = gSaveBlock2Ptr->follower.delayedState; - gSaveBlock2Ptr->follower.delayedState = 0; - - /* - #ifdef MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT - switch (newState) - { - case MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT ... MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_DOWN_RIGHT: - case MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_UP_LEFT_RUNNING ... MOVEMENT_ACTION_WALK_STAIRS_DIAGONAL_DOWN_RIGHT_RUNNING: - case MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP_LEFT ... MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN_RIGHT: - return newState; //Each its own movement, so don't modify direction - } - #endif - */ - - return newState + direction; -} - -#define LEDGE_FRAMES_MULTIPLIER 2 - -//extern void (**stepspeeds[5])(struct Sprite*, u8); -//extern const u16 stepspeed_seq_length[5]; -void FollowMe_Ledges(struct ObjectEvent* npc, struct Sprite* sprite, u16* ledgeFramesTbl) -{ - u8 speed; - u16 frameCount; - u8 currentFrame; - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - if (follower == npc) - speed = gPlayerAvatar.runningState ? 3 : 1; - else - speed = 0; - - //Calculate the frames for the jump - frameCount = GetMiniStepCount(speed) * LEDGE_FRAMES_MULTIPLIER; //in event_object_movement.c - ledgeFramesTbl[sprite->data[4]] = frameCount; - - //Call the step shifter - currentFrame = sprite->data[6] / LEDGE_FRAMES_MULTIPLIER; - //stepspeeds[speed][currentFrame](sprite, sprite->data[3]); - RunMiniStep(sprite, speed, currentFrame); //in event_object_movement.c -} - -bool8 FollowMe_IsCollisionExempt(struct ObjectEvent* obstacle, struct ObjectEvent* collider) -{ - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; - - if (!gSaveBlock2Ptr->follower.inProgress) - return FALSE; - - if (obstacle == follower && collider == player) - return TRUE; - - return FALSE; -} - -/*void FollowMe_FollowerToWater(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - //Prepare for making the follower do the jump and spawn the surf head - //right in front of the follower's location. - FollowMe(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_JUMP_DOWN, TRUE); - gSaveBlock2Ptr->follower.createSurfBlob = 1; -}*/ - -/*void FollowMe_BindToSurbBlobOnReloadScreen(void) -{ - struct ObjectEvent* follower; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - follower = &gObjectEvents[GetFollowerMapObjId()]; - TryUpdateFollowerSpriteUnderwater(); - - if (gSaveBlock2Ptr->follower.createSurfBlob != 2 && gSaveBlock2Ptr->follower.createSurfBlob != 3) - return; - - //Spawn surfhead under follower - SetUpSurfBlobFieldEffect(follower); - follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); - SetSurfBlob_BobState(follower->fieldEffectSpriteId, 1); -}*/ - -/*static void SetSurfJump(void) -{ - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - u8 direction; - u8 jumpState; - - //Reset NPC movement bits - ObjectEventClearHeldMovement(follower); - - //Jump animation according to direction - direction = DetermineFollowerDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); - jumpState = GetJumpMovementAction(direction); - SetUpSurfBlobFieldEffect(follower); - - //Adjust surf head spawn location infront of follower - switch (direction) - { - case DIR_SOUTH: - gFieldEffectArguments[1]++; //effect_y - break; - case DIR_NORTH: - gFieldEffectArguments[1]--; - break; - case DIR_WEST: - gFieldEffectArguments[0]--; //effect_x - break; - default: //DIR_EAST - gFieldEffectArguments[0]++; - }; - - //Execute, store sprite ID in fieldEffectSpriteId and bind surf blob - follower->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB); - CreateTask(Task_BindSurfBlobToFollower, 0x1); - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_SURF); - - follower = &gObjectEvents[GetFollowerMapObjId()]; - ObjectEventSetHeldMovement(follower, jumpState); -}*/ - -/*static void Task_BindSurfBlobToFollower(u8 taskId) -{ - struct ObjectEvent* npc = &gObjectEvents[GetFollowerMapObjId()]; - bool8 animStatus = ObjectEventClearHeldMovementIfFinished(npc); //Wait jump animation - if (animStatus == 0) - return; - - //Bind objs - SetSurfBlob_BobState(npc->fieldEffectSpriteId, 0x1); - UnfreezeObjectEvents(); - DestroyTask(taskId); - gPlayerAvatar.preventStep = FALSE; //Player can move again - return; -}*/ - -/*static void SetUpSurfBlobFieldEffect(struct ObjectEvent* npc) -{ - //Set up gFieldEffectArguments for execution - gFieldEffectArguments[0] = npc->currentCoords.x; //effect_x - gFieldEffectArguments[1] = npc->currentCoords.y; //effect_y - gFieldEffectArguments[2] = gSaveBlock2Ptr->follower.objId; //objId -}*/ - -/*void PrepareFollowerDismountSurf(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - FollowMe(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_WALK_NORMAL_DOWN, TRUE); - gSaveBlock2Ptr->follower.createSurfBlob = 3; -}*/ - -/*static void SetSurfDismount(void) -{ - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - u8 direction; - u8 jumpState; - u8 task; - - ObjectEventClearHeldMovement(follower); - - //Jump animation according to direction - direction = DetermineFollowerDirection(&gObjectEvents[gPlayerAvatar.objectEventId], follower); - jumpState = GetJumpMovementAction(direction); - - //Unbind and destroy Surf Blob - task = CreateTask(Task_FinishSurfDismount, 1); - gTasks[task].data[0] = follower->fieldEffectSpriteId; - SetSurfBlob_BobState(follower->fieldEffectSpriteId, 2); - follower->fieldEffectSpriteId = 0; //Unbind - FollowMe_HandleSprite(); - - follower = &gObjectEvents[GetFollowerMapObjId()]; //Can change after sprite reload - ObjectEventSetHeldMovement(follower, jumpState); -}*/ - -/*static void Task_FinishSurfDismount(u8 taskId) -{ - struct ObjectEvent* npc = &gObjectEvents[GetFollowerMapObjId()]; - bool8 animStatus = ObjectEventClearHeldMovementIfFinished(npc); //Wait animation - - if (animStatus == 0) - { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId])) - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running - - return; - } - - DestroySprite(&gSprites[gTasks[taskId].data[0]]); - UnfreezeObjectEvents(); - DestroyTask(taskId); - gPlayerAvatar.preventStep = FALSE; -}*/ - -void Task_DoDoorWarp(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - s16 *x = &task->data[2]; - s16 *y = &task->data[3]; - u8 playerObjId = gPlayerAvatar.objectEventId; - u8 followerObjId = GetFollowerObjectId(); - - switch (task->data[0]) - { - case 0: - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Stop running - - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; //Just in case came out and when right back in - FreezeObjectEvents(); - PlayerGetDestCoords(x, y); - PlaySE(GetDoorSoundEffect(*x, *y - 1)); - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); - task->data[0] = 1; - break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - ObjectEventClearHeldMovementIfActive(&gObjectEvents[playerObjId]); - ObjectEventSetHeldMovement(&gObjectEvents[playerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); - - if (gSaveBlock2Ptr->follower.inProgress && !gObjectEvents[followerObjId].invisible) - { - u8 newState = DetermineFollowerState(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP, - DetermineFollowerDirection(&gObjectEvents[playerObjId], &gObjectEvents[followerObjId])); - ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); - ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], newState); - } - - task->data[0] = 2; - } - break; - case 2: - if (IsPlayerStandingStill()) - { - if (!gSaveBlock2Ptr->follower.inProgress || gObjectEvents[followerObjId].invisible) //Don't close door on follower - task->data[1] = FieldAnimateDoorClose(*x, *y - 1); - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[playerObjId]); - SetPlayerVisibility(0); - task->data[0] = 3; - } - break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - task->data[0] = 4; - } - break; - case 4: - if (gSaveBlock2Ptr->follower.inProgress) - { - ObjectEventClearHeldMovementIfActive(&gObjectEvents[followerObjId]); - ObjectEventSetHeldMovement(&gObjectEvents[followerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); - } - - TryFadeOutOldMapMusic(); - WarpFadeOutScreen(); - PlayRainStoppingSoundEffect(); - task->data[0] = 0; - task->func = Task_WarpAndLoadMap; - break; - case 5: - TryFadeOutOldMapMusic(); - PlayRainStoppingSoundEffect(); - task->data[0] = 0; - task->func = Task_WarpAndLoadMap; - break; - } -} - -static u8 GetPlayerFaceToDoorDirection(struct ObjectEvent* player, struct ObjectEvent* follower) -{ - s16 delta_x = player->currentCoords.x - follower->currentCoords.x; - - if (delta_x < 0) - return DIR_EAST; - else if (delta_x > 0) - return DIR_WEST; - - return DIR_NORTH; -} - -static void Task_FollowerOutOfDoor(u8 taskId) -{ - struct ObjectEvent *follower = &gObjectEvents[GetFollowerMapObjId()]; - struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct Task *task = &gTasks[taskId]; - s16 *x = &task->data[2]; - s16 *y = &task->data[3]; - - //if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(player)) - //SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running - - if (ObjectEventClearHeldMovementIfFinished(player)) - ObjectEventTurn(player, GetPlayerFaceToDoorDirection(player, follower)); //The player should face towards the follow as the exit the door - - switch (task->data[0]) - { - case 0: - FreezeObjectEvents(); - task->data[1] = FieldAnimateDoorOpen(follower->currentCoords.x, follower->currentCoords.y); - if (task->data[1] != -1) - PlaySE(GetDoorSoundEffect(*x, *y)); //only play SE for animating doors - - task->data[0] = 1; - break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) //if Door isn't still opening - { - follower->invisible = FALSE; - ObjectEventTurn(follower, DIR_SOUTH); //The follower should be facing down when it comes out the door - follower->singleMovementActive = FALSE; - follower->heldMovementActive = FALSE; - ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN); //follower step down - task->data[0] = 2; - } - break; - case 2: - if (/*ObjectEventClearHeldMovementIfFinished(follower)*/follower->movementActionId == 0x9E) - { - task->data[1] = FieldAnimateDoorClose(*x, *y); - task->data[0] = 3; - } - break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) //Door is closed - { - UnfreezeObjectEvents(); - task->data[0] = 4; - } - break; - case 4: - FollowMe_HandleSprite(); - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - gPlayerAvatar.preventStep = FALSE; //Player can move again - DestroyTask(taskId); - break; - } -} - -void StairsMoveFollower(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - if (!FuncIsActiveTask(Task_FollowerHandleIndoorStairs) && gSaveBlock2Ptr->follower.comeOutDoorStairs != 2) - CreateTask(Task_FollowerHandleIndoorStairs, 1); -} - -static void Task_FollowerHandleIndoorStairs(u8 taskId) -{ - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct Task *task = &gTasks[taskId]; - - switch (task->data[0]) - { - case 0: - gSaveBlock2Ptr->follower.comeOutDoorStairs = 2; //So the task doesn't get created more than once - ObjectEventClearHeldMovementIfActive(follower); - ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, DetermineFollowerDirection(player, follower))); - task->data[0]++; - break; - case 1: - if (ObjectEventClearHeldMovementIfFinished(follower)) - { - ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, player->movementDirection)); - DestroyTask(taskId); - } - break; - } -} - -void EscalatorMoveFollower(u8 movementType) -{ - u8 taskId; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - taskId = CreateTask(Task_FollowerHandleEscalator, 1); - gTasks[taskId].data[1] = movementType; -} - -static void Task_FollowerHandleEscalator(u8 taskId) -{ - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; - - ObjectEventClearHeldMovementIfActive(follower); - ObjectEventSetHeldMovement(follower, DetermineFollowerState(follower, MOVEMENT_ACTION_WALK_NORMAL_DOWN, DetermineFollowerDirection(player, follower))); - DestroyTask(taskId); -} - -void EscalatorMoveFollowerFinish(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - CreateTask(Task_FollowerHandleEscalatorFinish, 1); -} - -static void Task_FollowerHandleEscalatorFinish(u8 taskId) -{ - s16 x, y; - struct ObjectEvent* follower = &gObjectEvents[GetFollowerMapObjId()]; - struct ObjectEvent* player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct Sprite* sprite = &gSprites[follower->spriteId]; - struct Task *task = &gTasks[taskId]; - - switch (task->data[0]) - { - case 0: - MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); - PlayerGetDestCoords(&x, &y); - task->data[2] = MapGridGetMetatileBehaviorAt(x, y); - task->data[7] = 0; - task->data[0]++; - break; - case 1: - if (task->data[7]++ < 0x20) //Wait half a second before revealing the follower - break; - - task->data[0]++; - task->data[1] = 16; - CalculateFollowerEscalatorTrajectoryUp(task); - gSaveBlock2Ptr->follower.warpEnd = 0; - gPlayerAvatar.preventStep = TRUE; - ObjectEventSetHeldMovement(follower, GetFaceDirectionMovementAction(DIR_EAST)); - if (task->data[2] == 0x6b) - task->data[0] = 4; - break; - case 2: - follower->invisible = FALSE; - CalculateFollowerEscalatorTrajectoryDown(task); - task->data[0]++; - break; - case 3: - CalculateFollowerEscalatorTrajectoryDown(task); - task->data[2]++; - if (task->data[2] & 1) - { - task->data[1]--; - } - - if (task->data[1] == 0) - { - sprite->x2 = 0; - sprite->y2 = 0; - task->data[0] = 6; - } - break; - case 4: - follower->invisible = FALSE; - CalculateFollowerEscalatorTrajectoryUp(task); - task->data[0]++; - break; - case 5: - CalculateFollowerEscalatorTrajectoryUp(task); - task->data[2]++; - if (task->data[2] & 1) - { - task->data[1]--; - } - - if (task->data[1] == 0) - { - sprite->x2 = 0; - sprite->y2 = 0; - task->data[0]++; - } - break; - case 6: - if (ObjectEventClearHeldMovementIfFinished(follower)) - { - gPlayerAvatar.preventStep = FALSE; - DestroyTask(taskId); - } - } -} - -static void CalculateFollowerEscalatorTrajectoryDown(struct Task *task) -{ - struct Sprite* sprite = &gSprites[gObjectEvents[GetFollowerMapObjId()].spriteId]; - - sprite->x2 = Cos(0x84, task->data[1]); - sprite->y2 = Sin(0x94, task->data[1]); -} - -static void CalculateFollowerEscalatorTrajectoryUp(struct Task *task) -{ - struct Sprite* sprite = &gSprites[gObjectEvents[GetFollowerMapObjId()].spriteId]; - - sprite->x2 = Cos(0x7c, task->data[1]); - sprite->y2 = Sin(0x76, task->data[1]); -} - -bool8 FollowerCanBike(void) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return TRUE; - else if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) - return TRUE; - else - return FALSE; -} - -void FollowMe_HandleBike(void) -{ - if (gSaveBlock2Ptr->follower.currentSprite == FOLLOWER_SPRITE_INDEX_SURF) //Follower is surfing - return; //Sprite will automatically be adjusted when they finish surfing - - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE && FollowerCanBike() && gSaveBlock2Ptr->follower.comeOutDoorStairs != 1) //Coming out door - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_MACH_BIKE); //Mach Bike on - else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE && FollowerCanBike() && gSaveBlock2Ptr->follower.comeOutDoorStairs != 1) //Coming out door - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_ACRO_BIKE); //Acro Bike on - else - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); -} - -void FollowMe_HandleSprite(void) -{ - if (gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) - { - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_MACH_BIKE); - else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_ACRO_BIKE); - } - else if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) - { - TryUpdateFollowerSpriteUnderwater(); - } - else - { - SetFollowerSprite(FOLLOWER_SPRITE_INDEX_NORMAL); - } -} - -void SetFollowerSprite(u8 spriteIndex) -{ - u8 oldSpriteId; - u8 newSpriteId; - u16 newGraphicsId; - struct ObjectEventTemplate clone; - struct ObjectEvent backupFollower; - struct ObjectEvent *follower; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - if (gSaveBlock2Ptr->follower.currentSprite == spriteIndex && gObjectEvents[GetFollowerMapObjId()].invisible == FALSE) - return; - - //Save sprite - follower = &gObjectEvents[GetFollowerMapObjId()]; - gSaveBlock2Ptr->follower.currentSprite = spriteIndex; - oldSpriteId = follower->spriteId; - newGraphicsId = GetFollowerSprite(); - - //Reload the entire event object. - //It would usually be enough just to change the sprite Id, but if the original - //sprite and the new sprite have different palettes, the palette would need to - //be reloaded. - backupFollower = *follower; - backupFollower.graphicsId = newGraphicsId; - //backupFollower.graphicsIdUpperByte = newGraphicsId >> 8; - DestroySprite(&gSprites[oldSpriteId]); - RemoveObjectEvent(&gObjectEvents[GetFollowerMapObjId()]); - - clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); - clone.graphicsId = newGraphicsId; - //clone.graphicsIdUpperByte = newGraphicsId >> 8; - gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); - - follower = &gObjectEvents[GetFollowerMapObjId()]; - newSpriteId = follower->spriteId; - *follower = backupFollower; - follower->spriteId = newSpriteId; - MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); - ObjectEventTurn(follower, follower->facingDirection); -} - -void FollowMe_WarpSetEnd(void) -{ - struct ObjectEvent *player; - struct ObjectEvent *follower; - u8 toY; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - player = &gObjectEvents[gPlayerAvatar.objectEventId]; - follower = &gObjectEvents[GetFollowerMapObjId()]; - - gSaveBlock2Ptr->follower.warpEnd = 1; - PlayerLogCoordinates(player); - - toY = gSaveBlock2Ptr->follower.comeOutDoorStairs == 1 ? (player->currentCoords.y - 1) : player->currentCoords.y; - MoveObjectEventToMapCoords(follower, player->currentCoords.x, toY); - - follower->facingDirection = player->facingDirection; - follower->movementDirection = player->movementDirection; -} - -void CreateFollowerAvatar(void) -{ - struct ObjectEvent* player; - struct ObjectEventTemplate clone; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - player = &gObjectEvents[gPlayerAvatar.objectEventId]; - clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); - - clone.graphicsId = GetFollowerSprite(); - //clone.graphicsIdUpperByte = GetFollowerSprite() >> 8; - clone.x = player->currentCoords.x - 7; - clone.y = player->currentCoords.y - 7; - clone.movementType = 0; //Doesn't get to move on its own - - switch (GetPlayerFacingDirection()) - { - case DIR_NORTH: - clone.movementType = MOVEMENT_TYPE_FACE_UP; - break; - case DIR_WEST: - clone.movementType = MOVEMENT_TYPE_FACE_LEFT; - break; - case DIR_EAST: - clone.movementType = MOVEMENT_TYPE_FACE_RIGHT; - break; - } - - // Create NPC and store ID - gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group, clone.x, clone.y); - if (gSaveBlock2Ptr->follower.objId == OBJECT_EVENTS_COUNT) - gSaveBlock2Ptr->follower.inProgress = FALSE; //Cancel the following because couldn't load sprite - - if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) - gSaveBlock2Ptr->follower.createSurfBlob = 0; - - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = TRUE; -} - -static void TurnNPCIntoFollower(u8 localId, u16 followerFlags) -{ - struct ObjectEvent* follower; - u8 eventObjId; - const u8 *script; - u16 flag; - - if (gSaveBlock2Ptr->follower.inProgress) - return; //Only 1 NPC following at a time - - for (eventObjId = 0; eventObjId < OBJECT_EVENTS_COUNT; eventObjId++) //For each NPC on the map - { - if (!gObjectEvents[eventObjId].active || gObjectEvents[eventObjId].isPlayer) - continue; - - if (gObjectEvents[eventObjId].localId == localId) - { - follower = &gObjectEvents[eventObjId]; - follower->movementType = MOVEMENT_TYPE_NONE; //Doesn't get to move on its own anymore - gSprites[follower->spriteId].callback = MovementType_None; //MovementType_None - SetObjEventTemplateMovementType(localId, 0); - if (followerFlags & FOLLOWER_FLAG_CUSTOM_FOLLOW_SCRIPT) - script = (const u8 *)ReadWord(0); - else - script = GetObjectEventScriptPointerByObjectEventId(eventObjId); - - flag = GetObjectEventTemplateByLocalIdAndMap(follower->localId, follower->mapNum, follower->mapGroup)->flagId; - gSaveBlock2Ptr->follower.inProgress = TRUE; - gSaveBlock2Ptr->follower.objId = eventObjId; - gSaveBlock2Ptr->follower.graphicsId = follower->graphicsId; - gSaveBlock2Ptr->follower.map.id = gObjectEvents[eventObjId].localId; - gSaveBlock2Ptr->follower.map.number = gSaveBlock1Ptr->location.mapNum; - gSaveBlock2Ptr->follower.map.group = gSaveBlock1Ptr->location.mapGroup; - gSaveBlock2Ptr->follower.script = script; - gSaveBlock2Ptr->follower.flag = flag; - gSaveBlock2Ptr->follower.flags = followerFlags; - gSaveBlock2Ptr->follower.createSurfBlob = 0; - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - - if (!(gSaveBlock2Ptr->follower.flags & FOLLOWER_FLAG_CAN_BIKE) //Follower can't bike - && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) //Player on bike - SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Dismmount Bike - } - } -} - -bool8 CheckFollowerFlag(u16 flag) -{ - if (!gSaveBlock2Ptr->follower.inProgress) - return TRUE; - - if (gSaveBlock2Ptr->follower.flags & flag) - return TRUE; - - return FALSE; -} - -static u8 GetPlayerMapObjId(void) -{ - return gPlayerAvatar.objectEventId; -} - -enum -{ - GoDown, - GoUp, - GoLeft, - GoRight -}; -void FollowerPositionFix(u8 offset) -{ - u8 playerObjId = GetPlayerMapObjId(); - u8 followerObjid = gSaveBlock2Ptr->follower.objId; - u16 playerX = gObjectEvents[playerObjId].currentCoords.x; - u16 playerY = gObjectEvents[playerObjId].currentCoords.y; - u16 npcX = gObjectEvents[followerObjid].currentCoords.x; - u16 npcY = gObjectEvents[followerObjid].currentCoords.y; - - gSpecialVar_Result = 0xFFFF; - - if (!gSaveBlock2Ptr->follower.inProgress) - return; - - if (playerX == npcX) - { - if (playerY > npcY) - { - if (playerY != npcY + offset) //Player and follower are not 1 tile apart - { - if (gSpecialVar_0x8000 == 0) - gSpecialVar_Result = GoDown; - else - gObjectEvents[followerObjid].currentCoords.y = playerY - offset; - } - } - else // Player Y <= npcY - { - if (playerY != npcY - offset) //Player and follower are not 1 tile apart - { - if (gSpecialVar_0x8000 == 0) - gSpecialVar_Result = GoUp; - else - gObjectEvents[followerObjid].currentCoords.y = playerY + offset; - } - } - } - else //playerY == npcY - { - if (playerX > npcX) - { - if (playerX != npcX + offset) //Player and follower are not 1 tile apart - { - if (gSpecialVar_0x8000 == 0) - gSpecialVar_Result = GoRight; - else - gObjectEvents[followerObjid].currentCoords.x = playerX - offset; - } - } - else // Player X <= npcX - { - if (playerX != npcX - offset) //Player and follower are not 1 tile apart - { - if (gSpecialVar_0x8000 == 0) - gSpecialVar_Result = GoLeft; - else - gObjectEvents[followerObjid].currentCoords.x = playerX + offset; - } - } - } -} - -void FollowerTrainerSightingPositionFix(void) -{ - FollowerPositionFix(1); -} - -void FollowerIntoPlayer(void) -{ - FollowerPositionFix(0); -} - -bool8 PlayerHasFollower(void) -{ - return gSaveBlock2Ptr->follower.inProgress; -} - -bool8 IsPlayerOnFoot(void) -{ - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ON_FOOT) - return TRUE; - else - return FALSE; -} - -bool8 FollowerComingThroughDoor(void) -{ - if (!PlayerHasFollower()) - return FALSE; - - if (gSaveBlock2Ptr->follower.comeOutDoorStairs) - return TRUE; - - return FALSE; -} - -//////////////////SCRIPTING//////////////////// -//@Details: Sets up the follow me feature. -//@Input: local id - NPC to start following player. -// flags - Follower flags. -void SetUpFollowerSprite(u8 localId, u16 flags) -{ - TurnNPCIntoFollower(localId, flags); -} - -//@Details: Ends the follow me feature. -void DestroyFollower(void) -{ - if (gSaveBlock2Ptr->follower.inProgress) - { - RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - FlagSet(gSaveBlock2Ptr->follower.flag); - gSaveBlock2Ptr->follower.inProgress = FALSE; - } -} - -//@Details: Faces the player and the follower sprite towards each other. -void PlayerFaceFollowerSprite(void) -{ - if (gSaveBlock2Ptr->follower.inProgress) - { - u8 playerDirection, followerDirection; - struct ObjectEvent* player, *follower; - - player = &gObjectEvents[gPlayerAvatar.objectEventId]; - follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - playerDirection = DetermineFollowerDirection(player, follower); - followerDirection = playerDirection; - - //Flip direction - switch (playerDirection) - { - case DIR_NORTH: - playerDirection = DIR_SOUTH; - followerDirection = DIR_NORTH; - break; - case DIR_SOUTH: - playerDirection = DIR_NORTH; - followerDirection = DIR_SOUTH; - break; - case DIR_WEST: - playerDirection = DIR_EAST; - followerDirection = DIR_WEST; - break; - case DIR_EAST: - playerDirection = DIR_WEST; - followerDirection = DIR_EAST; - break; - } - - ObjectEventTurn(player, playerDirection); - ObjectEventTurn(follower, followerDirection); - } -} - -//@Details: Checks if the player is being followed. -//@Returns: LastResult: 0 if the Player isn't being followed. 1 otherwise. -void CheckPlayerHasFollower(void) -{ - gSpecialVar_Result = gSaveBlock2Ptr->follower.inProgress; -} - -void ShowFollower(void) -{ - gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; -} - diff --git a/src/new_game.c b/src/new_game.c index f22ca7940..077b86775 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -203,7 +203,6 @@ void NewGameInitData(void) WipeTrainerNameRecords(); ResetTrainerHillResults(); ResetContestLinkResults(); - memset(&gSaveBlock2Ptr->follower, 0, sizeof(gSaveBlock2Ptr->follower)); } static void ResetMiniGamesRecords(void) diff --git a/src/overworld.c b/src/overworld.c index 0086e039d..a2b6a6433 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -49,7 +49,6 @@ #include "script_pokemon_util.h" #include "secret_base.h" #include "sound.h" -#include "sprite.h" #include "start_menu.h" #include "task.h" #include "tileset_anims.h" @@ -60,7 +59,6 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" -#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -68,9 +66,6 @@ #include "constants/songs.h" #include "constants/trainer_hill.h" #include "constants/weather.h" -#include "constants/event_object_movement.h" -#include "constants/event_objects.h" -#include "constants/items.h" struct CableClubPlayer { @@ -208,513 +203,6 @@ EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; -static const u8 FollowerSparkleCoords[][6] = -{ - {15, 9, 15, 9, 11, 9}, // Bulbasaur - {15, 11, 15, 9, 10, 9}, // Ivysaur - {16, 13, 16, 12, 13, 13}, // Venusaur - {16, 9, 16, 10, 11, 9}, // Charmander - {15, 12, 15, 10, 10, 11}, // Charmeleon - {16, 13, 16, 13, 16, 13}, // Charizard - {15, 9, 15, 9, 7, 9}, // Squirtle - {16, 10, 15, 9, 9, 11}, // Wartortle - {16, 13, 16, 13, 14, 12}, // Blastoise - {15, 10, 15, 9, 9, 10}, // Caterpie - {16, 10, 16, 11, 8, 10}, // Metapod - {16, 13, 16, 13, 12, 12}, // Butterfree - {16, 10, 16, 10, 8, 9}, // Weedle - {15, 10, 15, 10, 8, 10}, // Kakuna - {15, 13, 15, 15, 9, 13}, // Beedrill - {15, 8, 15, 8, 7, 8}, // Pidgey - {15, 16, 15, 15, 11, 14}, // Pidgeotto - {16, 17, 16, 17, 15, 16}, // Pidgeot - {16, 11, 16, 9, 9, 8}, // Rattata - {16, 12, 16, 9, 11, 8}, // Raticate - {16, 8, 16, 8, 10, 8}, // Spearow - {16, 15, 16, 16, 15, 19}, // Fearow - {16, 10, 13, 11, 9, 10}, // Ekans - {15, 12, 14, 13, 13, 12}, // Arbok - {16, 10, 16, 9, 8, 10}, // Pikachu - {13, 12, 20, 12, 14, 11}, // Raichu - {16, 9, 16, 9, 9, 9}, // Sandshrew - {15, 11, 15, 11, 10, 11}, // Sandslash - {16, 9, 16, 9, 7, 9}, // Nidoran_F - {15, 10, 15, 10, 11, 10}, // Nidorina - {16, 12, 16, 12, 13, 12}, // Nidoqueen - {16, 9, 16, 9, 8, 8}, // Nidoran_M - {16, 10, 16, 11, 11, 9}, // Nidorino - {16, 12, 16, 12, 14, 12}, // Nidoking - {15, 9, 16, 9, 7, 9}, // Clefairy - {16, 11, 16, 11, 9, 11}, // Clefable - {15, 11, 15, 11, 12, 9}, // Vulpix - {15, 13, 15, 14, 13, 11}, // Ninetales - {15, 9, 15, 9, 7, 9}, // Jigglypuff - {15, 11, 15, 11, 8, 11}, // Wigglytuff - {15, 12, 15, 13, 10, 11}, // Zubat - {16, 12, 16, 12, 12, 12}, // Golbat - {15, 8, 15, 8, 7, 8}, // Oddish - {16, 10, 16, 10, 9, 11}, // Gloom - {16, 10, 16, 10, 11, 10}, // Vileplume - {16, 9, 16, 8, 9, 9}, // Paras - {15, 13, 16, 12, 12, 12}, // Parasect - {16, 10, 16, 10, 11, 10}, // Venonat - {15, 14, 15, 14, 13, 14}, // Venomoth - {15, 7, 16, 7, 7, 7}, // Diglett - {16, 11, 16, 11, 11, 11}, // Dugtrio - {16, 13, 15, 11, 11, 9}, // Meowth - {15, 14, 15, 12, 13, 9}, // Persian - {15, 10, 15, 10, 7, 10}, // Psyduck - {15, 12, 15, 12, 8, 11}, // Golduck - {15, 9, 15, 9, 9, 9}, // Mankey - {15, 11, 15, 11, 9, 12}, // Primeape - {16, 11, 16, 11, 9, 10}, // Growlithe - {15, 15, 15, 15, 16, 12}, // Arcanine - {16, 9, 16, 9, 9, 9}, // Poliwag - {16, 9, 16, 9, 7, 10}, // Poliwhirl - {15, 11, 15, 11, 10, 11}, // Poliwrath - {15, 11, 15, 11, 11, 12}, // Abra - {15, 11, 16, 11, 12, 11}, // Kadabra - {16, 12, 16, 13, 11, 13}, // Alakazam - {15, 9, 15, 9, 8, 10}, // Machop - {15, 12, 15, 12, 8, 12}, // Machoke - {16, 13, 16, 13, 12, 12}, // Machamp - {15, 11, 15, 11, 7, 10}, // Bellsprout - {15, 11, 15, 10, 7, 11}, // Weepinbell - {15, 14, 15, 14, 14, 13}, // Victreebel - {16, 10, 16, 10, 9, 10}, // Tentacool - {15, 13, 15, 13, 13, 12}, // Tentacruel - {15, 10, 15, 10, 7, 11}, // Geodude - {15, 9, 15, 9, 10, 11}, // Graveler - {15, 11, 15, 11, 12, 11}, // Golem - {15, 12, 15, 12, 11, 11}, // Ponyta - {15, 15, 15, 14, 15, 13}, // Rapidash - {15, 11, 15, 9, 12, 8}, // Slowpoke - {16, 11, 16, 11, 14, 11}, // Slowbro - {15, 10, 15, 10, 8, 11}, // Magnemite - {15, 15, 15, 15, 10, 15}, // Magneton - {16, 11, 16, 11, 8, 11}, // Farfetch'd - {15, 11, 15, 11, 9, 12}, // Doduo - {16, 16, 15, 16, 15, 15}, // Dodrio - {15, 11, 15, 11, 13, 10}, // Seel - {15, 13, 15, 12, 15, 12}, // Dewgong - {16, 9, 16, 9, 9, 10}, // Grimer - {15, 11, 15, 11, 11, 11}, // Muk - {15, 9, 15, 8, 7, 9}, // Shellder - {15, 13, 15, 13, 13, 14}, // Cloyster - {15, 15, 16, 15, 10, 14}, // Gastly - {16, 13, 16, 13, 10, 14}, // Haunter - {15, 11, 15, 11, 9, 11}, // Gengar - {16, 15, 15, 16, 13, 16}, // Onix - {16, 10, 16, 10, 10, 11}, // Drowzee - {16, 12, 16, 12, 10, 12}, // Hypno - {16, 9, 16, 9, 13, 7}, // Krabby - {16, 13, 16, 12, 16, 13}, // Kingler - {15, 9, 15, 9, 7, 9}, // Voltorb - {16, 12, 16, 12, 13, 12}, // Electrode - {16, 13, 16, 11, 14, 12}, // Exeggcute - {16, 15, 16, 14, 12, 14}, // Exeggutor - {14, 10, 16, 10, 9, 11}, // Cubone - {14, 11, 16, 11, 10, 12}, // Marowak - {15, 11, 15, 11, 9, 11}, // Hitmonlee - {16, 12, 16, 11, 9, 11}, // Hitmonchan - {15, 11, 15, 11, 12, 10}, // Lickitung - {17, 13, 17, 13, 12, 12}, // Koffing - {15, 14, 16, 14, 13, 13}, // Weezing - {15, 12, 15, 11, 14, 9}, // Rhyhorn - {16, 12, 16, 12, 16, 12}, // Rhydon - {15, 10, 15, 10, 10, 10}, // Chansey - {16, 11, 16, 11, 10, 10}, // Tangela - {16, 12, 16, 12, 12, 13}, // Kangaskhan - {15, 9, 15, 9, 9, 9}, // Horsea - {15, 13, 15, 13, 11, 12}, // Seadra - {15, 11, 15, 10, 12, 9}, // Goldeen - {15, 13, 15, 11, 14, 13}, // Seaking - {16, 10, 16, 10, 8, 10}, // Staryu - {16, 12, 16, 12, 9, 13}, // Starmie - {16, 11, 16, 10, 10, 12}, // Mr. Mime - {15, 13, 15, 13, 12, 13}, // Scyther - {16, 13, 16, 12, 11, 13}, // Jynx - {16, 12, 16, 12, 12, 12}, // Electabuzz - {15, 13, 15, 13, 12, 12}, // Magmar - {15, 12, 15, 12, 11, 12}, // Pinsir - {15, 15, 16, 12, 15, 11}, // Tauros - {16, 10, 16, 11, 12, 10}, // Magikarp - {16, 16, 16, 16, 15, 16}, // Gyarados - {16, 12, 16, 13, 14, 13}, // Lapras - {16, 8, 16, 8, 9, 7}, // Ditto - {15, 9, 15, 9, 11, 9}, // Eevee - {15, 15, 15, 12, 15, 11}, // Vaporeon - {15, 12, 15, 11, 14, 10}, // Jolteon - {15, 13, 15, 12, 14, 11}, // Flareon - {15, 10, 15, 10, 12, 9}, // Porygon - {15, 10, 15, 10, 10, 9}, // Omanyte - {15, 12, 15, 12, 12, 11}, // Omastar - {15, 8, 15, 8, 9, 8}, // Kabuto - {16, 11, 15, 11, 11, 12}, // Kabutops - {15, 16, 15, 16, 16, 15}, // Aerodactyl - {16, 14, 16, 14, 12, 15}, // Snorlax - {15, 17, 15, 16, 14, 17}, // Articuno - {15, 18, 15, 17, 14, 15}, // Zapdos - {15, 16, 15, 17, 15, 17}, // Moltres - {17, 12, 14, 11, 12, 11}, // Dratini - {18, 15, 14, 15, 14, 14}, // Dragonair - {15, 16, 15, 16, 13, 15}, // Dragonite - {15, 15, 15, 14, 13, 14}, // Mewtwo - {16, 13, 16, 11, 13, 13}, // Mew - {16, 10, 15, 10, 9, 10}, // Chikorita - {16, 13, 15, 14, 13, 13}, // Bayleef - {15, 14, 15, 15, 14, 15}, // Meganium - {16, 11, 16, 10, 12, 9}, // Cyndaquil - {15, 13, 15, 14, 15, 10}, // Quilava - {15, 14, 15, 14, 14, 13}, // Typhlosion - {16, 10, 16, 10, 10, 10}, // Totodile - {15, 13, 15, 14, 13, 13}, // Croconaw - {15, 15, 15, 15, 15, 15}, // Feraligatr - {15, 10, 15, 10, 12, 9}, // Sentret - {15, 14, 15, 13, 15, 11}, // Furret - {16, 10, 16, 10, 10, 10}, // Hoothoot - {15, 13, 15, 14, 14, 16}, // Noctowl - {15, 14, 15, 12, 13, 12}, // Ledyba - {16, 12, 16, 13, 13, 16}, // Ledian - {15, 9, 15, 9, 11, 7}, // Spinarak - {15, 13, 15, 12, 15, 13}, // Ariados - {15, 13, 15, 13, 12, 15}, // Crobat - {16, 8, 16, 8, 10, 8}, // Chinchou - {16, 14, 16, 13, 15, 11}, // Lanturn - {15, 9, 15, 9, 9, 9}, // Pichu - {16, 8, 16, 8, 9, 8}, // Cleffa - {15, 9, 15, 9, 8, 9}, // Igglybuff - {16, 9, 16, 9, 9, 9}, // Togepi - {15, 14, 15, 15, 10, 13}, // Togetic - {16, 8, 16, 8, 9, 9}, // Natu - {16, 12, 16, 12, 12, 12}, // Xatu - {16, 11, 15, 10, 12, 10}, // Mareep - {18, 12, 15, 11, 12, 11}, // Flaaffy - {16, 13, 16, 13, 13, 13}, // Ampharos - {15, 10, 15, 10, 8, 10}, // Bellossom - {19, 8, 12, 8, 12, 9}, // Marill - {18, 10, 13, 10, 12, 11}, // Azumarill - {16, 12, 16, 12, 10, 12}, // Sudowoodo - {15, 12, 15, 12, 9, 12}, // Politoed - {16, 12, 16, 12, 9, 12}, // Hoppip - {15, 10, 15, 10, 9, 13}, // Skiploom - {16, 14, 16, 14, 9, 13}, // Jumpluff - {16, 12, 16, 11, 13, 11}, // Aipom - {16, 8, 16, 8, 7, 9}, // Sunkern - {15, 11, 15, 11, 7, 11}, // Sunflora - {16, 15, 16, 15, 15, 13}, // Yanma - {16, 8, 16, 8, 8, 8}, // Wooper - {17, 11, 15, 11, 12, 11}, // Quagsire - {15, 14, 15, 12, 13, 12}, // Espeon - {15, 13, 15, 12, 14, 11}, // Umbreon - {15, 10, 15, 10, 9, 10}, // Murkrow - {16, 14, 16, 14, 10, 13}, // Slowking - {16, 14, 16, 13, 11, 13}, // Misdreavus - {15, 10, 15, 10, 7, 11}, // Unown (A) - {16, 11, 16, 11, 10, 11}, // Wobbuffet - {16, 13, 16, 13, 15, 13}, // Girafarig - {16, 9, 16, 9, 8, 9}, // Pineco - {16, 10, 16, 10, 11, 10}, // Forretress - {15, 13, 15, 9, 13, 8}, // Dunsparce - {15, 12, 15, 12, 11, 13}, // Gligar - {33, 17, 32, 19, 36, 17}, // Steelix - {16, 10, 16, 10, 10, 10}, // Snubbull - {16, 12, 16, 12, 10, 13}, // Granbull - {16, 12, 16, 10, 14, 9}, // Qwilfish - {16, 13, 16, 12, 12, 13}, // Scizor - {16, 10, 16, 11, 11, 10}, // Shuckle - {15, 13, 15, 13, 12, 14}, // Heracross - {17, 10, 15, 10, 9, 10}, // Sneasel - {15, 10, 15, 10, 9, 10}, // Teddiursa - {16, 13, 16, 13, 11, 14}, // Ursaring - {15, 11, 16, 11, 11, 10}, // Slugma - {16, 13, 14, 12, 15, 11}, // Magcargo - {15, 8, 15, 8, 11, 8}, // Swinub - {15, 11, 15, 12, 12, 11}, // Piloswine - {16, 9, 16, 9, 10, 10}, // Corsola - {16, 10, 16, 10, 13, 7}, // Remoraid - {15, 11, 15, 12, 11, 11}, // Ocitllery - {16, 10, 15, 10, 9, 11}, // Delibird - {16, 15, 16, 15, 16, 16}, // Mantine - {15, 13, 15, 16, 15, 16}, // Skarmory - {16, 9, 16, 10, 11, 10}, // Houndour - {15, 12, 15, 13, 14, 12}, // Houndoom - {16, 14, 16, 14, 14, 13}, // Kingdra - {16, 9, 16, 9, 11, 9}, // Phanpy - {16, 11, 16, 11, 15, 12}, // Donphan - {16, 11, 16, 12, 13, 12}, // Porygon2 - {16, 14, 15, 14, 12, 15}, // Stantler - {14, 11, 18, 11, 9, 11}, // Smeargle - {15, 10, 15, 10, 8, 10}, // Tyrogue - {15, 12, 15, 12, 9, 11}, // Hitmontop - {15, 10, 15, 10, 9, 10}, // Smoochum - {15, 10, 15, 10, 8, 10}, // Elekid - {16, 10, 16, 10, 8, 10}, // Magby - {16, 11, 16, 11, 12, 11}, // Miltank - {16, 11, 16, 11, 11, 12}, // Blissey - {15, 15, 15, 13, 15, 13}, // Raikou - {15, 15, 15, 13, 15, 12}, // Entei - {15, 15, 15, 13, 16, 12}, // Suicune - {15, 10, 15, 10, 10, 10}, // Larvitar - {15, 11, 15, 11, 8, 11}, // Pupitar - {15, 14, 15, 14, 14, 13}, // Tyranitar - {32, 21, 32, 23, 40, 21}, // Lugia - {32, 22, 31, 22, 38, 24}, // Ho-oh - {16, 14, 16, 14, 9, 14}, // Celebi - {15, 9, 15, 9, 9, 9}, // Treecko - {16, 11, 16, 11, 11, 11}, // Grovyle - {15, 13, 15, 13, 15, 14}, // Sceptile - {15, 10, 15, 10, 8, 10}, // Torchic - {15, 11, 15, 11, 8, 11}, // Combusken - {16, 13, 16, 13, 12, 13}, // Blaziken - {15, 9, 15, 9, 10, 9}, // Mudkip - {15, 10, 15, 10, 9, 10}, // Marshtomp - {15, 13, 15, 13, 15, 13}, // Swampert - {15, 10, 15, 10, 12, 10}, // Poochyena - {16, 14, 16, 12, 15, 12}, // Mightyena - {16, 12, 16, 10, 14, 9}, // Zigzagoon - {16, 13, 14, 10, 15, 8}, // Linoone - {15, 10, 15, 11, 11, 9}, // Wurmple - {16, 8, 16, 8, 10, 8}, // Silcoon - {16, 13, 16, 13, 13, 12}, // Beautifly - {16, 8, 16, 8, 10, 8}, // Cascoon - {15, 11, 15, 11, 12, 15}, // Dustox - {15, 9, 15, 9, 10, 9}, // Lotad - {15, 12, 15, 12, 10, 11}, // Lombre - {16, 14, 16, 14, 13, 14}, // Ludicolo - {15, 9, 15, 9, 8, 9}, // Seedot - {15, 12, 15, 12, 9, 12}, // Nuzleaf - {16, 12, 16, 12, 13, 12}, // Shiftry -#ifndef POKEMON_EXPANSION - {15, 9, 15, 8, 12, 8}, // Nincada - {15, 12, 15, 12, 12, 12}, // Ninjask - {16, 13, 16, 14, 12, 13}, // Shedinja - {15, 9, 15, 9, 10, 8}, // Taillow - {15, 13, 15, 12, 16, 15}, // Swellow - {15, 9, 15, 9, 10, 9}, // Shroomish - {16, 12, 16, 12, 12, 12}, // Breloom - {16, 10, 16, 10, 9, 11}, // Spinda - {15, 11, 15, 10, 12, 13}, // Wingull - {16, 14, 16, 14, 14, 13}, // Pelipper - {15, 9, 15, 9, 10, 9}, // Surskit - {16, 14, 16, 15, 10, 14}, // Masquerain - {16, 11, 16, 11, 13, 11}, // Wailmer - {32, 19, 32, 18, 38, 12}, // Wailord - {15, 10, 15, 9, 12, 9}, // Skitty - {16, 13, 16, 12, 13, 12}, // Delcatty - {16, 11, 16, 11, 10, 11}, // Kecleon - {16, 11, 16, 11, 7, 11}, // Baltoy - {16, 14, 16, 14, 11, 13}, // Claydol - {15, 11, 15, 11, 11, 11}, // Nosepass - {16, 10, 16, 11, 15, 10}, // Torkoal - {16, 9, 16, 9, 9, 10}, // Sableye - {15, 9, 16, 9, 9, 11}, // Barboach - {15, 10, 15, 11, 14, 9}, // Whiscash - {16, 9, 16, 9, 8, 9}, // Luvdisc - {15, 10, 15, 11, 11, 10}, // Corphish - {16, 13, 16, 13, 13, 12}, // Crawdaunt - {16, 9, 16, 9, 10, 9}, // Feebas - {19, 13, 11, 12, 14, 13}, // Milotic - {15, 12, 15, 12, 11, 11}, // Carvanha - {16, 14, 16, 12, 13, 14}, // Sharpedo - {16, 8, 16, 8, 10, 8}, // Trapinch - {16, 13, 16, 11, 15, 14}, // Vibrava - {16, 17, 16, 17, 15, 14}, // Flygon - {16, 10, 16, 10, 9, 11}, // Makuhita - {14, 14, 14, 13, 14, 13}, // Hariyama - {15, 11, 15, 9, 13, 8}, // Electrike - {15, 13, 15, 13, 14, 13}, // Manectric - {15, 12, 15, 12, 15, 12}, // Numel - {15, 14, 15, 14, 17, 12}, // Camerupt - {15, 9, 15, 9, 11, 9}, // Spheal - {15, 12, 15, 13, 15, 12}, // Sealeo - {15, 13, 15, 14, 16, 14}, // Walrein - {15, 9, 15, 9, 8, 9}, // Cacnea - {15, 12, 15, 12, 11, 12}, // Cacturne - {15, 9, 15, 9, 9, 9}, // Snorunt - {16, 12, 16, 12, 11, 14}, // Glalie - {16, 11, 16, 11, 10, 11}, // Lunatone - {16, 13, 16, 13, 8, 13}, // Solrock - {17, 9, 14, 8, 13, 7}, // Azurill - {15, 11, 15, 11, 8, 10}, // Spoink - {15, 11, 15, 11, 11, 11}, // Grumpig - {15, 9, 15, 9, 9, 9}, // Plusle - {15, 9, 15, 9, 9, 9}, // Minun - {17, 11, 14, 11, 13, 11}, // Mawile - {15, 12, 15, 11, 8, 11}, // Meditite - {15, 13, 15, 13, 8, 13}, // Medicham - {16, 12, 16, 11, 11, 10}, // Swablu - {16, 16, 16, 16, 14, 15}, // Altaria - {16, 10, 16, 10, 10, 9}, // Wynaut - {16, 12, 16, 11, 9, 12}, // Duskull - {15, 13, 15, 13, 13, 13}, // Dusclops - {15, 10, 15, 10, 8, 10}, // Roselia - {15, 9, 15, 9, 12, 8}, // Slakoth - {16, 11, 16, 11, 14, 11}, // Vigoroth - {16, 15, 16, 14, 14, 14}, // Slaking - {16, 9, 16, 9, 10, 9}, // Gulpin - {16, 14, 16, 14, 14, 14}, // Swalot - {16, 13, 16, 13, 16, 13}, // Tropius - {16, 8, 16, 8, 8, 8}, // Whismur - {16, 11, 16, 11, 9, 12}, // Loudred - {16, 14, 16, 14, 17, 15}, // Exploud - {15, 8, 15, 8, 8, 9}, // Clamperl - {18, 15, 11, 14, 14, 14}, // Huntail - {17, 16, 12, 14, 15, 11}, // Gorebyss - {14, 14, 16, 14, 15, 13}, // Absol - {15, 11, 15, 11, 8, 11}, // Shuppet - {17, 10, 16, 10, 9, 10}, // Banette - {18, 14, 14, 14, 16, 10}, // Seviper - {15, 12, 15, 12, 13, 12}, // Zangoose - {15, 13, 15, 12, 14, 10}, // Relicanth - {16, 8, 16, 8, 9, 8}, // Aron - {15, 13, 15, 12, 16, 10}, // Lairon - {15, 15, 15, 14, 16, 14}, // Aggron - {15, 11, 15, 10, 7, 10}, // Castform - {15, 14, 15, 14, 12, 12}, // Volbeat - {16, 13, 16, 13, 11, 12}, // Illumise - {16, 11, 16, 12, 10, 11}, // Lileep - {16, 15, 16, 15, 12, 15}, // Cradily - {16, 11, 16, 10, 14, 9}, // Anorith - {15, 13, 15, 12, 13, 13}, // Armaldo - {15, 9, 15, 9, 9, 9}, // Ralts - {15, 11, 15, 11, 9, 11}, // Kirlia - {16, 12, 16, 13, 10, 12}, // Gardevoir - {16, 11, 16, 11, 10, 10}, // Bagon - {16, 10, 16, 10, 11, 10}, // Shelgon - {16, 14, 16, 13, 16, 13}, // Salamence - {15, 13, 15, 12, 12, 12}, // Beldum - {16, 14, 16, 13, 15, 13}, // Metang - {16, 14, 16, 14, 13, 13}, // Metagross - {15, 14, 15, 14, 11, 14}, // Regirock - {15, 13, 15, 13, 12, 13}, // Regice - {16, 13, 16, 13, 10, 13}, // Registeel - {16, 17, 16, 15, 16, 14}, // Kyogre - {15, 16, 16, 16, 16, 16}, // Groudon - {16, 17, 16, 16, 16, 16}, // Rayquaza - {16, 15, 16, 14, 16, 15}, // Latias - {16, 15, 16, 14, 15, 15}, // Latios - {15, 13, 15, 13, 10, 12}, // Jirachi - {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) - {16, 11, 16, 11, 7, 11}, // Chimecho -#else - {15, 9, 15, 9, 10, 8}, // Taillow - {15, 13, 15, 12, 16, 15}, // Swellow - {15, 11, 15, 10, 12, 13}, // Wingull - {16, 14, 16, 14, 14, 13}, // Pelipper - {9, 15, 9, 9, 9}, // Ralts - {15, 11, 15, 11, 9, 11}, // Kirlia - {16, 12, 16, 13, 10, 12}, // Gardevoir - {15, 9, 15, 9, 10, 9}, // Surskit - {16, 14, 16, 15, 10, 14}, // Masquerain - {15, 9, 15, 9, 10, 9}, // Shroomish - {16, 12, 16, 12, 12, 12}, // Breloom - {15, 9, 15, 9, 12, 8}, // Slakoth - {16, 11, 16, 11, 14, 11}, // Vigoroth - {16, 15, 16, 14, 14, 14}, // Slaking - {15, 9, 15, 8, 12, 8}, // Nincada - {15, 12, 15, 12, 12, 12}, // Ninjask - {16, 13, 16, 14, 12, 13}, // Shedinja - {16, 8, 16, 8, 8, 8}, // Whismur - {16, 11, 16, 11, 9, 12}, // Loudred - {16, 14, 16, 14, 17, 15}, // Exploud - {16, 10, 16, 10, 9, 11}, // Makuhita - {14, 14, 14, 13, 14, 13}, // Hariyama - {17, 9, 14, 8, 13, 7}, // Azurill - {15, 11, 15, 11, 11, 11}, // Nosepass - {15, 10, 15, 9, 12, 9}, // Skitty - {16, 13, 16, 12, 13, 12}, // Delcatty - {16, 9, 16, 9, 9, 10}, // Sableye - {17, 11, 14, 11, 13, 11}, // Mawile - {16, 8, 16, 8, 9, 8}, // Aron - {15, 13, 15, 12, 16, 10}, // Lairon - {15, 15, 15, 14, 16, 14}, // Aggron - {15, 12, 15, 11, 8, 11}, // Meditite - {15, 13, 15, 13, 8, 13}, // Medicham - {15, 11, 15, 9, 13, 8}, // Electrike - {15, 13, 15, 13, 14, 13}, // Manectric - {15, 9, 15, 9, 9, 9}, // Plusle - {15, 9, 15, 9, 9, 9}, // Minun - {15, 14, 15, 14, 12, 12}, // Volbeat - {16, 13, 16, 13, 11, 12}, // Illumise - {15, 10, 15, 10, 8, 10}, // Roselia - {16, 9, 16, 9, 10, 9}, // Gulpin - {16, 14, 16, 14, 14, 14}, // Swalot - {15, 12, 15, 12, 11, 11}, // Carvanha - {16, 14, 16, 12, 13, 14}, // Sharpedo - {16, 11, 16, 11, 13, 11}, // Wailmer - {32, 19, 32, 18, 38, 12}, // Wailord - {15, 12, 15, 12, 15, 12}, // Numel - {15, 14, 15, 14, 17, 12}, // Camerupt - {16, 10, 16, 11, 15, 10}, // Torkoal - {15, 11, 15, 11, 8, 10}, // Spoink - {15, 11, 15, 11, 11, 11}, // Grumpig - {16, 10, 16, 10, 9, 11}, // Spinda - {16, 8, 16, 8, 10, 8}, // Trapinch - {16, 13, 16, 11, 15, 14}, // Vibrava - {16, 17, 16, 17, 15, 14}, // Flygon - {15, 9, 15, 9, 8, 9}, // Cacnea - {15, 12, 15, 12, 11, 12}, // Cacturne - {16, 12, 16, 11, 11, 10}, // Swablu - {16, 16, 16, 16, 14, 15}, // Altaria - {15, 12, 15, 12, 13, 12}, // Zangoose - {18, 14, 14, 14, 16, 10}, // Seviper - {16, 11, 16, 11, 10, 11}, // Lunatone - {16, 13, 16, 13, 8, 13}, // Solrock - {15, 9, 16, 9, 9, 11}, // Barboach - {15, 10, 15, 11, 14, 9}, // Whiscash - {15, 10, 15, 11, 11, 10}, // Corphish - {16, 13, 16, 13, 13, 12}, // Crawdaunt - {16, 11, 16, 11, 7, 11}, // Baltoy - {16, 14, 16, 14, 11, 13}, // Claydol - {16, 11, 16, 12, 10, 11}, // Lileep - {16, 15, 16, 15, 12, 15}, // Cradily - {16, 11, 16, 10, 14, 9}, // Anorith - {15, 13, 15, 12, 13, 13}, // Armaldo - {16, 9, 16, 9, 10, 9}, // Feebas - {19, 13, 11, 12, 14, 13}, // Milotic - {15, 11, 15, 10, 7, 10}, // Castform - {16, 11, 16, 11, 10, 11}, // Kecleon - {15, 11, 15, 11, 8, 11}, // Shuppet - {17, 10, 16, 10, 9, 10}, // Banette - {16, 12, 16, 11, 9, 12}, // Duskull - {15, 13, 15, 13, 13, 13}, // Dusclops - {16, 13, 16, 13, 16, 13}, // Tropius - {16, 11, 16, 11, 7, 11}, // Chimecho - {14, 14, 16, 14, 15, 13}, // Absol - {16, 10, 16, 10, 10, 9}, // Wynaut - {15, 9, 15, 9, 9, 9}, // Snorunt - {16, 12, 16, 12, 11, 14}, // Glalie - {15, 9, 15, 9, 11, 9}, // Spheal - {15, 12, 15, 13, 15, 12}, // Sealeo - {15, 13, 15, 14, 16, 14}, // Walrein - {15, 8, 15, 8, 8, 9}, // Clamperl - {18, 15, 11, 14, 14, 14}, // Huntail - {17, 16, 12, 14, 15, 11}, // Gorebyss - {15, 13, 15, 12, 14, 10}, // Relicanth - {16, 9, 16, 9, 8, 9}, // Luvdisc - {16, 11, 16, 11, 10, 10}, // Bagon - {16, 10, 16, 10, 11, 10}, // Shelgon - {16, 14, 16, 13, 16, 13}, // Salamence - {15, 13, 15, 12, 12, 12}, // Beldum - {16, 14, 16, 13, 15, 13}, // Metang - {16, 14, 16, 14, 13, 13}, // Metagross - {15, 14, 15, 14, 11, 14}, // Regirock - {15, 13, 15, 13, 12, 13}, // Regice - {16, 13, 16, 13, 10, 13}, // Registeel - {16, 15, 16, 14, 16, 15}, // Latias - {16, 15, 16, 14, 15, 15}, // Latios - {16, 17, 16, 15, 16, 14}, // Kyogre - {15, 16, 16, 16, 16, 16}, // Groudon - {16, 17, 16, 16, 16, 16}, // Rayquaza - {15, 13, 15, 13, 10, 12}, // Jirachi - {16, 14, 16, 14, 9, 13}, // Deoxys (Normal) -#endif - {16, 15, 16, 15, 12, 13}, // Deoxys (Speed) - {16, 13, 16, 13, 10, 13}, // Deoxys (Defense) - {16, 14, 16, 14, 10, 14}, // Deoxys (Attack) -}; - static const struct WarpData sDummyWarpData = { .mapGroup = MAP_GROUP(UNDEFINED), @@ -877,7 +365,6 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); - UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -927,8 +414,6 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } - - FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1959,10 +1444,6 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } - - // if stop running but keep holding B -> fix follower frame - if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) - ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1998,20 +1479,6 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); - - // Make sure follower's sprite is properly positioned when map reloads. - if (gSaveBlock2Ptr->follower.inProgress) - { - switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) - { - case DIR_EAST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; - break; - case DIR_WEST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; - break; - } - } } void SetMainCallback1(MainCallback cb) @@ -2194,7 +1661,6 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; - UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2661,7 +2127,10 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - FreeAllSpritePalettes(); + if (!a1) + InitObjectEventPalettes(0); + else + InitObjectEventPalettes(1); FieldEffectActiveListClear(); StartWeather(); @@ -2696,7 +2165,6 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); - FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -3748,561 +3216,3 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) sprite->data[7]++; } } - -void UpdateFollowerPokemonGraphic(void) -{ - // Loaded in case the player changed the species of the Pokemon in the lead of the party. - // If so, the following Pokemon needs to change. - u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + OBJ_EVENT_GFX_BULBASAUR - 1; - struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - - if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) - { - // Sets the follower's graphic data to the proper following Pokemon graphic data - gSaveBlock2Ptr->follower.graphicsId = leadMonGraphicId; - - // Sets the current follower object's graphic data to the proper data. - // Necessary because, without it, the follower's sprite won't change until entering a loading zone. - follower->graphicsId = leadMonGraphicId; - - // Specifically for Pokemon Center, if lead Pokemon is revived, deletes old follower and creates new one - if(gSpecialVar_Unused_0x8014 == 1) - { - u8 newSpriteId; - struct ObjectEventTemplate clone; - struct ObjectEvent backupFollower = *follower; - backupFollower.graphicsId = gSaveBlock2Ptr->follower.graphicsId; - DestroySprite(&gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId]); - RemoveObjectEvent(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - - clone = *GetObjectEventTemplateByLocalIdAndMap(gSaveBlock2Ptr->follower.map.id, gSaveBlock2Ptr->follower.map.number, gSaveBlock2Ptr->follower.map.group); - clone.graphicsId = gSaveBlock2Ptr->follower.graphicsId;; - gSaveBlock2Ptr->follower.objId = TrySpawnObjectEventTemplate(&clone, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, clone.x, clone.y); - - follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - newSpriteId = follower->spriteId; - *follower = backupFollower; - follower->spriteId = newSpriteId; - MoveObjectEventToMapCoords(follower, follower->currentCoords.x, follower->currentCoords.y); - ObjectEventTurn(follower, follower->facingDirection); - gSpecialVar_Unused_0x8014 = 0; - } - } -} - -static void SparkleCallback(struct Sprite *sprite) -{ - if (++sprite->data[0] >= 19) - { - FreeSpriteOamMatrix(sprite); - DestroySprite(sprite); - } -} - -static void BigSparkleCallback(struct Sprite *sprite) -{ - if (sprite->data[0] % 2 == 0) - { - switch(sprite->data[7]) - { - // North Sparkle - case 0: - sprite->x++; - break; - // NorthEast Sparkle - case 1: - if (sprite->data[0] % 4 == 0) - sprite->y++; - else - sprite->x++; - break; - // East sparkle - case 2: - sprite->y++; - break; - // SouthEast Sparkle - case 3: - if (sprite->data[0] % 4 == 0) - sprite->y++; - else - sprite->x--; - break; - // South Sparkle - case 4: - sprite->x--; - break; - // SouthWest Sparkle - case 5: - if (sprite->data[0] % 4 == 0) - sprite->y--; - else - sprite->x--; - break; - // West Sparkle - case 6: - sprite->y--; - break; - // NorthWest Sparkle - case 7: - if (sprite->data[0] % 4 == 0) - sprite->y--; - else - sprite->x++; - break; - } - } - - if (++sprite->data[0] >= 19) - { - FreeSpriteOamMatrix(sprite); - DestroySprite(sprite); - } -} - -bool8 IsBigSprite(u16 graphicsId) -{ - switch(graphicsId) - { - case OBJ_EVENT_GFX_STEELIX: - case OBJ_EVENT_GFX_LUGIA_FOLLOWER: - case OBJ_EVENT_GFX_HOOH_FOLLOWER: - case OBJ_EVENT_GFX_WAILORD: - case OBJ_EVENT_GFX_DIALGA: - case OBJ_EVENT_GFX_PALKIA: - case OBJ_EVENT_GFX_REGIGIGAS: - case OBJ_EVENT_GFX_GIRATINA_NORMAL: - case OBJ_EVENT_GFX_ARCEUS_NORMAL: - return TRUE; - default: - return FALSE; - } -} - -static void SparklePokeballCallback(struct Sprite *sprite) -{ - sprite->data[0]++; - - if (sprite->data[0] >= 10) - { - struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - s16 x = gSprites[follower->spriteId].x; - s16 y = gSprites[follower->spriteId].y; - u8 spriteId; - u16 graphicsId; - - DestroySprite(sprite); - - gSprites[follower->spriteId].oam.priority = ElevationToPriority(follower->previousElevation); - gSprites[gPlayerAvatar.spriteId].oam.priority = ElevationToPriority(player->previousElevation); - player->fixedPriority = FALSE; - - // Shift the location of the sparkle, depending on which way the follower will be facing - #ifndef POKEMON_EXPANSION - // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. - if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) - graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR - 25; - else - #endif - graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR; - - switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) - { - case DIR_SOUTH: - x -= 16 - FollowerSparkleCoords[graphicsId][0]; - if (IsBigSprite(follower->graphicsId)) - x -= 16; - - y += 16 - FollowerSparkleCoords[graphicsId][1]; - - break; - case DIR_NORTH: - x -= 16 - FollowerSparkleCoords[graphicsId][2]; - if (IsBigSprite(follower->graphicsId)) - x -= 16; - - y += 16 - FollowerSparkleCoords[graphicsId][3]; - - break; - case DIR_EAST: - x += 7 - FollowerSparkleCoords[graphicsId][4]; // 7 looks better than 8 - if (IsBigSprite(follower->graphicsId)) - x += 16; - - y += 16 - FollowerSparkleCoords[graphicsId][5]; - - break; - case DIR_WEST: - x -= 8 - FollowerSparkleCoords[graphicsId][4]; - if (IsBigSprite(follower->graphicsId)) - x -= 16; - - y += 16 - FollowerSparkleCoords[graphicsId][5]; - - break; - } - - if (IsBigSprite(follower->graphicsId)) - { - // North sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 0); - } - - // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 1; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 1); - } - - // East sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 2; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 2); - } - - // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 3; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 3); - } - - // South sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 4; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 4); - } - - // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 5; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 5); - } - - // West sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 6; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 6); - } - - // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[7] = 7; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 7); - } - } - else - { - // North sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 0); - } - - // NorthEast sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 1); - } - - // East sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 2); - } - - // SouthEast sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 3); - } - - // South sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 4); - } - - // SouthWest sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 5); - } - - // West sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 6); - } - - // NorthWest sparkle - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - InitSpriteAffineAnim(&gSprites[spriteId]); - StartSpriteAffineAnim(&gSprites[spriteId], 7); - } - } - } -} - -void FollowerPokeballSparkle(void) -{ - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == TRUE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && gSaveBlock2Ptr->follower.inProgress) - { - struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; - struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - s16 x = player->currentCoords.x; - s16 y = player->currentCoords.y; - u8 spriteId; - - switch(player->facingDirection) - { - case DIR_SOUTH: - SetSpritePosToOffsetMapCoords(&x, &y, 8, 4); - gSprites[follower->spriteId].y = y - 4; - break; - case DIR_NORTH: - SetSpritePosToOffsetMapCoords(&x, &y, 8, 0); - gSprites[follower->spriteId].y = y; - break; - case DIR_EAST: - case DIR_WEST: - SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); - gSprites[follower->spriteId].y = y - 8; - break; - } - gSprites[follower->spriteId].x = x; - - switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) - { - case ITEM_MASTER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MASTER_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_ULTRA_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ULTRA_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_GREAT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_GREAT_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_SAFARI_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SAFARI_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_NET_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NET_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_DIVE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DIVE_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_NEST_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_NEST_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_REPEAT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_REPEAT_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_TIMER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TIMER_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_LUXURY_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LUXURY_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_PREMIER_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PREMIER_BALL, &SparklePokeballCallback, x, y, 2); - break; - #ifdef ITEM_EXPANSION - case ITEM_HEAL_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAL_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_DUSK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DUSK_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_QUICK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_QUICK_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_LEVEL_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LEVEL_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_LURE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LURE_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_MOON_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MOON_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_FRIEND_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FRIEND_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_LOVE_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_LOVE_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_FAST_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_FAST_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_HEAVY_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_HEAVY_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_DREAM_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_DREAM_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_SPORT_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_SPORT_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_PARK_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_PARK_BALL, &SparklePokeballCallback, x, y, 2); - break; - case ITEM_CHERISH_BALL: - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_CHERISH_BALL, &SparklePokeballCallback, x, y, 2); - break; - #endif - default: // PokeBall - spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); - break; - } - - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].oam.priority = 2; - gSprites[spriteId].data[0] = 0; - } - - follower->currentCoords.x = player->currentCoords.x; - follower->currentCoords.y = player->currentCoords.y; - follower->facingDirection = player->facingDirection; - - gSprites[follower->spriteId].animNum = player->facingDirection - 1; - - if (player->facingDirection == DIR_NORTH) - { - gSprites[follower->spriteId].oam.priority = 0; - gSprites[follower->spriteId].subpriority = 0; - gSprites[gPlayerAvatar.spriteId].oam.priority = 1; - gSprites[gPlayerAvatar.spriteId].subpriority = 1; - } - else - { - gSprites[follower->spriteId].oam.priority = 1; - gSprites[follower->spriteId].subpriority = 1; - gSprites[gPlayerAvatar.spriteId].oam.priority = 0; - gSprites[gPlayerAvatar.spriteId].subpriority = 0; - } - player->fixedPriority = TRUE; - gPlayerAvatar.preventStep = TRUE; - - SeekSpriteAnim(&gSprites[follower->spriteId], 0); - ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); - } -} - -void FollowerIntoPokeball(void) -{ - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.inProgress) - { - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - gPlayerAvatar.preventStep = TRUE; - ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); - gSpecialVar_Unused_0x8014 = 1; - } -} diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 8dd6005a8..008fae3c9 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -654,7 +654,6 @@ static void SetMovingMonPriority(u8); static void SpriteCB_HeldMon(struct Sprite *); static struct Sprite *CreateMonIconSprite(u16, u32, s16, s16, u8, u8); static void DestroyBoxMonIcon(struct Sprite *); -extern void UpdateFollowerPokemonGraphic(void); // Pokémon data static void MoveMon(void); @@ -1696,7 +1695,6 @@ static void CB2_ExitPokeStorage(void) { sPreviousBoxOption = GetCurrentBoxOption(); gFieldCallback = FieldTask_ReturnToPcMenu; - UpdateFollowerPokemonGraphic(); SetMainCallback2(CB2_ReturnToField); } diff --git a/src/scrcmd.c b/src/scrcmd.c index d8d543df4..418bf5877 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1179,7 +1179,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u16 graphicsId = ScriptReadByte(ctx); + u8 graphicsId = ScriptReadByte(ctx); u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); u32 y = VarGet(ScriptReadHalfword(ctx)); @@ -2308,79 +2308,3 @@ bool8 ScrCmd_warpwhitefade(struct ScriptContext *ctx) ResetInitialPlayerAvatarState(); return TRUE; } - -bool8 ScrCmd_pokemonfaceplayer(struct ScriptContext *ctx) -{ - // The script will affect the following Pokemon if no argument is passed to it. - if(gSpecialVar_Unused_0x8014 == OBJ_EVENT_ID_FOLLOWER) - { - ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); - ObjectEventPokemonFacePlayer(&gObjectEvents[gSaveBlock2Ptr->follower.objId], &gObjectEvents[gPlayerAvatar.objectEventId]); - } - // The script will affect an event object based on the local id passed to the script. - else - { - gSpecialVar_Unused_0x8014 = GetObjectEventIdByLocalIdAndMap(gSpecialVar_Unused_0x8014, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); - ObjectEventClearHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014]); - - #define POW2(num) (num * num) - - // Checks to see whether the object is furthest away from the player along the x or y axis. - if(POW2((gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.x - gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x)) < POW2((gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.y - gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y))) - { - // Player is South of object - if(gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.y < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) - { - ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 159); - } - // Player is North of object - else - { - ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 160); - } - } - else - { - // Player is East of object - if(gObjectEvents[gSpecialVar_Unused_0x8014].currentCoords.x < gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) - { - ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 162); - } - // Player is West of object - else - { - ObjectEventSetHeldMovement(&gObjectEvents[gSpecialVar_Unused_0x8014], 161); - } - } - } - return TRUE; -} - -// follow me script commands -#include "follow_me.h" -bool8 ScrCmd_setfollower(struct ScriptContext *ctx) -{ - u8 localId = ScriptReadByte(ctx); - u16 flags = ScriptReadHalfword(ctx); - - SetUpFollowerSprite(localId, flags); - return FALSE; -} - -bool8 ScrCmd_destroyfollower(struct ScriptContext *ctx) -{ - DestroyFollower(); - return FALSE; -} - -bool8 ScrCmd_facefollower(struct ScriptContext *ctx) -{ - PlayerFaceFollowerSprite(); - return FALSE; -} - -bool8 ScrCmd_checkfollower(struct ScriptContext *ctx) -{ - CheckPlayerHasFollower(); - return FALSE; -} \ No newline at end of file diff --git a/src/script.c b/src/script.c index 20d8d2ef3..4728e739c 100644 --- a/src/script.c +++ b/src/script.c @@ -447,10 +447,3 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), NO_OBJECT); } - -u8* ReadWord(u8 index) -{ - struct ScriptContext *ctx = &sScriptContext1; - - return (T1_READ_PTR(&ctx->data[index])); -} From 76fdc5144029ca7fc7cf6f36207bb02cd02699fa Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 01:26:44 -0700 Subject: [PATCH 42/71] Bug fixes Fixed quick movement bugs, bike out of door bugs, running bugs, and sand/water effects bugs, all relating to followers. Very nervous that a lot of the changes in this commit seem to be things that I assumed were already in this repository. --- src/event_object_movement.c | 411 ++++++++++++++++++++++++++++++------ src/field_player_avatar.c | 22 +- src/follow_me.c | 21 +- src/overworld.c | 122 ++++++----- 4 files changed, 442 insertions(+), 134 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6b2742c92..ad259841c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -25,6 +25,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "follow_me.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" #include "constants/field_effects.h" @@ -32,6 +33,7 @@ #include "constants/mauville_old_man.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/metatile_behaviors.h" // this file was known as evobjmv.c in Game Freak's original source @@ -80,6 +82,8 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; +extern void PlaySE(u16); +extern void PlaySE12WithPanning(u16, s8); static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static void SetMovementDelay(struct Sprite *, s16); @@ -115,6 +119,9 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*); static void DoTracksGroundEffect_None(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsBug(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent*, struct Sprite*); static void DoGroundEffects_OnSpawn(struct ObjectEvent*, struct Sprite*); @@ -139,7 +146,7 @@ static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); -static u8 FindObjectEventPaletteIndexByTag(u16); +static u16 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); @@ -269,6 +276,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_FOLLOWING_POKEMON] = MovementType_FollowingPokemon, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -313,6 +321,7 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = FALSE, }; const u8 gInitialMovementTypeFacingDirections[] = { @@ -397,6 +406,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 @@ -1731,7 +1741,9 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId == OBJ_EVENT_ID_FOLLOWER) + return GetFollowerObjectId(); + else if (localId < OBJ_EVENT_ID_PLAYER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1878,7 +1890,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1896,10 +1908,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) @@ -1937,7 +1952,6 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1964,7 +1978,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -2175,7 +2189,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2213,7 +2227,6 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -2238,16 +2251,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) LoadObjectEventPalette(spriteTemplate.paletteTag); UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -2300,7 +2303,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -2330,7 +2333,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -2387,7 +2390,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { u8 bard; @@ -2514,7 +2517,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -2529,9 +2532,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u8 FindObjectEventPaletteIndexByTag(u16 tag) +static u16 FindObjectEventPaletteIndexByTag(u16 tag) { - u8 i; + u16 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { @@ -2877,7 +2880,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -3260,6 +3263,38 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } +movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) + +bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = FALSE; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[1] = 1; + return TRUE; +} + movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5148,8 +5183,9 @@ 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 != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) { + // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -5297,6 +5333,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -5397,6 +5434,41 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } +bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) +{ + if(follower->currentCoords.x == player->currentCoords.x) + { + // Follower is south of player + if(follower->currentCoords.y > player->currentCoords.y) + { + gSprites[follower->spriteId].animNum = 5; + follower->facingDirection = DIR_NORTH; + } + // Follower is north of player + else + { + gSprites[follower->spriteId].animNum = 4; + follower->facingDirection = DIR_SOUTH; + } + } + else + { + // Follower is east of player + if(follower->currentCoords.x > player->currentCoords.x) + { + gSprites[follower->spriteId].animNum = 6; + follower->facingDirection = DIR_WEST; + } + // Follower is west of player + else + { + gSprites[follower->spriteId].animNum = 7; + follower->facingDirection = DIR_EAST; + } + } + return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); +} + dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -5539,7 +5611,8 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -5773,7 +5846,19 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 2) + { + sprite->data[7] = 2; + sprite->animNum = 4; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -5789,7 +5874,19 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 3) + { + sprite->data[7] = 3; + sprite->animNum = 5; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -5805,7 +5902,19 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 4) + { + sprite->data[7] = 4; + sprite->animNum = 6; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -5821,7 +5930,19 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 5) + { + sprite->data[7] = 5; + sprite->animNum = 7; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -5895,7 +6016,8 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; } return result; } @@ -5944,6 +6066,11 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -5961,6 +6088,11 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -5978,6 +6110,11 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -5995,6 +6132,11 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = -8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -6058,7 +6200,19 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 6) + { + sprite->data[7] = 6; + sprite->animNum = 20; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -6074,7 +6228,19 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 7) + { + sprite->data[7] = 7; + sprite->animNum = 21; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -6090,7 +6256,19 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 8) + { + sprite->data[7] = 8; + sprite->animNum = 22; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -6106,7 +6284,19 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 9) + { + sprite->data[7] = 9; + sprite->animNum = 23; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -8290,6 +8480,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_BUG] = DoTracksGroundEffect_FootprintsBug, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) @@ -8324,6 +8517,73 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } +static void DoTracksGroundEffect_FootprintsSpot(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsA_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_FootprintsBug(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsB_FieldEffectData[a]); +} + +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]; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // Specifies which bike track shape to show next. @@ -8469,6 +8729,9 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; + + if (gSaveBlock2Ptr->follower.inProgress && objEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId] && objEvent->invisible == TRUE) + return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) @@ -9039,7 +9302,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); @@ -9515,16 +9778,16 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, s16 y = objectEvent->currentCoords.y; u8 spriteId; bool8 playerPriority; - + sprite->data[7] = 1; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite); - + if (objectEvent->facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) StartSpriteAffineAnim(sprite, 2); else StartSpriteAffineAnim(sprite, 0); - + if (y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is to the east or west of player { SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); @@ -9631,17 +9894,17 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, gSprites[spriteId].oam.priority = 2; gSprites[spriteId].data[0] = 0; } - + if (playerPriority) { gSprites[gPlayerAvatar.spriteId].oam.priority = 1; gSprites[gPlayerAvatar.spriteId].subpriority = 1; gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = TRUE; } - + sprite->oam.priority = 1; sprite->subpriority = 1; - + sprite->data[2]++; return FALSE; } @@ -9649,7 +9912,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sprite->data[7]++; - + if (objectEvent->currentCoords.x > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // east side { switch(objectEvent->facingDirection) @@ -9674,7 +9937,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 += 1 - sprite->data[7]; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9723,7 +9986,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 8; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9765,7 +10028,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 7; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9802,7 +10065,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 7; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9821,11 +10084,12 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->y2 = 6; } } - + if (sprite->data[7] >= 11) { FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; + gPlayerAvatar.preventStep = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; } @@ -9838,12 +10102,12 @@ u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, s sprite->data[7] = 11; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite); - + if (gObjectEvents[gPlayerAvatar.objectEventId].facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) StartSpriteAffineAnim(sprite, 3); else StartSpriteAffineAnim(sprite, 1); - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: @@ -9870,10 +10134,10 @@ u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, s u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sprite->data[7]--; - + if (sprite->data[7] == 10) gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: @@ -9897,12 +10161,12 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->x2 += -5; else sprite->x2 += 1 - sprite->data[7]; - + if (sprite->data[7] >= 10) sprite->y2 = 10; else sprite->y2 = sprite->data[7]; - + break; case DIR_EAST: if (sprite->data[7] <= 5) @@ -9916,15 +10180,15 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->x2 -= -4; else sprite->x2 -= 2 - sprite->data[7]; - + if (sprite->data[7] >= 10) sprite->y2 = 10; else sprite->y2 = sprite->data[7]; - + break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9941,7 +10205,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s else sprite->y2 -= (11 - sprite->data[7]) + 7; } - + if (sprite->data[7] <= 1) { // Set y2 of the 64x64 sprites back to 0, and compensate with y. @@ -9950,7 +10214,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->y -= 16; sprite->y2 = 0; } - + FreeSpriteOamMatrix(sprite); // Make sure water ripples at the feet of the follower if they are appearing on top of shallow water. @@ -9959,10 +10223,10 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s objectEvent->inShallowFlowingWater = TRUE; StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); } - + gPlayerAvatar.preventStep = FALSE; sprite->data[2]++; } - + return FALSE; } @@ -9971,3 +10235,28 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } + +// NEW +u16 GetMiniStepCount(u8 speed) +{ + return (u16)sStepTimes[speed]; +} + +void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) +{ + sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); +} + +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) + return TRUE; + + return FALSE; +} diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index a3a6ed342..60b23ced8 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,6 +20,7 @@ #include "strings.h" #include "task.h" #include "tv.h" +#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -1217,32 +1218,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) +u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1260,7 +1261,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1329,7 +1330,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1341,7 +1342,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) +u16 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1354,7 +1355,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1392,6 +1393,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); + CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) diff --git a/src/follow_me.c b/src/follow_me.c index c1bd932c6..f6d26100f 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -251,20 +251,25 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) { - gPlayerAvatar.preventStep = TRUE; - taskId = CreateTask(Task_FollowerOutOfDoor, 1); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[2] = follower->currentCoords.x; - gTasks[taskId].data[3] = follower->currentCoords.y; - goto RESET; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + else + { + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerOutOfDoor, 1); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = follower->currentCoords.x; + gTasks[taskId].data[3] = follower->currentCoords.y; + goto RESET; + } } else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) { gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; } - // This makes sure the follower is still invisible after diving or surfacing - if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))) + // This makes sure the follower is still invisible after diving or surfacing or exiting a door while player is on a bike + if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) follower->invisible = FALSE; MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding diff --git a/src/overworld.c b/src/overworld.c index d4fbaf29d..b37f7e665 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -39,7 +39,6 @@ #include "new_game.h" #include "palette.h" #include "play_time.h" -#include "pokemon.h" #include "random.h" #include "roamer.h" #include "rotating_gate.h" @@ -61,6 +60,7 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" +#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -877,6 +877,7 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); + UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -926,6 +927,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } + + FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1956,6 +1959,10 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } + + // if stop running but keep holding B -> fix follower frame + if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) + ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1991,6 +1998,20 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); + + // Make sure follower's sprite is properly positioned when map reloads. + if (gSaveBlock2Ptr->follower.inProgress) + { + switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) + { + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + break; + } + } } void SetMainCallback1(MainCallback cb) @@ -2173,6 +2194,7 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; + UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2639,10 +2661,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2677,6 +2696,7 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); + FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -3736,15 +3756,6 @@ void UpdateFollowerPokemonGraphic(void) u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + OBJ_EVENT_GFX_BULBASAUR - 1; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; - // If the lead Pokemon is Unown, use the correct sprite - if (leadMonGraphicId == 439) - { - u8 unownLetter = GET_UNOWN_LETTER(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_PERSONALITY)); - - if (unownLetter) - leadMonGraphicId = 652 + unownLetter; - } - if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) { // Sets the follower's graphic data to the proper following Pokemon graphic data @@ -3840,7 +3851,7 @@ static void BigSparkleCallback(struct Sprite *sprite) break; } } - + if (++sprite->data[0] >= 19) { FreeSpriteOamMatrix(sprite); @@ -3865,7 +3876,7 @@ bool8 IsBigSprite(u16 graphicsId) static void SparklePokeballCallback(struct Sprite *sprite) { sprite->data[0]++; - + if (sprite->data[0] >= 10) { struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; @@ -3874,60 +3885,58 @@ static void SparklePokeballCallback(struct Sprite *sprite) s16 y = gSprites[follower->spriteId].y; u8 spriteId; u16 graphicsId; - + DestroySprite(sprite); gSprites[follower->spriteId].oam.priority = ElevationToPriority(follower->previousElevation); gSprites[gPlayerAvatar.spriteId].oam.priority = ElevationToPriority(player->previousElevation); player->fixedPriority = FALSE; - + // Shift the location of the sparkle, depending on which way the follower will be facing - // Account for the other Unown forms - if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_DEOXYS_SPEED) - graphicsId = 200; #ifndef POKEMON_EXPANSION - else if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. + if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR - 25; - #endif else + #endif graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR; - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: x -= 16 - FollowerSparkleCoords[graphicsId][0]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][1]; - + break; case DIR_NORTH: x -= 16 - FollowerSparkleCoords[graphicsId][2]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][3]; - + break; case DIR_EAST: x += 7 - FollowerSparkleCoords[graphicsId][4]; // 7 looks better than 8 if (IsBigSprite(follower->graphicsId)) x += 16; - + y += 16 - FollowerSparkleCoords[graphicsId][5]; - + break; case DIR_WEST: x -= 8 - FollowerSparkleCoords[graphicsId][4]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][5]; - + break; } - + if (IsBigSprite(follower->graphicsId)) { // North sparkle @@ -3942,7 +3951,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 0); } - + // NorthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3955,7 +3964,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 1); } - + // East sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3968,7 +3977,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 2); } - + // SouthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3981,7 +3990,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 3); } - + // South sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3994,7 +4003,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 4); } - + // SouthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4007,7 +4016,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 5); } - + // West sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4020,7 +4029,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 6); } - + // NorthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4047,7 +4056,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 0); } - + // NorthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4059,7 +4068,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 1); } - + // East sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4071,7 +4080,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 2); } - + // SouthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4083,7 +4092,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 3); } - + // South sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4095,7 +4104,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 4); } - + // SouthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4107,7 +4116,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 5); } - + // West sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4119,7 +4128,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 6); } - + // NorthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4144,7 +4153,7 @@ void FollowerPokeballSparkle(void) s16 x = player->currentCoords.x; s16 y = player->currentCoords.y; u8 spriteId; - + switch(player->facingDirection) { case DIR_SOUTH: @@ -4162,7 +4171,7 @@ void FollowerPokeballSparkle(void) break; } gSprites[follower->spriteId].x = x; - + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { case ITEM_MASTER_BALL: @@ -4246,20 +4255,20 @@ void FollowerPokeballSparkle(void) spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; } - + if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].oam.priority = 2; gSprites[spriteId].data[0] = 0; } - + follower->currentCoords.x = player->currentCoords.x; follower->currentCoords.y = player->currentCoords.y; follower->facingDirection = player->facingDirection; - + gSprites[follower->spriteId].animNum = player->facingDirection - 1; - + if (player->facingDirection == DIR_NORTH) { gSprites[follower->spriteId].oam.priority = 0; @@ -4275,7 +4284,8 @@ void FollowerPokeballSparkle(void) gSprites[gPlayerAvatar.spriteId].subpriority = 0; } player->fixedPriority = TRUE; - + gPlayerAvatar.preventStep = TRUE; + SeekSpriteAnim(&gSprites[follower->spriteId], 0); ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); } @@ -4283,8 +4293,10 @@ void FollowerPokeballSparkle(void) void FollowerIntoPokeball(void) { - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.inProgress) { + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gPlayerAvatar.preventStep = TRUE; ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } From 143b2a51e22bab243a018e227c1030c250d9c088 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 09:02:35 -0700 Subject: [PATCH 43/71] Revert "Bug fixes" This reverts commit 76fdc5144029ca7fc7cf6f36207bb02cd02699fa. --- src/event_object_movement.c | 411 ++++++------------------------------ src/field_player_avatar.c | 22 +- src/follow_me.c | 21 +- src/overworld.c | 122 +++++------ 4 files changed, 134 insertions(+), 442 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ad259841c..6b2742c92 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -25,7 +25,6 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" -#include "follow_me.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" #include "constants/field_effects.h" @@ -33,7 +32,6 @@ #include "constants/mauville_old_man.h" #include "constants/trainer_types.h" #include "constants/union_room.h" -#include "constants/metatile_behaviors.h" // this file was known as evobjmv.c in Game Freak's original source @@ -82,8 +80,6 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; -extern void PlaySE(u16); -extern void PlaySE12WithPanning(u16, s8); static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static void SetMovementDelay(struct Sprite *, s16); @@ -119,9 +115,6 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*); static void DoTracksGroundEffect_None(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent*, struct Sprite*, u8); -static void DoTracksGroundEffect_FootprintsBug(struct ObjectEvent*, struct Sprite*, u8); -static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent*, struct Sprite*, u8); -static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent*, struct Sprite*); static void DoGroundEffects_OnSpawn(struct ObjectEvent*, struct Sprite*); @@ -146,7 +139,7 @@ static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); -static u16 FindObjectEventPaletteIndexByTag(u16); +static u8 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); @@ -276,7 +269,6 @@ 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_FOLLOWING_POKEMON] = MovementType_FollowingPokemon, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -321,7 +313,6 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, - [MOVEMENT_TYPE_FOLLOWING_POKEMON] = FALSE, }; const u8 gInitialMovementTypeFacingDirections[] = { @@ -406,7 +397,6 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, - [MOVEMENT_TYPE_FOLLOWING_POKEMON] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 @@ -1741,9 +1731,7 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId == OBJ_EVENT_ID_FOLLOWER) - return GetFollowerObjectId(); - else if (localId < OBJ_EVENT_ID_PLAYER) + if (localId < OBJ_EVENT_ID_PLAYER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1890,7 +1878,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -void RemoveObjectEvent(struct ObjectEvent *objectEvent) +static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1908,13 +1896,10 @@ 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) @@ -1952,6 +1937,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; + *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1978,7 +1964,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -2189,7 +2175,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) + if (objectEvent->active && !objectEvent->isPlayer) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2227,6 +2213,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; + u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -2251,6 +2238,16 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) LoadObjectEventPalette(spriteTemplate.paletteTag); UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); } + else if (paletteSlot == 10) + { + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + } + else if (paletteSlot >= 16) + { + paletteSlot -= 16; + _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + } + *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -2303,7 +2300,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -2333,7 +2330,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) { u8 objectEventId; @@ -2390,7 +2387,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) { u8 bard; @@ -2517,7 +2514,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -2532,9 +2529,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u16 FindObjectEventPaletteIndexByTag(u16 tag) +static u8 FindObjectEventPaletteIndexByTag(u16 tag) { - u16 i; + u8 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { @@ -2880,7 +2877,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -3263,38 +3260,6 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } -movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) - -bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - ClearObjectEventMovement(objectEvent, sprite); - sprite->data[1] = 1; - return TRUE; -} - -bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); - sprite->data[1] = 2; - return TRUE; -} - -bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) - { - objectEvent->singleMovementActive = FALSE; - sprite->data[1] = 3; - } - return FALSE; -} - -bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - sprite->data[1] = 1; - return TRUE; -} - movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5183,9 +5148,8 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) + if (curObject->active && curObject != objectEvent) { - // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -5333,7 +5297,6 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; - FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -5434,41 +5397,6 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } -bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) -{ - if(follower->currentCoords.x == player->currentCoords.x) - { - // Follower is south of player - if(follower->currentCoords.y > player->currentCoords.y) - { - gSprites[follower->spriteId].animNum = 5; - follower->facingDirection = DIR_NORTH; - } - // Follower is north of player - else - { - gSprites[follower->spriteId].animNum = 4; - follower->facingDirection = DIR_SOUTH; - } - } - else - { - // Follower is east of player - if(follower->currentCoords.x > player->currentCoords.x) - { - gSprites[follower->spriteId].animNum = 6; - follower->facingDirection = DIR_WEST; - } - // Follower is west of player - else - { - gSprites[follower->spriteId].animNum = 7; - follower->facingDirection = DIR_EAST; - } - } - return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); -} - dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -5611,8 +5539,7 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) - sprite->animPaused = TRUE; + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -5846,19 +5773,7 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 2) - { - sprite->data[7] = 2; - sprite->animNum = 4; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -5874,19 +5789,7 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 3) - { - sprite->data[7] = 3; - sprite->animNum = 5; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -5902,19 +5805,7 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 4) - { - sprite->data[7] = 4; - sprite->animNum = 6; - sprite->x2 = 8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -5930,19 +5821,7 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 5) - { - sprite->data[7] = 5; - sprite->animNum = 7; - sprite->x2 = -8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); - } - else - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -6016,8 +5895,7 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) - sprite->animPaused = TRUE; + sprite->animPaused = TRUE; } return result; } @@ -6066,11 +5944,6 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 0; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -6088,11 +5961,6 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 0; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -6110,11 +5978,6 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = 8; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -6132,11 +5995,6 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - sprite->x2 = -8; - sprite->data[7] = 10; - } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -6200,19 +6058,7 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 6) - { - sprite->data[7] = 6; - sprite->animNum = 20; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -6228,19 +6074,7 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 7) - { - sprite->data[7] = 7; - sprite->animNum = 21; - sprite->x2 = 0; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -6256,19 +6090,7 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 8) - { - sprite->data[7] = 8; - sprite->animNum = 22; - sprite->x2 = 8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -6284,19 +6106,7 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) - { - if(sprite->data[7] != 9) - { - sprite->data[7] = 9; - sprite->animNum = 23; - sprite->x2 = -8; - SeekSpriteAnim(sprite, ++sprite->animCmdIndex); - } - InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); - } - else - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -8480,9 +8290,6 @@ 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_BUG] = DoTracksGroundEffect_FootprintsBug, - [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) @@ -8517,73 +8324,6 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } -static void DoTracksGroundEffect_FootprintsSpot(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; - if (Random() % 2 == 0) - PlaySE(159); - if (Random() % 2 == 1) - PlaySE12WithPanning(159, 1); - FieldEffectStart(otherFootprintsA_FieldEffectData[a]); -} - -static void DoTracksGroundEffect_FootprintsBug(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; - if (Random() % 2 == 0) - PlaySE(159); - if (Random() % 2 == 1) - PlaySE12WithPanning(159, 1); - FieldEffectStart(otherFootprintsB_FieldEffectData[a]); -} - -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]; - FieldEffectStart(FLDEFF_TRACKS_SLITHER); - } -} - static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // Specifies which bike track shape to show next. @@ -8729,9 +8469,6 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; - - if (gSaveBlock2Ptr->follower.inProgress && objEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId] && objEvent->invisible == TRUE) - return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) @@ -9302,7 +9039,7 @@ void TurnVirtualObject(u8 virtualObjId, u8 direction) StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(direction)); } -void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId) +void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) { int spriteId = GetVirtualObjectSpriteId(virtualObjId); @@ -9778,16 +9515,16 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, s16 y = objectEvent->currentCoords.y; u8 spriteId; bool8 playerPriority; - + sprite->data[7] = 1; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite); - + if (objectEvent->facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) StartSpriteAffineAnim(sprite, 2); else StartSpriteAffineAnim(sprite, 0); - + if (y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y) // If follower is to the east or west of player { SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); @@ -9894,17 +9631,17 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, gSprites[spriteId].oam.priority = 2; gSprites[spriteId].data[0] = 0; } - + if (playerPriority) { gSprites[gPlayerAvatar.spriteId].oam.priority = 1; gSprites[gPlayerAvatar.spriteId].subpriority = 1; gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = TRUE; } - + sprite->oam.priority = 1; sprite->subpriority = 1; - + sprite->data[2]++; return FALSE; } @@ -9912,7 +9649,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sprite->data[7]++; - + if (objectEvent->currentCoords.x > gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x) // east side { switch(objectEvent->facingDirection) @@ -9937,7 +9674,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 += 1 - sprite->data[7]; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -9986,7 +9723,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 8; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -10028,7 +9765,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 7; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -10065,7 +9802,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->x2 -= 7; break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -10084,12 +9821,11 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->y2 = 6; } } - + if (sprite->data[7] >= 11) { FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; - gPlayerAvatar.preventStep = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; } @@ -10102,12 +9838,12 @@ u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, s sprite->data[7] = 11; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite); - + if (gObjectEvents[gPlayerAvatar.objectEventId].facingDirection == DIR_EAST && GetObjectEventGraphicsInfo(objectEvent->graphicsId)->anims != gObjectEventImageAnimTable_FollowingPokemon_UniqueEast && objectEvent->graphicsId != OBJ_EVENT_GFX_KRABBY) StartSpriteAffineAnim(sprite, 3); else StartSpriteAffineAnim(sprite, 1); - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: @@ -10134,10 +9870,10 @@ u8 MovementAction_FollowingPokemon_Grow_Step0(struct ObjectEvent *objectEvent, s u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { sprite->data[7]--; - + if (sprite->data[7] == 10) gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible = FALSE; - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: @@ -10161,12 +9897,12 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->x2 += -5; else sprite->x2 += 1 - sprite->data[7]; - + if (sprite->data[7] >= 10) sprite->y2 = 10; else sprite->y2 = sprite->data[7]; - + break; case DIR_EAST: if (sprite->data[7] <= 5) @@ -10180,15 +9916,15 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->x2 -= -4; else sprite->x2 -= 2 - sprite->data[7]; - + if (sprite->data[7] >= 10) sprite->y2 = 10; else sprite->y2 = sprite->data[7]; - + break; } - + // Adjust the height of the 64x64 sprites differently if (IsBigSprite(objectEvent->graphicsId)) { @@ -10205,7 +9941,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s else sprite->y2 -= (11 - sprite->data[7]) + 7; } - + if (sprite->data[7] <= 1) { // Set y2 of the 64x64 sprites back to 0, and compensate with y. @@ -10214,7 +9950,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s sprite->y -= 16; sprite->y2 = 0; } - + FreeSpriteOamMatrix(sprite); // Make sure water ripples at the feet of the follower if they are appearing on top of shallow water. @@ -10223,10 +9959,10 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s objectEvent->inShallowFlowingWater = TRUE; StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); } - gPlayerAvatar.preventStep = FALSE; + sprite->data[2]++; } - + return FALSE; } @@ -10235,28 +9971,3 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } - -// NEW -u16 GetMiniStepCount(u8 speed) -{ - return (u16)sStepTimes[speed]; -} - -void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) -{ - sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); -} - -bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) -{ - s16 x; - s16 y; - - x = objectEvent->currentCoords.x; - y = objectEvent->currentCoords.y; - MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); - if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) - return TRUE; - - return FALSE; -} diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 60b23ced8..a3a6ed342 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,7 +20,6 @@ #include "strings.h" #include "task.h" #include "tv.h" -#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -1218,32 +1217,32 @@ void StopPlayerAvatar(void) } } -u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sRivalAvatarGfxIds[state][gender]; } -u16 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sPlayerAvatarGfxIds[state][gender]; } -u16 GetFRLGAvatarGraphicsIdByGender(u8 gender) +u8 GetFRLGAvatarGraphicsIdByGender(u8 gender) { return sFRLGAvatarGfxIds[gender]; } -u16 GetRSAvatarGraphicsIdByGender(u8 gender) +u8 GetRSAvatarGraphicsIdByGender(u8 gender) { return sRSAvatarGfxIds[gender]; } -u16 GetPlayerAvatarGraphicsIdByStateId(u8 state) +u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) { return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); } -u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) +u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) { switch (gfxId) { @@ -1261,7 +1260,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) { switch (gfxId) { @@ -1330,7 +1329,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) { u8 i; @@ -1342,7 +1341,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u16 GetPlayerAvatarGraphicsIdByCurrentState(void) +u8 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1355,7 +1354,7 @@ u16 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1393,7 +1392,6 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); - CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) diff --git a/src/follow_me.c b/src/follow_me.c index f6d26100f..c1bd932c6 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -251,25 +251,20 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) { - if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - else - { - gPlayerAvatar.preventStep = TRUE; - taskId = CreateTask(Task_FollowerOutOfDoor, 1); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[2] = follower->currentCoords.x; - gTasks[taskId].data[3] = follower->currentCoords.y; - goto RESET; - } + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerOutOfDoor, 1); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = follower->currentCoords.x; + gTasks[taskId].data[3] = follower->currentCoords.y; + goto RESET; } else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) { gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; } - // This makes sure the follower is still invisible after diving or surfacing or exiting a door while player is on a bike - if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) + // This makes sure the follower is still invisible after diving or surfacing + if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))) follower->invisible = FALSE; MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding diff --git a/src/overworld.c b/src/overworld.c index b37f7e665..d4fbaf29d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -39,6 +39,7 @@ #include "new_game.h" #include "palette.h" #include "play_time.h" +#include "pokemon.h" #include "random.h" #include "roamer.h" #include "rotating_gate.h" @@ -60,7 +61,6 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" -#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -877,7 +877,6 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); - UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -927,8 +926,6 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } - - FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1959,10 +1956,6 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } - - // if stop running but keep holding B -> fix follower frame - if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) - ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1998,20 +1991,6 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); - - // Make sure follower's sprite is properly positioned when map reloads. - if (gSaveBlock2Ptr->follower.inProgress) - { - switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) - { - case DIR_EAST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; - break; - case DIR_WEST: - gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; - break; - } - } } void SetMainCallback1(MainCallback cb) @@ -2194,7 +2173,6 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; - UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2661,7 +2639,10 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - FreeAllSpritePalettes(); + if (!a1) + InitObjectEventPalettes(0); + else + InitObjectEventPalettes(1); FieldEffectActiveListClear(); StartWeather(); @@ -2696,7 +2677,6 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); - FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -3756,6 +3736,15 @@ void UpdateFollowerPokemonGraphic(void) u16 leadMonGraphicId = GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_SPECIES, NULL) + OBJ_EVENT_GFX_BULBASAUR - 1; struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; + // If the lead Pokemon is Unown, use the correct sprite + if (leadMonGraphicId == 439) + { + u8 unownLetter = GET_UNOWN_LETTER(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_PERSONALITY)); + + if (unownLetter) + leadMonGraphicId = 652 + unownLetter; + } + if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) { // Sets the follower's graphic data to the proper following Pokemon graphic data @@ -3851,7 +3840,7 @@ static void BigSparkleCallback(struct Sprite *sprite) break; } } - + if (++sprite->data[0] >= 19) { FreeSpriteOamMatrix(sprite); @@ -3876,7 +3865,7 @@ bool8 IsBigSprite(u16 graphicsId) static void SparklePokeballCallback(struct Sprite *sprite) { sprite->data[0]++; - + if (sprite->data[0] >= 10) { struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId]; @@ -3885,58 +3874,60 @@ static void SparklePokeballCallback(struct Sprite *sprite) s16 y = gSprites[follower->spriteId].y; u8 spriteId; u16 graphicsId; - + DestroySprite(sprite); gSprites[follower->spriteId].oam.priority = ElevationToPriority(follower->previousElevation); gSprites[gPlayerAvatar.spriteId].oam.priority = ElevationToPriority(player->previousElevation); player->fixedPriority = FALSE; - + // Shift the location of the sparkle, depending on which way the follower will be facing + // Account for the other Unown forms + if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_DEOXYS_SPEED) + graphicsId = 200; #ifndef POKEMON_EXPANSION - // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. - if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) + else if (gSaveBlock2Ptr->follower.graphicsId > OBJ_EVENT_GFX_CELEBI) // Gen 3+ OBJ_EVENT_GFX constants are 25 too high due to OLD_UNOWN constants. graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR - 25; - else #endif + else graphicsId = gSaveBlock2Ptr->follower.graphicsId - OBJ_EVENT_GFX_BULBASAUR; - + switch(gObjectEvents[gPlayerAvatar.objectEventId].facingDirection) { case DIR_SOUTH: x -= 16 - FollowerSparkleCoords[graphicsId][0]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][1]; - + break; case DIR_NORTH: x -= 16 - FollowerSparkleCoords[graphicsId][2]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][3]; - + break; case DIR_EAST: x += 7 - FollowerSparkleCoords[graphicsId][4]; // 7 looks better than 8 if (IsBigSprite(follower->graphicsId)) x += 16; - + y += 16 - FollowerSparkleCoords[graphicsId][5]; - + break; case DIR_WEST: x -= 8 - FollowerSparkleCoords[graphicsId][4]; if (IsBigSprite(follower->graphicsId)) x -= 16; - + y += 16 - FollowerSparkleCoords[graphicsId][5]; - + break; } - + if (IsBigSprite(follower->graphicsId)) { // North sparkle @@ -3951,7 +3942,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 0); } - + // NorthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3964,7 +3955,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 1); } - + // East sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3977,7 +3968,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 2); } - + // SouthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -3990,7 +3981,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 3); } - + // South sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4003,7 +3994,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 4); } - + // SouthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4016,7 +4007,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 5); } - + // West sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4029,7 +4020,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 6); } - + // NorthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &BigSparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4056,7 +4047,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 0); } - + // NorthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4068,7 +4059,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 1); } - + // East sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4080,7 +4071,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 2); } - + // SouthEast sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4092,7 +4083,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 3); } - + // South sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4104,7 +4095,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 4); } - + // SouthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4116,7 +4107,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 5); } - + // West sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4128,7 +4119,7 @@ static void SparklePokeballCallback(struct Sprite *sprite) InitSpriteAffineAnim(&gSprites[spriteId]); StartSpriteAffineAnim(&gSprites[spriteId], 6); } - + // NorthWest sparkle spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_EXPANDING_SPARKLE, &SparkleCallback, x, y, 0); if (spriteId != MAX_SPRITES) @@ -4153,7 +4144,7 @@ void FollowerPokeballSparkle(void) s16 x = player->currentCoords.x; s16 y = player->currentCoords.y; u8 spriteId; - + switch(player->facingDirection) { case DIR_SOUTH: @@ -4171,7 +4162,7 @@ void FollowerPokeballSparkle(void) break; } gSprites[follower->spriteId].x = x; - + switch(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_POKEBALL)) { case ITEM_MASTER_BALL: @@ -4255,20 +4246,20 @@ void FollowerPokeballSparkle(void) spriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_ITEM_BALL, &SparklePokeballCallback, x, y, 2); break; } - + if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].oam.priority = 2; gSprites[spriteId].data[0] = 0; } - + follower->currentCoords.x = player->currentCoords.x; follower->currentCoords.y = player->currentCoords.y; follower->facingDirection = player->facingDirection; - + gSprites[follower->spriteId].animNum = player->facingDirection - 1; - + if (player->facingDirection == DIR_NORTH) { gSprites[follower->spriteId].oam.priority = 0; @@ -4284,8 +4275,7 @@ void FollowerPokeballSparkle(void) gSprites[gPlayerAvatar.spriteId].subpriority = 0; } player->fixedPriority = TRUE; - gPlayerAvatar.preventStep = TRUE; - + SeekSpriteAnim(&gSprites[follower->spriteId], 0); ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); } @@ -4293,10 +4283,8 @@ void FollowerPokeballSparkle(void) void FollowerIntoPokeball(void) { - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.inProgress) + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) { - gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; - gPlayerAvatar.preventStep = TRUE; ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } From 21ec0f0223eee93b97242c6943544c5c384b7d6a Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 09:02:50 -0700 Subject: [PATCH 44/71] Revert "Merge branch 'master' into FollowingPokemon_Gen1-3" This reverts commit 63b2bd9a44c4cf5faa561160dec788573f819a7b, reversing changes made to a716f522f3599ecf073c7e302e3c72dbaac053c3. --- INSTALL.md | 19 +- Makefile | 2 +- asm/macros/event.inc | 22 + asm/macros/trainer_hill.inc | 8 +- data/battle_anim_scripts.s | 546 +-- data/event_scripts.s | 1 + data/field_effect_scripts.s | 15 + .../scripts.inc | 8 +- .../scripts.inc | 3 +- data/maps/BattleFrontier_Lounge2/scripts.inc | 26 +- .../map.json | 13 + .../scripts.inc | 1 + data/maps/TrainerHill_Entrance/scripts.inc | 2 +- data/script_cmd_table.inc | 4 + data/scripts/field_move_scripts.inc | 66 + data/scripts/gift_altering_cave.inc | 2 +- data/text/contest_strings.inc | 141 +- data/text/pc_transfer.inc | 3 +- data/text/pokedex_rating.inc | 2 +- data/text/surf.inc | 3 +- data/text/tv.inc | 30 +- docs/bugs_and_glitches.md | 51 + gflib/bg.h | 2 +- gflib/sprite.c | 11 +- gflib/sprite.h | 2 +- gflib/text.c | 8 +- graphics/door_anims/abandoned_ship.png | Bin 306 -> 420 bytes graphics/door_anims/abandoned_ship_room.png | Bin 305 -> 419 bytes graphics/door_anims/battle_arena.png | Bin 394 -> 509 bytes graphics/door_anims/battle_arena_lobby.png | Bin 293 -> 408 bytes graphics/door_anims/battle_dome.png | Bin 279 -> 394 bytes graphics/door_anims/battle_dome_corridor.png | Bin 347 -> 462 bytes graphics/door_anims/battle_dome_lobby.png | Bin 374 -> 486 bytes graphics/door_anims/battle_factory.png | Bin 251 -> 366 bytes graphics/door_anims/battle_frontier.png | Bin 306 -> 421 bytes .../door_anims/battle_frontier_sliding.png | Bin 277 -> 390 bytes graphics/door_anims/battle_palace_lobby.png | Bin 319 -> 432 bytes graphics/door_anims/battle_tent.png | Bin 429 -> 544 bytes graphics/door_anims/battle_tent_interior.png | Bin 389 -> 504 bytes graphics/door_anims/battle_tower.png | Bin 352 -> 467 bytes graphics/door_anims/battle_tower_corridor.png | Bin 0 -> 404 bytes graphics/door_anims/battle_tower_elevator.png | Bin 283 -> 398 bytes .../battle_tower_multi_corridor.png | Bin 413 -> 554 bytes graphics/door_anims/battle_tower_old.png | Bin 343 -> 458 bytes graphics/door_anims/birchs_lab.png | Bin 287 -> 402 bytes graphics/door_anims/cable_club.png | Bin 253 -> 368 bytes graphics/door_anims/contest.png | Bin 337 -> 452 bytes graphics/door_anims/cycling_road.png | Bin 328 -> 441 bytes graphics/door_anims/fallarbor_light_roof.png | Bin 317 -> 432 bytes graphics/door_anims/general.png | Bin 310 -> 425 bytes graphics/door_anims/gym.png | Bin 289 -> 404 bytes graphics/door_anims/lilycove.png | Bin 311 -> 426 bytes graphics/door_anims/lilycove_dept_store.png | Bin 315 -> 430 bytes graphics/door_anims/lilycove_wooden.png | Bin 286 -> 401 bytes graphics/door_anims/mauville.png | Bin 317 -> 432 bytes graphics/door_anims/mossdeep_space_center.png | Bin 394 -> 509 bytes graphics/door_anims/pacifidlog.png | Bin 337 -> 452 bytes graphics/door_anims/petalburg_gym.png | Bin 289 -> 0 bytes graphics/door_anims/poke_center.png | Bin 304 -> 419 bytes graphics/door_anims/pokemon_league.png | Bin 332 -> 445 bytes graphics/door_anims/rustboro_gray.png | Bin 325 -> 440 bytes graphics/door_anims/rustboro_tan.png | Bin 325 -> 440 bytes graphics/door_anims/safari_zone.png | Bin 343 -> 458 bytes graphics/door_anims/sootopolis.png | Bin 322 -> 435 bytes .../door_anims/sootopolis_peaked_roof.png | Bin 322 -> 435 bytes .../trainer_hill_lobby_elevator.png | Bin 231 -> 348 bytes ...unused_battle_frontier.png => unknown.png} | Bin 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 .../palettes/followers/aggron.pal | 19 + .../palettes/followers/aipom.pal | 19 + .../palettes/followers/ampharos.pal | 19 + .../palettes/followers/anorith.pal | 19 + .../palettes/followers/ariados.pal | 19 + .../palettes/followers/armaldo.pal | 19 + .../palettes/followers/articuno.pal | 19 + .../palettes/followers/bagon.pal | 19 + .../palettes/followers/barboach.pal | 19 + .../palettes/followers/bayleef.pal | 19 + .../palettes/followers/beautifly.pal | 19 + .../palettes/followers/beldum.pal | 19 + .../palettes/followers/bellossom.pal | 19 + .../palettes/followers/blastoise.pal | 19 + .../palettes/followers/blaziken.pal | 19 + .../palettes/followers/blissey.pal | 19 + .../palettes/followers/breloom.pal | 19 + .../palettes/followers/butterfree.pal | 19 + .../palettes/followers/camerupt.pal | 19 + .../palettes/followers/carvanha.pal | 19 + .../palettes/followers/caterpie.pal | 19 + .../palettes/followers/celebi.pal | 19 + .../palettes/followers/charizard.pal | 19 + .../palettes/followers/charmander.pal | 19 + .../palettes/followers/charmeleon.pal | 19 + .../palettes/followers/chimecho.pal | 19 + .../palettes/followers/chinchou.pal | 19 + .../palettes/followers/clamperl.pal | 19 + .../palettes/followers/claydol.pal | 19 + .../palettes/followers/clefable.pal | 19 + .../palettes/followers/cloyster.pal | 19 + .../palettes/followers/corphish.pal | 19 + .../palettes/followers/corsola.pal | 19 + .../palettes/followers/cradily.pal | 19 + .../palettes/followers/crawdaunt.pal | 19 + .../palettes/followers/crobat.pal | 19 + .../palettes/followers/croconaw.pal | 19 + .../palettes/followers/cyndaquil.pal | 19 + .../palettes/followers/delcatty.pal | 19 + .../palettes/followers/delibird.pal | 19 + .../palettes/followers/deoxys.pal | 19 + .../palettes/followers/diglett.pal | 19 + .../palettes/followers/dodrio.pal | 19 + .../palettes/followers/donphan.pal | 19 + .../palettes/followers/dragonair.pal | 19 + .../palettes/followers/dragonite.pal | 19 + .../palettes/followers/dratini.pal | 19 + .../palettes/followers/dugtrio.pal | 19 + .../palettes/followers/dunsparce.pal | 19 + .../palettes/followers/dusclops.pal | 19 + .../palettes/followers/duskull.pal | 19 + .../palettes/followers/dustox.pal | 19 + .../palettes/followers/eevee.pal | 19 + .../palettes/followers/ekans.pal | 19 + .../palettes/followers/electrike.pal | 19 + .../palettes/followers/entei.pal | 19 + .../palettes/followers/espeon.pal | 19 + .../palettes/followers/exeggutor.pal | 19 + .../palettes/followers/exploud.pal | 19 + .../palettes/followers/farfetchd.pal | 19 + .../palettes/followers/fearow.pal | 19 + .../palettes/followers/feebas.pal | 19 + .../palettes/followers/feraligatr.pal | 19 + .../palettes/followers/flaaffy.pal | 19 + .../palettes/followers/flareon.pal | 19 + .../palettes/followers/flygon.pal | 19 + .../palettes/followers/forretress.pal | 19 + .../palettes/followers/gardevoir.pal | 19 + .../palettes/followers/gastly.pal | 19 + .../palettes/followers/gengar.pal | 19 + .../palettes/followers/girafarig.pal | 19 + .../palettes/followers/glalie.pal | 19 + .../palettes/followers/gligar.pal | 19 + .../palettes/followers/goldeen.pal | 19 + .../palettes/followers/golduck.pal | 19 + .../palettes/followers/golem.pal | 19 + .../palettes/followers/gorebyss.pal | 19 + .../palettes/followers/granbull.pal | 19 + .../palettes/followers/groudon.pal | 19 + .../palettes/followers/grovyle.pal | 19 + .../palettes/followers/grumpig.pal | 19 + .../palettes/followers/gulpin.pal | 19 + .../palettes/followers/gyarados.pal | 19 + .../palettes/followers/hariyama.pal | 19 + .../palettes/followers/haunter.pal | 19 + .../palettes/followers/heracross.pal | 19 + .../palettes/followers/hitmonchan.pal | 19 + .../palettes/followers/hitmonlee.pal | 19 + .../palettes/followers/hitmontop.pal | 19 + .../palettes/followers/ho_oh.pal | 19 + .../palettes/followers/hoothoot.pal | 19 + .../palettes/followers/hoppip.pal | 19 + .../palettes/followers/horsea.pal | 19 + .../palettes/followers/huntail.pal | 19 + .../palettes/followers/igglybuff.pal | 19 + .../palettes/followers/illumise.pal | 19 + .../palettes/followers/ivysaur.pal | 19 + .../palettes/followers/jigglypuff.pal | 19 + .../palettes/followers/jirachi.pal | 19 + .../palettes/followers/jolteon.pal | 19 + .../palettes/followers/jumpluff.pal | 19 + .../object_events/palettes/followers/jynx.pal | 19 + .../palettes/followers/kabuto.pal | 19 + .../palettes/followers/kabutops.pal | 19 + .../palettes/followers/kangaskhan.pal | 19 + .../palettes/followers/kecleon.pal | 19 + .../palettes/followers/kingdra.pal | 19 + .../palettes/followers/kyogre.pal | 19 + .../palettes/followers/lanturn.pal | 19 + .../palettes/followers/lapras.pal | 19 + .../palettes/followers/latias.pal | 19 + .../palettes/followers/latios.pal | 19 + .../palettes/followers/ledian.pal | 19 + .../palettes/followers/ledyba.pal | 19 + .../palettes/followers/lickitung.pal | 19 + .../palettes/followers/lileep.pal | 19 + .../palettes/followers/linoone.pal | 19 + .../palettes/followers/lombre.pal | 19 + .../palettes/followers/lotad.pal | 19 + .../palettes/followers/ludicolo.pal | 19 + .../palettes/followers/lugia.pal | 19 + .../palettes/followers/luvdisc.pal | 19 + .../palettes/followers/machamp.pal | 19 + .../palettes/followers/machoke.pal | 19 + .../palettes/followers/machop.pal | 19 + .../palettes/followers/magby.pal | 19 + .../palettes/followers/magcargo.pal | 19 + .../palettes/followers/magikarp.pal | 19 + .../palettes/followers/magmar.pal | 19 + .../palettes/followers/magnemite.pal | 19 + .../palettes/followers/makuhita.pal | 19 + .../palettes/followers/manectric.pal | 19 + .../palettes/followers/mankey.pal | 19 + .../palettes/followers/mantine.pal | 19 + .../palettes/followers/mareep.pal | 19 + .../palettes/followers/marshtomp.pal | 19 + .../palettes/followers/masquerain.pal | 19 + .../palettes/followers/mawile.pal | 19 + .../palettes/followers/medicham.pal | 19 + .../palettes/followers/meditite.pal | 19 + .../palettes/followers/meganium.pal | 19 + .../palettes/followers/meowth.pal | 19 + .../palettes/followers/metang.pal | 19 + .../object_events/palettes/followers/mew.pal | 19 + .../palettes/followers/mewtwo.pal | 19 + .../palettes/followers/mightyena.pal | 19 + .../palettes/followers/milotic.pal | 19 + .../palettes/followers/miltank.pal | 19 + .../palettes/followers/misdreavus.pal | 19 + .../palettes/followers/moltres.pal | 19 + .../palettes/followers/mr_mime.pal | 19 + .../palettes/followers/mudkip.pal | 19 + .../palettes/followers/murkrow.pal | 19 + .../object_events/palettes/followers/natu.pal | 19 + .../palettes/followers/nidoking.pal | 19 + .../palettes/followers/nidoqueen.pal | 19 + .../palettes/followers/nidoran_f.pal | 19 + .../palettes/followers/nidorina.pal | 19 + .../palettes/followers/nincada.pal | 19 + .../palettes/followers/ninetales.pal | 19 + .../palettes/followers/ninjask.pal | 19 + .../palettes/followers/noctowl.pal | 19 + .../palettes/followers/nosepass.pal | 19 + .../palettes/followers/numel.pal | 19 + .../palettes/followers/nuzleaf.pal | 19 + .../palettes/followers/octillery.pal | 19 + .../palettes/followers/omanyte.pal | 19 + .../palettes/followers/omastar.pal | 19 + .../palettes/followers/pelipper.pal | 19 + .../palettes/followers/persian.pal | 19 + .../palettes/followers/phanpy.pal | 19 + .../palettes/followers/pichu.pal | 19 + .../palettes/followers/pidgeot.pal | 19 + .../palettes/followers/pidgeotto.pal | 19 + .../palettes/followers/pidgey.pal | 19 + .../palettes/followers/pikachu.pal | 19 + .../palettes/followers/piloswine.pal | 19 + .../palettes/followers/pineco.pal | 19 + .../palettes/followers/politoed.pal | 19 + .../palettes/followers/poliwag.pal | 19 + .../palettes/followers/poochyena.pal | 19 + .../palettes/followers/porygon.pal | 19 + .../palettes/followers/porygon2.pal | 19 + .../palettes/followers/primeape.pal | 19 + .../palettes/followers/quilava.pal | 19 + .../palettes/followers/qwilfish.pal | 19 + .../palettes/followers/raichu.pal | 19 + .../palettes/followers/raikou.pal | 19 + .../palettes/followers/raticate.pal | 19 + .../palettes/followers/rattata.pal | 19 + .../palettes/followers/rayquaza.pal | 19 + .../palettes/followers/regice.pal | 19 + .../palettes/followers/regirock.pal | 19 + .../palettes/followers/registeel.pal | 19 + .../palettes/followers/relicanth.pal | 19 + .../palettes/followers/remoraid.pal | 19 + .../palettes/followers/rhydon.pal | 19 + .../palettes/followers/roselia.pal | 19 + .../palettes/followers/sableye.pal | 19 + .../palettes/followers/salamence.pal | 19 + .../palettes/followers/sandshrew.pal | 19 + .../palettes/followers/sandslash.pal | 19 + .../palettes/followers/sceptile.pal | 19 + .../palettes/followers/scizor.pal | 19 + .../palettes/followers/scyther.pal | 19 + .../palettes/followers/seadra.pal | 19 + .../palettes/followers/seaking.pal | 19 + .../palettes/followers/sealeo.pal | 19 + .../palettes/followers/seedot.pal | 19 + .../object_events/palettes/followers/seel.pal | 19 + .../palettes/followers/sentret.pal | 19 + .../palettes/followers/seviper.pal | 19 + .../palettes/followers/sharpedo.pal | 19 + .../palettes/followers/shedinja.pal | 19 + .../palettes/followers/shelgon.pal | 19 + .../palettes/followers/shellder.pal | 19 + .../palettes/followers/shiftry.pal | 19 + .../palettes/followers/shroomish.pal | 19 + .../palettes/followers/shuckle.pal | 19 + .../palettes/followers/skarmory.pal | 19 + .../palettes/followers/skiploom.pal | 19 + .../palettes/followers/slaking.pal | 19 + .../palettes/followers/slakoth.pal | 19 + .../palettes/followers/slowbro.pal | 19 + .../palettes/followers/slowking.pal | 19 + .../palettes/followers/slowpoke.pal | 19 + .../palettes/followers/smeargle.pal | 19 + .../palettes/followers/smoochum.pal | 19 + .../palettes/followers/sneasel.pal | 19 + .../palettes/followers/snorlax.pal | 19 + .../palettes/followers/snorunt.pal | 19 + .../palettes/followers/snubbull.pal | 19 + .../palettes/followers/spearow.pal | 19 + .../palettes/followers/spheal.pal | 19 + .../palettes/followers/spinarak.pal | 19 + .../palettes/followers/spinda.pal | 19 + .../palettes/followers/spoink.pal | 19 + .../palettes/followers/squirtle.pal | 19 + .../palettes/followers/stantler.pal | 19 + .../palettes/followers/sudowoodo.pal | 19 + .../palettes/followers/suicune.pal | 19 + .../palettes/followers/sunflora.pal | 19 + .../palettes/followers/sunkern.pal | 19 + .../palettes/followers/surskit.pal | 19 + .../palettes/followers/swalot.pal | 19 + .../palettes/followers/swampert.pal | 19 + .../palettes/followers/swellow.pal | 19 + .../palettes/followers/swinub.pal | 19 + .../palettes/followers/taillow.pal | 19 + .../palettes/followers/tangela.pal | 19 + .../palettes/followers/tauros.pal | 19 + .../palettes/followers/teddiursa.pal | 19 + .../palettes/followers/tentacool.pal | 19 + .../palettes/followers/tentacruel.pal | 19 + .../palettes/followers/togepi.pal | 19 + .../palettes/followers/torkoal.pal | 19 + .../palettes/followers/totodile.pal | 19 + .../palettes/followers/trapinch.pal | 19 + .../palettes/followers/treecko.pal | 19 + .../palettes/followers/tropius.pal | 19 + .../palettes/followers/typhlosion.pal | 19 + .../palettes/followers/tyranitar.pal | 19 + .../palettes/followers/tyrogue.pal | 19 + .../palettes/followers/umbreon.pal | 19 + .../palettes/followers/ursaring.pal | 19 + .../palettes/followers/vaporeon.pal | 19 + .../palettes/followers/venomoth.pal | 19 + .../palettes/followers/venonat.pal | 19 + .../palettes/followers/venusaur.pal | 19 + .../palettes/followers/vibrava.pal | 19 + .../palettes/followers/victreebel.pal | 19 + .../palettes/followers/vigoroth.pal | 19 + .../palettes/followers/volbeat.pal | 19 + .../palettes/followers/vulpix.pal | 19 + .../palettes/followers/wailmer.pal | 19 + .../palettes/followers/wailord.pal | 19 + .../palettes/followers/walrein.pal | 19 + .../palettes/followers/wartortle.pal | 19 + .../palettes/followers/weepinbell.pal | 19 + .../palettes/followers/whiscash.pal | 19 + .../palettes/followers/whismur.pal | 19 + .../palettes/followers/wingull.pal | 19 + .../palettes/followers/wurmple.pal | 19 + .../palettes/followers/wynaut.pal | 19 + .../object_events/palettes/followers/xatu.pal | 19 + .../palettes/followers/yanma.pal | 19 + .../palettes/followers/zangoose.pal | 19 + .../palettes/followers/zapdos.pal | 19 + .../palettes/followers/zigzagoon.pal | 19 + .../pics/pokemon/followers/aggron.png | Bin 0 -> 1225 bytes .../pics/pokemon/followers/aipom.png | Bin 0 -> 798 bytes .../pics/pokemon/followers/ampharos.png | Bin 0 -> 775 bytes .../pics/pokemon/followers/anorith.png | Bin 0 -> 840 bytes .../pics/pokemon/followers/ariados.png | Bin 0 -> 1043 bytes .../pics/pokemon/followers/armaldo.png | Bin 0 -> 1003 bytes .../pics/pokemon/followers/articuno.png | Bin 0 -> 1286 bytes .../pics/pokemon/followers/bagon.png | Bin 0 -> 557 bytes .../pics/pokemon/followers/barboach.png | Bin 0 -> 558 bytes .../pics/pokemon/followers/bayleef.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/beautifly.png | Bin 0 -> 952 bytes .../pics/pokemon/followers/beldum.png | Bin 0 -> 568 bytes .../pics/pokemon/followers/bellossom.png | Bin 0 -> 699 bytes .../pics/pokemon/followers/blastoise.png | Bin 0 -> 955 bytes .../pics/pokemon/followers/blaziken.png | Bin 0 -> 958 bytes .../pics/pokemon/followers/blissey.png | Bin 0 -> 665 bytes .../pics/pokemon/followers/breloom.png | Bin 0 -> 659 bytes .../pics/pokemon/followers/butterfree.png | Bin 0 -> 876 bytes .../pics/pokemon/followers/camerupt.png | Bin 0 -> 971 bytes .../pics/pokemon/followers/carvanha.png | Bin 0 -> 768 bytes .../pics/pokemon/followers/caterpie.png | Bin 0 -> 606 bytes .../pics/pokemon/followers/celebi.png | Bin 0 -> 663 bytes .../pics/pokemon/followers/charizard.png | Bin 0 -> 1110 bytes .../pics/pokemon/followers/charmander.png | Bin 0 -> 528 bytes .../pics/pokemon/followers/charmeleon.png | Bin 0 -> 612 bytes .../pics/pokemon/followers/chimecho.png | Bin 0 -> 412 bytes .../pics/pokemon/followers/chinchou.png | Bin 0 -> 708 bytes .../pics/pokemon/followers/clamperl.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/claydol.png | Bin 0 -> 628 bytes .../pics/pokemon/followers/clefable.png | Bin 0 -> 654 bytes .../pics/pokemon/followers/cloyster.png | Bin 0 -> 1096 bytes .../pics/pokemon/followers/corphish.png | Bin 0 -> 889 bytes .../pics/pokemon/followers/corsola.png | Bin 0 -> 669 bytes .../pics/pokemon/followers/cradily.png | Bin 0 -> 1085 bytes .../pics/pokemon/followers/crawdaunt.png | Bin 0 -> 959 bytes .../pics/pokemon/followers/crobat.png | Bin 0 -> 963 bytes .../pics/pokemon/followers/croconaw.png | Bin 0 -> 836 bytes .../pics/pokemon/followers/cyndaquil.png | Bin 0 -> 713 bytes .../pics/pokemon/followers/delcatty.png | Bin 0 -> 761 bytes .../pics/pokemon/followers/delibird.png | Bin 0 -> 676 bytes .../pics/pokemon/followers/deoxys_attack.png | Bin 0 -> 960 bytes .../pics/pokemon/followers/deoxys_defense.png | Bin 0 -> 869 bytes .../pics/pokemon/followers/deoxys_normal.png | Bin 0 -> 897 bytes .../pics/pokemon/followers/deoxys_speed.png | Bin 0 -> 898 bytes .../pics/pokemon/followers/diglett.png | Bin 0 -> 470 bytes .../pics/pokemon/followers/dodrio.png | Bin 0 -> 1088 bytes .../pics/pokemon/followers/donphan.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/dragonair.png | Bin 0 -> 1103 bytes .../pics/pokemon/followers/dragonite.png | Bin 0 -> 1030 bytes .../pics/pokemon/followers/dratini.png | Bin 0 -> 693 bytes .../pics/pokemon/followers/dugtrio.png | Bin 0 -> 764 bytes .../pics/pokemon/followers/dunsparce.png | Bin 0 -> 789 bytes .../pics/pokemon/followers/dusclops.png | Bin 0 -> 915 bytes .../pics/pokemon/followers/duskull.png | Bin 0 -> 568 bytes .../pics/pokemon/followers/dustox.png | Bin 0 -> 872 bytes .../pics/pokemon/followers/eevee.png | Bin 0 -> 546 bytes .../pics/pokemon/followers/ekans.png | Bin 0 -> 593 bytes .../pics/pokemon/followers/electrike.png | Bin 0 -> 614 bytes .../pics/pokemon/followers/entei.png | Bin 0 -> 1072 bytes .../pics/pokemon/followers/espeon.png | Bin 0 -> 812 bytes .../pics/pokemon/followers/exeggutor.png | Bin 0 -> 877 bytes .../pics/pokemon/followers/exploud.png | Bin 0 -> 1163 bytes .../pics/pokemon/followers/farfetchd.png | Bin 0 -> 811 bytes .../pics/pokemon/followers/fearow.png | Bin 0 -> 1072 bytes .../pics/pokemon/followers/feebas.png | Bin 0 -> 588 bytes .../pics/pokemon/followers/feraligatr.png | Bin 0 -> 1090 bytes .../pics/pokemon/followers/flaaffy.png | Bin 0 -> 782 bytes .../pics/pokemon/followers/flareon.png | Bin 0 -> 828 bytes .../pics/pokemon/followers/flygon.png | Bin 0 -> 1067 bytes .../pics/pokemon/followers/forretress.png | Bin 0 -> 620 bytes .../pics/pokemon/followers/gardevoir.png | Bin 0 -> 783 bytes .../pics/pokemon/followers/gastly.png | Bin 0 -> 716 bytes .../pics/pokemon/followers/gengar.png | Bin 0 -> 672 bytes .../pics/pokemon/followers/girafarig.png | Bin 0 -> 770 bytes .../pics/pokemon/followers/glalie.png | Bin 0 -> 598 bytes .../pics/pokemon/followers/gligar.png | Bin 0 -> 958 bytes .../pics/pokemon/followers/goldeen.png | Bin 0 -> 773 bytes .../pics/pokemon/followers/golduck.png | Bin 0 -> 644 bytes .../pics/pokemon/followers/golem.png | Bin 0 -> 778 bytes .../pics/pokemon/followers/gorebyss.png | Bin 0 -> 925 bytes .../pics/pokemon/followers/granbull.png | Bin 0 -> 695 bytes .../pics/pokemon/followers/groudon.png | Bin 0 -> 1368 bytes .../pics/pokemon/followers/grovyle.png | Bin 0 -> 658 bytes .../pics/pokemon/followers/grumpig.png | Bin 0 -> 749 bytes .../pics/pokemon/followers/gulpin.png | Bin 0 -> 562 bytes .../pics/pokemon/followers/gyarados.png | Bin 0 -> 1450 bytes .../pics/pokemon/followers/hariyama.png | Bin 0 -> 1187 bytes .../pics/pokemon/followers/haunter.png | Bin 0 -> 617 bytes .../pics/pokemon/followers/heracross.png | Bin 0 -> 838 bytes .../pics/pokemon/followers/hitmonchan.png | Bin 0 -> 656 bytes .../pics/pokemon/followers/hitmonlee.png | Bin 0 -> 607 bytes .../pics/pokemon/followers/hitmontop.png | Bin 0 -> 591 bytes .../pics/pokemon/followers/ho_oh.png | Bin 0 -> 2252 bytes .../pics/pokemon/followers/hoothoot.png | Bin 0 -> 647 bytes .../pics/pokemon/followers/hoppip.png | Bin 0 -> 595 bytes .../pics/pokemon/followers/horsea.png | Bin 0 -> 561 bytes .../pics/pokemon/followers/huntail.png | Bin 0 -> 1060 bytes .../pics/pokemon/followers/igglybuff.png | Bin 0 -> 463 bytes .../pics/pokemon/followers/illumise.png | Bin 0 -> 793 bytes .../pics/pokemon/followers/ivysaur.png | Bin 0 -> 657 bytes .../pics/pokemon/followers/jigglypuff.png | Bin 0 -> 483 bytes .../pics/pokemon/followers/jirachi.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/jolteon.png | Bin 0 -> 740 bytes .../pics/pokemon/followers/jumpluff.png | Bin 0 -> 671 bytes .../pics/pokemon/followers/jynx.png | Bin 0 -> 880 bytes .../pics/pokemon/followers/kabuto.png | Bin 0 -> 509 bytes .../pics/pokemon/followers/kabutops.png | Bin 0 -> 833 bytes .../pics/pokemon/followers/kangaskhan.png | Bin 0 -> 841 bytes .../pics/pokemon/followers/kecleon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/kingdra.png | Bin 0 -> 859 bytes .../pics/pokemon/followers/krabby.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/kyogre.png | Bin 0 -> 1311 bytes .../pics/pokemon/followers/lanturn.png | Bin 0 -> 947 bytes .../pics/pokemon/followers/lapras.png | Bin 0 -> 940 bytes .../pics/pokemon/followers/latias.png | Bin 0 -> 1161 bytes .../pics/pokemon/followers/latios.png | Bin 0 -> 1219 bytes .../pics/pokemon/followers/ledian.png | Bin 0 -> 1027 bytes .../pics/pokemon/followers/ledyba.png | Bin 0 -> 1025 bytes .../pics/pokemon/followers/lickitung.png | Bin 0 -> 642 bytes .../pics/pokemon/followers/lileep.png | Bin 0 -> 724 bytes .../pics/pokemon/followers/linoone.png | Bin 0 -> 651 bytes .../pics/pokemon/followers/lombre.png | Bin 0 -> 679 bytes .../pics/pokemon/followers/lotad.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/ludicolo.png | Bin 0 -> 909 bytes .../pics/pokemon/followers/lugia.png | Bin 0 -> 1751 bytes .../pics/pokemon/followers/luvdisc.png | Bin 0 -> 419 bytes .../pics/pokemon/followers/machamp.png | Bin 0 -> 967 bytes .../pics/pokemon/followers/machoke.png | Bin 0 -> 678 bytes .../pics/pokemon/followers/machop.png | Bin 0 -> 476 bytes .../pics/pokemon/followers/magby.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/magcargo.png | Bin 0 -> 1206 bytes .../pics/pokemon/followers/magikarp.png | Bin 0 -> 840 bytes .../pics/pokemon/followers/magmar.png | Bin 0 -> 881 bytes .../pics/pokemon/followers/magnemite.png | Bin 0 -> 482 bytes .../pics/pokemon/followers/magneton.png | Bin 0 -> 841 bytes .../pics/pokemon/followers/makuhita.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/manectric.png | Bin 0 -> 798 bytes .../pics/pokemon/followers/mankey.png | Bin 0 -> 631 bytes .../pics/pokemon/followers/mantine.png | Bin 0 -> 1002 bytes .../pics/pokemon/followers/mareep.png | Bin 0 -> 722 bytes .../pics/pokemon/followers/marshtomp.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/masquerain.png | Bin 0 -> 968 bytes .../pics/pokemon/followers/mawile.png | Bin 0 -> 757 bytes .../pics/pokemon/followers/medicham.png | Bin 0 -> 673 bytes .../pics/pokemon/followers/meditite.png | Bin 0 -> 556 bytes .../pics/pokemon/followers/meganium.png | Bin 0 -> 843 bytes .../pics/pokemon/followers/meowth.png | Bin 0 -> 685 bytes .../pics/pokemon/followers/metang.png | Bin 0 -> 979 bytes .../pics/pokemon/followers/mew.png | Bin 0 -> 618 bytes .../pics/pokemon/followers/mewtwo.png | Bin 0 -> 928 bytes .../pics/pokemon/followers/mightyena.png | Bin 0 -> 803 bytes .../pics/pokemon/followers/milotic.png | Bin 0 -> 1050 bytes .../pics/pokemon/followers/miltank.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/misdreavus.png | Bin 0 -> 891 bytes .../pics/pokemon/followers/moltres.png | Bin 0 -> 1158 bytes .../pics/pokemon/followers/mr_mime.png | Bin 0 -> 743 bytes .../pics/pokemon/followers/mudkip.png | Bin 0 -> 461 bytes .../pics/pokemon/followers/murkrow.png | Bin 0 -> 509 bytes .../pics/pokemon/followers/natu.png | Bin 0 -> 472 bytes .../pics/pokemon/followers/nidoking.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/nidoqueen.png | Bin 0 -> 830 bytes .../pics/pokemon/followers/nidoran_f.png | Bin 0 -> 496 bytes .../pics/pokemon/followers/nidorina.png | Bin 0 -> 666 bytes .../pics/pokemon/followers/nincada.png | Bin 0 -> 681 bytes .../pics/pokemon/followers/ninetales.png | Bin 0 -> 810 bytes .../pics/pokemon/followers/ninjask.png | Bin 0 -> 751 bytes .../pics/pokemon/followers/noctowl.png | Bin 0 -> 1114 bytes .../pics/pokemon/followers/nosepass.png | Bin 0 -> 705 bytes .../pics/pokemon/followers/numel.png | Bin 0 -> 848 bytes .../pics/pokemon/followers/nuzleaf.png | Bin 0 -> 624 bytes .../pics/pokemon/followers/octillery.png | Bin 0 -> 691 bytes .../pics/pokemon/followers/omanyte.png | Bin 0 -> 603 bytes .../pics/pokemon/followers/omastar.png | Bin 0 -> 837 bytes .../pics/pokemon/followers/pelipper.png | Bin 0 -> 1014 bytes .../pics/pokemon/followers/persian.png | Bin 0 -> 717 bytes .../pics/pokemon/followers/phanpy.png | Bin 0 -> 457 bytes .../pics/pokemon/followers/pichu.png | Bin 0 -> 465 bytes .../pics/pokemon/followers/pidgeot.png | Bin 0 -> 1177 bytes .../pics/pokemon/followers/pidgeotto.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/pidgey.png | Bin 0 -> 444 bytes .../pics/pokemon/followers/pikachu.png | Bin 0 -> 550 bytes .../pics/pokemon/followers/piloswine.png | Bin 0 -> 640 bytes .../pics/pokemon/followers/pineco.png | Bin 0 -> 420 bytes .../pics/pokemon/followers/politoed.png | Bin 0 -> 751 bytes .../pics/pokemon/followers/poliwag.png | Bin 0 -> 526 bytes .../pics/pokemon/followers/poochyena.png | Bin 0 -> 551 bytes .../pics/pokemon/followers/porygon.png | Bin 0 -> 612 bytes .../pics/pokemon/followers/porygon2.png | Bin 0 -> 592 bytes .../pics/pokemon/followers/primeape.png | Bin 0 -> 806 bytes .../pics/pokemon/followers/quilava.png | Bin 0 -> 1062 bytes .../pics/pokemon/followers/qwilfish.png | Bin 0 -> 633 bytes .../pics/pokemon/followers/raichu.png | Bin 0 -> 805 bytes .../pics/pokemon/followers/raikou.png | Bin 0 -> 1010 bytes .../pics/pokemon/followers/raticate.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/rattata.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/rayquaza.png | Bin 0 -> 1648 bytes .../pics/pokemon/followers/regice.png | Bin 0 -> 850 bytes .../pics/pokemon/followers/regirock.png | Bin 0 -> 1074 bytes .../pics/pokemon/followers/registeel.png | Bin 0 -> 845 bytes .../pics/pokemon/followers/relicanth.png | Bin 0 -> 864 bytes .../pics/pokemon/followers/remoraid.png | Bin 0 -> 599 bytes .../pics/pokemon/followers/rhydon.png | Bin 0 -> 790 bytes .../pics/pokemon/followers/roselia.png | Bin 0 -> 623 bytes .../pics/pokemon/followers/sableye.png | Bin 0 -> 554 bytes .../pics/pokemon/followers/salamence.png | Bin 0 -> 1027 bytes .../pics/pokemon/followers/sandshrew.png | Bin 0 -> 521 bytes .../pics/pokemon/followers/sandslash.png | Bin 0 -> 729 bytes .../pics/pokemon/followers/sceptile.png | Bin 0 -> 907 bytes .../pics/pokemon/followers/scizor.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/scyther.png | Bin 0 -> 827 bytes .../pics/pokemon/followers/seadra.png | Bin 0 -> 813 bytes .../pics/pokemon/followers/seaking.png | Bin 0 -> 1038 bytes .../pics/pokemon/followers/sealeo.png | Bin 0 -> 820 bytes .../pics/pokemon/followers/seedot.png | Bin 0 -> 442 bytes .../pics/pokemon/followers/seel.png | Bin 0 -> 669 bytes .../pics/pokemon/followers/sentret.png | Bin 0 -> 608 bytes .../pics/pokemon/followers/seviper.png | Bin 0 -> 957 bytes .../pics/pokemon/followers/sharpedo.png | Bin 0 -> 746 bytes .../pics/pokemon/followers/shedinja.png | Bin 0 -> 693 bytes .../pics/pokemon/followers/shelgon.png | Bin 0 -> 596 bytes .../pics/pokemon/followers/shellder.png | Bin 0 -> 577 bytes .../pics/pokemon/followers/shiftry.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/shroomish.png | Bin 0 -> 453 bytes .../pics/pokemon/followers/shuckle.png | Bin 0 -> 594 bytes .../pics/pokemon/followers/skarmory.png | Bin 0 -> 1071 bytes .../pics/pokemon/followers/skiploom.png | Bin 0 -> 581 bytes .../pics/pokemon/followers/slaking.png | Bin 0 -> 1015 bytes .../pics/pokemon/followers/slakoth.png | Bin 0 -> 652 bytes .../pics/pokemon/followers/slowbro.png | Bin 0 -> 808 bytes .../pics/pokemon/followers/slowking.png | Bin 0 -> 817 bytes .../pics/pokemon/followers/slowpoke.png | Bin 0 -> 634 bytes .../pics/pokemon/followers/smeargle.png | Bin 0 -> 694 bytes .../pics/pokemon/followers/smoochum.png | Bin 0 -> 541 bytes .../pics/pokemon/followers/sneasel.png | Bin 0 -> 741 bytes .../pics/pokemon/followers/snorlax.png | Bin 0 -> 892 bytes .../pics/pokemon/followers/snorunt.png | Bin 0 -> 481 bytes .../pics/pokemon/followers/snubbull.png | Bin 0 -> 701 bytes .../pics/pokemon/followers/spearow.png | Bin 0 -> 471 bytes .../pics/pokemon/followers/spheal.png | Bin 0 -> 582 bytes .../pics/pokemon/followers/spinarak.png | Bin 0 -> 667 bytes .../pics/pokemon/followers/spinda.png | Bin 0 -> 648 bytes .../pics/pokemon/followers/spoink.png | Bin 0 -> 500 bytes .../pics/pokemon/followers/squirtle.png | Bin 0 -> 439 bytes .../pics/pokemon/followers/stantler.png | Bin 0 -> 745 bytes .../pics/pokemon/followers/sudowoodo.png | Bin 0 -> 672 bytes .../pics/pokemon/followers/suicune.png | Bin 0 -> 1091 bytes .../pics/pokemon/followers/sunflora.png | Bin 0 -> 605 bytes .../pics/pokemon/followers/sunkern.png | Bin 0 -> 445 bytes .../pics/pokemon/followers/surskit.png | Bin 0 -> 466 bytes .../pics/pokemon/followers/swalot.png | Bin 0 -> 821 bytes .../pics/pokemon/followers/swampert.png | Bin 0 -> 894 bytes .../pics/pokemon/followers/swellow.png | Bin 0 -> 1050 bytes .../pics/pokemon/followers/swinub.png | Bin 0 -> 497 bytes .../pics/pokemon/followers/taillow.png | Bin 0 -> 465 bytes .../pics/pokemon/followers/tangela.png | Bin 0 -> 656 bytes .../pics/pokemon/followers/tauros.png | Bin 0 -> 909 bytes .../pics/pokemon/followers/teddiursa.png | Bin 0 -> 692 bytes .../pics/pokemon/followers/tentacool.png | Bin 0 -> 636 bytes .../pics/pokemon/followers/tentacruel.png | Bin 0 -> 749 bytes .../pics/pokemon/followers/togepi.png | Bin 0 -> 553 bytes .../pics/pokemon/followers/torkoal.png | Bin 0 -> 731 bytes .../pics/pokemon/followers/totodile.png | Bin 0 -> 574 bytes .../pics/pokemon/followers/trapinch.png | Bin 0 -> 461 bytes .../pics/pokemon/followers/treecko.png | Bin 0 -> 452 bytes .../pics/pokemon/followers/tropius.png | Bin 0 -> 1065 bytes .../pics/pokemon/followers/typhlosion.png | Bin 0 -> 1101 bytes .../pics/pokemon/followers/tyranitar.png | Bin 0 -> 940 bytes .../pics/pokemon/followers/tyrogue.png | Bin 0 -> 515 bytes .../pics/pokemon/followers/umbreon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/ursaring.png | Bin 0 -> 844 bytes .../pics/pokemon/followers/vaporeon.png | Bin 0 -> 870 bytes .../pics/pokemon/followers/venomoth.png | Bin 0 -> 1087 bytes .../pics/pokemon/followers/venonat.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/venusaur.png | Bin 0 -> 898 bytes .../pics/pokemon/followers/vibrava.png | Bin 0 -> 916 bytes .../pics/pokemon/followers/victreebel.png | Bin 0 -> 967 bytes .../pics/pokemon/followers/vigoroth.png | Bin 0 -> 759 bytes .../pics/pokemon/followers/volbeat.png | Bin 0 -> 932 bytes .../pics/pokemon/followers/vulpix.png | Bin 0 -> 627 bytes .../pics/pokemon/followers/wailmer.png | Bin 0 -> 718 bytes .../pics/pokemon/followers/wailord.png | Bin 0 -> 1151 bytes .../pics/pokemon/followers/walrein.png | Bin 0 -> 1049 bytes .../pics/pokemon/followers/wartortle.png | Bin 0 -> 698 bytes .../pics/pokemon/followers/weepinbell.png | Bin 0 -> 698 bytes .../pics/pokemon/followers/whiscash.png | Bin 0 -> 787 bytes .../pics/pokemon/followers/whismur.png | Bin 0 -> 501 bytes .../pics/pokemon/followers/wingull.png | Bin 0 -> 652 bytes .../pics/pokemon/followers/wurmple.png | Bin 0 -> 642 bytes .../pics/pokemon/followers/wynaut.png | Bin 0 -> 564 bytes .../pics/pokemon/followers/xatu.png | Bin 0 -> 740 bytes .../pics/pokemon/followers/yanma.png | Bin 0 -> 1038 bytes .../pics/pokemon/followers/zangoose.png | Bin 0 -> 912 bytes .../pics/pokemon/followers/zapdos.png | Bin 0 -> 1073 bytes .../pics/pokemon/followers/zigzagoon.png | Bin 0 -> 769 bytes .../maps_expert/floor_0/collision.bin | Bin 32 -> 0 bytes .../maps_expert/floor_0/metatiles.bin | 1 - .../maps_expert/floor_1/collision.bin | Bin 32 -> 0 bytes .../maps_expert/floor_1/metatiles.bin | 1 - .../maps_expert/floor_2/collision.bin | 1 - .../maps_expert/floor_2/metatiles.bin | 1 - .../maps_expert/floor_3/collision.bin | Bin 32 -> 0 bytes .../maps_expert/floor_3/metatiles.bin | 1 - .../maps_jp/floor_0/collision.bin | 1 - .../maps_jp/floor_0/metatiles.bin | 1 - .../maps_jp/floor_1/collision.bin | Bin 32 -> 0 bytes .../maps_jp/floor_1/metatiles.bin | 1 - .../maps_normal/floor_0/collision.bin | 1 - .../maps_normal/floor_0/metatiles.bin | 1 - .../maps_normal/floor_1/collision.bin | 1 - .../maps_normal/floor_1/metatiles.bin | 1 - .../maps_normal/floor_2/collision.bin | Bin 32 -> 0 bytes .../maps_normal/floor_2/metatiles.bin | 1 - .../maps_normal/floor_3/collision.bin | Bin 32 -> 0 bytes .../maps_normal/floor_3/metatiles.bin | 1 - .../maps_unique/floor_0/collision.bin | Bin 32 -> 0 bytes .../maps_unique/floor_0/metatiles.bin | 1 - .../maps_unique/floor_1/collision.bin | Bin 32 -> 0 bytes .../maps_unique/floor_1/metatiles.bin | 1 - .../maps_unique/floor_2/collision.bin | Bin 32 -> 0 bytes .../maps_unique/floor_2/metatiles.bin | 1 - .../maps_unique/floor_3/collision.bin | Bin 32 -> 0 bytes .../maps_unique/floor_3/metatiles.bin | 1 - .../maps_variety/floor_0/collision.bin | Bin 32 -> 0 bytes .../maps_variety/floor_0/metatiles.bin | 1 - .../maps_variety/floor_1/collision.bin | Bin 32 -> 0 bytes .../maps_variety/floor_1/metatiles.bin | 1 - .../maps_variety/floor_2/collision.bin | Bin 32 -> 0 bytes .../maps_variety/floor_2/metatiles.bin | 1 - .../maps_variety/floor_3/collision.bin | Bin 32 -> 0 bytes .../maps_variety/floor_3/metatiles.bin | 1 - include/battle_anim.h | 28 +- include/battle_controllers.h | 14 +- include/battle_gfx_sfx_util.h | 2 +- include/battle_interface.h | 4 +- include/battle_setup.h | 2 +- include/battle_util.h | 2 +- include/constants/battle.h | 2 +- include/constants/battle_anim.h | 17 - include/constants/battle_frontier.h | 10 - include/constants/battle_pike.h | 2 - include/constants/battle_pyramid.h | 7 - include/constants/battle_string_ids.h | 2 - include/constants/battle_tent.h | 6 - include/constants/event_object_movement.h | 3 +- include/constants/event_objects.h | 4 + include/constants/field_effects.h | 6 + include/constants/flags.h | 2 +- include/constants/follow_me.h | 19 + include/constants/metatile_labels.h | 2 +- include/constants/trainer_hill.h | 27 +- include/constants/tv.h | 17 - include/constants/union_room.h | 2 - include/contest.h | 9 +- include/decompress.h | 2 +- include/digit_obj_util.h | 4 +- include/ereader_helpers.h | 2 +- include/event_data.h | 2 +- include/event_object_movement.h | 24 +- include/event_scripts.h | 30 +- include/evolution_graphics.h | 2 +- include/field_camera.h | 8 +- include/field_player_avatar.h | 54 +- include/field_screen_effect.h | 2 + include/field_special_scene.h | 8 +- include/field_specials.h | 1 + include/fldeff.h | 6 +- include/fldeff_misc.h | 6 +- include/follow_me.h | 58 + include/gba/m4a_internal.h | 2 +- include/global.fieldmap.h | 5 +- include/global.h | 43 +- include/intro_credits_graphics.h | 6 +- include/link.h | 2 +- include/list_menu.h | 8 +- include/main_menu.h | 2 +- include/mauville_old_man.h | 4 +- include/menu.h | 14 +- include/menu_helpers.h | 6 +- include/menu_specialized.h | 2 +- include/overworld.h | 6 +- include/pokeball.h | 4 +- include/pokemon.h | 14 +- include/pokemon_storage_system.h | 4 +- include/pokenav.h | 14 +- include/region_map.h | 2 +- include/scanline_effect.h | 2 +- include/script.h | 3 + include/trade.h | 4 +- include/trainer_card.h | 2 +- include/trainer_hill.h | 42 +- ld_script.txt | 52 +- spritesheet_rules.mk | 1261 +++++- src/agb_flash_1m.c | 2 +- src/bard_music.c | 4 +- src/battle_ai_switch_items.c | 57 +- src/battle_anim_dragon.c | 4 +- src/battle_anim_effects_1.c | 96 +- src/battle_anim_effects_2.c | 2 +- src/battle_anim_effects_3.c | 247 +- src/battle_anim_fire.c | 274 +- src/battle_anim_ghost.c | 6 +- src/battle_anim_mons.c | 40 +- src/battle_anim_normal.c | 44 +- src/battle_anim_psychic.c | 4 +- src/battle_anim_smokescreen.c | 66 +- src/battle_anim_sound_tasks.c | 16 +- src/battle_anim_status_effects.c | 6 +- src/battle_anim_throw.c | 10 +- src/battle_anim_utility_funcs.c | 17 +- src/battle_bg.c | 8 +- src/battle_controller_player.c | 30 +- src/battle_controllers.c | 26 +- src/battle_dome.c | 148 +- src/battle_factory.c | 44 +- src/battle_factory_screen.c | 10 +- src/battle_gfx_sfx_util.c | 12 +- src/battle_interface.c | 94 +- src/battle_main.c | 15 +- src/battle_message.c | 6 +- src/battle_pike.c | 34 +- src/battle_pyramid.c | 90 +- src/battle_pyramid_bag.c | 6 +- src/battle_script_commands.c | 2 +- src/battle_setup.c | 27 +- src/battle_tent.c | 40 +- src/battle_tower.c | 102 +- src/battle_transition.c | 4 +- src/battle_util.c | 2 +- src/berry_blender.c | 6 +- src/berry_crush.c | 6 +- src/bike.c | 4 +- src/cable_car.c | 4 +- src/coins.c | 2 +- src/contest.c | 50 +- src/contest_util.c | 46 +- src/credits.c | 6 +- .../battle_pyramid_open_level_wild_mons.h | 2 +- src/data/battle_frontier/trainer_hill.h | 1389 ++++-- .../field_effect_object_template_pointers.h | 6 + src/data/field_effects/field_effect_objects.h | 49 +- .../movement_action_func_tables.h | 0 .../object_events/movement_type_func_tables.h | 7 + src/data/object_events/object_event_anims.h | 0 .../object_events/object_event_graphics.h | 3 + .../object_event_graphics_info.h | 0 .../object_event_graphics_info_pointers.h | 2 +- .../object_events/object_event_pic_tables.h | 3764 +++++++++++++++++ src/data/pokemon/base_stats.h | 1548 +++---- src/data/trade.h | 6 +- src/data/trainer_graphics/back_pic_anims.h | 30 +- src/decompress.c | 6 +- src/decoration.c | 4 +- src/dodrio_berry_picking.c | 8 +- src/easy_chat.c | 11 +- src/ereader_helpers.c | 124 +- src/event_data.c | 8 +- src/event_object_movement.c | 395 +- src/evolution_graphics.c | 162 +- src/evolution_scene.c | 6 +- src/field_camera.c | 14 +- src/field_control_avatar.c | 16 +- src/field_door.c | 83 +- src/field_effect.c | 78 +- src/field_effect_helpers.c | 54 + src/field_message_box.c | 2 +- src/field_player_avatar.c | 174 +- src/field_region_map.c | 5 +- src/field_screen_effect.c | 70 +- src/field_special_scene.c | 204 +- src/field_specials.c | 75 +- src/field_weather.c | 8 +- src/field_weather_effect.c | 79 +- src/fieldmap.c | 42 +- src/frontier_util.c | 103 +- src/hall_of_fame.c | 26 +- src/intro.c | 4 +- src/intro_credits_graphics.c | 3 +- src/item_menu.c | 2 +- src/item_menu_icons.c | 31 +- src/item_use.c | 44 +- src/landmark.c | 16 +- src/libisagbprn.c | 10 +- src/link.c | 12 +- src/list_menu.c | 8 +- src/m4a_1.s | 8 +- src/main.c | 6 +- src/main_menu.c | 57 +- src/map_name_popup.c | 39 +- src/match_call.c | 46 +- src/mauville_old_man.c | 4 +- src/menu.c | 8 +- src/menu_helpers.c | 47 +- src/mystery_event_script.c | 35 +- src/mystery_gift.c | 4 - src/mystery_gift_client.c | 7 +- src/mystery_gift_server.c | 3 +- src/mystery_gift_view.c | 6 +- src/new_game.c | 1 + src/overworld.c | 49 +- src/palette.c | 62 +- src/party_menu.c | 8 +- src/player_pc.c | 114 +- src/pokeball.c | 185 +- src/pokedex.c | 16 +- src/pokedex_area_region_map.c | 4 +- src/pokemon.c | 38 +- src/pokemon_jump.c | 7 +- src/pokemon_storage_system.c | 13 +- src/pokemon_summary_screen.c | 196 +- src/pokenav.c | 13 +- src/pokenav_conditions.c | 4 +- src/pokenav_list.c | 318 +- src/pokenav_main_menu.c | 10 +- src/pokenav_match_call_data.c | 2 +- src/pokenav_region_map.c | 2 +- src/record_mixing.c | 2 +- src/recorded_battle.c | 2 - src/region_map.c | 602 +-- src/rom_header_gf.c | 49 +- src/rotating_gate.c | 70 +- src/rotating_tile_puzzle.c | 10 +- src/save.c | 6 - src/scrcmd.c | 4 +- src/script.c | 7 + src/script_movement.c | 9 +- src/siirtc.c | 1 - src/slot_machine.c | 72 +- src/start_menu.c | 9 +- src/tileset_anims.c | 6 +- src/trade.c | 12 +- src/trainer_hill.c | 227 +- src/tv.c | 117 +- src/union_room.c | 2 +- src/union_room_chat.c | 3 +- tools/gbagfx/Makefile | 2 - tools/mid2agb/agb.cpp | 3 +- tools/rsfont/Makefile | 2 - 896 files changed, 16440 insertions(+), 4907 deletions(-) create mode 100644 docs/bugs_and_glitches.md create mode 100644 graphics/door_anims/battle_tower_corridor.png delete mode 100644 graphics/door_anims/petalburg_gym.png rename graphics/door_anims/{unused_battle_frontier.png => unknown.png} (100%) 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 create mode 100644 graphics/object_events/palettes/followers/aggron.pal create mode 100644 graphics/object_events/palettes/followers/aipom.pal create mode 100644 graphics/object_events/palettes/followers/ampharos.pal create mode 100644 graphics/object_events/palettes/followers/anorith.pal create mode 100644 graphics/object_events/palettes/followers/ariados.pal create mode 100644 graphics/object_events/palettes/followers/armaldo.pal create mode 100644 graphics/object_events/palettes/followers/articuno.pal create mode 100644 graphics/object_events/palettes/followers/bagon.pal create mode 100644 graphics/object_events/palettes/followers/barboach.pal create mode 100644 graphics/object_events/palettes/followers/bayleef.pal create mode 100644 graphics/object_events/palettes/followers/beautifly.pal create mode 100644 graphics/object_events/palettes/followers/beldum.pal create mode 100644 graphics/object_events/palettes/followers/bellossom.pal create mode 100644 graphics/object_events/palettes/followers/blastoise.pal create mode 100644 graphics/object_events/palettes/followers/blaziken.pal create mode 100644 graphics/object_events/palettes/followers/blissey.pal create mode 100644 graphics/object_events/palettes/followers/breloom.pal create mode 100644 graphics/object_events/palettes/followers/butterfree.pal create mode 100644 graphics/object_events/palettes/followers/camerupt.pal create mode 100644 graphics/object_events/palettes/followers/carvanha.pal create mode 100644 graphics/object_events/palettes/followers/caterpie.pal create mode 100644 graphics/object_events/palettes/followers/celebi.pal create mode 100644 graphics/object_events/palettes/followers/charizard.pal create mode 100644 graphics/object_events/palettes/followers/charmander.pal create mode 100644 graphics/object_events/palettes/followers/charmeleon.pal create mode 100644 graphics/object_events/palettes/followers/chimecho.pal create mode 100644 graphics/object_events/palettes/followers/chinchou.pal create mode 100644 graphics/object_events/palettes/followers/clamperl.pal create mode 100644 graphics/object_events/palettes/followers/claydol.pal create mode 100644 graphics/object_events/palettes/followers/clefable.pal create mode 100644 graphics/object_events/palettes/followers/cloyster.pal create mode 100644 graphics/object_events/palettes/followers/corphish.pal create mode 100644 graphics/object_events/palettes/followers/corsola.pal create mode 100644 graphics/object_events/palettes/followers/cradily.pal create mode 100644 graphics/object_events/palettes/followers/crawdaunt.pal create mode 100644 graphics/object_events/palettes/followers/crobat.pal create mode 100644 graphics/object_events/palettes/followers/croconaw.pal create mode 100644 graphics/object_events/palettes/followers/cyndaquil.pal create mode 100644 graphics/object_events/palettes/followers/delcatty.pal create mode 100644 graphics/object_events/palettes/followers/delibird.pal create mode 100644 graphics/object_events/palettes/followers/deoxys.pal create mode 100644 graphics/object_events/palettes/followers/diglett.pal create mode 100644 graphics/object_events/palettes/followers/dodrio.pal create mode 100644 graphics/object_events/palettes/followers/donphan.pal create mode 100644 graphics/object_events/palettes/followers/dragonair.pal create mode 100644 graphics/object_events/palettes/followers/dragonite.pal create mode 100644 graphics/object_events/palettes/followers/dratini.pal create mode 100644 graphics/object_events/palettes/followers/dugtrio.pal create mode 100644 graphics/object_events/palettes/followers/dunsparce.pal create mode 100644 graphics/object_events/palettes/followers/dusclops.pal create mode 100644 graphics/object_events/palettes/followers/duskull.pal create mode 100644 graphics/object_events/palettes/followers/dustox.pal create mode 100644 graphics/object_events/palettes/followers/eevee.pal create mode 100644 graphics/object_events/palettes/followers/ekans.pal create mode 100644 graphics/object_events/palettes/followers/electrike.pal create mode 100644 graphics/object_events/palettes/followers/entei.pal create mode 100644 graphics/object_events/palettes/followers/espeon.pal create mode 100644 graphics/object_events/palettes/followers/exeggutor.pal create mode 100644 graphics/object_events/palettes/followers/exploud.pal create mode 100644 graphics/object_events/palettes/followers/farfetchd.pal create mode 100644 graphics/object_events/palettes/followers/fearow.pal create mode 100644 graphics/object_events/palettes/followers/feebas.pal create mode 100644 graphics/object_events/palettes/followers/feraligatr.pal create mode 100644 graphics/object_events/palettes/followers/flaaffy.pal create mode 100644 graphics/object_events/palettes/followers/flareon.pal create mode 100644 graphics/object_events/palettes/followers/flygon.pal create mode 100644 graphics/object_events/palettes/followers/forretress.pal create mode 100644 graphics/object_events/palettes/followers/gardevoir.pal create mode 100644 graphics/object_events/palettes/followers/gastly.pal create mode 100644 graphics/object_events/palettes/followers/gengar.pal create mode 100644 graphics/object_events/palettes/followers/girafarig.pal create mode 100644 graphics/object_events/palettes/followers/glalie.pal create mode 100644 graphics/object_events/palettes/followers/gligar.pal create mode 100644 graphics/object_events/palettes/followers/goldeen.pal create mode 100644 graphics/object_events/palettes/followers/golduck.pal create mode 100644 graphics/object_events/palettes/followers/golem.pal create mode 100644 graphics/object_events/palettes/followers/gorebyss.pal create mode 100644 graphics/object_events/palettes/followers/granbull.pal create mode 100644 graphics/object_events/palettes/followers/groudon.pal create mode 100644 graphics/object_events/palettes/followers/grovyle.pal create mode 100644 graphics/object_events/palettes/followers/grumpig.pal create mode 100644 graphics/object_events/palettes/followers/gulpin.pal create mode 100644 graphics/object_events/palettes/followers/gyarados.pal create mode 100644 graphics/object_events/palettes/followers/hariyama.pal create mode 100644 graphics/object_events/palettes/followers/haunter.pal create mode 100644 graphics/object_events/palettes/followers/heracross.pal create mode 100644 graphics/object_events/palettes/followers/hitmonchan.pal create mode 100644 graphics/object_events/palettes/followers/hitmonlee.pal create mode 100644 graphics/object_events/palettes/followers/hitmontop.pal create mode 100644 graphics/object_events/palettes/followers/ho_oh.pal create mode 100644 graphics/object_events/palettes/followers/hoothoot.pal create mode 100644 graphics/object_events/palettes/followers/hoppip.pal create mode 100644 graphics/object_events/palettes/followers/horsea.pal create mode 100644 graphics/object_events/palettes/followers/huntail.pal create mode 100644 graphics/object_events/palettes/followers/igglybuff.pal create mode 100644 graphics/object_events/palettes/followers/illumise.pal create mode 100644 graphics/object_events/palettes/followers/ivysaur.pal create mode 100644 graphics/object_events/palettes/followers/jigglypuff.pal create mode 100644 graphics/object_events/palettes/followers/jirachi.pal create mode 100644 graphics/object_events/palettes/followers/jolteon.pal create mode 100644 graphics/object_events/palettes/followers/jumpluff.pal create mode 100644 graphics/object_events/palettes/followers/jynx.pal create mode 100644 graphics/object_events/palettes/followers/kabuto.pal create mode 100644 graphics/object_events/palettes/followers/kabutops.pal create mode 100644 graphics/object_events/palettes/followers/kangaskhan.pal create mode 100644 graphics/object_events/palettes/followers/kecleon.pal create mode 100644 graphics/object_events/palettes/followers/kingdra.pal create mode 100644 graphics/object_events/palettes/followers/kyogre.pal create mode 100644 graphics/object_events/palettes/followers/lanturn.pal create mode 100644 graphics/object_events/palettes/followers/lapras.pal create mode 100644 graphics/object_events/palettes/followers/latias.pal create mode 100644 graphics/object_events/palettes/followers/latios.pal create mode 100644 graphics/object_events/palettes/followers/ledian.pal create mode 100644 graphics/object_events/palettes/followers/ledyba.pal create mode 100644 graphics/object_events/palettes/followers/lickitung.pal create mode 100644 graphics/object_events/palettes/followers/lileep.pal create mode 100644 graphics/object_events/palettes/followers/linoone.pal create mode 100644 graphics/object_events/palettes/followers/lombre.pal create mode 100644 graphics/object_events/palettes/followers/lotad.pal create mode 100644 graphics/object_events/palettes/followers/ludicolo.pal create mode 100644 graphics/object_events/palettes/followers/lugia.pal create mode 100644 graphics/object_events/palettes/followers/luvdisc.pal create mode 100644 graphics/object_events/palettes/followers/machamp.pal create mode 100644 graphics/object_events/palettes/followers/machoke.pal create mode 100644 graphics/object_events/palettes/followers/machop.pal create mode 100644 graphics/object_events/palettes/followers/magby.pal create mode 100644 graphics/object_events/palettes/followers/magcargo.pal create mode 100644 graphics/object_events/palettes/followers/magikarp.pal create mode 100644 graphics/object_events/palettes/followers/magmar.pal create mode 100644 graphics/object_events/palettes/followers/magnemite.pal create mode 100644 graphics/object_events/palettes/followers/makuhita.pal create mode 100644 graphics/object_events/palettes/followers/manectric.pal create mode 100644 graphics/object_events/palettes/followers/mankey.pal create mode 100644 graphics/object_events/palettes/followers/mantine.pal create mode 100644 graphics/object_events/palettes/followers/mareep.pal create mode 100644 graphics/object_events/palettes/followers/marshtomp.pal create mode 100644 graphics/object_events/palettes/followers/masquerain.pal create mode 100644 graphics/object_events/palettes/followers/mawile.pal create mode 100644 graphics/object_events/palettes/followers/medicham.pal create mode 100644 graphics/object_events/palettes/followers/meditite.pal create mode 100644 graphics/object_events/palettes/followers/meganium.pal create mode 100644 graphics/object_events/palettes/followers/meowth.pal create mode 100644 graphics/object_events/palettes/followers/metang.pal create mode 100644 graphics/object_events/palettes/followers/mew.pal create mode 100644 graphics/object_events/palettes/followers/mewtwo.pal create mode 100644 graphics/object_events/palettes/followers/mightyena.pal create mode 100644 graphics/object_events/palettes/followers/milotic.pal create mode 100644 graphics/object_events/palettes/followers/miltank.pal create mode 100644 graphics/object_events/palettes/followers/misdreavus.pal create mode 100644 graphics/object_events/palettes/followers/moltres.pal create mode 100644 graphics/object_events/palettes/followers/mr_mime.pal create mode 100644 graphics/object_events/palettes/followers/mudkip.pal create mode 100644 graphics/object_events/palettes/followers/murkrow.pal create mode 100644 graphics/object_events/palettes/followers/natu.pal create mode 100644 graphics/object_events/palettes/followers/nidoking.pal create mode 100644 graphics/object_events/palettes/followers/nidoqueen.pal create mode 100644 graphics/object_events/palettes/followers/nidoran_f.pal create mode 100644 graphics/object_events/palettes/followers/nidorina.pal create mode 100644 graphics/object_events/palettes/followers/nincada.pal create mode 100644 graphics/object_events/palettes/followers/ninetales.pal create mode 100644 graphics/object_events/palettes/followers/ninjask.pal create mode 100644 graphics/object_events/palettes/followers/noctowl.pal create mode 100644 graphics/object_events/palettes/followers/nosepass.pal create mode 100644 graphics/object_events/palettes/followers/numel.pal create mode 100644 graphics/object_events/palettes/followers/nuzleaf.pal create mode 100644 graphics/object_events/palettes/followers/octillery.pal create mode 100644 graphics/object_events/palettes/followers/omanyte.pal create mode 100644 graphics/object_events/palettes/followers/omastar.pal create mode 100644 graphics/object_events/palettes/followers/pelipper.pal create mode 100644 graphics/object_events/palettes/followers/persian.pal create mode 100644 graphics/object_events/palettes/followers/phanpy.pal create mode 100644 graphics/object_events/palettes/followers/pichu.pal create mode 100644 graphics/object_events/palettes/followers/pidgeot.pal create mode 100644 graphics/object_events/palettes/followers/pidgeotto.pal create mode 100644 graphics/object_events/palettes/followers/pidgey.pal create mode 100644 graphics/object_events/palettes/followers/pikachu.pal create mode 100644 graphics/object_events/palettes/followers/piloswine.pal create mode 100644 graphics/object_events/palettes/followers/pineco.pal create mode 100644 graphics/object_events/palettes/followers/politoed.pal create mode 100644 graphics/object_events/palettes/followers/poliwag.pal create mode 100644 graphics/object_events/palettes/followers/poochyena.pal create mode 100644 graphics/object_events/palettes/followers/porygon.pal create mode 100644 graphics/object_events/palettes/followers/porygon2.pal create mode 100644 graphics/object_events/palettes/followers/primeape.pal create mode 100644 graphics/object_events/palettes/followers/quilava.pal create mode 100644 graphics/object_events/palettes/followers/qwilfish.pal create mode 100644 graphics/object_events/palettes/followers/raichu.pal create mode 100644 graphics/object_events/palettes/followers/raikou.pal create mode 100644 graphics/object_events/palettes/followers/raticate.pal create mode 100644 graphics/object_events/palettes/followers/rattata.pal create mode 100644 graphics/object_events/palettes/followers/rayquaza.pal create mode 100644 graphics/object_events/palettes/followers/regice.pal create mode 100644 graphics/object_events/palettes/followers/regirock.pal create mode 100644 graphics/object_events/palettes/followers/registeel.pal create mode 100644 graphics/object_events/palettes/followers/relicanth.pal create mode 100644 graphics/object_events/palettes/followers/remoraid.pal create mode 100644 graphics/object_events/palettes/followers/rhydon.pal create mode 100644 graphics/object_events/palettes/followers/roselia.pal create mode 100644 graphics/object_events/palettes/followers/sableye.pal create mode 100644 graphics/object_events/palettes/followers/salamence.pal create mode 100644 graphics/object_events/palettes/followers/sandshrew.pal create mode 100644 graphics/object_events/palettes/followers/sandslash.pal create mode 100644 graphics/object_events/palettes/followers/sceptile.pal create mode 100644 graphics/object_events/palettes/followers/scizor.pal create mode 100644 graphics/object_events/palettes/followers/scyther.pal create mode 100644 graphics/object_events/palettes/followers/seadra.pal create mode 100644 graphics/object_events/palettes/followers/seaking.pal create mode 100644 graphics/object_events/palettes/followers/sealeo.pal create mode 100644 graphics/object_events/palettes/followers/seedot.pal create mode 100644 graphics/object_events/palettes/followers/seel.pal create mode 100644 graphics/object_events/palettes/followers/sentret.pal create mode 100644 graphics/object_events/palettes/followers/seviper.pal create mode 100644 graphics/object_events/palettes/followers/sharpedo.pal create mode 100644 graphics/object_events/palettes/followers/shedinja.pal create mode 100644 graphics/object_events/palettes/followers/shelgon.pal create mode 100644 graphics/object_events/palettes/followers/shellder.pal create mode 100644 graphics/object_events/palettes/followers/shiftry.pal create mode 100644 graphics/object_events/palettes/followers/shroomish.pal create mode 100644 graphics/object_events/palettes/followers/shuckle.pal create mode 100644 graphics/object_events/palettes/followers/skarmory.pal create mode 100644 graphics/object_events/palettes/followers/skiploom.pal create mode 100644 graphics/object_events/palettes/followers/slaking.pal create mode 100644 graphics/object_events/palettes/followers/slakoth.pal create mode 100644 graphics/object_events/palettes/followers/slowbro.pal create mode 100644 graphics/object_events/palettes/followers/slowking.pal create mode 100644 graphics/object_events/palettes/followers/slowpoke.pal create mode 100644 graphics/object_events/palettes/followers/smeargle.pal create mode 100644 graphics/object_events/palettes/followers/smoochum.pal create mode 100644 graphics/object_events/palettes/followers/sneasel.pal create mode 100644 graphics/object_events/palettes/followers/snorlax.pal create mode 100644 graphics/object_events/palettes/followers/snorunt.pal create mode 100644 graphics/object_events/palettes/followers/snubbull.pal create mode 100644 graphics/object_events/palettes/followers/spearow.pal create mode 100644 graphics/object_events/palettes/followers/spheal.pal create mode 100644 graphics/object_events/palettes/followers/spinarak.pal create mode 100644 graphics/object_events/palettes/followers/spinda.pal create mode 100644 graphics/object_events/palettes/followers/spoink.pal create mode 100644 graphics/object_events/palettes/followers/squirtle.pal create mode 100644 graphics/object_events/palettes/followers/stantler.pal create mode 100644 graphics/object_events/palettes/followers/sudowoodo.pal create mode 100644 graphics/object_events/palettes/followers/suicune.pal create mode 100644 graphics/object_events/palettes/followers/sunflora.pal create mode 100644 graphics/object_events/palettes/followers/sunkern.pal create mode 100644 graphics/object_events/palettes/followers/surskit.pal create mode 100644 graphics/object_events/palettes/followers/swalot.pal create mode 100644 graphics/object_events/palettes/followers/swampert.pal create mode 100644 graphics/object_events/palettes/followers/swellow.pal create mode 100644 graphics/object_events/palettes/followers/swinub.pal create mode 100644 graphics/object_events/palettes/followers/taillow.pal create mode 100644 graphics/object_events/palettes/followers/tangela.pal create mode 100644 graphics/object_events/palettes/followers/tauros.pal create mode 100644 graphics/object_events/palettes/followers/teddiursa.pal create mode 100644 graphics/object_events/palettes/followers/tentacool.pal create mode 100644 graphics/object_events/palettes/followers/tentacruel.pal create mode 100644 graphics/object_events/palettes/followers/togepi.pal create mode 100644 graphics/object_events/palettes/followers/torkoal.pal create mode 100644 graphics/object_events/palettes/followers/totodile.pal create mode 100644 graphics/object_events/palettes/followers/trapinch.pal create mode 100644 graphics/object_events/palettes/followers/treecko.pal create mode 100644 graphics/object_events/palettes/followers/tropius.pal create mode 100644 graphics/object_events/palettes/followers/typhlosion.pal create mode 100644 graphics/object_events/palettes/followers/tyranitar.pal create mode 100644 graphics/object_events/palettes/followers/tyrogue.pal create mode 100644 graphics/object_events/palettes/followers/umbreon.pal create mode 100644 graphics/object_events/palettes/followers/ursaring.pal create mode 100644 graphics/object_events/palettes/followers/vaporeon.pal create mode 100644 graphics/object_events/palettes/followers/venomoth.pal create mode 100644 graphics/object_events/palettes/followers/venonat.pal create mode 100644 graphics/object_events/palettes/followers/venusaur.pal create mode 100644 graphics/object_events/palettes/followers/vibrava.pal create mode 100644 graphics/object_events/palettes/followers/victreebel.pal create mode 100644 graphics/object_events/palettes/followers/vigoroth.pal create mode 100644 graphics/object_events/palettes/followers/volbeat.pal create mode 100644 graphics/object_events/palettes/followers/vulpix.pal create mode 100644 graphics/object_events/palettes/followers/wailmer.pal create mode 100644 graphics/object_events/palettes/followers/wailord.pal create mode 100644 graphics/object_events/palettes/followers/walrein.pal create mode 100644 graphics/object_events/palettes/followers/wartortle.pal create mode 100644 graphics/object_events/palettes/followers/weepinbell.pal create mode 100644 graphics/object_events/palettes/followers/whiscash.pal create mode 100644 graphics/object_events/palettes/followers/whismur.pal create mode 100644 graphics/object_events/palettes/followers/wingull.pal create mode 100644 graphics/object_events/palettes/followers/wurmple.pal create mode 100644 graphics/object_events/palettes/followers/wynaut.pal create mode 100644 graphics/object_events/palettes/followers/xatu.pal create mode 100644 graphics/object_events/palettes/followers/yanma.pal create mode 100644 graphics/object_events/palettes/followers/zangoose.pal create mode 100644 graphics/object_events/palettes/followers/zapdos.pal create mode 100644 graphics/object_events/palettes/followers/zigzagoon.pal create mode 100644 graphics/object_events/pics/pokemon/followers/aggron.png create mode 100644 graphics/object_events/pics/pokemon/followers/aipom.png create mode 100644 graphics/object_events/pics/pokemon/followers/ampharos.png create mode 100644 graphics/object_events/pics/pokemon/followers/anorith.png create mode 100644 graphics/object_events/pics/pokemon/followers/ariados.png create mode 100644 graphics/object_events/pics/pokemon/followers/armaldo.png create mode 100644 graphics/object_events/pics/pokemon/followers/articuno.png create mode 100644 graphics/object_events/pics/pokemon/followers/bagon.png create mode 100644 graphics/object_events/pics/pokemon/followers/barboach.png create mode 100644 graphics/object_events/pics/pokemon/followers/bayleef.png create mode 100644 graphics/object_events/pics/pokemon/followers/beautifly.png create mode 100644 graphics/object_events/pics/pokemon/followers/beldum.png create mode 100644 graphics/object_events/pics/pokemon/followers/bellossom.png create mode 100644 graphics/object_events/pics/pokemon/followers/blastoise.png create mode 100644 graphics/object_events/pics/pokemon/followers/blaziken.png create mode 100644 graphics/object_events/pics/pokemon/followers/blissey.png create mode 100644 graphics/object_events/pics/pokemon/followers/breloom.png create mode 100644 graphics/object_events/pics/pokemon/followers/butterfree.png create mode 100644 graphics/object_events/pics/pokemon/followers/camerupt.png create mode 100644 graphics/object_events/pics/pokemon/followers/carvanha.png create mode 100644 graphics/object_events/pics/pokemon/followers/caterpie.png create mode 100644 graphics/object_events/pics/pokemon/followers/celebi.png create mode 100644 graphics/object_events/pics/pokemon/followers/charizard.png create mode 100644 graphics/object_events/pics/pokemon/followers/charmander.png create mode 100644 graphics/object_events/pics/pokemon/followers/charmeleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/chimecho.png create mode 100644 graphics/object_events/pics/pokemon/followers/chinchou.png create mode 100644 graphics/object_events/pics/pokemon/followers/clamperl.png create mode 100644 graphics/object_events/pics/pokemon/followers/claydol.png create mode 100644 graphics/object_events/pics/pokemon/followers/clefable.png create mode 100644 graphics/object_events/pics/pokemon/followers/cloyster.png create mode 100644 graphics/object_events/pics/pokemon/followers/corphish.png create mode 100644 graphics/object_events/pics/pokemon/followers/corsola.png create mode 100644 graphics/object_events/pics/pokemon/followers/cradily.png create mode 100644 graphics/object_events/pics/pokemon/followers/crawdaunt.png create mode 100644 graphics/object_events/pics/pokemon/followers/crobat.png create mode 100644 graphics/object_events/pics/pokemon/followers/croconaw.png create mode 100644 graphics/object_events/pics/pokemon/followers/cyndaquil.png create mode 100644 graphics/object_events/pics/pokemon/followers/delcatty.png create mode 100644 graphics/object_events/pics/pokemon/followers/delibird.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_attack.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_defense.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_normal.png create mode 100644 graphics/object_events/pics/pokemon/followers/deoxys_speed.png create mode 100644 graphics/object_events/pics/pokemon/followers/diglett.png create mode 100644 graphics/object_events/pics/pokemon/followers/dodrio.png create mode 100644 graphics/object_events/pics/pokemon/followers/donphan.png create mode 100644 graphics/object_events/pics/pokemon/followers/dragonair.png create mode 100644 graphics/object_events/pics/pokemon/followers/dragonite.png create mode 100644 graphics/object_events/pics/pokemon/followers/dratini.png create mode 100644 graphics/object_events/pics/pokemon/followers/dugtrio.png create mode 100644 graphics/object_events/pics/pokemon/followers/dunsparce.png create mode 100644 graphics/object_events/pics/pokemon/followers/dusclops.png create mode 100644 graphics/object_events/pics/pokemon/followers/duskull.png create mode 100644 graphics/object_events/pics/pokemon/followers/dustox.png create mode 100644 graphics/object_events/pics/pokemon/followers/eevee.png create mode 100644 graphics/object_events/pics/pokemon/followers/ekans.png create mode 100644 graphics/object_events/pics/pokemon/followers/electrike.png create mode 100644 graphics/object_events/pics/pokemon/followers/entei.png create mode 100644 graphics/object_events/pics/pokemon/followers/espeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/exeggutor.png create mode 100644 graphics/object_events/pics/pokemon/followers/exploud.png create mode 100644 graphics/object_events/pics/pokemon/followers/farfetchd.png create mode 100644 graphics/object_events/pics/pokemon/followers/fearow.png create mode 100644 graphics/object_events/pics/pokemon/followers/feebas.png create mode 100644 graphics/object_events/pics/pokemon/followers/feraligatr.png create mode 100644 graphics/object_events/pics/pokemon/followers/flaaffy.png create mode 100644 graphics/object_events/pics/pokemon/followers/flareon.png create mode 100644 graphics/object_events/pics/pokemon/followers/flygon.png create mode 100644 graphics/object_events/pics/pokemon/followers/forretress.png create mode 100644 graphics/object_events/pics/pokemon/followers/gardevoir.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastly.png create mode 100644 graphics/object_events/pics/pokemon/followers/gengar.png create mode 100644 graphics/object_events/pics/pokemon/followers/girafarig.png create mode 100644 graphics/object_events/pics/pokemon/followers/glalie.png create mode 100644 graphics/object_events/pics/pokemon/followers/gligar.png create mode 100644 graphics/object_events/pics/pokemon/followers/goldeen.png create mode 100644 graphics/object_events/pics/pokemon/followers/golduck.png create mode 100644 graphics/object_events/pics/pokemon/followers/golem.png create mode 100644 graphics/object_events/pics/pokemon/followers/gorebyss.png create mode 100644 graphics/object_events/pics/pokemon/followers/granbull.png create mode 100644 graphics/object_events/pics/pokemon/followers/groudon.png create mode 100644 graphics/object_events/pics/pokemon/followers/grovyle.png create mode 100644 graphics/object_events/pics/pokemon/followers/grumpig.png create mode 100644 graphics/object_events/pics/pokemon/followers/gulpin.png create mode 100644 graphics/object_events/pics/pokemon/followers/gyarados.png create mode 100644 graphics/object_events/pics/pokemon/followers/hariyama.png create mode 100644 graphics/object_events/pics/pokemon/followers/haunter.png create mode 100644 graphics/object_events/pics/pokemon/followers/heracross.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmonchan.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmonlee.png create mode 100644 graphics/object_events/pics/pokemon/followers/hitmontop.png create mode 100644 graphics/object_events/pics/pokemon/followers/ho_oh.png create mode 100644 graphics/object_events/pics/pokemon/followers/hoothoot.png create mode 100644 graphics/object_events/pics/pokemon/followers/hoppip.png create mode 100644 graphics/object_events/pics/pokemon/followers/horsea.png create mode 100644 graphics/object_events/pics/pokemon/followers/huntail.png create mode 100644 graphics/object_events/pics/pokemon/followers/igglybuff.png create mode 100644 graphics/object_events/pics/pokemon/followers/illumise.png create mode 100644 graphics/object_events/pics/pokemon/followers/ivysaur.png create mode 100644 graphics/object_events/pics/pokemon/followers/jigglypuff.png create mode 100644 graphics/object_events/pics/pokemon/followers/jirachi.png create mode 100644 graphics/object_events/pics/pokemon/followers/jolteon.png create mode 100644 graphics/object_events/pics/pokemon/followers/jumpluff.png create mode 100644 graphics/object_events/pics/pokemon/followers/jynx.png create mode 100644 graphics/object_events/pics/pokemon/followers/kabuto.png create mode 100644 graphics/object_events/pics/pokemon/followers/kabutops.png create mode 100644 graphics/object_events/pics/pokemon/followers/kangaskhan.png create mode 100644 graphics/object_events/pics/pokemon/followers/kecleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/kingdra.png create mode 100644 graphics/object_events/pics/pokemon/followers/krabby.png create mode 100644 graphics/object_events/pics/pokemon/followers/kyogre.png create mode 100644 graphics/object_events/pics/pokemon/followers/lanturn.png create mode 100644 graphics/object_events/pics/pokemon/followers/lapras.png create mode 100644 graphics/object_events/pics/pokemon/followers/latias.png create mode 100644 graphics/object_events/pics/pokemon/followers/latios.png create mode 100644 graphics/object_events/pics/pokemon/followers/ledian.png create mode 100644 graphics/object_events/pics/pokemon/followers/ledyba.png create mode 100644 graphics/object_events/pics/pokemon/followers/lickitung.png create mode 100644 graphics/object_events/pics/pokemon/followers/lileep.png create mode 100644 graphics/object_events/pics/pokemon/followers/linoone.png create mode 100644 graphics/object_events/pics/pokemon/followers/lombre.png create mode 100644 graphics/object_events/pics/pokemon/followers/lotad.png create mode 100644 graphics/object_events/pics/pokemon/followers/ludicolo.png create mode 100644 graphics/object_events/pics/pokemon/followers/lugia.png create mode 100644 graphics/object_events/pics/pokemon/followers/luvdisc.png create mode 100644 graphics/object_events/pics/pokemon/followers/machamp.png create mode 100644 graphics/object_events/pics/pokemon/followers/machoke.png create mode 100644 graphics/object_events/pics/pokemon/followers/machop.png create mode 100644 graphics/object_events/pics/pokemon/followers/magby.png create mode 100644 graphics/object_events/pics/pokemon/followers/magcargo.png create mode 100644 graphics/object_events/pics/pokemon/followers/magikarp.png create mode 100644 graphics/object_events/pics/pokemon/followers/magmar.png create mode 100644 graphics/object_events/pics/pokemon/followers/magnemite.png create mode 100644 graphics/object_events/pics/pokemon/followers/magneton.png create mode 100644 graphics/object_events/pics/pokemon/followers/makuhita.png create mode 100644 graphics/object_events/pics/pokemon/followers/manectric.png create mode 100644 graphics/object_events/pics/pokemon/followers/mankey.png create mode 100644 graphics/object_events/pics/pokemon/followers/mantine.png create mode 100644 graphics/object_events/pics/pokemon/followers/mareep.png create mode 100644 graphics/object_events/pics/pokemon/followers/marshtomp.png create mode 100644 graphics/object_events/pics/pokemon/followers/masquerain.png create mode 100644 graphics/object_events/pics/pokemon/followers/mawile.png create mode 100644 graphics/object_events/pics/pokemon/followers/medicham.png create mode 100644 graphics/object_events/pics/pokemon/followers/meditite.png create mode 100644 graphics/object_events/pics/pokemon/followers/meganium.png create mode 100644 graphics/object_events/pics/pokemon/followers/meowth.png create mode 100644 graphics/object_events/pics/pokemon/followers/metang.png create mode 100644 graphics/object_events/pics/pokemon/followers/mew.png create mode 100644 graphics/object_events/pics/pokemon/followers/mewtwo.png create mode 100644 graphics/object_events/pics/pokemon/followers/mightyena.png create mode 100644 graphics/object_events/pics/pokemon/followers/milotic.png create mode 100644 graphics/object_events/pics/pokemon/followers/miltank.png create mode 100644 graphics/object_events/pics/pokemon/followers/misdreavus.png create mode 100644 graphics/object_events/pics/pokemon/followers/moltres.png create mode 100644 graphics/object_events/pics/pokemon/followers/mr_mime.png create mode 100644 graphics/object_events/pics/pokemon/followers/mudkip.png create mode 100644 graphics/object_events/pics/pokemon/followers/murkrow.png create mode 100644 graphics/object_events/pics/pokemon/followers/natu.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoking.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoqueen.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidoran_f.png create mode 100644 graphics/object_events/pics/pokemon/followers/nidorina.png create mode 100644 graphics/object_events/pics/pokemon/followers/nincada.png create mode 100644 graphics/object_events/pics/pokemon/followers/ninetales.png create mode 100644 graphics/object_events/pics/pokemon/followers/ninjask.png create mode 100644 graphics/object_events/pics/pokemon/followers/noctowl.png create mode 100644 graphics/object_events/pics/pokemon/followers/nosepass.png create mode 100644 graphics/object_events/pics/pokemon/followers/numel.png create mode 100644 graphics/object_events/pics/pokemon/followers/nuzleaf.png create mode 100644 graphics/object_events/pics/pokemon/followers/octillery.png create mode 100644 graphics/object_events/pics/pokemon/followers/omanyte.png create mode 100644 graphics/object_events/pics/pokemon/followers/omastar.png create mode 100644 graphics/object_events/pics/pokemon/followers/pelipper.png create mode 100644 graphics/object_events/pics/pokemon/followers/persian.png create mode 100644 graphics/object_events/pics/pokemon/followers/phanpy.png create mode 100644 graphics/object_events/pics/pokemon/followers/pichu.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgeot.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgeotto.png create mode 100644 graphics/object_events/pics/pokemon/followers/pidgey.png create mode 100644 graphics/object_events/pics/pokemon/followers/pikachu.png create mode 100644 graphics/object_events/pics/pokemon/followers/piloswine.png create mode 100644 graphics/object_events/pics/pokemon/followers/pineco.png create mode 100644 graphics/object_events/pics/pokemon/followers/politoed.png create mode 100644 graphics/object_events/pics/pokemon/followers/poliwag.png create mode 100644 graphics/object_events/pics/pokemon/followers/poochyena.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygon.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygon2.png create mode 100644 graphics/object_events/pics/pokemon/followers/primeape.png create mode 100644 graphics/object_events/pics/pokemon/followers/quilava.png create mode 100644 graphics/object_events/pics/pokemon/followers/qwilfish.png create mode 100644 graphics/object_events/pics/pokemon/followers/raichu.png create mode 100644 graphics/object_events/pics/pokemon/followers/raikou.png create mode 100644 graphics/object_events/pics/pokemon/followers/raticate.png create mode 100644 graphics/object_events/pics/pokemon/followers/rattata.png create mode 100644 graphics/object_events/pics/pokemon/followers/rayquaza.png create mode 100644 graphics/object_events/pics/pokemon/followers/regice.png create mode 100644 graphics/object_events/pics/pokemon/followers/regirock.png create mode 100644 graphics/object_events/pics/pokemon/followers/registeel.png create mode 100644 graphics/object_events/pics/pokemon/followers/relicanth.png create mode 100644 graphics/object_events/pics/pokemon/followers/remoraid.png create mode 100644 graphics/object_events/pics/pokemon/followers/rhydon.png create mode 100644 graphics/object_events/pics/pokemon/followers/roselia.png create mode 100644 graphics/object_events/pics/pokemon/followers/sableye.png create mode 100644 graphics/object_events/pics/pokemon/followers/salamence.png create mode 100644 graphics/object_events/pics/pokemon/followers/sandshrew.png create mode 100644 graphics/object_events/pics/pokemon/followers/sandslash.png create mode 100644 graphics/object_events/pics/pokemon/followers/sceptile.png create mode 100644 graphics/object_events/pics/pokemon/followers/scizor.png create mode 100644 graphics/object_events/pics/pokemon/followers/scyther.png create mode 100644 graphics/object_events/pics/pokemon/followers/seadra.png create mode 100644 graphics/object_events/pics/pokemon/followers/seaking.png create mode 100644 graphics/object_events/pics/pokemon/followers/sealeo.png create mode 100644 graphics/object_events/pics/pokemon/followers/seedot.png create mode 100644 graphics/object_events/pics/pokemon/followers/seel.png create mode 100644 graphics/object_events/pics/pokemon/followers/sentret.png create mode 100644 graphics/object_events/pics/pokemon/followers/seviper.png create mode 100644 graphics/object_events/pics/pokemon/followers/sharpedo.png create mode 100644 graphics/object_events/pics/pokemon/followers/shedinja.png create mode 100644 graphics/object_events/pics/pokemon/followers/shelgon.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellder.png create mode 100644 graphics/object_events/pics/pokemon/followers/shiftry.png create mode 100644 graphics/object_events/pics/pokemon/followers/shroomish.png create mode 100644 graphics/object_events/pics/pokemon/followers/shuckle.png create mode 100644 graphics/object_events/pics/pokemon/followers/skarmory.png create mode 100644 graphics/object_events/pics/pokemon/followers/skiploom.png create mode 100644 graphics/object_events/pics/pokemon/followers/slaking.png create mode 100644 graphics/object_events/pics/pokemon/followers/slakoth.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowbro.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowking.png create mode 100644 graphics/object_events/pics/pokemon/followers/slowpoke.png create mode 100644 graphics/object_events/pics/pokemon/followers/smeargle.png create mode 100644 graphics/object_events/pics/pokemon/followers/smoochum.png create mode 100644 graphics/object_events/pics/pokemon/followers/sneasel.png create mode 100644 graphics/object_events/pics/pokemon/followers/snorlax.png create mode 100644 graphics/object_events/pics/pokemon/followers/snorunt.png create mode 100644 graphics/object_events/pics/pokemon/followers/snubbull.png create mode 100644 graphics/object_events/pics/pokemon/followers/spearow.png create mode 100644 graphics/object_events/pics/pokemon/followers/spheal.png create mode 100644 graphics/object_events/pics/pokemon/followers/spinarak.png create mode 100644 graphics/object_events/pics/pokemon/followers/spinda.png create mode 100644 graphics/object_events/pics/pokemon/followers/spoink.png create mode 100644 graphics/object_events/pics/pokemon/followers/squirtle.png create mode 100644 graphics/object_events/pics/pokemon/followers/stantler.png create mode 100644 graphics/object_events/pics/pokemon/followers/sudowoodo.png create mode 100644 graphics/object_events/pics/pokemon/followers/suicune.png create mode 100644 graphics/object_events/pics/pokemon/followers/sunflora.png create mode 100644 graphics/object_events/pics/pokemon/followers/sunkern.png create mode 100644 graphics/object_events/pics/pokemon/followers/surskit.png create mode 100644 graphics/object_events/pics/pokemon/followers/swalot.png create mode 100644 graphics/object_events/pics/pokemon/followers/swampert.png create mode 100644 graphics/object_events/pics/pokemon/followers/swellow.png create mode 100644 graphics/object_events/pics/pokemon/followers/swinub.png create mode 100644 graphics/object_events/pics/pokemon/followers/taillow.png create mode 100644 graphics/object_events/pics/pokemon/followers/tangela.png create mode 100644 graphics/object_events/pics/pokemon/followers/tauros.png create mode 100644 graphics/object_events/pics/pokemon/followers/teddiursa.png create mode 100644 graphics/object_events/pics/pokemon/followers/tentacool.png create mode 100644 graphics/object_events/pics/pokemon/followers/tentacruel.png create mode 100644 graphics/object_events/pics/pokemon/followers/togepi.png create mode 100644 graphics/object_events/pics/pokemon/followers/torkoal.png create mode 100644 graphics/object_events/pics/pokemon/followers/totodile.png create mode 100644 graphics/object_events/pics/pokemon/followers/trapinch.png create mode 100644 graphics/object_events/pics/pokemon/followers/treecko.png create mode 100644 graphics/object_events/pics/pokemon/followers/tropius.png create mode 100644 graphics/object_events/pics/pokemon/followers/typhlosion.png create mode 100644 graphics/object_events/pics/pokemon/followers/tyranitar.png create mode 100644 graphics/object_events/pics/pokemon/followers/tyrogue.png create mode 100644 graphics/object_events/pics/pokemon/followers/umbreon.png create mode 100644 graphics/object_events/pics/pokemon/followers/ursaring.png create mode 100644 graphics/object_events/pics/pokemon/followers/vaporeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/venomoth.png create mode 100644 graphics/object_events/pics/pokemon/followers/venonat.png create mode 100644 graphics/object_events/pics/pokemon/followers/venusaur.png create mode 100644 graphics/object_events/pics/pokemon/followers/vibrava.png create mode 100644 graphics/object_events/pics/pokemon/followers/victreebel.png create mode 100644 graphics/object_events/pics/pokemon/followers/vigoroth.png create mode 100644 graphics/object_events/pics/pokemon/followers/volbeat.png create mode 100644 graphics/object_events/pics/pokemon/followers/vulpix.png create mode 100644 graphics/object_events/pics/pokemon/followers/wailmer.png create mode 100644 graphics/object_events/pics/pokemon/followers/wailord.png create mode 100644 graphics/object_events/pics/pokemon/followers/walrein.png create mode 100644 graphics/object_events/pics/pokemon/followers/wartortle.png create mode 100644 graphics/object_events/pics/pokemon/followers/weepinbell.png create mode 100644 graphics/object_events/pics/pokemon/followers/whiscash.png create mode 100644 graphics/object_events/pics/pokemon/followers/whismur.png create mode 100644 graphics/object_events/pics/pokemon/followers/wingull.png create mode 100644 graphics/object_events/pics/pokemon/followers/wurmple.png create mode 100644 graphics/object_events/pics/pokemon/followers/wynaut.png create mode 100644 graphics/object_events/pics/pokemon/followers/xatu.png create mode 100644 graphics/object_events/pics/pokemon/followers/yanma.png create mode 100644 graphics/object_events/pics/pokemon/followers/zangoose.png create mode 100644 graphics/object_events/pics/pokemon/followers/zapdos.png create mode 100644 graphics/object_events/pics/pokemon/followers/zigzagoon.png delete mode 100755 graphics/trainer_hill/maps_expert/floor_0/collision.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_0/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_1/collision.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_1/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_2/collision.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_2/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_3/collision.bin delete mode 100755 graphics/trainer_hill/maps_expert/floor_3/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_jp/floor_0/collision.bin delete mode 100755 graphics/trainer_hill/maps_jp/floor_0/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_jp/floor_1/collision.bin delete mode 100755 graphics/trainer_hill/maps_jp/floor_1/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_0/collision.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_0/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_1/collision.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_1/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_2/collision.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_2/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_3/collision.bin delete mode 100755 graphics/trainer_hill/maps_normal/floor_3/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_0/collision.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_0/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_1/collision.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_1/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_2/collision.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_2/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_3/collision.bin delete mode 100755 graphics/trainer_hill/maps_unique/floor_3/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_0/collision.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_0/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_1/collision.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_1/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_2/collision.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_2/metatiles.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_3/collision.bin delete mode 100755 graphics/trainer_hill/maps_variety/floor_3/metatiles.bin mode change 100644 => 100755 include/constants/event_object_movement.h create mode 100644 include/constants/follow_me.h create mode 100644 include/follow_me.h mode change 100644 => 100755 src/data/object_events/movement_action_func_tables.h mode change 100644 => 100755 src/data/object_events/object_event_anims.h mode change 100644 => 100755 src/data/object_events/object_event_graphics.h mode change 100644 => 100755 src/data/object_events/object_event_graphics_info.h mode change 100644 => 100755 src/data/object_events/object_event_graphics_info_pointers.h diff --git a/INSTALL.md b/INSTALL.md index 7f1d47879..f6434c07b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -451,6 +451,13 @@ Replace `` with the number that the `nproc` command returned. `nproc` is not available on macOS. The alternative is `sysctl -n hw.ncpu` ([relevant Stack Overflow thread](https://stackoverflow.com/questions/1715580)). +## Debug info + +To build **pokeemerald.elf** with enhanced debug info: +```bash +make DINFO=1 +``` + ## devkitARM's C compiler This project supports the `arm-none-eabi-gcc` compiler included with devkitARM. If devkitARM (a.k.a. gba-dev) has already been installed as part of the platform-specific instructions, simply run: @@ -527,7 +534,7 @@ devkitARM is now installed. devkitARM is now installed. -### Installing devkitARM on Arch Linux +## Installing devkitARM on Arch Linux 1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages. 2. Install `gba-dev`: run the following command as root. @@ -545,7 +552,7 @@ devkitARM is now installed. devkitARM is now installed. -### Other toolchains +## Other toolchains To build using a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain, which must contain the subdirectory `bin`. ```bash @@ -557,14 +564,6 @@ make TOOLCHAIN="/usr/local/arm-none-eabi" ``` To compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present. -### Building with debug info under a modern toolchain - -To build **pokeemerald.elf** with debug symbols under a modern toolchain: -```bash -make modern DINFO=1 -``` -Note that this is not necessary for a non-modern build since those are built with debug symbols by default. - # Useful additional tools * [porymap](https://github.com/huderlem/porymap) for viewing and editing maps diff --git a/Makefile b/Makefile index c36cc8e93..6283a87fe 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ LIBPATH := -L ../../tools/agbcc/lib LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall else CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g ROM := $(MODERN_ROM_NAME) OBJ_DIR := $(MODERN_OBJ_DIR_NAME) LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))" diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 62df0878b..a3052dfc4 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1729,6 +1729,28 @@ .2byte \quantity .endm + @ sets an NPC up to follow the player + .macro setfollower localId:req, flags:req + .byte 0xe3 + .byte \localId + .2byte \flags + .endm + + @ remove the following NPC (assumes there will only ever be one) + .macro destroyfollower + .byte 0xe4 + .endm + + @ makes the player and follower face one another + .macro facefollower + .byte 0xe5 + .endm + + @ checks if you have a follower. returns the result to VAR_RESULT + .macro checkfollower + .byte 0xe6 + .endm + @ Supplementary diff --git a/asm/macros/trainer_hill.inc b/asm/macros/trainer_hill.inc index 988e2867a..65c8c6bef 100644 --- a/asm/macros/trainer_hill.inc +++ b/asm/macros/trainer_hill.inc @@ -100,9 +100,9 @@ special CallTrainerHillFunction .endm - @ Set the challenge mode to HILL_MODE_* (Normal, Variety, Unique, or Expert) - .macro trainerhill_setmode mode:req - setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_MODE - copyvar VAR_0x8005, \mode + @ Set the challenge mode to HILL_TAG_* (Normal, Variety, Unique, or Expert) + .macro trainerhill_settag tag:req + setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_TAG + copyvar VAR_0x8005, \tag special CallTrainerHillFunction .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index eff53de84..1cfc5230c 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -763,7 +763,7 @@ Move_TAKE_DOWN: setalpha 12, 8 createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 delay 35 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 @@ -783,14 +783,14 @@ Move_TAKE_DOWN: Move_DOUBLE_EDGE: loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish delay 10 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish @@ -802,7 +802,7 @@ Move_DOUBLE_EDGE: createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 @@ -860,7 +860,7 @@ Move_FIRE_BLAST: call FireBlastRing call FireBlastRing delay 24 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 8, RGB_BLACK waitforvisualfinish delay 19 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 20, 1 @@ -882,7 +882,7 @@ Move_FIRE_BLAST: delay 3 call FireBlastCross waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 2, 8, 0, RGB_BLACK waitforvisualfinish end FireBlastRing: @@ -941,17 +941,17 @@ Move_MEGA_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 50 call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -984,18 +984,18 @@ Move_MEGA_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 50 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1054,21 +1054,21 @@ SonicBoomHit: Move_THUNDER_SHOCK: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -44, 0 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1076,7 +1076,7 @@ Move_THUNDERBOLT: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 24, -52, 0 @@ -1088,9 +1088,9 @@ Move_THUNDERBOLT: createvisualtask AnimTask_ElectricBolt, 5, 0, -60, 1 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3 @@ -1104,20 +1104,20 @@ Move_THUNDERBOLT: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK waitforvisualfinish delay 20 waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1125,7 +1125,7 @@ Move_THUNDER_WAVE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -48, 0 @@ -1138,7 +1138,7 @@ Move_THUNDER_WAVE: delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1247,10 +1247,10 @@ Move_REVERSAL: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE delay 10 playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 @@ -1264,7 +1264,7 @@ Move_REVERSAL: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 8 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 @@ -1348,7 +1348,7 @@ Move_PSYCH_UP: delay 4 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 9, F_PAL_ATTACKER, 2, 10, 0, RGB_YELLOW + createvisualtask AnimTask_BlendBattleAnimPal, 9, 2, 2, 10, 0, RGB_YELLOW delay 30 clearmonbg ANIM_ATK_PARTNER blendoff @@ -1446,18 +1446,18 @@ FuryCutterRight: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto FuryCutterContinue FuryCutterMedium: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrong: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrongest: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 @@ -1466,7 +1466,7 @@ Move_SELF_DESTRUCT: call SelfDestructExplode call SelfDestructExplode waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 9, 0, RGB_RED end SelfDestructExplode: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER @@ -1623,7 +1623,7 @@ RisingWaterHitEffect: Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 @@ -1632,9 +1632,9 @@ Move_EXPLOSION: call Explosion1 call Explosion1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 16, 16, RGB_WHITE delay 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 16, 0, RGB_WHITE end Explosion1: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER @@ -1678,16 +1678,16 @@ Move_PROTECT: Move_DETECT: loadspritegfx ANIM_TAG_SPARKLE_4 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_WHITE delay 18 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 9, 0, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 9, 0, RGB_WHITE waitforvisualfinish end @@ -1709,7 +1709,7 @@ Frustration_Continue: Frustration_Strongest: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1740,12 +1740,12 @@ Frustration_Strongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 goto Frustration_Continue Frustration_Strong: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1766,7 +1766,7 @@ Frustration_Strong: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 goto Frustration_Continue Frustration_Medium: playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1808,7 +1808,7 @@ Move_SAFEGUARD: createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -1864,13 +1864,13 @@ Move_GUILLOTINE: playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_BLACK delay 9 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 delay 46 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 8, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1900,7 +1900,7 @@ Move_PAY_DAY: Move_OUTRAGE: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 2, 5, 3, 8, RGB(14, 13, 0) + createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, RGB(14, 13, 0) createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 @@ -1946,25 +1946,25 @@ Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 @@ -1976,14 +1976,14 @@ Move_SPARK: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, -31, 2, 0, 6, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, RGB(31, 31, 22) call ElectricityEffect waitforvisualfinish end @@ -2014,7 +2014,7 @@ Move_ATTRACT: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, RGB(31, 25, 27) end Move_GROWTH: @@ -2024,7 +2024,7 @@ Move_GROWTH: waitforvisualfinish end GrowthEffect: - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return @@ -2084,12 +2084,12 @@ Move_MEAN_LOOK: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET, 15, 4 waitplaysewithpan SE_M_LEER, SOUND_PAN_TARGET, 85 createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2 delay 120 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK delay 30 clearmonbg ANIM_DEF_PARTNER waitforvisualfinish @@ -2229,7 +2229,7 @@ Move_ICY_WIND: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 0, 4, RGB_BLACK fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 @@ -2246,7 +2246,7 @@ Move_ICY_WIND: clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadeout - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 4, 0, RGB_BLACK waitbgfadein end IcyWindSwirlingSnowballs: @@ -2601,9 +2601,9 @@ Move_EARTHQUAKE: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end Move_FISSURE: @@ -2614,11 +2614,11 @@ Move_FISSURE: delay 8 call FissureDirtPlumeFar delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeClose delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeFar delay 50 @@ -2846,7 +2846,7 @@ SkullBashAttack: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish playse SE_BANG - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 @@ -2892,7 +2892,7 @@ Move_GLARE: createvisualtask AnimTask_GlareEyeDots, 5, 0 playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 @@ -2901,7 +2901,7 @@ Move_GLARE: delay 2 createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 16, 0, RGB_BLACK end Move_BARRAGE: @@ -2926,17 +2926,17 @@ SkyAttackSetUp: jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner SkyAttackSetUpAgainstOpponent: - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 27, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 loopsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER, 4, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 25, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -2945,13 +2945,13 @@ SkyAttackSetUpAgainstPartner: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 1, 8, 0, RGB_BLACK waitforvisualfinish @@ -2963,7 +2963,7 @@ SkyAttackUnleash: loadspritegfx ANIM_TAG_BIRD call SetSkyBg monbg ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE delay 4 createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 waitforvisualfinish @@ -2975,7 +2975,7 @@ SkyAttackUnleash: delay 20 createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 15, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATTACKER call UnsetSkyBg @@ -3025,7 +3025,7 @@ Move_SUPER_FANG: createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2 playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 7, 12, 1 waitforvisualfinish blendoff @@ -3113,7 +3113,7 @@ Move_SPITE: playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish @@ -3198,7 +3198,7 @@ Move_ENDURE: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -3332,9 +3332,9 @@ MagnitudeIntense: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd Move_RAPID_SPIN: @@ -3361,7 +3361,7 @@ Move_MOONLIGHT: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3484,12 +3484,12 @@ Move_HEAT_WAVE: Move_HAIL: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 6, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_Hail, 5 loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 6, 0, RGB_BLACK end Move_TORMENT: @@ -3567,7 +3567,7 @@ Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -3591,7 +3591,7 @@ Move_CHARGE: createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff end @@ -3721,13 +3721,13 @@ BrickBreakNormal: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3747,7 +3747,7 @@ BrickBreakShatteredWall: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 @@ -3759,7 +3759,7 @@ BrickBreakShatteredWall: createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3798,7 +3798,7 @@ Move_ENDEAVOR: Move_ERUPTION: loadspritegfx ANIM_TAG_WARM_ROCK - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, RGB_RED waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 @@ -3818,7 +3818,7 @@ Move_ERUPTION: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60 loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, RGB_RED end Move_SKILL_SWAP: @@ -3873,13 +3873,13 @@ Move_CAMOUFLAGE: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER setalpha 16, 0 - createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 + createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 delay 16 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 - createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 + createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0 waitforvisualfinish createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 waitforvisualfinish @@ -3891,13 +3891,13 @@ Move_TAIL_GLOW: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, ANIM_ATTACKER delay 18 loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER, 16, 6 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 @@ -3955,15 +3955,15 @@ Move_MIST_BALL: waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 10, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_LoadMistTiles, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 3, 0, 16, RGB_WHITE delay 8 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 delay 70 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE end Move_FEATHER_DANCE: @@ -4133,7 +4133,7 @@ Move_AROMATHERAPY: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 0, 7, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, RGB(13, 31, 12) delay 1 monbg ANIM_ATTACKER delay 1 @@ -4151,7 +4151,7 @@ Move_AROMATHERAPY: waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 7, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, RGB(13, 31, 12) delay 1 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 1 @@ -4162,7 +4162,7 @@ Move_AROMATHERAPY: createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -4223,13 +4223,13 @@ Move_ODOR_SLEUTH: waitforvisualfinish clearmonbg ANIM_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end Move_GRASS_WHISTLE: loadspritegfx ANIM_TAG_MUSIC_NOTES - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish @@ -4260,19 +4260,19 @@ Move_GRASS_WHISTLE: delay 4 waitforvisualfinish createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB(18, 31, 12) waitforvisualfinish end Move_TICKLE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, RGB_BLACK waitforvisualfinish delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, ANIM_ATTACKER @@ -4351,7 +4351,7 @@ Move_AERIAL_ACE: playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER delay 5 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -4361,7 +4361,7 @@ Move_AERIAL_ACE: Move_IRON_DEFENSE: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end @@ -4414,7 +4414,7 @@ Move_VOLT_TACKLE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 8, RGB_BLACK waitforvisualfinish createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4451,7 +4451,7 @@ Move_VOLT_TACKLE: delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 8, 0, RGB_BLACK waitforvisualfinish end @@ -4547,7 +4547,7 @@ Move_SHOCK_WAVE: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4561,10 +4561,10 @@ Move_SHOCK_WAVE: playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 18, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 16, 16, RGB_BLACK delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 0, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -4629,7 +4629,7 @@ Move_MIND_READER: createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5 delay 40 playsewithpan SE_M_LEER, SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 1, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, RGB_BLACK call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -4665,8 +4665,8 @@ Move_ICE_PUNCH: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(12, 26, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB(12, 26, 31) delay 20 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 0 @@ -4688,9 +4688,9 @@ Move_ICE_PUNCH: delay 15 call IceCrystalEffectShort delay 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB(12, 26, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -4712,7 +4712,7 @@ Move_CONFUSION: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1 @@ -4729,7 +4729,7 @@ Move_PSYCHIC: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB(31, 23, 0) waitforvisualfinish loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 @@ -4754,7 +4754,7 @@ FutureSight: call SetPsychicBackground setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -4767,7 +4767,7 @@ Move_THUNDER: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1 waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK delay 16 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET @@ -4811,7 +4811,7 @@ Move_THUNDER: delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout @@ -4825,7 +4825,7 @@ Move_THUNDER_PUNCH: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK waitforvisualfinish playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 @@ -4845,7 +4845,7 @@ Move_THUNDER_PUNCH: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish clearmonbg ANIM_TARGET @@ -4931,7 +4931,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 9, RGB_RED createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 21, 1 @@ -4951,7 +4951,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -5031,17 +5031,17 @@ Move_LIGHT_SCREEN: end SpecialScreenSparkle: - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, 1 delay 5 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, 1 delay 7 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, 1 delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, 1 return Move_MIRROR_COAT: @@ -5064,11 +5064,11 @@ Move_REFLECT: waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_BLUE_LIGHT_WALL delay 20 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, 1 delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, 1 delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, TRUE + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, 1 waitforvisualfinish delay 1 blendoff @@ -5135,7 +5135,7 @@ Move_SMOG: call SmogCloud delay 120 loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(26, 0, 26) delay 10 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish @@ -5269,14 +5269,14 @@ Move_DRAGON_RAGE: Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -5347,7 +5347,7 @@ Move_ICE_BEAM: splitbgprio ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK waitforvisualfinish createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 4, 4, 0, 10 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 @@ -5356,7 +5356,7 @@ Move_ICE_BEAM: call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, RGB(0, 20, 31) createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -5372,9 +5372,9 @@ Move_ICE_BEAM: waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -5437,7 +5437,7 @@ SolarBeamEnd: SolarBeamSetUp: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 1, 4, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, RGB(31, 31, 11) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call SolarBeamAbsorbEffect waitforvisualfinish @@ -5482,7 +5482,7 @@ SolarBeamUnleash: delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 10, RGB(25, 31, 0) createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 @@ -5497,7 +5497,7 @@ SolarBeamUnleash: call SolarBeamUnleash1 call SolarBeamUnleash1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 10, 0, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 10, 0, RGB(25, 31, 0) call UnsetSolarBeamBg goto SolarBeamEnd SolarBeamUnleash1: @@ -5572,7 +5572,7 @@ BlizzardAgainstPlayer: Move_POWDER_SNOW: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK waitforvisualfinish panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call PowderSnowSnowballs @@ -5584,7 +5584,7 @@ Move_POWDER_SNOW: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 20 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, RGB_BLACK end PowderSnowSnowballs: createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1 @@ -5665,7 +5665,7 @@ Move_SIGNAL_BEAM: call SignalBeamOrbs call SignalBeamOrbs createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 25, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs @@ -5698,7 +5698,7 @@ Move_ABSORB: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 @@ -5711,7 +5711,7 @@ Move_ABSORB: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5751,7 +5751,7 @@ Move_MEGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 @@ -5764,7 +5764,7 @@ Move_MEGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5812,7 +5812,7 @@ Move_GIGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 @@ -5825,7 +5825,7 @@ Move_GIGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5891,14 +5891,14 @@ Move_LEECH_LIFE: delay 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK waitforvisualfinish call AbsorbEffect waitforvisualfinish delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5906,7 +5906,7 @@ Move_LEECH_LIFE: Move_SYNTHESIS: loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, RGB(27, 31, 18) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish @@ -5948,7 +5948,7 @@ Move_SLUDGE: createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) call PoisonBubblesEffect waitforvisualfinish end @@ -5966,7 +5966,7 @@ Move_SLUDGE_BOMB: call SludgeBombProjectile call SludgeBombProjectile createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 @@ -6010,7 +6010,7 @@ Move_ACID: delay 15 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 @@ -6060,7 +6060,7 @@ Move_BONE_CLUB: delay 12 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -6124,7 +6124,7 @@ MegahornContinue: createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 delay 3 @@ -6266,7 +6266,7 @@ Move_CRABHAMMER: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 @@ -6362,14 +6362,14 @@ Move_WHIRLPOOL: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1 call WhirlpoolEffect call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -6469,7 +6469,7 @@ Move_CROSS_CHOP: createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 40 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 createsprite gCrossImpactSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 20 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 waitforvisualfinish @@ -6721,7 +6721,7 @@ Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE waitforvisualfinish panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay @@ -6729,7 +6729,7 @@ Move_SUNNY_DAY: call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6929,7 +6929,7 @@ Move_MIST: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6945,9 +6945,9 @@ Move_HAZE: playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 1, 16, 0, RGB_BLACK end Move_FIRE_PUNCH: @@ -6956,7 +6956,7 @@ Move_FIRE_PUNCH: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB_RED createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 0 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 64 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 128 @@ -6970,7 +6970,7 @@ Move_FIRE_PUNCH: delay 4 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7099,7 +7099,7 @@ Move_POISON_GAS: createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 28, 6 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 6, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, RGB(26, 0, 26) waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -7133,7 +7133,7 @@ Move_PSYBEAM: call PsybeamRings call PsybeamRings createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, ANIM_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) call PsybeamRings call PsybeamRings call PsybeamRings @@ -7158,7 +7158,7 @@ Move_HYPNOSIS: call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) waitforvisualfinish delay 1 call UnsetPsychicBackground @@ -7178,7 +7178,7 @@ Move_PSYWAVE: createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, RGB(31, 18, 31) call PsywaveRings call PsywaveRings call PsywaveRings @@ -7314,7 +7314,7 @@ Move_NIGHT_SHADE: createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7376,7 +7376,7 @@ Move_FOCUS_ENERGY: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -7389,7 +7389,7 @@ Move_BIDE: end BideSetUp: loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish end @@ -7399,7 +7399,7 @@ BideUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 @@ -7418,7 +7418,7 @@ BideUnleash: delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 11, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7429,7 +7429,7 @@ Move_STRING_SHOT: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call StringShotThread @@ -7461,7 +7461,7 @@ Move_STRING_SHOT: clearmonbg ANIM_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK end StringShotThread: @@ -7474,7 +7474,7 @@ Move_SPIDER_WEB: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK waitforvisualfinish splitbgprio ANIM_TARGET loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 @@ -7498,7 +7498,7 @@ Move_SPIDER_WEB: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK end SpiderWebThread: @@ -7566,7 +7566,7 @@ Move_RECOVER: monbg ANIM_ATK_PARTNER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, RGB(31, 31, 11) call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7608,7 +7608,7 @@ Move_MIMIC: setarg 7, 0xFFFF waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish clearmonbg_static ANIM_DEF_PARTNER blendoff @@ -7655,7 +7655,7 @@ CurseGhost: createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -7673,7 +7673,7 @@ CurseStats: CurseStats1: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5 - createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, RGB_RED return Move_SOFT_BOILED: @@ -7688,7 +7688,7 @@ Move_SOFT_BOILED: delay 120 delay 7 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 @@ -7703,7 +7703,7 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 0, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 0, 0, 10, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_LoadMusicNotesPals, 5 createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 @@ -7741,12 +7741,12 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_SHINY, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 10, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 10, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 10, 0, RGB_WHITE createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end HealBellRing: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 8, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 2, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 2, 10, RGB_WHITE createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return @@ -7759,12 +7759,12 @@ Move_FAKE_OUT: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE end Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, RGB_BLACK playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 @@ -7776,7 +7776,7 @@ Move_SCARY_FACE: waitforvisualfinish createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, RGB_BLACK waitforvisualfinish end @@ -7920,7 +7920,7 @@ PresentHeal: Move_BATON_PASS: loadspritegfx ANIM_TAG_POKEBALL playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 2, 0, 11, RGB(31, 22, 30) + createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, RGB(31, 22, 30) createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end @@ -7946,13 +7946,13 @@ Move_PERISH_SONG: delay 20 panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 delay 100 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 @@ -8027,7 +8027,7 @@ Move_TRI_ATTACK: delay 20 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 6, 0, 7 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK delay 16 loadspritegfx ANIM_TAG_FIRE createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 @@ -8063,7 +8063,7 @@ Move_TRI_ATTACK: waitforvisualfinish loadspritegfx ANIM_TAG_ICE_CRYSTALS call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK waitforvisualfinish end @@ -8149,7 +8149,7 @@ Move_TRICK: Move_WISH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK waitforvisualfinish panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40 @@ -8158,19 +8158,19 @@ Move_WISH: loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3 call GrantingStarsEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK waitforvisualfinish end Move_STOCKPILE: loadspritegfx ANIM_TAG_GRAY_ORB playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE createvisualtask AnimTask_StockpileDeformMon, 5 call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE end StockpileAbsorb: createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 @@ -8288,7 +8288,7 @@ Move_MORNING_SUN: loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -8305,7 +8305,7 @@ Move_MORNING_SUN: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect @@ -8324,7 +8324,7 @@ Move_SWEET_SCENT: call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, RGB(31, 21, 21) + createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, RGB(31, 21, 21) call SweetScentEffect waitforvisualfinish end @@ -8355,7 +8355,7 @@ SweetScentEffect: Move_HYPER_BEAM: loadspritegfx ANIM_TAG_ORBS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, RGB_BLACK waitforvisualfinish delay 10 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER @@ -8371,7 +8371,7 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 11, RGB(25, 25, 25) call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -8393,9 +8393,9 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 11, 0, RGB(25, 25, 25) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, RGB_BLACK end HyperBeamOrbs: createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 @@ -8450,17 +8450,17 @@ CreateFlatterConfetti: Move_ROLE_PLAY: monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_DETECT, SOUND_PAN_ATTACKER, 30 createvisualtask AnimTask_RolePlaySilhouette, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE delay 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, RGB_BLACK end Move_REFRESH: @@ -8473,7 +8473,7 @@ Move_REFRESH: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end @@ -8485,13 +8485,13 @@ Move_BLAZE_KICK: setalpha 12, 8 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE delay 30 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 14, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 call FireSpreadEffect waitforvisualfinish clearmonbg ANIM_TARGET @@ -8510,7 +8510,7 @@ Move_HYPER_VOICE: end HyperVoiceEffect: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 8, 0, RGB_YELLOW + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, RGB_YELLOW createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 @@ -8521,14 +8521,14 @@ HyperVoiceEffect: Move_SAND_TOMB: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish end @@ -8627,7 +8627,7 @@ Move_DRAGON_CLAW: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 0, 8, RGB(31, 19, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 15, 1 call DragonClawFireSpiral call DragonClawFireSpiral @@ -8664,7 +8664,7 @@ Move_DRAGON_CLAW: createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 8, 0, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 8, 0, RGB(31, 19, 0) waitforvisualfinish end DragonClawFireSpiral: @@ -8747,7 +8747,7 @@ Move_REVENGE: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 4, 2, 8, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, RGB_RED waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE @@ -8777,7 +8777,7 @@ Move_POISON_FANG: delay 10 createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 4, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, RGB(26, 0, 26) call PoisonBubblesEffect waitforvisualfinish end @@ -8793,7 +8793,7 @@ Move_FRENZY_PLANT: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 0, 5, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK waitforvisualfinish createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER @@ -8841,7 +8841,7 @@ Move_FRENZY_PLANT: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 5, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -8983,7 +8983,7 @@ ReturnStrong: createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto ReturnContinue ReturnStrongest: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, RGB_BLACK waitforvisualfinish createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER @@ -9040,7 +9040,7 @@ ReturnStrongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 0 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, RGB_BLACK goto ReturnContinue ReturnStrongestHit: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, ANIM_ATTACKER @@ -9170,7 +9170,7 @@ Move_SILVER_WIND: createvisualtask AnimTask_StartSlidingBg, 5, 1536, 0, 0, -1 SilverWindContinue: delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 4, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 4, 4, RGB_BLACK waitbgfadein createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 @@ -9284,7 +9284,7 @@ Move_OVERHEAT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 18 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, RGB(28, 0, 0) waitforvisualfinish createvisualtask AnimTask_AllocBackupPalBuffer, 5 waitforvisualfinish @@ -9295,7 +9295,7 @@ Move_OVERHEAT: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, RGB(28, 0, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER @@ -9341,12 +9341,12 @@ Move_OVERHEAT: playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, -1, 0, 13, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, RGB(18, 18, 18) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1 waitforvisualfinish createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, RGB(28, 0, 0) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9354,7 +9354,7 @@ Move_OVERHEAT: delay 15 createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, RGB(18, 18, 18) waitforvisualfinish createvisualtask AnimTask_FreeBackupPalBuffer, 5 waitforvisualfinish @@ -9498,7 +9498,7 @@ Move_WATER_PULSE: monbg ANIM_TARGET splitbgprio ANIM_TARGET playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 7, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28) delay 10 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1 @@ -9518,7 +9518,7 @@ Move_WATER_PULSE: delay 13 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB(0, 25, 28) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST: createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 6 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 2, 8, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK delay 0 splitbgprio ANIM_ATTACKER setalpha 8, 8 @@ -9558,7 +9558,7 @@ Move_KNOCK_OFF: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 @@ -9576,7 +9576,7 @@ Move_DOOM_DESIRE: delay 1 monbg ANIM_ATK_PARTNER createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB_BLACK waitforvisualfinish setalpha 8, 8 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -9584,7 +9584,7 @@ Move_DOOM_DESIRE: waitforvisualfinish delay 20 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -9836,7 +9836,7 @@ Move_WEATHER_BALL: waitforvisualfinish delay 15 playsewithpan SE_M_DETECT, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish createvisualtask AnimTask_GetWeather, 2 delay 1 @@ -10218,7 +10218,7 @@ UnsetSolarBeamBg: Status_Poison: loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, RGB(30, 0, 31) end Status_Confusion: @@ -10320,13 +10320,13 @@ General_StatsChange: General_SubstituteFade: monbg ANIM_ATTACKER createvisualtask AnimTask_SubstituteFadeToInvisible, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE waitforvisualfinish delay 1 clearmonbg ANIM_ATTACKER delay 2 blendoff - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 0, RGB_WHITE createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end @@ -10389,13 +10389,13 @@ Status_Whirlpool: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish stopsound clearmonbg ANIM_DEF_PARTNER @@ -10420,13 +10420,13 @@ Status_Clamp: Status_SandTomb: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish stopsound end @@ -10448,7 +10448,7 @@ General_HeldItemEffect: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, RGB(17, 31, 25) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end @@ -10492,11 +10492,11 @@ General_SmokeballEscape: end General_FocusBand: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, RGB_RED playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 @@ -10505,13 +10505,13 @@ General_FocusBand: General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -10595,7 +10595,7 @@ General_FutureSightHit: General_DoomDesireHit: createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 createvisualtask AnimTask_DoomDesireLightBeam, 5 @@ -10622,7 +10622,7 @@ General_DoomDesireHit: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE waitforvisualfinish end @@ -10631,7 +10631,7 @@ General_FocusPunchSetUp: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -10644,7 +10644,7 @@ General_IngrainHeal: loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish delay 3 call AbsorbEffect @@ -10652,7 +10652,7 @@ General_IngrainHeal: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -10660,7 +10660,7 @@ General_IngrainHeal: General_WishHeal: loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect @@ -10669,7 +10669,7 @@ General_WishHeal: loadspritegfx ANIM_TAG_BLUE_STAR call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK end SnatchMoveTrySwapFromSubstitute: diff --git a/data/event_scripts.s b/data/event_scripts.s index 1f3db6aa2..66877b25c 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -53,6 +53,7 @@ #include "constants/union_room.h" #include "constants/vars.h" #include "constants/weather.h" +#include "constants/follow_me.h" .include "asm/macros.inc" .include "asm/macros/event.inc" .include "constants/constants.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 49fcf798b..277cbb376 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 @@ -128,6 +131,18 @@ gFieldEffectScript_JumpTallGrass:: gFieldEffectScript_SandFootprints:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints field_eff_end + +gFieldEffectScript_TracksBug:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug + field_eff_end + +gFieldEffectScript_TracksSpot:: @ 82DBB42 + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot + field_eff_end + +gFieldEffectScript_TracksSlither:: @ 82DBBFF + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither + field_eff_end gFieldEffectScript_JumpBigSplash:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index def903b1d..406ab46ae 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -5,10 +5,6 @@ .set LOCALID_PLAYER, 13 .set LOCALID_OPPONENT, 15 -.set NO_DRAW, 0 -.set DRAW_TRAINER, 1 -.set DRAW_TUCKER, 2 - BattleFrontier_BattleDomeBattleRoom_MapScripts:: map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_OnTransition map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_OnFrame @@ -16,6 +12,10 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_OnResume .byte 0 + .set NO_DRAW, 0 + .set DRAW_TRAINER, 1 + .set DRAW_TUCKER, 2 + BattleFrontier_BattleDomeBattleRoom_OnTransition: dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index 3e729e212..320e12d99 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -364,8 +364,7 @@ BattleFrontier_BattlePikeLobby_Text_AwardYouTheseBattlePoints2: @ Unused BattleFrontier_BattlePikeLobby_Text_ReachedBattlePointLimit: .string "You appear to have reached the limit\n" - .string "for Battle Points…\p" - .string "Please exchange some Battle Points\n" + .string "for Battle Points…\pPlease exchange some Battle Points\n" .string "for prizes, then return…$" BattleFrontier_BattlePikeLobby_Text_FailedToSaveBeforeQuitting: diff --git a/data/maps/BattleFrontier_Lounge2/scripts.inc b/data/maps/BattleFrontier_Lounge2/scripts.inc index 12eda4a5e..8efc17293 100644 --- a/data/maps/BattleFrontier_Lounge2/scripts.inc +++ b/data/maps/BattleFrontier_Lounge2/scripts.inc @@ -22,20 +22,18 @@ BattleFrontier_Lounge2_EventScript_AlreadyMetManiac:: end BattleFrontier_Lounge2_EventScript_GiveAdvice:: - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_SINGLES, BattleFrontier_Lounge2_EventScript_BufferSingle - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_DOUBLES, BattleFrontier_Lounge2_EventScript_BufferDouble - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_MULTIS, BattleFrontier_Lounge2_EventScript_BufferMulti - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BufferMultiLink - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_BufferBattleDome - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_FACTORY, BattleFrontier_Lounge2_EventScript_BufferBattleFactory - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PALACE, BattleFrontier_Lounge2_EventScript_BufferBattlePalace - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_ARENA, BattleFrontier_Lounge2_EventScript_BufferBattleArena - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PIKE, BattleFrontier_Lounge2_EventScript_BufferBattlePike - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PYRAMID, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid -@ <= FRONTIER_MANIAC_TOWER_LINK is any Battle Tower mode - call_if_le VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BattleTowerNews -@ >= FRONTIER_MANIAC_DOME is any facility other than Battle Tower - call_if_ge VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_FacilityNews + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 0, BattleFrontier_Lounge2_EventScript_BufferSingle + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 1, BattleFrontier_Lounge2_EventScript_BufferDouble + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 2, BattleFrontier_Lounge2_EventScript_BufferMulti + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BufferMultiLink + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_BufferBattleDome + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 5, BattleFrontier_Lounge2_EventScript_BufferBattleFactory + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 6, BattleFrontier_Lounge2_EventScript_BufferBattlePalace + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 7, BattleFrontier_Lounge2_EventScript_BufferBattleArena + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 8, BattleFrontier_Lounge2_EventScript_BufferBattlePike + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 9, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid + call_if_le VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BattleTowerNews + call_if_ge VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_FacilityNews special ShowFrontierManiacMessage waitmessage waitbuttonpress diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index deee3e264..c7bf196ef 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -91,6 +91,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LittlerootTown_ProfessorBirchsLab_EventScript_Chikorita", "flag": "FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_POKEBALL_CHIKORITA" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_1", + "x": 6, + "y": 6, + "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": "FLAG_UNUSED_0x020" } ], "warp_events": [ diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index 3026b0708..efa55aabb 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -29,6 +29,7 @@ LittlerootTown_ProfessorBirchsLab_MapScripts:: LittlerootTown_ProfessorBirchsLab_OnTransition: call Common_EventScript_SetupRivalGfxId call ProfBirch_EventScript_UpdateLocation + setflag FLAG_UNUSED_0x020 goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 4, LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout goto_if_eq VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 3, LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index 2dd001a3b..8989883e4 100644 --- a/data/maps/TrainerHill_Entrance/scripts.inc +++ b/data/maps/TrainerHill_Entrance/scripts.inc @@ -157,7 +157,7 @@ TrainerHill_Entrance_EventScript_ChooseChallenge:: switch VAR_RESULT case 4, TrainerHill_Entrance_EventScript_CancelEntry case MULTI_B_PRESSED, TrainerHill_Entrance_EventScript_CancelEntry - trainerhill_setmode VAR_RESULT + trainerhill_settag VAR_RESULT setvar VAR_TRAINER_HILL_IS_ACTIVE, 1 setvar VAR_TEMP_5, 0 special HealPlayerParty diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 51b7f966e..7d52b8c8d 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -227,6 +227,10 @@ gScriptCmdTable:: .4byte ScrCmd_warpwhitefade @ 0xe0 .4byte ScrCmd_buffercontestname @ 0xe1 .4byte ScrCmd_bufferitemnameplural @ 0xe2 + .4byte ScrCmd_setfollower @ 0xe3 + .4byte ScrCmd_destroyfollower @ 0xe4 + .4byte ScrCmd_facefollower @ 0xe5 + .4byte ScrCmd_checkfollower @ 0xe6 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 3e99fc08e..14570cf99 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -287,3 +287,69 @@ EventScript_FailSweetScent:: Text_FailSweetScent: .string "Looks like there's nothing here…$" + +FollowerPositionFixScript:: + setvar 0x8000 0x0 + callnative FollowerTrainerSightingPositionFix + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + call WalkCall + setvar 0x8000 0x1 + callnative FollowerTrainerSightingPositionFix +FollowerPositionFixScriptReturn: + return + +FollowerIntoPlayerScript:: + setvar 0x8000 0x0 + callnative FollowerIntoPlayer + compare VAR_RESULT 0xFFFF + goto_if_eq FollowerPositionFixScriptReturn + setvar 0x8005 0xFE @ follower + call WalkCall + setvar 0x8000 0x1 + callnative FollowerIntoPlayer + return + +WalkCall: + compare VAR_RESULT 0x0 + call_if_eq WalkDownCall + compare VAR_RESULT 0x1 + call_if_eq WalkUpCall + compare VAR_RESULT 0x2 + call_if_eq WalkLeftCall + compare VAR_RESULT 0x3 + call_if_eq WalkRightCall + waitmovement 0x8005 + return + +WalkDownCall: + applymovement 0x8005 WalkDown + return + +WalkUpCall: + applymovement 0x8005 WalkUp + return + +WalkLeftCall: + applymovement 0x8005 WalkLeft + return + +WalkRightCall: + applymovement 0x8005 WalkRight + return + +WalkDown: + walk_down + step_end + +WalkUp: + walk_up + step_end + +WalkLeft: + walk_left + step_end + +WalkRight: + walk_right + step_end diff --git a/data/scripts/gift_altering_cave.inc b/data/scripts/gift_altering_cave.inc index 0ea69aac0..65ff87068 100644 --- a/data/scripts/gift_altering_cave.inc +++ b/data/scripts/gift_altering_cave.inc @@ -12,7 +12,7 @@ MysteryGiftScript_AlteringCave_: release end -sText_MysteryGiftAlteringCave: +sText_MysteryGiftAlteringCave:: .string "Thank you for using the MYSTERY\n" .string "GIFT System.\p" .string "There appears to be a rumor about\n" diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 948c19922..e57e76a52 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -4,192 +4,145 @@ gText_HighlyAppealingMove:: .string "A highly appealing move.$" gText_UserMoreEasilyStartled:: - .string "After this move, the user is\n" - .string "more easily startled.$" + .string "After this move, the user is\nmore easily startled.$" gText_GreatAppealButNoMoreToEnd:: - .string "Makes a great appeal, but\n" - .string "allows no more to the end.$" + .string "Makes a great appeal, but\nallows no more to the end.$" gText_UsedRepeatedlyWithoutBoringJudge:: - .string "Can be repeatedly used\n" - .string "without boring the JUDGE.$" + .string "Can be repeatedly used\nwithout boring the JUDGE.$" gText_AvoidStartledByOthersOnce:: - .string "Can avoid being startled\n" - .string "by others once.$" + .string "Can avoid being startled\nby others once.$" gText_AvoidStartledByOthers:: - .string "Can avoid being startled\n" - .string "by others.$" + .string "Can avoid being startled\nby others.$" gText_AvoidStartledByOthersLittle:: - .string "Can avoid being startled\n" - .string "by others a little.$" + .string "Can avoid being startled\nby others a little.$" gText_UserLessLikelyStartled:: - .string "After this move, the user is\n" - .string "less likely to be startled.$" + .string "After this move, the user is\nless likely to be startled.$" gText_SlightlyStartleFrontMon:: - .string "Slightly startles the\n" - .string "POKéMON in front.$" + .string "Slightly startles the\nPOKéMON in front.$" gText_SlightlyStartleAppealed:: - .string "Slightly startles those\n" - .string "that have made appeals.$" + .string "Slightly startles those\nthat have made appeals.$" gText_StartleAppealedBeforeUser:: - .string "Startles the POKéMON that\n" - .string "appealed before the user.$" + .string "Startles the POKéMON that\nappealed before the user.$" gText_StartleAllAppealed:: - .string "Startles all POKéMON that\n" - .string "have done their appeals.$" + .string "Startles all POKéMON that\nhave done their appeals.$" gText_BadlyStartleFrontMon:: - .string "Badly startles the\n" - .string "POKéMON in front.$" + .string "Badly startles the\nPOKéMON in front.$" gText_BadlyStartleAppealed:: - .string "Badly startles those that\n" - .string "have made appeals.$" + .string "Badly startles those that\nhave made appeals.$" gText_StartleAppealedBeforeUser2:: - .string "Startles the POKéMON that\n" - .string "appealed before the user.$" + .string "Startles the POKéMON that\nappealed before the user.$" gText_StartleAllAppealed2:: - .string "Startles all POKéMON that\n" - .string "have done their appeals.$" + .string "Startles all POKéMON that\nhave done their appeals.$" gText_ShiftJudgesAttentionFromOthers:: - .string "Shifts the JUDGE's\n" - .string "attention from others.$" + .string "Shifts the JUDGE's\nattention from others.$" gText_StartleMonHasJudgesAttention:: - .string "Startles the POKéMON that\n" - .string "has the JUDGE's attention.$" + .string "Startles the POKéMON that\nhas the JUDGE's attention.$" gText_JamOthersMissesTurn:: - .string "Jams the others, and misses\n" - .string "one turn of appeals.$" + .string "Jams the others, and misses\none turn of appeals.$" gText_StartleMonsMadeSameTypeAppeal:: - .string "Startles POKéMON that\n" - .string "made a same-type appeal.$" + .string "Startles POKéMON that\nmade a same-type appeal.$" gText_BadlyStartleCoolAppeals:: - .string "Badly startles POKéMON\n" - .string "that made COOL appeals.$" + .string "Badly startles POKéMON\nthat made COOL appeals.$" gText_BadlyStartleBeautyAppeals:: - .string "Badly startles POKéMON\n" - .string "that made BEAUTY appeals.$" + .string "Badly startles POKéMON\nthat made BEAUTY appeals.$" gText_BadlyStartleCuteAppeals:: - .string "Badly startles POKéMON\n" - .string "that made CUTE appeals.$" + .string "Badly startles POKéMON\nthat made CUTE appeals.$" gText_BadlyStartleSmartAppeals:: - .string "Badly startles POKéMON\n" - .string "that made SMART appeals.$" + .string "Badly startles POKéMON\nthat made SMART appeals.$" gText_BadlyStartleToughAppeals:: - .string "Badly startles POKéMON\n" - .string "that made TOUGH appeals.$" + .string "Badly startles POKéMON\nthat made TOUGH appeals.$" gText_MakeMonAfterUserNervous:: - .string "Makes one POKéMON after\n" - .string "the user nervous.$" + .string "Makes one POKéMON after\nthe user nervous.$" gText_MakeAllMonsAfterUserNervous:: - .string "Makes all POKéMON after\n" - .string "the user nervous.$" + .string "Makes all POKéMON after\nthe user nervous.$" gText_WorsenConditionOfThoseMadeAppeals:: - .string "Worsens the condition of\n" - .string "those that made appeals.$" + .string "Worsens the condition of\nthose that made appeals.$" gText_BadlyStartleMonsGoodCondition:: - .string "Badly startles POKéMON in\n" - .string "good condition.$" + .string "Badly startles POKéMON in\ngood condition.$" gText_AppealGreatIfPerformedFirst:: - .string "The appeal works great if\n" - .string "performed first.$" + .string "The appeal works great if\nperformed first.$" gText_AppealGreatIfPerformedLast:: - .string "The appeal works great if\n" - .string "performed last.$" + .string "The appeal works great if\nperformed last.$" gText_AppealAsGoodAsThoseBeforeIt:: - .string "Makes the appeal as good\n" - .string "as those before it.$" + .string "Makes the appeal as good\nas those before it.$" gText_AppealAsGoodAsOneBeforeIt:: - .string "Makes the appeal as good\n" - .string "as the one before it.$" + .string "Makes the appeal as good\nas the one before it.$" gText_AppealBetterLaterItsPerformed:: - .string "The appeal works better\n" - .string "the later it is performed.$" + .string "The appeal works better\nthe later it is performed.$" gText_AppealVariesDependingOnTiming:: - .string "The appeal's quality varies\n" - .string "depending on its timing.$" + .string "The appeal's quality varies\ndepending on its timing.$" gText_WorksWellIfSameTypeAsBefore:: - .string "Works well if it's the same\n" - .string "type as the one before.$" + .string "Works well if it's the same\ntype as the one before.$" gText_WorksWellIfDifferentTypeAsBefore:: - .string "Works well if different in\n" - .string "type than the one before.$" + .string "Works well if different in\ntype than the one before.$" gText_AffectedByAppealInFront:: - .string "Affected by how well the\n" - .string "appeal in front goes.$" + .string "Affected by how well the\nappeal in front goes.$" gText_UpsConditionHelpsPreventNervousness:: - .string "Ups the user's condition.\n" - .string "Helps prevent nervousness.$" + .string "Ups the user's condition.\nHelps prevent nervousness.$" gText_AppealWorksWellIfConditionGood:: - .string "The appeal works well if the\n" - .string "user's condition is good.$" + .string "The appeal works well if the\nuser's condition is good.$" gText_NextAppealMadeEarlier:: - .string "The next appeal can be\n" - .string "made earlier next turn.$" + .string "The next appeal can be\nmade earlier next turn.$" gText_NextAppealMadeLater:: - .string "The next appeal can be\n" - .string "made later next turn.$" + .string "The next appeal can be\nmade later next turn.$" gText_TurnOrderMoreEasilyScrambled:: - .string "Makes the next turn's order\n" - .string "more easily scrambled.$" + .string "Makes the next turn's order\nmore easily scrambled.$" gText_ScrambleOrderOfNextAppeals:: - .string "Scrambles the order of\n" - .string "appeals on the next turn.$" + .string "Scrambles the order of\nappeals on the next turn.$" gText_AppealExcitesAudienceInAnyContest:: - .string "An appeal that excites the\n" - .string "audience in any CONTEST.$" + .string "An appeal that excites the\naudience in any CONTEST.$" gText_BadlyStartlesMonsGoodAppeals:: - .string "Badly startles all POKéMON\n" - .string "that made good appeals.$" + .string "Badly startles all POKéMON\nthat made good appeals.$" gText_AppealBestMoreCrowdExcited:: - .string "The appeal works best the\n" - .string "more the crowd is excited.$" + .string "The appeal works best the\nmore the crowd is excited.$" gText_TemporarilyStopCrowdExcited:: - .string "Temporarily stops the\n" - .string "crowd from growing excited.$" + .string "Temporarily stops the\ncrowd from growing excited.$" @ Unused move names diff --git a/data/text/pc_transfer.inc b/data/text/pc_transfer.inc index 3fa255340..53a82c8f1 100644 --- a/data/text/pc_transfer.inc +++ b/data/text/pc_transfer.inc @@ -5,8 +5,7 @@ gText_PkmnTransferredSomeonesPC:: .string "BOX “{STR_VAR_1}.â€�$" gText_PkmnTransferredLanettesPC:: - .string "{STR_VAR_2} was transferred to\n" - .string "LANETTE'S PC.\p" + .string "{STR_VAR_2} was transferred to\nLANETTE'S PC.\p" .string "It was placed in \n" .string "BOX “{STR_VAR_1}.â€�$" diff --git a/data/text/pokedex_rating.inc b/data/text/pokedex_rating.inc index 175aaccc6..fcb26bc7d 100644 --- a/data/text/pokedex_rating.inc +++ b/data/text/pokedex_rating.inc @@ -3,7 +3,7 @@ gBirchDexRatingText_AreYouCurious:: .string "Are you curious about how your\n" .string "POKéDEX is coming along?$" -gBirchDexRatingText_Cancel:: +gBirchDexRatingText_Cancel: .string "Hm? Oh, you haven't caught enough\n" .string "POKéMON to make it worthwhile.$" diff --git a/data/text/surf.inc b/data/text/surf.inc index 13854f7aa..453a3d5b1 100644 --- a/data/text/surf.inc +++ b/data/text/surf.inc @@ -1,6 +1,5 @@ gText_WantToUseSurf:: - .string "The water is dyed a deep blue…\n" - .string "Would you like to SURF?$" + .string "The water is dyed a deep blue…\nWould you like to SURF?$" gText_PlayerUsedSurf:: .string "{STR_VAR_1} used SURF!$" diff --git a/data/text/tv.inc b/data/text/tv.inc index 6cfc289d2..68b842158 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -166,7 +166,7 @@ BattleFrontier_BattleTowerLobby_Text_LookingForwardToNextBattle:: .string "I'll be looking forward to your\n" .string "next battle!$" -BravoTrainerBattleTower_Text_Intro:: +gTVBravoTrainerBattleTowerText00:: .string "Yeah!\n" .string "It's BRAVO TRAINER time!\p" .string "Today, we're going to profile {STR_VAR_1},\n" @@ -174,12 +174,12 @@ BravoTrainerBattleTower_Text_Intro:: .string "For the challenge, {STR_VAR_1} entered\n" .string "one wicked {STR_VAR_2}.$" -BravoTrainerBattleTower_Text_NewRecord:: +gTVBravoTrainerBattleTowerText01:: .string "The pair set a new record of {STR_VAR_2} wins\n" .string "in a row in {STR_VAR_1} competition!\l" .string "Bravo, TRAINER!$" -BravoTrainerBattleTower_Text_Lost:: +gTVBravoTrainerBattleTowerText02:: .string "The twosome finally succumbed to\n" .string "{STR_VAR_1} in match number {STR_VAR_2}.\l" .string "Nice try, TRAINER!\p" @@ -188,7 +188,7 @@ BravoTrainerBattleTower_Text_Lost:: .string "We asked the TRAINER for impressions\n" .string "on the match with {STR_VAR_1}.$" -BravoTrainerBattleTower_Text_Won:: +gTVBravoTrainerBattleTowerText03:: .string "The twosome won it all by defeating\n" .string "{STR_VAR_1}'s {STR_VAR_2} thoroughly.\l" .string "Bravo, TRAINER!\p" @@ -197,7 +197,7 @@ BravoTrainerBattleTower_Text_Won:: .string "We asked the TRAINER for impressions\n" .string "on the moment of glory.$" -BravoTrainerBattleTower_Text_LostFinal:: +gTVBravoTrainerBattleTowerText04:: .string "After a string of wins, the pair finally\n" .string "succumbed to {STR_VAR_1}'s {STR_VAR_2},\l" .string "their final hurdle.\p" @@ -208,7 +208,7 @@ BravoTrainerBattleTower_Text_LostFinal:: .string "We asked the TRAINER for impressions\n" .string "on battling the celebrity pair.$" -BravoTrainerBattleTower_Text_Satisfied:: +gTVBravoTrainerBattleTowerText05:: .string "This is what the TRAINER had to say:\n" .string "“I'm satisfied!â€�\p" .string "Now isn't that a refreshing reply?\n" @@ -218,7 +218,7 @@ BravoTrainerBattleTower_Text_Satisfied:: .string "I found out exactly how satisfied\n" .string "when I heard the TRAINER say this:$" -BravoTrainerBattleTower_Text_Unsatisfied:: +gTVBravoTrainerBattleTowerText06:: .string "This is what the TRAINER had to say:\n" .string "“I'm not satisfied…â€�\p" .string "Our TRAINER was obviously a little down\n" @@ -228,22 +228,22 @@ BravoTrainerBattleTower_Text_Unsatisfied:: .string "Anyway, I found out how dissatisfied\n" .string "our TRAINER was when I heard this:$" -BravoTrainerBattleTower_Text_None1:: +gTVBravoTrainerBattleTowerText07:: .string "None$" -BravoTrainerBattleTower_Text_None2:: +gTVBravoTrainerBattleTowerText08:: .string "None$" -BravoTrainerBattleTower_Text_None3:: +gTVBravoTrainerBattleTowerText09:: .string "None$" -BravoTrainerBattleTower_Text_None4:: +gTVBravoTrainerBattleTowerText10:: .string "None$" -BravoTrainerBattleTower_Text_Response:: +gTVBravoTrainerBattleTowerText11:: .string "“{STR_VAR_1}.â€�$" -BravoTrainerBattleTower_Text_ResponseSatisfied:: +gTVBravoTrainerBattleTowerText12:: .string "“{STR_VAR_1}.â€�\n" .string "Now isn't that great?\p" .string "It really expresses {STR_VAR_2}'s joy,\n" @@ -252,7 +252,7 @@ BravoTrainerBattleTower_Text_ResponseSatisfied:: .string "end… It really was what you'd call\l" .string "“{STR_VAR_1}â€�!$" -BravoTrainerBattleTower_Text_ResponseUnsatisfied:: +gTVBravoTrainerBattleTowerText13:: .string "“{STR_VAR_1}.â€�\n" .string "Now isn't that fitting?\p" .string "That battle with {STR_VAR_3} at the\n" @@ -261,7 +261,7 @@ BravoTrainerBattleTower_Text_ResponseUnsatisfied:: .string "{STR_VAR_2}'s disappointment comes across\n" .string "loud and clear, I'd say!$" -BravoTrainerBattleTower_Text_Outro:: +gTVBravoTrainerBattleTowerText14:: .string "Bravo, {STR_VAR_1}!\n" .string "Bravo, {STR_VAR_2}!\p" .string "I hope we can count on seeing\n" diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md new file mode 100644 index 000000000..ce06c1489 --- /dev/null +++ b/docs/bugs_and_glitches.md @@ -0,0 +1,51 @@ + +# Bugs and Glitches + +These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. Defining the `BUGFIX` and `UBFIX` preprocessor variables will fix some of these automatically. `UBFIX` will already be defined for MODERN builds. + +Fixes are written in the `diff` format. If you've used Git before, this should look familiar: + +```diff + this is some code +-delete red - lines ++add green + lines +``` + +## Contents + +- [Scrolling through items in the bag causes the image to flicker](#scrolling-through-items-in-the-bag-causes-the-image-to-flicker) + + +## Scrolling through items in the bag causes the image to flicker + +**Fix:** Add the following function to [src/item_menu_icons.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu_icons.c): +```diff ++void HideBagItemIconSprite(u8 id) ++{ ++ u8 *spriteId = &gBagMenu->spriteId[10]; ++ if (spriteId[id] != 0xFF) ++ { ++ gSprites[spriteId[id]].invisible = TRUE; ++ } ++} + +``` + +and its corresponding declaration in [include/item_menu_icons.h](https://github.com/pret/pokeemerald/blob/master/include/item_menu_icons.h): + +```diff ++void HideBagItemIconSprite(u8 id); + +``` + +Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/pret/pokeemerald/blob/master/src/item_menu.c): + +```diff + ... +{ +- RemoveBagItemIconSprite(1 ^ gBagMenu->itemIconSlot); ++ HideBagItemIconSprite(gBagMenu->itemIconSlot ^ 1); ++ RemoveBagItemIconSprite(gBagMenu->itemIconSlot); + if (itemIndex != LIST_CANCEL) + ... +``` diff --git a/gflib/bg.h b/gflib/bg.h index 02ff07369..d8b5a5404 100644 --- a/gflib/bg.h +++ b/gflib/bg.h @@ -76,7 +76,7 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op); s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op); s32 GetBgY(u8 bg); void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); -u8 Unused_AdjustBgMosaic(u8 val, u8 mode); +u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); void SetBgTilemapBuffer(u8 bg, void *tilemap); void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); diff --git a/gflib/sprite.c b/gflib/sprite.c index 6ba366105..411e7d3b8 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -96,7 +96,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC static u8 IndexOfSpriteTileTag(u16 tag); static void AllocSpriteTileRange(u16 tag, u16 start, u16 count); static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset); -static void UpdateSpriteMatrixAnchorPos(struct Sprite*, s32, s32); +static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2); typedef void (*AnimFunc)(struct Sprite *); typedef void (*AnimCmdFunc)(struct Sprite *); @@ -634,11 +634,14 @@ void DestroySprite(struct Sprite *sprite) } } -void ResetOamRange(u8 start, u8 end) +void ResetOamRange(u8 a, u8 b) { u8 i; - for (i = start; i < end; i++) + + for (i = a; i < b; i++) + { gMain.oamBuffer[i] = *(struct OamData *)&gDummyOamData; + } } void LoadOam(void) @@ -1045,7 +1048,7 @@ void AnimCmd_frame(struct Sprite *sprite) else sprite->y2 = -1; } - + if (!(sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)) SetSpriteOamFlipBits(sprite, hFlip, vFlip); diff --git a/gflib/sprite.h b/gflib/sprite.h index f7ef16532..e53737981 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -270,7 +270,7 @@ u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 sub u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); void DestroySprite(struct Sprite *sprite); -void ResetOamRange(u8 start, u8 end); +void ResetOamRange(u8 a, u8 b); void LoadOam(void); void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d); void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode); diff --git a/gflib/text.c b/gflib/text.c index c400c0582..557c11704 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -326,14 +326,14 @@ void RunTextPrinters(void) { if (sTextPrinters[i].active) { - u16 renderCmd = RenderFont(&sTextPrinters[i]); - switch (renderCmd) + u16 temp = RenderFont(&sTextPrinters[i]); + switch (temp) { case RENDER_PRINT: CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, COPYWIN_GFX); case RENDER_UPDATE: - if (sTextPrinters[i].callback != NULL) - sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, renderCmd); + if (sTextPrinters[i].callback != 0) + sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp); break; case RENDER_FINISH: sTextPrinters[i].active = FALSE; diff --git a/graphics/door_anims/abandoned_ship.png b/graphics/door_anims/abandoned_ship.png index 0030246b4e08aace30276066cf61d1510e8c2712..e46aca9ba94b1b66552d49666d925b87b1dfea1d 100644 GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IEi7Q8@egp~$Bq#cnfoLFB0AesmJ-~bw$k^lQ;uxZF ze(wc)u0sYQ$3L3yvJ%-<#qj=;Im<4W4{DKIw%y?$WSUNEyJ(bno=f=mXHi6^V?h1o zcAv_4tK=_za*KtxvGuzegnOxL++*r$^uDb6VsB+DYhL>|t}nH0;xdf++!d^*1~Yw| zcqT7oP!D8O3Y4|<{G@V2c>jyXYgd^ZD1LEA{lJ+G)eGhxu46F2CTV2C`S4d~(EJMr zp4dI)tWD9VeUe}MNPoIvo#?}DJd81o4C@>i!W9k_&9~0m?BaiY#VIkMKU7OxBT7;d zOH!?pi&B9UgOP!efv$m}u90DgfvJ_TrInG1wt<0_fkFNZD=!ocx%nxXX_dG&$Q^C^ P1`0AyS3j3^P6mg{ds5z{VzjjXtgJcz|6;*#<;nm60KG{>K~yM_z0ffV!Y~xZ@mwKU z3Izjsi{LrDf@djo$xQ^a6f&fD@c^!c4z7;%CHbOQX+coG>3>J2yua9E;vEep4%iwb z77@beU4jo+zz1O0w+ZfSU!j4`soMfglMxDzfYb$H1p`poTLPKNP7Fm+45Fx3C`yuo zuqS@eM`}MhAk5)%ABLUb@<2C-{s5{TGRX7^e0?>gKHR|OKKz6}WJ(|UTc7yLWz=5< o-*YzyJUM07*qoM6N<$f`l}GNB{r; diff --git a/graphics/door_anims/abandoned_ship_room.png b/graphics/door_anims/abandoned_ship_room.png index 006922f5b64cacc6320f0ff81a541ef4db6bda8a..a5284af7e17391f3c87f3ac1b4d8a5587d8b7833 100644 GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IEJ?T1z44{xea-v@uhz4Q>AO?ff1I$-}jNP6tjv*T7 z_g*mMI%FVn>|@V5zSebe2X=qqZPXLo<2lV~{ewuG_6MK11i4}-8UL766R5LIVa5F~ z%E9;Izs|5q&bCO*7udkD$ZIx>Z?uDOLFO)&&D+-(9C&*nu5sV_1x?BVF^p>$u&M3# ze2}=w>w%@$0hz0s=RF+_za7#4#j;$R`GSnvcflKyW&B%;ckn+rZq?kb=D2Qt$SY;u zoOjCpFAh7uJY4@;xPE8P$JG;V8%ca%<@v$HR>R1Ay7t|SC`b9FGq;HYy`fs-8c~vx zSdwa$T$Bo=7>o>z40H_)b&U)|3{0(zEv-zmg{ds5z{VzjjXtgJcz|6;*#<;nm60K7>=K~yM_z0ffV!Y~xZ@mwKU z3Izjsi{Lpti&rRg$xQ^a6f&fD@c^!c4z7;%CHbOQY(Y@J>3>J2yuWBLvB%bMz}`S& z5h0A;CHQa!d;oTRo8Zp&6&l!_x-HN&8KK|^NL>(CFaVXkC6KA?#84E)Ac|^*q9iE@ zd*T;;r1ql&!W=I5Vb~ci4|H?r51{HHgG`^m*H=^O!wqci!%yf#ru3n|^@+b+M*UUr nZ5afp0s>S40UD}+faN}SsrPV&9*H$8=og>^lXcknxhr8iYIoJXtCIo$u3tkA4@9dF7a6T zL+DfTf%-T6XIKM|@+2wnM_gxly~;qyRFWl7WZU}CuR9NJ zbqyiHjpp*@4gMU@ghNg~uk0(Vyez!$SVj7!2%#qtMt{0g!1AZLTaov#h6ul|nz!6^7JBH+@Ady{}6rCQ<|QIe8al4_M)lnSI6 zj0}tnbPWu3jSNE!Osz}|tPBjb4S=M}I6;98E>g5EdT|jb2ya<8tgxIhE#{_{P+DQPOZ*6@W8T4sueFI*k ztz}~nB19rN&WESZw}vUTD_DC~=61PPQz4-l+UKK>+}oo zQ-TkM5Ywn3>T@~+VyEkLV?+$|0OPVE_S+20+9KBd2B{{3U_S8xAMee_tCG)Gk diff --git a/graphics/door_anims/battle_arena_lobby.png b/graphics/door_anims/battle_arena_lobby.png index 78c344070c9ba1d73e04803ff65511032ae2e95f..b9a2134e3f5707da95b9ac9a468f925387391343 100644 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G`zU3V@`9L9o z_or>@kMQJPl*E4e$*Z0PdoSnZen04>ANu@o{{JujTYzp?Epd$~Nl7e8wMs5Z1yT$~ z21W+D28Oyuh9L%~Rwf2kh9=qu237_JCYH<(P&DM`r(~v8;@04rvO5N-fx*+&&t;uc GLK6T^XOOG_ delta 277 zcmV+w0qXvk1Em6x8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|Gm{}oW)9N zq$&TjbJc@VtWq)V=A_=ugVnTZ&74yI-h)^*Xukje0I*3!K~yM_y^z5X!XOkxY2gnX zwThnxoTNBgumxN2l(SqYfL`3s|A5Ib9yH@#@@83>?7F+jU4KoV;AZO3t`pHB`Uk|g zD&$0$u!nsn(^P?{3e1|BK@2A?1;~V>=R@QU+=nP=i(lXrq4Cif#R|llQHP{5hUxI0 zfs@G_B+m`lGG!kq%$t3n!}pPw?Hj&?vQJ#c8EvmWk7lxuSV0S-Vh79k>WrYh({63| b!9p+WZ#l8r2o9sd00000NkvXXu0mjf|I3L( diff --git a/graphics/door_anims/battle_dome.png b/graphics/door_anims/battle_dome.png index 4bc9fab94b53c414908c14401b996d133fb93213..729385b3fc7063eb1f781ecfe03d58bd183868e3 100644 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G`t2Ubxw}3(d$%%etAR34jfEWx?4=`T^G8TEdIEHAP zKYQUICzGK7>xE3ks!uOU6vC3-BlG22&g@{dxO{Mv=#8nLeO+wcI@$bCJkzW)p~h-k zfcmylxenp9q$EGVw60c_NxaYEGWH~7e_v2I>4dJq{Gxs5WF@=~|Gc;0+Jk)zs{@P# z%LP@{!byW>wLzl8$j2pmbgZgq$HN4S|t~y0x1R~10w@n14CUS!w>^gD-#1N pQwwba11kfA^2_OYC>nC}Q!>*kacf}fyMGB3FrKb{F6*2UngECmgDU_4 delta 262 zcmV+h0r~!l1D67j8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0HR4mK~yM_&CtOK0x=K;(5cD_ zmhE810@j%Y58g~VvKq02c=V*H!TC-^Jncd}_#w=LB#?YMw|`J4?lCV^DrPNIO7)aN zzK}}xz`Pnw2W;IoG>zujIfhft`=JAAZa8imR2rBUAOR&YV>VM_!NZh$Yx!9}WA>~@ zGMfX;0cDnNuxBMCfPQfOkNUA!95eo&7J##W;XAmcfOJCw`oX)OCqy=@mZ6Cva{vGU M07*qoM6N<$f<&Tr>;M1& diff --git a/graphics/door_anims/battle_dome_corridor.png b/graphics/door_anims/battle_dome_corridor.png index 78e77869ea6752f126873b250962606ec13f34b9..198ad9acca356dd0b5025adcdb576b26ba046fd1 100644 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hx{*zN|cL0S1k`w*PKr|3505KS(9$>x-WIXe9aSYKo zzxKjL!Da&<)_}DWM2)y}uLNG&#a*0YamqnGe2#T?+Y4oRrRgnNS{JMZPSjiqE6Ehy zv5l+7?pFN#Wu8~{3e}eeZe3E+wog9f`9A)VyS`s%zvJ}F{gUcHd%r?$lZR>^fr z)26It*l_xhqeDx`1aF3q3JOkICsaTDuh}DSXHlh}E+JF=;8_LRjg3L2PxKR9rOXch zYhJzfM!<`>#yuAvY>3@-)o1bI3070&`i}RBdrCe&V)cus4d`Rl64!{5l*E!$tK_0o zAjM#0U}T_cV5n*WnyS$XsT^sU}a!X+moDyq9HdwB{QuOw+5bzx37T$*VEO{ JWt~$(69C{dqW=H@ delta 309 zcmV-50m}Z)1KR?S8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|K8Q+d#sC# z&8(d6&5NA0oV3NP&DFgr5Z+24|6(!!-h;|31}*>q0Om%y|M?OR@geoe~I}pfx;#Tx(6=Ha{3Vc7>ULS^m*)DOX z){!~adWLzPnEQDSEX#xWx-5GrbGITfmmknnd`3k8TOs1R?jjf8CDL{|wi!FF2+q7= zXhr|a2kj%D5iQppTl9sj2A1n-P-zMn`h8&jt9j#M>Sf_O zUu3R%w2sO8Y(}EB+vTLYA7{HI-tE~CK5w1f?fC^FZsK!4@0_}@FX_|^QL`q=L#EEs zcU0Ye9WwZ^{BVQ)o&JZ)FSx|!397S(IZXDNttP7R=E?)FK#IZ0z{o(?z);u7FvP&r%EZvh*izfTz{x~Hq3%Q~loCIA+?tFr(A delta 358 zcmV-s0h#{h1NH)t8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|K8Q+d#sC# z&8(d6&5NA0oV3NP&DFgr5Z+24|6(!!-h;|31}*>q0Rc%wK~yM_z0f^Q12GT<;CBT( zijWm3Y$_V01R9c(Tp%U!DX8`w=BIF-q}dL6x7v!Hh6B)W0DsQFjAtbyVWmR6#-C)5 zta(_EK?PSiYutY2T;o#kiL;NK_kz>6oL8tZh>?#NE4ULpW7`I$bbEl`XY}wLW9YH! z_|1^88b$_|vAT)$&*U1U^ix zU~3urP~Zi$sb5UfrhkY(@&7o zRIm|Dk6|vD6jUCYNC^a4kfsDQ<#K9R2+j+%!2a&%8>gJ=K|q%GkN^Mx07*qoM6N<$ Eg75LGzW@LL diff --git a/graphics/door_anims/battle_factory.png b/graphics/door_anims/battle_factory.png index 1d74d8b58076856ad87d26e8ece5299f0ce5747c..7ed6c876b89fcf6701668add452862a571c62fec 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HR`Tu-%@<1VhtT-`M>4Be@h*jZkp~0#Sb3O*?Ii5pHm!(lynfn%?Z#_|^Ts9XST1gE z;OWp#Q?R+gXjtjda-K`zs%wmbz~k~Hi4ZP%hEsp~zfJS|tOInBYKdz^NlIc#s#S7P zDv)9@GB7gGH89jQG7K>=wK6fXGB(sUFt9Q(P`LP;9YsTKeoAIqC2kFYJLkH5R->Q_=JO~ kQsM%E7{3$4pi=k%0C!q#D)xyq5dZ)H07*qoM6N<$f=U2l%>V!Z diff --git a/graphics/door_anims/battle_frontier.png b/graphics/door_anims/battle_frontier.png index c3dcd43245a92365967b8d3a178f97dae2bc0781..bf758c03edef025ead3128936560b8353c195447 100644 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HRgOK~qZa^V{nh_rEHD^&M-s%LqarEi$r zi`zLe3(ro7NN2wIY;%vtM2573xjo^BBMJkL>{e>hwtnb(uew$Hg!_UM=XY{t6fjL$ zQq&zdaq>b14;vlBC*5{ji~mSvsiy&(F4{*A4|A z4f_3XbP0l+XkKzsQrc delta 290 zcmV+-0p0$k1F`~;8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0KG{>K~yM_#n7=4!ypU=Q16sJ zTPRF`e92uXQRhK2f@jGJZquO|f{-8%@j0bcy*mW=`2*VwJAZiEY#foz;6Y~tX!BVn z3K*D2!EMI7VXk;6@Tx#gWhb7(vMh>JkdIiApGy_okOU-2U!d*shIxLONL6|VLJQ|o8^>Bk+{&pOXP$n64o oQ)}trd+6ua@Ebk!1a|s?H@mc}+g#W~-2eap07*qoM6N<$g45WB+W-In diff --git a/graphics/door_anims/battle_frontier_sliding.png b/graphics/door_anims/battle_frontier_sliding.png index 1359f4725b8d6061a5088ffd6efa5677705df3eb..a43cf519dda91ceaa86aa2b89c4b73e978aabc88 100644 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0I6<&#y$H-SO|$%%etAR34jfEWx?4=`T^GUj=@IEHAP zzj|RKZ?l02OThXGq7jXe6E+2?EN+qe&$(u{f)ICrfrC_8W4^r7KhG71MPGQfJKB{e z-eJso=KWMM-0=75`5b31mVYVCo|WCW!LdV3Ea@WC_r!{Qjt$36dabXq-L=_&YQK6z z;r|`|-|wV5bJ%`&e4-ucvYrMLXY>mdKI;Vst06Rr|u>b%7 delta 260 zcmV+f0sH=j1C;`h8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0H8@kK~yM_)zGmGgD?~XP|re> z0Vr4iDHEJL!8d&pVTpwzF-um+3Yj5%`w;O@aEo#UdeUK#&wafZSHXk%QANf*neF9o z1g7>KeN6LwFA!D;F~UMDM&Q=>=MM;QZQE|c(%{lGr}FO!U~01*woi=QXGI7D_krgu z7Gj~7_uMB#6x=648~A_R$3PDad7tG%c@_h)NKFB;$W1!6x6d0NH`N|xMv)c(0000< KMNUMnLSTY0w{xNZ diff --git a/graphics/door_anims/battle_palace_lobby.png b/graphics/door_anims/battle_palace_lobby.png index a4aa998d46eeb4322e164473076d799205e5b7ca..f106ae960d99172907dbf1fa3ca61e9ecb42222c 100644 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0I63upOXra&QqxVj{_jU(+AI`l!<9bnreee;lUovJh%iYdA?60$P`FbOh z{TY7|&`+u*t`Q|Ei6yC4$wjF^iowXh$UxV?P}j&X#K6?b#MsKzOxwV~%D~{v?d1k2 c8glbfGSez?YuMW+-vbIhPgg&ebxsLQ00^m%=>Px# delta 303 zcmV+~0nq-i1HS^08Gi!+008Fy?~?!k05DKYR7C&)08&zFl$4~+y~Y3k{{R30ltE&o zVuQVlq|LM`=EYKbDG;PN7|lu`|6(!!-h(7-*tP%w0Ln>3K~yM_t&lMegD?;T_W|Tr zG|=R8G)9Wt(BLL7h{OjhrH$g_2Xtwi=3@I4T!2texN5vwdw+ckBE_tT@KD^^4IJT#s>2cp$KNAu^0pj%yU#fR$$x940nN3ZYX0}%i;aZ5gX}C*k%4RVhKO=^8x)~B)9D+DvSUC002ovPDHLkV1itn BhQ0s* diff --git a/graphics/door_anims/battle_tent.png b/graphics/door_anims/battle_tent.png index b278e33109f5c138e7da2d54e3ef3f1fc3357411..a0a88e4c5fba405715e0b1441841074fbdef9119 100644 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr0wfq7@kRd!QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`gjG}BTtlYW=Al(AViGF1u8i*Bu7z|PmFkfY0V6^abaSX9I zee}Y{tiuKZY!9ki_cgKiSI#y*If1W@HS^q@yZo**%?+i&%(zN^2&$9M+s;Thi&c$}8rXb6tPamq(` zTskAaXWpsi`cn&bDx71@Tz7u$|1;^CZ_BdcB6t6m3{8G(@bq%jY2i;#)lZ1zK4+Q3 zxLB{@@k<%@BN!DUSN`LE>z+zf9h7V8d;DMS3j3^P68!!QsA;ClrX z8fYOyJ?3pXNFieeopE+skhkbyg909!A;I@H89n$F`V76(sefq;t?5#780!O_Y~2q> zlWGO@Bh}5Q%FU&$%{)w0ipt}MaH-gYsq5uE@ diff --git a/graphics/door_anims/battle_tent_interior.png b/graphics/door_anims/battle_tent_interior.png index 036ec9d5aa4b096c39d5de4533cf7198fa1657dd..f8edb5a1a3c9592994c05bb7f2c0376c4c00c2d9 100644 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr0wfq7@kRd!QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`gjG}BTS_}U0dIE(6k`w*PKr|3505KS(9$>!8z`!Wr>Eak- zaeD71!@R==JgfopT%C{IadX@x#SvKfLRTo@u5O2&L%?SpTi3Q8TW3%2Q0^-RlNLTq zu=kku#Z_X5Sj{!2m8|kxuU)Xq`yHVB;of`yUj{O5sc!_FootxI7W96ZZk6Ovkas!W z>iL1(_3O94Ep_uS-nV?u_Wsht+g9aP@JG!P`}cnDzlHYIi!R^kWxlwfCsx7Bo%Neb zmGfDf!-u{bN^fEBI@h>OJuP>F(vda1n>5pAUwZmDWV&>LtfR``wr7cQ&;IS{++)Ae z{^?tJX0Zj0I~BT8jje1Lnt)xo3(R- zb;D&Lx5HaHCcXBXviXw#kBvUQ@fOjpg&TLW@&W@%wZt`|BqgyV)hf9t6-Y4{85kMp z8W`#t8HN~`Ss9pE8Cz-_7+4t?2piwZM$wR)pOTqYiCaTbUea|?GxOMr+wdN=JT3g+d;LRy&di6o8z<)7GA@zX9~Ck%>kT#Y3=2O5XV4xf#thn?;Iu)C z7@Ri9rig4xmu~l6U2c$dL`44^nulmN_vZug{Ym{P@AMd?Knz3$0nsTYCPd;9reJU* zNazteC+o0$>qx<(yXXEtU*)}j5GAUj?6-$Vb^!S$^oDK`CD)xOXZfG-eVOWRS01*$ Ti^=MU00000NkvXXu0mjf7)Py+ diff --git a/graphics/door_anims/battle_tower.png b/graphics/door_anims/battle_tower.png index 3ec2b59bb62ed5fec08a69ee9c6f0ebd42057227..3b9fe547c1a64d71dfd3477650f8c6946c708c47 100644 GIT binary patch literal 467 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HB-l(@LE&_!Fk`w*PKr|3505KS(9$>x-WW4rtaSYKo ze{_Ox7n7kt>wVE8hWF8e>G|e6_+2lHXWY@A!dTAtm{G*(oI&W^Z|xjS98t4tmIzh6 zcQ)pgYh2Fg`&sJD>GuV@3(xUApLghu!Fzo(e)Xn>pGPx12d#z`u)=>kM0Ru&=DitF6D?|4zAV z%X~SxDWS?oU`c~nsIBj2p&4?|^bUV9_@0!%rAXa_^~#J_7pHa^*=lht7X4bp{#b3r ze5P9^JhJMmPXTQ@hK~Q_=VM4Em`J(?>uX3{ iLtjJU8qQbX8vX!lNHy}}qa-v@uhz4Q>AO?ff1I$-}j5VGvjv*T7 z&tBZfdssn$H6U$a?~{#2++J!4%#)N_qm7waZFv$n(@qqYYy4QEq2V<#-uA8}cl~N( z_p=8IuFN%VJ>_`dLF0}{?}FQ69IvI09GNe$(|^6Bd8Yr%}aVC#>4_ zZt}-Aj8cfZ}y#_!Q7Xv(7Aq}96QGbla-v@uhz4Q>AO?ff1I$-}jAfoKjv*T7 z_g*mMI&8qh8Zh_T?7ddz9xoKFrcao+z}#T2t;mv#7aXmebyGT=jY~2%(PTcPcT19cJX zM`d~1KK5&zYt@yQSfz6KlH(TMm47$LId7f6M!Me1{$QG=kn4F)(Xs^o^(REXUFJJF zk7>hJ#|gQQ_y7LM@OWxi6Z^MM?m!o-mbgZgq$HN4S|t~y0x1R~10w@n14CUS!w>^g tD-%;I0~2in11kdqxm_o$P&DM`r(~v8;?|J=yr2yfIG(P4F6*2UngCQTf;s>I delta 267 zcmV+m0rdWk1DgVn8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|K8Q+|Noo- z?u!7ui*s{>T57a&i^aVu5Z+24|6(!!-hNn{1`nUcKS zT^RVSjO-QzdF&;gzOL*~7)9CG%s-xC76J+hBq#cnfoLFB0AesmJ-~dGfq~J<)5S5w z;`H7td$X7gc^DGx*KV))>brg3&h{5FJQumYh+3s{oLKD3`pr1xlmDzIQ5n+fnwt5W zQzONe->X`2UCy5ATfoxxQ;hfH4cgC(W@|=rZI95qs%ianOF`gzx9wjHiNxW025PT^14vC26hlq(Mytg0oh5hW>!C8<`)MX5lF!N|bK zK-a)f*T^u$z|0DWOpLV+46F4%P)|NsBq)#m^IoB-~N0KJQIbAwuHv~!Eay(tjhN+ADYG5_9!)HKb>0003f zNkl_(H;Cvh*Hqa}$zlHfN z$^vM#t8;0WXn|L2O}7JSR=X|7p;I%<_4f_UOg5HDs5u6VO#})7epi)o@B*Ng100000NkvXX Hu0mjfq_nO+ diff --git a/graphics/door_anims/battle_tower_old.png b/graphics/door_anims/battle_tower_old.png index 326763f56530cd808692751e0599d3bd256d4ab8..645c006138649eaba098c1b9b7eebe930077da46 100644 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H>(STWu$ACft$%%etAR34jfEWx?4=`T^G9G!lIEHAP zKRRJACzGQ<>vC4Z?d;M9yN)pNZ4`*y&?K46dndxOX6ucX8Tq{Dim%(+o@J4h_>pk$ zkFDo)&m=D?f8pRurPF3i^7>Msr}$gQHiJ`g>WhP?S6z{rwe!`s%qKVWLd$c1bBbkO z&3h`qv2d#1;Zu!L?cdi$t$K7Tj=gAip|zq=!(>G!8@s0Ci(UBbKen@8zaS^2Qq$dE z%TRZ?UL}RY|AEx)_lIJ0G-4+T7~MI_R^tDF`7V>ZM>xa%duR4KEwC+UZaI5k|DTmh z*B_MIts_7Ge--0lfky&7&Nuel{L~=ryKcS3sm+gNfxcBOag8WRNi0dVN-jzTQVd20 zMh3bDhPp`Vp1Vj&_|fXPKRU=QYE4bF4dJw43?9T@mv-hcc(3FC8MO1PW?Q^M#N zm=a3#FexF65txpM%$9BY3HBSaX6uj$sg)+f)`1#__pVy1 z;@VyZa=UUnArgS8A_6=r5EZ;P6CAlk`w*PKr|3505KS(9$>x-WUTUZaSYKo zfAqpd!9xl>Y!B8vsIU@z$y@RBzdxL|EVrqLq zN@^)FTBOzHYQ4qo?)J^q?wp*obF4XY#iZT6gUSE^0IEquK~yM_#n90a!XOL=;Otc0 z0G+@e-h3)_0$?H?&lyZ4;2CRuZ0@-GE-4g#a;JlnMbmMbWPcH~C}~mEdUw8Yajmvc z+P4eU0{95U{o3(ZMM{eKY%xZkyT*b27fG;GmLQ^LFnEGcrPCickXr_U_Q|L6t^MsE zQpapj`lxtCwBW~QC<0n6(ozJ?hg)m;VDEg)eYP=ny`{SVW7`L-?5wo_=8{ VgMp($0{{R300>D%PDHLkV1ft0fJ*=X diff --git a/graphics/door_anims/cable_club.png b/graphics/door_anims/cable_club.png index 3b45cb1010aa89869f45f1c9cbc460f9698fd464..a1dfd7bc27f1a5a636ae3df52445b2c7f7eda8fa 100644 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H>-HI7IBY;8z$%%etAR34jfEWx?4=`T^GCDk6978nD zpS^UEm&uTa`NEk)3~P>atvR6M;nQ$K;qHN%4=*JI2hM%RtjJftx8EaoO@u*NYFI(q zn?pQvW*BZZ{8OdPG%qvXBBjs%knQIU4G&&)-{WaA-WF_sadxKhtIzY9nuG=BG)(AT z{7bM(bVXf<{fp<(1=qM6*&}anPq)9k){5~UC&#OFMyD%kwwjlY1_0fpTH+c}l9E`G zYL#4+3Zxi}42%qP4GeXS3_}b|txP~j+rYrez`&;cYzc~n-29Zxv`X9>d~cPW0D0fj L)z4*}Q$iB}idS`c delta 236 zcmVxICB mtnJ&QpXpYEfDi-(^>YXRg4W{~fJGeu0000%Os~AO?ff1I$-}j60q#jv*T7 z&t7okYBmsHy|B~iyi$em!PuQ(=wG{hSuXIl~a0!x6Ck~xclFo z(gVBpC9p*uz1P8W+UsrOaxMj>DGtI5p^^Cd;Qn{G&yiU{Svs6XFj^uN^G$!ACZMig&;qlfT$qQZrn$gL z(ULSkxzEy;Ue`64vBrsW!%t%QVLmH9qvo>!gCzI}M+9TMZb>#p3_Z^o^zNSJ?AiQ$n$vs?n7_$ TyLB{700000NkvXXu0mjf5N(pO diff --git a/graphics/door_anims/cycling_road.png b/graphics/door_anims/cycling_road.png index cb1fb30343b29ff9681e5a7f337135097a8ce670..0c22c918236a01a8999f86d665d79f7647a3813f 100644 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hh4vCF+cYs0y$%%etAR34jfEWx?4=`T^GA??$IEHAP zKRe+p?_mX=)<{Mp#&?>}*IZEDHuqf{v&)r8^aWr4E|374xTJGN%GpHQuv+<(wIitQ-FqyyQ$54s*X z*hiP8oj$jwWs%AWFRMC+Hce(d6OkEFr_|kkPyZS6yQV!?E52>x5h*9$l0Sk@yicC2 z^#5tYP?50xlQCO^Fwk?VC9V-ADTyViR>?)FK#IZ0z{o(?z);u7FvP&r%EZjdz(U)= lz{Wt~$(69BShk-q={ delta 312 zcmV-80muHi1IPl98Gi!+008Fy?~?!k05DKYR7HEVz5oBT?(SOE)j_?qN`r%oVq$wi zN@^)FTGiFnq@=9o#rD;U-o@yQ0Lh7USfVR%=7ci=$qdD@12m;QR<&g1>3>=Aw|}^EiTYC4*kV(vs=8u} z)wp5r@IIwvs^$bVm$3A9!dV{!Kmzb_As9!3xIC7lrS(jf8Q3zz(F%Dgr4c`Mp zn*bN;Gqe-kM=?tKm-i|5`3~DuN`_~VC8!c8{1H?M^^;5h diff --git a/graphics/door_anims/fallarbor_light_roof.png b/graphics/door_anims/fallarbor_light_roof.png index a4c959f8831a985f7279cde06d6b0dda4bb62eaa..4c81ba10e737a9ef27c55d401bca577134b96764 100644 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hh1B1xJ z*&iwLn|1q1^Y%HnQ;zCAHruINoHsdBa<%E>6{$_vgng#_hw;r~^ayu#Sk%!lw`o`5 z5(USdhdSQQQhM{$SnJL14u{ze%~Ix^G2VM1oMI_+#iU?vN;Uuh0LV#1K~yM_&CtsY!Y~X5;LOr) zP%{CJV1asrh7)kAnoF6Cj*t^@WrfZ_?YON7&lAFurB89H)PKLZcDpOL3CC^VHhs76 zxlQnG;5NOM@me!BTE=QU!E|};<)9jXuuxb8h_IL|ARk8x5VU8EIGiBDFF&KfERV2I zWDH08C=rzw`La|!W7_Mt`S=*a~@r+`8N$%%etAR34jfEWx?4=`T^G7fsWIEHAP zKYHOT?_mWV)(2}6^7f`J@44VuWbCfAwQFWWRrfvXkX#-U)xc^Vp-bu?zgIXjFwAv6 zY}B{-T;r)945uw3x^f;f{C?cg_+)Kp;p_~}8CvVuc1d%@+<+vbd6)CQ(?5B*=cKWZ1!32^?=#xKrnyHGLzTYu2{=S?@9?e0&= z(zOX+a*O}`+WDo|{jJu|&z)C);j(1a@~fAWzil|5FIatp>;H@P`>ZD2zD8wC3xJ+c zEpd$~Nl7e8wMs5Z1yT$~21W+D28Oyuh9L%~Rwiavrk2_U237_JcXr9lMbVI(pOTqY XiCe?k=SviU8W=oX{an^LB{Ts5P0onek1GWN?8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0KrK_K~yM_#n8n39DfXRj8W!*b$mc|94tA| zae)1CB9HvmBzUYiSF8O~yQ`r+Po^vTu0WW0*UzZxPAqj{fZv`L)CnG_ScvNCo zunK75PwI!``x?xn!G9z8mjbWZP&S8Ktv5i0>%pHljI9<}8phTSEY{Do>t{T#pKYFh skkbWnr`FQL^&imBZ{d3A3jF8?-aRpK)BF=v3IG5A07*qoM6N<$g0l*Se*gdg diff --git a/graphics/door_anims/gym.png b/graphics/door_anims/gym.png index 065181a9d95665a6e8ec122a38fdcee15861ca84..fce0007514729f11bec1662868d7eb52978b9982 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IM$!sb8e4vm(a-v@uhz4Q>AO?ff1I$-}j5VGvjv*T7 z&t5pld00V&Eg}2`*WHy5oEW9Q-m_@@Bg_$bz?uET(%oP7{^&R&<>ddizT#(x#;?_@ zU1C+ZCh_&S_)gljY*__+%F3A}y9xm%$SlE;)#KKX)V6EQZ#{O<5qm<~stqdlw zj@r%tGrLZy-tCpUF9vB^d%C+C%&;PHVb$>iyZOKvCk*}rXS0nnfl3$C7*!K zEpXHV9AO?ff1I$-}j61-6&Xirzgxy4r2!lc(&5 zLmqsdlQJV{ufJaHZvQ>M?C#q9-&j8N>=&Jl?e85yxU6OV_fC1=nl%$lD}Po3eWP09 z8c~vxSdwa$T$Bo=7>o>z40H_)b&U)|3{0&|%&m;gv<(cb3=Ej#`Oczf$jwj5OsmAL Up@?Z)At>NHUHx3vIVCg!0No&ubpQYW delta 295 zcmV+?0oeYk1GfT@8Gi!+008Fy?~?!k05DKYR7DsmQq9%wtiASgl+{{uy@P{`Vq$wi zN^0KK-mJ~`gT>YV|NsB?oZjAhtgLGPq&XP?txEs^0K!Q`K~yM_#n8bG!!QT{Kz7Lp z86n7>!0`aJ$uF-IrtP=C?oeZ!MzPv_gM@Sc+2D-aEnVN?*|RIt8qJR*Op{~RBT_TT}FG$b#Zg7e@(v|@XG z@u+JBxaK}09G$Ch1|&nPkYVk?)Y^G&?P+f98Ksh!-wdH3@o@IsE_t002ovPDHLkV1nMDkG22+ diff --git a/graphics/door_anims/lilycove_dept_store.png b/graphics/door_anims/lilycove_dept_store.png index 7c64ab6da82eed8da704b662546b4b02ddad9b5c..4f036c51db1cce8e59a6a6ce35f7560c15925720 100644 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IM!?^YBQ-MMP$%%etAR34jfEWx?4=`T^GLCt=IEHAP zzk1;yZ?gdp>xDNLJhjqJwlWqa2rU-<&v4El&R9x6ms_-PiagO7&pAMy5; z*D{sX4xE-*w9NCd$g{mdEj|#D56pQ+>~l6LO^COY4#Bw#Vn+wAu=b4DS}PbCRdtHt zNqiN+tTxS_TLx9`7k28VZE}$|scl x{ta;$3h0Ugx+HS}D7Ya2g)|tTC=I`p&kJi%4I^GgaY+CG002ovPDHLkV1n6Zgs=br diff --git a/graphics/door_anims/lilycove_wooden.png b/graphics/door_anims/lilycove_wooden.png index 7c3680c2897116d0cc5c3730d2a7954f73c2176e..99b94e72db320fac8c5607f3ffb3b7c4a6e71ab9 100644 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G+2VO0$cBWnD%(#)KYk_ w7?@g_SXddGY8x0>85kVi<9`=LLvDUbW?Cg~4VxZ*PXvXJr>mdKI;Vst0Py&PT>t<8 delta 270 zcmV+p0rCEk1D*nq8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1&=A_=ugVnTZ&74wm#iS7?mT&+70I5ktK~yM_#n8JA10f6sVDFR_ zvVui*RfMTX2^|||gsgBg1fL%vBqHTmLi&X70RQl8`-2xasDJIm3rGv9)*Ie(T(wph z&bf0XMK)}TY}gou`o@7v-%w<0$u}Q=`8jfO)w>E-K}1%9g2+lg21G45DW9rOU4jg^ z8O2%!6>&x%-VrPoY=&U@VDo&^S3cpqe8%_u1K)6fCzDua#2GUDh&V$!xX1@z7X3$o Ua2+mB00000Ne4wvM6N<$f+}Kn761SM diff --git a/graphics/door_anims/mauville.png b/graphics/door_anims/mauville.png index fec5f344fba4ee8727b153750c52898ef5dff8f5..63167408ad65d2c4447ed7ad1cb220a02a51ea0f 100644 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G+-S#h6U4TLY$%%etAR34jfEWx?4=`T^GER89IEHAP zKRe+p?_mX=)<{Mp#&?>}*IZEDhu;c&>XRz4+3CmWjEqbwV+M1dweX(!Gat8uu zYd0`>oyW9lO=)SJiFgc$Q*6F-(3W`tTl9{8`du^OorLHdrijKTdmVDTSpH|V#;)D4 zdeZEm#;H|*n7E{wb+?$@a67qt%7^JcOMch1CwJ*Dj_~5&$!__NXD54M#j9XDeuG`1 zHPig`P6PdsI7A7p_Z(CdM_6CGYK(Mn|~_+h(K*TfTuQI%Q(w5 zyn*ANDBqibm`X-uz*KgDWf3U*eLq{?Z(@a6tuUXh+@^AyV!)C&0ab2wb$--Ymt_N{=>Qg=s5v!-9+T@v)00000NkvXXu0mjfr0tBG diff --git a/graphics/door_anims/mossdeep_space_center.png b/graphics/door_anims/mossdeep_space_center.png index c778b171834485fdaaae3c828509eb3188c24919..4f2ccb6ffd4ba359bcff496b98673b98669bc41b 100644 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hn-ldI4&H{x5k`w*PKr|3505KS(9$>!8z`!W#>Ealo zasKQ@$Gm0(0oDta;@>4!TQ=wxP6%s0BGw%dXqIyzkiVgbanUc9sZ|X*MQ#5KFQ}DV z4Yih@cZ{vyK1AJdY3HjFkC%&Pd|M&4LT7WPy3qNYSk0C;!*kodEaE-x|7DJJgO01b zcVJA{u65P5`dyEz{d<}{4hVhrTaxJftW4DMo{Zr+!S@WzChyiI-|#kQt8zo?GyOllcFj*FdgwR4oOnL8&_!zL zq1~w`@0XfvSoQUU`^D-f&9)2kC!FWn6M9tF$!(Vg-wF1WN92~z4|_8I>i_vQw|++c zm9n}S*ZBJgKYk_7?@g_SXvnxYa19?85r<(i!DLXkei>9nO2EgL(R2y5}>&7boFyt I=akR{07nnK>;M1& delta 378 zcmV-=0fqkk1BwHX8Gi!+008Fy?~?!k05DKYR7HcuV*mgD&CSKMw4}7X-iwQrVq$wi zN@^)FTC~;wl%($e)iLgr5Y5$tl$1(ZQV55Gf_MM`0ToF^K~yM_&Cx+_gD?;U(78f3 zIY6bJz*V?F!~v=pHf*BEL1v4@s67aheSlP+dvLG*G0-M-)qhnx8=l4nk3ZBKMwx|3fCO~mu9Lz|5h=vnNfh*TABAFu$ojztj5Ewj$&5RaJ(leB z^wY5%tb%o#d2_I3<}dtBJ{9MYNH2luk!102 Y0_M|E?x({8D*ylh07*qoM6N<$f}$C=tpET3 diff --git a/graphics/door_anims/pacifidlog.png b/graphics/door_anims/pacifidlog.png index 841c31658d649c60888ccb6ba2b517e797ccdb9f..3e05288255cf4fb19527b03c2878df97f06632ce 100644 GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HnotH1JOa=-GBq#cnfoLFB0AesmJ-~bw$hhO_;uxZF z{_KT~y@w5WSOeA_I90pu0)v*xske#B4^o+qFI^QAHo>-WC1(zQ=^_{D#wP7cEI)bW zPq_Ws;5%ni&W1I6-1;snE2*n(Xi$$hY|`)DaloeCz)1bWoHVx^Gn83)17@-;X`Fvg zBFkUx@Qkp+TOYR`){0@9sBKYy-NJ8gHJj#|#eN^WuT46TeE;OjrjFj6K5;n*-aT9A zzuv09HD!jnMXR>Qe0_`S65lQt1pj!}pn9<3hNWxN)2NiC88I)}C)%x?KWBR3bdH+3 z;#I8KKctwieK6Il=KTNtGyA5)NoU>eZ7%})Q?2OC7#SED=o%R6 z8X1Ndm|B@wTA7$=8yHv_7&M$w^Fz^)o1c=IR*74~$BFYkfr8Z2)z4*}Q$iB}Hm9I~ delta 321 zcmV-H0lxmk1JMGI8Gi!+008Fy?~?!k05DKYR7C&)0N&=Lw7q+rq+)}MN?KwmVq$wi zN@^e=QtsxY?!{uwoH?X>7=uzVgM*7wYSnC2)-eD80NhDLK~yM_&Cs!N!!Qg5Q0ydW z0zwnWTp>xtQqlxAPABh?QCM&Q7ICi%GngPDosT*fX>$1u-hTlN`JovwrE8#Tu{CIh zR~Sr8KmiWW+M&O6)&OE}?FBIb`!q9bgJ{5NfXXBw4cz7!>HdfrG2RuA9X~sQ!e|?zrzLOfHm-^{Y=wbYRQNvc!e)WpD$QyjQeT) zQn>9vAi>DIdOAf~)fl;kt8v{+c;C+xkCU2H Tl_fKQ00000NkvXXu0mjfJF<;- diff --git a/graphics/door_anims/petalburg_gym.png b/graphics/door_anims/petalburg_gym.png deleted file mode 100644 index 42a1e1dfde2db2157bd42c50b25674799c68eca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmV++0p9+JP)KhL>^uRK(%$3ulnyX;06ya- zOzo5LhKS0Us^ypc=!N^yOYXRa4{(m*D*?Xj1*!#b8v&aEREt2{@bUlY=NmYPrGDU- nQ!N5s0yhVE3EJSPcl|s88&4S*v2toa00000NkvXXu0mjfj5&aT diff --git a/graphics/door_anims/poke_center.png b/graphics/door_anims/poke_center.png index 8bf5cb146dd19441ed4d034c632a843feb8911e3..8658107149024abb90fd59b85dbae29fda13df90 100644 GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HnlV2@9M}a~D$%%etAR34jfEWx?4=`T^GIo2qIEHAP zKYL*#?;!^s)(g=G0~Aw5u5}!7^5|?(ihaYW z>o=#Mbc2%+gGp-+ufq1dN$g4q8YP9u_k85}=H&9e)XE6%nnoE@ z_W+l(HLrfZW;#+Mw)4D%^gf=$$#q9tUaqpgy?j+oi>O0Rt^B*1X&hY_j+gK2Zxq?* z-)45_?_0amziZn6t>0REjQyq#qsYYB<^e6HKd&sWowr76`n=}-wShoysFt`!l%yn< zq*^5xr2;7iBLgD?T?0d1Bf}5_Q!5ioD^nwF0|P4q1O08nuTV7P=BH$)RpQnV_j+|0 PD8xKn{an^LB{Ts5Hm8kG delta 288 zcmV+*0pI?k1F!;+8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0J}*R< z1Gu20io^s~Ca}|`0F+29gp@THB@z{Q2I8|xf+bKo_|;RsE`PfFiJ2Rb0g{L`1KbS) zyQ|_R0Ad&*SK2{hjXWTA9{Vz8M(Ii5N$AO^&V7Gb3x0tdEk;m8i+C!_{Q`t|1lZ0P z8$1-nW`4zl>8d~5r|W!#6=1G?AFOSE|H5vKTr+uE5JY|BPgBK|P0000x-WL))haSYKo zfAxYP*I@+_wgls}?g>l1*_OZ4i{*}UJi)o-d4}i4=v|@y0eeFA9!UQB=c44f;Oz}N zk9+LDMCy-OuIKt?_-hWc#NuZwLRI@GerJ80D*X7u<$2XhZuLsc;xswrz9M;T!=|uT z9ub0CUh^dTU5o2woa6mLQL%* zwqsMn{RhQ%`iyS{3#Z-wm=wK6rZ rGBnXPFt9Q(_`3a$0*Z#*{FKbJO57S+UZubP0l+XkK*mRX; delta 316 zcmV-C0mJ^i1Iz-D8Gi!+008Fy?~?!k05DKYR7DsmQuf7r?wnf9b19@+F@uAPVq$wi zN@^)FT7$*jVw|-9|L)%2#l^*>q^x`Y|8tR1rgi`T0M|)GK~yM_)zC2tgD?~Z;9MaW z@K&KGNV?Unq0*kCv(Po1XE~iYaH_|EtQkQqVSuYz2Xw7-6&Z1IFFcz>ZzEu zrPhVD3C3KtJ{bcjH9?9A;%n6PO^9<{CwPAs;^KXp9;TwLu@ZhIpAt)96A%vq0u%xQ zB;HIoiZ$d0Vl@O(K`sf12Lb(4KJP*Ks6Bwk?+A!x3Ax6wvw+;-b3QLXcx-WL)rcaSYKo zfA&%=U$X)aLqgwuKK=veStrCYG_%i`=)87IsMz$kg^|1uxwjlMn{_Sf?ddmLzM48L z&yHu_bn$BE<~^A+YNw_@*z-w>O($%{HN!nh#}=*VJ`lb~A#DAIS;72MG&Z=#SsYxH z(ZIw0mQhym^1~-Q&*li5SY4DjA@ywf=ao`_jRoeEGet;TdBnI}!&6}Gvx>6^BZ~|6 zaUSX^cYP?F6}O6`b2Zaf?%7JYM)T)<%ztM5Z~pf8Kl|d2#1^F2>ip~~Xf^o{B<>Vk zUH;RCammd;e>C2gM*#h%TH+c}l9E`GYL#4+3Zxi}42%qP4GeXS3_}b|txOH9j4ZSb m46Fer2qf_-rnAR0001U#iU-u!}|aL0MJQ9K~yM_&C*>CgCGn5VD5x* z2e6R~47~t92avVbU!heNmhEv_4dDy4#x@#jE!1Tu-sr1oNz%AO?ff1I$-}j0>JFjv*T7 z&t8hx5W_X7(8qo!4#&6`TIHFp~En_m*R3v#v$GJ^g0OS5t@O z+40PqE?({2yeD%;?bP%Kdp=3A>4dGgX1GV`*rFBP2g3I#gstB&E0}+Z#s=3oi-U_Y z8hF^>GRi7me)xpv*&JaLtBVpRq@GRxyi)3~vA~>irU;2Ej~JJ0cnYk2R&n-VWO2bh z&O<%rt`CK?;#P5Vu4ekmJzFW)X#Sj!`Ol31&ENk1XJ6cr*n;$0ou6F=ttS70#GQhx z%YWK1F1h*VkH-7*2%z6oOI#yLQW8s2t&)pUffR$0fsui(fuXLEVTggLm8pT1v4ysQ lft7(lfzd`y6b-rgDVb@NxHT~5b4~>Xqo=E%%Q~loCIJ13ngIX+ delta 309 zcmV-50m}Zk1H}T68Gi!+008Fy?~?!k05DKYR7G>er2qf_)z!VUw3M8jdxL|EVq$wi zN@^)FTFuqwi?r45=Dpt4ti7yitdwGN#iR;hAvOR20MJQ9K~yM_&C*>CgCGn5VD5x* z2e6R~47~t92avVbU!heNmhEv_4dDy4#x@#jE!1Tu-sr1oNz%X<$%%etAR34jfEWx?4=`T^G9G!lIEHAP zzdGR{CzGLo>vFN|o0Gq9nb6!(>LbQ|VNNP%qIJP}C98-wbx+=N{*Tr@cofO*Bxhf5 zbY}VL6AjM7G3|`cwQEX_Moq~&dtjrOZkDfsU7>Exi5~u5!8F6RoGOF+la`h?3g=$x z+UZ@sNi5;*>`zAh3QPilJ3g!n&zQB8yM5Wg0QpxJHXY@#pTn>BM47>`#dYH==`{?o zO3?@WxNP#m&)R8Z*yy#*epZ|)@4Wt}PHd0V1ir6a|EKzElzTsCx-Hpo{O$K#wphdF zcQVD(xdhWVBx@Qcu+FG$RXQ@WW}dR~zukq0Cu{=xR<*=6q9i4;B-JXpC>2OC7#SED z=o%R68X1Ndm|B?{SeY7W8yHv_7zpV;e}JMPH$NpatrE9}QAZF?i@sJjB_q4Uxi}RDXyWrwk2SOe{e}6K}r!{kfLnEx42Inh$ zblF;DYR$mD7Cmc?Fg!^ud?x-WSsVNaSYKo zfA+#b-a`r^Yzbi*apEgdJNO=?RWux#E$$_C{_D=hGKSf^I>gfjD)`r4IkNa4`=?fM zjlV~yDo>kn&anB${p7qwi%mg6J9-b--4eP!|nM` zXkU37wLJ1G&|9h{t`Q|Ei6yC4$wjF^iowXh$UxV?P}j&X#K6?b)X>VnLfgQ=%D_Od g{_YnP4Y~O#nQ4`{H6$pddVoUE)78&qol`;+0Qeb`NdN!< delta 306 zcmV-20nPri1HuB38Gi!+008Fy?~?!k05DKYR7G>er2qf_?(Wsz-n6u|l!JqdVq$wi zN@^)FS^xk50001-q?~($dtz#0Qd&{~000Ye(r zA~tn^>IOc0HVx(C%>)jznFDkPstfd`GYGtgR@%gy@js9+ynjIHFE$)8N3n~k#Ay|? z77b0x1^8uupyLHV6|ptuGQF_n2*dHv*cqz=M(nN;_`n;Xf4GQq@9qIj**ixV9FLHJ zI3(Z;Lx8bf0kXCc8o>MIMvA!@@vnM%kZbHvF9WDc6Z{G;!Fo_Z@NGxr3PF8}}l07*qoM6N<$ Ef+e_whyVZp diff --git a/graphics/door_anims/sootopolis_peaked_roof.png b/graphics/door_anims/sootopolis_peaked_roof.png index 7d8ea1f33e1710294ddbb02bdc8084127df55687..b4ccfb5f993ba33e06842e571e7cfb1813b871f5 100644 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H{k)<<(_Hcs7ogGU8*)`Ib6BqR&cj%`uKS-RQ+3|AySILRjRYAW@p9aNme!MOO(?^+g(!2R#k|F-J~a8}LS z!MKWNUdtY?>bAo|3t6r1YhWYqJ_cJ)z4*}Q$iB}FRzdh delta 306 zcmV-20nPri1HuB38Gi!+008Fy?~?!k05DKYR7G>er2qf_?(Wsz-n6u|l!JqdVq$wi zN@^)FS^xk50001-q?~($dtz#0Qd&{~000YeGj{qbeYWZzH=|4n+a07*qoM6N<$ Ef{~wn*#H0l diff --git a/graphics/door_anims/trainer_hill_lobby_elevator.png b/graphics/door_anims/trainer_hill_lobby_elevator.png index bdd1c3b271d0d3c4ddd895e12fa82735e2f33258..aeb7eaf26050aff021cc812dde0faf71a994fab5 100644 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H{HEZs8exQ&*a-v@uhz4Q>AO?ff1I$-}j1o^5#}JM4 z$ve1Nd3G;sFgd2B;m|Rsk*RHSxq`sK3U*eWr%y|3_2*5Wt}M~iRP;H{PDEr0JM+zN z>qm=0&Aagv_0?^NS>!)D{*4m{k_~tJlj6JY`&l`&{HXJ%)83q z!L)tN6@O*tePCo*^IE^XaJs4_(01GbWneJ>!!2N19Pgg&ebxsLQ0F3HsQ~&?~ delta 214 zcmcb^^qg^mWIZzj1H-fb?C_g1^}vu%3o-_)eQb|>+}g##%UOlyuf zh9t5#ee~lw;!y*Z_VQ9VmcTvVi9@$9LB&ZT=}W=^UD1|`SOI^arBk!d&b%YHEeB{l NgQu&X%Q~loCIE-4SabjY diff --git a/graphics/door_anims/unused_battle_frontier.png b/graphics/door_anims/unknown.png similarity index 100% rename from graphics/door_anims/unused_battle_frontier.png rename to graphics/door_anims/unknown.png 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/graphics/object_events/palettes/followers/aggron.pal b/graphics/object_events/palettes/followers/aggron.pal new file mode 100644 index 000000000..285abfd63 --- /dev/null +++ b/graphics/object_events/palettes/followers/aggron.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +73 65 81 +209 209 217 +1 1 1 +65 97 129 +105 145 201 +169 57 57 +49 41 57 +177 177 193 +209 89 89 +233 233 249 +145 145 153 +105 97 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/aipom.pal b/graphics/object_events/palettes/followers/aipom.pal new file mode 100644 index 000000000..f658712e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/aipom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 97 +169 137 201 +97 81 65 +225 209 161 +185 201 225 +113 73 145 +1 1 1 +81 41 113 +233 233 249 +137 105 169 +137 113 81 +137 153 185 +201 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ampharos.pal b/graphics/object_events/palettes/followers/ampharos.pal new file mode 100644 index 000000000..17ad1d495 --- /dev/null +++ b/graphics/object_events/palettes/followers/ampharos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +185 57 17 +113 129 153 +49 57 65 +1 1 1 +185 201 225 +241 89 81 +129 25 9 +81 97 113 +241 209 89 +105 89 9 +233 233 249 +201 161 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/anorith.pal b/graphics/object_events/palettes/followers/anorith.pal new file mode 100644 index 000000000..34717ba7c --- /dev/null +++ b/graphics/object_events/palettes/followers/anorith.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 153 113 +65 65 73 +201 201 217 +73 113 57 +161 161 177 +137 25 57 +129 169 121 +233 233 249 +193 113 105 +49 41 49 +105 105 113 +169 65 81 +217 217 233 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ariados.pal b/graphics/object_events/palettes/followers/ariados.pal new file mode 100644 index 000000000..ebc2b6797 --- /dev/null +++ b/graphics/object_events/palettes/followers/ariados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 1 +97 33 169 +129 97 9 +1 1 1 +201 65 57 +49 41 33 +169 185 209 +113 17 25 +145 81 225 +233 233 249 +249 193 9 +73 73 73 +241 97 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/armaldo.pal b/graphics/object_events/palettes/followers/armaldo.pal new file mode 100644 index 000000000..9ca50cb6f --- /dev/null +++ b/graphics/object_events/palettes/followers/armaldo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 9 +17 65 97 +97 145 177 +193 65 105 +193 193 209 +49 49 49 +233 201 73 +57 105 145 +113 113 121 +1 1 1 +233 233 249 +161 41 81 +129 169 201 +81 81 81 +145 145 161 diff --git a/graphics/object_events/palettes/followers/articuno.pal b/graphics/object_events/palettes/followers/articuno.pal new file mode 100644 index 000000000..417a8deb9 --- /dev/null +++ b/graphics/object_events/palettes/followers/articuno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +49 177 193 +161 225 249 +57 57 41 +57 129 137 +177 177 209 +217 249 249 +49 105 153 +161 33 49 +201 185 73 +1 1 1 +121 201 249 +105 161 233 +49 65 89 +233 233 249 diff --git a/graphics/object_events/palettes/followers/bagon.pal b/graphics/object_events/palettes/followers/bagon.pal new file mode 100644 index 000000000..cb37d7d6a --- /dev/null +++ b/graphics/object_events/palettes/followers/bagon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 17 +65 137 161 +201 201 201 +121 121 121 +185 185 185 +41 65 105 +233 233 249 +193 161 73 +1 1 1 +121 193 249 +105 169 225 +153 153 153 +73 81 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/barboach.pal b/graphics/object_events/palettes/followers/barboach.pal new file mode 100644 index 000000000..ccc983a79 --- /dev/null +++ b/graphics/object_events/palettes/followers/barboach.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +233 233 249 +89 145 185 +49 65 81 +121 177 209 +89 97 113 +1 1 1 +153 161 177 +57 113 153 +185 185 201 +25 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bayleef.pal b/graphics/object_events/palettes/followers/bayleef.pal new file mode 100644 index 000000000..bdfc636fc --- /dev/null +++ b/graphics/object_events/palettes/followers/bayleef.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 9 +217 217 217 +169 153 89 +161 193 81 +65 81 1 +201 185 89 +177 81 121 +233 233 249 +233 217 89 +1 1 1 +97 81 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beautifly.pal b/graphics/object_events/palettes/followers/beautifly.pal new file mode 100644 index 000000000..1f2c4405a --- /dev/null +++ b/graphics/object_events/palettes/followers/beautifly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 49 +97 97 105 +81 145 225 +41 41 49 +209 209 217 +185 49 73 +1 1 1 +217 89 97 +177 177 177 +249 217 105 +97 73 33 +49 97 153 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/beldum.pal b/graphics/object_events/palettes/followers/beldum.pal new file mode 100644 index 000000000..2ed964eb8 --- /dev/null +++ b/graphics/object_events/palettes/followers/beldum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +65 65 65 +185 185 201 +177 57 57 +113 161 209 +17 73 105 +153 217 241 +137 41 41 +1 1 1 +41 41 49 +97 97 105 +233 233 249 +153 201 233 +145 145 161 +65 97 121 diff --git a/graphics/object_events/palettes/followers/bellossom.pal b/graphics/object_events/palettes/followers/bellossom.pal new file mode 100644 index 000000000..d6249f109 --- /dev/null +++ b/graphics/object_events/palettes/followers/bellossom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +233 233 249 +17 65 41 +57 137 89 +241 193 57 +233 81 57 +113 33 9 +217 137 25 +1 1 1 +97 89 9 +193 41 25 +73 105 25 +153 193 113 +217 153 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blastoise.pal b/graphics/object_events/palettes/followers/blastoise.pal new file mode 100644 index 000000000..020dadbe0 --- /dev/null +++ b/graphics/object_events/palettes/followers/blastoise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 81 +145 137 233 +129 81 9 +241 201 81 +97 97 169 +49 57 89 +137 137 137 +233 233 249 +81 81 81 +185 185 185 +1 1 1 +73 41 9 +177 113 25 +201 169 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/blaziken.pal b/graphics/object_events/palettes/followers/blaziken.pal new file mode 100644 index 000000000..723203d09 --- /dev/null +++ b/graphics/object_events/palettes/followers/blaziken.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 169 17 +33 97 185 +1 1 1 +97 73 1 +169 25 25 +209 185 89 +241 225 153 +113 89 65 +177 129 81 +249 97 89 +241 233 225 +105 17 1 +233 49 41 +249 209 81 +185 169 161 diff --git a/graphics/object_events/palettes/followers/blissey.pal b/graphics/object_events/palettes/followers/blissey.pal new file mode 100644 index 000000000..e169adc07 --- /dev/null +++ b/graphics/object_events/palettes/followers/blissey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 169 +169 185 209 +65 73 97 +1 1 1 +225 81 97 +233 233 249 +105 17 65 +249 121 185 +249 169 201 +185 89 137 +201 209 233 +145 65 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/breloom.pal b/graphics/object_events/palettes/followers/breloom.pal new file mode 100644 index 000000000..811a70749 --- /dev/null +++ b/graphics/object_events/palettes/followers/breloom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 57 +49 81 33 +233 233 249 +129 193 89 +201 65 65 +97 33 33 +1 1 1 +73 113 49 +161 41 41 +129 105 57 +233 209 145 +105 169 65 +33 57 17 +209 185 113 +81 73 49 diff --git a/graphics/object_events/palettes/followers/butterfree.pal b/graphics/object_events/palettes/followers/butterfree.pal new file mode 100644 index 000000000..9d7c7c4e3 --- /dev/null +++ b/graphics/object_events/palettes/followers/butterfree.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 145 +50 65 145 +105 201 249 +97 97 97 +249 113 137 +193 40 65 +81 145 225 +185 193 225 +65 40 89 +161 105 225 +233 233 249 +113 81 201 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/camerupt.pal b/graphics/object_events/palettes/followers/camerupt.pal new file mode 100644 index 000000000..da482a575 --- /dev/null +++ b/graphics/object_events/palettes/followers/camerupt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 81 +201 73 25 +249 249 249 +73 65 49 +73 145 161 +89 97 97 +161 49 25 +1 1 1 +161 153 121 +217 105 49 +89 33 33 +129 113 81 +193 185 153 +49 57 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/carvanha.pal b/graphics/object_events/palettes/followers/carvanha.pal new file mode 100644 index 000000000..cb0714f8c --- /dev/null +++ b/graphics/object_events/palettes/followers/carvanha.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 9 +17 97 185 +49 121 233 +145 49 9 +1 1 1 +105 81 1 +241 193 17 +233 233 249 +169 177 185 +49 57 65 +201 57 33 +249 81 41 +249 217 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/caterpie.pal b/graphics/object_events/palettes/followers/caterpie.pal new file mode 100644 index 000000000..68f678aba --- /dev/null +++ b/graphics/object_events/palettes/followers/caterpie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 153 41 +169 233 65 +65 89 33 +249 121 113 +81 81 81 +161 49 73 +169 153 65 +249 233 97 +1 1 1 +129 97 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/celebi.pal b/graphics/object_events/palettes/followers/celebi.pal new file mode 100644 index 000000000..50b97151d --- /dev/null +++ b/graphics/object_events/palettes/followers/celebi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 81 +25 169 225 +121 185 73 +249 249 193 +1 89 137 +33 41 41 +145 153 153 +137 185 241 +193 225 113 +233 233 249 +1 1 1 +33 65 33 +81 177 209 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charizard.pal b/graphics/object_events/palettes/followers/charizard.pal new file mode 100644 index 000000000..e817695ce --- /dev/null +++ b/graphics/object_events/palettes/followers/charizard.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +161 161 161 +97 49 1 +249 185 17 +41 73 89 +201 89 41 +1 1 1 +145 65 33 +217 217 249 +249 121 57 +193 17 33 +241 209 113 +217 169 49 +97 65 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmander.pal b/graphics/object_events/palettes/followers/charmander.pal new file mode 100644 index 000000000..8df0fb2ef --- /dev/null +++ b/graphics/object_events/palettes/followers/charmander.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +167 177 129 +249 137 57 +97 65 33 +233 233 249 +1 1 1 +185 89 33 +225 41 41 +217 169 49 +41 73 89 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/charmeleon.pal b/graphics/object_events/palettes/followers/charmeleon.pal new file mode 100644 index 000000000..108320b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/charmeleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +41 105 129 +177 185 249 +241 209 113 +201 17 41 +145 145 145 +185 65 57 +97 25 33 +233 233 249 +249 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chimecho.pal b/graphics/object_events/palettes/followers/chimecho.pal new file mode 100644 index 000000000..cfbd41a93 --- /dev/null +++ b/graphics/object_events/palettes/followers/chimecho.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 57 +161 169 193 +193 57 57 +1 1 1 +121 129 153 +209 209 233 +89 97 121 +113 33 33 +249 217 89 +137 105 33 +233 233 249 +209 161 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chinchou.pal b/graphics/object_events/palettes/followers/chinchou.pal new file mode 100644 index 000000000..23a92cfb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/chinchou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +41 57 113 +193 201 217 +81 65 9 +1 1 1 +113 169 241 +185 49 41 +249 209 97 +89 89 161 +129 105 25 +233 233 249 +193 185 217 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clamperl.pal b/graphics/object_events/palettes/followers/clamperl.pal new file mode 100644 index 000000000..8ff612cf1 --- /dev/null +++ b/graphics/object_events/palettes/followers/clamperl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 169 +49 65 105 +1 1 1 +169 65 105 +137 161 209 +49 49 65 +73 97 137 +161 193 241 +233 121 161 +137 33 73 +201 89 129 +209 217 233 +97 105 129 +153 169 201 +0 0 0 diff --git a/graphics/object_events/palettes/followers/claydol.pal b/graphics/object_events/palettes/followers/claydol.pal new file mode 100644 index 000000000..2c319666c --- /dev/null +++ b/graphics/object_events/palettes/followers/claydol.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 25 +137 137 153 +57 49 41 +137 121 89 +193 73 121 +217 185 89 +233 233 249 +89 81 65 +137 41 65 +185 185 193 +233 137 113 +1 1 1 +113 89 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clefable.pal b/graphics/object_events/palettes/followers/clefable.pal new file mode 100644 index 000000000..a9968049c --- /dev/null +++ b/graphics/object_events/palettes/followers/clefable.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 129 169 +73 57 57 +1 1 1 +217 81 121 +121 97 73 +201 201 201 +225 145 153 +121 57 73 +249 193 193 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cloyster.pal b/graphics/object_events/palettes/followers/cloyster.pal new file mode 100644 index 000000000..b15a51ee6 --- /dev/null +++ b/graphics/object_events/palettes/followers/cloyster.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +97 97 97 +57 57 57 +233 233 249 +193 177 233 +145 113 185 +41 41 49 +1 1 1 +81 81 81 +97 89 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corphish.pal b/graphics/object_events/palettes/followers/corphish.pal new file mode 100644 index 000000000..4fe98b274 --- /dev/null +++ b/graphics/object_events/palettes/followers/corphish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 145 +89 81 65 +233 233 249 +177 177 193 +193 73 33 +161 153 129 +89 25 1 +121 113 97 +233 137 97 +217 105 65 +153 49 9 +1 1 1 +57 73 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/corsola.pal b/graphics/object_events/palettes/followers/corsola.pal new file mode 100644 index 000000000..caf141ec5 --- /dev/null +++ b/graphics/object_events/palettes/followers/corsola.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 185 +169 185 209 +73 81 97 +1 1 1 +233 233 249 +169 65 89 +121 33 65 +233 129 161 +241 169 193 +217 105 129 +193 209 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cradily.pal b/graphics/object_events/palettes/followers/cradily.pal new file mode 100644 index 000000000..9b10b1bbe --- /dev/null +++ b/graphics/object_events/palettes/followers/cradily.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 129 89 +33 89 49 +241 185 1 +97 169 97 +49 41 49 +193 65 97 +241 209 97 +137 25 57 +209 105 137 +153 217 153 +161 49 89 +1 1 1 +129 113 65 +89 81 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/crawdaunt.pal b/graphics/object_events/palettes/followers/crawdaunt.pal new file mode 100644 index 000000000..cd8f78f0c --- /dev/null +++ b/graphics/object_events/palettes/followers/crawdaunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +49 57 73 +41 129 169 +201 81 65 +169 153 145 +113 89 25 +233 233 249 +169 169 185 +249 217 89 +89 41 9 +145 57 33 +249 105 97 +89 81 65 +57 145 201 +1 1 1 diff --git a/graphics/object_events/palettes/followers/crobat.pal b/graphics/object_events/palettes/followers/crobat.pal new file mode 100644 index 000000000..35a380e27 --- /dev/null +++ b/graphics/object_events/palettes/followers/crobat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +73 25 121 +41 145 185 +17 97 145 +233 233 249 +121 81 145 +161 49 57 +233 217 97 +169 185 209 +161 113 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/croconaw.pal b/graphics/object_events/palettes/followers/croconaw.pal new file mode 100644 index 000000000..f1504a314 --- /dev/null +++ b/graphics/object_events/palettes/followers/croconaw.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 89 +73 65 17 +57 169 193 +41 65 97 +113 25 41 +225 209 121 +121 105 41 +233 233 249 +65 105 137 +169 41 65 +113 193 225 +1 1 1 +137 73 1 +209 49 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cyndaquil.pal b/graphics/object_events/palettes/followers/cyndaquil.pal new file mode 100644 index 000000000..58b2aa207 --- /dev/null +++ b/graphics/object_events/palettes/followers/cyndaquil.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 25 +73 73 113 +129 25 25 +97 129 225 +89 65 17 +1 1 1 +209 57 49 +169 185 209 +233 233 249 +33 49 81 +249 209 97 +81 97 161 +161 41 41 +57 65 81 +241 161 17 diff --git a/graphics/object_events/palettes/followers/delcatty.pal b/graphics/object_events/palettes/followers/delcatty.pal new file mode 100644 index 000000000..a31726030 --- /dev/null +++ b/graphics/object_events/palettes/followers/delcatty.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 73 +193 145 217 +65 49 105 +225 185 57 +153 105 201 +1 1 1 +81 73 57 +233 233 249 +233 209 129 +97 73 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/delibird.pal b/graphics/object_events/palettes/followers/delibird.pal new file mode 100644 index 000000000..899736131 --- /dev/null +++ b/graphics/object_events/palettes/followers/delibird.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +129 105 17 +137 1 1 +145 161 177 +185 25 25 +193 209 233 +249 217 89 +73 73 73 +233 233 249 +153 1 1 +201 25 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/deoxys.pal b/graphics/object_events/palettes/followers/deoxys.pal new file mode 100644 index 000000000..a02008116 --- /dev/null +++ b/graphics/object_events/palettes/followers/deoxys.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 105 +121 65 129 +57 57 57 +161 177 129 +249 129 81 +225 73 65 +97 17 17 +81 89 97 +233 233 249 +1 1 1 +185 89 209 +65 169 153 +185 41 41 +33 73 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/diglett.pal b/graphics/object_events/palettes/followers/diglett.pal new file mode 100644 index 000000000..761624524 --- /dev/null +++ b/graphics/object_events/palettes/followers/diglett.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +113 113 113 +65 49 17 +1 1 1 +65 65 65 +169 169 169 +153 33 73 +153 121 57 +209 65 105 +233 113 153 +201 201 201 +113 73 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dodrio.pal b/graphics/object_events/palettes/followers/dodrio.pal new file mode 100644 index 000000000..183414bf0 --- /dev/null +++ b/graphics/object_events/palettes/followers/dodrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +121 81 41 +177 177 153 +129 129 129 +65 49 33 +137 97 41 +193 161 65 +1 1 1 +233 233 249 +97 25 33 +185 65 89 +225 129 145 +249 177 49 +57 57 57 +137 113 41 diff --git a/graphics/object_events/palettes/followers/donphan.pal b/graphics/object_events/palettes/followers/donphan.pal new file mode 100644 index 000000000..df25c4cb5 --- /dev/null +++ b/graphics/object_events/palettes/followers/donphan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 137 153 +73 65 73 +249 249 249 +1 1 1 +25 41 57 +121 121 129 +73 89 113 +185 185 193 +137 25 25 +137 1 1 +153 153 161 +49 73 81 +185 185 201 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonair.pal b/graphics/object_events/palettes/followers/dragonair.pal new file mode 100644 index 000000000..5f7e4eaa8 --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonair.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +209 209 209 +65 65 65 +41 121 169 +81 145 217 +233 233 249 +105 105 105 +89 177 217 +145 41 33 +161 201 249 +49 65 105 +113 177 241 +81 113 177 +241 241 241 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dragonite.pal b/graphics/object_events/palettes/followers/dragonite.pal new file mode 100644 index 000000000..c17cc58ce --- /dev/null +++ b/graphics/object_events/palettes/followers/dragonite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 65 +145 153 161 +241 177 81 +65 57 33 +57 129 113 +1 1 1 +41 97 81 +233 233 249 +185 193 209 +153 97 49 +153 153 153 +233 201 153 +97 97 97 +209 169 121 +217 137 65 diff --git a/graphics/object_events/palettes/followers/dratini.pal b/graphics/object_events/palettes/followers/dratini.pal new file mode 100644 index 000000000..b8472f998 --- /dev/null +++ b/graphics/object_events/palettes/followers/dratini.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 65 65 +193 193 217 +97 113 169 +129 137 209 +105 105 105 +217 217 217 +145 41 33 +153 161 225 +233 233 249 +57 65 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dugtrio.pal b/graphics/object_events/palettes/followers/dugtrio.pal new file mode 100644 index 000000000..19bbad592 --- /dev/null +++ b/graphics/object_events/palettes/followers/dugtrio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 105 57 +57 41 17 +1 1 1 +113 113 113 +65 65 65 +129 17 49 +169 169 169 +153 121 57 +209 65 105 +233 121 153 +201 201 201 +113 73 33 +153 33 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dunsparce.pal b/graphics/object_events/palettes/followers/dunsparce.pal new file mode 100644 index 000000000..9cc03ea9e --- /dev/null +++ b/graphics/object_events/palettes/followers/dunsparce.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 169 1 +1 1 1 +137 185 225 +25 57 73 +217 193 1 +233 233 249 +249 225 161 +185 209 241 +249 233 113 +153 137 105 +81 161 185 +65 81 97 +65 57 57 +121 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dusclops.pal b/graphics/object_events/palettes/followers/dusclops.pal new file mode 100644 index 000000000..30d44a7a9 --- /dev/null +++ b/graphics/object_events/palettes/followers/dusclops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +185 185 185 +73 65 49 +161 161 161 +209 97 97 +1 1 1 +225 217 217 +105 89 81 +145 33 33 +169 177 201 +233 233 249 +185 177 177 +65 65 65 +121 121 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/duskull.pal b/graphics/object_events/palettes/followers/duskull.pal new file mode 100644 index 000000000..5f79a1d4e --- /dev/null +++ b/graphics/object_events/palettes/followers/duskull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 113 +73 65 49 +1 1 1 +193 57 57 +145 33 33 +217 113 113 +81 89 113 +201 185 185 +33 41 57 +225 217 217 +105 113 145 +57 65 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dustox.pal b/graphics/object_events/palettes/followers/dustox.pal new file mode 100644 index 000000000..72e80bb45 --- /dev/null +++ b/graphics/object_events/palettes/followers/dustox.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 57 +73 57 113 +161 145 217 +137 185 105 +57 57 57 +169 217 89 +185 49 73 +241 105 105 +121 97 169 +105 153 41 +65 89 33 +97 73 33 +241 217 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/eevee.pal b/graphics/object_events/palettes/followers/eevee.pal new file mode 100644 index 000000000..c04ada4ee --- /dev/null +++ b/graphics/object_events/palettes/followers/eevee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +225 209 169 +97 65 57 +185 161 97 +129 97 49 +65 49 25 +193 145 81 +233 233 249 +1 1 1 +121 97 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ekans.pal b/graphics/object_events/palettes/followers/ekans.pal new file mode 100644 index 000000000..b163ae5c8 --- /dev/null +++ b/graphics/object_events/palettes/followers/ekans.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 161 49 +113 97 41 +201 129 193 +121 81 121 +97 49 105 +249 217 65 +1 1 1 +145 97 145 +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/palettes/followers/electrike.pal b/graphics/object_events/palettes/followers/electrike.pal new file mode 100644 index 000000000..5d0115cfa --- /dev/null +++ b/graphics/object_events/palettes/followers/electrike.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 137 65 +233 233 249 +249 209 65 +129 169 97 +33 57 9 +153 201 97 +193 145 41 +1 1 1 +113 81 25 +177 225 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/entei.pal b/graphics/object_events/palettes/followers/entei.pal new file mode 100644 index 000000000..934782cde --- /dev/null +++ b/graphics/object_events/palettes/followers/entei.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 25 +97 65 49 +113 137 145 +49 57 81 +249 217 57 +217 73 33 +169 25 1 +89 81 25 +169 193 209 +1 1 1 +73 49 41 +233 233 249 +89 97 121 +169 121 81 +129 89 57 diff --git a/graphics/object_events/palettes/followers/espeon.pal b/graphics/object_events/palettes/followers/espeon.pal new file mode 100644 index 000000000..814e30a6e --- /dev/null +++ b/graphics/object_events/palettes/followers/espeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 33 121 +241 201 233 +233 137 177 +57 113 177 +225 177 217 +201 57 49 +81 41 121 +169 105 161 +233 233 249 +201 145 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/exeggutor.pal b/graphics/object_events/palettes/followers/exeggutor.pal new file mode 100644 index 000000000..9e45a52b5 --- /dev/null +++ b/graphics/object_events/palettes/followers/exeggutor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 169 41 +161 161 161 +57 81 41 +129 217 89 +201 137 89 +201 89 121 +145 97 57 +209 161 89 +233 233 249 +65 41 41 +249 201 89 +1 1 1 +89 73 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/exploud.pal b/graphics/object_events/palettes/followers/exploud.pal new file mode 100644 index 000000000..000d9c38f --- /dev/null +++ b/graphics/object_events/palettes/followers/exploud.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 49 +105 73 33 +137 129 185 +81 73 105 +41 49 65 +233 233 249 +105 97 153 +233 209 105 +1 1 1 +169 177 193 +113 33 49 +185 65 105 +177 169 225 +105 113 137 +137 41 65 diff --git a/graphics/object_events/palettes/followers/farfetchd.pal b/graphics/object_events/palettes/followers/farfetchd.pal new file mode 100644 index 000000000..5c23264c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/farfetchd.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 33 +169 169 169 +249 201 49 +81 81 81 +153 161 113 +241 225 161 +1 1 1 +177 145 41 +73 57 41 +233 233 249 +137 113 65 +209 209 193 +177 129 73 +217 169 121 +201 185 121 diff --git a/graphics/object_events/palettes/followers/fearow.pal b/graphics/object_events/palettes/followers/fearow.pal new file mode 100644 index 000000000..04f68a619 --- /dev/null +++ b/graphics/object_events/palettes/followers/fearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 145 33 +241 129 153 +193 65 1 +225 129 97 +185 185 185 +65 65 65 +89 57 17 +185 169 113 +233 233 249 +177 81 121 +177 113 17 +89 17 9 +225 201 169 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/feebas.pal b/graphics/object_events/palettes/followers/feebas.pal new file mode 100644 index 000000000..f5ca9d67c --- /dev/null +++ b/graphics/object_events/palettes/followers/feebas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 73 +113 161 209 +73 57 33 +1 1 1 +49 81 113 +81 121 161 +233 233 249 +17 41 65 +193 65 105 +193 193 209 +169 153 89 +105 89 49 +201 185 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/feraligatr.pal b/graphics/object_events/palettes/followers/feraligatr.pal new file mode 100644 index 000000000..043239005 --- /dev/null +++ b/graphics/object_events/palettes/followers/feraligatr.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 41 +81 129 185 +73 65 17 +185 161 89 +161 209 241 +169 41 65 +225 193 121 +161 177 201 +17 65 97 +97 33 41 +65 105 137 +233 233 249 +1 1 1 +113 177 233 +209 49 73 diff --git a/graphics/object_events/palettes/followers/flaaffy.pal b/graphics/object_events/palettes/followers/flaaffy.pal new file mode 100644 index 000000000..3e934d7da --- /dev/null +++ b/graphics/object_events/palettes/followers/flaaffy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 185 89 +57 153 193 +97 201 241 +49 57 65 +225 145 185 +33 89 145 +185 201 225 +185 97 129 +113 41 65 +249 185 217 +233 233 249 +89 105 121 +137 153 177 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flareon.pal b/graphics/object_events/palettes/followers/flareon.pal new file mode 100644 index 000000000..df0c348e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/flareon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 49 +233 217 153 +73 57 41 +153 65 41 +217 169 73 +233 233 249 +217 89 33 +249 129 73 +1 1 1 +217 193 193 +81 65 65 +193 65 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/flygon.pal b/graphics/object_events/palettes/followers/flygon.pal new file mode 100644 index 000000000..3ed7c9537 --- /dev/null +++ b/graphics/object_events/palettes/followers/flygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +65 105 57 +185 193 209 +129 33 33 +161 193 97 +1 1 1 +249 129 153 +169 49 65 +249 249 249 +49 73 49 +193 217 153 +97 97 97 +209 65 89 +121 145 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/forretress.pal b/graphics/object_events/palettes/followers/forretress.pal new file mode 100644 index 000000000..12bb3be0e --- /dev/null +++ b/graphics/object_events/palettes/followers/forretress.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +89 65 105 +225 209 249 +105 17 25 +185 153 185 +137 113 145 +49 49 49 +1 1 1 +217 97 65 +193 49 57 +209 185 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gardevoir.pal b/graphics/object_events/palettes/followers/gardevoir.pal new file mode 100644 index 000000000..7fc27c511 --- /dev/null +++ b/graphics/object_events/palettes/followers/gardevoir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +129 129 145 +233 233 249 +241 105 105 +1 1 1 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +145 145 145 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastly.pal b/graphics/object_events/palettes/followers/gastly.pal new file mode 100644 index 000000000..e3337fe80 --- /dev/null +++ b/graphics/object_events/palettes/followers/gastly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 137 +73 73 73 +65 17 57 +233 233 249 +41 41 57 +1 1 1 +113 89 153 +81 57 105 +153 9 5 +185 185 185 +137 113 161 +57 57 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gengar.pal b/graphics/object_events/palettes/followers/gengar.pal new file mode 100644 index 000000000..374fed5aa --- /dev/null +++ b/graphics/object_events/palettes/followers/gengar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 97 97 +153 153 153 +81 57 105 +185 185 185 +145 121 161 +41 41 57 +217 97 97 +1 1 1 +249 169 161 +105 81 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/girafarig.pal b/graphics/object_events/palettes/followers/girafarig.pal new file mode 100644 index 000000000..5d0e01229 --- /dev/null +++ b/graphics/object_events/palettes/followers/girafarig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 81 +33 65 121 +249 209 97 +73 49 17 +185 81 105 +161 177 201 +41 49 57 +201 161 81 +233 233 249 +233 113 185 +57 113 161 +105 81 57 +1 1 1 +73 81 89 +97 113 153 diff --git a/graphics/object_events/palettes/followers/glalie.pal b/graphics/object_events/palettes/followers/glalie.pal new file mode 100644 index 000000000..8938d2810 --- /dev/null +++ b/graphics/object_events/palettes/followers/glalie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +1 1 1 +57 57 73 +153 161 177 +41 41 57 +41 129 193 +193 201 217 +81 81 97 +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/palettes/followers/gligar.pal b/graphics/object_events/palettes/followers/gligar.pal new file mode 100644 index 000000000..74a83d573 --- /dev/null +++ b/graphics/object_events/palettes/followers/gligar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +89 41 97 +241 193 217 +9 89 129 +161 89 137 +1 1 1 +233 233 249 +201 113 177 +137 33 57 +225 153 209 +177 73 121 +209 105 153 +169 185 161 +201 209 217 +17 97 129 diff --git a/graphics/object_events/palettes/followers/goldeen.pal b/graphics/object_events/palettes/followers/goldeen.pal new file mode 100644 index 000000000..3e9389b60 --- /dev/null +++ b/graphics/object_events/palettes/followers/goldeen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 113 +177 177 177 +233 73 33 +249 233 161 +217 161 81 +97 17 1 +81 81 81 +241 129 161 +233 233 249 +1 1 1 +201 89 121 +161 33 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golduck.pal b/graphics/object_events/palettes/followers/golduck.pal new file mode 100644 index 000000000..c1568e666 --- /dev/null +++ b/graphics/object_events/palettes/followers/golduck.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 185 65 +81 121 169 +241 49 113 +65 65 65 +249 233 137 +233 233 249 +1 1 1 +177 177 209 +89 17 33 +121 161 249 +249 193 81 +49 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/golem.pal b/graphics/object_events/palettes/followers/golem.pal new file mode 100644 index 000000000..d2852e60c --- /dev/null +++ b/graphics/object_events/palettes/followers/golem.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 105 +89 81 57 +193 193 193 +153 153 153 +121 113 81 +49 49 49 +1 1 1 +105 17 25 +233 233 249 +193 153 121 +113 89 73 +145 113 97 +161 161 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gorebyss.pal b/graphics/object_events/palettes/followers/gorebyss.pal new file mode 100644 index 000000000..af3c25028 --- /dev/null +++ b/graphics/object_events/palettes/followers/gorebyss.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 137 +81 57 129 +209 217 233 +145 129 217 +121 105 185 +97 105 129 +49 49 65 +1 1 1 +153 169 201 +185 81 97 +201 89 113 +137 33 73 +169 153 241 +233 145 161 +233 233 249 diff --git a/graphics/object_events/palettes/followers/granbull.pal b/graphics/object_events/palettes/followers/granbull.pal new file mode 100644 index 000000000..ed5998bfc --- /dev/null +++ b/graphics/object_events/palettes/followers/granbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 121 137 +177 193 209 +49 65 81 +129 89 137 +1 1 1 +233 233 249 +193 145 209 +225 185 241 +161 113 169 +105 65 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/groudon.pal b/graphics/object_events/palettes/followers/groudon.pal new file mode 100644 index 000000000..28f20e54a --- /dev/null +++ b/graphics/object_events/palettes/followers/groudon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 129 145 +217 73 65 +145 153 177 +137 25 17 +57 65 81 +33 41 57 +209 193 49 +185 201 217 +1 1 1 +129 113 25 +97 105 121 +233 233 249 +89 17 9 +73 81 97 +177 33 33 diff --git a/graphics/object_events/palettes/followers/grovyle.pal b/graphics/object_events/palettes/followers/grovyle.pal new file mode 100644 index 000000000..d1df22d69 --- /dev/null +++ b/graphics/object_events/palettes/followers/grovyle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 121 65 +41 57 17 +1 1 1 +105 25 25 +97 153 73 +153 201 121 +153 41 41 +65 105 41 +249 217 89 +185 49 49 +113 153 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/grumpig.pal b/graphics/object_events/palettes/followers/grumpig.pal new file mode 100644 index 000000000..0563b27ca --- /dev/null +++ b/graphics/object_events/palettes/followers/grumpig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +121 65 145 +73 81 89 +153 89 185 +105 25 65 +185 73 129 +49 57 65 +193 193 193 +249 249 249 +113 121 121 +193 121 225 +145 49 97 +225 97 161 +81 41 105 +137 73 169 diff --git a/graphics/object_events/palettes/followers/gulpin.pal b/graphics/object_events/palettes/followers/gulpin.pal new file mode 100644 index 000000000..28cdbf17d --- /dev/null +++ b/graphics/object_events/palettes/followers/gulpin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 121 41 +57 97 17 +233 185 65 +57 73 81 +105 153 65 +1 1 1 +33 49 17 +169 129 57 +113 89 41 +137 193 113 +73 89 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gyarados.pal b/graphics/object_events/palettes/followers/gyarados.pal new file mode 100644 index 000000000..3019ff479 --- /dev/null +++ b/graphics/object_events/palettes/followers/gyarados.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 129 1 +41 129 129 +193 193 209 +137 97 33 +73 177 225 +1 1 1 +33 97 129 +249 201 105 +185 65 105 +49 57 81 +217 113 153 +233 233 249 +137 145 145 +177 137 49 +65 121 153 diff --git a/graphics/object_events/palettes/followers/hariyama.pal b/graphics/object_events/palettes/followers/hariyama.pal new file mode 100644 index 000000000..9ae8eaef4 --- /dev/null +++ b/graphics/object_events/palettes/followers/hariyama.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 33 +105 129 177 +25 41 89 +73 57 9 +217 185 65 +217 201 153 +185 153 105 +105 81 65 +233 233 249 +65 81 137 +185 89 17 +1 1 1 +97 33 9 +241 233 193 +209 129 57 diff --git a/graphics/object_events/palettes/followers/haunter.pal b/graphics/object_events/palettes/followers/haunter.pal new file mode 100644 index 000000000..aab1166f2 --- /dev/null +++ b/graphics/object_events/palettes/followers/haunter.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 161 +73 73 73 +233 233 249 +65 17 57 +1 1 1 +97 73 105 +65 49 57 +153 153 153 +185 185 185 +129 97 129 +97 33 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/heracross.pal b/graphics/object_events/palettes/followers/heracross.pal new file mode 100644 index 000000000..26bd7164c --- /dev/null +++ b/graphics/object_events/palettes/followers/heracross.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 9 +81 153 177 +153 89 1 +249 249 249 +17 73 97 +129 193 201 +57 121 145 +1 1 1 +241 177 65 +33 97 121 +153 169 185 +185 201 217 +57 73 81 +17 17 17 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonchan.pal b/graphics/object_events/palettes/followers/hitmonchan.pal new file mode 100644 index 000000000..7c6c8e38c --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonchan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 105 +113 81 57 +145 25 41 +233 233 249 +73 49 49 +161 137 201 +113 105 129 +1 1 1 +225 57 57 +153 113 65 +57 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmonlee.pal b/graphics/object_events/palettes/followers/hitmonlee.pal new file mode 100644 index 000000000..16a145cac --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmonlee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 49 +161 161 161 +1 1 1 +89 73 41 +177 145 129 +161 129 81 +201 201 209 +97 97 97 +73 49 49 +233 233 249 +121 97 57 +209 185 113 +153 137 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hitmontop.pal b/graphics/object_events/palettes/followers/hitmontop.pal new file mode 100644 index 000000000..cb5c2f1ee --- /dev/null +++ b/graphics/object_events/palettes/followers/hitmontop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 73 +97 153 209 +89 73 25 +209 161 105 +233 233 249 +57 113 161 +25 57 105 +177 185 193 +1 1 1 +129 81 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ho_oh.pal b/graphics/object_events/palettes/followers/ho_oh.pal new file mode 100644 index 000000000..dcc241696 --- /dev/null +++ b/graphics/object_events/palettes/followers/ho_oh.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 153 1 +57 57 57 +1 1 1 +161 57 25 +129 201 81 +169 185 209 +81 25 1 +169 105 1 +97 121 121 +217 233 249 +57 97 17 +249 209 97 +217 81 49 +97 41 1 +233 233 249 diff --git a/graphics/object_events/palettes/followers/hoothoot.pal b/graphics/object_events/palettes/followers/hoothoot.pal new file mode 100644 index 000000000..bf367bd48 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoothoot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 113 113 +65 81 89 +1 1 1 +225 169 169 +81 41 9 +217 81 73 +137 73 57 +233 217 161 +169 185 209 +41 41 41 +177 129 89 +105 41 41 +137 89 65 +201 177 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hoppip.pal b/graphics/object_events/palettes/followers/hoppip.pal new file mode 100644 index 000000000..7dade5208 --- /dev/null +++ b/graphics/object_events/palettes/followers/hoppip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 201 1 +225 105 129 +49 89 17 +97 153 65 +1 1 1 +169 65 89 +89 9 3 +113 193 81 +241 145 193 +201 89 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/horsea.pal b/graphics/object_events/palettes/followers/horsea.pal new file mode 100644 index 000000000..4a5c74fdb --- /dev/null +++ b/graphics/object_events/palettes/followers/horsea.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +97 153 193 +25 57 97 +233 233 249 +65 65 65 +249 209 161 +169 185 209 +145 17 17 +41 89 137 +1 1 1 +145 185 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/huntail.pal b/graphics/object_events/palettes/followers/huntail.pal new file mode 100644 index 000000000..f89eadd28 --- /dev/null +++ b/graphics/object_events/palettes/followers/huntail.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 81 49 +153 201 225 +49 49 65 +97 153 217 +49 97 137 +233 233 249 +121 185 217 +129 49 25 +185 65 113 +153 41 89 +217 113 73 +209 217 233 +177 193 217 +0 0 0 diff --git a/graphics/object_events/palettes/followers/igglybuff.pal b/graphics/object_events/palettes/followers/igglybuff.pal new file mode 100644 index 000000000..0d5864b65 --- /dev/null +++ b/graphics/object_events/palettes/followers/igglybuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 169 +169 81 97 +249 201 217 +89 41 65 +225 113 121 +1 1 1 +233 233 249 +169 49 57 +201 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/illumise.pal b/graphics/object_events/palettes/followers/illumise.pal new file mode 100644 index 000000000..33284a660 --- /dev/null +++ b/graphics/object_events/palettes/followers/illumise.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +201 121 201 +65 65 73 +161 193 233 +113 89 57 +89 161 233 +201 185 89 +49 65 105 +41 41 49 +169 169 201 +233 233 249 +105 105 113 +1 1 1 +209 177 233 +105 57 105 diff --git a/graphics/object_events/palettes/followers/ivysaur.pal b/graphics/object_events/palettes/followers/ivysaur.pal new file mode 100644 index 000000000..db3e0fda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/ivysaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 169 17 +73 169 153 +49 89 25 +105 209 193 +201 89 121 +137 225 33 +145 65 33 +65 129 121 +241 129 161 +201 201 217 +1 1 1 +105 33 41 +233 233 249 +41 65 65 +65 65 65 diff --git a/graphics/object_events/palettes/followers/jigglypuff.pal b/graphics/object_events/palettes/followers/jigglypuff.pal new file mode 100644 index 000000000..cf6b522cc --- /dev/null +++ b/graphics/object_events/palettes/followers/jigglypuff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 73 65 +113 161 249 +81 81 121 +97 41 65 +249 169 185 +145 73 89 +233 233 249 +209 113 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jirachi.pal b/graphics/object_events/palettes/followers/jirachi.pal new file mode 100644 index 000000000..4611f22c6 --- /dev/null +++ b/graphics/object_events/palettes/followers/jirachi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 1 +89 161 145 +121 201 177 +73 65 17 +217 185 65 +177 185 185 +33 89 81 +1 1 1 +57 129 113 +209 209 225 +169 113 9 +249 217 89 +233 233 249 +81 105 105 +137 153 153 diff --git a/graphics/object_events/palettes/followers/jolteon.pal b/graphics/object_events/palettes/followers/jolteon.pal new file mode 100644 index 000000000..1398b039a --- /dev/null +++ b/graphics/object_events/palettes/followers/jolteon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 161 33 +169 169 193 +65 57 41 +249 249 81 +1 1 1 +209 225 233 +169 105 33 +249 201 25 +73 65 81 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jumpluff.pal b/graphics/object_events/palettes/followers/jumpluff.pal new file mode 100644 index 000000000..63bedfafd --- /dev/null +++ b/graphics/object_events/palettes/followers/jumpluff.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +41 81 137 +249 249 201 +113 113 97 +33 57 97 +97 153 225 +121 17 9 +193 185 161 +57 113 217 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/jynx.pal b/graphics/object_events/palettes/followers/jynx.pal new file mode 100644 index 000000000..10f616466 --- /dev/null +++ b/graphics/object_events/palettes/followers/jynx.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +153 153 185 +105 73 137 +193 193 209 +65 57 57 +249 225 33 +137 97 193 +233 233 249 +1 1 1 +177 57 33 +249 89 73 +249 233 185 +249 209 97 +241 129 161 +201 89 121 diff --git a/graphics/object_events/palettes/followers/kabuto.pal b/graphics/object_events/palettes/followers/kabuto.pal new file mode 100644 index 000000000..aa01d9002 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabuto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 97 65 +49 41 41 +233 185 89 +209 65 65 +169 129 57 +89 73 57 +137 25 25 +49 57 73 +1 1 1 +153 121 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kabutops.pal b/graphics/object_events/palettes/followers/kabutops.pal new file mode 100644 index 000000000..10c3bb588 --- /dev/null +++ b/graphics/object_events/palettes/followers/kabutops.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +89 57 33 +193 193 201 +105 105 121 +137 97 41 +153 153 153 +65 65 65 +49 41 41 +233 233 249 +1 1 1 +105 73 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kangaskhan.pal b/graphics/object_events/palettes/followers/kangaskhan.pal new file mode 100644 index 000000000..131f73a28 --- /dev/null +++ b/graphics/object_events/palettes/followers/kangaskhan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 41 +89 73 41 +169 185 209 +209 169 97 +113 113 113 +65 49 33 +73 73 73 +249 201 121 +233 233 249 +185 121 113 +105 9 1 +1 1 1 +57 57 65 +129 113 145 +121 81 57 diff --git a/graphics/object_events/palettes/followers/kecleon.pal b/graphics/object_events/palettes/followers/kecleon.pal new file mode 100644 index 000000000..4adc1da0a --- /dev/null +++ b/graphics/object_events/palettes/followers/kecleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 129 41 +233 233 249 +145 193 89 +89 81 41 +1 1 1 +185 225 105 +33 57 17 +121 169 49 +153 41 65 +249 193 65 +129 113 65 +217 169 33 +249 225 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kingdra.pal b/graphics/object_events/palettes/followers/kingdra.pal new file mode 100644 index 000000000..53a982441 --- /dev/null +++ b/graphics/object_events/palettes/followers/kingdra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 41 +73 121 161 +137 97 33 +169 185 209 +25 57 97 +233 233 249 +1 1 1 +193 209 233 +113 153 201 +113 17 17 +73 73 73 +217 161 57 +41 81 129 +145 193 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kyogre.pal b/graphics/object_events/palettes/followers/kyogre.pal new file mode 100644 index 000000000..da6327faa --- /dev/null +++ b/graphics/object_events/palettes/followers/kyogre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 129 +129 113 25 +65 129 193 +153 25 25 +129 185 217 +57 57 57 +225 193 33 +97 161 193 +41 97 153 +1 1 1 +201 217 241 +201 41 41 +89 17 9 +25 57 89 +153 169 177 diff --git a/graphics/object_events/palettes/followers/lanturn.pal b/graphics/object_events/palettes/followers/lanturn.pal new file mode 100644 index 000000000..c2a012f36 --- /dev/null +++ b/graphics/object_events/palettes/followers/lanturn.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 17 +97 137 225 +17 33 89 +185 201 217 +81 65 9 +225 233 241 +1 1 1 +185 49 41 +65 97 169 +249 209 97 +129 105 25 +113 177 241 +161 209 241 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lapras.pal b/graphics/object_events/palettes/followers/lapras.pal new file mode 100644 index 000000000..cb7e199bd --- /dev/null +++ b/graphics/object_events/palettes/followers/lapras.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 73 +89 129 177 +105 81 17 +145 153 161 +193 201 209 +49 73 105 +49 57 57 +249 209 105 +97 177 233 +113 113 129 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latias.pal b/graphics/object_events/palettes/followers/latias.pal new file mode 100644 index 000000000..e65c159fc --- /dev/null +++ b/graphics/object_events/palettes/followers/latias.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 169 1 +65 129 169 +57 65 65 +185 201 209 +97 25 17 +1 1 1 +193 65 65 +33 41 41 +105 121 121 +233 233 249 +153 169 177 +233 89 89 +129 145 153 +145 41 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/latios.pal b/graphics/object_events/palettes/followers/latios.pal new file mode 100644 index 000000000..a50cfc45c --- /dev/null +++ b/graphics/object_events/palettes/followers/latios.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +89 193 249 +57 65 65 +49 129 193 +129 33 33 +9 57 89 +1 1 1 +185 201 209 +33 113 169 +65 153 217 +33 41 41 +233 233 249 +153 169 177 +129 145 153 +193 33 33 diff --git a/graphics/object_events/palettes/followers/ledian.pal b/graphics/object_events/palettes/followers/ledian.pal new file mode 100644 index 000000000..95b25de50 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 89 +137 65 1 +17 129 193 +65 65 97 +241 209 81 +177 41 49 +1 1 1 +185 201 225 +249 97 121 +113 97 73 +17 105 153 +233 233 249 +209 177 81 +225 33 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ledyba.pal b/graphics/object_events/palettes/followers/ledyba.pal new file mode 100644 index 000000000..4540e80b7 --- /dev/null +++ b/graphics/object_events/palettes/followers/ledyba.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 177 49 +81 89 201 +129 113 49 +193 201 225 +169 33 9 +1 1 1 +105 33 41 +233 233 241 +241 225 129 +249 113 49 +225 57 33 +57 57 57 +225 201 41 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lickitung.pal b/graphics/object_events/palettes/followers/lickitung.pal new file mode 100644 index 000000000..7c028935c --- /dev/null +++ b/graphics/object_events/palettes/followers/lickitung.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 129 +161 161 161 +233 233 249 +177 97 121 +233 185 201 +217 201 49 +217 153 177 +89 49 73 +1 1 1 +241 169 169 +169 89 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lileep.pal b/graphics/object_events/palettes/followers/lileep.pal new file mode 100644 index 000000000..80228afba --- /dev/null +++ b/graphics/object_events/palettes/followers/lileep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 57 +41 33 89 +137 97 177 +161 49 89 +113 89 49 +209 185 73 +89 17 41 +97 57 145 +209 105 137 +161 145 217 +1 1 1 +41 25 41 +81 57 81 +193 65 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/linoone.pal b/graphics/object_events/palettes/followers/linoone.pal new file mode 100644 index 000000000..f7daf07d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/linoone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 185 +81 73 65 +113 105 89 +169 185 209 +41 81 121 +1 1 1 +121 89 65 +105 105 121 +233 233 249 +65 41 17 +217 209 185 +185 177 169 +153 113 89 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lombre.pal b/graphics/object_events/palettes/followers/lombre.pal new file mode 100644 index 000000000..22a7e49bb --- /dev/null +++ b/graphics/object_events/palettes/followers/lombre.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 3 +121 153 137 +41 81 33 +145 209 17 +233 233 249 +129 41 17 +105 153 65 +1 1 1 +233 89 65 +113 169 17 +73 113 65 +153 193 161 +169 49 25 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lotad.pal b/graphics/object_events/palettes/followers/lotad.pal new file mode 100644 index 000000000..d3457a4ec --- /dev/null +++ b/graphics/object_events/palettes/followers/lotad.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 25 +81 145 193 +33 57 17 +113 169 17 +41 97 137 +1 1 1 +41 97 65 +145 209 17 +233 233 249 +25 49 89 +233 185 65 +169 121 25 +97 65 9 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ludicolo.pal b/graphics/object_events/palettes/followers/ludicolo.pal new file mode 100644 index 000000000..87294c677 --- /dev/null +++ b/graphics/object_events/palettes/followers/ludicolo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 57 +161 161 161 +33 57 17 +121 177 33 +97 73 49 +1 1 1 +145 209 17 +137 105 81 +233 233 249 +209 129 9 +49 41 9 +137 65 1 +209 177 65 +233 201 121 +65 65 73 diff --git a/graphics/object_events/palettes/followers/lugia.pal b/graphics/object_events/palettes/followers/lugia.pal new file mode 100644 index 000000000..adf9c9f0e --- /dev/null +++ b/graphics/object_events/palettes/followers/lugia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 209 217 +41 49 113 +41 121 193 +73 73 89 +153 161 169 +233 233 249 +49 97 193 +137 169 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luvdisc.pal b/graphics/object_events/palettes/followers/luvdisc.pal new file mode 100644 index 000000000..4275e201b --- /dev/null +++ b/graphics/object_events/palettes/followers/luvdisc.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 129 153 +97 105 129 +249 193 185 +1 1 1 +49 49 65 +233 145 145 +209 97 137 +137 33 73 +233 233 249 +249 177 145 +161 49 97 +217 105 153 +233 153 161 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machamp.pal b/graphics/object_events/palettes/followers/machamp.pal new file mode 100644 index 000000000..a84bfe10a --- /dev/null +++ b/graphics/object_events/palettes/followers/machamp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +249 209 9 +233 201 153 +65 65 65 +177 153 113 +209 185 73 +233 233 249 +193 41 65 +241 233 113 +161 161 201 +81 89 105 +201 201 201 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machoke.pal b/graphics/object_events/palettes/followers/machoke.pal new file mode 100644 index 000000000..4585ebaa7 --- /dev/null +++ b/graphics/object_events/palettes/followers/machoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 25 +129 129 145 +73 73 73 +249 209 9 +233 201 153 +177 153 113 +97 105 129 +193 41 65 +1 1 1 +233 233 249 +161 161 201 +209 161 17 +89 89 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/machop.pal b/graphics/object_events/palettes/followers/machop.pal new file mode 100644 index 000000000..828328b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/machop.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 137 +233 201 153 +57 57 57 +1 1 1 +193 41 65 +177 153 113 +233 233 249 +73 97 105 +137 169 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magby.pal b/graphics/object_events/palettes/followers/magby.pal new file mode 100644 index 000000000..8a53eb769 --- /dev/null +++ b/graphics/object_events/palettes/followers/magby.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 33 +105 73 1 +177 185 193 +129 1 1 +65 65 73 +1 1 1 +153 41 57 +249 81 121 +233 233 249 +241 193 57 +81 89 105 +209 41 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magcargo.pal b/graphics/object_events/palettes/followers/magcargo.pal new file mode 100644 index 000000000..04fdccbae --- /dev/null +++ b/graphics/object_events/palettes/followers/magcargo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 121 25 +41 49 57 +1 1 1 +177 57 49 +73 1 1 +105 113 137 +249 153 1 +73 81 97 +249 209 89 +225 81 73 +121 25 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magikarp.pal b/graphics/object_events/palettes/followers/magikarp.pal new file mode 100644 index 000000000..d29c0357d --- /dev/null +++ b/graphics/object_events/palettes/followers/magikarp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +185 65 105 +145 145 145 +137 41 25 +1 1 1 +81 33 17 +249 193 17 +217 113 153 +193 193 209 +233 233 249 +121 33 65 +233 169 73 +233 97 65 +49 49 49 +201 57 17 diff --git a/graphics/object_events/palettes/followers/magmar.pal b/graphics/object_events/palettes/followers/magmar.pal new file mode 100644 index 000000000..ce9d6c30d --- /dev/null +++ b/graphics/object_events/palettes/followers/magmar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 9 +49 49 49 +145 145 145 +201 89 129 +193 193 209 +185 57 25 +129 1 1 +241 209 1 +241 185 201 +233 233 249 +113 81 17 +225 153 17 +105 33 17 +1 1 1 +241 73 33 diff --git a/graphics/object_events/palettes/followers/magnemite.pal b/graphics/object_events/palettes/followers/magnemite.pal new file mode 100644 index 000000000..041b62f37 --- /dev/null +++ b/graphics/object_events/palettes/followers/magnemite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 145 +193 209 217 +81 81 81 +73 137 233 +233 65 65 +153 169 185 +57 57 57 +1 1 1 +113 113 121 +233 233 249 +177 177 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/makuhita.pal b/graphics/object_events/palettes/followers/makuhita.pal new file mode 100644 index 000000000..681982bc5 --- /dev/null +++ b/graphics/object_events/palettes/followers/makuhita.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 57 +73 57 9 +57 65 81 +137 41 65 +225 201 105 +185 65 105 +25 33 41 +1 1 1 +113 97 17 +81 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/manectric.pal b/graphics/object_events/palettes/followers/manectric.pal new file mode 100644 index 000000000..5d93d7697 --- /dev/null +++ b/graphics/object_events/palettes/followers/manectric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 33 +81 153 185 +97 73 49 +249 249 145 +193 57 57 +1 1 1 +129 185 217 +33 121 153 +161 217 249 +25 49 89 +225 193 73 +161 161 161 +233 233 249 +65 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mankey.pal b/graphics/object_events/palettes/followers/mankey.pal new file mode 100644 index 000000000..91522b4e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/mankey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +73 65 57 +1 1 1 +145 17 49 +153 121 97 +233 233 249 +177 105 129 +177 177 209 +177 169 129 +233 217 137 +137 105 57 +121 41 65 +209 177 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mantine.pal b/graphics/object_events/palettes/followers/mantine.pal new file mode 100644 index 000000000..62f32dc56 --- /dev/null +++ b/graphics/object_events/palettes/followers/mantine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 137 153 +217 209 225 +17 65 105 +81 121 185 +177 169 185 +49 49 73 +209 233 249 +49 89 145 +1 1 1 +121 161 217 +57 81 121 +137 177 217 +41 65 73 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mareep.pal b/graphics/object_events/palettes/followers/mareep.pal new file mode 100644 index 000000000..04d1d5345 --- /dev/null +++ b/graphics/object_events/palettes/followers/mareep.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 1 +1 1 1 +105 89 9 +169 145 73 +249 249 177 +49 57 65 +81 129 185 +89 105 121 +241 201 81 +121 169 233 +233 233 249 +225 113 1 +137 5 7 +233 209 105 +249 169 1 diff --git a/graphics/object_events/palettes/followers/marshtomp.pal b/graphics/object_events/palettes/followers/marshtomp.pal new file mode 100644 index 000000000..828789299 --- /dev/null +++ b/graphics/object_events/palettes/followers/marshtomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +129 161 177 +73 57 17 +33 81 89 +65 129 129 +233 233 249 +89 185 177 +161 73 17 +1 1 1 +177 193 209 +193 89 17 +97 121 129 +49 81 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/masquerain.pal b/graphics/object_events/palettes/followers/masquerain.pal new file mode 100644 index 000000000..366b9fb54 --- /dev/null +++ b/graphics/object_events/palettes/followers/masquerain.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +81 81 89 +137 177 201 +65 81 113 +161 209 225 +137 33 89 +161 65 49 +217 105 121 +105 25 33 +225 161 185 +89 113 153 +233 233 249 +201 89 73 +177 217 233 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mawile.pal b/graphics/object_events/palettes/followers/mawile.pal new file mode 100644 index 000000000..6751c3e12 --- /dev/null +++ b/graphics/object_events/palettes/followers/mawile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 89 +81 73 57 +177 185 201 +249 217 129 +129 105 73 +193 57 57 +145 145 145 +41 41 41 +233 233 249 +1 1 1 +113 113 113 +73 73 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/medicham.pal b/graphics/object_events/palettes/followers/medicham.pal new file mode 100644 index 000000000..c0ba10536 --- /dev/null +++ b/graphics/object_events/palettes/followers/medicham.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 25 +152 152 145 +113 81 17 +193 193 185 +57 57 65 +1 1 1 +185 81 105 +233 137 161 +233 233 249 +249 217 89 +113 113 97 +49 25 33 +193 161 17 +145 57 89 +201 97 129 diff --git a/graphics/object_events/palettes/followers/meditite.pal b/graphics/object_events/palettes/followers/meditite.pal new file mode 100644 index 000000000..5c7838281 --- /dev/null +++ b/graphics/object_events/palettes/followers/meditite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 137 153 +217 225 233 +57 57 65 +1 1 1 +65 105 153 +89 145 193 +81 81 89 +185 49 41 +177 185 201 +161 161 177 +41 65 97 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/meganium.pal b/graphics/object_events/palettes/followers/meganium.pal new file mode 100644 index 000000000..0e95eb9ff --- /dev/null +++ b/graphics/object_events/palettes/followers/meganium.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 41 +201 177 185 +137 97 1 +129 161 89 +177 81 121 +161 185 81 +233 233 249 +73 89 41 +105 41 81 +241 209 49 +1 1 1 +193 209 81 +209 97 145 +105 105 65 +185 177 201 diff --git a/graphics/object_events/palettes/followers/meowth.pal b/graphics/object_events/palettes/followers/meowth.pal new file mode 100644 index 000000000..1c7fd519a --- /dev/null +++ b/graphics/object_events/palettes/followers/meowth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 129 49 +81 57 25 +217 177 65 +121 105 81 +1 1 1 +169 121 81 +153 81 25 +169 33 81 +241 217 129 +249 201 33 +177 89 81 +217 145 25 +65 57 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metang.pal b/graphics/object_events/palettes/followers/metang.pal new file mode 100644 index 000000000..819ca143b --- /dev/null +++ b/graphics/object_events/palettes/followers/metang.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +193 193 193 +65 65 65 +105 145 209 +233 233 249 +121 33 33 +1 1 1 +150 150 161 +41 41 49 +65 97 121 +145 193 233 +153 217 241 +255 255 255 +33 65 81 +153 41 41 diff --git a/graphics/object_events/palettes/followers/mew.pal b/graphics/object_events/palettes/followers/mew.pal new file mode 100644 index 000000000..d99299b99 --- /dev/null +++ b/graphics/object_events/palettes/followers/mew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 129 129 +201 201 249 +97 97 97 +1 1 1 +233 233 249 +177 105 169 +89 49 81 +249 209 233 +217 161 185 +113 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mewtwo.pal b/graphics/object_events/palettes/followers/mewtwo.pal new file mode 100644 index 000000000..6f5afee0f --- /dev/null +++ b/graphics/object_events/palettes/followers/mewtwo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 121 153 +137 73 137 +217 201 217 +65 65 65 +153 153 153 +177 153 193 +65 49 81 +185 89 209 +97 97 97 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mightyena.pal b/graphics/object_events/palettes/followers/mightyena.pal new file mode 100644 index 000000000..38610816d --- /dev/null +++ b/graphics/object_events/palettes/followers/mightyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +1 1 1 +49 57 57 +145 153 161 +225 65 65 +177 185 193 +81 81 89 +129 33 33 +249 217 89 +129 121 137 +169 161 185 +65 57 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/milotic.pal b/graphics/object_events/palettes/followers/milotic.pal new file mode 100644 index 000000000..d012770f9 --- /dev/null +++ b/graphics/object_events/palettes/followers/milotic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 65 +33 57 89 +233 217 169 +241 105 113 +129 9 73 +81 129 169 +81 73 153 +185 49 81 +1 1 1 +113 161 209 +97 89 65 +249 241 217 +241 105 153 +57 89 129 +185 49 113 diff --git a/graphics/object_events/palettes/followers/miltank.pal b/graphics/object_events/palettes/followers/miltank.pal new file mode 100644 index 000000000..e64e3f03d --- /dev/null +++ b/graphics/object_events/palettes/followers/miltank.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 89 +81 65 33 +169 185 209 +41 65 81 +1 1 1 +121 73 81 +33 49 65 +233 233 249 +209 137 161 +73 97 121 +177 97 121 +241 169 193 +57 65 73 +89 41 57 +209 185 121 diff --git a/graphics/object_events/palettes/followers/misdreavus.pal b/graphics/object_events/palettes/followers/misdreavus.pal new file mode 100644 index 000000000..64f7bcb41 --- /dev/null +++ b/graphics/object_events/palettes/followers/misdreavus.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 121 1 +33 81 97 +201 73 105 +105 129 161 +33 49 89 +97 1 3 +65 105 137 +217 97 161 +233 233 249 +225 177 41 +1 1 1 +193 65 129 +81 113 153 +89 9 3 +0 0 0 diff --git a/graphics/object_events/palettes/followers/moltres.pal b/graphics/object_events/palettes/followers/moltres.pal new file mode 100644 index 000000000..524c5a1d4 --- /dev/null +++ b/graphics/object_events/palettes/followers/moltres.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 33 +177 177 209 +65 65 65 +249 185 33 +233 73 49 +1 1 1 +161 25 41 +249 137 121 +233 233 249 +65 49 49 +185 113 97 +249 201 121 +233 177 81 +201 129 57 +113 73 57 diff --git a/graphics/object_events/palettes/followers/mr_mime.pal b/graphics/object_events/palettes/followers/mr_mime.pal new file mode 100644 index 000000000..156deec2c --- /dev/null +++ b/graphics/object_events/palettes/followers/mr_mime.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 161 +33 65 89 +241 193 201 +145 65 81 +41 49 65 +1 1 1 +49 97 113 +233 233 249 +169 105 121 +201 201 233 +209 65 89 +105 105 105 +193 145 145 +73 49 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mudkip.pal b/graphics/object_events/palettes/followers/mudkip.pal new file mode 100644 index 000000000..ad2e4fc26 --- /dev/null +++ b/graphics/object_events/palettes/followers/mudkip.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +73 57 17 +73 137 177 +41 73 121 +233 233 249 +65 65 81 +89 177 217 +1 1 1 +113 105 145 +161 73 17 +177 177 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/murkrow.pal b/graphics/object_events/palettes/followers/murkrow.pal new file mode 100644 index 000000000..3f8fb5c91 --- /dev/null +++ b/graphics/object_events/palettes/followers/murkrow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +17 33 73 +121 153 193 +49 49 49 +49 65 113 +1 1 1 +233 233 249 +201 57 49 +145 33 25 +113 89 9 +177 193 217 +225 177 41 +73 89 137 +33 49 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/natu.pal b/graphics/object_events/palettes/followers/natu.pal new file mode 100644 index 000000000..e3133ef1c --- /dev/null +++ b/graphics/object_events/palettes/followers/natu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 73 +49 49 49 +113 129 153 +129 193 113 +65 81 105 +121 17 33 +1 1 1 +97 81 1 +185 201 225 +217 73 89 +241 209 97 +233 233 249 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/nidoking.pal b/graphics/object_events/palettes/followers/nidoking.pal new file mode 100644 index 000000000..0f1679f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +201 201 201 +217 153 241 +49 113 105 +185 129 185 +1 1 1 +65 49 81 +241 233 225 +153 105 161 +89 25 25 +161 161 161 +233 233 249 +169 169 153 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoqueen.pal b/graphics/object_events/palettes/followers/nidoqueen.pal new file mode 100644 index 000000000..9fb7ed22a --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoqueen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 137 177 +89 65 49 +201 201 201 +241 193 121 +73 65 121 +233 233 249 +97 41 25 +129 177 217 +193 161 81 +169 97 49 +169 201 241 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidoran_f.pal b/graphics/object_events/palettes/followers/nidoran_f.pal new file mode 100644 index 000000000..a268e55b6 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidoran_f.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 169 137 +49 89 73 +153 241 225 +161 81 105 +17 153 241 +1 1 1 +217 105 137 +161 33 17 +65 81 137 +233 233 249 +161 161 161 +241 121 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorina.pal b/graphics/object_events/palettes/followers/nidorina.pal new file mode 100644 index 000000000..f59ffda8b --- /dev/null +++ b/graphics/object_events/palettes/followers/nidorina.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 137 209 +113 193 225 +1 1 1 +49 89 105 +153 225 249 +169 169 193 +161 41 33 +81 161 177 +241 161 153 +233 233 249 +49 97 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nincada.pal b/graphics/object_events/palettes/followers/nincada.pal new file mode 100644 index 000000000..359d3480f --- /dev/null +++ b/graphics/object_events/palettes/followers/nincada.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 65 +33 73 25 +153 145 161 +97 89 113 +121 177 89 +49 41 65 +57 113 41 +233 233 249 +185 177 193 +97 89 65 +121 113 137 +1 1 1 +145 129 89 +65 57 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninetales.pal b/graphics/object_events/palettes/followers/ninetales.pal new file mode 100644 index 000000000..393b1073b --- /dev/null +++ b/graphics/object_events/palettes/followers/ninetales.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 1 +193 65 105 +1 1 1 +89 57 49 +233 233 249 +185 161 105 +145 113 73 +233 217 153 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ninjask.pal b/graphics/object_events/palettes/followers/ninjask.pal new file mode 100644 index 000000000..c1e058ac4 --- /dev/null +++ b/graphics/object_events/palettes/followers/ninjask.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 65 +201 201 201 +193 57 57 +233 193 49 +113 33 33 +233 233 249 +97 89 113 +1 1 1 +145 97 17 +57 49 73 +241 225 73 +217 217 225 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/noctowl.pal b/graphics/object_events/palettes/followers/noctowl.pal new file mode 100644 index 000000000..05f350df8 --- /dev/null +++ b/graphics/object_events/palettes/followers/noctowl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +97 65 17 +169 185 209 +201 185 121 +65 81 89 +225 169 169 +105 41 41 +209 161 113 +201 113 113 +233 233 249 +225 217 161 +97 73 57 +129 97 81 +1 1 1 +169 49 49 diff --git a/graphics/object_events/palettes/followers/nosepass.pal b/graphics/object_events/palettes/followers/nosepass.pal new file mode 100644 index 000000000..391eef08c --- /dev/null +++ b/graphics/object_events/palettes/followers/nosepass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +17 33 73 +209 49 73 +113 25 41 +65 73 81 +81 129 185 +41 49 57 +41 57 97 +113 177 233 +65 89 137 +161 33 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/numel.pal b/graphics/object_events/palettes/followers/numel.pal new file mode 100644 index 000000000..ba92ab59c --- /dev/null +++ b/graphics/object_events/palettes/followers/numel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 49 +217 225 185 +137 201 65 +49 81 25 +73 121 33 +177 185 137 +89 73 57 +1 1 1 +249 249 249 +217 185 73 +241 217 89 +121 97 73 +185 145 57 +65 73 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nuzleaf.pal b/graphics/object_events/palettes/followers/nuzleaf.pal new file mode 100644 index 000000000..ae9bbd957 --- /dev/null +++ b/graphics/object_events/palettes/followers/nuzleaf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 161 9 +89 73 9 +233 233 249 +1 1 1 +65 105 9 +33 57 9 +145 209 17 +97 65 33 +161 137 65 +161 113 49 +233 201 121 +73 49 25 +121 81 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/octillery.pal b/graphics/object_events/palettes/followers/octillery.pal new file mode 100644 index 000000000..78b4092d3 --- /dev/null +++ b/graphics/object_events/palettes/followers/octillery.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 25 +129 105 17 +153 161 177 +137 1 1 +1 1 1 +137 25 1 +201 89 73 +233 233 249 +249 217 89 +177 41 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/omanyte.pal b/graphics/object_events/palettes/followers/omanyte.pal new file mode 100644 index 000000000..121eb8cc6 --- /dev/null +++ b/graphics/object_events/palettes/followers/omanyte.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 161 +233 201 153 +81 65 57 +73 169 217 +145 113 73 +1 1 1 +121 201 241 +177 153 105 +233 233 249 +169 169 177 +105 105 105 +49 73 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/omastar.pal b/graphics/object_events/palettes/followers/omastar.pal new file mode 100644 index 000000000..1f042f749 --- /dev/null +++ b/graphics/object_events/palettes/followers/omastar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 65 +57 129 161 +81 65 57 +249 225 105 +233 225 185 +129 105 81 +177 153 105 +73 169 217 +121 201 241 +233 201 153 +1 1 1 +105 105 105 +49 65 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pelipper.pal b/graphics/object_events/palettes/followers/pelipper.pal new file mode 100644 index 000000000..a1e730a7e --- /dev/null +++ b/graphics/object_events/palettes/followers/pelipper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 41 +81 137 169 +105 81 17 +180 193 211 +201 177 57 +81 81 89 +105 161 217 +233 233 249 +145 145 145 +1 1 1 +65 105 145 +225 209 73 +137 105 25 +137 137 153 +49 73 113 diff --git a/graphics/object_events/palettes/followers/persian.pal b/graphics/object_events/palettes/followers/persian.pal new file mode 100644 index 000000000..16d9b1527 --- /dev/null +++ b/graphics/object_events/palettes/followers/persian.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 3 +1 1 1 +81 57 25 +145 129 73 +185 65 113 +233 233 249 +193 169 121 +241 217 129 +145 105 81 +161 129 105 +65 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/phanpy.pal b/graphics/object_events/palettes/followers/phanpy.pal new file mode 100644 index 000000000..fa6f2ba20 --- /dev/null +++ b/graphics/object_events/palettes/followers/phanpy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 57 105 +185 201 217 +137 1 1 +81 129 177 +153 33 33 +249 249 249 +137 177 209 +209 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pichu.pal b/graphics/object_events/palettes/followers/pichu.pal new file mode 100644 index 000000000..ec7bc91d9 --- /dev/null +++ b/graphics/object_events/palettes/followers/pichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +81 81 81 +225 121 161 +49 49 49 +1 1 1 +97 89 41 +193 169 65 +193 81 137 +233 233 249 +249 217 105 +65 65 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgeot.pal b/graphics/object_events/palettes/followers/pidgeot.pal new file mode 100644 index 000000000..22828bc3f --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 137 1 +241 105 225 +145 89 49 +1 1 1 +177 65 97 +193 153 65 +129 25 113 +209 113 41 +233 233 249 +241 209 113 +249 193 49 +81 57 25 +225 113 113 +201 73 33 +161 161 161 diff --git a/graphics/object_events/palettes/followers/pidgeotto.pal b/graphics/object_events/palettes/followers/pidgeotto.pal new file mode 100644 index 000000000..03725fd2b --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgeotto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 129 33 +153 153 153 +97 65 33 +233 233 249 +225 113 113 +241 209 113 +241 137 225 +201 73 33 +161 33 161 +193 153 65 +1 1 1 +177 81 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pidgey.pal b/graphics/object_events/palettes/followers/pidgey.pal new file mode 100644 index 000000000..f843a7e59 --- /dev/null +++ b/graphics/object_events/palettes/followers/pidgey.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 65 +217 145 177 +97 65 33 +241 209 113 +233 233 249 +201 113 33 +153 57 97 +1 1 1 +185 185 185 +185 89 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pikachu.pal b/graphics/object_events/palettes/followers/pikachu.pal new file mode 100644 index 000000000..987f609d0 --- /dev/null +++ b/graphics/object_events/palettes/followers/pikachu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 65 +113 81 57 +233 233 249 +49 49 49 +249 209 81 +153 113 57 +1 1 1 +201 89 57 +145 57 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/piloswine.pal b/graphics/object_events/palettes/followers/piloswine.pal new file mode 100644 index 000000000..a9806b257 --- /dev/null +++ b/graphics/object_events/palettes/followers/piloswine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +121 73 49 +169 185 209 +73 41 9 +1 1 1 +201 97 113 +49 49 65 +233 137 161 +233 233 249 +153 105 65 +145 41 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/pineco.pal b/graphics/object_events/palettes/followers/pineco.pal new file mode 100644 index 000000000..b01042837 --- /dev/null +++ b/graphics/object_events/palettes/followers/pineco.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 129 169 +17 81 129 +233 233 249 +1 1 1 +201 65 73 +97 113 153 +81 177 193 +17 89 129 +161 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/politoed.pal b/graphics/object_events/palettes/followers/politoed.pal new file mode 100644 index 000000000..113eb9ff2 --- /dev/null +++ b/graphics/object_events/palettes/followers/politoed.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 9 +249 129 177 +105 185 65 +49 81 17 +209 185 65 +189 203 220 +33 65 81 +1 1 1 +137 57 73 +201 89 137 +65 113 121 +89 153 57 +233 233 249 +153 217 113 +241 201 73 diff --git a/graphics/object_events/palettes/followers/poliwag.pal b/graphics/object_events/palettes/followers/poliwag.pal new file mode 100644 index 000000000..207b398d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwag.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +89 89 89 +233 233 233 +121 129 233 +25 41 57 +1 1 1 +65 89 153 +97 49 65 +177 177 209 +241 121 161 +177 65 105 +49 49 49 +233 233 249 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poochyena.pal b/graphics/object_events/palettes/followers/poochyena.pal new file mode 100644 index 000000000..53d5307c0 --- /dev/null +++ b/graphics/object_events/palettes/followers/poochyena.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 113 113 +49 57 57 +1 1 1 +193 57 57 +81 81 89 +185 185 185 +137 41 41 +145 145 145 +249 217 89 +65 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon.pal b/graphics/object_events/palettes/followers/porygon.pal new file mode 100644 index 000000000..a9a1804e9 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 137 153 +41 97 97 +81 217 217 +1 1 1 +177 49 105 +41 65 73 +249 153 209 +233 105 161 +233 233 249 +41 185 193 +97 25 49 +161 185 201 +209 65 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygon2.pal b/graphics/object_events/palettes/followers/porygon2.pal new file mode 100644 index 000000000..b70e67bb6 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygon2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 193 +17 73 121 +145 233 249 +1 1 1 +113 17 49 +225 81 137 +249 153 209 +169 41 81 +41 121 169 +185 201 217 +249 249 249 +89 185 217 +193 57 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/primeape.pal b/graphics/object_events/palettes/followers/primeape.pal new file mode 100644 index 000000000..38020a677 --- /dev/null +++ b/graphics/object_events/palettes/followers/primeape.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 49 +241 129 161 +65 57 49 +1 1 1 +105 105 105 +209 169 113 +233 233 249 +121 41 65 +177 177 209 +137 105 57 +233 217 137 +153 121 97 +177 105 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/quilava.pal b/graphics/object_events/palettes/followers/quilava.pal new file mode 100644 index 000000000..20abfb6b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/quilava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 81 +73 65 17 +49 137 153 +241 201 41 +161 17 25 +33 81 89 +209 177 89 +217 81 81 +233 233 249 +25 57 73 +41 113 121 +249 209 97 +185 49 49 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/qwilfish.pal b/graphics/object_events/palettes/followers/qwilfish.pal new file mode 100644 index 000000000..3606f4b28 --- /dev/null +++ b/graphics/object_events/palettes/followers/qwilfish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 65 +73 145 193 +57 57 25 +225 209 137 +17 49 105 +1 1 1 +233 233 249 +33 73 129 +249 129 161 +153 33 57 +49 105 153 +193 177 97 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raichu.pal b/graphics/object_events/palettes/followers/raichu.pal new file mode 100644 index 000000000..a131215ea --- /dev/null +++ b/graphics/object_events/palettes/followers/raichu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 33 +1 1 1 +113 73 41 +209 177 25 +249 233 209 +121 105 73 +249 225 9 +73 41 25 +249 145 1 +249 193 65 +233 233 249 +137 89 25 +193 177 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/raikou.pal b/graphics/object_events/palettes/followers/raikou.pal new file mode 100644 index 000000000..07b95381f --- /dev/null +++ b/graphics/object_events/palettes/followers/raikou.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 17 +65 33 97 +161 185 201 +33 57 65 +49 81 105 +185 49 49 +1 1 1 +233 233 249 +233 185 65 +161 89 185 +73 89 89 +113 57 145 +89 65 41 +57 97 97 +153 201 201 diff --git a/graphics/object_events/palettes/followers/raticate.pal b/graphics/object_events/palettes/followers/raticate.pal new file mode 100644 index 000000000..75f836e6c --- /dev/null +++ b/graphics/object_events/palettes/followers/raticate.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 145 57 +225 201 169 +89 65 25 +185 169 113 +233 233 249 +137 49 121 +201 201 201 +177 97 57 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rattata.pal b/graphics/object_events/palettes/followers/rattata.pal new file mode 100644 index 000000000..79c244a7b --- /dev/null +++ b/graphics/object_events/palettes/followers/rattata.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 81 +169 129 217 +57 49 89 +233 217 177 +185 169 129 +217 217 217 +225 57 33 +105 89 153 +233 233 249 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rayquaza.pal b/graphics/object_events/palettes/followers/rayquaza.pal new file mode 100644 index 000000000..93c0e8a41 --- /dev/null +++ b/graphics/object_events/palettes/followers/rayquaza.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 81 +49 105 49 +153 169 177 +153 25 25 +121 185 113 +49 49 49 +241 201 49 +201 217 241 +153 225 145 +193 161 41 +145 121 25 +201 41 41 +17 65 25 +89 17 9 +1 1 1 diff --git a/graphics/object_events/palettes/followers/regice.pal b/graphics/object_events/palettes/followers/regice.pal new file mode 100644 index 000000000..ea013d68a --- /dev/null +++ b/graphics/object_events/palettes/followers/regice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 169 89 +97 145 185 +177 225 249 +233 233 137 +41 73 97 +217 201 113 +121 169 209 +1 1 1 +65 105 145 +145 185 225 +201 241 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/regirock.pal b/graphics/object_events/palettes/followers/regirock.pal new file mode 100644 index 000000000..bbbdd8d21 --- /dev/null +++ b/graphics/object_events/palettes/followers/regirock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 113 89 +1 1 1 +137 65 41 +161 145 129 +57 41 33 +201 185 169 +113 89 81 +217 113 73 +233 217 201 +177 89 57 +177 161 145 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/registeel.pal b/graphics/object_events/palettes/followers/registeel.pal new file mode 100644 index 000000000..f01e24f60 --- /dev/null +++ b/graphics/object_events/palettes/followers/registeel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 121 +57 65 65 +185 201 209 +1 1 1 +193 57 57 +33 41 41 +129 145 153 +81 89 97 +209 105 105 +233 233 249 +153 169 177 +97 41 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/relicanth.pal b/graphics/object_events/palettes/followers/relicanth.pal new file mode 100644 index 000000000..9caac6b77 --- /dev/null +++ b/graphics/object_events/palettes/followers/relicanth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 97 +97 65 57 +1 1 1 +177 41 81 +57 41 33 +121 89 73 +169 153 129 +193 177 153 +73 73 97 +217 201 169 +49 49 65 +73 49 41 +105 97 81 +137 121 105 +0 0 0 diff --git a/graphics/object_events/palettes/followers/remoraid.pal b/graphics/object_events/palettes/followers/remoraid.pal new file mode 100644 index 000000000..379f4e4f6 --- /dev/null +++ b/graphics/object_events/palettes/followers/remoraid.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 121 161 +169 185 209 +105 25 81 +233 233 249 +73 73 73 +1 1 1 +193 209 233 +25 57 105 +113 153 201 +41 81 129 +145 193 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhydon.pal b/graphics/object_events/palettes/followers/rhydon.pal new file mode 100644 index 000000000..d8b41c6ea --- /dev/null +++ b/graphics/object_events/palettes/followers/rhydon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 49 +185 185 185 +65 57 25 +137 137 137 +217 217 217 +121 105 57 +137 33 57 +217 177 89 +1 1 1 +65 65 65 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/roselia.pal b/graphics/object_events/palettes/followers/roselia.pal new file mode 100644 index 000000000..4a0189e95 --- /dev/null +++ b/graphics/object_events/palettes/followers/roselia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 145 17 +33 57 17 +81 145 209 +25 49 89 +41 97 137 +233 185 65 +1 1 1 +89 17 49 +201 65 113 +169 129 57 +57 97 17 +145 41 81 +161 201 145 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sableye.pal b/graphics/object_events/palettes/followers/sableye.pal new file mode 100644 index 000000000..beadb4681 --- /dev/null +++ b/graphics/object_events/palettes/followers/sableye.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 153 121 +65 49 105 +233 233 249 +81 121 185 +233 89 113 +49 81 137 +121 161 225 +193 57 57 +1 1 1 +121 97 177 +89 65 145 +145 129 217 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/salamence.pal b/graphics/object_events/palettes/followers/salamence.pal new file mode 100644 index 000000000..76afcbc8f --- /dev/null +++ b/graphics/object_events/palettes/followers/salamence.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 145 169 +57 57 65 +81 185 201 +161 65 65 +1 1 1 +233 233 249 +193 81 97 +97 33 33 +129 129 145 +49 73 113 +161 161 177 +153 201 209 +217 89 121 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sandshrew.pal b/graphics/object_events/palettes/followers/sandshrew.pal new file mode 100644 index 000000000..ac1703261 --- /dev/null +++ b/graphics/object_events/palettes/followers/sandshrew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +129 177 169 +185 137 41 +161 161 161 +225 217 169 +97 65 33 +185 169 137 +1 1 1 +33 97 121 +217 169 57 +233 233 249 +121 105 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sandslash.pal b/graphics/object_events/palettes/followers/sandslash.pal new file mode 100644 index 000000000..d11a2ce3b --- /dev/null +++ b/graphics/object_events/palettes/followers/sandslash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 131 3 +153 153 153 +97 65 33 +233 225 153 +89 89 89 +177 177 177 +201 137 49 +1 1 1 +233 233 249 +137 97 41 +49 33 17 +41 105 129 +225 169 65 +193 161 137 +161 105 33 diff --git a/graphics/object_events/palettes/followers/sceptile.pal b/graphics/object_events/palettes/followers/sceptile.pal new file mode 100644 index 000000000..806146f2d --- /dev/null +++ b/graphics/object_events/palettes/followers/sceptile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 145 49 +41 81 17 +161 209 105 +105 25 25 +1 1 1 +201 161 57 +121 105 25 +65 49 9 +129 177 73 +249 217 89 +153 41 41 +65 89 25 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/scizor.pal b/graphics/object_events/palettes/followers/scizor.pal new file mode 100644 index 000000000..ee3678e0c --- /dev/null +++ b/graphics/object_events/palettes/followers/scizor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 137 1 +137 89 1 +129 25 17 +1 1 1 +185 201 217 +41 49 65 +81 89 113 +209 57 57 +233 233 249 +145 153 177 +89 17 9 +105 113 137 +161 33 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/scyther.pal b/graphics/object_events/palettes/followers/scyther.pal new file mode 100644 index 000000000..b279ae4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/scyther.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 161 65 +177 169 201 +1 1 1 +41 65 33 +129 129 129 +233 233 249 +153 209 105 +177 153 41 +241 217 73 +81 65 17 +177 177 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seadra.pal b/graphics/object_events/palettes/followers/seadra.pal new file mode 100644 index 000000000..cd2bb36c4 --- /dev/null +++ b/graphics/object_events/palettes/followers/seadra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 161 97 +89 145 217 +1 1 1 +233 233 249 +65 65 73 +169 185 209 +73 137 169 +249 209 161 +49 81 113 +121 185 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seaking.pal b/graphics/object_events/palettes/followers/seaking.pal new file mode 100644 index 000000000..7cc446f83 --- /dev/null +++ b/graphics/object_events/palettes/followers/seaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 161 81 +169 57 49 +177 177 177 +249 233 161 +249 81 41 +49 49 49 +241 129 161 +113 25 17 +233 233 249 +1 1 1 +97 97 97 +193 65 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sealeo.pal b/graphics/object_events/palettes/followers/sealeo.pal new file mode 100644 index 000000000..4efd9fd5a --- /dev/null +++ b/graphics/object_events/palettes/followers/sealeo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 153 +217 209 153 +81 81 57 +73 153 201 +49 65 105 +137 193 241 +185 169 113 +49 113 145 +209 217 233 +177 185 209 +121 113 81 +233 233 249 +81 81 105 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seedot.pal b/graphics/object_events/palettes/followers/seedot.pal new file mode 100644 index 000000000..7aff4c0af --- /dev/null +++ b/graphics/object_events/palettes/followers/seedot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 113 49 +73 49 25 +177 161 65 +65 57 57 +129 113 113 +89 73 9 +1 1 1 +97 89 81 +33 33 25 +233 201 121 +121 81 41 +65 65 73 +137 121 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seel.pal b/graphics/object_events/palettes/followers/seel.pal new file mode 100644 index 000000000..dad2284d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/seel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 9 +225 129 145 +113 89 33 +249 241 185 +73 81 121 +49 49 81 +1 1 1 +225 225 241 +161 169 209 +193 65 89 +81 33 33 +233 201 97 +97 97 97 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sentret.pal b/graphics/object_events/palettes/followers/sentret.pal new file mode 100644 index 000000000..7e9a52ae0 --- /dev/null +++ b/graphics/object_events/palettes/followers/sentret.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 89 +81 65 57 +241 225 193 +73 41 9 +1 1 1 +161 65 113 +129 97 73 +217 193 129 +49 33 25 +233 233 249 +137 33 49 +209 169 129 +89 73 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/seviper.pal b/graphics/object_events/palettes/followers/seviper.pal new file mode 100644 index 000000000..276c88dc2 --- /dev/null +++ b/graphics/object_events/palettes/followers/seviper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 113 25 +81 89 105 +33 41 57 +113 121 137 +217 169 73 +161 49 57 +249 217 89 +121 33 33 +169 113 241 +145 89 185 +1 1 1 +209 73 81 +57 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sharpedo.pal b/graphics/object_events/palettes/followers/sharpedo.pal new file mode 100644 index 000000000..5381c6030 --- /dev/null +++ b/graphics/object_events/palettes/followers/sharpedo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 169 49 +97 81 17 +89 145 193 +33 65 105 +1 1 1 +193 89 113 +57 65 73 +233 233 249 +129 137 145 +65 113 161 +113 25 49 +249 209 81 +161 169 177 +33 89 137 +73 81 89 diff --git a/graphics/object_events/palettes/followers/shedinja.pal b/graphics/object_events/palettes/followers/shedinja.pal new file mode 100644 index 000000000..05d9d168e --- /dev/null +++ b/graphics/object_events/palettes/followers/shedinja.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 65 +105 81 17 +153 145 161 +241 217 121 +97 89 113 +65 57 33 +201 177 105 +233 233 249 +121 105 65 +185 177 193 +121 113 137 +57 49 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shelgon.pal b/graphics/object_events/palettes/followers/shelgon.pal new file mode 100644 index 000000000..bea7288b0 --- /dev/null +++ b/graphics/object_events/palettes/followers/shelgon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 65 +161 161 185 +65 65 81 +201 201 217 +209 177 97 +113 113 137 +129 41 41 +185 185 201 +233 233 249 +89 89 105 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellder.pal b/graphics/object_events/palettes/followers/shellder.pal new file mode 100644 index 000000000..b48549223 --- /dev/null +++ b/graphics/object_events/palettes/followers/shellder.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +73 73 161 +233 233 249 +129 129 201 +41 41 49 +233 153 217 +57 57 73 +1 1 1 +193 89 177 +161 161 241 +73 33 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shiftry.pal b/graphics/object_events/palettes/followers/shiftry.pal new file mode 100644 index 000000000..cea3ce83c --- /dev/null +++ b/graphics/object_events/palettes/followers/shiftry.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 137 9 +129 137 145 +97 65 33 +1 1 1 +137 97 41 +65 41 9 +145 209 17 +233 233 249 +161 177 185 +161 137 65 +81 81 89 +233 201 121 +33 57 9 +161 113 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shroomish.pal b/graphics/object_events/palettes/followers/shroomish.pal new file mode 100644 index 000000000..203fd57ea --- /dev/null +++ b/graphics/object_events/palettes/followers/shroomish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 105 73 +121 177 89 +225 201 145 +73 65 49 +81 137 65 +193 161 129 +49 89 41 +145 129 89 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shuckle.pal b/graphics/object_events/palettes/followers/shuckle.pal new file mode 100644 index 000000000..ecf1abe78 --- /dev/null +++ b/graphics/object_events/palettes/followers/shuckle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 137 49 +73 57 57 +1 1 1 +89 25 17 +241 217 81 +209 57 57 +233 209 201 +201 177 65 +113 97 33 +161 33 33 +201 169 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skarmory.pal b/graphics/object_events/palettes/followers/skarmory.pal new file mode 100644 index 000000000..5d54ff7e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/skarmory.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 169 17 +33 49 105 +121 145 193 +161 25 49 +1 1 1 +201 57 89 +209 233 249 +73 1 1 +65 97 153 +249 209 97 +153 177 217 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skiploom.pal b/graphics/object_events/palettes/followers/skiploom.pal new file mode 100644 index 000000000..6d538d4e6 --- /dev/null +++ b/graphics/object_events/palettes/followers/skiploom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 33 +185 201 225 +233 193 25 +129 193 81 +185 49 177 +249 217 81 +121 81 9 +169 121 9 +41 113 9 +233 233 249 +1 1 1 +185 217 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slaking.pal b/graphics/object_events/palettes/followers/slaking.pal new file mode 100644 index 000000000..40eca9702 --- /dev/null +++ b/graphics/object_events/palettes/followers/slaking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 97 +97 73 73 +217 201 161 +1 1 1 +209 113 137 +129 105 89 +73 57 41 +145 137 153 +193 193 209 +233 233 249 +169 81 105 +121 57 73 +201 177 153 +169 129 105 +81 73 89 diff --git a/graphics/object_events/palettes/followers/slakoth.pal b/graphics/object_events/palettes/followers/slakoth.pal new file mode 100644 index 000000000..12c49947a --- /dev/null +++ b/graphics/object_events/palettes/followers/slakoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 89 +81 65 65 +185 177 193 +169 57 57 +1 1 1 +129 89 81 +145 137 153 +89 81 97 +233 233 249 +121 33 33 +209 89 89 +225 201 145 +185 153 113 +113 65 57 +113 97 89 diff --git a/graphics/object_events/palettes/followers/slowbro.pal b/graphics/object_events/palettes/followers/slowbro.pal new file mode 100644 index 000000000..f6c55d4cd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowbro.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 193 89 +73 81 89 +241 169 177 +145 121 49 +241 241 169 +177 97 105 +153 153 153 +233 233 249 +113 49 57 +193 65 65 +193 201 209 +217 113 97 +1 1 1 +209 121 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slowking.pal b/graphics/object_events/palettes/followers/slowking.pal new file mode 100644 index 000000000..30d658e9b --- /dev/null +++ b/graphics/object_events/palettes/followers/slowking.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 41 +153 161 169 +113 49 57 +1 1 1 +73 81 89 +193 201 209 +209 121 129 +153 65 73 +209 17 17 +121 89 17 +233 233 249 +233 201 97 +241 169 177 +201 161 65 +201 81 97 diff --git a/graphics/object_events/palettes/followers/slowpoke.pal b/graphics/object_events/palettes/followers/slowpoke.pal new file mode 100644 index 000000000..324117fbd --- /dev/null +++ b/graphics/object_events/palettes/followers/slowpoke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 121 129 +241 217 145 +209 169 97 +105 81 17 +233 233 249 +161 169 177 +193 193 193 +97 41 49 +153 89 97 +241 153 161 +1 1 1 +249 193 177 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/smeargle.pal b/graphics/object_events/palettes/followers/smeargle.pal new file mode 100644 index 000000000..380390f8e --- /dev/null +++ b/graphics/object_events/palettes/followers/smeargle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 177 65 +177 185 193 +41 113 41 +161 153 105 +217 217 185 +97 89 73 +1 1 1 +65 57 49 +233 233 249 +113 97 33 +185 185 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/smoochum.pal b/graphics/object_events/palettes/followers/smoochum.pal new file mode 100644 index 000000000..79f273b2d --- /dev/null +++ b/graphics/object_events/palettes/followers/smoochum.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 137 25 +249 153 201 +113 33 97 +1 1 1 +177 65 153 +129 81 1 +249 193 49 +233 233 249 +217 65 105 +177 185 193 +153 97 41 +225 161 105 +153 49 81 +201 129 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sneasel.pal b/graphics/object_events/palettes/followers/sneasel.pal new file mode 100644 index 000000000..d3e0617ce --- /dev/null +++ b/graphics/object_events/palettes/followers/sneasel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 137 17 +57 73 81 +81 153 177 +89 97 105 +121 1 1 +249 249 249 +1 1 1 +25 81 121 +201 49 73 +169 185 201 +241 177 65 +57 113 137 +129 145 169 +153 9 3 +25 89 113 diff --git a/graphics/object_events/palettes/followers/snorlax.pal b/graphics/object_events/palettes/followers/snorlax.pal new file mode 100644 index 000000000..204900db7 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorlax.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 81 +161 161 185 +65 65 65 +1 1 1 +249 225 169 +137 105 73 +41 49 49 +81 129 145 +233 233 249 +65 105 121 +193 193 201 +217 193 121 +41 73 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/snorunt.pal b/graphics/object_events/palettes/followers/snorunt.pal new file mode 100644 index 000000000..283587f32 --- /dev/null +++ b/graphics/object_events/palettes/followers/snorunt.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 57 +89 65 57 +169 73 65 +41 129 193 +97 97 121 +33 33 41 +249 217 89 +145 105 57 +233 233 249 +169 169 185 +1 1 1 +241 105 89 +49 49 65 +65 65 81 +193 81 65 diff --git a/graphics/object_events/palettes/followers/snubbull.pal b/graphics/object_events/palettes/followers/snubbull.pal new file mode 100644 index 000000000..36e6c87a4 --- /dev/null +++ b/graphics/object_events/palettes/followers/snubbull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 153 +49 65 81 +209 193 145 +1 1 1 +185 73 113 +121 33 65 +177 193 209 +73 153 193 +241 145 185 +233 233 249 +209 105 145 +33 81 113 +161 49 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spearow.pal b/graphics/object_events/palettes/followers/spearow.pal new file mode 100644 index 000000000..2c7f13b8a --- /dev/null +++ b/graphics/object_events/palettes/followers/spearow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 129 33 +81 57 17 +249 137 145 +233 121 89 +65 65 65 +201 57 25 +185 169 113 +145 41 17 +233 233 249 +161 81 105 +129 89 33 +137 121 65 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spheal.pal b/graphics/object_events/palettes/followers/spheal.pal new file mode 100644 index 000000000..637a19fa1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spheal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 113 +217 201 161 +81 81 57 +105 137 185 +49 65 105 +1 1 1 +209 217 233 +137 169 225 +81 97 145 +121 113 81 +177 185 209 +233 233 249 +81 81 105 +193 177 137 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinarak.pal b/graphics/object_events/palettes/followers/spinarak.pal new file mode 100644 index 000000000..2f09009e2 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinarak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 33 +113 137 153 +81 57 1 +121 185 33 +233 233 249 +65 97 89 +169 185 209 +161 217 97 +209 65 105 +1 1 1 +113 17 25 +193 137 1 +225 193 9 +33 81 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spinda.pal b/graphics/object_events/palettes/followers/spinda.pal new file mode 100644 index 000000000..97d7f9ff1 --- /dev/null +++ b/graphics/object_events/palettes/followers/spinda.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 113 +81 73 57 +145 65 65 +1 1 1 +129 105 89 +209 105 105 +217 193 169 +121 49 49 +177 81 81 +193 169 145 +57 65 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spoink.pal b/graphics/object_events/palettes/followers/spoink.pal new file mode 100644 index 000000000..652308e48 --- /dev/null +++ b/graphics/object_events/palettes/followers/spoink.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 137 +145 49 97 +49 57 65 +97 105 105 +249 249 249 +105 25 65 +1 1 1 +185 73 129 +225 97 161 +73 81 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/squirtle.pal b/graphics/object_events/palettes/followers/squirtle.pal new file mode 100644 index 000000000..8d090127d --- /dev/null +++ b/graphics/object_events/palettes/followers/squirtle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 25 +57 137 185 +217 169 49 +233 233 249 +33 73 97 +185 185 185 +1 1 1 +161 9 3 +89 185 241 +241 209 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/stantler.pal b/graphics/object_events/palettes/followers/stantler.pal new file mode 100644 index 000000000..ca315697f --- /dev/null +++ b/graphics/object_events/palettes/followers/stantler.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 25 +89 73 9 +169 185 209 +201 145 89 +73 65 57 +225 209 81 +97 49 9 +1 1 1 +233 233 249 +185 97 49 +137 33 49 +113 89 81 +201 177 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sudowoodo.pal b/graphics/object_events/palettes/followers/sudowoodo.pal new file mode 100644 index 000000000..a16242e5e --- /dev/null +++ b/graphics/object_events/palettes/followers/sudowoodo.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 153 65 +1 1 1 +201 169 1 +25 81 17 +161 129 89 +121 209 121 +129 105 65 +185 153 89 +233 233 249 +225 121 121 +89 65 17 +225 193 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/suicune.pal b/graphics/object_events/palettes/followers/suicune.pal new file mode 100644 index 000000000..2ec7c2b8c --- /dev/null +++ b/graphics/object_events/palettes/followers/suicune.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 153 137 +65 33 97 +97 201 193 +81 81 97 +97 153 193 +185 49 49 +129 153 153 +185 201 201 +25 57 89 +161 97 177 +233 233 249 +113 57 137 +49 97 137 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunflora.pal b/graphics/object_events/palettes/followers/sunflora.pal new file mode 100644 index 000000000..34210aafa --- /dev/null +++ b/graphics/object_events/palettes/followers/sunflora.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 137 49 +225 185 17 +89 185 81 +1 1 1 +41 81 17 +201 129 33 +241 225 113 +233 193 33 +121 209 113 +225 161 41 +129 73 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/sunkern.pal b/graphics/object_events/palettes/followers/sunkern.pal new file mode 100644 index 000000000..8184c4986 --- /dev/null +++ b/graphics/object_events/palettes/followers/sunkern.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 9 +233 233 249 +89 65 1 +113 193 81 +73 97 113 +1 1 1 +153 105 9 +241 217 113 +33 49 57 +105 161 57 +217 185 49 +41 81 17 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/surskit.pal b/graphics/object_events/palettes/followers/surskit.pal new file mode 100644 index 000000000..40ff84b78 --- /dev/null +++ b/graphics/object_events/palettes/followers/surskit.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 33 +105 81 17 +97 145 185 +185 169 49 +41 73 97 +145 41 41 +233 233 249 +1 1 1 +33 41 57 +193 57 57 +225 209 73 +73 105 137 +121 177 225 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swalot.pal b/graphics/object_events/palettes/followers/swalot.pal new file mode 100644 index 000000000..ed14e5df2 --- /dev/null +++ b/graphics/object_events/palettes/followers/swalot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 57 +137 105 161 +65 41 97 +233 185 65 +57 73 81 +161 129 193 +97 73 121 +161 25 25 +1 1 1 +217 105 105 +185 145 217 +121 89 145 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swampert.pal b/graphics/object_events/palettes/followers/swampert.pal new file mode 100644 index 000000000..351f6cc11 --- /dev/null +++ b/graphics/object_events/palettes/followers/swampert.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +89 121 161 +161 73 17 +129 185 241 +49 57 81 +1 1 1 +97 161 209 +49 73 113 +89 105 129 +249 193 129 +201 201 225 +161 161 193 +193 89 17 +49 65 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swellow.pal b/graphics/object_events/palettes/followers/swellow.pal new file mode 100644 index 000000000..4a366df34 --- /dev/null +++ b/graphics/object_events/palettes/followers/swellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +89 81 17 +105 137 193 +49 73 113 +209 209 233 +17 49 73 +225 209 73 +65 65 65 +217 81 89 +185 185 193 +1 1 1 +73 105 153 +177 65 81 +105 33 65 +233 233 249 diff --git a/graphics/object_events/palettes/followers/swinub.pal b/graphics/object_events/palettes/followers/swinub.pal new file mode 100644 index 000000000..1ac67e68b --- /dev/null +++ b/graphics/object_events/palettes/followers/swinub.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 97 57 +185 153 105 +113 89 81 +201 97 113 +145 41 65 +73 41 9 +169 129 73 +1 1 1 +233 137 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/taillow.pal b/graphics/object_events/palettes/followers/taillow.pal new file mode 100644 index 000000000..c01cf137c --- /dev/null +++ b/graphics/object_events/palettes/followers/taillow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +105 81 17 +105 137 193 +49 73 113 +225 209 73 +193 73 89 +17 49 73 +233 233 249 +121 121 129 +1 1 1 +145 49 81 +73 105 153 +169 169 177 +65 65 65 +241 105 105 diff --git a/graphics/object_events/palettes/followers/tangela.pal b/graphics/object_events/palettes/followers/tangela.pal new file mode 100644 index 000000000..eec939132 --- /dev/null +++ b/graphics/object_events/palettes/followers/tangela.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 145 +233 233 249 +65 65 65 +121 145 177 +161 49 41 +1 1 1 +25 33 33 +89 113 113 +169 185 209 +105 161 169 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tauros.pal b/graphics/object_events/palettes/followers/tauros.pal new file mode 100644 index 000000000..9d198490e --- /dev/null +++ b/graphics/object_events/palettes/followers/tauros.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 73 +113 129 169 +73 65 65 +201 153 65 +193 193 209 +105 97 89 +1 1 1 +41 33 17 +145 145 145 +233 233 249 +81 81 105 +225 169 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/teddiursa.pal b/graphics/object_events/palettes/followers/teddiursa.pal new file mode 100644 index 000000000..10b1388ec --- /dev/null +++ b/graphics/object_events/palettes/followers/teddiursa.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 121 33 +177 185 193 +225 201 97 +89 73 65 +241 225 193 +1 1 1 +89 49 17 +233 161 57 +153 97 33 +233 233 249 +201 209 225 +217 201 137 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tentacool.pal b/graphics/object_events/palettes/followers/tentacool.pal new file mode 100644 index 000000000..ebde6755c --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacool.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +73 145 161 +65 65 65 +121 193 241 +145 25 89 +177 121 73 +249 161 161 +41 105 121 +233 233 249 +65 49 41 +209 169 97 +1 1 1 +209 209 209 +225 49 97 +57 73 97 diff --git a/graphics/object_events/palettes/followers/tentacruel.pal b/graphics/object_events/palettes/followers/tentacruel.pal new file mode 100644 index 000000000..5eb5f673e --- /dev/null +++ b/graphics/object_events/palettes/followers/tentacruel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 3 +1 1 1 +65 65 65 +233 233 249 +121 193 241 +169 169 169 +145 25 89 +153 121 89 +41 105 121 +185 161 121 +81 153 169 +225 49 97 +249 161 161 +57 73 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/togepi.pal b/graphics/object_events/palettes/followers/togepi.pal new file mode 100644 index 000000000..52fd5d0ed --- /dev/null +++ b/graphics/object_events/palettes/followers/togepi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 73 +97 169 225 +233 217 89 +49 57 41 +193 177 73 +217 209 209 +217 81 89 +113 97 49 +233 121 145 +153 153 145 +249 233 145 +233 233 249 +121 201 241 +81 81 81 +1 1 1 diff --git a/graphics/object_events/palettes/followers/torkoal.pal b/graphics/object_events/palettes/followers/torkoal.pal new file mode 100644 index 000000000..fab0f050a --- /dev/null +++ b/graphics/object_events/palettes/followers/torkoal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 113 65 +145 97 57 +137 33 49 +121 129 129 +97 41 41 +1 1 1 +209 137 81 +89 97 105 +209 57 81 +185 185 185 +49 57 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/totodile.pal b/graphics/object_events/palettes/followers/totodile.pal new file mode 100644 index 000000000..1a7c37644 --- /dev/null +++ b/graphics/object_events/palettes/followers/totodile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 81 +65 73 81 +81 129 185 +113 25 41 +41 57 97 +169 185 209 +209 49 73 +1 1 1 +233 233 249 +113 177 233 +65 97 137 +121 105 41 +161 33 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/trapinch.pal b/graphics/object_events/palettes/followers/trapinch.pal new file mode 100644 index 000000000..410b897fd --- /dev/null +++ b/graphics/object_events/palettes/followers/trapinch.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 113 +169 89 73 +201 121 81 +41 41 41 +249 249 249 +1 1 1 +105 105 105 +121 121 121 +113 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/treecko.pal b/graphics/object_events/palettes/followers/treecko.pal new file mode 100644 index 000000000..e5b4b2e4c --- /dev/null +++ b/graphics/object_events/palettes/followers/treecko.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 169 33 +49 73 25 +249 217 89 +105 25 25 +57 137 105 +65 105 41 +185 49 49 +49 89 57 +1 1 1 +201 217 121 +145 33 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tropius.pal b/graphics/object_events/palettes/followers/tropius.pal new file mode 100644 index 000000000..af8de33ba --- /dev/null +++ b/graphics/object_events/palettes/followers/tropius.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 9 +161 161 161 +209 169 25 +25 57 33 +129 185 97 +65 145 73 +41 105 57 +65 49 1 +233 233 249 +249 209 33 +161 121 81 +121 97 73 +1 1 1 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/typhlosion.pal b/graphics/object_events/palettes/followers/typhlosion.pal new file mode 100644 index 000000000..eeacd5c1f --- /dev/null +++ b/graphics/object_events/palettes/followers/typhlosion.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 81 +73 65 17 +57 137 169 +241 201 41 +25 57 73 +161 17 25 +209 185 97 +217 81 81 +233 233 249 +57 97 121 +1 1 1 +105 89 57 +185 49 49 +249 209 97 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyranitar.pal b/graphics/object_events/palettes/followers/tyranitar.pal new file mode 100644 index 000000000..4dadfce81 --- /dev/null +++ b/graphics/object_events/palettes/followers/tyranitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 121 81 +137 185 105 +57 49 105 +121 137 145 +33 41 41 +161 185 201 +113 161 89 +41 73 49 +81 105 169 +233 233 249 +177 217 121 +1 1 1 +97 137 193 +49 65 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tyrogue.pal b/graphics/object_events/palettes/followers/tyrogue.pal new file mode 100644 index 000000000..e0f3829ec --- /dev/null +++ b/graphics/object_events/palettes/followers/tyrogue.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 153 +193 57 57 +177 185 193 +89 49 105 +169 121 177 +73 89 105 +97 25 25 +1 1 1 +233 233 249 +137 97 9 +201 161 217 +145 41 41 +113 81 129 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/umbreon.pal b/graphics/object_events/palettes/followers/umbreon.pal new file mode 100644 index 000000000..83c9ac129 --- /dev/null +++ b/graphics/object_events/palettes/followers/umbreon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 17 +129 89 9 +209 25 25 +233 233 249 +225 177 41 +25 41 57 +65 73 81 +1 1 1 +249 217 89 +105 113 121 +137 57 1 +41 57 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ursaring.pal b/graphics/object_events/palettes/followers/ursaring.pal new file mode 100644 index 000000000..36e1ff602 --- /dev/null +++ b/graphics/object_events/palettes/followers/ursaring.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 137 57 +161 169 185 +121 73 49 +1 1 1 +145 105 57 +209 161 97 +233 233 249 +73 41 9 +217 201 137 +193 193 201 +177 129 89 +89 73 65 +153 105 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vaporeon.pal b/graphics/object_events/palettes/followers/vaporeon.pal new file mode 100644 index 000000000..e28edebe1 --- /dev/null +++ b/graphics/object_events/palettes/followers/vaporeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +9 131 5 +33 145 137 +129 201 233 +81 73 57 +89 177 225 +1 1 1 +177 153 57 +209 209 209 +33 57 105 +17 113 121 +225 201 105 +233 233 249 +73 137 177 +161 161 161 +49 105 137 diff --git a/graphics/object_events/palettes/followers/venomoth.pal b/graphics/object_events/palettes/followers/venomoth.pal new file mode 100644 index 000000000..558651bc1 --- /dev/null +++ b/graphics/object_events/palettes/followers/venomoth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 65 +209 153 249 +105 97 137 +233 233 249 +73 65 89 +1 1 1 +193 193 193 +161 105 241 +113 113 113 +233 185 249 +217 185 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/venonat.pal b/graphics/object_events/palettes/followers/venonat.pal new file mode 100644 index 000000000..b1281ab1c --- /dev/null +++ b/graphics/object_events/palettes/followers/venonat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 145 81 +73 57 129 +201 201 201 +129 97 33 +1 1 1 +137 1 1 +137 137 137 +113 73 209 +169 49 81 +49 33 65 +233 233 249 +161 105 241 +233 129 153 +217 185 129 +249 201 201 diff --git a/graphics/object_events/palettes/followers/venusaur.pal b/graphics/object_events/palettes/followers/venusaur.pal new file mode 100644 index 000000000..46f21dc4a --- /dev/null +++ b/graphics/object_events/palettes/followers/venusaur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 129 41 +241 121 161 +137 225 33 +145 65 33 +65 153 97 +105 217 193 +233 193 113 +201 73 129 +233 233 249 +105 33 41 +97 169 17 +161 161 161 +1 1 1 +65 97 49 +249 225 9 diff --git a/graphics/object_events/palettes/followers/vibrava.pal b/graphics/object_events/palettes/followers/vibrava.pal new file mode 100644 index 000000000..4402c3530 --- /dev/null +++ b/graphics/object_events/palettes/followers/vibrava.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 137 97 +217 225 185 +41 105 25 +185 193 209 +121 185 113 +73 73 73 +1 1 1 +57 57 57 +249 249 249 +105 105 105 +81 89 57 +97 161 97 +161 177 137 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/victreebel.pal b/graphics/object_events/palettes/followers/victreebel.pal new file mode 100644 index 000000000..90de7ab6a --- /dev/null +++ b/graphics/object_events/palettes/followers/victreebel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +1 1 1 +169 65 113 +121 9 5 +185 137 57 +193 193 193 +233 233 249 +33 33 33 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/vigoroth.pal b/graphics/object_events/palettes/followers/vigoroth.pal new file mode 100644 index 000000000..446f1e8d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/vigoroth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 129 121 +65 57 73 +97 89 105 +217 209 217 +97 49 49 +1 1 1 +169 57 57 +209 89 89 +105 25 25 +177 169 177 +233 233 249 +121 81 73 +145 105 97 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/volbeat.pal b/graphics/object_events/palettes/followers/volbeat.pal new file mode 100644 index 000000000..f78520d3b --- /dev/null +++ b/graphics/object_events/palettes/followers/volbeat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 57 +65 65 73 +177 177 193 +225 185 65 +209 73 81 +121 33 49 +105 105 113 +1 1 1 +233 233 249 +137 137 153 +41 41 49 +225 113 121 +177 57 65 +225 209 89 +97 81 49 diff --git a/graphics/object_events/palettes/followers/vulpix.pal b/graphics/object_events/palettes/followers/vulpix.pal new file mode 100644 index 000000000..9c57ccda9 --- /dev/null +++ b/graphics/object_events/palettes/followers/vulpix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 137 73 +169 81 25 +217 113 49 +233 233 249 +121 73 57 +89 57 49 +1 1 1 +185 89 57 +241 201 153 +89 65 73 +137 57 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wailmer.pal b/graphics/object_events/palettes/followers/wailmer.pal new file mode 100644 index 000000000..4104dc7f0 --- /dev/null +++ b/graphics/object_events/palettes/followers/wailmer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 153 97 +65 73 81 +193 185 121 +65 129 193 +41 97 137 +33 65 97 +185 201 217 +105 161 225 +137 121 73 +81 65 33 +217 233 249 +137 153 169 +49 105 161 +1 1 1 +97 113 121 diff --git a/graphics/object_events/palettes/followers/wailord.pal b/graphics/object_events/palettes/followers/wailord.pal new file mode 100644 index 000000000..8168289fe --- /dev/null +++ b/graphics/object_events/palettes/followers/wailord.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 201 217 +33 65 105 +65 129 193 +57 73 81 +137 161 177 +217 233 249 +41 105 153 +105 161 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/walrein.pal b/graphics/object_events/palettes/followers/walrein.pal new file mode 100644 index 000000000..1543eafcf --- /dev/null +++ b/graphics/object_events/palettes/followers/walrein.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 25 +129 137 153 +177 185 209 +81 81 57 +1 1 1 +105 161 217 +209 217 233 +49 65 105 +249 217 89 +137 185 249 +81 129 177 +81 81 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wartortle.pal b/graphics/object_events/palettes/followers/wartortle.pal new file mode 100644 index 000000000..d4d157193 --- /dev/null +++ b/graphics/object_events/palettes/followers/wartortle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 25 +161 161 161 +65 81 153 +57 57 73 +233 233 249 +1 1 1 +65 121 217 +161 89 25 +161 9 3 +241 209 113 +113 153 225 +65 65 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weepinbell.pal b/graphics/object_events/palettes/followers/weepinbell.pal new file mode 100644 index 000000000..c6ea065e7 --- /dev/null +++ b/graphics/object_events/palettes/followers/weepinbell.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +241 121 161 +81 65 49 +137 217 81 +89 89 89 +1 1 1 +185 137 57 +185 185 185 +233 233 249 +121 9 5 +169 65 113 +65 89 41 +241 225 73 +185 161 49 +129 97 41 diff --git a/graphics/object_events/palettes/followers/whiscash.pal b/graphics/object_events/palettes/followers/whiscash.pal new file mode 100644 index 000000000..70c9415af --- /dev/null +++ b/graphics/object_events/palettes/followers/whiscash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +65 129 185 +25 33 105 +233 233 249 +177 161 73 +97 161 217 +33 97 161 +97 81 33 +1 1 1 +49 65 137 +209 193 97 +177 177 193 +105 129 193 +73 97 161 +9 5 9 diff --git a/graphics/object_events/palettes/followers/whismur.pal b/graphics/object_events/palettes/followers/whismur.pal new file mode 100644 index 000000000..f353acb32 --- /dev/null +++ b/graphics/object_events/palettes/followers/whismur.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 137 41 +209 121 169 +81 57 9 +225 209 73 +1 1 1 +65 73 89 +97 41 73 +193 169 49 +233 161 201 +161 89 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wingull.pal b/graphics/object_events/palettes/followers/wingull.pal new file mode 100644 index 000000000..676a03740 --- /dev/null +++ b/graphics/object_events/palettes/followers/wingull.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 41 +137 137 153 +161 201 225 +105 81 17 +177 185 201 +81 81 89 +225 209 73 +105 161 217 +1 1 1 +65 105 145 +233 233 249 +81 145 185 +49 73 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wurmple.pal b/graphics/object_events/palettes/followers/wurmple.pal new file mode 100644 index 000000000..a6f96b9dc --- /dev/null +++ b/graphics/object_events/palettes/followers/wurmple.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 57 +121 97 25 +137 137 145 +1 1 1 +81 81 81 +129 33 57 +169 169 177 +241 105 105 +241 217 105 +249 209 185 +185 49 73 +177 145 129 +113 89 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wynaut.pal b/graphics/object_events/palettes/followers/wynaut.pal new file mode 100644 index 000000000..b73b089b8 --- /dev/null +++ b/graphics/object_events/palettes/followers/wynaut.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 153 +25 65 81 +193 57 57 +137 209 225 +49 105 121 +41 41 49 +105 177 193 +33 81 97 +1 1 1 +233 233 249 +113 33 33 +97 97 121 +65 65 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/xatu.pal b/graphics/object_events/palettes/followers/xatu.pal new file mode 100644 index 000000000..399c787a2 --- /dev/null +++ b/graphics/object_events/palettes/followers/xatu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 145 57 +113 129 153 +49 49 49 +129 193 113 +65 81 97 +176 198 222 +121 17 33 +1 1 1 +233 233 249 +217 73 89 +97 81 1 +241 209 97 +177 41 57 +185 153 49 +57 81 33 diff --git a/graphics/object_events/palettes/followers/yanma.pal b/graphics/object_events/palettes/followers/yanma.pal new file mode 100644 index 000000000..40a8c8679 --- /dev/null +++ b/graphics/object_events/palettes/followers/yanma.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 121 49 +41 105 9 +185 201 225 +81 97 137 +113 193 81 +185 65 17 +145 49 9 +97 25 25 +1 1 1 +241 105 81 +161 233 129 +57 73 73 +233 233 249 +217 73 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zangoose.pal b/graphics/object_events/palettes/followers/zangoose.pal new file mode 100644 index 000000000..2736e0cb2 --- /dev/null +++ b/graphics/object_events/palettes/followers/zangoose.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 137 +161 49 97 +41 49 65 +209 209 209 +225 113 129 +1 1 1 +161 49 57 +121 33 33 +73 81 97 +241 113 185 +233 233 249 +153 161 177 +209 73 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zapdos.pal b/graphics/object_events/palettes/followers/zapdos.pal new file mode 100644 index 000000000..037f1b687 --- /dev/null +++ b/graphics/object_events/palettes/followers/zapdos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 121 1 +1 1 1 +65 65 65 +249 209 1 +225 169 25 +177 177 209 +161 113 73 +57 41 25 +233 233 249 +225 145 73 +249 217 65 +89 81 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zigzagoon.pal b/graphics/object_events/palettes/followers/zigzagoon.pal new file mode 100644 index 000000000..a2d068ced --- /dev/null +++ b/graphics/object_events/palettes/followers/zigzagoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 89 +89 73 33 +169 185 209 +1 1 1 +41 33 25 +65 73 81 +121 129 145 +153 97 57 +233 233 249 +217 209 153 +73 49 25 +201 177 121 +121 73 41 +153 137 89 +65 49 41 diff --git a/graphics/object_events/pics/pokemon/followers/aggron.png b/graphics/object_events/pics/pokemon/followers/aggron.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72691c938b0970a63c2cda271aa9021bd53707 GIT binary patch literal 1225 zcmV;)1UCDLP)K*0FD^MjQulWHGQh%FyLW4nY->pBLl7 zRa%L_Pp^j@#{L6Uhc|bxTA=bSvt%p?2&^QcKPxrs{2M1Uo zB&zh*-jomczQ4O4XBdw9TD3KIrpxo!E3SK42jK`zg zMDD0*Me%nD#HXJ{?poL__60L8FffVCFu%}rpIhUZHFU>Z_M~ZC@^19Q$twPo4%0TP zLeMz|ZfIEU@S#Bm_8Q!=`-QF17Awlp0eR)E;#b7!_S)==^agvr+=_CC4Xf5yUmsHv zK~K}|7At2jGV;wTdQAp$LMTjWk+)dUx+1-G`1<@t+d1Zb%LsgLp|G^Y z9U)AQuA(`C)2sYG9}($+*r5pqp8ugA-;#ZS+Qo|OH@{jC2n-C37Gt2}f7{o;a{~Po zCrpNVAT0~Jz90mT#hCcQwI3VDd^REj!~ds8iT&7lApGoo8NpGvpZln56fO&@7C7n5 zvgnS&D!(5=APsJL)I-Z5CZTaknf=&#ps~XcbA5E5ukcR4E^Nqx8n8jOF!ZG`FNzi> z%gVHTn`oe3Q$|HJ09(2<**gymAdVa+&n2ExCM^qUx?@u7%pEZbq?ip%8gG;*T>;J* z^&(T0XCEflwbk92VWPuKMv7-*5@zOROnwn41lj%fvn(6XJWw-2voN-7TIMq`Suz5I z$QCJDm~LvTCKX1;m;!vm<7(FfcWD$1=5hg{E-likz+A_#FQWm4az_i@ zAe5C>{rJ)pnW3MQ4a9=zL3}Acj)BYvpD^~W_`vy+6|M^AffEC7SBD5I(lxM@Rd%ph zx`}1VmWJ^qnt&s3V<0{2cEOLga)*CjLhhv~iLI)3+sLuhqGSmCOmT(cL)01rs2dMcdc|K;ohu^>jVxdC+`6=^_NCMRd5tAfR@ zDL~rbzFzTH9at93f4ZtbJZ}tc7?WmfizZb;ISJ1leUjzHdO`5udLD=iQtJ+=1!z^U noC6PLHTe8cTR+@>_0jkjX0)b~Yg`BU00000NkvXXu0mjf2dPCC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/aipom.png b/graphics/object_events/pics/pokemon/followers/aipom.png new file mode 100644 index 0000000000000000000000000000000000000000..76dd6b92bb14c259d6e4a61c6c7949fc263b2584 GIT binary patch literal 798 zcmV+(1L6FMP)DKHkpTe#Q7Lih>G_Fisflq>iJ7^{v4H>p00000h?Pvk00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>K)G=$@Koke?0}ayZCZKlk(4%ldP;e@P zCl9G_s3{&Z^b>TI&xKR21YD;eMUbJ8(gfPYi-e#3PuTcn%3mbra$i z?tePu+_BPf^VVRZ^#|bSBgU`tW(QeDSg4z@tg!XyLw@b6fLnujst1_kg9F>&;5c!E zni)zTt`?cmMP9y!mE7t=|!a4Fcm?cTlXw!|E-jAdi zOSM2*LHlR8(OKMVBgz83pB1My%X*j4+FLg%d#HPSci&cM1)x^iUv2fBEi0S%>H6lK cg@0JT0h#bA42cB`8UO$Q07*qoM6N<$f~t*nUjP6A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ampharos.png b/graphics/object_events/pics/pokemon/followers/ampharos.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbb26f04426db24b892be32466383eb93773c7b GIT binary patch literal 775 zcmV+i1Ni)jP)0u5pjW;F*!j20Rg$m;qh5fff)%=VR7-%S!r1b>FN2&p&K)iG-uF%$q`1tc)slEE25$ynMwTczd%`6zoFlgaEXF%vKCRmV49dh?{x)r&DYW zy4m?2-vC^ov8LA(UIH|oEnZe!;HDl6!|a>sWLXdli_Mm&hUL4d=etIqOsBn<+iWQ{ zEU*|ufX{tuau-FcSKKv>zxz?4tx37M`ln0XJHr+2_lKps4lyo4L_SSGTwNiHU;F43 z1?>3Iu6X7UXC-u*|I^o*k=WKo!HmCQO3)^tIWwkmSpqs{JNGw`PJ?#5^ z8(Ee6_-C!XnBIqT+i#_?S;h1Ajx)ejxw=002ovPDHLk FV1noaZ;Su{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/anorith.png b/graphics/object_events/pics/pokemon/followers/anorith.png new file mode 100644 index 0000000000000000000000000000000000000000..62e93257ea91e412c1e56dfd92dcbd1b53adb032 GIT binary patch literal 840 zcmV-O1GoH%P)If1Ep>FN2wacMCrF==UWsXK)Xz)XU>pYUcSUjtE)XdQ9!h<6j5Q+% zMUWlJIs`#jF5;l#Bo_k_6&%8#2QRyO@DRutB}S#JN)J7*ARacsQE#)SInrNN>wN!) z<;|NnO-s`a#$bnj4~0+LJkR^SO#?uG`qQ8O{ON=Mi1zYd4;u{`z5M?dC?!_EXK@$gKZJ zL72HO$+S?!uFyhuQ4o2)l5Z8XyMpe7q?!f*d48nnmS>>u!c?J3}a+?}M% zSmy2obTxOpIwGPARc1w>OB!%(2cp_ALYoqD1JyL~tws~eW}y&^ct=_!E|MKqR;)b{_=yIB!3E+4#}883T=_^4a-R|EX1u5PyW6kF z>FKJ~-FBcUnV`)~HV^r#8c@biI9E6{7_K&pWcXI`U> z&5%CsEnkh_Cs#Cge~vG;q$>Lg*jatRx*8*qH7>HZDa z7g$`ghdEf2=snkIPQov(XOZKdZO)600009 za7bBm000XU000XU0RWnu7ytkRiAh93R7i>KmAy|RM;OLO_7*POGv=;% zDJ&B8&c_qRS(fR6u^Qu2fiZUd5lms8sKo|OJmDBiQxjjoIOhwD_OCxqW1eV(v06Og z7|XRk-Sg~H8s~m~O6dw6kRxJoG*Oa*tFvb?M5TU+!F0y znc+ej@6tyP zVuZhTs7}8TdJ)@5akgL<0N#JT<-^SoB49u(c%s;tE=~b}jIbiMoDE7HA-GuH)6AVg z04ODdlsjFsa#0gICfO{~l39^#Am0Ixe(Uvrf%;UxQ~`Ue7o;($AWnx&4#pyU*`yUOh^q_Dk0RI^CiDPpVphx zUg@l=P621Uw?>IQqkgQ!KIZtrs;V&Zq8T9N7`V0YkD4P}<)UVlD7Qsm4tv{boMh~| z7sQSIVjG7W_Mr+RFPc>e-_4nV17f9ECHm?oBy4R*a-8|w$N#Z1u>rq!|2ou;h0TZo zh!&TZS+bsY9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/armaldo.png b/graphics/object_events/pics/pokemon/followers/armaldo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba9f344ea9005da558bce5046ae6f19bdfd470c GIT binary patch literal 1003 zcmVG3m)kIcbq`ad`m&0qN=ap(#;;smW1MQIV0M@YGJV00009 za7bBm000XU000XU0RWnu7ytkRVM#Kl`&`(K@^6EEhG#!7a<9$E)$5$niFyZ zvYbRjtkc=0NC?CjBw#EOth~JSy5+~7)#kv1sl2A)97HA^;nuX85F*2N9!6f5= zT&jfm++He+Qn=4+X^ccdFv*zi-Kd1i%|aRnZz-kuU@wh{aC`I;jPSYX$CZQHMJtWV z?@N@jfcIyk!OPu(Nru>|P0loOJ8|ny6?nYE9y6(JIw?FE)?PeqbkvdzvGn8N?(Y84 zTne9F_P7v^xY?I+c(wIh{CXMJBf&CZxB8(H(t0C}uRR#2bmIPOUoL-XeBBUjuY9jP_!z4hx2Bu45H`~I_0ODFvkv<+4(OD_7UQBP zS;p({UNgUW_%emb%(BUtwQ{-LulY(=k;sfNb6F1V&j<}nj4@&sNo?>+@r2o)Qp3uT zoHhAMClJkVqJx0NnC&dM@PB6eGHgrp`Z{B4LuPC^EO{ZgtI%g;5N1pU_0fid9 ziS^G@)HySUkfT?SU^EcW#o^M%P+JfTBc6UAB?wp$fh9$PV5r$r2eux59v;u%z5sdZ zj>8EC17Z8~BblYD76e1Ze!*7>91KPoAJKx!P&1c$p*X*4-!35YtrD!ayp?VSBU`|} zWJa~1G*m47>AR|=-ntTGt5OgQI}GR7i=nmNAdyG!(~OY!~sWtpHJEm1@uw8=)if-lW{4m}N38OP0Ki9)%U1C~DiK~1b3pnk76eGoSVR$a^5LO>&8twxzSm8r@&cH1QQh2Tzhkk*_udoD) zu*-0>`RwY2A;6!?o~SM|O+b|s+KPcGq9STAn`w_%+i8K?gQMh6%-Np%V@JUoeK;D~ zXplfhR2RnUMhRF1Nydl>aaU@O+cZO=oq6<$5&(5{2LXuvvAKuZBFj6X6>TatKxfdV zIi+D}g04KiO$$-z>5KPK!BCYriH1L_!(XPKiM%6Ho&K*Hb28tjv;)RA45!V;dVHG- zAcprhu-ICUu@z#q=RrSRKmGca1i%SVoBjOdLS%OPZl{QL#zKwa zw-4gub`W5S$h;7*7LN0FY($-mfO;z-%5s*b*ES~MqW`VVe$m&aV&sJO(g%vm=A{*ednUJmkOtP(v zcw{d!x_?*ed^JIv1&@e6HiNzI2fTzJZkocnaA|L6I)<&-T{G|p0o*=LeEagLJ8OP9 zKd;fARgZ{F20%S^(U?Lio2Fl&Zt-eRfahX+EvtaftiX@w&T~ygU0%F*OaeRmvJ;W% z@99pFL8K05|LXQ3qav{uKz#E!3iwHB1zxhDQB9Nb#ku<5lr~dDx?8Dj6}@qKKd6vJ z%HiQ0&FAMybYfqpX*N8i3Q(U=2(y*>QxUlW6kuNmfDRN{S48&Qv7-xmv~0+{Ja+{= z%r%-E2o#ZVpqrH@XAqGgApav1k$a5<+^KY9BcI^%{&L++&iXGIsQeT8&{A)+afiwB wpZgCq{iy`G{kNHaX>aip{C~B-0aEb4Y7f3vasU7T07*qoM6N<$f@{lL&;S4c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bagon.png b/graphics/object_events/pics/pokemon/followers/bagon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4964436c66f14e4bd88db4aa7c1fe90d57070e GIT binary patch literal 557 zcmV+|0@D47P)K)G=$qKo|yKCm}!IoM~{!1@OY3@EvDk+5ydABE@ z_kP?BW-@8gq)GFCvg7{FKW2gE$-TvPcZ%$JQZu?hH9~uzn)pCHsfP&FWugrlM=ec} zRg#mLK{yp+JFvgA^vqj_ax(XjAn>!W4EpPU2nx1$?*#FV6%L{OTUE)#)T()!fiHVn3vaTcsuAI{ju>V$5=6E_fZ~9 z7E7`aI#|0u*^4z-;iAlRJGLwQ{eg5A`;>62=;o+-(Ph8qOjqG*t%EV@+Y{xx#9pC6;=>HD|nkSe>N`I9&&GiCWku v=UV%eYRhVExB!PPgjbB6ul;(%@juHaWXKWf0;d;C00000NkvXXu0mjfjbHSK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/barboach.png b/graphics/object_events/pics/pokemon/followers/barboach.png new file mode 100644 index 0000000000000000000000000000000000000000..710fe09e5e7c77e314c5674c62e3287bb6132a84 GIT binary patch literal 558 zcmV+}0@3}6P)cahbWf$r(Xu000000000000000|03Hk00009 za7bBm000XU000XU0RWnu7ytkPq)9|UR7i>Kl(B2VKorJr2pl0(N{H>)|G+^grAx%1 z#nsYMoC@J=>5^bIq}_^>lORQGrgoBZu~=K;{d3h=%-z#Vq0*(~+kWqR@B4^`Ae1Rn zrcD1r>JPlLhT0^RcUEtj&P!<%#YXIRtcH0Z3-U@wRa(iX@L<8c?W{(&B@_T&sdP`9 zRtld|I+C#ZPCL8>d8KMNezww>QYv9}PDciIlY%9~e5E@c(~g|cmA+36z~8<`=}T@l zSX)arD=reGJdW8bU$6%_=jmNzJL5Uk&9jTO7c*BFi{z%YPah~7lLFVh=2Q31)hS+P-h>FN3D*;xSr0bx-g000000000000000OMyaV00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>Km9cKyFc5~>K?^+zkd}7K*p7q(*q#EA zOC|>*3#i!|AVBg2d4py*V&I&Gjnkr*7PmqQSbDioc3|BxW(su3l-s`J-T&WNl+4&$ zyv3`8F%yiDG5@3Dw;|Pgsjvf=(k~?(c>_IVwLB(GQrg}?Drz7nv=kpZCAr7IWwAjd zv4J5iTxqNrd48Ju^;PDWR4KhP;BE&jVL6r{rO%a~;+>lxRk1``j%JP%GSv6DH*|uy z)G<}sjUg?m@}5ZBVvG=Xr7NmbVcy0-)8EZ?k)jHq39wdQmbYj)tqfq^#yUw)DSyBt z^9z8P-OoB50?d(t$J++b1=yF^MSvq&08IORecr?Xw1HKae|CbG0d}(xcb~ghLZa|m zKEG&SI{49FW1lyIvzy{#9_B^YGYar>`W4`J+BbW=$$bO3nunPWZ;Gi6@Di?Imi3p= z=Pv$!1h~5lGZ$J38{jqk0+GGn9s1nGX}9u2mMs8-@!&BtxeytikTQ>R zfGoBlX7?Mx{wev)k5rcHB*@Gh0-WIiC`Yj|pJ6%*u@lU-%CG@tR*Utm7_$&ZG8czu zV&rk(&x|-pMcH%NF`Bp*<67VsjdB#{V=+bsaW3i_8`S4o9pGztpw&5=crg~DM)ka7 zWN5^wERmzBMY$j^&UI6v1>6cvb&bzO)zb5}!Too2#oA9KVgHan5YoLT^^bF2K2LDV bUL_s@l@&<^SEFK^00000NkvXXu0mjfsLDx= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/beautifly.png b/graphics/object_events/pics/pokemon/followers/beautifly.png new file mode 100644 index 0000000000000000000000000000000000000000..33e2eccef9e9506adcd17f6f72ca56002cc33166 GIT binary patch literal 952 zcmV;p14sOcP)5%NdW-?*;!$+v9bBtX<G?rHNdN!Klrd}DKorLhBhX+loE8-XBEB|};{=!J|sXHi2!; zAMlhuLrj4ER_pRKJBYqx*#TfMNDB#ZcJNPnO#CP&lAVWQLA`U?1u~AF?|gNV!uOcC z&(aya$Mr5JHfci|lILZWl^+hvo2Ymh6+yOxicV6vq{P_^mi}Fji5KdS543DEtMof6 z%l-SqV%M_FJ~|?ClYdm~MnL_-ah$q^!=e-EO>~43ONCU=JB%2}P-DmvLSb*^0)1l( zVn+|`Pzf1E z1BYDqA)<{5J4Z2S7$RRZx=MTqL_N@d$n*-k%*9TAq>ffgDM@Xlmm$sIICdn`)sgSxu_&})Xs{V6@sM3rvOB&GHGleq03NrOKd-h&e1IG~ z68h5Kl{c=61#(^Y9}(X|{>Qatf-%0~_GyIehV8v;;|VL2V@D>}-D(Y2cZHs#j&7!i zA?C;qXn16Q~)DLZ7!0Da7s%w$wtDN{$a zEulx3H5NJuV@DG~EZ6uz$r4lN1(B&EJhvw|i5(F^4CXig@%hvdnbSZLN6E~Tcy9B5 aAHM}M{P)FN2I$?1`ip+RAJZw~ok00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)W1u^Koke?PJy_+p@Fz`bEu$yhi(p6 zager34>Hu^puxd^!09qreEuM!2%4q;g#SX34w;->lp;nV$TN)&ZM=6K+@#;_GraG+ zgX2o2S!S8#|3o(a=4r9~eWPu$Vf6F`;23T92S!g#hp1t)_b}j%YO<{8(Se#icm`Xk ze~@s-&%s1v(Rty6zd112YWs(hvF#tm*)kg$=LvkjzovN0w%8nhH{-U6-bl(0F#awq zM>o5Qce5o#v%wg#O8`wk#-oJuw^3cOw#r#y%hB5o2_?V~&Xm^qK)rgux?JO3_7Eo) zj5%E2OS&Bj#n0m@Iv=Q2SB@5HyxrrtkB;7_?|b!ZUpwAbTIaV)w{EYzl(jV!aepn* z`=lo*4d5d7l-A#c2rj0)%TmggtM_>iDrucA;)dS&fS29L^LRU1p>*}e9+4DqEPhU0 zbUsj#lyqF)&spEjliqd!NjQW6c9hn6f`pQx!Pi9eddV0OOCbdnWIRe2035~ploppi z49-4=kc^I&s&^)bk1uF&srdK&c64d<+;wF1-!nJG|2SVSaXJ7@4|%Wv0000Kl`(7EKp2J(JP3s>!ccJQ{D>O9)w{ zMOlkz>!Hx0G9ioUAXC(}OD6{#6-80W5El$3TWwM|kW8hmT1b{4ns4fsA-|z_isbw5 zEQeC)RDY8ny{G5Zon=hOVivQQ#r(IUb_oe@$(1%Cohfy0Sy?Vrf~U!;`(~byC|-*w zZgD~R_@yh@W(#GZ7j)pl3)w*n_O5T>^P%1`0%h?$e!`#3P3&I(J}6&rRfd?c(89d~wvuB|t!t6X5{rfFcN zLQ7!ND)?YCbPjATV}+QrYZeol1PL~7xQx*pv#05grcv=-fj4aA4@n6LD&udmO~P% hLZ>48xR@yStPVW}}WS&4~>>FN1VQBk?Mxd8zINht}jaT&>}Q2+n{Xr#Ta00009 za7bBm000V|000V|0Vb6__5c6_F-b&0R7i>K)jez5KmZ0{O#-7yr9;6G=oOh#Lx*Z9 zNjw-tArvwwIoCvsF_l8?IU&JQ3nm|4LZQ@+$P_S%UCPC&Mn5nn*WB5li|-F1HZV-}>frp;E=ZEm2OCWR6!M0^1ei*#xZ;jX{G zQ47*`(}wf{*lix57_SB1h_R?E079cbo~=Ceg@uT>ufj+;I;hh1Ro#F`ZL z4mLNpTfqXtE-LAli*pN=&g`gQ%-&-;qk-4_;E!86?N2wG` z`ZC4u@I+PHX;rQ9`P?oK`~nSg=^SIf;3ISblVkZKxjU>*4bV%0t#c4Lf`YyMQD;^=1Vv- deT@Hd`~}D1|2TWyKPvzL002ovPDHLkV1ho-wGsdT literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/blaziken.png b/graphics/object_events/pics/pokemon/followers/blaziken.png new file mode 100644 index 0000000000000000000000000000000000000000..7c49d9dcfcc21d4c1eb3fb4fee4c70dace448d6f GIT binary patch literal 958 zcmV;v13~KkS@G%NX%PYGF)8`cQMsw1>^uuQ00009 za7bBm000XU000XU0RWnu7ytkRG)Y83R7i>K)xB%mKo|$$gY)1ai?Q=>gmcf56~}H8 zvUUkVA%o~5@M)VcZ&e*SIko_H z4*;x87aI?*`!(Kj+I+*Xr`}&kH{fr1&MXg1hrL)?#-F`kk2eq=Z_aE(CQN?bp1;H+}!5w;hE8b`-v98KQ5YiKtv--S~u9cK6v3k%lB5eLK?RLhD|yA9T+o9YA|iX-5GM) zM!4MGyCPt}Y*nI24y+iyqYcQ%P4_yAL+taPh{pAg&kLG%9R;$6+^fgIKQ;?=HT4>wn*I;X zK4tT&8#P=#HY6<$#M2?wG_k?uC7o!R9tQG;+;n9n3Ov$19iN=|o=(X`_qM}^h%JSh$k8ZJtz&W3{>O?%T8-6l@aU*C1`QH!1^K|@raTxtMSOKW(2BX+Gq3Z=5( z5-C&!SJ&5YDO$f?Dy<>0<_35m+7NeGLy3k3iiE&fLqwyDS~Y&3J-`F!N^HnWyrw{t gQ|W8x2L56F22EVORTprSjsO4v07*qoM6N<$f(He{yZ`_I literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/blissey.png b/graphics/object_events/pics/pokemon/followers/blissey.png new file mode 100644 index 0000000000000000000000000000000000000000..ba65960e21bebe744dedc04cedbc504de68bf2df GIT binary patch literal 665 zcmV;K0%rY*P)K)iG<^Koke?0}BpH<}RHoLxxT!G6vH{ ztq<3tbBA_KcWjZdQJ8#n> zNwERG>CH+fzRtI@6|d&ovfL5LpI@zfy)jGk11Evjw~%sJ*Bdk~;_>2%U6W(!Snq>Z zXDo#Ex-6zz#$s?Lt_!2Rd?G~agJUmd@P1h}P%J}M;EC(fHTXd>vQJ27EFUHSUXDby zJP;iMe+@90>5UeVsCX4czRt2BPXX!;>K1Wm7vLDa&}mO=Sujtn!M!n)N2xVXEOK-h zuEaxy*LF{9^t7n=`HoG`PsLGYLns$j%aM#=GN+5lCDFTc^CK^Kv(b>Kgu2&jDOjOZ|HdH zl>dR^d?w@RleA084%@cTouk2w_T8$QYMK5s+kQ-Xf9XztRP`>cywY%b?lfL=!MU^C z{PFrSRqC~FAmSo5ja#I(jI8^0OI>c=_>cJw&nTco{rB}B00000NkvXXu0mjfTW2<> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/breloom.png b/graphics/object_events/pics/pokemon/followers/breloom.png new file mode 100644 index 0000000000000000000000000000000000000000..a133c90b616b076699bd40813aba6978ffb57ea6 GIT binary patch literal 659 zcmV;E0&M+>P)K)3Iw4Q5*;GH|3@fZo0A1LAxCO2Tnh% zgIxZFLH3w4?4Un{9w#^BV61 z+~u4N16V5zFE~r(+YZ3$gL)}fPq86fKCBdY(Uru&C-nB`8 z*h?8VPLhjM7#?TbZ|)u+kIa;_XjuFG153=e;T@WeXdR3gW5XYBUK};wrksU$*y=SW zg0nQI;(2H2aL!&yGVv0Rw}Ez8k3XA^ah88Ly78|$UXl^-ST?58=3IO7RYtW|k25~e z_RH^Ghj;8ZEZ^pAbXWFn{jwa+xOBt!x9AO?`ThpI;Y!omi#QuwzW?ze|HX7;o=Ul0 z&sph8d6SeY_Q192{&?WV`F=O%4_mP t%vkJ?4X=a_#L$L@TdZm4=e7H1`3(ShrnOUQO&|aO002ovPDHLkV1j6YE&Bif literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/butterfree.png b/graphics/object_events/pics/pokemon/followers/butterfree.png new file mode 100644 index 0000000000000000000000000000000000000000..1d19c4f9f7c33a592e3103712d7e7fe3f7682c1d GIT binary patch literal 876 zcmV-y1C#uTP)k7R7i>KlQC->F&Ku0@!~~6@Rq4Rpq(7J z!NqtD=*A|#7PNy7lk?P5_6p#!0uNnWUoxCeoqO6s50$$QD|l|#u^$}j^m-x+o%xl;ueF(<Ty4;8(j`LQn$-Ama2J=X+bk z%wP}9TP9RgWe5R@tuAy=jBX4wQUH$6w>SAk0K@^9fKzR_1=au@&`hKq2;$k81yGCJ z0`hb#?6@&Jf*N&zPkXu-)cqAwN`|{%-(O|+5e5ge0F{L#Z2|U3@-v!^-3b}PGy6jH zj_$TMuW83^K)*IEJ(t&$I$o25c$HRdzsAjGF%&t9z$6Qw4Ky(DnbPRwL+V>~M$cUUk)rGw_PUar?m`$ga-Ai}@vrGvQz3&3T= z(tcT@`6?k)e;K%>F9Meh>*()QdSzruf6Z`JFV`OeF7H_7cL**30000z>%kQMLp00009 za7bBm000XU000XU0RWnu7ytkRK}keGR7i>Kl|O6SKp4hv=pZl{l%>I)a+F$F&^gc! zCCy+%vlQ|bf}s$I7ah_ft0p>2j)zjHO`V~kP;*%vw-8aSfhNQmng;3=t7Hm>5PycA zY@H-4l09@P^s!{?r$5j0>Xm#4z<>QK;^y#Q%TQp%v!@zm`(eK2 z3>vE<3t&7sP9J)PwBPPDPJ0-tcNu^iTwdb&C2TT7##deo#2RikYNp7JGgesuX@A{+ zuy$bWdI3}H8Z60tW=j-3!yCq4i_9E``4z!PVBo!p>a=U|V=1%d)ck$TNtt z2@kZgR_=+D9(geqG`l0uH%#bnH zgknER21(X!B?+4y1ob^pfg1QDJD~890huAC@ubAPm z_zJuG0z=6NGu<}yP+;X*O4oIhuByitLdbT%e8Wz9bHfj~-rNLs5a=2rd%6Hi3Ibi> zVbL58gG=h$*iP5C>w#f-j^pS|5e^&|un{U?W2yjG_3KSAqAPP4(X-Pdb_wTCJ>i;y tK-ch20ii%|SJ-BJc66Rj)Vu;_=?^M(N}disXx{(;002ovPDHLkV1nrxyF&l~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/carvanha.png b/graphics/object_events/pics/pokemon/followers/carvanha.png new file mode 100644 index 0000000000000000000000000000000000000000..ceba6596d6a9108f5513bc78538d8d8593a0442d GIT binary patch literal 768 zcmV+b1ONPqP)FN2YvAHohLCHBG`B5qP*&zS`00000zTbFg00009 za7bBm000XU000XU0RWnu7ytkQc1c7*R7i>K)IE>WFc=4L3)NXzFjCr~+~SgvrB*xK z)I%*Gx+G~F;8IJ;N$G-aC1Gy~Pbze}Q!+)jaRXzAlmYTxNSil1#XS}lR7)9t zar}Rtyf^?H#$g=B|1$=APr&?;`OZNb0f0JZ& zm)ZXzcAR-Q;0mC`WGhu_V9rhBoi4M#ZV7=~HzK~ModyaW)@(j88I~Ecd6Vi@VCMTH zE+68f345sRai8?NGMj9!60Hi%JZ@I)x)7gF*qH`qdJ&Mh4D1j>3Gd#76owk3lwhX_ zEd0K_+*q5P{=_EOUTq85vwNA9vS5ewZp8w(RRP>1q>G0|VD6KaTV8&orv0Qn9%Zl9 zNN8rZ$_x0IOyjOrte`&b{hD;OY(K%#Ca((2{k*yZK-(XW$#L(qn&m++H_AU$8e=>~ zXIh-kpU2pHWMVDZ&QD)=PP_DR8JPQ-=T;ToUM!xzSYDJJ=FWF~dWYBA6*9x(4iUXJ zP>4fgyP2IgUq4+U-zowN&#HU?7hk@8UtCITG<7Syi6h-c`8!gaFbM-Ydq*%_epnjG z+AbDv%vKIx0Gy74=%p^P?E)*hi37d-%77InQBc4L9VhgXqCn+~j{18$)q@y29OWCl(v{$v*(4DLn8U y|4jiH?xE5YCU?9&cZWgk5sE+jS~olXm*Y2NCiJz(&hha80000Kl0R$XFc^mgh681jJ@k5;Uqf*>|AD*9 zcwqWDj?{Q>J2dImK!}_v=?#rCwcOxbK4oQDPF|^vxk9`7H|eon{T@3JA$|Jv>C@+< z@})?>7w?(>okqoe{XYk?BERSm;zGs0z;EaC%gB!bi_-Au3e)2>@ZF1ponl7h9;3Kt2NW*cPI~SAwhnJZcM7Xeb5Y`Ej8opi{|E zHjrl{DHuGp0xjGbg4y&8X5~?#QCPEE^J%j#ijnV;?V{b(LjFV!q2)A9N>pGAQK4cc z(Qo)638%~>RV&cK!59n3I)ETt9v7lQl@$Y@HS-U_Y|T8=U$lJ=f_Sn=DU^I-2KmA^~FKorN5;anO)Xc2>5#aYrt=u&(N zqC*f0YAGm4LGeFua&U1A{(#WVB6V>vh{i%fRS0Cr;{Ri=QSaT$4|NfQez&`K_dfTz zCXJ$uGtM}Fme4CKYhm&3?*YSVF<_za0DfULj;RdG9+S=_Z85clx`OMn5wA+2Mx{tA zm%YhbG$k3a$d6l0nz*Gn080a?Q4FxGo(w3XH7p8r-ID>LN;G|_8-jkL?{j*a?Jqa^P6s#{>hu1_{k5kN9>=J&he5l$H; z4UWTb1~s5Ys_V2|bVZU;=_!0cbZV4L>bhlNC^6D|i)R7)ky-y_v;Wmovup>QZe)bU ziI!pPqsNdMRei&#`gum0;o|p-8}$j`b+qB%y)JUo&Mhc1QX?PJeqIF_K x{{D$kR;W=b#E7J*_Srx_@h|H?_(cDsyaT~C=!Q%gjfVgL002ovPDHLkV1hh=BH{o5 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/charizard.png b/graphics/object_events/pics/pokemon/followers/charizard.png new file mode 100644 index 0000000000000000000000000000000000000000..d435a4f3f07e9cfc85697507b20d9958aae1b4e3 GIT binary patch literal 1110 zcmV-c1gZOpP)KmA{MQMij>fhDCve1r=VB`vW#91;dSu zO}Zs1+^jjoZPF#mKAX8loG%(7lOhpoi%pd##kD4*&8u9PO+e)}DfX%qY1V(j{SO&w z^vfpRR4D>Ch4Dukz3+S9H$Mn@Ki-f3%Ww#xk1=74Jj(wv=!%embC?MO*onB$gzgFM zu~h^N4m0IK`Oab15B%Nudu*-JbXQ=PV;_-chnevmxjkkMvv9D&fHid)ZuL}*n2F#J zGX&;#@+o=NR0FGwe2w_)D7*Fw0s56)vwdoUS^>|&x2mR6wF-u#JKq|J;&rH}3N>-BL{M5%aX%c3?0jtm zy!aQPzRbKzpm%BbdRz&_0pHvuR@Rst4A1k#Qn)JA&$OK|l~2Te!O7xjsZ=JCJaDV?cnUH^E?MZ)v9FoQn-81w%Tl?gXfwnPW^(A1KHD@OYVS9hS zg=PIgWVjYs%1{SfOk`9EPzW_oTY(3GYSEr11;e6qdPVTvcKa8!JuqAeN4(oTlyJ^lqWw10)UKDD7yQft4<|+b9hVF^P5qYC(X0Q?O2%rPFZA+LHRP)Rr~x ztxrB?%$4m2a>m%pA38UV3;IBA-_JC6uP{Pi!mNAE7udZ-Wp{ENRCY;9t24(6q*!Z*4GSN}-<;$Op zjEp-Y6(4G9-dt&@=^6R)Vj)l!8aQ*{(Nv%iXMsm#F#`kFTo7hdn`--wfq}8j)5S5w zqx0>gjec7VB-*5%ZrF<~lFs#e{6>~RvpHGYSBAfHQUPOn!51+fo3`Cs11!Ed-+p@j z{SoW0nGY*(GbvVodvkO1^Y@1$1fSH4x-hJqE_r)b-LGaQVZI5Xa%SiK4!0=yad>$c zv^H)1bL>jqGW8B~R>j7rdAske)yX~RAfWCZqu?l3*SAD7pd){G>*AbyK9}SL*YEJL zV~WwVKQ2_2VOaiFYtMY{W6F;fs{1WcZ;*caJmPunH6^(?v1K33#OH86dgwFf$m9)Q zjWa(LhbhU~iLFyh{PlODxZl0IOqV<^q&7UR+2dy2^srLa>w%lZR=I7K8F$4P*L`Z- z)hhZ$-0n&c(_`_6)86*AW}IROcUU=n=gm#k349_SSS23bRoDNUQ|Ik9wZGLs{1rzl z!;#C}Zx3sPG?a3QYI!W&Sx_=*rr5bxCx6J!V_pB)^XE(xFY_G%*5N0%7S&F?#`F7Z z$k~=^wLs%=k4I4pjEhzI&b^+kf9fKCQtNHb$2!dYIbyB?|MT}T)VL=wU2+z_28uaP LS3j3^P6G}C-Spfk7000000000000000##oNI00009 za7bBm000V|000V|0Vb6__5c6@+DSw~R7i>K)Xz%8FdPT)UIvAp1c!nTAbWgv^2a z%mCI8EX7WpRA@pD2Y_ifNs)UfpwxrB@S6c+u-h@!bM*u3jU()d9bi&%1J~YwlEZ4# zr=tiP1w86oo)>;g$SAZs&G;Pns$q&fwgcWzfe%{0h1oLX>DCekgy^5Weu|9(qy#Qo zWRSZXZd`9IxFES{cpYIM+W`s1hxx1PDfY|ONl7xIeV_Nq+KRkkLtOXlq1b^?OZipH<7WENB*PE;ElbM_hAyd}v zoecTRvMI(7j&F+2HvKR yy7}=N-VlfD2JVPEq*}CqR@pt2Gxuw^KdcY*yF-t7xk0)B0000 zGBQ>+&b)Z>Wn^Myp`zl?n~|NFiZ5UOytptBs2l>C);xF&WN{XFL>4nJa0`PlBg3pY z5)2HCLY^*;As(H{2@Wfvkxt$q2Rb`UE@a+WQyM<;wb-j`E!eE<&;ewkx znjkxXRaUEN~%`A~+_W~Ql85lAy)n0uW*xL;XJWp3Ymvv4FO#sV5 Bs@wno literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chinchou.png b/graphics/object_events/pics/pokemon/followers/chinchou.png new file mode 100644 index 0000000000000000000000000000000000000000..abf39ef13689c60fcede09253b6cfcb058614c42 GIT binary patch literal 708 zcmV;#0z3VQP)FN2wx!C{!00000wN3G|00009 za7bBm000XU000XU0RWnu7ytkQI!Q!9R7i>Kls{|RKp4hfIIKaM(x9Oz(}^n3E{YB+ z+&Pmcdk`UXIhvw^y2aq5YrjF)t<^yaq~xxGvb21AoPu1> zp`9S$p&#B<-GEntCAe##s)?ho)~a29~ zJ-%%Ksx8+8DY4cp?>HF++!h=iG~aN4?K}X$XI4XZWNug+1m7F*--rqy{y|OLMd0V+ z1q4UZa2DO(u+$PPg0;g+m*j$V20acArf{8$yhbfGu?yjPu@E($Ri60e(V2)-OK^AZ zvWzkpLZl{C`2sW(6Y7*4qhJiPwT>**JbK*dOwPn*VhPSdmoZ9mjDoQV6{9w6GA|&b zi^U~PM^l~hG^6u5a-s1G4JhyQ{PWOZnQXQa;@vWpX@iW`@Lgnry8nzbO0$kh zv2p~-lk=WI2;=dRuEwbj6*D(HYYkp0!TlbG$!h%3{u6m=Ge+uPuqFM#Djh0ju9=(6 z!T*AKS+ec6Xf`pELtLH2dxJyv$YzXm^HrUAQ|nNRpPIKnbmp*`lu43Qr*)h1spQv_ zHiDCf@pG)+()Z7*uAyuuiaSA%dr6tVzTuRTy*7oQL@%qq1to6n_q)<= qPuN?KeY=BkyW9N6q%X(dztt}Re6HsV8}6V00000Kls`+uKp2NZZ|im`(zUsYE>h|pr39R; zi{O$%=qfGT;1EcP+|sF2KY$3)O`%}h&Cy8yi-Ic5ag}g_wud*6r$|&V}*4j8$d7EF=MI4T}mP zPl?&J^Ld>ME%A|o&0P5vBq4aC!N_@42*0?tm9-ZQxKI~uC5w4+zbpg}rPOICguL$7 zTxK;@!a9O-1Bdpyf)G&7RN%Of4+TP)T`(6i;q|mGM7qd4^vu7ar%INDT1s~z^yXtp zU&e)Lzs|gP13>%!b+@79xRA4JKxoXy08GD;MZ)|{zanzDhWmH@8=~Zti#lyXn5&_8 z+AtSgmreg-Ul7V1X7Bdlevnf#z|gjI;Q<9Vf=n{JRPdJiJ?w} zL-si18RJRiWFmZqGKV+p1iis1uVk&9CuFzyJs(WQg^y+P6^^>P!J~NaE9^mC#UPlr zo`jmr(ISBvvW_uAO2)x+Y$7s8A;n*_{O8^DC;sDn0(7*Weg%>Jp#T5?07*qoM6N<$ Ef-*S=W&i*H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/claydol.png b/graphics/object_events/pics/pokemon/followers/claydol.png new file mode 100644 index 0000000000000000000000000000000000000000..45cb9b9f023554a5e38680f5b01940ac501cc6b3 GIT binary patch literal 628 zcmV-)0*n2LP)~jiFsMUNqO11S?THdSy4fWDM7ip!Rd){0RaJVSxEo@00000@ADTN00009 za7bBm000XU000XU0RWnu7ytkP>PbXFR7i>K)Uj*SP#g#FO4bZQQ7SmK2{lsBWF^)E6N0SjW^g zRINpHn^j6|9+FVHGc(kzwazJxNjV=mJ4%n~`;@4eq!)BME!Si7Y^GWM87kJk=lUkM zBa2KyoFvmw#rh}~f>BXoi=EFpaRTY&bz8;elWq!e(s^9GAGWw)54w{M9Qkb(oBkPe zx|5+N7a)rZ=C9EkzdHDJT5dT5 zEC4Gk=V9}e@SxXwXEAvr&K-xBeY3IFDEn6KSbpv9?z*ehdB`HHak5eFgxq?0!g}ld zS}!bn-A!G$GE8?FRGpmxfVzP}SZyJyJ3G_E1sv73i~V^1ffdJo O0000EWic{xe>!NC9k000000000000000000007!~;;00009 za7bBm000XU000XU0RWnu7ytkQ1W80eR7i>Km9dVTFc5~3XxyTG5%y*;9OWrjY@O8> zd4f~gSh<02B~WZ?6v4c0#`c1ZW70)RvA?tu-`M_VY!6G8J@n8+5B(p4a{G{Ct#7-` z>ilDZpD(~GZaG}bJr*rBd#tt4Kd#;|<}7=<5(paWUth{3KQoizYl?Fsh2H@dx0p@n zE73r#%PzM}ZJKMOSw3Aai(AY##)imC%6+yS*{UDNg!|hLAC2SG9m@p2*v&wfPW?H}85DphkB2hBHBY3mKll^cvQ^hkHC5pqSeAFri=wFTSQLi@n~5~_{*EJd zD>$TrgR2~m%Q&3gKJ(AN;Q$)hvvl+J?g{Nwn z8?&ppF=?CiVsdR6mxKy{bPMaEkgcHt3=_=g*(Ffe5(Y8HYDplJoKc}#6FAlu2JU;+ z_{GD_37Tz!yh5Wefsy|^QL<^|-Owd8?B*-d8$&e@Do$`Wj1zbk>@J%u$pTSh9&jek0 ogz}BS-v*;8dGs~=Gw@IK8%A$vBVO~Bi2wiq07*qoM6N<$f_51mk^lez literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/cloyster.png b/graphics/object_events/pics/pokemon/followers/cloyster.png new file mode 100644 index 0000000000000000000000000000000000000000..4515f8a2180c5e6e53789b1b4f0e788ded2b6a6c GIT binary patch literal 1096 zcmV-O1h@N%P)VL3TD>FN2wvFVXn+a0000000000000008gM_x00009 za7bBm000XU000XU0RWnu7ytkRzDYzuR7i>Kmc5UhMiju2C^Aat>fGK{SFTKg2wkN7 z2PZ~&TeL4|s+?q*RVwx{!(-aW(ypsWXy@?!l^Ny(xOKdhlQf~)9}j--y!qR zn+yM8Kgqwf@uK2yp5Ri*%P%V+^%b4~uf<;^Ac)mv1*{h36>jr@WGkbFcI|vwF$Z<| zkwb-IxWaKB61rK%cTHP-wPMbcs#nqJg%m~P0PBVIZxfI6ACf7-9Crz@{+o(JrLS?- zE!JTy8!n>&r@q@9gOrtwZ3yaNF>#m@6iYnbVGA~{uLN zc9Sln+tY`ts^0aVs1@u!TRs~BPGh52t`>qV031s|D{S?&RI~8@#Fz!2Dan*A-4Wsg?aewsF zRxt6P%kX2W7lviGEVQtoF`I=?H--o05*lIm>IRR?I_UA$>p7p^9vdxum^bh+wd~?g zH@rL#Y8HN1Sx)C2H5~gR;tA&yAl1+x#byzfh=mvGmMpshwNN#=YP^tihHLZ<1hE)T z$J0@9-$AMR<4KJEND*q(!gAh%iDNJ1Y#4A1yzqO+^F`Pwe!@OQFl}6|{Lo}SYk_l71 zT={}ao}Ll4c=@kk9P2g4$dmeOj7VM_`j>3(UHok!HC~N>$(O!=?fMJIOEKl|N70Kp2OwEUDCEL=1H30-+)cQoc!R zMJ1jX0%JsLndEL_2pw3e5}~6oA_Qcrl$yvMERb=MyARd(J)iAM#h;<=mUnTU+^n7AqGz34sb=FsuM({VmXm#Ycensj1U4drdK$R3elbp9QWD?F)%rE+jMr1pX&`}pA zY{3L0gg|<;)f|v+2RBO{$E717A|up+$T)x}c6k!n0mxBmZGj%{fWQNp5n>=RZR{Lj zL)CE?g%IaPh!?|+cPMOJggh;8AoA3;ZYW)AMT=rMIyXWL%=lNUh7IFkbs2;wZ!;kV zYF=Kw#dS_c7tN_#`hZ<=W8Z|k-QZRI$ML2SVxZ>A?Y3^CYTdgM;=<2_7^r!_rXPx_ zSeg+6GtsvLh}!skFTUUVMhJnLSuO8c@Ep;1j8F$6?`4CNZ}k}=@R-d85c;LwKdu)- zwV~O15}4yS&AkE_G@E07|KWZ{2>h^P9hnXYm)2HSq9?h+0^bjoBwIkJ!n;`Uy z_Y|17Qr~`W2@ij^wnIBWbJ4;ibDG>Q13560+4!2b!ducy8fFmKQ(jUq_J?fT`QVG)o7z_lU}gp*E3u_8cn;3N;MIjNr{rSKtf zxqIYVJ0MAL*E@)1xq}!u9a_Sn=SA!ZP8#b+PU04~h&ua;3#nFsjHyzj{2hnSz|s=J zQxjR^6gdx&e4!Rm>k$d=U}`yA3m+>xP$^|k(43FsRoVYCdaaK;|3m!-sM5b-YdCKy P00000NkvXXu0mjfFmQvd literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/corsola.png b/graphics/object_events/pics/pokemon/followers/corsola.png new file mode 100644 index 0000000000000000000000000000000000000000..62c09dd48a8ea71c889aec2b056b740933b11038 GIT binary patch literal 669 zcmV;O0%HA%P)G`QaS$QEr>4Bl~slnN4fx*$~000000000000000VD!{G00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls}8xFciQIC#=2w22JSF?e3t%Euje8 z`UtmmFmBw*Lx|&yCCC<8jqKOCG?1~}aK&G)k`wEX8*^|_=#aPltf%*T(zES(*SN+t zu5pe3B=QmCY@E?Q$*1{+`iD`q?cah!=A?}{JPGmQvS9l&c2@8)A#Mgi(z#tBou+!& zniJ4M35sG^9|E3!ms79*s~*)EzqWHN(cr4<)vhG+607SJL9!McTdlq8VOdIR3re|B&?|?^mY!_4Pv!$$&=p#Bp zEOQ}Y)*GNWcE4`QDNr-hG5f3cvfzAuQHW)3TU9#w#73wB3Enio>M8baKJ2^wOrsR; zJ2nW{RabT2Om|~e1;dBmY4?##v3K+4`T5sd?=sU*UDwU6>lksrVgAtF&!!p8Z{OWp zd(e~Qr!$bd+1;(x@R<7z3q(BfT9*GT^PjxH|2F;r(uDrFd0ap*00000NkvXXu0mjf DWW+L? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/cradily.png b/graphics/object_events/pics/pokemon/followers/cradily.png new file mode 100644 index 0000000000000000000000000000000000000000..e53d6af1c5ac4884544cc13360143cb5d559de99 GIT binary patch literal 1085 zcmV-D1j74?P)KmQQQrMjVF6J`_Q9=onK%szS1KVM%>! zpchlndde=ry(~3**c^HiGVv`71=EAF2QkJv2aEW!U=Yly6dD|)gXDF*@_Hx~dJPo% zMLN=Gq>;OFmO^hGZ17{vypJ`1elh_6w-0J+$lw3=`n_#E_p$D;_3ra!&M(%1p9=MZi02Z805rq3srAe>tli9u_uL`CYCxp!Q zXf^=*nNZ9zy_sUXzRDxY3<=R+o3Z#cph;N!)EP;;P+2D5b*(%g6J}R&ZDaO&cJK+# zdI;vg`jQ!5<%0br?5We21P)5RL-G5CD|bBqwby$wp7WJdu;5f!OZpPc4>aDrp7QIB z9|@yk51tGO@m{V>i?a}N-WbN;JFiOQf}bIvLU`ii#o70vg(dV6~wX@lZm0LA^G$J$4(C3u<$ z*MeDbT0~kae~73)=S)aXpSR&U(()T_u=%G`SkzNiiP^k|N+GZkVa`c=`&025P|jIG z)M5)fn*NzzUO?DV+~1@D7^ru5A;1zR3tUv=dh4%m76;({tRBKfI0~f8lmg{yAqjQ| zuyz=I_lMS~VwHyVP0*49LCY^aadro=S!g1pYt_uEQ*m%p?iQ8eLjq{Rw3@*e-3V$2 z5+hpTdjeDh^(I7N6$8M^`(t=e$!tL9xExSsz17qg%}NG!7Kfx&-DWo6_s`1#C1wX< z*_HoGZF3!IEj_GeHh|J{K$-vf$8n3(VP)8R_Zysj0d7*;!dB36VJ=`DtNUQ9(J8$pHZY2aQfn00009 za7bBm000XU000XU0RWnu7ytkRHAzH4R7i>KmOp3|K@`TfN^uaDYYxsPkVeoVMX(YC zVT!mH*&=L{5Y#51O?sPvt<`}DXOk3*$ZTYryJlbDnky_8lI9vAY$3L?kvkJ-62>=w z?sjg?CW2^{*ZpSZeczk6?{?2|ZsI2XTRgpn|5jjb_iDa2t`qp@2G81gCA+g*zwxyK zXt(u(Ziy;BDG8QYB{bXH;tGDZpVEa2o-5T>W*Kg$)2=U6volK5L0-Yn-_jYeGV5D4 zo1MIx-PJTr{mXf-xy2Lv0wvZ7ezU&oS947YdYAKDr?b$qiYc>BAV2FPuZo4krJ$8% zSdGh8y*?sVF=bW}EuNfwzq@xiyJ>Cl9#StZch!au!J7#P-q=jkCQ z_)v|YGE^+m6c3070BIGuWmXAnCnf&NqC&$;uok8v?@}5XL2ZZ(qx}KSOYO%Z0Q8IY zmRKdQ4=GupMTMHRU=2vbDIs2H1krFLIpSd}k;h*}0FhPiEIUq^dYm4RB(f@0%vJ|@ zQ#S(22!^KxrJ-gPL5%yKPNm?q>1CD)UEbSh1)v3$q2f_jRT!~EwWMVP(a>v@Mt;ct=$j1royh~h=Ux}<0q7P0EuS=(a>jNFdr~uRh#D@~>?|#1EO_wk-a1o) z(onO=mgN4ta0E~q@xB%u1{rYVe(qk#mJlKcO(1T7?z>#D*_jVS+*?}?`mq*7L&M`u z(^g>E5(eTz8}dXl*Q0noARbOd61Q*dO&5HN9VcVJgWd-3Ye6*BoQNZR00m<~8J$c9 zql#69ZaN_Tn8ulSez2co5gYFxUXd~BA+ZMoUjtaw~+OPRNrmk7Ar2`jjY$p3`-qhXN!CW h|0qQ1ze1U-;};O>yb~%NZIu83002ovPDHLkV1mtIvS(5n++(>G^q4k)bg;>DghaxzV9Kmc4G&y zPC=E)Z_rJqQzG!#p~#$}=nJHKWJ4(KQ}*(ovXchr(k1j@Q-?g?xfDgYC|=uZJ8C@p z4eY6_|74IZ^-py`(Zo1-_Ba2h4PMfPE;t4NtdAyHi9c(Q>nERB(&f@879HSaoV7kI zfqXdgW@QXw3?7g55#YiZg6?D+uZ#8LApivqG67=Z0Lb;GXF=yX5147bZvp_s{1Ha} z3{WDH0keRfg~S{K!08UKin?qsd}1xzWhxulgk=cm3OV3F$(1$3-X}Ic{T!#;wpd2p zr8bGxz6k)Dh1E$nNh=B38%&fl>wRK~rbhs$I{+mX8DK)O@T}7#fT8w<2W)$92)MPQ zl-H?L187&w>9RF9)+Q#vRahYu1D>%FpgX5T=S*8by~SXFdTJsOkW2_T82zkCfF<*Z zi4_6;Jzbe(fP$;r?>O8kWv|u7$|jaL7y#_91oa2j+B*Vvjm(|eH#{UJRs_7i$ARn7 z*&*wn`1{A)F-wWPt%xI@TF2d`&^Tz`_{VOsvK7gehs6E9xejLa?N(tw@`t|G55IKf zw@g{#`8VwEWbYry`A%qR3!M4^#G{JzsZ%MjXp`YP8cG?n6)GebUmqScm*HY1Ohw%L z!Ft})B!x2-64j=nDkb(TCw>t$7PAwF?^#I(>*6e8ZAIRn4l-5OTGy4Z=t-s5XQwf#iG4XiM%&KcSB!F0ka~75#T@ulmihQgT2Da{LmV>Qm;-77k zcrqf08yQ!Sdd=rx&^iF<52m7z$^+tS3q7E76>V8atk`Ig#0?}sxryg&v1rzA(QNO{ za{$q~elopQlk7GZa04RV_i}TYgeL%Hwx#{?Eqpf}m?sASeFYgHD{kQcKA{I>x_beI zqdpz^2Y^B-+H!s#Y^F(g>xOyBegS6s{P<5msAU8IPH&00B{QKM4Rd<_el4E?Knyj4 lxR(C|D5rd3k9m>FN1FX^E*RL2<$10RaJtNdeI@NdN!K)-i9>KokIAtFi|qFHxleq6;7)bxfZV zFwS5&3pIGjK$ZqYDuIg-T?&Y)Q#-J>xI^7k-MUnW#pzI9hg2yNrBUZf%q*ztZ@@h( zch@7AA|aUirhN9h_b$2fIfii=m+`;Cy1;*3V7fBQJtbT9g#|9KeRBS$>OU!1)!V8Z zoyc=moyF72P@DB9T3aWlKYJeyt+N3~`$HYpYrf9bkJGJhas$QLfTKfyh;5v%?doiO zs#dq8FRYqP80)q65ZkzoyE-#^)!Bdp-03c8Z9j(sIJ1L&C%)GJC~Wp`s%8VOdx-A1-s9NLn++I2=Mz})qDLxlTduiD%JbN@lG_i}H5 z&Q`1n_uQF9eKVPyqcg9?J|vm>lR%OprH#bt=R@XxzTHD8HY@ymw0i_oTfBuC=3mA! z@PcN->;=5w-SitZftzIRH#A7vfOf&2bw6GvWD| zIPd7ZSkk<yZhis`9>EU`6b+iQqYqxm;?T1$PLp7{PPnKTZ-jMv;Cd_Hhuy8)?@VWD`V&Y O0000G>fsQTfqfQDLE>DJeNYQSqS>VLuTP00009 za7bBm000XU000XU0RWnu7ytkQKS@MER7i>KlQC%9Kp2GuA}R z=X`8+0B0l40nat6HNH6@9F19NXkByZU}YVv0~_j@4jV5Bt8}!Oh~p?Mcd;mrMF4P3%>95#82^oG()91xd@f*-U z^ZfR<-)dyTPPevFySI=J&dG4YCTTIP^Hjmwi=Ex%4?IlM^#=BA*AMo{>^OCvs_V79 z7Kk(^+y{+ZLb`C?C&X12E3SOsF6&Ks&F)qLR*(AbGq|wgc8|XU!z16XyrB91F$i4! v`Mxs!_2bot+J0?L{@=`vUTr$J@Xz!c`qCwmitc1700000NkvXXu0mjfwzED+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/delcatty.png b/graphics/object_events/pics/pokemon/followers/delcatty.png new file mode 100644 index 0000000000000000000000000000000000000000..9896fa83684d545537fffe634e3358ce596d95aa GIT binary patch literal 761 zcmVFN3D(Scz}i2wiq0000000000000001)Odo00009 za7bBm000XU000XU0RWnu7ytkQZ%IT!R7i>K)jf}!Fc=4LOFkKixeDs)h|C-m+OnMz zL2m__fr*3QG?`MBChEti6y@YC>M5%3K4pOzFa(n2I#jx62|w)T|2Quw0KC;({XZoi zF7XxW*clMMay~T2nn>N(2KSy9z2YKK#jOF@6NpaN){tQkwZl3t8lb0YLO{Vfz=%(Q zdZP6jAkq%(x@<80RzS|$F)rUSigDEIatTiW{V4Q2nr4Hp{*F zhxx*f%l#rwxD-&>%x|c~>a~8_TR*CmIj;v4PKa+3p9&^M<>JJKMS-DOKybynfph{y z!w1{zZU!8m$VbKWkB0#t(!lxUkVx>|zBVMb{>;`l3SZ^E z69&kT1S8_h!(OtVEEzEL$2Mb+bs%>&j~^*qH3vMiuFcu~F4DDr8}{sxIorCsv@5&; z0LO@KC>#$ONX}xEztlzwbsK+kx3f_bSNNR+#L^@MEr2GNN{Zk-5JjyHDhY{_12SG|1NNl8iR>G_!f0m&H|000000000000000$k$yO00009 za7bBm000XU000XU0RWnu7ytkQ8c9S!R7i>K(=l(;Koke?Gg)qo>%>aTQc^(~V;P}R zrYMn>j7*)aM5n;W0E`Z`qH~xmMN!^}vLG{6UJ(9roSnq?eC>5WVnKO>rJr>7fA7vV zA*VXksZRBuRLCDUp<(gle``7(*W(luVkAwkZzhkK5WVThq)psFF(C`E@~oSLT5m){ zTkBgliE*H6LY9+N{yX+Vo#RQ-aH8|uyY(8!sTN0uZT<@qttkxiY_iq3k#_;m#HvNv zF?@?*+0@x!(>!AVdDx9RfCM*CEQ+rIV7(1>CQI<%Y$WTB#9I7asxBsi4s5%L-b^&y z1RBQxqZ#V1y4VmT@gfQIX72&e6)muzd|Ciw@=8=60&m{c8wk&5Eef;6+Ftz4W zC+%13OYaUcIb$<4v1(C{?a!EB1(NI1X{Yj!RhsTlgPN&7eLe5UH0pZ{yO{X9xHVG- zI;CBC!j{iIq^4Y7+Br0cMyu?KRmUgM_@{@xPaF+W8EBN2r!=m_JCz3@r1Wt;A3n`& z6vzj;V=E0Vb}eg%uFWcZF5MAqlN}& z^B(e>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkRHc3Q5R7i>K);(+6Ko|$`rx_|ZNI_&M2-^_4bn4J0 zu4z6*hjSn_Lx!A+L7)z`z@U7PPA5Vmdf^Q1oFx=86c2$A2?Q5nIs^pvXXu^Ida)wA zl+vlaNx%E!=T5rQ$pHV`zth}5F=ESM-Le^bzwrJVqnp8U{hC$#fZg@()0IXyc&T9B z*@SLzyx#rQ{)CrDuRHqz#(V4CAFMLMm{beaEmwrX5aYfJj5XQtT@p8PS~zK z&${J^`{5DB*k*XY(Zu#5S#ac$L6c=cKUp4N$p9Q59KD@j2OrR86Neo2iA|g)qX{M= zDfeaFs>?helgXv?##&+F5Yi`(lQbEfUy^uOu29{ojh`M)&M)i^U12UFLWmHJK5Jdt z5h?_DSn}D;xm3)04=Z=dmgnCq!Kra#*fv-SEV;ApHFL{8dPi*~tp# z&I)F^AjFCDoE292*+nlpY}0apnjv7Og>Hi{;{=&jKxM%W)rPSunB{&%#3;{Asttk4 zH@FX*07krCIKCAq0P~b2hfLM;#^y+^}Zip0Z-f z3s<%kz)Ymm?Q|yY6attJwWH%ZSx|P(+dIDSb~}q4O?l=Z1)0MOE)vxGUKG@xR2~vU z;Sa`6?oY4ufQF;ZZBl%bbjdx&y(g%R7jwiq;f-{H`6)%^9b|@Lm194KVe+m!h+IQ>SFq_N zxl!!r`L5F|^3p1o&)iOVbxCXXg*=y2`Ett_OkE?9YIfgPuEzC z2Guiu+2dH>YsI`c7#D3uf#0pM?^54gWh2RM8!CSAzeOHwAzfon+FfO|{QY|1tgo`I ie&6-!KK$GD7u!$wbyi@K5&E?N0000>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ+et)0R7i>KmOpFUFc`*7mIDm|)8XKV3(eB4b6ff~ zbX}SuLwuz)kajqMK>Z+{bd;W{f)Bdi5=t`^w~!?QgAOtU4$hyU?<>pyRJ%i#`Mkkcg*)S92Hv>#y zJZ+`>jFrM1J(7c**uVk)jD~q*<};qDG*ohk=g3pu%Ou0GsndPNsmnQimC@<^$1vlf zekSWnO5;|5$58vQAj`f_=f4ISTN3y4`N1Wfo|?KRK0_^jinrN1I}#UifJ?)EKF^{! zHmv}Uq0*hW%GMV~?Bo!~Cp13o=ktr_;MWT97@B5`_;j#-kcx7)k7KCQe%|}`(X7 z>Q7RAlZ_igpJBm-ZEhYFnwJaGE9H3Mc%qGojLvJ_ajBC-Q4|GlHtaDhkO?b_TPE!S zVp^P+I&=&AR_S5Q_DF=8jY=Cs?lBthAh>avh82D(c496aC1IJ{C zcOb$_Uqq-wK&6LxmrH0!yXD}o+5tiGLGDMInTNp&=Ly>ej>#>abX7nAaE>F;3*3NZ z9HQYkZGUd#kaxc70-|86GDx>L!XCF v!%jz(Bpog%;X!#vhGY1DBL4i_^6%<5E!w$Fy}k|t00000NkvXXu0mjf^{0!* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_normal.png b/graphics/object_events/pics/pokemon/followers/deoxys_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..000d6ec5027b314ccda4155b783ccfbd6af8c5e0 GIT binary patch literal 897 zcmV-{1AhF8P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_en%SR7i>K)Ip2WKoke?!OOxs6oRlqa2NI@h#$ZO zzs6J$_t3*mBoe3xGZ2Uu!Ot;4oZz@AtXF&4gPwX>!2|+X+LKUdKZ7$#)6UE$^`f_Z z^zuuZ|Gdn+7NNVktAAAobie6%zyF&57SnyE`1!csG_qE=EGxu#IPUksImRC9Gn@~Z z9%frT@C##H^gEV38~6DW#=f3rTb7U=VW0IGxa3fvZi7Uizkp?VMVzU?;DzY6;JFIS z1?%+1cZ|udxm#ARbawu7h69XQmw}L6E=Y3HytwTzGd$D-Z6lO9M`Skp5jaPz%W&<~ zf!9unIt-VyVG-^EZ6h`F#b`FY@(S8*8dn4lgQ}f<(=fft!*DkNw(CkiKAhf9S)U;z zgaq0l>xSul9(&r*TCQ7;K0lkDim15 zN<0y_KMcz!lgbFRtrqYm&dG7w9z7+dffN;ui`*NV4w^H%x2(#N?b2+^xh7S)I9XPC zGbIPa&vc_qo@Z6W>lHPbDiZOs{RTsZRbU~~Hc&InH-YBV z*hVrb8zW=iEJJ|~WLI^d=C+JSJ1k57bEd4{5UEeEGb_-xdO{xXJ_~iF*XF(3{;%~1 XwVfML`xDa%00000NkvXXu0mjfWdfXl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_speed.png b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..01817fbe85f58bd1e5a6a37209e07716843346fb GIT binary patch literal 898 zcmV-|1AY97P)>G=Tx0l8VxL8+O!DJdaIK>z>%f$ljC00009 za7bBm000XU000XU0RWnu7ytkQ_(?=TR7i>K*1>AqFc=4LuR8>E2$VuMOq$E?gUyF! zeh;ru+N%SGLQnB1w3plhdx4!4%#uuv4co4{gt8rqD3q}n%skT5ptO00>62v1abtI^ z^fnO+KdJiuvMnnyjQ{O#+x!mSx7E+8eeVU_6;L;;eP;{zaHStSAZk{)c3}AaLAhB& z>0VOlYD$vns+t&0^bChXD)-SNtu#&Mdg_DSPgr=5FXMe_+;7j!aB&2mG*5}#0W7L!~+ z!F<9^(3ot5SLIHjt@g>({+Z@pnxc7&KE9Z|j&P}mP%mEXwbS<(>7m+Tw+xMtU;R%} zLb3`-T91dUAjypji-P9OMLbN^KTGS?u=#X@q-he&Jkg8#!r3I^e(!}T={C;fcqqIs z#-E2VSuFJRasSSpB#4@%OGwZoGqEqmXVNa8gxrL5d+=$9*MHzi%eR#THl+()5qy57 z1IFxN99hp=*ci@W20B;ffdjU_6ZPX0tLwK*-*iLBb68?-Gju zX%S%99d@=~s{n4a9I!cR4e|lfS->zIwZd2jWX=NM#j5Lj#C<)_1)#SvPc~T$hVPkZnXd0Q^Wl6Sye0wg25BpkOp#>S7!D9$r4$Zu=qI YA7AGx4^3@50RR9107*qoM6N<$f;Eq$>i_@% literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/diglett.png b/graphics/object_events/pics/pokemon/followers/diglett.png new file mode 100644 index 0000000000000000000000000000000000000000..958ca3dac636ad3b2dde025eb83e70a19c824072 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*qGVLTv%A>Xeh|Y z$mrD=jZNX1*+(dGh4RLQh4YatNqw-S`s7;wyM=+<~-* zIXYWE2Y$IUv%P3@w%+F1rX2~}?KPk6p85a(PL-}E2>7?Ia+aU`l9x-<|I|L%I%V5w z&zasoE#%a><~pQqip}fV^`1B7i})`lcha#s`S~3(7vAFV>X*C(hQfsHx2K5UwF*o)^dY$|J`dDSI2c3@t$}y2Ndj{u6{1- HoD!MG@$9A-O?W;enC)u`xM0If-#85qG&&00009 za7bBm000XU000XU0RWnu7ytkRwn;=mR7i=LIIINo#C1z`OQCRr1fr- z1fpj7%>4BE{xma^jnMz(npFR?V8rDl_=kaY)tut2^-l*LCbmNy8%9imlha@ybObyJ zCduHAdVpgd2aLFGt3f0%35Et&*d7Mp1$!Z&wf)w0HMjxTZ9&$BerHe*=dirybc)<% zm4T$HE3K=Fh1(GXF5G8S!eu(`yQ?i*Bc_xxD{M_*w+LC|pNF%)BM3ZaX(n7D7(8Z# zGF!1R!r&4DA|sUjsKBo2tp4#l_4*EF;42za)&=;+poKjvqZH~; z(JH^z%qg82;UpkdsLqQF%(-q7>UoK9U=NWDEa7eV!ya2HBuVQVA>QwJBAIYHjg3%# zJdIH0$UxYL1=98LRh2c4kC)X|V4p|{5vda+Ts?{6Qt{h-!;BEY`7%P41Jmg1LVRYb zKFqGdKsdg*4V^$K#HG)SaFw8mFB#|Yp4rCBh8ZD-?PQWOhD<%GMclxfe`9=M2Amt# z!g-m-LJJFdG9_n?*gR=rTf|KSXIKfJi!3lqbUiA4UQqV_;YR!5W6`rJ$kI4%Uuz+< ze8~`gQo{0eGs~xe7J}faHf*o3O*xG|-aZQ$?QQg2-dE$mp{AL@=8*l8M?IW^z2 zyp}}@ulC*j??)Id;e>K#?snM>VgAL|i+bUhbC1$>e7jAKupIEZZ`BJ-zWwmHjgK>Y zo2VCV?{AK<8tA@NFEIJ=aQFDz30_9a=>7d;a)jjocb4>k(Jvow?~)T-wr#Q97DpM5 zbt{~D4D8;I$e-KB{UaR$59Z4Ponrhw`)T3wo8-+qx8R#+^6UmIKHlhD! zkPJF5&>#?mXwVW#hJhd$1&juU52O{x>4jSk1c%1|==vMwL>H_{7~=x~000000009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)iG<^KokdX5zb5La-iVVq#ipprUbf3 z_LCH98CY0zejLxo9)aUp57*~h|P`l@KL)&t+etYEG-v(g0s{xOth zWdp?PC2;dJb#pM(KEXl& z957J1x1OADWD!M6SyZ;~P_o+4OtY}-eYXDKmQQQkMi|CN>~SbawpB`3-NPE60!tGg zO5H^e$f2;OZJA4?J@s4k7Rarq(rYiq(8HjEWU^o^*`OHZAWce4F%+B}ydk%s&(L@N zXfz|bp@jC~90+`RLFrALr@ep$T|!SI{Ke7yuiH!hq6bD=??Y z>C^z=bJ|SzkF`aA-N5XgXxSd)@5)xLmk+26uGT@t- zG1l}ITEN}`Q1u-gN4;;$?%mHOT!31JLPd2Uior{k3V;ar| zM|jP`c?GLi2{q7pq5uREF8g>Bi0dCtHu6BMg#pEHN8yZDr~Ke8`1I;U;PwdzK;FTa zaZXI&Io)MyJ2IXT)8qM-*n-Yr4!EBj&)q&@2RvJJfY+?*0DNHv@bl#B>JRDGXS~ay zSHG^rYo?b6oxjkNpHZK%1MWTSlHM@A9BzaGbQp_PXfShcc*)85^&O7F{{0#oBhJ1bR-oc`?L!7KUfLN1tpw)i4$a^>p< z~_qRvT7NY>ph&wdgBt&w-ILP8Z1;OvlB4rr&d2**{hw^))``3f3<%a~Qyos*a> zUsL5D-zZb#wu*4gEiGivWfh@w(71awF(pB{QxZb1wccBB%_rb*`9=^QE@&Cf7iMbw zo-EgO(nv?824IPb?$s>lo8bAZ8k5M?x|~!#5$DI@TZc)IFeV+qjjb;kS>7bk8@+|GB7Mw7W1c}FDvkiF>rWkY9 zb)$L;=-^rv916B002ovPDHLkV1m7T5O4qh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dragonite.png b/graphics/object_events/pics/pokemon/followers/dragonite.png new file mode 100644 index 0000000000000000000000000000000000000000..aedbf448ffa80f2adc17537fccd64f99256c0efd GIT binary patch literal 1030 zcmV+h1o``kP)FN2o!O@vvF`1c}>B*U4VPVm!dD)3UDNnPS00009 za7bBm000XU000XU0RWnu7ytkRd`Uz>R7i>CmcMJ;KorL{2o2c^{ZF2w!HZ066mU&6 z6ydR=axbk3+!9BBK>m?Z8xL+lTZhacLomtEC4WJOQk2225=7|h{nAN3;iQyy>ccqP z>D~K&Kc{yWTh@OOcErC&|4v|VVfT8@vh%z7QFDqFcw~Wp6u91iXn`k)9Jf*4@8^a8 zh(!N7rkA>YgUE2)Z~La?lE(DtqAs~fG==FD-s_=3WH`1lr-r0OE~kr&YSJXKfk$f_ zk>S{eqx0Ml2tKVIQoW!-)DYMpl8!4oar?ZtHUww^ZLDFLM25iTSUT=&h4`WC)r$#% z6+ks-cO;QsVhZetaeKot8LJ&|pr{uU>;2U!z-g`u+TE5Q8iAT1JID$&iYz`**)2{NVlEJaUvo@DS1pGd zXu-S=uzP$@!F#)&h)r;I!xKp~30-L^54eDjzy%#vT^L}0N$HpgOkPSr3h$UeyS7Jh zm{4ZOJCrGLI6RR=laNn1fJj*VoZ`wA4#CU$7}=soI`)vRZGQZ#S0QPAq7^zpL53^=66Y`nx8-myHK43XLoo~&}ll(6S*bM zp(09%+#zlr1%})s50Q$Gs~saIN%%@_3!$b!fOA4p+?N8Dt%#20dT%{ur9CW02qIw= zNTOb(9diLvUJyIC#Tv$yfIEUUF0a?C7EzaqBZ<^wvKNRp#XVmo*n&tO6XqBTLaefl z4{p=kqYEt%+0g%)Wkt7Tsm@kJ9r@UDPzo?bnb4O+<$Gj~nL_na2j`Hxh_mYUAi=|O ziM}$x4z409Eg)|g5B0VxqEdi4W!=dI@5|+FrDzaYH0Li}-!CQ+b1aU!HkbuWv8r#`X^~~wH=J!DvU)y0 zwY_pnOrnP4J`>Q{JjRROv*-Oqnb075F=GOwk9vtg)NpLgvFcKh(Thkls%~e4h~3`~ zI{{Tw7(`9SHmP5BjQNbIk3VlC;u%o?ziSdT9iMeJ#-hE;W6~tz5!cijL=DH*V?Tnd zCXp#%5;Yw^6$TL>85xG)6OR8N41vENCehaT1wax&NL?IBYybcN07*qoM6N<$f}R`8 Al>h($ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dratini.png b/graphics/object_events/pics/pokemon/followers/dratini.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab1aa0340e4c86c55f8c78430af4d6b524ae3a4 GIT binary patch literal 693 zcmV;m0!safP)Kl(B2uKorI$uea!^K{#GYQcyZJa_P{i z_%xVK0Ubqn%YWd+RBbY~|A9j^yl$Bcp6pg4r1#JDPGH}APuN?Q;x`yR`MdA;-JMVn z9OpR4`Cq2zeqO(vKS-h=2(R}CaLxTe@013fGI|mjgBS3Ct|oqA&Mt7A`JHmWtf=Ds z0bNb};<=j22<3y`ND4Tc0mP_82go$_HvpHV2Z#cyct-Mj=`}!tw#9)=Gyl^BaG;pO z0`c60Mrhw+;Ve&ZL3#5TTd+GpN|H<9sBK3f9`FHT@f&-*d5&<}n1Ul`2JHS#_QhC5? zHn{9FfcSa4JYS;#4#a`ZuL1PdAC^DhA@{4}Zv)6UV7yw55P$ zu{fad7iUjFkpi_P_>xbMH`*^3CFDj=F+pVI4Y6e9yz!ld)EWm`Al9O+raJd^oX)hu zTMoZifI_cYtG5o(XnO?+;D9*>yjS+fxW?Z*7pO*?HPu^LtBmZR1*)-c{9%ssJK8-O zmub4$r|kvUNq2z`sK)Pny)-2U$hDgx$>%zheTB3Gjz6x6n|%MdZWqaeIwaaE869wU b^h?e^?||>8EtLu900000NkvXXu0mjfixokg literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dugtrio.png b/graphics/object_events/pics/pokemon/followers/dugtrio.png new file mode 100644 index 0000000000000000000000000000000000000000..b60c3fb73ba29829f09888c7ad535c529d7f4878 GIT binary patch literal 764 zcmVKlQC=KFcil{oPK~@#x94GKnD*;+?E_T zP%cko4T(hNa?5=H2k*@yXy!uu0s0wkwz=X#TcL16zDu8E%eG|BJveTQAdsJ>_y0Zl zC4`*TX`R+-{q^#~@L!I5;q-%wnGjz(65K%dc)Q#YdP0bOM}>p#aW5C*u1iR~dvR}7 z*a>c6Pc#F4|616BmXLURnOOo`*mD9b?hS@dKYn%!@zBfTbNXkYD`?)xyB!RFKg>FW zdW6~W)e_jk);mYe{LlLP*XQ%W{H;Ss^hlyGssmfXW}xO=9I`TE{`h?`oYewXX!?_~ z4s?Z9pn3@-DP<;vHhRa~!Kb_qbcLjxs2qi+!LRIkc^pIVMD!>&wfq27$51MFJ6P;n(rbAa~1y(Gj z{EO}!BuS(7v?5W>;rg&BCR>GCZKieS62-_a(XJ=~^N+m3L zk>BaS^s;1`*6iVL{-6XYFRoV!xe>5kfE-}klbvR&8HELJH}Y2?(@~Hys`u9wtNr;K zhGB&tYkeWC85al2rN0isXuMDi@wWhZbbMu+*)kaW0i(cT-P9Hg16TKt~#R98+og*egs3}Q$agQVQ0JVrIcPc>v+!ht|Nc4S6)%?kSL u#&DmKJ~zZ~`V`A~9kv2WSG1Y`Ki4~`z@qj`uf$pa0000? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dunsparce.png b/graphics/object_events/pics/pokemon/followers/dunsparce.png new file mode 100644 index 0000000000000000000000000000000000000000..2a886d622bd4d4ef6650f94e9d92e14824acd8a4 GIT binary patch literal 789 zcmV+w1M2*VP)2aBfX;GoMK~Z5rIXQX3*#H0lDj0xd00009 za7bBm000XU000XU0RWnu7ytkQi%CR5R7i>Kl)sDGU>L{WhE8o99B$|!NT77MQ4j}* zP4z)!pM!Ci#QmzuOxuGE8isWzT zo6E2Fm5ah*H=pfeUccYx$NRhhY-1bS@FJ$uY;N43MYEybeD3xJJGA12-?RZrP;4A- zxP(|7QHqlXt*E27G(a+CV4w~6=-&A;ZFn@>q&(Zp!Iyg)@r%Qhp-ErdWnL4i*pZ~J z(DPZli}^DfFo>NanN(cnb#`93?y>R_8 zYYmY!WE(T|>DLFs(BZ%kun_CXzzTz7%-)P*j@eV|uRd{iHDKS+3BxIw=pfCkHf~AMT=O0AjEt$&^=5R(Is3%2 zcof$|UJUt3sIaETs_$f0+`^|A2T~tSP-+(>EkKsGb zZ>N2QR6&FZk`J;l9fW-)~oIa=Do;=>)&floGk=%wv1Lzk+w+(NQURGe6sXbq1j} z@E6-<2+2hUAfLMt?F0gg*X^Z$*18;p7x T{(WgQ00000NkvXXu0mjfY4CON literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dusclops.png b/graphics/object_events/pics/pokemon/followers/dusclops.png new file mode 100644 index 0000000000000000000000000000000000000000..472bffdaf7b8db85414f69c200f71f22618f497d GIT binary patch literal 915 zcmV;E18n?>P)n+aH79z500009 za7bBm000XU000XU0RWnu7ytkR2}wjjR7i>KmAz}*Kp2MwhQmt+V^A`<84k}T#b7V) z5`>o$?P(Xe39k#a4WSS%8ImRS&~(d?jvYI6=vpX*fU{`mhtW`af(D}@p!aX+d%BZs ztCj+V4u#yL=T7%~?n@`bxG(qR|0$(HE^ejb+`&ev?G$mpx%_&Tn}@|rJzS@V?`ST$ z6QhU?gIymMbEZdz+egd(ER(Y1IYm71me(Z1O>fzsWyA2j$(Ld_3wUkd4HsLpOf$A% zzx(&R-vxAxd^U`s#p^pxK99CJw{w}@)Dis!eTJp-8|PD}fH~*&TxJb!N8y4X!&EcH zPoHOgJ_i)o$mLNTMG(#XS*8xrudziHyYb&p!gAcd0Mt7J|m8)tE#4;8hECI~4M>Lq!OsL=j|n*krWb79;RQi!Q`2ObW`GImYg#c2o5-DAhiPo^Sf#k2?nKk9#v3> p#ed#n_^P@)+F7>!kBWa-egpmt_h;_i^!We)002ovPDHLkV1imhqi6sC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/duskull.png b/graphics/object_events/pics/pokemon/followers/duskull.png new file mode 100644 index 0000000000000000000000000000000000000000..faeed6a2041b9f132d0c5b061369decd89599b9b GIT binary patch literal 568 zcmV-80>}M{P)%tcq00009 za7bBm000XU000XU0RWnu7ytkPu1Q2eR7i>K)iF=PKoke?YNuOeQCAm6;>BQ#U&6)2 zui(mXG`QeIaA{H!yl{((i4->n5?=>Q2U58YWob=&ee@bkoD6UKweQ~l+Ca}RcD1Wr z?P}{H99`h<-v)>U3Y66wDCBd2o6)o_0&s(RpRCYg5p2vi1Y1qKg=HwJLz})vln~n=xm6P zT2#8Fw*5z7z5H*2oerE{O|I2|qD^NEZN}TBjvsc!9G*QccCx@b8cul4)0zRiGuAHk zdF^<_ZkO3W?4)RiPaoP1olVA=wNwKX*SRfNcb+w4r|;x+;NMw#Ta3!4(#c%_&iYaxQn~Vua7H&PdJ?Tf9o68S_EKmK-I?p0000S-CMu@o8y!VX0}EDM48wVM!tJ*=Yd*0RR91`rn;t00009 za7bBm000XU000XU0RWnu7ytkQ-bqA3R7i>Kl|O6SKp4h_p;N+v_eL0Jawr{oQy};| zWXzIL1qZSk+@P_9Z0)9|WVFH=L?@N%f@sqr1d>4Z#>jDSk>tLgp{M&RsUgjf(4o1( z`0mmDp67jK-&xkvcpCrBfX6n-lgH(wQOy87upuIGZ6Ut>K`|DKj-vU!^^0VoZjjw+ zfG(4EYcjsCzSvAM5>#JvROwkg5o(Tc_tL&yXWiAhfF8rwjLfJZUL>e$SV@E+S-i4w zcj<=(Ac0Ef^VsOT4~>^g5RG~!GOK8T1lo`RRU!clw{Ip4(7XXB7C^1@dARk7>j~w$ zmHuj`Db%SEIc_AY1ZBMGQC;i3QNgiMw=)SI_N%Xd?smm_a6iOz)Fk zn)UpFG{D&V(APj!kuu~PL}CeqD6q%g!Pq9T0uHxv*YUMZ2>DWcaD5rCefRbW8A$_G zk$LG1C=yGc1^sX9-n;b^H<3LgWSGu~&Ita11cdZOMug98uk-nh`dO-qM%usvS0pyT zxxKOZJSziPVhLn=pTq!>Kj1oIJH5_62_#KbWd3+4@Jz`>mBS+kcnwDVu>lyI{QA&*qYFvU4L}XI-a@_ zR7Iu32tXtTwUpDJ$0xb25rB0oB1T7fjJs4HHjNkVj`zN$rm~{)6(kdzrsZ)824DfD zQ&ykZfv%U^rNa!(-Hs7uMJ=oJKwcy+?_h^p`80%U{7UB+E0q~a$~Rc8BK`oRaObt% ySZ?1X*G9D>G1{$L9xRP&;=ej14}B;9!|@xJmLpNQ;M8LP0000FN0a0ReeoK>z>%000000000000000F0hie00009 za7bBm000XU000XU0RWnu7ytkPm`OxIR7i>K)In>5Fcb&yoB}xtYn)e+eS-~lEk$T= zWmxcLN{!2I4rbPG5l5@!I?ABma#5HhsoB_Jhk^f|e)`@^U$Fu(Wy+K(Q~pt)a2qlJ z8k8aGunNu0cGIeX!9CCi7)CxrRm+NC+%OX~(FWS?8wyey0}O+f*JasqF>YAxla2m; zEvq!V=4D$6mzBDY!+FV>)P7Oh-N1sYP~kH2I}Zz)hQ42E+g-SCpsK!NPJ^SGI1}TB zoELhn?H>p9TT9B0*|^&mzoJ^L?LOp@zmm*tc?zSm7&o~lUJ6h%^jhvyGcO>*X?Tk0 zF8UaE9*|kuwEXL#w%s=@?>u}TyS<`Y`s6TrxJ`D9Ki`0H_t)lflfEt8{=oAXpBv2q#3CzIRF3v07*qoM6N<$f`9VyKmY&$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ekans.png b/graphics/object_events/pics/pokemon/followers/ekans.png new file mode 100644 index 0000000000000000000000000000000000000000..dc315987acabdc3b2d1bf3f111f3bd9dff9cbe15 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#_tTzPS!VPT@?$;N|~ zft87dnLlqjGBPqwOq>W*f(dqTs2&4~au#?*7Bet#%>`jbwW+q>7#J9jd%8G=cyzv< zyfN>Pfk4}0uW9MxQ&Zktv1@4kz-(Zk*2Ob(^`dp10;bwsKJPYG`zhMZ-jcL1NHwqV z{kebj@il&vs_#6O`~JiH;Ff)B6EsunydBk+&iT6~?)3%hXW1; z{`(zZTiS4(HQsn-&>O!@p*Skux^xjE|^w^({_*1mW>-$N(NCc3gYyWcTU zTA_G3Z|{P6Rn1pstcm+s%cD?{apU3vpA>6f|KOCZ)n|@ueK{v#v*eE4mWE$f1dq#y z9h@VT;NI-0nz*{CUh3K^*?mIWKAx5?X!?EUvy}a(cUJ`OFWC1jxvPzF`l&}AqW2tD z2`QvMNs=?_4Nl~YescIHhi{zL3O2@loRzB?w6r@Iceps_$1%uUvPqbDtN2my;+C)C z;)dtmB>KAD@11dgWpAajOO*Sb&+hX|+U%aFrSx?RPiEikJE6cb`2Qh}DV0Y)runGU Zi^tb@?$~&x%Uuu@`<||TF6*2UngIV)`<(y) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/electrike.png b/graphics/object_events/pics/pokemon/followers/electrike.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c1b95f1879779a8eec26448c76486d938aceed GIT binary patch literal 614 zcmV-s0-61ZP)K)Uj{cKokb>w^(vUOBh||4lN@(H6f!V zx3MzWB4^QV2=YX-b|BfV!gd}T5<{CY3yS<#_Mi>iIX)99iqwH``<>74!!|a+A%`4t z$g6X-$8XNBMYI3=f}`nOqu&}w4Rjg|ju6n~eM!F2Jc;dwqdb?$*`g{fti(0Rjx~lWB2R8S|?OD;%3JiZ=d7khS_P`glR+()Ea%poqX3O6U zw*~1$x%KSSJ3$@O=7#t4Cf;{CaOnr=NK50ANz&C;2uSLMjt{Q!X3~0T*B_~i z)J|8>p4i`kFQXT_FE{8*>dWH}%wxH%p737z1JqU4tyyuFh5!Hn07*qoM6N<$f~o8j A8vp#5JF*#BB**V!sA*mSwSy36O!O;N$0ZB0_>FN1dVR@-}QGr=G2{Tej00009 za7bBm000XU000XU0RWnu7ytkRrb$FWR7i>KmA`M>Mij?y&_qH*1}_=2wH@U}Z3GxF z7a7suK`7uqKmpXf2C{W2GFJkMlSzP$#0WY%q*@yZETYn2p#j@7pu$}ki2r~D&>cKc zfUif1_d^N=b;!`6ZxHTt ziha2DpVWnPbAjmrs<8) z!m?xc%FO1l-J@*=+ixa}&wY&jlz%#@B6LL!g4L_K;>3XWIXbh@-eU{3%xn&hbf3Q2 zt@4C%(#4Fey+_~IsX+rmiFNFk*ep&7nua z4VDbCUu4rKr*(g>9#@awrET*OLpa5a0t{eN=3>gP^>yw2@z->F3+J^aJ@c_qVO&WV zS618}e_N{;o8w}7MvM!v!3T1DTL1II^A~@EYz}BSIv$tV{Rz`HO1aZIMM!(v+&^3y z2rjY&HR_(~Kb|`51>a;%E5oPwTGI{$H!x0FX}yTta$r1bhs#Elm>Uec=hwLFuo1P% zKnWUCeE0zfh9x{^j1oZz{Wp`N`~lCGl6oc9i<5fbTkub%r6zpmH2dCt|h}nkO~YA*!82!0Z@eDFHaIJ z<<%EFfo{BdG7tt!aXy^EaxEJsg1JJ08ypt)Wy5xuq$(xeX3283DG7cQ(q1A65aO&P q1qee0Z6?sAB5vOuN@fB7PT?P7R@7>QyX}?$00004~v9ak1gC*~vLEQ7L(;X`$)q`N@&d000000000000000Ty9~N00009 za7bBm000XU000XU0RWnu7ytkQqDe$SR7i>K)lX~NFcbiA>87KFnQ`bR7(1Cqi?bYi z=(&u*uBBjHa$HY4$(R`hokE}_9>@d z{+(d*6weUll{mpa4>nwgex4!9d2)j1m>`LQe*PwyIBnfD64Y)DEt>A~sIevWvU$d! zUQ;CO|MC6rI5}!en0pg=)}6g3Wtjr#j5LJgsIj2lXx}<2;gG)A{Q&|VgaG2W8H}9K zZ>**C4^v}inP92}A544P?0zDcFjsSLYqeNYmgP>3ZR?th@aZbznN?XXOHp+j+M7sW z`o~q4Nvp<=3Aq3rqwe6kE+NID3As!iv-|Gge5)anRS3_b^MzE#gq9#nD9oNqJ;A~3 z5lR?+#&ykwZ8n{^wL$6pGiY zR|U3Nz`FMtE8*rE%r}5%8c^WLjBw-mJZ&9*j3L!)VGn_0!rB#)vWBl;pcZ|`mrKJJ z!~`poFh2YpCU`HT?DBOc)vWCfoBHN@Q>Q&9WO~;$_Vs6>TDPw&+-?d{Cfj_S<)l3% zG}-)stMBWi$GDbgu+7YdT+=v{5#F07aJ_9eK&ZHQ55o^Z(PK=Q=TFWAj@dTDXlA~x zZ7-gsEGu;P2@~`6AG?q^Df!7+0RaJ7NkISr00000c4My`00009 za7bBm000XU000XU0RWnu7ytkQ<4Ht8R7i>K)<0_-F%$rBfj6T?=tg~rJI>=Rhc$XC z90#Fu=+G%}92jqf5@LUYbO?ns#`Xs=mWNZ$X%bg~E?oloE`5ssL?=sWA$05W^m~@y zdwM>D5&9p09q}Lh)@XHK_nV>)5$aG}S029}F`P!qZ-`YlL>;zDE05tmVY8@deHwTD zhQL9$m9A3daVx1>6ejZ+PNNlTRBIUFI*x+6mokqLCbTADOqj=FHtd8DDG61(p-iuM$|OrAXKFic z)0?J**O3a+ZO$@QDkc#$3^om$Rx;p>L=la{?YK>El6Axqs8>0yR~9j%__m?tR!mYE zC5m@96>aN!oYPv;q;gwDurkU5LPNJ}!eU8C&_zxo%n9Kvk-S$qjd1k5^JKTwrr~%@ z6d^Q@oqpbF9Z}t~=k#VK0xMT8uZV6(RlR-FwvP7cr-Z;)7gSDTp2i9uOTt}N5HXGT z?pI-3$5hN`YCN3n9z)A86HO#^bh|C)Bem~-Xq^#a3a^F7s)lk&tj^q?3Nb!YO70eF z8ww7^LWsqeg~w>TN*O#lYq!T@F%(x9c=rw2hMg|Yr+Vn6$7q(aHT=GNZvVK4)64$8 zoNXvL6w~=!eEaAzlI*rD2a;4y--+qaENC0z`|14;aer6&tkz|zD^^b957W{4vbfmK zYgwlr?u3}Hy+-Z4$jc*Kxvj=RjIx)4w)OeJ=i^b|Yjm0ExbXS$cz%-`1#P2tk*bZtzh){oS7ICCyvVY0;5E7_pe3g}j(f+`2<-9C2BXgr|jL^=?vUqPy zq|D?lIqxxa$;PZ}x|0;e1l$aB%TN&pG00000NkvXXu0mjf DY<8AM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/exploud.png b/graphics/object_events/pics/pokemon/followers/exploud.png new file mode 100644 index 0000000000000000000000000000000000000000..fe13983e17fc6c7d03dc292869773da9a00c6925 GIT binary patch literal 1163 zcmV;61a$j}P)CtHc0RgG8!Eqrmxj|{Mso`mHiHRvexO^d400009 za7bBm000XU000XU0RWnu7ytkS0ZBwbR7i>K)<1~bRvZWLhq+KR$|cku098ZspB zzz9xokOzudEJFVshi=8MJT!Q4Lckshx|725BXy@v?U1cUaM})C4dto>W6Ill zlv|R$cX0hZ>G_||_ENf(KJf67rSJDiPm+z$|KmS046)e=mF$1y!%no(2-P~)M%U|` z>{Pl-fkh)5)w@>7+F+--!KHF{X~spPQrCjO`r~yrK8j$*{pLEC>K(CEP%s2KHPcxv zShmr%Yo=ZAtusC8RjLblMWfQKNn3`pyw;{`n$^4O%w+nY+ndJ~jY`&?)3&72ve)@G z{lcVdjo*^8ak6mDi$Zh7oV8 z15WYux)p8Pol|o1*tS;Lkn(qlUFHR__`yqUyl$c{|Y z(H35VYjcJ}zd0Pfd=#|2i7K4C!6LNf(5=5i3;3e3ntm399#&Jqydd$1Q{VY%w zPHjYLjbJk))DJ^L1wx^b8@^yF!gzB`2PqWn>Id=7aR|>cnHsi`?=DAweH$PZ2!%6e zUxKM11nzWIralJA9O^$0#`i23q%NJlS(GKt%k%N9`Fc3~>HHvCV}rm*$isaV2%k@s zpkn$p3nPI;iWVFJU;67?D{zgI9LLnUcP>7}fT1y*rU~$X}^T6U*Dn!>3 dR!06C<8PQTiEA)gQ8fSn002ovPDHLkV1g?WHNF4< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/farfetchd.png b/graphics/object_events/pics/pokemon/followers/farfetchd.png new file mode 100644 index 0000000000000000000000000000000000000000..d4eb66b53a5f3a4ca74eb385bf233d6f88123682 GIT binary patch literal 811 zcmV+`1JwM9P)gryp#cE_v5_fBIVtJs`H68s(b2)Nfl1k^dC9qX_6Vic!^mtz{G~X#vE{M6>{GZX(=QF{;|HHA{hZQgfZgwdS{m7T_3F?bn)TDcJ$X zJk3mkZ8B5#>umWI&vji+iqfRk=f;rzam;g)g0S#3gsxH0 zk6#w8T^pmnV?C6EwnUST3ZoS>2_Tw1>iu=X@tfl;wnJUx0zQ9h+X5Q>ozi?L#;pnZ z=pK!3g0lePU?1&B;j49A?{o$iX!ji3IY;vP6up8*uwR-Beb|yVAs;%v)&Nfl*98@R zzVd~FlMvniuGdZJq40#wuhhj=X%@n2_g>qCqVSn@0tylvbM11+ruPuwD`pCbBv($+ zv>fU?v@tr4zyByLe!e?7unAdMIIsyr&^oj+^8%20R|CGN`C9;4c?Vp^aTkw@L4L5F z-gO^r!iFe}MtdP7xPY+m^LFw(2^xo9K@8ObVu%mO!ICht_NEUCA05Xm-|+xh6fQMd zc`KZ2B+iJRo(3a2>bF21yjBADGEcQ}0b>=Aqb<~@iCs*a{sCZKd&4PUYD|AL$2cUb p-W;M9l^K=Z>hKLuHxK&f?GI$4+yVl_I;8*r002ovPDHLkV1jPMc^Ciy literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/fearow.png b/graphics/object_events/pics/pokemon/followers/fearow.png new file mode 100644 index 0000000000000000000000000000000000000000..99508e3be13ad3779dcd38d71aff4be9ff511aae GIT binary patch literal 1072 zcmV-01kd}4P)L0LHwxv6pK>G`oyd9iU3SrG~0$*BPW0RR91J9O!800009 za7bBm000V|000V|0Vb6__5c6_rb$FWR7i>Cmc44+SQN)^HK!Q_s${sai)^uwENLd- zX2=tSJcGAc%m#u)z|yXwfi#goXx?JGG-`6SoQ)V_Lm-$ynnYmMOsBDh^$fXJx*wYH zM@&*|vA6M&?#J)^|L2~O3HjfQ#W&{tA3T5j_~v=|;{G6Dy76MM35dChTS36}uLw64 zY(B$wOyJ)e0HBYG{4XZ0NNssBUEjQ^2(}A1I=Q|O5K=W6#REVlkA>$GH4pAUfe~vL z{&o>x51`ahA-+|~M#$7lXIIVlqNF0N(6ce7YWeYHz=+jvWEfzscVQtz&)KzQ7%-y< ziUGh!>=cX_N0$ks*^>heK&P(>(5nCuGm1cq^(cCXonzz2M@NfIz`^X%fwDX0fUYJS zpiB*IkE(feH84~bN#_~GGXvC(*twNEZ$4aj{_6Hq(4Q*}AI!t?-Du44u0o(>Nu z6W`B zOi4g2KJ%JXCTlVZ3RR;Kf9-aPcvash&tZ#cLl1XDKhIv;#wD+6?o8?GlT5Nfe8p>$ zA}-a6Aj=XtJ30}Eb4472pOxoO@mt!j`0&#o=r#p^_9X)Htuyxi@0BeRh7d(fQZ#K; zRY|4#Z=WmtjVls=_mt;uq)ITpd;g3PE2klPjw=DqS^e`_ZR@rQOI{NkNK8_iyp$5! z1dEC*s<4AZ3NiAH+cT5t%;TZ&iYt-jy}_#3qVNq6}bXHL`?<`Z9SuO zXWszGQx4c8()0IXKbBaUUoqa}gF7giX#C5tnTV)~J`HfkYG`Xw-4;YBl7QZG(lm^F zuFr%Lu~hMi0K66e{Us1J(Q$}#ZacBkK>}P6SsPaU*YJ}h0CP1J2r&zuL@_h#ADG3V zyj{Tnz!i~=vGxMeMgz!2(Pz7QYqA~y0JHx6MQS{uEL?sHv`<&-~(;-fHl<%9R=}HMs;#)06*=vYhiw> q6FI&9--hoWP@7cz`i6!7(fA6lIobLU2fEn+0000K)G<%OKoke?iyTP@77~qvWy6FKA~6gO z6%Q;H5(f@DxR`)p&~Ly1#v@Ji3z+yN8W@PMn7SDTqJxR_yGTiC-<{!@98CJQAHDZ~ zcTEq3qKYc2sG|BurF3~);)3o5Z>qSEXbJ&JMq(O2=N^joYRlxkFAiu+Y+8Jv=w(A% z?%Y*&y~{0)d*~SpJ1nHLGUMs(+j^Jce4yttKNF9dLz!c)`?1z!RL{ad&scb+vB~2= z<{WWn@JRVuXsmucY=gk1m39~QBV+2mYZB**H5(2nrrp3sYWh9U!@#A>j2}>)xpPh8 zV?C3Ew(fc>aBaAocU%9)*d(ZLU% z!2outH&hz7C?;#E{y<~isf}$K1p2nP0sZ^&c-RL4p26L=5{w>!e-ma>dgKqR%ufwl z)q|_=yAJaaxlkv&^>E95&ke8#Trl%sy@ePf{=mv}=fqI+LEyq90v~c zjNuZU@eNiGfM3Z@-9aT_T0KCd%dJP1CrxV19~nB~6t3Y-PB@26^s6x0U`=Ks>_%w* a)A|9^c&DxN$UYtb0000FN0a0ReHb>CrJsxTT^U00009 za7bBm000XU000XU0RWnu7ytkRxJg7oR7i>K)2j#B3zr7gj9`)1!+4xn*Ep_Gn&Dn5)VNVUPEF`Yl{ZdzM*VZlTxYSbv zq~WMh?%f-n$YmcNlvqu;>JA4Cy9@6C;xg}k`v_h%*Kgwzs|iO9m}r1fbNqZ2`WI{8 zl~_#>M~6cJ!=8DZu6Sd-ZH&LB0OIIkyw!w#aR>jsQ|^`Yj_!~5a{(VS8F;o9kF}bx z^%ch7Y?Pac<3q7C-rd!?w>%9@#yf30Tc2V2>4sZo4x)JoJ)YCfo%OdtHLQC_oz8DP z?*0YcA3`0Vomb#;OXZdT&F0vCZle0p@4sy=gJ3w{kx{2lrS&C!v^w|D1m+G%)=w#g z;|5SF)BpzBS^po^YV{r_CNMP~uw_Tin|(U>)1?l?QD!H*B?csrfg;2ryHL7?W+Iz_mb}oXB(zYh z&4uucec^h1`E$?B0%bvM$O;g7>DK_ecC?*NuZ7xJKQ-i2K|*A{(j5VqY1=?-C*Uk1 zS)eS)GuyP6_SZsrc4Q;gxteeu=eDCKdEhw+OgOqp@>}>3F!r>Oc*Pw#-f?&q2*gt+ z^_S{qe` zgl0k~O6?SO{AR-|0^7=D;A=VC#`4L}>nk%KCD>twJJG`3yGylgy~5fP=}$~S6t%i{ z=;h!7q?4#+3Rp`~$m@w2z!&RYm>8ql_RQj~ehZbNB{mGVNlf;^QVOm4+WS6#o03FTNl&E^A>i_@%07*qo IM6N<$f_Wtb?*IS* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/flaaffy.png b/graphics/object_events/pics/pokemon/followers/flaaffy.png new file mode 100644 index 0000000000000000000000000000000000000000..57e8ee5023718f904cf90e25fcfd7af193b7619b GIT binary patch literal 782 zcmV+p1M&QcP)K)G=$@Ko|z#8;rpaH1-F$kfmcFV-WO= zT|zTSG){srrp?$X;RZFCTxu^Og_zVHGNp@BJhTA~pBy|iWRS^J$RJV#QAko7{f3^B zNcwbGrck<+yo-5s_ugmD$b>xRF^~CwG8|0zU!M>5V47zJLz3m3oIXo*80lPRKc|?K z-!VDMi}p*3*F=Xog>%;$WLts@_n1s}4jdcMbkTPix#zBn4s=3$XnhO%dWLg-0Otq| z5PbJ+wAJtHXUP|ILi=bPcru*Z>Vu012o5t|1sh<^%k(RLo|War3t;#c63ydlaN-;* z-V_65dLK5f@qwawq(-o!`NkAG0N*oQFq=1;p4^G(Ff+lbd8myuT@Dyy+t>0$cg=&7 z;V3y!bQs6(nY}MC$Z{D@8FMUoqPvF&CluX@=(_{iFVno%2kV04D*=l!NM3}LyFK%T zrZYKTOFMN%u)U(`_LE{QWfFDrZ!NHny`&Hz7gjzSBR;J@n|68t>+I=v{p)1( z0{qxX3cJ|BnCX_6fA+M7O~^Vy1qRl}$9i!ddnfATi{DR;x7GObYu~RobFK@`OkqI{RoI zzsAmv;I&2mdg?0igW20Xo^kcmMzZ M07*qoM6N<$f>ir#N&o-= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/flareon.png b/graphics/object_events/pics/pokemon/followers/flareon.png new file mode 100644 index 0000000000000000000000000000000000000000..280b5f4506144ccbbc9c58ab9a3222d9ed23ef60 GIT binary patch literal 828 zcmV-C1H=4@P);!BIg$!9gJa0000000000tNfAh00009 za7bBm000XU000XU0RWnu7ytkQvPnciR7i>Kl`(7EKorNXsEbC&7@9F>G-Q)?61KoY zz=mMR;uAOcV-yEu(`*j)nJh}=Lls%OWG}QOW3v?eq59-Vx+gUXDQ&mBNk84)`|G`X z?}?CCd$m_9jj`wO@6F)dXYe2RcPzUZ!Ri71X@HJHyNzf@@CF3a27ZAVlvV|RbqK~P zGDMfes|IdEKsew!gE4RzAU#eg%8{|y7@feB^9DY!*%&*lGlcB%V@zOJZ0>3Nf3vO?rgD8l zErvN3s7!7bBT5G!q9!II$MXCWEimyMt9?=kyj#gDzpRUrQCZ%8Q#kE2X^uqA~$tS6ElNkti;b zm^5;Bx~Ch(m^!*M`*JAdq{E9=(yRsixi4mH*~nQR(t}>fJ?9`3c;vyySdLUjLI_sjB4wF*Ng~&YDjn1r9D>BP=9^40 z7c~0eoCy$^kqUD(eY{z?2$#ZcV$-9RCD5HHVNuI3C}mU(p|vXPK}hK>8rCwaeYSwcYLX=W>2H z-u*~X-@pJA{1`g`K0@rKtv3F>m~rcHt262{cJ`p>n+nEkR~>iej`=ZSNaOG)ULP?Z ze-KF-o1j&wl{9}keanbC{a_m6l#JXeqZPx}Q;01usaPX=oM0000L0Nf`IRF3vh-XOw00009 za7bBm000XU000XU0RWnu7ytkRp-DtRR7i>KltF9bMi_>NMd+a0m=cN$r53@59Qq4- zNQ$hQ7N6?Rg!RVAjxuq3Q;^z5dJxl zh5M?3mib~2N1yKgg5?oc5Bh;_d_B2D~i-B#|wE%^o5HyJ=7u&d^>6;kWuvePUh)kPR zxvvljLEp(gFe{iZE)25_7~}G>X+#4|DJ~JqJkRx8>7gJp(ko92`tFL- zu`qbs{{nnh8VZAy8Kly{Jj{vQjX{^vd2ZmZ=#?O9(S^Ga47&7}OklA8+meDCNJC-p z@>l!!z>^WLIMH{hpGpVo9-tTHT{=H$aD(=BmokK0@EUTxS3jrAd9N7rGTh}4)LlAK z;Y1Jx-Gy*49GCQnbC|W?Qh+N?)B>P4ULkla0=`xjNP*8L_MPnJ@_E(4M}3@$Lh_g3s`1 zf(VY8g1MT5+vt$~K6DqJJQKEM{vlEYWnyGbJG0wrGCj&1%@rJfe|q}k>8J_aEMgNJ zPUO7d`lw0g?QhAbgZCR<8s-Xo%e;+#E+`YDmmmAM_vP1-xM`*{39Y?9UOZHdN$84z zh!aIdcBnxbI1aAC3(Owsa9%Rl7DTZ&wx4}f9%@9$jI8p|BJnMWb_x=-voxZu8WEyy l$=?ZXl}4nOM)aSqKLO)QtuyVP^wR(U002ovPDHLkV1m|R@Sy+z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/forretress.png b/graphics/object_events/pics/pokemon/followers/forretress.png new file mode 100644 index 0000000000000000000000000000000000000000..286ecb983e9b709c1e95229d9c372496cc81a3a9 GIT binary patch literal 620 zcmV-y0+aoTP)FN0Z0000000000bn^Nu00009 za7bBm000XU000XU0RWnu7ytkP;z>k7R7i>K)G=$@KokdXAu{M2c*#)gx)^)Q!y%AG z1cj(KI-D16fx4mn02hJ>6U+FjtR51Lfi~e*BNMm}5Pz)bPI|JWSas{tDgICX>Hn;E z9N31j%Pza@@{VHhfAFT^IOeUq+1i_i)yjz{Dc{nYhE>K38ujO+YDYApRUSu!!55h? zi#CiscYYYZ5T2dHPGm0d)-M1!rm%WecIf~`$HShK0J$$0 ztl~ls;NbkouJCEPaIIYcDd(%QY<;P`eR~|V0=vS$JpdUiG_$g76)xBnXV*`o3OmU{ z-(F|eRd^uT_LAf5h131o<9;oerJg1B(IF8}TnMt(!#6GXx$Hg zgnKWgT{~T4j*O7Hv z;YqJai)GO&)}%iu{vrN_tK*1>DjP#g#FCk5e=izPYuTn^I1pxLFd zld%ax*}D{S-EIS!UN*slg0=n?$yPRgDGH0wkrbg+5n4eQ3yARUqh~=7{|R5JP2YRu z)yb~=K@OiZ`F>v?X(&S1b3NB{*#Ynu`lC+;YY>TmPAQZ^X0$Z(=dFj_yyV$5hDYf|F7uh{y z?0h4pwb>3So^DCYW!~9Z%hz~u0blUi>(0DDaW?C_S>V0Bn#MeE)07M5c5SxVYSVdv z;%Q*i_Uz{KxTZ0tln{&NkDg>~pIw}uer)6yE1sT%SC)0V4O*AWgz%%#*diAW2C_J@ zhc&%#)b}Qj-T4W3>YN|y^4m={&m&}F-V#ojWI{|K@Bx`DK{b#$2=0qe1!8& zhqvQooD76JGJlyB;&D}cF(5oTSV79%Og4Hyg~#+qw9ykjHWD7#*Loa**p9}Piex^+ zD2T*!!;=HiI7-4O*4l|8Y02EnaszfwAgPLu1IgXK(FdIkXTL8l*>HNvP~IdQR*@qH zgmFN0?DLDZF0dZNGQ8{Uu2?e>ixruS1IXO810000000000?9O2Q00009 za7bBm000XU000XU0RWnu7ytkQLPKl)Y+OF%-wONpQD9my$`44#BUHK0qKO z;4FdG&CtP%ErT*#DEJEc1X%+O6gqe@H=wBj-_`D<;}nQt7T1mp)xxTjkiaRX1UkjY4j)ZdDU_5z|(l z6@sME<|pn+4ZAhz2Fsiox5iXoglF`vdXbGb9g>*TI$Sz^3~{dwm#%dm5N0(oJajg< z!xBsg{a~heZWJ7I=3i9@`y?HyY=M&(2SFGPZ?&<^q5$Zderbti0i6?sup15L5NWz; zs5kM@Efb0i2V)!HjBu!qQP79y=CG`wPq(*2^!7a2?>WPvK|$h#S!A9B0_Rf@3{yGo z-BW3{Pkfh5Q?i?A0Zxfd&pl#)#U~fZMk(tv&iOP3J!gM3A@d~ZlA^#C@VLhsY1wc1 zXmT%OaPj2Rk3&Nuwi#1l zhU6D0;CO18E{)iLwIy5Y7Wd%&j?QlBxXlH^P%LG(?Rc`*gMxVrT))K yN~XDCauc#&&@&-x$i7408v6nNc}uxw*NKd7&vOIoV-h0RaK|siA36fdBvi000000000000000rG`?W00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Kl}(D*zs1Z|i_wj!ROWtZIs z4TDw&Vb$aavod&`(f9%bT~;X3yi-^4Y@T_Bf=ALCWvZOnF z2+TaYcynM>aukM1+2#{^0r&U<^~et+1D1eCHu0V-SI|hxu#%Lm3B%e07;3*Bd~|yxN!lWe}JNFn%MB}Vg3uUt2{6GB6W_RCyswwiWGgyhX#uhGO-`Cv{y`U2+2UWMs< zl6NJXS?uRS)iyrgQknwC13zHnF@4F8aAL&?B9b94Ra_F=j{~Dp)4bI35^gU zG8q!HhNU>o{3me=4NbfGADA&z*<5k*lI>&vU*4tgf2QAtq+v{>j5T8b0000G|n#xjAv6X;C==0Rc%-Sz&RR24XUB00009 za7bBm000XU000XU0RWnu7ytkQcu7P-R7i>K)W2)nKoke?8?>J3p$uL;b!kR%P4Q5J zi`C-6hC&FqhD;3}3hwHuLuv&w)Jsi5kJk1O)c+w{p&n(hi0WF#7XpDmhIkBkC{(Ir z-Mg!Aap{%^9zG}O`+QG75W27Xy01m0E*8Hv4G*m{LSYx7>(1J~dMn4N{^tfa=W?8C zgm8T}8x7ZX2zsw_bU`ib)P{PeYV%(0LT4OyzDa3{5en?@7|SdVj!!|q;R z+JIt&##YE!$870*mVLq4UNg7am~~&%JlKHZsHWR2s;z<6l-6pLYK$3c@4)#gj+ZKN z;K5L9pGK9@IK|iz3{)Lgal}~N(Yrvmw&`Pyqj9!(Uy6f?4O?vCGh?T4m#S&ir5fX~ z&S=g}0)-1Czr4Ws$k=9H1gOT8bGgAmW$7R6^wP?>JIlbt#uF>KYsUMdSC3!=#i&fo z01y>8UruP!-n_KTiHqzUE+nYM+>OXiUuIh9)NuqdT7C&vzGr!o{m( z)5f^!w%`s_kB&c;q2q>k#ueu~CDbB(5h%xqrjHd(a58zWx>L@8IKV*xcx<>hPR#% z8#E~a$9=`|$A{81Y_LzM2|V54rDp@^pbYG13s#8;j}=EVKP)-~KIf$99721gzNhzi zzxbi=d3orPC*I?@0sq;60gZQDYS7?ZZos)XAE%u`P_jL+uo2kse1vbJk34XU^P%4I z`FQr{@dO>C1>BIncT)Q5CG`*dB`zP(kA463fB*mh07*qoM6N<$g5W%G A+W-In literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/glalie.png b/graphics/object_events/pics/pokemon/followers/glalie.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e15e52eb75d2dd61f6c0dc764c4444a5cc57ea GIT binary patch literal 598 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*jQNE$;ilPY3Vt0 z;YLkOOU=fE2T$G%3`_(n!32k8f6oGnau#?*7Bet#3xhBt!>lwb4z(Eqr=@x$hH55*&L!bD zUT4F1Zc}T~_@C?ZG|zN@NB-mDAQeri|Mp)H3le{b^r@O;aWV72CN=~rXl|NMN<-Q~ZYjL9{_-ya(y zbm#4Iy8CsW%wLuZ_Lj|VsV2Jv?q9kdu;sg3d99LQGGnStHS;`0CK-cmzIj}+dMWkI z^Io&=yswjS{9fhvXBSe|aXsB0`fuBBYjgE``N9=9-|t~`juAiRnepk@geP+KaobvV z&33={Un@|q{98k}$^C{ELYbe0_UE)th+X*3O4~xN;D7b;wmD9nt|HQZHGix!dwjYq zsQmM-X9`Eya?Bo-F1TmmBE9(K9}cHauGTAeOP)@f^n9932}2;)#B`IX4AZv0$Xog@ zE$6AOaox_HyH2iZU@1y7i?`W5t#synr*{|FU`MyO`HmpKd*O6E#a( h<o3eNxl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gligar.png b/graphics/object_events/pics/pokemon/followers/gligar.png new file mode 100644 index 0000000000000000000000000000000000000000..6d17b0e3abf84b78feec20d34c8d583f387959ee GIT binary patch literal 958 zcmV;v13~Kmdk3}Koo|DA=Tc+`zWWD7z`l`(=NP< zL)vXXR6=BBMC2%jtkboM+`*5bAVH@MR-LOZaauxXcR2=;Z+_`N z|6HsXp_h88m-;t_;lTjdUAF7Xv)CqS*ACNe1M8i+Jd1JO^~1T}ZHTP5Q-osufECq@ z-A8o39JLPGFzp!P+Fdy57hvVr}bVA>B_JA{KH4uqTSKzWhC9+tq8MDjh$r^QN725Bzlt8aQ6M52fl{F6sAaU2rO3Gr>ICrnhSbSEU5lOfj;X4kA(mC?c^ z7R=@gqNgAdB{!c~c~wRtF|xqd9DAU3D*UL@u~TYJ3X%F%!6B!iX&{-AjG8qPiN2h( zn{z4?BQ)7)j`j|vK3q^yi>1=}R!C0y=7>X5UU5I-8$Zc;ngwRbcEAb3C1W)3VIT%h zdLI<;?TQB2VJxCR(m9ifc>}|$!Oi)yBcQgBWd;24*dWW)OuP^zm z*H@dymjhT%_{441prnGSYJfvZA?-JZNU(R%44^^pcs=`i7i}heWiUBe&+hM{YI39- zlyoUl*A1v(evu8V`|sfIHGYbFt&Z7o^~;~dLA7}=Unz;l`GWI0w6&iw42096IC??(sKTCVYIP^|@58~Ikpz^w>BqtgR1RkW!`##+68DQA_1-qtf}DU6%1AgXQ~wCIkF@_qY%_5?YL~4X2dKm7!R?}&1$d0Nel>Iq gZ9MJrw*CLB-x5@!LziqCmH+?%07*qoM6N<$f(>lD;s5{u literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/goldeen.png b/graphics/object_events/pics/pokemon/followers/goldeen.png new file mode 100644 index 0000000000000000000000000000000000000000..9400c02fee61ee222b72045b3e394aa232520233 GIT binary patch literal 773 zcmV+g1N!`lP)G=Tx0m)f;p&=0f0000000000`qiK?00009 za7bBm000XU000XU0RWnu7ytkQdr3q=R7i>KmCcIVFcgKg8iC%RTNfJa&9yUJ(F=ja~a$Ov8P zQkS~aKNtSbf;i>V3*@Ex6G5J&00~b5uEicbu7p?NL6Vb9Kx6sXZ1i5go2VGY^QfPt=jry48hSO)%$RfkY~WDs>W z0+AVJb`ENUqrF`8KTJo7F*F^uu+f71HM4q-!_iP4-oVqZuaPoylvb8IKWJpHIzME( zBV%YfYASjIL8c0ux#Q6kkxboG@ZpfzE#wEo$_)nIQl+T>7t}brQ%dqcA%q=4MN~h`^iOdXVcGEZ&OS-%U=YZ4KnrV3Ct1rDeCWf({)K4{OEfL{<7a)EN!{uI z51v-`2hg|v9Zxv5g~b@`T4<7F*#8H000000000068TQb00009 za7bBm000XU000XU0RWnu7ytkP`bk7VR7i>K)je+;As7d6HWrptic%$0XcZ*H9Q6Zq z>Rd1FH|P|dWFeh0cgWZwd#=Mph^bQdGs{VY4^_bD;{h9|a+FMdGX22(dG3uMbgW|? z>#d6TznA#gvV$F7;%ABs*4e=wY=j)dwu!caJAJU7;|V*ANN2S&dXEjIbxX?i0OCsf z1>APZimH(@sxw2ySSjILnk^m5Dqln0#l^JMA&*1a!z{_usci@(ko&rCq$7@zKq2Zp3on9{9U;pqe57S)fX~8|e z`X#DHjc=LW?DX>F;vU}e($fO^_fHm3cx(iPJpp5Rat`xKuR9)}PA^6n5S*UVt!k`k z!H2f?)Pa-&EZuf!xO-ZBH+||Nx|^Sy($pG}o?E;2W`W@h!73dBJ}$my0nwWP{9v@w zot>?sSN-OCL=Rgg%4LoL?DUMnfZ)}9NzxxpTCLKC(c{z*=~{IQjt0`JUgSrGH2m`y z3Id`>@b&vo*UH&4dP73n^M-;A*h5c&L&dWt1nGSh^8xa9OG{E#d2v}uk#S+6p`ic(00000_g6b+00009 za7bBm000XU000XU0RWnu7ytkQfJsC_R7i>Km9cKyFc3gFQ8NX|nSB7QKS-ARK_(HP zy&5Vk1GWc4NyS0=j}}Geq)tk?%z6Xc2OZ zV;tice;d&>n*IaRC|Z+um_%$G45kM&oiT6JGIp6z#$3h*hq5yh0Q`jfi3$0r7kKLf zIp#ygcwp0ACXQf&L*PyhV<*6B%!M)OXB?5hnFoAw7*nQ&Y()AQw={GE#sq`)K|C`; zcS?Gh(2#k!Kr*)xG#qvE{ft7%JQ1`CykfH2F)>jJN35XcL8+&#ZkW(32Ae*nkrYx& z0ir&#E)%l2m2jPHVm>y)o#9EQ1&bRA)e1h=Oj=w$(P9$QRi+xc* zR14>pZJy(wi}ZI57n)68<<@8A%QQutL-cNbgL3mB$q~ z1yu}}CHk71tKtv)V!4Hvo4m~9kxF2BXD-@x9#)*@Eg|;JGB^1&4=c6>Lr}lwU^h%c z|1!DDW6LO<;||r;gArUksETdDw9cm&4PVsxrXUT|=;c5wR{rWSv5dmCqZDzJVW;}7 zh%JcbzPv3+=yRUD`1J?vId6S%?8?{C7QUOuV}CQ_?a2R%-^Wu>{74D&2mk;807*qo IM6N<$f^qa;>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gorebyss.png b/graphics/object_events/pics/pokemon/followers/gorebyss.png new file mode 100644 index 0000000000000000000000000000000000000000..08c8e2f5941ede9892cf821af0c3dc55d2e970d3 GIT binary patch literal 925 zcmV;O17iG%P)b0RaJ-smZxfVaZu>i6Kd;nepk7q3P-Qq(QsN00009 za7bBm000XU000XU0RWnu7ytkR6G=otR7i>4l|N`xK^(`=2kP;7gNF{mlt(F*g0{P> zVxV&&*hT0lPMIupda0$pCLyJp*d?9%e3oi)Xvme2S15+IW)Oug9RdzP zFpl_ZR~4dh0M&v2BS4Op@i{=8YYimWyHKD3@uR^6!6bjnXu@m2r~`4=L4%B9PZfkh zMW6vqEgK^vDpAYDpV&or<(^Ooav#tfQljQK){7*9_|OCPEFa) zeoTgC4<}!VUoiG2!P=gRaFE5nG|b{?^E%1az`{YkxzsOZw7R$ zG@}TU90~wX9B|Bfuz?*ntmRqmX*6-r7X0hq@`Yqc*sGWeCk27sq_iOgp)k(k3eg2s#vIu|J^q2m^J7s1QA5VwR6?|DW)IPAP?O!5A&)z;W-T7%8l(6($K6n-v90R-|Z>Uoo~`V0_+dNba@ z1!2SMvfx=Eko-uPrj`oi0xWX6nDdx8q#Hmej?G3&KsV1A`y-<QcTr?yzPUyxLs z2tWrfm)Xf8=s*z)0R&crfDjKpp)TRT{el#dOq#{G@yfov2s%)Nr2@jingntI3f8hx zaMJ4%A(%@9XH_BubD-pXJKF*RMOZ3W?Fs-2A;=c{yFy5|j&NLY=VXZxLLKY_0dCfz zKoOc72P-RC3ItXFa`o54HzZT0?rHSQG5fSsBrdHlgWmw*PWvMiKq2bq*B)6qda5Ds5C$VUn?fkmoK;KWMy-o(Mm4 zrt9YBDY!fNC^{C5iV!=P0s$AgBBw1Pvxe{8_g>50KANBM)jtS~)S(GWzGtOCUNp~0 z3OEqEuwJu}YukKl|PTuKoG@^kejsk8R$V)6hs}A990Bt zoVX{VPgdh|OH4+tIUPx5=@PB+r)1U}d&iqUNCvt*rO40Ee(PC##-4Z6O*j1;mHBo4 zTlFxz&SmLUzq}iJGlbSHpYlc^iWt*w96{L%blIb`jYKE*5jQ1^bD2sWoAcLsCoT|E zF|lzj>zWffn5ncI)BiE1HqB*S^DL&aQqhThQ%-ZsE>|_l!+HVZ=+FeZtQ8isZ*S8~UStz^p4D`!WSBHzE}Ov5i0}CV z4ujrvIM0QWDS!=hxvC02Mu%5mpOfLp`jwbp$@qRI(iIDIne=iHN|l7N>5kIy@^$Th z(s_OB8$S94CL`XtF4L|JWC$R`)$wR=WO$j>J_IDNzTuf6Tl4t#NPw>u|aUvMHP@T%{8 dUmX0u`VDP9rj)xkKZ5`O002ovPDHLkV1nMBMRWiF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/groudon.png b/graphics/object_events/pics/pokemon/followers/groudon.png new file mode 100644 index 0000000000000000000000000000000000000000..242241c16f0d84de3347a4b309402d2a73fef6ab GIT binary patch literal 1368 zcmV-e1*iInP)FN1d5eZ3AVX+}04FYAETx4dx22aH!csy@ zb8QE~9K^N|li;g9|h6XS0LF@v@|+24e7GG3t`R6?^KT z6ml?|1s%k6KBWE7%7Nx#uzs4I|9kW1%{&=~w$LpZ-YL7Vd_sOC6! z&eJ8uGApO8^GSB&a&SXo%bmg7uXX>+bvW@VI5vPs6%EBKvFmkYBGKCfUaK5u5Y zxnERHnUx*TESpTy%`14D04WIA#}%A7Jj0mNG+%F-)ru*Wf;bJUxrU(32!dM`98a<* z`%TpD`1ux;SnAz*{1k*czF*6I^;6T3H>hnKBd2qemAUQ!z)ta85Qg^`g%8c zNeaO-tDI+~J!O-{9<1_ROl8C=eptnaCnpEpl;L)slQPSQpTWH(IYAf23QGJ*>`TGO zc~HgX-rm7C7pO(^c*<-T1U`db?w$OAE+|u+7K{{I9?}s*Z&by2h_a~7Ba|PmGMgfq zX>_vZQ`A;Ri%tuM>afNT=#vXjrs`zDj#i{0rs;2>NP3CA=5>sR@=wfDJ6eL0^ECYf3PCemK|RO&)nj#7FTOn~vx84{i^KPci47bl`E0C2w{;FAfb0`bA121V$EE zX6;}*;2z$wQ6Ix}jZJUH@y>8K9Mq#(OWg73GVtq%;>9uMf$+$VPNP6ZJoArE(a3_! zOmxycuf^^GWcNwB&d3hF(0X(hi?Sh3kZO`d-C z(v?$U6T!yeul4%iLps(e>ZI=;*6Y^>Jp=`_e%B#D7>oN|vd*dwJqHOrgj9;w8P}yn z4OewRWcPgaB5x^C3~f)Ci=Z#7C_)80c_D6N*KY$TBxzbOUodi$p43y@uF4d8k{gLF z9hwRAeSjc{#2$;^Q?biAlSCiZnjifWXhB>spR);UM`Waa4S`@LQxwbq6e+6@Vpq0Z z;oz9El#+BuokVdC3oabU79l2iBK3I}tVLkX(gAxV4B4DZLC#$$nG_BZUo;=lgd)(E zMKA>gCkqF31|C1MKcl$=le=>^K__8fZ*2UH?DkX&wx=$XOp>wsa3G1u2#_lV%3=N} za+ENmFyBq0$47k%=MEMejT3cl5>RY1$Y1ETM-ql&033*by(NNm0n|*E9AL2;eDrF5 zgR*hLa;_c!KG1=V{hkzPL>)ELJp6Y@@>kwhTeH!SOc+y$Tm(c>U;tHh2~old2ffV>Su974eRQis z<_)K~$NLX;ncnRdZ?vC0E|ci~Kp@LsECswv$nv+A+219L(fP0N>i@EtD}GBurAhM- a!T$h3kvHA7q`~t50000!f literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grovyle.png b/graphics/object_events/pics/pokemon/followers/grovyle.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2a2df5867ab13609cd7c2cde3667b336c78cfc GIT binary patch literal 658 zcmV;D0&V??P)T5di@KX&D(|nMs++d6_9GL1`)Z*;%#qm000000000000000*`Kl|OIWFc8HZU5Ab~gzSM;xPuqUS1M|` zwPU7$&=;@)B7wJb@LE7X;5~qsj@>*)g@AxxuA~(4pDZCAviVK^>8SUPl6;&@&N}O? zv)(SmF&?kJMNkwt%vcn}^A8x%!yYS9o_hCq3`I=2mma4c)566bD}AJSN#h|-d0z5g zwyGFirkn=d`KnD<2xrnF}ECX0@N`KS?@_~gdj6=nqdY)WWrVhUS^xg zh0|TgjiC~`Ag39oEt{&(^IEU9h9PS)QEx?M1AK;QrVTeXz-6eL-^MWH*6>ho@7(~8 zVal{&WdmG(4Ks!zw}wxL`>z!YF=0{&X##v!h6fd9nhUw@=|za&WQ3*C0O#WAuytx7 zw^|92j4_kW27Ctg^6Z5N-0FI<{yD;UDxe!BfY+*MheODXLHYeteq}k*jP{Oa{Yc!| zqQC?wZr~?~*wE&SYm1f6VwnmTjbpN*BTSFbV-~VxXi0G}hH0zmW^GK0$ zna1{!02a(;ZSePa{9z3dzZ{P@SI&ZRMq`H~&4$t#rTb1{h8P|Qc@myr?kiDs4C}bE sK$hNj3E2Nk`zH|Kf7JcOA-=Ev0Vj#rZBkHlN&o-=07*qoM6N<$f*6A$8UO$Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grumpig.png b/graphics/object_events/pics/pokemon/followers/grumpig.png new file mode 100644 index 0000000000000000000000000000000000000000..8f757d50ce1e18020b957bd5f7f6967e467f46e5 GIT binary patch literal 749 zcmVKl+SC^U>t|@BBQs`mp5Iyv`wHWJ4(nQ z&_bZ>6%Ru3_d&YjJhx0K#Djl^Udxa{7=l>n;RU6L^`eIfyEzzCsHaMCW4Fe)NzMDs zyQO#$JoIxYecrrzK6#TjQIu6yS!I>~B%PM{y@b(%+bPVG0sk*yZ@)D;>G-V_Mt;QI z6z0BNE9sZGl& z7k*;;v;F|GSM2|70jjEXe@_Ty=E)XW{T4HpF;5zkt)6!vu0|m@lRQ6x@>|ktEMu0+ zYmaI@@>x7onWGb^{)9pS_0%M@UK($IU=#{vo+nfIUZ+36T?<(gtWqAqnUELrn_nrd z+u~%I=kYew%GC`Z2w9IGY9tiw!NRqj#!HHYOlF=dzI)^Ns8Nku^@#Uk;cM<|fcGHc zMIo-gpfk8j=ZqgD3)a63jaVo%^4(KPXLkIl*bTY5D9ozV34k!GZaok3$G1fRsu^dG zcV@aM2)Ss*Li3c~3AFesHFJ8O24qoaRHnWOgvNEf8?1jk1WVA&VEi)>!dl2s7@U1G z#eGF)=_rVg7fj;kheB8|s@-eDJS@n#LBX6kLKv|SI+bQwvjCS%cQ^kqHjC%lLm|ZY zeY=CV;XcZ^6U!cfT|`EfI{^i@-7FJOV3$kx?0CWBHgkw{j!ci<3+jd6*!jO|0PZc;rK{*A%LWD7PV4=ka#L-{ioeUe~fw}NP@Di5h f%Tq57{KNbPMl2mk75L+K00000NkvXXu0mjfY>H3T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gulpin.png b/graphics/object_events/pics/pokemon/followers/gulpin.png new file mode 100644 index 0000000000000000000000000000000000000000..320f5fce9bd70e5b7c1add8ba90ff7208b80d6dc GIT binary patch literal 562 zcmV-20?qx2P)IZ07znLz;o0UKlrd|QIFG<$CAg-Mx!(>r(Q^<@f&Y{k?Z2A*58PQl(1$ zC(&1%s^P`v>U*w|8^D2tOi%~C#V*6$6UWXExPgSM@gH=N`PjiO#xn!CKrw@_2u08i zK41R0qJ`lC!-w#mS9O~!$<54|$qQ~yHZ$U=wT>G$H-c_t^L(2Q5$}A%^Y#Xt?Ki}7 z0iL8hw0XC}EL6naXu!wTkzJNb`A+;Uu}~4uInTy>YXOI)d^xZ!<|Y69;UDIVif1R2 zXRx=MG0TldGB68^*lY5`fe&V9nTmA)zO?D`u?8{_!Xoxyd^miAo?(jBgBQtG=23p8t(6)U(*{Y zRvUTC006Gcx(=&A5JeM6eaTxh!=Nb^FxRSBgFm!ygux(t!tX8hqe0vFN22k&&^9F+q8m5pzGF00009 za7bBm000XU000XU0RWnu7ytkTAW1|)R7i=vmc5G`M;M2v2wM!KI7pMmMZj02OA&<} zT#P~7!4)=K*bS)BCO(bAVBI!G8y0dR-H|3u8aHO`lV)K++CRWmNC+V$*q}p(1#tw9 zy+j6y5Nibs=gB)WJNoihm29O)JNtWP-uc)?=zqD$8~9BZ4&Tt=w!0d-&N{{Aui&sl zkZZZG5#DAYFTIBKQ>D_&8T0)b`}t%cctOazCFf-DYSt+{DZQL=XVb21ZHJ3nYeLKU zeaj|ExX##Ri@eybb`$hchCJKpFK(_2kyqL7*j{5EIA^Cb?*(BsJ0C7OwZ!=9Cg*u~ zF+uA>L}PgqAb4Gclzm(5gzI;7aaP9miSvcSG99=qv`V20WK-L& z2+He(ht}mk6-%=cB6RO%u-*+Cdt&s{`2uCTVQUHN1A)d1+ zh+-PT@6fOmB6R&;gYFzYPf>iS*6sCsQrJsz_iI(6UddlUVXvwV&3_{8ASs+&__u}K@?_%1!P=N~}@RQI4 ziU0%=18%ptVI_oh+3qIKVMSVUaFX$9(u3KF^v-W2U;VK0OE5g#K@Ax=7Xo`lU`x!7 zXq>C#6YnLO3n8-H-d+!;AhZ(IW6PDokv!7XVPTP@jg2c!GKyRkXoNI!$xH{L2+AP^ z@->R1ZfLkTug9Z_$gC26QXCGwk(`ncn^(-i#>P7b-SK&r3EiR)W?4BX0zEPF(>zYQlFJk+E`$iZ z)jNMi(5+#sIL<);EQN|5C)USzOM9mScJm<6!gud(bj!QIO&w^}h3}{1vD-zDE z7ea^_T|7%enzWm!5K6u^^pp?}L+j7ubleyOyE0G;pFT`M80^+veHg}!`~HX!*;vlH zr`QOg$Gnwiw3QcAfJc!4PVQ(Sm-~i}(|X{`Kq-U~NujSR27$TYM{dy=wRdC1MhKI7 z!F##r1;~_Wq}T}6e>cwkNC$ExM|2~tN51|BXzxZM^4s&)xV&Kf;yoPuH-d?&5D3>; zrIfiJn2$L^T**zHX_Y~JXYmDNL4B54cG>saML{+1uCRKFmUrkHn+EjGPI+hP9x1Of zth;hEYVze4#BZ*CXu|S$U&+K>y}8b^@mh=Zxc~0@7vM|jtL2A4`Tzg`07*qoM6N<$ Ef=AAyzyJUM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hariyama.png b/graphics/object_events/pics/pokemon/followers/hariyama.png new file mode 100644 index 0000000000000000000000000000000000000000..541c6a2f58cee07c6795093c46861337f4ed18b3 GIT binary patch literal 1187 zcmV;U1YG-xP)G?rXiMd%30RaJFAqny6!O?*^a49=F00009 za7bBm000XU000XU0RWnu7ytkS8A(JzR7i>KmQQQrMi|Bgo5ND%gCIH8y=X5b_)u15 zX@v_l@v;l`MXPc^OY|i|=Gka>9l61-z!@ zn}k=E_%aL^^)2iIJi!Hnw{z~A?>VYE(xE|m5Hu)fOS<=S7^=;FrnkxW5%^erzOPSC zD7RBi19nBs;=bn_$?~AjcuJOp6ZS#4=uA$Rf}7k~j0$R9bZ(ESUo+(s8Zbm+;YCv{ zOd&Ne8GB?&Ig^uBB<{=046Jhw)x%Tq?E44ZTa75Tnkm<(SkL#2g)2Ivedm^Lg1=-h zAO=od)Dg%G=IcC-o$j{}$D_}W&JYm@GM?QHaKLjTJOzEw@7|hZ%5=#|&Tyiz+xV~L z9{Ov{$FYNcwDkUEs~!hQ$4zudxZ}*?D9H%CQe^-h9oYe$@f%~$OmgP=uVqoX>bg49 z=lwOt20=XePL__x!FfbFj6Vp^q8n_$`4CplEYNp4Z5HCBL-{M122u}wGJmE zz^;e6b$QtOCS@MIfzZ}YTa5}N6Fdlwa>Do_LW#hyTB8E=vX-7rp7AlOs=3vPClk#T zdr1VjAb#C``h%A84C|Z1Sks2Po|#zkQ)mXhwCE# zQ`HW{2gJaPk*%svQYHpU9vXsDqf6wGLilTDz+IG)D2fI9F-y@V_tln(`EulkGzSglg_VL+Co)E;6%v8dFj+y--8>HN*iXq0GS=3o?$wYHWr z#}(1Dp@N%Tb;Kl(BB4Fc5}mEY~h_g&*PGAgTAR*lQeV z;Uc;#FcK9hf+hOA#C0TRR+&0oUhX`$!Nx#}q&S_le}VW0&p(4PlVulObkTn!)xOW4 z6jic)kBJD^kFe@xo=1KuXXFa6x8j4W#ws6lOEFqr8fB2pN?*&W#*|u~y@JGGRopBuJ9izfA zaW3R^kg^VoQ^r$q!j8U$0p&O{lmK!vq`h`ro_#=di_x><9v+T|!=IlpClF+zW<%OF zW8Heg0w#86g+2({MIEa=ql*ef*$egKRgtrdT0W4_Q7evFXFki$Q<~T;n3b)RV%(7b?dUBSF6NCxV_;m@kAhIuL z4T+u&t;%5Hmxlt&pKPtPppPbtB1f|9SR_j?`q%mkDbyRNYXl8;00000NkvXXu0mjf D6YC75 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/heracross.png b/graphics/object_events/pics/pokemon/followers/heracross.png new file mode 100644 index 0000000000000000000000000000000000000000..3699497b44303a23b40ef1981c4efeb3b0eeb93f GIT binary patch literal 838 zcmV-M1G)T(P)K)z502KpY3~xh$Pa=N8>F1rLF~z?P8UVIQE!K1f(BW^7t~hWc+t*K`aN3O(ev zm;KB*-=CwqiqKO%)qhZvlW|u?e1zh^^}9jf(Dj0Igcpxkleo}#1BY%F9E2aWQAbNp z;=A+&6}`Ekn+oRd{ZYfd%;wCQDBEso=yvo2JsGub$~>XLg!Tf5t}8<67W-pnQWM2T zhGB@gq3f|(mS*W<#D2D2N=!@@6%<6`(DfKF-AuI+TcGJOW0lNO0I|WLt12|z(zYYE z=iteVA%-$gMG{xFWT2$}h!5s7kUCWp0N6(|S3N(&{-ru%nD6Y0*e@^pfkT&%mBa6__e1k#exw14UYCK&RBnYG!;4p`%hz)^9k5@l ztH8~cFW`<^PmXm^B3A?s9D6i!Y{w1TKoqt1ym}y7KwtwnORWjSG50y&qH81vft;ruGp~&u{O6&n*Iffs?z}TTb##v1k|y zDRk zdr#uBj3T(mJ5H?3HG2*$QWWG&Z241dgPSB9=F(!tU-M)YS57uv0-8*Voi`F*6<3{p zTJ=7~mg;ZhOgMFN1NF)^Wu$#H3c0RaKwIXRheK{+`&000000000000000(>b=t00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>KmCuUXFc8KCi$Ktm0s`S%U<+Zdxn!?} z-tDrXX&zwv29==~DTTOTU8Q&(OOur-lwL|ceEH2}z8U?AjnG9G zUG)D5=V|_Hf64O{rw3R9H^^2}a-QPk0GNSc*xB;2oKAcP$f%HzPD6H* z=53qZX&z;+4+kS(WQ zfB3R+%!e_^qUA!!Z2Me=2d?^d+UVBX6Uerpc`%!qUY*vp+ByEvJR6ev+6bY$dG#U_ zwOa>=0N6&FuXS0Mw}T-bxEdOoT8L6_hX#wDhk;%-532I~em1*+T>~YAIvGMncwY)p z{}{Kh=V70(n#Y;%ciU|CD3DV3_W3e4c)UM`#t|HQLxsGxEB+odSUmac3Z6cF{5%>e z<+uX*DA)5v=^I|n>k>4;Myc9=Tb4@c9OV55L7u2Cyp{W3@RLJCj)Hf%LReIPoPS>e qzq0^3`$8aSn97q11(p#cE_SxG6ek%6IsQOU{CVPRoOF)``s`FUYE(YbM%iCF*u00000kO_(>00009 za7bBm000XU000XU0RWnu7ytkP)k#D_R7i>Km9cJvFcd{CdGefzZ|IU1Iz)6T-7gtJr%ss|`$x4Q#m@#*gw!o};=F6_b&LXpTy)Vz7mXDY zVmdoshxPgm=VB@|+v~8FTF-epkvF#2VcmJuHyfr-yE$>;G<^N2L9zsZk>qa zfmJ|!LLZ>4Rwi&&K@kx;$G(Ss5Bq^ktY_*cfyGL!61kU}Krs`d!oDZ+3i~G^JhSC* z-%j&qZh@E)D$u*8%n9|-e?^>B$J+R7kI<_1#hvqR%PVJ~12f3lX}0}LtwI&}3is`{ zZk8XZDP&jI3p>so)Pa7Mw*mSZ7wW*UFy}x6n43bjEuF8CJE#MRkIqe9<3b%s@i{9% tg<0vGNM~S$_syu^vC)XRah<_`>Ib>LXPH;!J8S>|002ovPDHLkV1k1R44MD{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hitmontop.png b/graphics/object_events/pics/pokemon/followers/hitmontop.png new file mode 100644 index 0000000000000000000000000000000000000000..9a64f87a5f6d003ae0704e6867696a1af6b2ca04 GIT binary patch literal 591 zcmV-V0G?Tvp&2=8vAMwk0Re$g82|tP000000000000000in%x&00009 za7bBm000XU000XU0RWnu7ytkP#Ysd#R7i>Kld*2XFc5~RGN5#`5>SqU%&tCZ4iRP|ewpQb1iQ{wbd?{{QnisZ_4I>Z<=E<3c_v z-n@W+lYUXav6qEh2%6{f@c=h~fbKYrKOy*_ZaU}v}46lhSk?4 zyk1#g`@Wos&P7LQ7oO5|*P+fE#)RWx=H0q5+znl4Arl!wJFa0Vw}c_{4l_>}XYzjb zxlqE~mbENr6n?c5Hdgi22TRs;F4in$wS@jiIg>pMT~DpMUi@A6-cvsy={gq%quw*$ z{Tv3|_nu#Az{EwQ^_*qh@bHD&xf z`9eKpG#m73eJ~_-j2@A`Y-TEN4Uw*yn5lt-zFsGR)oG|SJPotGD?t5770vL+x~Vp7 d>iz$zz5wSN&RqL*BYpq?002ovPDHLkV1jDA1a1HT literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ho_oh.png b/graphics/object_events/pics/pokemon/followers/ho_oh.png new file mode 100644 index 0000000000000000000000000000000000000000..714171a55d48f4b2fc027cf311bb9bc6fd603c6b GIT binary patch literal 2252 zcmV;-2s8JIP)ZfQ$f+R~P`w52U= zX-iw$(w4Tgr7i9M!EUbqxBc_${Q83$2(BN}yQ)5@b1-#0c~BdCr<-3PkC0j&xepq? z!ZlYNPe$}J%kCq@i&B0cIfQt3ZZe*Xxxy&Z$@>TudQM((E+GKW zspJVr2-&-@RD2Y9cgzLjiOfwhK)wy3Qa*tkLi}XZQ4~4n-GmTNcI}M@>R}ZG6gwbb zgg5XOgrJjb54c=HynCrAc{yN8h$mm!$L$7Iqar$CvEzgyj`?0fU`HkCFx!P(LVPIz z0ogO`me3BdeZ9$6jDT-6E_No7xDH|#tGZp!2 z#03*7U@UVH5+u!Jbg&t7LCPYDTzXKU6e z5+gy;fglmXj+}mZxYzFwTk4FEI&Ag(r!7{14Gs`?7Oxsp1#?1zO?K1OcBb+@oyK|M zo4RK8hZRbw+v;1IsoMmZ#wPKQbzt>{mc;fgp&jDs=@5+EPye<5RA_o}xCO;9O1n5E zWY!H$(-{GxD1&NM4e6(NSHKQrE>k}_ZBRlRduOI@*yIWkz!M~ka{L|)JuR3K0#`^n z5fOaRfu{EB*u)HL6ri5(b`R&2oN)s1`P))+@5cV9k()g~2GeX3#`OWq<_~ZTyhuh88I+DpZ&gjq|&InobTRIO`Mfqku76***;+mQeBHTszv*+7}&m!@|b`^m9dOo3Q|F{B6HXye%Y;ZtU5Bz&}g~ zSvrc*+umIZ)JjYTl*Qv^h(gp3%#DYB5q{TOGUv~^SIInf;g3xptow6>BW z#Btjuxgv^0c8H!H9cpE&psq+|>OZ#SgdFLU_?Jbn(Kw?D5<>7}{Sny@C-&o5K-g6$ z?wt`{Amq^qN)zJvp+%02dKrS)YGE_fgf}Un>3qZlXtZ?$i=mCZbCVbeAj7l1Xl9;F zH~X+i9M^)9i*CJn@`i>&n;`@dM7-xe_}gb+J~r4zGIr215<;GZ9$IL6p#Irt3^l&^ z+%l4Kz1<%)Ga?9f+y_*E0uis)u=1b0`8W8lGKA=Q??3}$Bot?``{&L^)gJ+pcsW6WIxAo zE5G{Z!NG?tA^rn{eEea(Q!H;jB_6X=jO|H6XdmzS7f~-zilP!a5heg23@jkzA6?|# z%m|uR*7Vbw=#JGICV+c#0LBucQ{eE4(kV*&LdGNj0Wl$5fEkH5vRF}MDUiR$Pxezn zs9U$qXm!Z)!;0#<8FvROpkV)d458I6;(h#5DP2m>o*Lu`ontErp+{)DuoF?Lk}Q=J z_zUg&mQbDo5I{FNg`Qf?IRC$=Ztnk(CB%O~{P$iKN|)EqerFRrgt&wdS_He?bDj-C1Is<)5JKg6`3dM_0p07wm+K%P!R*?&!CMLwp%c8AFJV1;n}qbh8;-Ob9hW9fyuvsg8TmXbbIePUt$v zvDJ*r^RzL9c;j~11mtpR=0)cHx6oD#T@WyG_-%Bvu|Viy|HjI)Id>uZf;J~ItwG_Y zTC1v&aE`8H3xwW{fcX`yfG?!?nDvUz5}F!t0o*O2cjNzqZ7w_Of_6&izvRz5v4qgl a7VJMRNp_@OCf~*Y0000Di&FxzQ;pDY1cBX(=g*SwYFMc>n+akOBYj00009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>KlQC=CKpe#nj2EpXTc>pMr1D2jEa7~B zP62UC!%e0dyn4zv@RTJ(*I+ds&dnsU_|OpOTngf#MBJ36L;D?ir?XCXmnu+0r}{1C zcklGx>F*Ol2OV_KLH~=W^Yhni)_WMCRkK7#doo4Aja%TdeBk&7EvLF&G@q5?oUu6XXQBdm4{x?PlvbF} zN=cj)dC|`oD)7FCYbxLOyfb}PulzX6Sp#ZJc8sQoXq3|P?xDo%w{fN+{WypE$TP_rEfFy&TZ1<)2gtUr*N zRIS-Cn|9oYR6oB?%{7!GY1oVeVMwgcASqLMX29AHK7+s_GEXb6i^#gvYHmN4%PSKA zShM-l(J&$9h3((hyg1+ar&mJosJoYvF^=4Oiq4kHrNT#NmbeJx6552PFUi002ovPDHLkV1m&mC*A-6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/hoppip.png b/graphics/object_events/pics/pokemon/followers/hoppip.png new file mode 100644 index 0000000000000000000000000000000000000000..90dc9f1260659cf67e5bdd4ac9b771b345a0d32a GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!c1!Rnt-_IxEw_oMVzy}P%bW&OUZRf-Zz)^99* z_T>9!-d_Q~b=I7TYGb@I(KaFQ-TdAK3l+_shVCb{On4Sl<&!g$jb^Q%cHWM zNt{Wv7vWYE4Ae?f*{`XdG$Z7BaKQQG6Fkd!ZkNv2cMW@JqAoDkUq?NuDat|Wr(bUt z&o4g%XNI1)ZkLpQ=1uH8xu?QN^_7H@{Li-yarg7y+?#Ht=+6?BR=o18-WKMILH6mN z+wJC?gtaHnTyvsfZC(A9_F{(IJ6{Diu6}!Lsou1#6#j&rc`3`vq@EwY^i9w(cg~%C zg?38$OWtkSXE^54dohsT~xOt||* z{FGb4&x(_0{hc}^-mUC)VivvbRk_2^D(2m_*}ONHAI$xHT!Q_E%ZE=NKQ;bo>ED~b zC^-3wpIEC({l(1UhK{GJW$vHcJGWfzS60sPiT`pRP451z5mFN1FK|%S^p{cpikr5FoS&0Dw0g<`k000000000000000V|e~t00009 za7bBm000XU000XU0RWnu7ytkPr%6OXR7i>Kl)X;FFcgI=Sqx+=NbJ24Rg)~inVN2$ z7(s|ijDX+)5RbqUIATbO8_s~g~h=bAf<Bp5}QmzYn&-Z2l>vzu(r;8%7 z@}!&2pA46BEq;1pPRx3bxKPaV#K!FU!CM%Cl-CzI{$Fv<(H3zZtjsz1x5k!GUMtUV zVJ;Cn&5ORr9H!`I%4@~pVOE)y8TqqO{$u?B`}w{gWpk6A00000NkvXXu0mjf|FidX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/huntail.png b/graphics/object_events/pics/pokemon/followers/huntail.png new file mode 100644 index 0000000000000000000000000000000000000000..9e09fc66e4a98e7b42186bd3ccc4ab1f569a22fc GIT binary patch literal 1060 zcmV+<1l#+GP)OqH+3B&t*#H0lqw|Jz00009 za7bBm000XU000XU0RWnu7ytkRnn^@KR7i=%mQQOFK^Vq&JOsS$Y@DsZAnZbffC#cs zQre5)!Rw|>j8G)ovSGy@y;X!XBrLRuNwK)lPtcw`Xb*eZ1e*%gPv9k<{SeOV&g{-i z4N_EmFUfEIJnu8_%+9W+{l6%6{&j-ozb)8N8n)DiKTV)GE(ObfIm4E$=WjUobBNx^ zV^t>6RrpdxRLB08bDjUM*mYg(Q~4MEF7Kh_nDpani~k38yKV`6D*swg%_ur1ap-#P zl@fIOa*@=Eh>l5Iujv}h$rz8NlBk@{pE^>TQW429OHc%~EorjKWc=aAx1QJ#DHV|& zlR!c*SdR|!?BsMv%+_SV^Nzs4hSi~HsZx_I>b{@=`i_&^3pz4ufXoEVPKjGeeWE)Z zu_EvyL85=kd`F05wC*^VO{a%NWNMxyaJ@89>Ye@~PZKHvKHK#~*y5C%dhQstody#u zZ7oYoqH?5@1a~=uD4_|eVnrmuoafvzz%;T2-|T;CiJXomGm(*Su8uT`(^ZbghzaJL zDNx72Cwjh@sqKGj5$+C5yGy-CcdXL$0S)7qs{F42@+gE z{&v7w15PyRkU}MFet9J_HG$JH{Ytr)393vTk4>~4xJ(e4s6zO>#}kyDl>>4htI3e% zbD~D4VBYB57ZXt4Z0p={L%$EZ0OsR{gU zo?yE6YC34u-wkSP1+yOwycuz(QCgZ!XESrIuwDp`{BDr%85$fH@AMY2EJ%51Cl-Hf z%JGW_C{2(pVDT z1%0F6fVTR&vmt~=eIZMNRFgEgxdw!`C$1 ezY9h1D)AFyGD@?zGGAo?0000lzzeqZ-G2ymLU(NaEe7*DsGNLi(cDcL}Hw)jmbD!UzXAh%g3BX7lL6h4PDQURS@; yJ|p#W&288I$o1tW_q$ls)X)4l`MBga|5xs9p0Sr@m;#$Y0q^PR=d#Wzp$P!m+Qq#9 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/illumise.png b/graphics/object_events/pics/pokemon/followers/illumise.png new file mode 100644 index 0000000000000000000000000000000000000000..b48a801f2c7054c4a1340eca9633cc1310cdb66a GIT binary patch literal 793 zcmV+!1LpjRP)$w5I$p~2~KSvgsu>B+fSF+pi5DKV+3$?56&X=!l*0Rhpm>1jD>308gD00009 za7bBm000XU000XU0RWnu7ytkQk4Z#9R7i>K(?4h$Q5*;GTLf=7LU8DmH!JifsHdcf>I{Qtn686dqzi(i6D7 zj2J)y(S`}=z!?L91`SFe_m+?!<*e7Y@`uwtAJ~C#dj$ZQ0WMQ5h!ci9A2fjq0O6_w zNMY65LRgjO1-8uf=NaHGgmBdZcraHrz%>O_vjCW?JTK5(f88?};8k?=9>UF!BRS&( zhN~F&D!>CKJ8}UgumkUZAB@1&JrBtJAr%O>PRO+lxS(_9kzT*n>r(H;0_`2yf!;Tr zI9MGFqul}ppz~C6E0r4drhw{zzcMzUYyBF2gWRtuQZ~VN_Dh}yHrLncH+ZeY|$fN=S)&_p_iCNKY(2Jyi|`rX-*!G4IReLG#qF)(vVV7PJDH zi8VbUaMi@PNe8f?AoSySgN|T9K2R)ZJRlwlMS9JFGkq4E2^6^#nk_!?hW^cgx48ZS XMiabqCxuKq00000NkvXXu0mjfpmSQC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ivysaur.png b/graphics/object_events/pics/pokemon/followers/ivysaur.png new file mode 100644 index 0000000000000000000000000000000000000000..fda631a53a8b1fac26b49a872d25e20405705ffc GIT binary patch literal 657 zcmV;C0&e|@P)G>%^K|w)5<(O4J00009 za7bBm000V|000V|0Vb6__5c6^2T4RhR7i>Kl(B2uKorIwWRy8L49?(8hX+$Nj*Y;J zJ1I99TF4}V!HWra@l?`aXxhc~5Xc-t{tH_Pso{w6kPZdYzri>j0s>FjGBjt)l1>-h zEhdn`-=yC=>HFT@lLWBQMjLJPel#BGd0nM0>snr0e=lky9j~iY?dqbgVKf1lYZy}F zF=%+}lfw-yCBv*R{+F95*@8b;ha*t(Rw;YpIH%ZBFgN^iS*K!v$jHLHp>}8}GeEh4 ze>;bL+$<(Dpd6pceIa}x#%Nl`J2l4%3}s&IsF}s>ui4B|F_{5!9rfFP+SO zz!POR^tqs5?Tlt!?zgx7BS@DyFg&C20Fn7j((U8ej3S=VpY;E)MjEdcW%iFG&kd_) z6yS4sWPOIyINR?f@vM4hlWr+fO0NPWUdq^YseKn2dOk<%XME^`^F%fX7cC#Lm7&aj z@xwPtznf|%W}`(EJSTZV_bU+WPv+&BxP;ndsAS$1b7KJ_^UItaEy8db=Y^r^<_HrE zmK=RpMrT0s?zw`|fE0-E>oYp}4k6+Oct;*%o={?(r$Q5q>rtFRg%^6!<4p83$lM#o r1AxJ689g;i_p^9`O#mf1zKvc0Q^yfpP8i$s00000NkvXXu0mjfE3PDV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jigglypuff.png b/graphics/object_events/pics/pokemon/followers/jigglypuff.png new file mode 100644 index 0000000000000000000000000000000000000000..ea877a890adf812292ce324f03d2cd5ba30b751e GIT binary patch literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpnCR(PxbSCS zU}d7FO>_%)r1c48n{Iv*t)JFfc}Xx;Tb- zbiTc^F|XM`fGt5nK%0lva2d1z1@{*d3}qFPRD{xRoDc|j=B6Pl*>LanwHvvG>&&9f z|7ir-9r?R_LPKiq%}uGNr|H^%{CWG^wL90e{XAs1rZ!){=D6=sL5kY;tQY$FGNyy1%s6HsAjDkl#V~QC%6&yU8~# zzQ24s?Jma-k)ZAytV(=4Z(1zBe(Tsmr>Ex@O{?6c6lb&9`JTC?jGuez_75d$f2Y~1 z_Va6~Tds1xc=LPh*P3&$zcZ;HGXJ`-=nv1y+O(6$)o;F>>ENDY_2>D4{m;1dP9G{~ SnQlA}6d9hbelF{r5}E+7AG@GK)Ip2WKo|z#90ts(P-rkve}F$@7bXx` zdkFZ!f;oC99!g!2-9itkv@jZ|SI^!(?4eYs$1N`S{eZoAa6u^wdoBnYXOd5JMyQ61x2@dzj66aeV1ALx1fG}{o(yDCjVdT%(9Li zLOctoT9kTsckAjYF4fwdB}Kg8rq9^m8|pZ{y8s9H+b*ZQN5eg<`0HEHY0_@)A0ZR N002ovPDHLkV1j8#D1rb0 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jolteon.png b/graphics/object_events/pics/pokemon/followers/jolteon.png new file mode 100644 index 0000000000000000000000000000000000000000..c75292549d2f3155ded51bc02c6a64bc3add50c1 GIT binary patch literal 740 zcmV8WWU`NK)lYBQFc=1KOHmFSBZxw;nTEv8sS}YM zD_*p4gF-ZR?V2x0xVz=u z2pep5h8z+KZG+1qQg5u`aLNha&auHZgAn9rXRsW!z^Sj1hUYU%37t<&UO)$+lbCGJ z9H)({b=Neq;t}C-ln{fF%>f{(I$XCMCd5rs6g&@0)3W4ZB*%0&b`3_>LX5|cGo<$d zz@5X$a-Ju>X_+sba!fCbw(pCg5Xu|W+<~iQvY*9}5v^suKP&;3Vq!8X{GQ)CAg!%( zIz)a49vkU=?$HASU^%LpR~G(_INkIQTFVL(A*L*0qlwPvvQ0T@)z)pgxDhZu-5#_K zVF@(7{9sk^?>=rJ6G z>Ukckwu4LmcAC*H*1N3GPxrg)zR?yhE2JjR{9YP3gO`olG%DA1dR<@VHCr@WXBjoQ zC{kzbR3k3!t(~=c+=-&s%asOlX`wVQ@W{ZehSZ9ry%)DyM~}?bS>>Njv{wJXknMKlQC=KFc^mIL*1h|4%U`rD0DPm4m1Yh zJ8ta3QSj)}6XXvZWHjo5Ru?+x59D`NmZjQ~V>L^cl5a_@SNh)P6`!K$TGzVPXH>B} zvxtiDp^x-of7p&4&>n&vg1SqL0AM@XvsbI`w&G&lBfiYQCl2U-!$f_<%uba85@CoKmQ#i9@t=5)<7;f^31G-Nf3nA)zum4S^ zR?}(XknR)TU{RBiL6r&ocbYh)`@|)~M80|k53ItB^}BrHrPgO>b)Wcwv8Tc_D1NfG z`WNXDqovjtXA_kNOo|_lK>`D~HYDWi#7>o+3siK8{@Ay)CvE>jVgZUS(PC#BR>O%a zRU^n(LjyI*c!he0h`&H3oYyiS%15Pt2a|?n5@5*N#C(DUnjDpUyx5NR_CeX4Dbq_?E2`{%j2R zf1QYPZE$4jl*Bh7}!Jx|PFEaoD002ovPDHLk FV1nmCDw_ZR literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/jynx.png b/graphics/object_events/pics/pokemon/followers/jynx.png new file mode 100644 index 0000000000000000000000000000000000000000..e2c2430691b26ecb23bd953a8f31ee301755e629 GIT binary patch literal 880 zcmV-$1CRWPP)!NJi%IXU^^A&FtZ>FN0a0Rgc&A^BNJ`RTd&(P8m{p~+c!tCfIg00009 za7bBm000XU000XU0RWnu7ytkQ=1D|BR7i>Kl|5|JKoo$zc<^{bKq>Olt!&6dRfaM^ z5p*Mkf>IhbkeEwkvVfRSH>XJ&T|!iKVCZ@3f)wA>fdR=GJa~xYn_=t7%K83mUu%nn z0jV$3chB#A?_I3KFs|b|{+F;uCj6&@S=1t4g|K=66T%8)^@P}DSs|<(!0Zr`YpEfN zFR38OI_N^mpnQN<1VFA>Ll%1rLP+?eRCvVzIbq8tB>8TXAbUOx=~?)rRJccxBqalw zv|$*=GN&Ow3l}?aCsbBlXf0?Fv2z3Dg;tG($%06|hAcWs?B47q>QEP&Q7SxFQx%2g z*rw^MxQJXpUbwE?QHQ#)6NNO+vmOPZ>2A;q%aTQ8F^krz;EsAPE(z^~3W$BR@Rj>1 z-%-OfU_XBU$bH<6q(BqG8U04-%(fb!AUysxr0G~>aCd;6nhW8D)QF`?jrLknm`V8HWTDdcQC9XA2UI%-G@_8U?A_yV?;j^pu- zgpji}XaJD*uZesnWNeJm2eOVDrYmpGj$ZG)nT?#D*oX^b&W806u&6nZ=arEEragbV z-|p8`I}Ot~T$_Hof#Gn=6B}`%V8a-;m|%O0``Co3kh6*B&gNQOHq(%oOm3Z>;gwbS zT5dunTvgv&pEVo`w(fJ`Gf#9pf!k~9t+||c#nvek?ucZ7kdKh;xQh`&K~{XFKxce9 z381gIAhc*h><7NQ&uM`Cd@(=7KK*!QY~jGi2$u*U!Z^q!Cq6DTV~22x^Z(R3PlL2a zZU82fOdp;@FISB5<-dIhy$Vii=CG74t)JfPZ=!mDiuePEk~d;5KI^jp0000QCGL?Vsm@j1A zvBRv8U1dhmw)g+$WXDS{^qj2bJImzd{}#*tw#oM2n{zeTAFxNR)|j1i?oV3(+FK_2 z3oH+Wyw=zr)me4kFhw~i@^I)J#w|@bb2zUuEGj$M@H-;#vdff0KTF@PoH?BzA1kye zx8I3hbx!lcs?I{aBbka?W~Z!KI|U3>oZs>tDNwcFYbnX>1!9{ks(a&Dz*j{zfZnrd_6iCUfOQLBy4gbz4Y;sO~yyo%Ki{~IQezZsorAln^N=aPj6p7^Re;a{=SbwVWDRI29@vo zcJ1w*aQ5u8d$$FYw(~4ZPVd-O+#xvXG=Tx0clAw000000000000000ej@V$00009 za7bBm000XU000XU0RWnu7ytkQw@E}nR7i>Kl|5_QKpcmUED_h~3Z|i%VhEUct^@uA zU6Z0lIAe$$)WvP69o$704L+o)Yo@b}FN!pkk|Lxp*E^kbFN)nx-Fz6N=U$%Q=`YCw zVApnS*LF=b3;&(5ad^R2P#*TSF|cL_roX{phCz}5e6WQrge{EKsuw(K`KI4wCT!(D z57V=QEo{xu5n?~Qg%_=JL)c{2!xy|pZ?~}3wr$k1&pVqLB6LYKTa*7C0HSu+zHE2> z&Aed3Sle=w%dTUD&h-F;CsENkbGn5J5Ii51#5UuknKCw+3B0psmfDin1qIWIpy5rC z9d(LqII8B?>{S(M1t@j23K`4=p8XD?4>p-p0w|b{%Sh@@yPX;Co(LhIFL>j#9M20#em5D50%(nx!B87!6orEV2ibB~nu{Dn|1ul@zI1*e|(gwO+l zmCz-SGo`njq1*RP!bK9E411)SFWBqx@x|d2nnY^DoG-p<7r+GL`Nyvp*HaClR6-Ugcm#VQU_Xwc z2tR^S*kph)b(2i(7-Lq780Z1uZtl8wb0riEY6fA}?c}};Fu1(t>r^i~yc#>i2)K7{ zPwyQi)ETS@%!42Za~U9+)J2X5`u``ribIXrv~?b3=|Bb4+!y1pSgx08Eo?Gd5!(ax z8nS@C!E73gU-==CLX#l@LAXu=Uk22i02vTRnGv8f6IhuA*pns$FlV2SRQJta5L^pc zZ^f#}_s)&}X7!!MHwUvg`kM$LB=8d}w)SX)z=vSjk!ZCEWPLKA53Go&**DXF>9(Wzl^adAO0AxTL|`N?_d>G`>NacKzw0RaIyIYEJOk$F)$G9e)n00009 za7bBm000XU000XU0RWnu7ytkQzez+vR7i>K);(+6Ko|#bO_~HnL){FapP*Z}Hed?D z%@8OZu3iGMQ*(nj5QREg+?GHF5BUUzP6Z8z!VUcbZj;DGy+&i`i#xVU3x%c{4#D-# z(n)7UN{6&tp26_Dlb-+iu|#4Rmvvc}^^c1F#TPAW{d~(vdI5hvTx?jiydD60u7}-b zzX#oAeY0xAgmef%m%?77JpjBWTjFAGQnssFtc-VL!=>@0$-B~P4W16c##C!qwW!1K zH2@xs*PHxy^(p}OSNG~Y^?yQAGnqwOgGBfH+#iMPG9Q#P!6Ui8HC zp3rkV^SoJuMZ;(Pai|9@SeEI$@VpOxugQjsXEU4_wT|{b-SkmhTwJv*$GJV5z4HAg zn-LZj^lBaBch50Nip{F!m%>r7|1k>iq~3-TVMcIJ9zeGxvIx~iRPlT%kSB`DfT}qr zOnlUv@^*^T^2Ak(iAH3FkpmX|%zQ;TpE6>;40MPJP|lA@X^gcW?2HX34P8nT6#KO{ z35^*eB&B(vtIXzIOm90SLHP(&ZJ0Q4J9i%s5~c!3<_KpE2zTX363%LU>~#_v!=m5Z zp|1tBS57-Wz6|cEhB(N4@GCPN^PEYR9GJE&b!C-@dofydjD+7iS20 zARa7^@>^iY#UmDRl;6F#1!>5+nz}Hh#O3;nnY2*YcatWEJi*w7NI8bmD!>?Yn3!7m zY7OqR7>V^)%}x5Yz5IJa`RKuG+iq!rkTa6#2XGnTusAa0Vq9fEbL)m!(E1xkn<0cf zI#IT$2_Y&2<3vngai4SKriC{*i@kXQsw`Nw{{-j_4G0%Eh0Fajf3eRl{J;7G268x6 TZA1$Y00000NkvXXu0mjf$}4+t literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kecleon.png b/graphics/object_events/pics/pokemon/followers/kecleon.png new file mode 100644 index 0000000000000000000000000000000000000000..22540441b3f3b085f079afaffbfde5f773f368ad GIT binary patch literal 739 zcmV<90v!E`P)K)xnC|Ko|$`EF`3dUY14DJ^KVDwiT%m zSS@>qkPu^JHHTu?^GYk}b+KLJ(u?#FTtVy#g}P8$3Wdf?iKnQC;Jizdu_iNPhL%11 z9YTJ7$$!SlL>XpZ``XvO{r5(5^TwgL zxb%y|&&U9T8Rp>}yl9qyOEc@t^>fp4lFj}A{S49fyIxa*J2KIHQ@-GK5(06fE~lq=c1RNApy|wj4kV()3xG04}Ag8&F?F1blHx2 zq+#BmJOMWv@(`ipZTnSg>qpg#sQ(uF4xZP*m)t1TiJGK0f!RXg6nzh%k$taLU#fot z;egPaK35z6?yBOms7ZM9;c>6mOU3J^LnBMlsXWrU@qh;O_GVpZwbUnZ7-1OD>i7E= z-JDf1j5f`DUlh8?7T`ZV#vGO^=nnd7lxM~vYE?7p5@K01)TqxNpJ7+?siAO)zi2@q zga3Fa95$dFJXNf(wUGhqsUp_3>M6_&_IJ1~JkSvED+~eYb7Y*p8~3jwGj=j*^#{3n VKYW}c9-9CF002ovPDHLkV1iuIUVs1q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kingdra.png b/graphics/object_events/pics/pokemon/followers/kingdra.png new file mode 100644 index 0000000000000000000000000000000000000000..8043bb032d06a45443d23e582a9d329c296e337d GIT binary patch literal 859 zcmV-h1ElPx#Md$}g00009 za7bBm000XU000XU0RWnu7ytkQ(Md!>R7i>Kl|65pKp22;K{s^k-l0?$N~JFCU$B#o z$Ot*6RSH$*~S7{ZhY=13G>t1xuPkSR;mA#?XGQRE>VDk0>d_ZxZ++;Ml{s_Ms< zTkMAyKM!Dx5xQG<>z}OG&CAuF&im`?t4u~^gb2Cz%pMjRbu&-a%zHwFJR3RPCZobB zLXpn{dXNQHa}nqTbs=NdA-0SwL71-zA`ey!Vy*@ILgXcZ1KkEps?ePge@(DISA%^a z;}EFW-$6j*f&zQfFc&(%H}46NK@!UL=WEBtlr7&l=G+K5Z}a(tb331`5h5d}b%(}| zJ6j2=@Yrrx1npLs+|Ijz8q|ddC)Mh7pgkp=rA;8p{6QX1ZUeACR=C<8`-4Ihv#AZZ zta*S0OG-!a@ikp(ker z$zpy&2rbAtrRU^Sa2w=2g}{tSJ>mzX1{-0Nl13P^>-GL@K~e}s0A|Z_Sytjc(1S1z ztWyX-4+gm~YlVm3mgMG!lAE#k;oUn*56k6s^!#Eth~MnyZZUbW$-guu$c5>CBg7CB z!ft^uI~IZLlaY(}ZLM3?wsQs4J4*8~w@??aaP z;*9j5E(GL)JCC+R0O3c6*H61gi56t@+=-65xfbjTjR)okvhD*2y>i1Z5^6#AFe{2w zo~yy0(0FEAPe2y9(@`j)9z<@j0GYKQ?5RT7bF9ED-${q24*H6aI_b@*>T08&%002ovPDHLkV1f|teG>ox literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/krabby.png b/graphics/object_events/pics/pokemon/followers/krabby.png new file mode 100644 index 0000000000000000000000000000000000000000..bee310360e42277d35240dd2079814486bb785b4 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toDU@Z`yhftH4h zjEpA}6<@ymxzf?{;L1jz5=>C#e7OxM%30tMS{fq~PIM0r zE%Po}dZ_UDc@F&}4g%GQ-o=MHYnM;G_3}vU?ezj&TUShIXcFJ{W!C!{CAW>P&Ro#H zLU2`oQp*#ob~!vTR6}8db?Yuq%3z|K|_L~;>C1T zi|yynFWL z-ktv}&B!TZ+Ue9+=98l5-Mp<4_iEqwGr9Uc=a|1ZbU$<6Yw}K`%lDj9$O?I8&PP)= z#ChZ=Ua>K4+!GZx%V&E=ZG}msVe90VtvaeE(<(jgu)j0@Y`u8#$y3VDxzEmC6cqj8 RP8lc)Jzf1=);T3K0RUm@;OYPX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kyogre.png b/graphics/object_events/pics/pokemon/followers/kyogre.png new file mode 100644 index 0000000000000000000000000000000000000000..5af391b3025ad5d398447127bd6f1903de7c12cb GIT binary patch literal 1311 zcmV+)1>pLLP)@x!E~6IpM(}VWGh(VVMB|0m<3%$tfvW5eXSNS(&M^)b@MR00009 za7bBm000XU000XU0RWnu7ytkSl}SWFR7i=nmceV=RvgFQDUb&hCn)js(WoKVULM4ruaw5wB$pd}u zp8j>R<0LQ?)wz?rK;DBue8xRYM3w~-zNd?N9QTYJCxHRy!JQy^8*aP^Z6mz#A`zJ| zj3b)>lI{?7cbE^PdwPQh@@P0V7*YVM8ynDfFTplo>$Q~+B;Ceey8g}Fa1tn1v$9va zr>osT5v4gkr7Z4(QMkCsr$Yn4?*2YL+KYjKJVWU+)NJTRDgh+EOa83&`weZN+QQ2Z z-LZksn0aZCGF@d2EBD|MP#?-B7 zGix|CyE%w~rQ@ACS?Z!@4E1n{q=2Sx(7DC_kBzrtp)`x!HU(pOh7+5KG6r=BrSMYdC=$(2R2tk{z)%4M(3JbvWULXKx56kX5GEVH==D~Jwz&oMGZ8oC(SatF$$1o{Q2?h0Ko-izP2 zw(XYCX`teE9p`6;qJ>YZSX!&!S4vv*R;~6-^#-lmXBb%^4SN{b&S4U`F`LyXAZc6l z^taE->XtYj+T0ckd&S=znE&*DSnSXHrDO9Xifn9%k?o&%AdtWwR1c0&yB*Y31$7D- zn4Iu0mQE{M+uNUr0TeQeJUSI8O9OGz-RBsYCbfr=(St*iNFeby&Mm1yl+-Dp=@rFT zz5BOqy!nM*^ z06f~jX*RXOEv0!&*Pp2_uq-#0CaQ6#dCz%=sufM?}VB zLoOoA1Bwe0%N8$*k1%0I3K0?;@;M;Hq3U6h}4VK1Tgbzmsd%{Y{!#z4d8!Ny5kS2e*ynl Vg>?uD8_ECx002ovPDHLkV1jM)UOfN+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lanturn.png b/graphics/object_events/pics/pokemon/followers/lanturn.png new file mode 100644 index 0000000000000000000000000000000000000000..2c42ca35b6afc1935ff6631ae58e0e9c908a1b6f GIT binary patch literal 947 zcmV;k15EshP)^@R7i>KmcMHoF%-uSgz~{QmJ&?i0=ASG zimyv!0@><7rZ$s<=QtVMhGgzqx*4)$C6SPdd=%qU9!n_o4VeS|8!DZoJL#^} zE$J9--*->n&(p7GTh`-v9RF#Q(jj2V?Fab-KOOT7Xtww2A;8&ydj6B~H3ggjps77d zgz9AzkOa;GxM{%92!VoGaS}KS0Mh_71eOz@3;(u75G6y{1XL3VBsn2@=%(I+D6s^9 zpzHl)&OAA&rP)i@YTMGHKC(-9a}SGz~`Y> zDH+?l$Qd`adOGm6Dc-aF#$&_CcsYuya-@-LBNUPab|62PXQwUpyTn%R5uun15INAK(P)1LT7t> zFIY0?hp+#zYbl@xnAR5p9q@g;qv?H@A?UCeYs&1EZi7h(@Y%vk{E#gP1W`$t-sYWS zy}}TPVng3e0)}3sGZXH|9A(7{2!<${aBDlqx&a3&4M+`g0IZ3tVu4l20dQR|u};sP za)2+7O#z7n0J85+4!hG~Q5rD7$aantpwg^i1cwmSnvF2OQp3=N7}XjgzuvpPV17d+ z4Ha+D>?&r?G?cDT>8x0A_oga3YmVjLX5oCji@0I2{R~W7epjFTP>@j~9Lk18= zfR{XQcE2PH0Ac#e8>Z#!Ar@xMip>_f(kNkOzl=ad0PvGmkJ}*yP{4v{27s*R@6T_p z?^dNjQ)yWt+toQZAGJfk?jtVq>VP~GY|p`G9}y{tiUp8hWUKx`T5o&3_lqRjk}}ux zWFrFDaKUVbb*QzfY#S~$H%q{l6?0&x*&uNWC^)BcQH4Zl5}9u6%~BwZhTraNG#fz0 zLLghdmO|JO>JySWlLnZ9_JLv8?$kETUl?NerSwdIr7c$gfAd%CPb2j==x_fQ{Q}`( VY*yvcccuUU002ovPDHLkV1m-hri%ao literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lapras.png b/graphics/object_events/pics/pokemon/followers/lapras.png new file mode 100644 index 0000000000000000000000000000000000000000..f55e3028db1e24253f5a6c479eedaabb451f1052 GIT binary patch literal 940 zcmV;d15^BoP)KmcMJ;KorLf1_g>1bqFbR$rY3ev}Eg$ z(TTz2F9;djOR6Bykio%JWNC+@`3iyu8U+U7DV?&pYO0__e^lRDce*s31OO^r+AM^SDPrwH3aWNpLOrN~ zs0O`;CXg=zN=T)^WE!eufVm(Y7*T^f>-Xk(=nnGFpf*Te%Nv<*0vsdHKL8Mw+!JK!1t zR|?Q?r~}tfg5gUu-aQa?OhcAkv)(Zsl;1pfqc!L^)PZX#-IHu!o^^aikZMfwfw z;}D|bryJ_Pbu<^nrA&uF9O9qPWi7Dnmzow1aTzs-{e}jR=a1(3MCR?vap=ur+||B! zHi@Qryue)~cfV<<12Hyc#bl%`HoIh2pLP#B2l zO`MM=vodN6hRJ8RDaNtfR@6+_cs-RY!H3oKagB~!pmZGEj^koJmib{4fv_hdf#|XTekELUra$MXMmvX|xO-M;xH1fI~ZiT3q-CGCGWXgfA zIGGmhbhjz-GDD!8q0Mfi>`dL5dw7?-bLduJw}xQnV-`qV5#LFYPp^r)5)E7J$)7^W zZYet}yUVF&Clo)OwgIXjQuq0=#s@V>KCVIa-Eo|%5ldS literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/latias.png b/graphics/object_events/pics/pokemon/followers/latias.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6ad4240cf58d8fce798a10d8bcd7841aec91d3 GIT binary patch literal 1161 zcmV;41a|w0P)i0l`5*At@KmceTqM-;{f%nmyBSZMx&9s@2dQLarhS0_|Eja`WQ>N*uX-FybRC%Ecy48msN-wMR zLCoLKnSDE>l`Q*^ODS}~i{EJX`+o0zyDK5||N1vq>s2pYxjs8yAy_-tM`yjdH(y=0 z-agjH`rURy{JGh8IDbGo{U`SF4Q2+mGD1cP=((HT)Za@8h7h*5;x zHeE)H`AKuQ&FO-{p*47`Fz95uC7f1TXh#&cQ+LA;DGn!HHyY8U#C5J#rGb@-pe~65 zL^Uak+83E2?udyp6e(-u8{K%5MItIjHX|+vxH;s!*_as=#70n+jRw{AdC^fniVbm| zo~n8(HhK5=8$tZd3I9&{bz}w&`7`24aYBF49G>kohrLr;W@Lzq zjFiL5V?rKZSNcUpmKX&4qRC$%l-%!>9pR}V9>aZs*`K^Ql*Nap}RpLVM zrn>gl%cQL$4-?SC6Cn0!S<9VBi1bX-GNWK!6FVMc6s1AjAtcMaC}mY*5UlfuA^C+6 zDG%h{GGf(Hrx!Jc=^%rS{4@sQJSsL=8i(HQS`g+DnJa)>75S|T%KPPgC4pF)5#gh2 zoIl;7W$hc{i5a1s5;B%>z9l|Tf{NJ9?|!8WJXeJvTjfZAI5REaqt~0mJ6qJ0GSv-h0!dmSt20P$=@ z0n20NRli&dVmlIaFOSu~UnG|hqX+7fp$BV>^%Nc0m-W5M-fY^@Y!df7{U_do7zUntqL42wH be|r4`Jxp}pI@Gz`00000NkvXXu0mjf?hhS- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/latios.png b/graphics/object_events/pics/pokemon/followers/latios.png new file mode 100644 index 0000000000000000000000000000000000000000..553453a311c6bc0c29278f45a134ce57487b425d GIT binary patch literal 1219 zcmV;!1U&nRP)At4DlSpfk7xyjKXaj8L>*&!(@>FN2Isj-2PnZY3;%%88&00009 za7bBm000XU000XU0RWnu7ytkSIY~r8R7i>Kmd|VBMij?Y0v?KwJ+!5#isJ2x9JaXZ zF0FkjhS206DD+}nP$~z?G#er-Nq5=)lGe_lEQ`dGZz9;%qzfseNgT76Yf65=fmj3Bnrqgw4lY=?lgLOoB+GZw8~ zO2@9!7sOJK`MECU`ADQrEQ!Me*nu4f%4G;HfaR!^CvM=x0(q2ryl`PCiBmzl<&Lpd zw4`4FBr()QzT=cBEi(g7->7HAg%U<3e$ivW3u<6RtOQ@8;~iFQK^25DVzC<5)ixJA zzV!KBqm&UhB8(m~hXrnMgXv$#8L<>x-=#aO+9Qw^X_h4RMLxP}?dtm2y-X%Fbzc%& zdXE|E%%SCZF4NZ|tcax`I$OM;u4bCh-A@g+CGm0EvzGg%uD{)Kla4vMfdw&&bhaq# z9~iy*?N7h`s?dzyx|R_SQ^D$)enHXaTKq6Ag5wFEzV({jlmHQqcd#BK~lz|{l4K`MPeoE=%>gEy_2Zg}RLHiRB z=h`%v36MdX4SS}UBW8kJpt1PJYxljc$tZ?yy2=}pcq!dh_Ooxk|LLPAc6!7e0{)O0fRsw{Bb_{WP8#zE& zfOzgo;!}X3*r>K$^}GiF{vi?1iVaD;Bo#itN67E5s%MlVhy&%g84?n&iu)O{Kav}N zq5O;YD?r#4Yk;sIR&N)l|Ge3|yOjwFVr5teEkgXbo~Dwx`)EbZ&~Cr-I=n~ZL6|09 zH}3xS+4Ja{n(lA|<)<}ci}8j%bs;4tM7?qrszbjf7kP$wUEc;c)-waq5>)^J2Ot1a zR}&KAcS%@PmJ}ZlILO_dCf1&?nWJYfYzeXh%XjRY0VghIEz!P! zH7ys@#9Hw{{J*dzwrS>m8>GZpOBjMS5tGC-!CJzI=l_J6OFR>k#Ipu=V44#xnVs>s h`u`ku^7o&NzW@Oraw$AK62brg002ovPDHLkV1fi=In@9F literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ledian.png b/graphics/object_events/pics/pokemon/followers/ledian.png new file mode 100644 index 0000000000000000000000000000000000000000..d8651c2ff6c63884946d39c77bc1149fd62a05ca GIT binary patch literal 1027 zcmV+e1pNDnP)<3NfBw8>FN2=u~Fe6IRF3vTr6#900009 za7bBm000XU000XU0RWnu7ytkRc}YY;R7i>Kl)-BgK@`T9P3eM1K|Dwytih!RLvTO? zO{L1x7|@*bD2PZ)FC}b3XG@#CROlRX5>e(7=t&Sf^%(3WhXlGu(bM)2gCP{=Z}82| z%w{%StQQf)7jk$z^SrWfB{)A{l{-Lb3xd^|N$hu@-%3v)HTr5w z>Dx8a&SxjeBwlM+D>xDXlngmKwCUU%l4+JH#5M1t#c2>sj z`CX62$714!B*ro2vRe%p16l0W^4#G3K4UHD^I9S>94QA76vRT%WYO8)=}EnJ8boI! zCCJx>ph?HINen%8r;w_^dZ%pSva!5Xk%$}0TjqiRC%!KP&D&A5hfdh>N;`_|M6j*| zEx7P5L|_5ji^J!SduOm=;@Q#w5^=+a>dbDVRYBZFtNhuOPw3u_6V|(qRzDgS1r4)M z>vBOxUB2D?(ffQBut~Ed^h6?9Z>l@Uk%PTsAnrBELHqy_xBYb^YCSrLXXXSA1H*9@ z;Ww_v@17k+)nMXx`szd=5g7WRbTlf22;ws7lw!lfu-cCBHEJYRZV^+nGGi$Ls1LFmZ=W8X<)@Oa>Q$KHZ?(>NdNX4h9FkYP|3naM<1{;o3YvK#WZrL zvtS{E5&H(U7RRoAc<4^QwTA!zMeN6 x;}?}qltDaS7lCB%QRegfu#8@CN?r2zl{002ovPDHLkV1hr{*E9eC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ledyba.png b/graphics/object_events/pics/pokemon/followers/ledyba.png new file mode 100644 index 0000000000000000000000000000000000000000..32e858e2b77cd3cc9188040e5ad28cb6851c4b25 GIT binary patch literal 1025 zcmV+c1pfPpP)FM$D;eq*aG2uBOIXOAu$tmgS`2YX_S?-on00009 za7bBm000XU000XU0RWnu7ytkRcS%G+R7i>KlCf{wMij;m2}CYl=m4E8z-9!)LsGO| zx^yBgve0PA!WfA>Fh+6(gfws+%LGKBgW!Q{vU$iX;92k#g@8|klQ?uCT>>auVQ@1t zWboh6yW^2ZD~W>!Ejlz09PS->@B6;r9YSC0YyEG_T>qB^Iz7F1U9~8=H~y*lCes2X z3aLWr_U_=zNBU>F_DCZ#hok7*|ev-(9<03M{-#Rx@8#MEH#_J5Z>s-NXu))@= zxHTNF$d)6MiCBir^w*mJUcu9uMA9+SNbbdrAOc`HCEI7K?PjyHdbBYwdM=(OQpn8C zcm)7@4W<=}iMZn;l2Wq?K^ywxOu!DER=@}Bwl->Au3!h0QJyFmj;U1a0MIr-un+y* zrbtw9+@Tst37RlyFo;xtAq?^I@9zOleOwE>ykBmxp-9A$)w<$I1ET}ir5xRnLgtG^ z%CmG_K+@iO553_y%FJ+q?dr)J*sH(8p%mEm-89k4W+(*q`)ts<<+g_0l|mNrL_STC zNyh~wZTtp$5N+fL?XbI8eE@r;%2yo8Qi%OD(Pk~=y+K#WD`)5NwfKJH8B)kZB85yk z=18(j2>7t5w~1}7FmF8l82~@yD-p@YSt3XNM2L;K0CpB*!CfMAZ@CSHOgiq5{cK?A z>2(@yU>wfp3Wx+WIi_3Lwb@xB^^1-1)tx65?8sgqJK}=NEJY?AgO5X{U>sBWFsWd1 zf2xerUw%s_{)2bl*m%Yv+@bby7=Si^RiVb2q5yZJV`Fa8KS8~ zOX2p_a*~uQp*+H$U3Y;evg|M&DIHJjT!5c{v1TnU6$I`wYciQT)B<-zA}!$DnON3j zt)>K=E8p`()=zfIEOl)CVCMsgfn&U;pAj;+!rURzi7tyoi%Rf<&8n}HB(A?mkJwl0 zuSFtOS0hu$-=V_5lla6##SM=g==sx$&W vX(GMxf#c8BRHEscO7wZhf4im<{ipR8+F#Rp)L@A!00000NkvXXu0mjf$9v@_ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lickitung.png b/graphics/object_events/pics/pokemon/followers/lickitung.png new file mode 100644 index 0000000000000000000000000000000000000000..715f9a5b9d81ed3904b32cd88602c462617ab025 GIT binary patch literal 642 zcmV-|0)737P)Km9cKyFc5|{O5*_fx|M4WiL2%JU z7hUxKC|~~_zoZ)5?fD#faXtq@goqDkb68^QI{GZNmj`frE|(G#$Ia(s3D;+GsNly3 zdjXGCX@tGdKjY5OiTC+6hS27DGsLVjtn*-ir6PEb_>TOB88&Q)`RF@h!_7PKxjP`= z8YhEXB=Sm$)7O050#6Adl;*SYSt@6M4cI${n%8C{g)}7Wi36rNc^XH_8ipRrN<(;> z3a|#6Ticg`1k76n&By*%p$uaLy%X`J&*}gI5duc-00$-G0KBw)&D}szy*kK;AqG8Q zboID!S%*UMcmQT6W{QcKV8fMRwLZo7tDgr*kpbwHMbr5KJ~oDrJGosgt|!K@P8Hh$ zLY@Ih>yvzcwcG(gnON%sqTa#&0StEsQZiq{#NlMMaJizqqV-9R#P;s?S^$g9e0Miw z2TAOHru6f4_9=6DzI2(;Vv~^}4)-@es51|!f@NixO=n{#@!Q+!j5+~vPA40uUn#bM z`zFpNb|FEo3Jy!dH)1Q?M9~kdvb^Z`^McxbG^WnNrHV1_{e1*cAEms&XMOpE`&;-; czwqz$3!}ap)px;SuxSMNm&soVL6e}X^Ekc*#Q9oDH$nIIZ?quVE_OC@WVKz00009 za7bBm000XU000XU0RWnu7ytkQN=ZaPR7i>Kl+TOPKoo$7qKuH@VHZUA-yx_b+0sje2uS@9!>AgP zezROCXy3>YCxAi(jOjS+^WFR^F-+3t1W0I+56>kx%zFkx1g!d|rMpnTLfeyFlVxo{ zAyvnfi-APH&z=Aw23DudE!zhJqlOoGU7z_g01^s@TYGVD_kyp_6Bd9c)V<3sFaxT& ztsn8kcAI5F@5)+mw&BeeA|SQ);!nmH7%XivN)C^j=6qplSPOzc%=Q2w27XaTU-z@O zo$YuvO5$!-gM_5*tp>ran12Ueh=B*&NwP1)-^l8G+>AE|og4s!g62I_6h+P^34{gU zwdBF)7B~o0^IvYq*6Zw(AfaFk-qu%?L8Jqr^GAq)r>BfXQ#fRUwZ~Vdt!Or6EM&CS z5S0xf8!|7%zysZW)O9DkAO*M&@7SFg01F9;t~c)2jeN+w5Cf}+{+m@Bo#e>7soeHC z01%S&RLkOqns>V>7&`J!xM(iy^o9<%i1Xjhkg)Yd^9myZ|9&|CxA7CvLtVD}XPn>w0000G?q^5!unXxv{C4aalo0Q2+n{Pz%0X00009 za7bBm000XU000XU0RWnu7ytkQ0ZBwbR7i>K(m!w0Ko|z_(+xK;FfdeNGaf3$83}dB zLMD*-2(X%fE>az5LD)i0J_O&u%7|b>a;3iZ(n>J+I>68jZg)NgZ~oYKXW|Qz1yi2w z=fux*u|voqhaB?XLS4K2ho^S;A2_$WZ&-D1b?=0br#AO}N9?AA)aIZP#NxjgkXOFN zd>jXk#rp?jYrr%M9w%IMdw;^RGzMB`d6DEOm|7NFY-UY;Dy?ODw!lHU`)@%EH^*3X0e_Tn}RIglBPa zs_t)_P09p*c6fZlVVnTu%g8WXZ3fpjyej5rFSUY}J;+PA-ff0mS&9AIKFv{cgSbDN zeK>0N2wPh{Av{hF(QZ%SJ-|~u|F%!FDjXdpRdlb*`1%Tb!p%T!XLGpkALDmYV&7<| z*O@%1;D_gT*jpV3mY2>>v+(sY9!gBx+P{Lnc=+r1nKn2;59j0^uVzX3BNIwtgBLV5rI002ovPDHLkV1ggAA;|y$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lombre.png b/graphics/object_events/pics/pokemon/followers/lombre.png new file mode 100644 index 0000000000000000000000000000000000000000..72b9f1badf97c57e34cdac518cc63c439d359e6f GIT binary patch literal 679 zcmV;Y0$BZtP)G^>v5owu00RaK&SwV5B5lL}DnZco{F&O{=00000FWlrs00009 za7bBm000XU000XU0RWnu7ytkQ9Z5t%R7i>K)xT@oKokdXn?TXnbZLhyQb}!S2g3`N zKw||lWb4$SLnos^mvW|eG>hW1t!J$M0flBtp~kC+1U%JH@Ss1S{cn0_66McXPTppHZaq*D$6z95{=0fHMWdM(##2OZ!tWkEohOAbE6-F9B8)c`jIZR@5E zfM5`GD02ynK`M6o1bqg~cznxxLQndf!$45x!e>0-yFEbgeP0ZcyI$MtQ;Q_P;4~pU zn+h@ew%h5M0@-g+mqfIKp64+Ufb(u*6%gL3QzlZP1xZ* zwVmQ6w!LoquKt;qt15d<(t0=iqGg;%*?Pk9&^sPBX}g~1xs(soYY(z0Xj`ZM`q$4_ zNrhkJxkq{YW4L&_C<@wMZ|T$LE39%qUy>ewdGkD+7oE0s>do`mtu!KOr@Qpb6S1vx zbl7l@9@5VGo|h$*>j0iHc*|6EE!%5Z?{o4u*&#G~8Ne&brXL1p`fEwz-s?srwp0bA4m?#BM7{04GDHC(_+qNM-; N002ovPDHLkV1mG&KCu7* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lotad.png b/graphics/object_events/pics/pokemon/followers/lotad.png new file mode 100644 index 0000000000000000000000000000000000000000..3e81947f9a22996c3d5dbba6be90101e4afaf561 GIT binary patch literal 532 zcmV+v0_**WP)G>HkS?Re!sd*V;K?wi=00000K)W1u^Koke?K;iZy5IRR9IEJgCyBRuL zE?}pmF^{(BP=wI62qAO9-9?9tf>ZrBbP)d-Um{6*XJ2q}%a<&ld*s~@E-{Qgefsq2 z)29xD^69ehXfpr^m8xnSaV>*!ufrTenMEbqj=C`m0mXAX4oPz%ggYc0rMRDUyCL0% zG00**k4(7lu*oU23&C9znufZ|p)3}bDIn{xNqP*No1#5G-Q^3z6c5$gSRJ-VFTfQp zw-)sQ>Mmbc=PAHun^NX^nxL(tzQzON0=9KS-DM)4=lPb0v@;n{W|K?^FRy3+By1+kB^&;Cb%5GIdt9C*c3mFIG`;-1_@;t`M!T}?{#AaXG?jtJfVH*NNG=x zo4uUka?YEEx~t3|Y-bmC*v1fMdt8nTR?P&JXX*s-wSW5vX(!Tlg2Osm*1mb&IkK2F z#mY~Q$^;4As-GS@Ih+6z_4kEt>g;`1$W_~read83DE$qlZs@1SpX*o!wWR$_|25yC W9=K9&Fd`rT0000EyWp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/ludicolo.png b/graphics/object_events/pics/pokemon/followers/ludicolo.png new file mode 100644 index 0000000000000000000000000000000000000000..d31ae43665de8e6175e33364c1dbf8da45cb426c GIT binary patch literal 909 zcmV;819JR{P)aDd9fj3NihKd0g=%WiD^;k>G{!t2{9=Ni9rF;u|es{c|k!*y`g@;00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMJ;KorLX1}&K`YMr5U=+ZexiCPFL zgotG7D3e9Tj;trw#s<^k`vXc$mt^cz=$65BNC;#x&d{x;6iO=*FqcjafnY($429m= z`f+!OU1HiTZ}R8fyYH9xB>7HJ?&2=~QK&VwC~)z3I*au%2ZEf;bi-vs6gWSb&SHI| z76@`OE15>nC&OEObK zgtGlQAfzV@L9aB8x%x~FW$U#7A#L1}%ygxM^sWnC9c332hP=pfK4k-GE5~l_D2K*V zk(suXHFVdq^14$h&cL4I7?x!@hLIh~$xJt(GPHKKJlH_R8Q5#Jyo%M%mP(O<#B77P zfS0FC-2hEb3tEwiGyKi=zI}aQSlN4pFh-t zSkS|D#;}gZj+w?_uQ0eMqy`a3BLcj7W?RY3RnTpo6?M(rtONM5ATzW9f>-9fsKyP$ zK_Lv&5k(yB542WeNc_Ygz{>@W6{Tz%J|X#7kQus!*p9go6;ukNk)#hVJ^$6p1 zs1gHqLi$=BBom>AJX3>JTJC>eoW$LFKuGUcnZ)pH7}&K$kQxfCutTEP&mE<_qV@WS zJ5{07>x0IzBd}2;hx|VSH58b>c-q_ne-BZMa|bz1%o}{(5%L+-)pfj zf;~q9Y@K7Q19cq$b`BB1N=Vjg2Kd^&o~#O9M0}_0ibm#!D=A_6paMHgRe(>hs>gz?Im3N_329AgZ2&)zzU#B z#i!)8Q8tuyqiE-l!4(wJK~NQqbj(+rzoWfFhLid5!5Ff8&=>K}A?l=V2tXR&DvP@W zSOkFOb_uKjqz)!UBc1Xt17r(ZhZ00#2IDD!zK!l2vXCJ_4$?q&DVG9{7QWA+twRa* zkVzI=c^{1!6we2!cbE&meKLFk|v|Db#ab0FAf>Z2#=Wlx9#Gd+Z5r1EBT#OX)d7 z7T|ZWi>P&I3N^Qv)|z>u-C=z$DDwi+7Qkr&3{QZ#k4@Oa<%j`H!V@SL#2x^@sVkWs z`aahTAOLPI0eAsv>yT3fn0od6Sg%BaiY-{OL%e{*`P(Y|@+`aPMW^;x3 zuu%n+!J)Axph8@%5yg9!Iw+7Q0BHgFV za^e}rr<8mD{P-~ys|i0K@O{wh9qy#Y1^(c|pUVHHGtq{ps8k#xfK$W^4Iql&2Zuh& z3Mj{TlW5YOCCbB#%WoH#wO>aZ%@1i20L&GKY=Px_#E)a_yew_wEI4#0-n27F!wfsf zpzIHVtzvhpOOE|7R%z zXb2$Xg?cIg{9P4Tf#eXq==^*0`Q6PwP8(th>=4Mu40SpN-shpz0lY)K0F=lp$S1M( z-RtD0f<|7{F-&(>uho-VE{px4i(7 zok$M(6yTR3J5f_03J!_4_=^uUU971Sr_4a>P@g*9VA5_4^m9mnFH~FQZ6!2RX2;D~ z^!e4p6T{>hK=B%Yqo4mpfPB}GKc30}!6EUMVF0Sfxf&+`xmw&h)Thm9FDpNHBnZeM zZvkc+Kwnfd0ys6x3j)ZsISdZ<1v!}?1rQ_7vu%-cR%u_adq?))Neq`)PW)mKMXf{q z-Q@X^dQS7`w#t-`Zbu{D1N?#kFMplt`3ce-{c+D_ tAbG}Dwk)bhR*=d>SnV|px00000Jqvtp00009 za7bBm000XU000XU0RWnu7ytkP8A(JzR7i>KlcBD{FcgL-D*6DBCL|RkJOr8A$R%)t z#ehYkAR{Hg>;|$;TpVwJ-~|Xg1)^%0z6;O^dJcCLTdwQpzMk&?+b#1vhr{7;INs2> zhSLmAvA@{gt2^DZGss7-*SL%;`>)D3fic9cA5bc;>hz{^VFY5=gi1B4`m>CI0_3#| zLM4S6h`n~f&oeMGX4o}-F2^8%OAt8VGAeQ6^IXL55%z-bb$S2=>l79&SXAQ4tjWw1 zC$l#Dyg_fB*TvK|!&ZanZR+>FN2wDM9h+aiO8fQCVrp$;kl$0RR910cCnn00009 za7bBm000XU000XU0RWnu7ytkRJxN4CR7i>KmAz^mITXj$s8tj40tcp&5v0f)WZTPR zK-=6fm2r8CEnTE=x8yAXX&RtTjIYWrR0Sh>#+&Hv`;v=_H@xb+)B<{8>OW8@?5 z=L>83>-bwn;$Opgf&F zJG9*lzAPZIG|to|5is%vO%ZZn;m-IhEIhj?3Fzzm6!7KZ;@qnv7GY*Fq4Ud4XnLg6 zJX(lC4qQ0xYe4RmxluT#CF7V`9HT>B5Pk9LCKoG<`2(&25b)+Jx{!r;S>ZsM+03~~ z-m}b8a;g*JICay98jx6;7fXP!5MCkTRXEG{=|$zH%|eI77tL5M;Xe|)6etR|MeCavy^(oB}(&eDTh49VgSVgX^P6QC?{Gjs z7k{YKLuQ?v|LS+ITtm7BM23Fl)Zuvf8m?ciTd?PzV$TRvdXlDaI{N>-{(J>EF2cwf z!zMt*xtG^3`KlUFIiH#inka0bJe(`XZC97qf1K&DE-&$W-ooWE;DDxcM8Vm542Qxx zGc>#>+QC#$*}_ReWdG)4u=tocz-)GCY`JIP{*NV~a-WtIj8(wH$R(g~pYM9Wk8VAa zk!L+_ct)?#b=-aya$w;(2b_5kSm;F-2GbV)ngeEjP;e(4!YDQjzN6_eg*FTMvvAN! z2wwKY3ok+rEF5xxBHQbYQBgl{0~ATLj~+cf4p}(ER9I1|9|vZ%Sr}j{oa;h9wL7DH z((MA`8`(U6((6@Nc&(4t_PD8MuJsOj+#0RHeL#mWSqk-q%RSO$`6Smje8Kl`(GHFcgLfXyTl;6FnHT7DWW)5^j%? z9wC5NXY82C(IQZ=14g%C2FrP4yA;g@I`l3jMcRI%BO^7?rSQLf?-5U2U~m)#q}ty1A+F;t@OLc7n==d1kp8;AH;g_I8dp z&}Tnky=kAWfE`8;P#rU&1%_o-rBqqLaa1jE&0q1iq#@IKItxz=Okdk#L;O^IKu zm#r_p1A{-Kgw0xfsWB6^kqTI9bh-=+a?exKJxIQh zxxG^((-2s4&r{>i$f#b|#7r8fDBOMBk`SminP+PRKluspjfB8_lX(t4seiF04y^0+ zzPEs>g#P}c&JKZ|RbW%ePp_{M`JRJMu79f*x6O6a_U}NGsrYa;9qj|_vEz*DouAi2 zDC9H8JD+^kyS;cx^bzn%*qsoI(LOLR@<+O6*zXu0dasSrZS=WL7#C9EKrJN0%x!!3 zd_vIz5H-G5M+?{jMMXEh7kJXAEPAmhi+?!L06(gFw|`{6HU3}e4?DMFt->hd&Hw-a M07*qoM6N<$g5In*sQ>@~ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/machop.png b/graphics/object_events/pics/pokemon/followers/machop.png new file mode 100644 index 0000000000000000000000000000000000000000..37f625a5d0e8126b1062e8503b68b8acd5d98290 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*jU)u`SRpUOG`^e zM#h7hjvHqdzI^%9GcmJsEamT z(fM}r#=K?&fwqZfxaTA!`u=8MT5b$K>yj4|UpWQd734?z%zE}NU{S}a zAohQ6KexX>7ty!KH2d0`$j|nRzJAkd*H|mQ*(z_|3}Kt48eMOL?nT}X(yYw7WpcJo zbNcbK#=06muk+qo_c}{SwLK*F_O7>1d0X#oWNUJs^Ih(B>KdUV51Z%seGvKF_ao|l zqRX574X4~ZJeUtY=gt3dlFLiZ{2*`GO-B=pGtyHue@!Wnneped5W@`qKX0$TY@O@( zY0I_QmrqV;s(jE`#qiF3U&Z0s=Ph_zR&I6R?wj+Iy*5WzI-;n<^oDg*LCUYGXP@ue zQ^Csl`>7UVCF|w0%eN#Pd+(VVS5g0!YgOaEm{8u6Z&aDT{Sn%j&U--e-Q1nO?)+># z@o_4{|kc(W3wW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magby.png b/graphics/object_events/pics/pokemon/followers/magby.png new file mode 100644 index 0000000000000000000000000000000000000000..aa824e4c4a3578544305b3314e89404b74e7a30a GIT binary patch literal 545 zcmV++0^a?JP)G|=&IZ;_@(J46q0000000000BKw0G00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>Kl(A03Fc5~L$YKXUkq`?~#lT#3$`INr z&ESQh%n=E0hAc=`o}h|u$Rn_H1zrHwMp2RcP{eLS&lfdABqsWAUw+?zXUmRd9d*=E zNBti$m$_Y;O-L4DEm3gMm3^2Pk(6~);03tdm}Sw@@Ca*h$Tv`QV;1Ke(8!dvyci&h zy737BEc5-yl(nk$RYf$1_swnD+QgHZE_!yeIVssL3O4^0Ogj3ypTCMz6R?p z=e*ctEe!q=4zT^<6doFw@^+-iS$jbX3n|3`zIzL$L>}dB!8$3OpoOJ0iZJ(ApN2pQd8rT14aW z{64`iRq+6^oXsTSvEq8YeHI!M+dYR~B8$yO{RIw~j`}H{IN?Q!2T)x5_Gwb$UxVF~ zN#k!ff4Laq!0_QRHT*a;8Y=#!sfTx8v5*EUg^&0as(bi6G#aGTpYI!l>BPk*3l|3K jf}s6NtKTr2tN&0xT*mU>tCYpk00000NkvXXu0mjfgEZ@E literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magcargo.png b/graphics/object_events/pics/pokemon/followers/magcargo.png new file mode 100644 index 0000000000000000000000000000000000000000..a64af468ebaf3a575f1c458470f6bdeb77fbb744 GIT binary patch literal 1206 zcmV;n1WEgeP)(OKb9NqHF&000000000000000Z>qnf00009 za7bBm000XU000XU0RWnu7ytkSEJ;K`R9J=WmA!AO zP~*R1aYnF}^V+VlvWZYfHR((^OAYldkb*+mbtF$djHxdYy^B=vyXE+Z&O0iKUNsAf z=tU>PD4(G=JRAD}&I$uR$2Hy#zg$>tpZeXkT-1ZxMei$vhIE#)`=d#Hs=vNCJdqBx zGn3MAiVwfN+%^g(+;fJ#!oVN#22x+Qn)!h9VRY5@L;8OGQwPZ_}4X6F+lJlD;K~eI0!9OkR96kPhn^M?m<_YIkwDNu3oXbiay(bt&)b7nHoc880?z^9V zY5)WXFk#?2yZHvx4HyUmcg17BBdCn;Ip37G!Zj#tPjQjZB!(jvD93b zU$w*}&Ge~IN%B4DbK6cwz_M89v75g<+9naaD`$9TIhI|rX95<$ZehTcTo}5u?9b<7 zT|qX50~en{D}YA2B8s7l;y_eoXI=%O`1pmW+9#;>ZPbm+C08xR*t~dn6i>398<<$z ztuZI?JTsuhueKYA2Q2G>S<4DU%E>yY#{n_*?G_hrF_wb;Vh=F3iA_rGTL1#Re0x>N zg&}O+p0pr12e|-wMLrJ#IQS;zXRQFXUXV>bfCi31Ft|M_-_nPIm=NTYh6oDgxa7X% z!jLMe2Y`WAevuI&1i%1f>?YqLg|cQ>787Fa2$G6`jDj`Mih21?V9BMSd%}eSLhK3? zA(0!9jhtNP24rK&$+=B>lz)brC)lq1sgL_HLFKJb(Ih5gRIp3pM8Fy~vxbx5oxRb{!O`jI`FSBh>8VNSVL>r5G08a*>eDGU00009 za7bBm000XU000XU0RWnu7ytkQzDYzuR7i>Kl|N|IP#nh}XtD@_1KVy+4(=%jS$YNE z6+6_VT;AOv_^x_MkHl=LTKzkp7nb7TwRgdfqgYwY zg{!FoDNYC@R^4#;{t2E`S1Ll7X6AEOU38x1|0E%gqq_^Ys(iSx-h|@vnh>U$3D)zb_WDxH+Pq9ju4Kr-xfmSrKz-=BL}Zc!Y>0@gz}xw&IeKkY(;hhrBua#HaSn z&AsD_6D=^!JhX}XUmdVyKB^mWfo@j_d9?P<%1#Le8hun-E8|8(t&~+1R1qw>aBV1t7#8jjkVK3Nf=>JqB1bY_BD=ZX2H1k`@bj zmKp^LXJLW8hLL!!5s{f7YJEY{3wt%IV=5fFg8Ifn6XYx zc>{>T?(4djpVnIv8yoK6J}G7Ot|x@Nfd8;(LX%4rv((m4Vj<&3z^?REQ~Ybs_uN`^ zmqX5rX}{J35(!zs8c>R1uxh)s6bOsusDxd@-3}C?9~ZdyOvgZ`R3dY+98I?k+#{wC zvVtZt`}Ki=6bs#sU&E0wVDSC=w6ude2hR(TpUPs*+c13)LRQcQJU2Sn?<^)@;@gcE zD9PfY1$#c&|De~ZncUuxg{+`co?9LZSzWu1ald9vv`~V#Q5?;A{L#gunf#+530c7% z3(d}xa0SYIZp5w9=m8n9+y)T3QgzDCa?Z+P+C#CB7qn1Cv`b}vBse5qFlR+>WNrS& zR!A1}CRLI8uND+6#|>Wzx&n>gdd}#+R6ygqxoTxGk0eCNj|pOpSZO8s|K$%@ykP}C SMzELw0000ArS!q0r5#8k=r(L00009 za7bBm000XU000XU0RWnu7ytkQ=Sf6CR7i>Kl)Z1$Kp4ioWwNC#5mJ*dGSQK4otXFo z7(rd$NGLfAhIXP7TZYi73@rR3Oj)7~j^*&-hT?M^pia~#*Uc@c$#HhhzKh#ymogyr zl`Z*qAJ6lgeLhXQtGoJ7O6PZ0PIBE|4V>kj8NQ9LTMTfM!A<>|j#mY7&fa4aT2h31j$12{^_(9|Y+=uGuHiRMUk){~98Uzm zt~F~)aTxb<@2Fp{)r*dry;h^%QgH!l#A*qHm_6B$EvapSxz$s1*{ZNh!38qB=r)8} z!jfS;;XaKht*Cj+>R9cDf(=TkWec^0CBt|^i3vs(B^zLw^$t?-0n@Xjz(|cMg$~H5X_E&ei1F#4E~kQeThhpCj=z>IqAN zA)v4k$PAG3mv_fIbW03QS(ksz(ELpyOdWJL;aS%0+b&x8B9vjfGw|)@c;hips0Nu} z%6L!cyY{d5`=n#?AwyVlYB)ref4cDOEP!wMi-(@g$CEK&ccD$vZq7ro&4)1B-T&~C zM9aOU!y@633+Pcq(8V4KMF4`%Llj1Hp83c6HrBj(w!j=SK@22pIH%8+{m+AheQs#L z%thxmU@oXfbC($c4*51Hpvj&Yh{Ofb49&pJm)!z}KiPnHw^m!W7j5E@(h7 zh0v~N<6RipNE>E}T~r<;JrW<87|l{0?un1WITg^1UMCEDb{2qhI(*tV8)Ga4r^DSH zj5EJjpxw9HeOt|yYTd3>RXjQ}(Ha$p19=*aN~U~R804h5Mgq~0FcCcJmy7*u+iH5k z*?6P+=wwt9(~Y0#dW^X>k9 zTwZ@BGu-B1aC(uI$?iSEmjXU!-{7`A&;5(xGf?5>h#c3t?vkTsdT;+Xv{foU+AAou z$inpd=dZ^;U-HxV&1sPP`?LHZrzMkfbXy(;O`DsVndBtUrE_3MrNU;hUB6!cVx3Yj VM{wr3t|y>a@O1TaS?83{1OWY;#)<#{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magneton.png b/graphics/object_events/pics/pokemon/followers/magneton.png new file mode 100644 index 0000000000000000000000000000000000000000..75f67de256193522c4ee6cc591ceddfd8cb6d312 GIT binary patch literal 841 zcmV-P1GfB$P)KRZnZ%FdPl!;9RvrVz&G4y=-Co0PDWN zpr>S@hMiQ>R`z_6Nmt9!dDM_oFKh8mh0(b4m)lR0E&c3_FnZag3JBisN$)-DUj~Ec z_S~M(r1;n3(*#F#wL4~~*f-o0pg(uCDgH93SKOJjCqRGhX`ZqjgMM+xa8Cf38%a+E zj}q_Qo3-}(Q&2?5nj=7{25`P4I2!C zi#qaZ!?KI@kffsJk44Q921AVJJq(5|)`DB4HUue*&5Z5KvYhy8U4NNAmD|%`zfzoLT(Ka9#h)E#*nvyL>(cyw})K}Yx*%M>S~i8IUH%j*yAN3 zhUD_c=@esqD)Nd)kJ6tKr4140DIu%K;|vTZEw2Ryl2gS>6`VUPML@%B z5XkXKdwsYu%$Vb6Qz;Lr=a<@$GbD&^(I|bBSL%bqm(|5<8VdP>(&(2F@P>{*SS~T& z8a9F#c{TBgzuwLlvi94|>nlq0>JfUiWje7lWID0o$?|lJd248RBbcJZ?{0esH@W&! zs$#P)sbV&9YiJWEDV-6K61bp_w}zHCf++FyMju>%)p(MYk&I43$t444ZSG^Nmo~v1s_9!I`}m zXXh-&f_KlreAHFc5_ep+K~r5*1V@$$$Z&o6Nzn zw{|GJssIbE$}h;)bQ2{AId`ikdo1!tOH!mIGPV;aNGCsN(02#EM^YjulZ!68=%W9m z=?nZ;dBJ&>k+FQnvPUXAz+s`5_+d4glh!tLSq>OE(nH0MQpj)9X??4<$V zpy#rxg-F_9Bqzld_+ZK|s~Y=0WqCY`y^y5{WDst%(u_&PCpnRrA7@X#L%%$irTkDC zl2iNvWC3oDvYHIQVNYCEhEOn8mfjM+!?k%N-Mx->Bo4PK~^4)$4qmf{r+sEU&KvdqIs)E7f{|n)Vnz>)U3!FfULv9 z1a|z1c8T7S)BpiSTOGL9JXcr~VYutE569XFb<=0FjfEST#6!wWSX zTCZ!m>{sBh&?Dv7lu|H;jp2pfvj+f5Ga!o&uWmKpE5j88jP(D#;91VCbKv6!p6K7m z7(UXD(HwX`Q6DwE*ZiQlYcAn4CH5OKeIZ6AOBvMx8l&H_ZOaw~S}d>`G*^I72?^$$3MyZ&v8Jv9IT N002ovPDHLkV1mZ;4krKr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/manectric.png b/graphics/object_events/pics/pokemon/followers/manectric.png new file mode 100644 index 0000000000000000000000000000000000000000..effb66258998e83708d4ebed81f62d9f975a2a74 GIT binary patch literal 798 zcmV+(1L6FMP)eG+p`oGa>G?rHNdN!<289j<00009 za7bBm000XU000XU0RWnu7ytkQlu1NER7i>KltF9aKorLZ0(0)^CiY8qiejZP-U}sD}D-f!KL_T@>%S>_g8y02634idSe@jPf)i|5@taA0gOGCn2pe{Mb&^jC2$9?u>C6(s zByStm;s{fV`&K%$#CDPl4RyY@j`7g|gV$riB!|Mfb%Yt?ij~sX;JJo~1;iPu#kkEx zI@ds0E2S~xxiS_ec_*xiRHmv1LO+e!t?lP=K!ORCn;f?Hfyu%h8DV8UPS)Nd@vk%`paTB!2Nw-X0BHGxoP=@DdLvv>^P|AwcD;lZzZ8y z)&sB`Z|Kd=BQ~$}w&_MpNT+BP5t0n>2OR*y`^o2=o*?VpPjKKW zUx2d}h%Y&}^Z?UkWZd+aAFI0RR9107*qoM6N<$g1)Y9r~m)} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mankey.png b/graphics/object_events/pics/pokemon/followers/mankey.png new file mode 100644 index 0000000000000000000000000000000000000000..dd57bbd4280666f35c89aa440fc4e181152352f9 GIT binary patch literal 631 zcmV--0*L*IP)Kls{|SFc^mg))zRq(R3(X3qEABTo4Wx zDW!+k+q%Sf3EYS1-hPs97gEZ5Xt``>Zs?Q_$ztPBOy18>$^Rs~xuYC(s^9I=PkLS? zStewxvBnx}tpB4N?>N_kjGfH$xStJKSI9xK;6&zm)H4oQ6_wWjtDDo=M<)!A_x7!s?t+=QXS%|tk0ma#h-*$7#<7y#_>FKD~eV`K}Pb zA;#Gbu*Yf3^bzyPHY2T2@obCPSJ(bhDL%h`i}?}edpyJuqQEfigb`l6D#HDhN0_hh5Yy;75eare8s(R9lJ%aN6Gsn^!aOwRPV<$OhXoh0*+Io^?f_$3W`qs{ zw(bA$XzGjR6RJxnKDSKR=;c8P!JXf0>XId)}e(4Iy93&Dk(0R z^lVT-OIwF#C}aqR`~{}OTU~Gq1*fP1iFk=KR0oD^rpUX8cyNgdwLwG2{ujOXOM0>! zyInHnz*y(^bl>;g-MeQ^yR$pH9W%Q8bF&32SE-fa6^miSKQ}WV?wa`V==eVXmK3c8 zC^g4R0E#37EDMx?ON#82tj^J})x2B?A1jDPSm{S1f~5jjV#AJ?1JK`eODo!_wIHC> zQYAh62=MhCd(_D^S5zjZ07xe#!dMxe=a^iPZYKyJ7-s;QZ>4hpi~7SXs%}|k z0bq2MuMx5fXcs()pAv^FvPtR+#$e?Ne248uHt|>n(JKJ`0)nCl*--?HPaFz>-(CXX zCHUYn#skWj?Tu;i866-dwx)=p+w>QQBUq{;k>AWr+VZ&~T3Lm0iFRHXRcMNUINPnJ zsJtDd0BPXxgiLcqv`etXGfSlep@<6LjDrxj4rwnMumf|pyghy^is(W(A4K4@4#qB# zim*#e+Tw&}gV675jY|;L)db^+xWswRPiqM2F4S;!5?_iUy3m^sX5iBd=-4Gv5q62G zW3GE08m%+K+_N%EKsFv2xzfA6?{ z=fO1KePr}F{~6CPG6ug|_sOLBjr#9>4p8l8T}UbsK-lL+#N|v8k}ybsAy3Xu?&JP| zpVu;1H01$0yYPY35x@jP9m`bau)>6m?Sm%tP{uFIQq4@`SA2Ww^>MA zD#`^Ehab9EDqI8OH2D#fg~Y0@-LN zr|C3vG^t2^r*HxN?E)+SkTn;aR8%naU%~PXSTuhPK&I#>E5+lL07kGn{y$i}65tl? Y54EAbF$x%2xc~qF07*qoM6N<$f+!HnO8@`> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mareep.png b/graphics/object_events/pics/pokemon/followers/mareep.png new file mode 100644 index 0000000000000000000000000000000000000000..5cce3787a0e0bccf71d355cbdae6e63d0146cd0a GIT binary patch literal 722 zcmV;@0xkWCP)FMeD;c)?p1qbQTY5A!E+?>K(?4(8KokJ*(^;xIGcdbnY$$_k;Sy!C zCH{0|0A5F{i4>Q1=)lk+BU3wei9EAZa=t;7j}VFPU|_ug#zdlL%l7?AT(tumkLl;T z_ujqJfzT;Vaf(y?SGY&6uN|D@Ht_HFN=Kogt29^re11*d!4mw3y=3H<#s*A?uv;~H zVSZmat_u?fA9Tsu<0{X=EgOOsuc$h!r_9f@Gi?FZuZe8!so2trJP6LCvcGCD9}1*_aH$73Rc1wtljK*_|NCAUsMd3WKk+8>7lkD>Gy%MFZ{71#Y|yqXknxU(LOp@*C2U`gIt8 zudOT0UR-!{6$C{C|9uHFxuUeN|F8?W+jrIl zd$zoR;;dk@jF-!@z%#!egcslFx-dRib?$aMCX@;d6lWQ<8UMDEY7ahyl=43!8HAUm zoAJDn)+;WQ*%qCJ(Yv1a^=gyBh$ey?f-z~(jXNsm#l#rVz9(*HALoP^f;B?OTv~TK zVgfeY4qwMjg8EJIJoAQ>o_<1VVEy0MiL!&O$?3<8KMgk}z>*nwdjJ3c07*qoM6N<$ Ef_t1&O8@`> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/marshtomp.png b/graphics/object_events/pics/pokemon/followers/marshtomp.png new file mode 100644 index 0000000000000000000000000000000000000000..5b04823a6bf9749da2008436253bea1365825e2a GIT binary patch literal 552 zcmV+@0@wYCP)K(=ltpKoke?3|VgI5TuB!TcAUsU%(+D zWav;Zg!Eeo)l=wFs6%lHHbGC~uF{T9?bJM+FHk3+>jb(y8M#!W;v_wn&aWr=^BSzl(Pw+^Wi&&oK#`4a$M-cgzW-b z^6(ueVVc(Aot9QB^r6eSQ{WI9_VRAjkXxt%@2_rx|~^=kNXx z7LGSAFq?I?@$@<058^cTba5|`8MuM!i*Pc>b#PXn%&uzj3jG9P1x`hCaP6Xo78sox zZ#})m82K>PbiUzyoJ>wlqEb#_UlxM3{p< zZfJ&szK!-gi1Z_=o;b+rtUu~)(4Mm!9&E^epgM+)8w%SnrMqGTLaqlvBOfoOpVI4! qQ_1NXT~L@`Eb@d(pWa#c%X|TGaPn}mH|Ng)0000FN2&SxK?k=>Px#k%Pg&00009 za7bBm000XU000XU0RWnu7ytkRK1oDDR7i>Kl|5@4F&M`s@NyW+DSl~MzkGr&hYTg8 z1e-hPP%vaDX&@dv#CXWksd&hcLfZ@;Y?`0G;zmQKwx9FiaD|NlLYd^!N`<39c@>i<~ZDBWo}@&?fK9>1i1YhYBwKrgJN zh6z(2z`n|h@yu4xGBzsu+z`v)P-24Mts<1nNZIhbwDutfr^dF=08}{M^b3@a>u zUNBicTI`AnYWbee;N3>4F;qVoTX|Oi?rZ`{=n8m*k6!V7ann^X8r{#QZr-?P_Uc@) z5G}8(4iWOaRO4b^1$lP^+z}N}!T=#tNeI0>?{j3-{c%9^jZt@Ca)Z4>S)D-x%>(74Yc*y&>fKb!1Q##2$(plV{J4YL1oR-A95{3Cq>Wy5^f89MCu91~1Z%q{iLR26u2$`TutZj&;oK;g2 z4-X{@T}lXEsn1-eflrk9K+U0rv1MrsG-4JfS>m)j;+v0_LIH4Z4`au#4>+;5Kfb&l z53Bnw;1X+j)FGF*ZBr8K=J3ff#wYrfOQX$*rC_kLw7>s0)=`2kaa(S3Na$G?C#UJT z#7iISRqQtia$+gy;LP$qvQr+HL&D^8Dg>z{!4{racx^nN7-g`1;xlltOB_lmfz)az zB?Q2*+&vB4n8hh#|3v>6>GV5^Dm)v~fB)mfr!4D6uCG=Tx0daA0Nl8fn00000000004!rO600009 za7bBm000XU000XU0RWnu7ytkQYe_^wR7i>K)j@09Fcbh_v6INnrG+lbB_)Fp_5()N zON!YcJLOO){s}t|G~$a_T4HKl20iU0r}N_3x!YK|Y&*=T`cab_E3;fBY(3{)%;#sl zCo7Hwz&`e|kA3_{BxJi=iJoivpX$?sY;!B6TE(UTfWEiWVoX43vCS#vWxadT0M5`y zZ--?;?%z|-Y>24OYXzGI03(F*9hNW6mOSvxhRBU^Z2=$I7xfO`k!`M8mVB6-J+s{c zA+||241?b+K(4L&)6>XgHu{0<#ZxvBfgtObobTug$))+e3tC z{I@~fFmuJ{5TH?Ewv3jWB2;8?Znh}MC|zL>m<(rb`ibDot=6n*8H;I9r1@f+n?1Ah zl+xTOfyw@hps)yjv#JUWJ5dWP;|O0OMWy@KxU%FjZAOI{UhS{CH< z&tJ#S2mH=6dgd-8&L{m+HPGDiM?nGLFMdye$ugGnFSh-Cz|<=1hO`)3BI28Bk#+aR zx50`)zNEzHhbfb9w*9`fR1I{Cf~;#ug45}XLEp0)z1i| zy~=TM8V|Y$bCnY&(rPwIcObSt%rZnweh55rq605xssZde(P3G6Stj`0iOxN>pyGcd ztsZ_hi9{vHht&q(w2b7$vU(*cIF?QpHDbYpB{ezQ9h*a{XQ&D00000NkvXXu0mjfMOS0A literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/medicham.png b/graphics/object_events/pics/pokemon/followers/medicham.png new file mode 100644 index 0000000000000000000000000000000000000000..25f063da4d1d4d58a9c2464eca29a022ef6d8dc2 GIT binary patch literal 673 zcmV;S0$%-zP)4~A~>G}EDS#fb;F&QDjp%IZeS;=96d^)GK00009 za7bBm000XU000XU0RWnu7ytkQ7fD1xR7i>K(=lt?KokdXE!LzhgLe~o@wYHnEnQ4- zyeNZeV!5f3ArzzzX~%MuLYCBDqI5C1L%kRZiiw3prVQOmkV|Xi&8R_Gm1Jn&J?k!A zIu!EXe(&u6J(((O}vTNrXluyQQ|~s`GqaAg4V&#CiJb)GJP%bQ}%Sr*&EW8 z*s;iRjINKjFIa|Re-l`7DRVt`o*)P&B2R-U*GjNT4cL#oS(u)OBFB`jc%IUPSs44? zg4~oc-zv01X$pUG*u~7t3KNfSe;q|@jum>Ib`5v|>pXq?JAD&62G9Q4SJGU(nv^=Y zOWhhM#4ZYNmuY%CH+a6B5kekcPD*{1`fIo`b{_fY_%1mzxmJ3+gs8{muDDv-17+An z_AkuCcP+jvHPTe2atGRlIRaX^&@CIq`g}HG7xrdb|76MBn&3jgIs4MG!N1He($!$#|C?6C00000NkvXX Hu0mjfuWC3d literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/meditite.png b/graphics/object_events/pics/pokemon/followers/meditite.png new file mode 100644 index 0000000000000000000000000000000000000000..69d936343b3f9a6b6dbddd085f29091480beb2ff GIT binary patch literal 556 zcmV+{0@MA8P)FN0Z0000000000XR79o00009 za7bBm000XU000XU0RWnu7ytkPqDe$SR7i>K(lJlMKo|z#COxN)HqnlrP0TqJaA{mx zazgM{aOsLHP8y71_7@Z{A@?sB3Jjf0_+j>r9$Zg*nCQU38^(Ln*khhBFx#|%?Q3V6#WU~JXyXFE8PGzPfyt%?>=5C~nP%~9ir|OA#swM(rjc@{ zTRejZUIg_vEnuT5WUg|inFsWWLgl@58yB#r5HhL`ubSuHX9&^jsLsX(nh+w!cGGq9 zv~OaT;$~E5;{qY?QwnwS#FVDRC#rKh^it+Ee|C5^nf25Gn#C*Q_49a*YaLUTvdRLA z8{_rFSN;LIH;vu%GvznUg`K%{)-4KWc)q(XT*Ci+@s)*ji^7;-5))YfM#7z8X(w@T zN{N$f?{8e*$M3z$pGG$?%m(?Qzm$dGQFyT(FzBvc-&S{WfRhLl=}teY^yw}Nogt-9 zC$iAO!eDzX&-CCVUcNRLAkNXr2u}$00009 za7bBm000XU000XU0RWnu7ytkQ!AV3xR7i>K)IUgDK^zD08!ZO`x6T2FAkJMn9_^Et zNszX8XDwLPR&q)Qm@**yteX?fYDdlp&44FIjcP~xuPwwp0 zq0n1iKKI^zfA{|6N67#2FO0%KKTLWsFt4}$$ADh^T{}#;Fg;y0;w;N66L~mQ0jBBc zA>q|RoD!$6IXAX!8%y@y;Q|^DJjO&0ovoBOUASB5#oCr_4-@5rf!AaT06N6&LUk+t zp@&%>E_e^{_7;D{KuFxaP7hP<(g_b2^a1+GExx6|O|K7nqV3^=GdME>Ow$LL*ACsj zIRt2FYi;KXKn8aGX3GFiL$^=yZlS8eY!3sM`~Bsv-%O6s?L1JOn{dA1>-}>1Uf1tP z25!6k3Cuv-`GSY|){aB3NkaxEZr9rD_&&t=ob7zPkT0$3_td-)0dc$bWgS{!@g?zC zjynzfV?`%^@70UNJ>hoLU2n5sadvdlwjA|+#-p%4E?QrbUQnK$%d**`+qBjWA`Ile zPui9nnpu(`#bU{0TFFX6%w=nC(-dFH#_qwm7h0Bqk1;UN3Yeyq%L4$R6);WkquN|J zfTqvn_zI`CE)t)QB7Ets4X^R)T@38-#BExMGx6r?gW6$yE_Rj46f5%@Q=gITJvP5u z(%O@4e5R|5Pb&H|HjFz8pkow}X4TR4CGq+ZKD1GDv5k*pMVw#0T1kA)|F|m9Hl3-* z7Z}(M+$LmGY-HayweNgrU!bEvw)za)UtoFM3mR;Gu4Fs{Y1JDzizW+1!PrNo;*Q=9 zZIed1wcq4gGvi$BfGR*)$fHOv5b^W+*YpWf9jxdY<4D|_}#%_Fb)*YJFQ)^aExI+KJ_yvTC VG*W;9Kls}3aF%-syKxK-(fuix)sMu!4lVpli z%NENL7&I0}OR5dIz=H7=7Sd@D%PUf*OPOLXFc;Xc_sQ5Z_B;s-8%(C)3-TP9 zvbt+gK1FF@kSYYm6~Eg8su-UjYAla)QfiT!oF8TytS#g|1t5#_B)@{@YR*SaphN!tU}&sac!h^i)+M5hBz&|38CPJnEl!X_Ln{~ z(&ZncmAie3Fl|cE268*H(=ae=-RGaUH2Q3PC@~eizn?d#r2pPa9!guCQ3L+MkI-pAo~2S2R8<6IaJ3T%O`XPvP=O~ zV`EHM=Ab~2Pj7he>fY1*1{y(p&Tu)V3XFrXT7*n!Zt8oKz!Fmrzk*7zrd#nobYQgK zO+pRc3PUE-H1RGuPp7*Xn3{e!=--Fj+gh#h8PiN_TwhsUEmzoJUDbO-ntTw+M-(l- z-OmC8qB+IIkpZW;8g~;i@BeEu8q!=4y2i`P1;#Na1_yXkul8LP2B-t^|4sh@LaErD T#+Ho$00000NkvXXu0mjfR+cIt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/metang.png b/graphics/object_events/pics/pokemon/followers/metang.png new file mode 100644 index 0000000000000000000000000000000000000000..76bfae1f74fb88b87faeb3995d319abc52e4c3a8 GIT binary patch literal 979 zcmV;^11$WBP)G^pfAprpamX@I@DKSA|d6B{Cnc4CG|NkLDQJEKmO*P1K@@-oau|9E3@u%HsE9z^ia zbLl`a6c3S5y!1CDA?2l0*h`UIZK>8+5Jv)wQ(Pz%ib?P)XnsT^fh{Qxcu{(DW_CB( zT^A7*y!0Ki`|VD?_jYFXB?w)`Ra`|B0JUH8Uq$XNg2C{#hVEta?-cM$&OK}o)`n}R zI}fv2k2eWXHs_^;{@}yxewuS7HdMlon>Vr#k`g>3Z`dcY*6)R!Pcg!U8vl zr4%DvZO^};wA`^CuV*qGkgiI|tpmv5+*0*A=?cMlqh!XX8KDM0*jm}S54*2xS&XkA z6e;b}vbDFU*Eh~sjmWhY=R34Ziq=gtKF!Lo;D6hzJo|oOWig=E{)n#Z(B<*-ni3wu zjA8qU9zT9|*;T?(G@~g-_~`iZX|?mUZzk1=b6yLfX?OQ3`(6RG@X(L(g-O7z%Y9DN z=82Xl!Aj`$`g@hb-g_f#N`K07tP=Ru+f+WSz8sfJ>q@vA=aES;qEf0!Cw`b9$x0}^ zqj!(`o-o4Zn6Z#qQ}M2B-74scyYn|4C7dhHn9T<@suj6LZrjnmOtKaV+h3H$K**>C z%rHQqTvI}83kvriQFSOP;hc!^8@;K3$pS6aOD_T;03_H538|A%h?lqfzGmy9UtiTi z;s{SA6kc5m^Mp^C+bY4vku9XZ37g@XZcdITaW+D5q*^f}#O_IB!&fXT%~RJ1JrIHk z*Wp^2C&h>bv2}&VBl$p_vsSbzk8FE9iLn-*3GpfvVz<|Dz6kMFHdv6L=;_CXTHXk; z?3T|APpGGtv2N34U%1ouiOHDSEXG=RrcOd3f>q(EHwxbo?rJR*nvsDJpOi(&f~tlG zb(<4+)}AqtiJtCR=Sm3?{>;2}J-4Ev3rq|1%sUUh+>*jkpUjrRpV|;^b2;(iy*(vV ztzrW}SK?Iku(S|C8=~#f)=%iTM8*;znAB~V`1wf+^;skc4oRVI9#LsQuL405LSWpE zXG{x!ij?rDz-pT(?x=okWvl))aJsaA`Iq5;#}Cg{Hrx3Ak1GHG002ovPDHLkV1iUg B%zpp? literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mew.png b/graphics/object_events/pics/pokemon/followers/mew.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae89a52f1eb3a3d0fa0c61b38ff7d73ee873f91 GIT binary patch literal 618 zcmV-w0+s!VP)G`o~saY{m`O)dwp}BEcaR2}S000000000000000>WLFE00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)-g}xFcbjbNJUuceD@o;@uUuyZb6D5 z8JUhBP&Eycg-YzOHrG7Qgg9?wIC00nJXa*eFFIQwl?CA?`Re#R=h<=^1fT7*yq^p2b@L3cdw5hB+dU!b_t7Pl6CAr zh`?!~mgM1QPwZVXnIqnP_juN+naivLm6?m64ne;RkP4uyJ+7s@zl2R_Vo8W>Pr%+K zXB~iAxSb|7D67!vu79wERi(HI7}*ZBUDPu$ZQ*eWlDHQ8{#`{DiqETfW42&L2&&A z;Pk}pvV&x9Cum|dnBnO+vmX0^y{9C>5rRqTGs>JgnGY6-+T8D7q4!@>qjSWy*Lpj$ zd|C7LdBLp&y=j6nj=ULl&ye{b3JGR*sw||7s z>El)7^V2Bc*g?Tr=5xuJ_Idh1KmN9GFKp2K^I50s|h|uDx>d;b8=@~=q zMUE~?vDTChnT*5@)e=G>nX|-@r4T429hD`@B3p_|a(}LOk|lk*Sn|-NLk|LZ?xg2^ zPn?Ai`ak}S@k{(^Kic_k$4(R@^zzWk+Y4Z;X;c_T&$qWP_pQ9O0GfSj1}Kcjb`;Kr z?YynP?c^EyR2G2`(L-dl@|FTScVsq!euc%b!zc``cJ3~47u`otsInABQPc=fxvKz< z!n-i77gd&1L<)zk++9Ej$B(35RXG=qqlgSUxT}C8;06d)7DLO0lUD97V2`7akhtES z!czE+c-}Z@=dJ?S^9UiMN~m%^W^X<3gVoBKyoCgt8IL}S!eDy}=X2Q$8D}6fXK)Z~ zvQOYsg^bx_2-8)TQ}#qu3P6dR39SRk&l|Yu22(}|i&5{qg%Nf}Hur+05@MT3c1Fbn zw(!KsG8YyoczpwP7`M>H;uLLWo9TGYmwqJ_|47D$mp=tMq{L5BuM~>Fg6Xh$N=~0o zt={Fu)jEFOWJLF3%`lAq@meSXPb8y6xAN=vJl_bI?yZG%X!{1wbkE!M3xPh;QSbVs z44BdeqfC!c=CkxmAryg6$AV*&8gYKT*f3@Op;HJ&AUkwfV7b|Ry(QNcPh?ODsh0EC zk`oJIeM*hPLMQ^C9KpKSOTiqWDV@@jLMQ`|1zSif4<2^no;j! zg_&dv@p2vOtJJgBLJ?^Dt5g&y))8L@M`uEKT?)C8a}|g*cCff~CY4YdNd`yR4i?uQ zSSOOL^6n9H4ovg3SDu=L`3;trd|oVU_$mkiK(HvK{-(X00000000001Bbqs00009 za7bBm000XU000XU0RWnu7ytkQnMp)JR7i>KmcMS>Fc8KGYSm(8@G6N#S;&hb0woZ4 z>QnR$I-3MaAesXdeT8h!;6m*g%KSd^bUGTL z|MBkxCUr2tURIwf-=O63MGdI(^{@&I|K7kC)cm45&<-+Z}{5lRFhK2w+P^8FrP$N4r83>oE^3yGtg!qs|r1~)N&)&Ot0ex~z0 z%CG^LL6rAh`S^W|5#Ff%Ud{3-uea;nd>7+eSRTw05-=MIr`Ws$_%+Lr%fBt7Id6Np zMdO^V`&nzW`9mc-JX8wZ%>XuQG0YDcovQPdIzi){f+~z)q80N4{OZx$JbW?8w724%q~6F9Ck` zGRBChVj`So!s#R%rsJ+VTj}0N7&{y(As>D}{{V2YwFUtr-Yh1W(>t1CG9|-pQFTJ7 zQg4!tvdKte-b^y&BxF4x#AHHk3Juv43R6LZQjbLwvgw@_!157CxZy>{Ez2U4#NJQ1 zCaG7Ek26B&^y?R~vMC4{%ZxSU)EX>G!U}7MsueA1qskbg^JTT9?n4ySvT_VhGscRO zIODEiP1TSXBQ8ttkPn$oNptF!=?Q5T4(pugk8>z;ReNWmX8iHJo$%^Yp15ZmQNsJz zkr-}Vu1)i_GZJ3AXatel!f}Z_LoJXf_r9zX*YNEDUJGx)K_mD_c!qkn!2%NQv$^Kp hfP>G*a|?JP?g3LzRml>Qd^rFB002ovPDHLkV1kFjXEFc) literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/milotic.png b/graphics/object_events/pics/pokemon/followers/milotic.png new file mode 100644 index 0000000000000000000000000000000000000000..724a2011f6794bf558e8684706bd150531913178 GIT binary patch literal 1050 zcmV+#1m*jQP)Kl|N_`Q5?q~M};04W%Yr*MeW@e;&gbI_PHuH8q#<3cTF4@Vme+!NakbN8n?;5ZEPc z5g^FD1m5}DeotH%+Y9D1PoNVpEGt_EW;6DDmR>`^M5=w_y*_3QJX$kNJu7p8ws3S= zDQ^`B`j4JA%@gz%0ahP^b+QsdCI3c6~`8bh1qX znebp+Xl9#0ytOoXhzlgbMg^fq4QIFVyq?R=;|I;RA(dm+z_tC=3lx3o1aiV51>c6U zG@6>{0*P?VK;e5G!432zYC#oi3nap|0F<`X z+oZ8DvKX`yI4RWH@Gxx2nmaW*V6mAKq72o2K3GfRl`c?_`jl$I}Kb` zyQ&ph)(2OxVywJtEU(+3rO%h*c3?8jgdCIiyt}anZA2nE5Z5_IRqhicPe~BoPfpyWg7-FCpF4LZ%%05O zMpgQ~q{2xiC`9X@0|v)yp$;K~$oFju0)y zh8IFiAQ}hTJ783`{`FXi3;rzgu;@b z@WQYp#;G7ZJ*ydz20B8Q!9oxrsLjl?fgplVy_wTkK4}erUR+FT5b^@A5Qq?k2Y}}O z5HCQyEpqwzn*j&Zo-Akq1A2v+C4L%uwnf9sWJdiZ`-J`jX`a(|^B>f24$!-P0(hwG U*KA1kG5`Po07*qoM6N<$f&*pNhX4Qo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/miltank.png b/graphics/object_events/pics/pokemon/followers/miltank.png new file mode 100644 index 0000000000000000000000000000000000000000..09393dfbcfe1d0036364453638f8dc4dac9c35dc GIT binary patch literal 799 zcmV+)1K|9LP)FN2=iJ?hhd9h)6@u|T%K}lIDInlX!lRau200009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)lF*}K^z9~MX)(lh?gD;X*b}Z^b3U2 zLJqS?Y!4yq_%ez&4>qN=pag=qP_Ut=qJ=Ty$su*jr4R$|f|r&i8zdC+1=2uTBwqRn z(pmRyc6CB8z4_qfw|{+x-JL;6nrEJQ=K0sa$>$btZHayNhrcXnmT)yyuCCwW9Yj`y zK7ZzK3tEyE$}5QMq~3^KMWib9IaK`%1T0AiKuRGXLQ~UJWR=oYzAk7fOxu7`kf7@# z(>A3EDsY&s)%Ml-&91Z+kZ1!nu`X~)L6j0TKHE7`Mf?s3ngt^D#W#gOp;hya6oGSO z2T^VZ1Z`$}*l7&+#V!Gs_-rpwgS`>={Y-h1%E{@$hhwo-vrw7s-zP)BZGb78i5%=c z{rdUzLg)f(RFbn@dGfvnp!Z0EHoyO>`>tuEwKM0!*z$L~F;eW;Q{~LwCui<>GSAgn zA@B-=W+~xX^SENHVf*APIJTd1sWa+gj9b`Q5L<3c=3xW-3WH{WYa`I#1NA+pu%7|C z4q7#Po51H8+QC}A;Vx+T(3&SPz=x||UC?Yzi0^Ihzs0Iks91I%B*c`kPHxT)a-(Cj z2>J#dcy&dfH<`oSO+=2)Zf?e#SI$AoTfT7TeJxG2&XwbQUn9GyW6wA7*ci3E!c9CF zwpvn}+encwKOg*Ax_==w)e+Hk-aVSNeaBcr-O(WA6f*bdpcO*=0)>x@i;wti7_g?t zvigzdm-;ev7nH9d(Jy7UP`>V=?4=yz-}5ghM`6Kp()4T3*HC^8%bruFoyQ(Z_Ob;z z>K2BQI_$|&iH{nGu+0CVq#!KuCpW$k^UpV8-aMQKh2@9dG{(q#@&joqzCt)X=MSs@ d;0F1B^B3elf20uJaA5!d002ovPDHLkV1jQ2c)kDt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/misdreavus.png b/graphics/object_events/pics/pokemon/followers/misdreavus.png new file mode 100644 index 0000000000000000000000000000000000000000..89b91ee032347d41f651a6a6eb20533c63812a8e GIT binary patch literal 891 zcmV->1BCpEP)y6&VaZ8pX@Q|3FG|QYDFFci!9jshahX{O0{{R3A&Mpm00009 za7bBm000XU000XU0RWnu7ytkQ@kvBMR7i>Kl(B2uKorK0faqY*(2iY-h;soatD$QU zcxWi0RA{itVo0VgN0c|5ovF|c-TF7QT}5hF1*siEiUuhf3Z_GH#iT76D*QL}BujUv zEAG@W58L=B-F@G8?+GDvTeo#vRhe_`!s0(0z7}ZB=7*3$`auk4D3r=A3MFIpe#lW-e9b(&$ zs$&|Q$=4(Mu~!=q!VNG~21a~V9AOK}p-jm7a|kRUI3b%oO0b*>7l5aBQ7)}{QgT@L zHQ<4Y&jZzvf64>FRjoK*Y_o?A~oSh9E$)&MNvRdEYf+$pKp2~x0P zPc=a9+ll?*oul!d*aKw=ji6$GDfrPbTk@<6SlA9um) z%bO)P_0b*2^E`Jo8@wZ=vx27>I;V=5&Sgu6VgLQ%-bzN-mSxS+3U&^0l!3Jk6*?7VQl|4;<*gdq=nd)3@u#US#6>vAYSk9bJ*#e6yOfbQMhljY)bIwGY z0W!4bN@w2Jw)*-CUFiFAal4_%*+F_aj`mz>OTw`6dPJ>I-K^!+`L_O9e*giHi{~Eq RZ*c$s002ovPDHLkV1jTyk}&`P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/moltres.png b/graphics/object_events/pics/pokemon/followers/moltres.png new file mode 100644 index 0000000000000000000000000000000000000000..70d6298ea3f4f35bfcee3262f12810e805970e59 GIT binary patch literal 1158 zcmV;11bO?3P)G?r1F}ZPJ`N?_du~Er^IdMrjC0HmR00009 za7bBm000XU000XU0RWnu7ytkR{7FPXR7i=B$NNkLQ#gLL(;!r@H|uozcu2 zjpeX8EDN1O$aqG-KX2Z=H8QO#w{+3-z`DkOS*-A?O(sIq-!sK@GhIfm%Y9oO)jX@=$-s|Aunv8?t5> zBv!i7IA{_Cp4M6cCh0u2SQAtLlAs2d?r8$&+=7td1sp}t z!}&#`_8>w?lOXWAlWhRk0I={`yLS#-g+)o=D_KG@&i4~FMILE42=LjH?lu5%4FIb( z50Cx=v;7G;Qj#mh_#*y8<#PCCyO~6-*PU$u=?FYqt!0`rBZkruM6gm^=C2^2VK=&N z5RB3wJsp|=!clz$_EkFnTm2t7{kU?36XK4w;_`B?0)ubz^s+%P`}}qK#Sj2!TsgwY z!i7*KOFDrNIs^K(aO5+EC=|E20n!yy{IYzP{<)1Gz4#&h{YQ1v1E-*sBcE>ItXi|> z>SqYi9w{>6h;F>DR@{o`W)p=lK_U-7#|d zz=?$;gTP)dS5pW{6;;M>g`%r!&ol4SuZ-GLIRY?xIOg@ANAK_mj@c593J|;~mrlcx*iO)T}e|V+}n0$OJI{ Y0|$E&pV9HaQvd(}07*qoM6N<$f(L3D>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/mr_mime.png b/graphics/object_events/pics/pokemon/followers/mr_mime.png new file mode 100644 index 0000000000000000000000000000000000000000..ce52c1f03c82ba1a4471b4e5d1df18e5850fa4c3 GIT binary patch literal 743 zcmV?P)FN2YX?e-X>Cr)1X=!P}k&#I;IRF3v6tnKm9c8uKpe)k_=XMw(cr;D27!|YI9f_T zLm*^msR;!ubd%EPl17z=LXrmvcxdMiT}n+#2c;Ma#RLaDb||5Xi#8jX8qr3zo}qX8 z%hpMjtQYV%2>tHl@B8$ZYzx9lE3LE=2$AJn*%QK$9SgYB|DdidjH<*10mSzwq~Kvb|IzpT%nc$OoX z*DoHv?IwmXgQ57v14HqLmlKHa1%9u1$?ax1`hefN+`6)7hJ6oM45G{K)<0ToB<{U& zCk_OLK!i^y@BwLNhT%6d9Fiv?7zXQIU~}AO{7?Gn52hZkye;Q87=p9cQgk#6erpxpc92-{qO< z*!69zRm_uJNjhv4G5Sh;-p#C9ZrWc!G*IP2kpXLS{$TrmiG?rHQCYFs0RaJVX_28x5wWq+000000000000000=*}(L00009 za7bBm000XU000XU0RWnu7ytkPLrFwIR7i>K)WJ%_Fc=5$QN{?~+8vah>`r>MW$m$= zLIqzyZ-Th{NK1MwYiA?AfZ#=oFW|{-zMLj7O};fE9STDKr~L9y^YxTouS=IMUAp|E z^tUm~)e@Q~&f6RLOzEJv9#Hv#(n0^t0GzirDo7?*&>|5o!?tFGBytDM)Aw=gwKPg7 zt)%JDBA60N!tYGA=4q<^|?Gi zHjiUwG@F|HIzJ7)dFh&ujm9apt>=sTbqURb>{s7k?P+b8@w_^=nmt%dP4o6)u`Z#- zh0fvI(mBxDsH?kbR%<+YaYkp${Ii7?Uj&Su$UbH4NOr;8nbzgV9m}r|G!F(l=*A6Y zM*--W_th8C#Fc*-jjuM|3Y5bg_VfOuR8OK)iFy0F%$>zBS?mBeuEIX3=RcXC&h1Y zkbpxaM(%;wb8z!BbP^Epr&ZJ7EKW4kps z6~dNT{Zavg-Rz4U+w1|r1q<5^)B%t9SF0hm&DHGgX{N&#bw^v?_{eE3O-me@>4`i@=Th5r^}D`74fx=8>ev%)ncwn`IyBl3J9B~nQ2z7dD0FAh?)o6P)!&Jfx&S>QE7P*AprpaVNn6O$>G^aS@F?f>FN2gDLJ{BF*#8oOQI=N00009 za7bBm000XU000XU0RWnu7ytkPPDw;TR7i>K)IUqZKo|z_;^2+tXlUL1lOdCjN;?nytI6z2 zUp~)<@oT@>F?1dpT~8zCDIKPR#C@zbq8P_d+1C*Pe@={VnWr|QsXM1C(^aQ`BHs)w za%eLu8&T%$Nj5DCdTJK^mXlfX?hefC4E`(7_rDYUbi$=R9lF>z_Rfw=(z0YNcQ@#*22X`xve8KI$}>FN2YshI!(00000y39sb00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>K)jez5Ko|$`o6d6}Izcir&&l>qnQvt!iB_ZS8Ce}fZ2NF52 z1-4DEMnU8T??+j;O`xMNfm(xx2QhGf@^qe=(35?aG52uqZI8XwO+mxb@3NFJI52W- zTHATO+h>rn!@Z!}RHO`m0rD<~01#g7y|D+ky*=W<41#meXMwpH23@9U4B_bHKo*y^ z?QL;j44k0PG>VNS?>0{Xu1+G)2DZIDt!vkX>!8;PjM-VYl{uS?qpl{K&Q}C0*JXE3 zp9h#i4AmhG56snAA)=I|)7vre3*w_y)MqLbV@&Z*o4}(LN?eXfr}LWmSqfQJ?poX7 z7`2P~H0UyA@Ih-(_StQF+jE@XTh(Qm?R@GM^RqFcLhacG)55z=;E3lE#%LeQwoSmX zUJJ$_QyU07f3?nh%pBC2w$`~bzcA;~qpStyR`mw-?qad#o5i^eJl;9JFXnGW9*Dxe zO0e*a4R~58iPZ~~K3!^EGvRW+*vvnxpGAXJlKV2TTM{9LAW+@dhH7hV=jr@%IT6!x z)9HLR5jd?~1n=8svswCfB-y#V4F-tQ*Jjl=knddHwsf=pF%e7O-exqXs!Wu3F&w^{ zO>6^&ElcfrW36lhQMg>P)Km9cBvKorJxi)Nh)4lY{mB?v?{#n2^F zJY>q!Awx4+M^JF^(oUshEOd^crfR)-@!+*nX%}fw5q^JEPbcf{bdl&#+9?lV`KKp+ z-+QM!o#Q;kQ#{503DP+|=D&`BO1;1v;6E2YXI({$ee}|F78Kq9*M>8z0FxaGVOPJ) z(gX4&$~xF|3@^@bQL6i3m^3t?1!J5v?gEK3TpEU{!m?86!n zm*DlWTVTGQOdi^sZEl{3g&=rCOh${U!j$&18;foxr=wYGU~wZjt>(ql8{~OZmQ^(C zWiFb@j+x5ZEaUmRHGY2Y4YChQzJz{W;QCh<@-RK*Y?fUyCgwfUo{40&SX>IQ1f~rd z9vuYZk5_C2D`n7S*)fd8xcOSJVcoUJl`t+O@`qKTw^@i?VwSwd_m%M({HYA3`2Ns2` zAp@2JJG4wF-Eq#LwHLevgGJo(Pp`A9RVzsDS2Zth+gm8F1)&{7w{{bpv@hjugDVIV zrFR!piOCMhqAbfIC3riRtk+6okhJ-P!#MMGiTns3AXMwpN$x8ySby-`>@Lf`%#|Q% zSj__$YQa!Xf)K`$uRqD0z4bYO668k=>d*!}-0ilYKNTQ3)q*UF7&r0>05c4?RE(My zbT`6X7&?X^rK9P&;^~E8umnvO6&i-l2*fN4m7trZ;tum2OfST*u}9Q@UBghQf!E3V z!c!aEoG`HkYC(E)l9(&m>Fhr}7pX^RH!0Z26IK(miU!Fc=14;X%725N)PdhV0S{2KNBH zfeYE}xYdx3JwexQ!L-mZbnVh><8il4GFgl|hXl6k(^P1CqHkbdUoaTMxHGwz%=v0UAF{jwUe|GF zFq>wh-mo_)=lz7X8=Co!&*E;FRMMUAeJDa-pmLxH%j_~U)UFF2iLX~eAplkWS1 z@8bqBcbd|j@Cwq@#A{$;*VA13YcqJZ1+~`hfT7#4w|i@vI_o!l`QsL(yXWv9G6lkc m^C2Art%>#uYC2Nx-|`EtCT#bc(REh<0000KmBEUfFdW7M<^}dv*jrQ(da)B-WO|Vp zVa}QSsdR38+H+4mYlOT&DfHa#18m#Vyj+uU)aV*$>2*E^nV#1@?iJfcOt+QvF$Ty$<{&-H zNVafXvu#w+V$pEHK@2sRPq@vPg~xQUfF+wVr{A{GS$Y`lpa1Wtl8?_eFM$uF7+{H){vu3u0fvee&&SI({LubSW90$g|?edGLF?_|t{H0M<`WWRgKe}%S07I!$4@397bM7tm9SdK1G(V3#KFj*@HMt zoYZC)l94Z|Bx}{qIl(N?n*|fSEA-4kVz?a((5wy_kSU*LT;w8h?vOFmG<$Y_#E0*+ z7#m&;RjUr&%$m1q4#c|S#NE3GZC*#NzcDNkbvQ^7cLD=l>8^4LP{VUz@K^@VoiqLr z?Vpx!qhN`HiTk~zt1D>g1X6p&!Y=ryf204>A7^#OBu3va3;+NC07*qoM6N<$f`HR6 AfB*mh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/nincada.png b/graphics/object_events/pics/pokemon/followers/nincada.png new file mode 100644 index 0000000000000000000000000000000000000000..1a55d84f2bfb52ee092af2e418bad43dec403a28 GIT binary patch literal 681 zcmV;a0#^NrP)FN2ovB6K(Z7q+U>FDRXDH3!%WbEta*M-lDfNm) z3RY>MlTfl&8gq$us6woj!zHD@#hbK*1{_5}>Ut`5NIAGmO6ngVTyb&`{2zRi=6&;~ zCWjzyd4|HLKfd2QPXV&YCYx-s$tId=<$V9s2wkY+K?Qm#{+kC7dgoY>aubZlf|O!E z&o6{@gDye3g=XJUG>g6Whr78wj0@a`af1TF>?0SrX<@ss;Gw2pO0)FFs@BKvq!cS7 z<-+8(9p!Hrkbaw-#JqKoVxjp|#)JFZhB4>KIaS;{qH&uBIKC#A@Tjm~rUjuzn{M>j zFXT3ixrVW&K5zD0kZe*=Zp=Q-zBFjyra^BTqG;UfLZWL}v{ZeYD~Ovsu{U>K;JFtS ztnJY+$Qt=mOL8mGIkkAP^!eeP9TO5A%$1XgIp3v$$P0X#9d**i7#pgY=(=(DwCp~* zS}X#y=)E-B#V8+nPaNmj8NCQBSHuTwfxJ=0;@;pU4p&e^57!qd?4SO6dtDudfxd5i zQ!rn!Tsf}eeTWLC#9vvVdYB*Mfr&<8ffjmQsMNgOvmdh~qq6>#cxSnKpcdFg{Xk9D zT0dFA;yZDN6>5jzT9%!E75=1c2Bw9sjozOq9gzkSFQ&>dw*U#;f-PVt0c87Tg(MKw z8|0AeqJe240yHJBw4N9iHn@BNvLRtup`YAo#XlrQ9{*KNL7G`>#X_0YB>DifyIXM6T00000000000000000000S`>Fh00009 za7bBm000XU000XU0RWnu7ytkQph-kQR7i>K)xmDtAQ%U5B=Z81r@p|n!)~^)7)L52 z=JVcQ0)6E;sa5&_F!$?yn)9X$^D^c-CN zpG*HSU;7z@+St$8I`WY*-CZ;-mR!kVf@$)IVv=VI^msNIInFE_Rd@<%k{44{tjipK zh=Fl}aKVJm6QT~}f>jEf(4MSgckXzBiGj=oSvQ>mA_hDaqOihy!~v9+XB&Dpp#ep_ zWg$YSn&>s~G-7Ltv%5Fi;`)CU%d-hN#=wB-WByiitk`qlTC>8jTHbeB<64u&Hjq~`d`!|}6Y;zr-E6BHh2VE||2xUZSw_;5=> zTXibg)@e~Tfz=0D^D-noIOqI|0WO+arx7|O*JFV? z7h?Heyfm)22bAD?V?J(Ac`;`F$|?p~cicgcpNGqUfoA^8^AtCAM`C(ac0RaJ#VG%hoN%7%H+1cR$0000000000_|@*h00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Klrd}DKp2L<&9XOdO}hzVhv22538i!q z_29TmX$fRjK{1_-p_U05WH+(Ss)vLYYB`IYhFG~wp&4AXxkHW7kLum&?sN@R3hB_r z-*S5V-aW5mkN}pmoaHR%UV|}Pa(HyV{BH*|%c|40Y1Ptlc5xwcHW~YOsa=B>6kqC-Qh2dR-yN=*6Uf2z!uqrEtTv2zO2MsTBH<9j4^~{xK0Mw@kR9 z7HpWcsXv%XVZmCXOcp6@`zKu`FHjaa_+h2+4;eA#%^;RoPD#JK;%5xHKw3QRr8XOttJe-2N- zyG2u9=Q_qpAvv&MLQe>DUd$dO!t+E3n#Xv77-gJh@%URs2oKg`F4Yqu#zF|t z*MAN%{xU1ECmOWF8>4E@^jC4pSr$@ZY3m6--+C^DjVR_>T?%{UZI=rHIuW`oZwLJu z}em@isaWFB)fA zNQIsEz5L2i!xcYpb|4Yj`$9-&(xPmSVnUny!T8}sekx)a8vk@NO!K7332bz=4piKgG|1IvcwDtohotg4q hn1F`v;N|?^`31)AOLz^(^Jf46002ovPDHLkV1j5WRTKaK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/noctowl.png b/graphics/object_events/pics/pokemon/followers/noctowl.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fc38c3d95c4c353c166148ca5a7b1cab65c5e3 GIT binary patch literal 1114 zcmV-g1f~0lP)w!QCZ=ssc9)G(V=n4adGMC`Qh22VM#fGVNn4A0jV)D6#Pja00009 za7bBm000XU000XU0RWnu7ytkR&`Cr=R7i>Kma&T*Hx$N&np7Fkfbl}&V@KS=z@DZ{ zo8q|6#E_7y?yrb(Y}^EHs;Ra}k#y-&hb%D!2DWhR1Wr|oykWg@5!f5Kca^87C$09f zXS+|-%+BcPec$grt!9MyfBg4`oaT2rd#2y9FwMU`u&|ke9_TV}{KR~En*n-mY8NAH(hIb=3v``fqOs<C%n5sA1eLQ?)RL~Cyx ziAsN6N5?G+gn!+WN2d<;n@qqoulm0K#hFlp>L?QN5RqGLZ!p2rpP^Dlg( zoQoA2li+*w4?rD|Tx=IUa7l7M4$HB4WGf zz>HpCG_X6!P4-?w$L9*`Rb*R#+_^Qew1Q7Za)3l)_tZJlxXmt-h^AtfZ}w$&$E)~t zC~{wE5fQ~u{||SV8v7irc!716PtL#H7bqZYI>=s;smR$d5zE7JC=ulXH@*eDfMwny zOIjQdD8Qslqe=7o=?{z%Gz-`)baO}`|1>#3c*`h8Ubz1a5U%)G@-x(xs g|Im651^RgT2mh*D-Pz^A&Hw-a07*qoM6N<$f^Cct00000 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/nosepass.png b/graphics/object_events/pics/pokemon/followers/nosepass.png new file mode 100644 index 0000000000000000000000000000000000000000..c407b389206da75b8c0f9e7a0b695b97b2bb3216 GIT binary patch literal 705 zcmV;y0zUnTP)7m000000000000000RdY%{00009 za7bBm000XU000XU0RWnu7ytkQH%UZ6R7i>KmA#MCFc`*@F5K9+CmpU?NGEg~>TOJ@ zNH?>xWpO^X4kQv&jRbOU3qw?AJBFzBN~hzW!>;3x1lkS=iJ|ZIdmra{9Lpa;aH&gO z>QetrF~(MZ!vKB1Az#(J-kjnc=i5`<@^Ns2&j)bMPw{%k5`V1`vrBZb(sGwWk7C@ zu3`X@dq){J`F`>4DQ~QyW_w{BmMFLTBJ8-+VV}ku*4jM=`*_Er);r2!^>DpdVDBJl zb^}~w%x)Vq2BMg8j<2>@7mh5&dw_VrohKOrH^ZasY@n3w*i nMmTtYhOKk@@B#b1@$c#vnAR%3PJjP`00000NkvXXu0mjf#RocE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/numel.png b/graphics/object_events/pics/pokemon/followers/numel.png new file mode 100644 index 0000000000000000000000000000000000000000..96307f1364bc85bcb91c0a7512767150efa575a5 GIT binary patch literal 848 zcmV-W1F!svP)K)jw<7KokJ*8v@qQ#e~q1cGA?Li@An| z8cHGl0wn}GcW_H-Af04n8-(-kBHQ1fi+v4bDj@RM}!N$*Z40G6?gW&9_B_)oL4{r6ZYmHuFj@?_0^ra^9BPNy2IY(rSe zwoT7Ljt;CWgZf0yry6X--5vNO(>&qTg#jscg9E*G?*!Bn}9l!ZB^>A;sEn-V~50|4Vqn{$%LxINAANdsRgn@%|)o2m^j%!X;PQ3i!4V8 zjfz}AGN>Fth!O=PYXfQzT)r+!>E=^ldk%Iye3)SXj`*Z+CZ1ZdK@AhT+nc-dWuclU z>|-1r`;cLv?eIy5&p@hk?~G3){B`y5HGGifuw?PX@f@f5aPHi~q6rYLt-`IiK+>j8 zY0$OL3Qu9dN->Yt9kWWQS-m|^Xv}?g(S#!yM%*LG4gK67xFZUCFq$>hVF9OG_5GUD z%`j;8U=hN2=}B(r=8$5O_KNiVdWyq@uJ8C4-lZs@7`!P$e*Gh{j3hU7e>lLl*DDq~ z>nRRf>Uu+?M%}o;%!@Zm>uh+C;(WR_{o7kiY)t9wT~r+v`1lKVfA&QJ)dBA0H*kKE z?vw9(WWum`*;Vr}Ph0x^Q(Lq^akx|D6MKVdWS}++cN6AHCc*p)4Y$7N`jsv2Sn;iT zbUUP$VLswD9%DR>Z((oL4akUy0`7BNf62sYHVGZ?ZmlSxnDZM3V2r1X@jr1zK*rO6 zd|o7+BK=;AT`mfYXBOL~-Nxlt#I~}`H*hv7m+SEejj`hw;;W#I**>zgcn?PiAgeA4 z0(){?E~CT~xS<2NK;@(@6+kHd>>vbgMxtPgR1m75#3}B2vPIFwi4jrC)U>IgrQg6m ajr|SB5)U{l>!t?)00006Gi9w-pG3m*9Nii9DQ7Hfb00000?=$W?00009 za7bBm000XU000XU0RWnu7ytkP=1D|BR7i>KlRrVoZJI@R8Hkvr(0d+{zvq7yF*zxT;K&vQ+y zY1`S(cK&gSS5j6;zwp0qNx670IznEnLi4sI<>KvKLpTmt*)Exj^M;(SPec*2s@-z* zvz>;Vo4co?0bpgjrC}2(SU@ zGsK8%j99qfXq;+#s{e33(xt zS1IceGYlm>!vs?=bA!wd?3sk@mE}z7ETEx;XN0^70f4z-l}wJxa;7w?eQYFrxsd0ZdMW%gt;A4| zIOiTwy+l7vCowd7obB{R&R8hC!kShigNNtbBjQ{EdS>X0dcnoQBQIEE7X;}2(!RSf z7u-k;a8?7lxp#)&p=!6+*KJYMJX`z>*a5iE^ve1=@c&`)hw}~Y+A^sEbtuUI0000< KMNUMnLSTZP%ok|@ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/octillery.png b/graphics/object_events/pics/pokemon/followers/octillery.png new file mode 100644 index 0000000000000000000000000000000000000000..261f3a46af5582ab4df428f27959c6d84a9a1491 GIT binary patch literal 691 zcmV;k0!;mhP)FN3T*;%nE0RR910000000000000007)bf>00009 za7bBm000XU000XU0RWnu7ytkQDM>^@R7i>Kls}8xFdRTdu|B|cxwSQvgY37PLsEh# zU$LC4ryDF8JRXe&+1sJxEyZiGeV|WSDXFEO6<<1(c4@RE4@vJS{u6{Q<1#Me{~7VS zzbkyxJ^x|wyb!OIqG#p_ncG7Ct*}t>O`E+sPoBCDGk?IR!qN!$K)8MCo)zGEFzVuN z1!hBD5Y|@s==(30hu4C4-AxShA)g8(W%;uYXnO!3m<2Ik$4dEp$VzyJv5s!>w;*^n27s@5;{?p(lgu1BUC5D0it*tDwM3)fE? zD|~bh_bh-5xoLXsR)@SGMELfrYQNl0$db|uGnOm{aj|*mrGIKdJ{2PLVBU+3Tf!=8 zjDpByIf$!o3?4Y-6CsLdP1nL*5hfXt6=NVS{pz2y2dj6>r#ak zZg-Aza|tTPs2rL>3!QmRdrc?a?wHmj)d}2A;4k|0{V43Ri3@WNN5=~Rz_{CKv%Tku z)0Ly)+z0Njr4`m!*~C?9&g2+N%7&4;C&RD}{9=67+Vihm|Ngq^(;x6nD|Bv!<(N&J zVa}0b%;@}@0`PGdJma%B2l8QE1m^8m%F#a> ZKLHA#KTcAMl;8jW002ovPDHLkV1fZhF@pdA literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/omanyte.png b/graphics/object_events/pics/pokemon/followers/omanyte.png new file mode 100644 index 0000000000000000000000000000000000000000..c20f2bf69c123d6314df1afef1afeb622409f830 GIT binary patch literal 603 zcmV-h0;K(kP)G`Rtv1w^(F-cJX00000000007@AxX00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>Klrc*yK@^1-7Pd+wNUEtukhKeM$zzMx z2%;!fK1M88Uvi&fenmpUZABEte;}`ZwL(~k%#U*JX5E>&agxf)oGRa(-E(e+or$8g z)>><=@1rcsI?H&~^Q#n}A^u*%JaEBZSum7xw2b)xz8`1c$1#qgt_e_`F!RDZMNAt% z{(Z9VUtfpAK%TF*GERaOhEtu002ovPDHLkV1jj!3sL|8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/omastar.png b/graphics/object_events/pics/pokemon/followers/omastar.png new file mode 100644 index 0000000000000000000000000000000000000000..5f32df5ec9050d8124f7dc43740668f76b1572d7 GIT binary patch literal 837 zcmV-L1G@Z)P)Kl|5_QKp4jlG#=Ump^GLLBQU6ui#--f zp&vux4wTWL18HifgpjR6O6g><;JheuV!J-H&n*__Uojq)AlBgm)Jb9(s&1NLG;7t4CO%UlrCB@LZ^ zM*h5Gpk~doDdB!*;4qf~34PdwK`(1AJ)2PHFhlCmkWzOZ9p-8b`@0>v=x3k0E)9B^ z@rH0gf7!!jf`>6iK|f&~Jc21&{t5x?!Q;zF(3!-TXA)U53&M#RHt zbeI9y-f%(QH6>UTELp#-Sm(SzsAWKKQNk_^Jwk}5wr!XB=Sfb=B`ZN*P;em*i*E9k zP|90U09jD5ZdU1tAkV@COTjMlgn=D;6PqmF3qiP5Y>J;2=VL-cG8KYlLBScT46QM9 zuw4sw8Ds_X!-owG5+$HGORE)`D`!lI<-|ge#gdaj$=dn!Dqnd-?cy#2P{8l2kAe5$ z*AF3><%;!+VZ2#8mW4J#kQbC3S1Z21zrNkB@%~^{e2tq2EgyV)MCXsULm^l|#i{J! zCa@8jl32DdmYj$VK3)AZ5!!d8;&shD-$=gPTkq~}Vkwv@HkAVsSW^FN2Ak&yub0YPbz;n7KnX&H%$nK4OmFh2US00009 za7bBm000XU000XU0RWnu7ytkRY)M2xR7i>KmAz}*Kp4ga0T0SxMB`HY2Q<(Qi7}>- zt#EaO1{YIQN+-1#BRsTV0t(3>D8hL$#oaQ?wbPn&s5@jz29t(RC>jcd&_5sqkHG{S zl0iM)hb)2#5#+q$j)w0!^gFNXd}k59HN+m8=ngf#bxCD-V2 z`=k|AERbw1A#3IGCD-T^iHU&;pk0&(1M&8KEVl zjpt7g(ZurVhz`ij)OTm#Oc>PPeXG}a93Ko$WPTXg!T^N^cuYjMlPB)ltF-B+=k0a| zjutbhG~RoSx5i*4Vo`op0|gK zoJwwSB603ssQ?3j$8<$`7Qm!LCam2zMB=u1NgH}l_nhcKYU;)8UPc!N6GWsZK%)WT z+bOHi2!P0syb&fYA%4u6ff+SOG*fypqwC72i-{ytZJ6)|RL)EsC=u;1fR zJU&;g6s-xDpju}y%?Kw4=L3xu+m#G2NBi~I)Q)s2dYY{}; zz;sFoz(FP8dbUG}TJvGzXNahL`UW*X?Q{qLg(fxlA|lG1Na(c^ev;DKW#D>(5p;y?_v zK7X8^J284Vqb&5?lK+r3U_|VlPunMMj~cjbf0b`4B{If|^`fGLiOJr2V%kc~1T)?h?*x!cNiG0{g%=Y~?$VWBULtGl(eBjmH-N+y?PlKdL2@CJ-% ztYh|nBGh9BBylT?&%?*Sz~)yURmbDvZ%)K2s`EvhC{{wFwL=WPN>>yoy0q{_!^x6+ kcJB)L21>@)&$*fU1Ixed$&Iw|UjP6A07*qoM6N<$f~g|XfB*mh literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/persian.png b/graphics/object_events/pics/pokemon/followers/persian.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec83aea565c1bc8ae09d9bfaf72a42c249cd621 GIT binary patch literal 717 zcmV;;0y6!HP)En`N64q@!5fqX;GnpX+b$L000000000000000eBX&_00009 za7bBm000XU000XU0RWnu7ytkQLrFwIR7i>Km9fs#Fc8Nhd*lTeqZla>U7~o11sg)5 zkHC(Qy3!yyjE!6Q{|4yOx6zHU%O}*A!zN9A4sz)bCb&vff3kh|zw@1&W&iD8HCZq1 zP)5jMmi5npNHX8AmrcPrj3jeZ%cj5~Vuyk+TqD6|4kLbccDL@nQhbly4DbY@yUOM% zzQ@Yp2A3GzCpet*9VV;U?oyC8DtikHou~NE#(RjUFD0rj5PJ(?|0c-^r)0KTcYqe% z1%#z3xOG~Qh}q=mGX4`QGF!?Wprh8#c)lL-N{_#$@t?Q~!^#RsH56HjeL_H&;MZR- z%J(Mb5MXt7ZMQn-DbAFWtY`*=IVLGDOw8fL>fwap$77!2Uy{kCN37tb_}8*Ef!z&r zlEH&J@P!75IpapgP2fs6@p~slNOvWCR6Mdm&VwZO%^d%>cZs?{eY11oJVVR*bQ}(d0(kGfakFUtkr{8Y%fpK#PL&A zu7P)Xn%k&ewQ==L){R}vLaLTABVZoq%|!&za{8vtUz&H zXI30veq*2>$?o7Yw&La@r^^M)o1Fjd^RL)X>ERSMf4=7^00000NkvXXu0mjfjC)Go literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/phanpy.png b/graphics/object_events/pics/pokemon/followers/phanpy.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f9fb8f3bfdc2b059f5db81af0507ae2fc033bd GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*vQDpsA!qF^W@D= zM#jL#jWZP$fByX0x$)vfLqnh{G*B1Dp9B=*EbxddW?o@Ehdg**1G^}Kmk&6)Yu z(dd7d4x86M_g8Nbm^1|hOuSEd&q!U^eX}mVC+7T_7Yc&LidQ01vu{px%e0H;6u$QF zm}r#T=cU{+rHKm9E+5HwcK@@>Vy??JWlJw!-IXJIf0s?e=I)!mHapt9)+hb?Yg)Ff z<+6Tq*{+N7$M$sDohyqz&e47NaJK>T3hPZLf}I!N`)>38F;AG_vjaN~@)?dhobjs+ zmbGi&)A?Cs$C)Xf0>A6-DIE#!J$+n#Dt)|c-p(6k%K5hY zL-&068};$io8XMMkLS)3N~!2Nu}tjOz5QJ4TJ^T=(@%ZjZTY+8xWw(svV}L)BpNRC pJi4v9B0>D>jgMc~EbaS$k^istmK4VlhBu%f_jL7hS?83{1OUv>$5j9T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pichu.png b/graphics/object_events/pics/pokemon/followers/pichu.png new file mode 100644 index 0000000000000000000000000000000000000000..67d6c4b6d79f1bd90c14f672cac2d3526952263c GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*f_D$GB7akVdX+Y zLqkSJ#>7a?gDV{m26n!D`Sa(^Oh-pYpjtR^WyvuDaySb-B8wRqxP?KOkzv*x2?hp6 zcTX3`5RcBcSN3}!b`W9zAYCPUr+LBb3;P{d+}qPGKK=7iNyWR>tTD&ww!>W3kNX9B z+~d>^>g=sQ=dJPO(+Ad`9Z#h>YCaX+KQPgyL(#d7N75)ooS}Nsf`2Kuo~s#UmA^{0 z{2E<)<=eenf#VB<9dg$wUn{t-w`3c)!FKnR5z?#UjMGI+qV6@ znSA6#$Zw-pRz?m-_+LC{K63h!=90Wgw^%J+KNq=wQFlq6kXXcmR|T;rEOZ65)7|bq z`Ns1(_~`F@-!hMR_Eo(t2{fO$KL5v^rz~HaK2{XZJ3B|RRQNvkf!7bR z+phl5apKOT=SGoT*VxjE8J{pt+854LXSh80m+{~0HOz5YSKqt!=}iI!x~Hq3%Q~lo FCIBEw%W41s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pidgeot.png b/graphics/object_events/pics/pokemon/followers/pidgeot.png new file mode 100644 index 0000000000000000000000000000000000000000..cdcdce3cdd81eb872d5065201498aebbdb7f3727 GIT binary patch literal 1177 zcmV;K1ZMk*P)G|=|arwb9Q8^jmadF8>A)%q6G2&_w00009 za7bBm000V|000V|0Vb6__5c6`4@pEpR7i=vmN9GOMi_=w2(FoC$#uK9y)F`N1pAK+zfSr!7$C4WH1Ori41bXmkPxDi+CIA*aBy7gFTQrbnpkRtY$sZwM# z-^^&_i!U6(nZ}Yv`kwcFzZuUujvRLJd%CDz@H?nZ{r z`-Whl?rj}k=lL5Of!2dN!0v6G_ur}~=oA#T*Y7Ll{XFaSdX`EH0IC3B6beC^2Bge5 zDm7r#Q7r3o&MlP}>%pbEtNxe6WTle#w z0a-;4`!gOSa7{F)Qt_Hk{nR0YSC~FlLQwo4y{$?9-esS3WyjB2&=S(|7ClG-E zth3tJ5s?u%LIG*!mE!9ug*VpytiE=-TW3=Dvzz1l0cXzyV2`PY2q~naipYpSaWNs@ zN&yDfdz}V!0Vz&&WEGYfi>MC1$POmZ@l8rd(g61fIcXx2iak+(0c&cVi>W(+=&yeE zOQakC;I#yRg9-rf6~ctX(vbixwc>(!m_pTh=Vn5VL%TjIe){9>yM3k{1PmOZSUC`Y z;_-zBP>~S;iPS6=7vfz2Jo=Qs6jL2S#lQP)=TBJlh~gjtKox^1MB)apMlHS)Y^!q;OME`xl%D{64H`g`m<=l#N*rm#xz~f znF3I}gvd%v6`=TDlz4Hb7oWQ?9Yw8T(GG0(6#$OC`bxcDCF2F9>8#QjFG&*_DHpJF zs*~cIfDFGb&FXfgqqZO=qJFD*vl0m%?{06I?(rU`6#J^nE?ovqWN`@woa)pWpLu17 zUKxONWC5tC-zrA4W)&6Nt4j@VON^Icr87>4O=O1)m4N`b;(v`}0i+|-#Ek%8&nOoA zN-k5r)d1#xi}4R3(h)>u6WLN{ERL0fZG9WcqXvd_WB_Q9VvLPq2l>LFm{vyuS}^n^ zijG)Y03tKrpE}Xi!LMO^0)wM=aQuACjbZ^125mlTekpLL1wdpLz=_0?v;fkPP5812 zOdnzbfM?e1Mn5+NAhPyzHP6fw>BuVKxb_|LDPDaL0FgN#7*Q17KZ#~^(E+mVU(o!K rKjpfBboTFW{g+Xs;ll!)$Xxvme`|!V|7a@-00000NkvXXu0mjf8!{AX literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/pidgeotto.png b/graphics/object_events/pics/pokemon/followers/pidgeotto.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf9865eba7d3c18059768afe3ca99a4c408394f GIT binary patch literal 912 zcmV;B18@9^P)FN35adGj{aq)@a$w?uhA)&#UK>+~)u~8ua0000000000F2s+r00009 za7bBm000V|000V|0Vb6__5c6_21!IgR7i>KmA`A-KorLhZYr7%Z?3kCU1W|JV{7Y} z(HI1of{CE=pW#KtW1*(aR18PBXmBu1O{7H#LXqAd)syarlv7#=B%Si`p!=cs{eIrP zlM#B0w|J?*-fIi2UoaV+Juznq*hKUh`SIy_e{MauC#>PWN@zJg4fcJ3*b=aaCTokZ zOH@0?)HuM4O`7%vf=3o@qDc^2>z$!+jD0W@r{~8wwizZtD^QnT5*eF#5X=W%_YILc zr^YdK1dj2hN6;1UJx%26IXqaj0(hzR*ALopR+!~Qyy>4oS72J`1f`yHieO%K1f-xA zs2xM94*>_8tfe&q3nPF-Bk-_PbF(5ouk?m7^JK}ygL0g~!386b<~;#iEasXK^W2jH zqjIO0Vd58h!6OM%*P<(8omc(*sYYewX~(xES7y-m=EI0QM!F0W0&*RvBPg&|98AFZ5febd_hP^^Wjn< zxHZwR0YKx3C5M92B4b>3ijy^hkQ&FpY3taZ5%9sBiD*mWO~WvZywOnB$VnTbN+!T; zm7<@QmwP7-Ri`+jT%hwKhg|@jw2tY_g`$|4ujBYfg=RdAZagPva+A{#>2I*OqWE}y zeQ2IkPC;aDHo6bRDYlLU5)@whhjO>tBWIibxLF z@ibHfKliHMa^!hSY)!n&-rGxqR^5)|Wp!6w=im41(gp=)A9va0*d)^<+FvKeO!u>O z(djDv^z2)scjfC3ih%a=b5 z4Gn)@44heL$;ilfGSYIQr6f=l8u%jr*aaxWS>O>_%)r1k7lawrrrLgEU|^i%>EamT z(fRi3LBAFQ0fq~00+##}pK7^G*Z;6j=Afctpti&-4kU|4US!#=Fn%IdA!2>b4{!F@gX1{CQ k{PJT`Kgyo5|1;XhkfE`%ZVlHpMNoWty85}Sb4q9e0BA_*>Hq)$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/piloswine.png b/graphics/object_events/pics/pokemon/followers/piloswine.png new file mode 100644 index 0000000000000000000000000000000000000000..00942dede2d2e0867ce1b4a9bba04c1ae38a6494 GIT binary patch literal 640 zcmV-`0)PF9P)4~A~>G_#yL6Ipz000000000000000->Jj<00009 za7bBm000XU000XU0RWnu7ytkP_DMuRR7i>K)V*%oFc1fD4&(#SP!~B;_SK@NYybaWTCa&RY=l{_l1*TntRGWO~JO~U8 zfp)@j!Z_v-$fKT3IWIRLTEVH&&4lp^^7JVhw+V!SRIkCn%MJ3V4OH%61U83qP1msx z3~hEq!@)K8U5>j_Ht;xVoIqfz-PNJnK)Ir;SauDDCbiuXfyVsh2L!HsU}#fyV{Tee zb}Gk>_9+A=85;Aa=lr-f8|nhR58X4UE2(u=iwWbz25v@u`&{KYHM@5H+I!y(lnDLv zS5vzYL*vA5iEA+2BK-Md#q`!s?7j63SabF5&(r;`IjrFQP4B(Gu>ikC|Hy`e_ zkovSmLnrG%DPIXBk+<-@s5Q_1~AqBXMtHxE0lG*_E*e`}@ptapsQK8ouH z=@tmLWaR<4K?@G;q;Bn;R&^S>O>_%)r1c48n{Iv*t)JFfdAax;Tb- zbiSRqG3&5_h->r53!!ndE{ZMtc5CT`vq3IvZ2t<1H*VS{G3k7s4(q2sM4Myvn`#;5AdPxo_97 z2?hPi(O(eHY1qAeT93M6ruBpi8Ap~R@V78_Z~G%&8!q~LVe8XN=NGU$oq44DU&HR+ zJyl&Dm29mG&WQ)Ot{EQK_2svJ@fB0eH%Gr60qUyw@N~oGFlEQ=n_sftF-P3EmG%lK zx>uTIjpe#+f0B)(E*?6#)!@y0C!3DQ|Dr(#D>F5&EsvNUbpF+%jKnqkPx@S&noO_n zXL}#EHh-7@#(xt}dwn|oPNdpG_%2aq-DX0~Kdr00009 za7bBm000XU000XU0RWnu7ytkQWl2OqR7i>Kls||QK^VnX7|23wgbP?)Wp({*G{vzb z>;$)14#K$*B%F=yiN!&RfGk|}0^xG4jW%8(2SN%#A&syJT(P7Ov9yVL0d+bdr8BdC zX1>WKQ9-MGRes;gdvE^?YZ&WU&wBpXDFRiUT~}x9M2WFuO3jk|B|FPkZ?KGJrVdl(-V&M z!|Ag#ie;eA+z?jxY}G=Qv00000n?{iC00009 za7bBm000XU000XU0RWnu7ytkPgh@m}R7i>Kkuht7Kp2Lz?!=U)bn~5jzL)QP@6JxA zRjXF5TD7WVny0gAD4xRk3}f?DHnDEVo?dI{VkYA>K78v+mdLrrSf2id$4a@%e=X=m zdEi+B7O@8q0dQHE3u(L6von}B@`xS+E5<3!fO{_v3%u0>2m~$*`NHC6{rWhZHnR803Pe9$ zX27U_%`WF!Vc~Hu3t{1o(ho5}Vb7=0kW@@q0Wf;#V@%vK54bGknm;AUm)p!vundXl z$9`6D|H>!Cs{SeGP`m(J2+uEL_Xx+9T;OejJ@9?#6W6Ic&T@XIJ9)pD8O@BGO|Y8^ zY{yo?DA|ivjd>ukZCe~LB!=wIM1Laqb5A}lntN(K3;bbp%tz{ZYlDB)Hvmb|;m5a3 QkN^Mx07*qoM6N<$f`G~Bm;e9( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/poochyena.png b/graphics/object_events/pics/pokemon/followers/poochyena.png new file mode 100644 index 0000000000000000000000000000000000000000..2c92a6b8f4cb1be745e76dc2b9fe5145832f5ec4 GIT binary patch literal 551 zcmV+?0@(eDP)JNR7i>K)Im$bFc=2lu(C^UacdB73cIHUO6foF zrYoECC}E-WEO^#o3B3t=uM9`&uQYAhmVENm0X|Y@%?lHf|p@@z$x53yE9F_Jg_6 z!l{F93z<@Z#9b(p4Pw8L?JYg-54cU#Uchn3h8gBsMN3YOM-JT=GUiU;I@T)Fn3wEv znfT>l5V}psD5D&AtW6O6lqt5W<$f5tFZ`szJIC$mLfcP{}}&cL!4gj5x~ zdVkNL`xS}%)L9{LTxY80h{Z0{Wmz^2;;!&Tgs+xI#@g9I4R&B#T$*RfS}$~4c#&Ms zZO@bB%(AB=>5Q);X*JBw7f#`ovHM3G&AI11w}OBPBjJum!Wti?_3S6+|&TrxRei!~%egK(JzTgV%)2;vj002ovPDHLkV1h|x_yYg{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/porygon.png b/graphics/object_events/pics/pokemon/followers/porygon.png new file mode 100644 index 0000000000000000000000000000000000000000..04115d119ac348ca23b89893617dd8e9fe11fec2 GIT binary patch literal 612 zcmV-q0-ODbP)1mG>(S!C@IOp}EP?L5TnW00000$endD00009 za7bBm000XU000XU0RWnu7ytkP+DSw~R7i>KlDkR+K@^6kShm?}LGu84g$RmOB9oxI z+U-EV6t0(5BG!|P-a6YGx@U$$^usVw4_-&5Rdg1(arqJR-!0Ap+oN0nC z=e!1Hbm7xLh#~Beup7EOgof`{Bv z8+=h91trM6!WQb?f(v@nW~>DEDK1Qf>L3#Z$L$PYC4}7bPv)?1mrh2&pD_FYGxTk{ zdJ9+zA0fAb1H@7Qcy}Rej=;Wzfsh#CS~lx60V^ToB4emm!cR7x(1t&m&ho-OrD&lp y)O#!>&NY1TuS}@A1&*jeDdHb`iD;kB|Cx75GVvEr?p{{_0000KlRZnrP!xs_mt=HMx^xiQM2Di8TsyS( z4n-3vLct~Ltst)c01>wibrT%@1yXb<4#q4(9a@qi$o((gen{S%8ZB-@UXtPAoSf(6 zizrW?JbC_4+U>trS7~W?&h-YZ-xp^;R96^4##QJ1q?Xlh3Lzv`mxR9zQ1yurXSJ;U zwUl5<_}c&?PpV6z@B3NhMw~ukH7!&*coO2{E?ekHl?XWz+I!W>V31Uog(`;wDF^** z;j$oMW)0u^QvoaK!UfL-hez9e5Tu1hH}c-KJBqwSXgQ}3>XF!?E?n?@!2Rv(4h%>O zso4lG0gY}W1femtvEkRixiH~r_{)&vfRvC-H*5h?)76Bg-y-&0(1i(4JM2IkkP?zv zFSLGOQ^u|Oda}_>2&{gM-5}Nmq=dd@>2=G(`mvO85jL6$aYN=uUR**}LSVxmJ8>v{kH!nzM6p|hEigtiJ+C;8za9%DT zONq=H)q=LLVib}aaK4KhhP|Q-%!(z}D1KIqEP)KlQE0iFcilH&Ty+CQ^uQa49J(km%+wL z3dUQ~Phg|A*khp-I+ao~T({EBA)d5e2o$GNf|s~UuVeFF`Xu=|wl6v8m2P>Hf0F(C zKRqRcoa2ADmg0mJILw`H}JHKmzA*1Qn**|f4@JM zl@>xEvRIVDY#(jv0d-zGy{v+~G^zItPbBN)k-{Of5oA{DTxM)cfv z;6f7Fa>)C5K}`nV)RaetjJ7W>?Le zYhf9lK(l0D?ti+x{kme5MzID^@M$(a&FeL&^>v zOo)f(n73ajoXHsx#_+WnIp1Vs_}rwZ zdz9MZAWW_8);dUh&A4ySv~~bEpv}C7pD1_d@REA01^S}zIaYli*scOQX4>>UTwvs3 kwF4j7#~;J#h5uN80Nb6+hDsII1ljwEP)G>HsNhxu8`O#syF);xF0RR91soTi100009 za7bBm000XU000XU0RWnu7ytkRoJmAMR7i>KmCbA0NEpUNU|=ywARpR8OGtFdp-T^a zo3KcmoF+x27!0vNZE#s|lfxDYX%D`YJ&a&jP@$KeOGQi9*`8d7P_cXIp%=G=+6J?r z;y5(@IOuQajAYM@#ikItJrs5@*pJ5Zd!BjcLz?z~`(B&=tqp4BZ*1UwwZZhv+@bw@jK^#avp}%7sC=Lj#2F54ob?xMMU~Y>sV2p#F1jfC!%WI`rsajIG zrX(&vebBAj5?7rDqH^vWGT@~(EP;A$$8nz4j!j$uSO%CFpx@ABdSilDR?EwQZ=9#$ z1^KYB0gK>VRTD3ROsr`ku=YS0c;gk%c1l_EYNcs|LJKPE@LcGf7Sz@udLa5a4-|u= z7QpUsEIgmO>FiNvP(`G|4NzGHR#YIkfm+l2_S`?k4f;Zw1ikZepetAfLemsGAmDVzDBLc=C4?5Uzu4_wz&1O?Lr1{HXyz zY;!3uL<2Z*MN{-Z(RzRh#-ud4OIXo)bF+XUEJ3%$4SsT~nPGj|Ve+DwfM(e2WZH_s z64OgUR|nK1u1EXh0cb!xOe-{7gV6b-o}LpYD^UTS-_N9+!OX`)fR7{XIQ_xjBeYG2 zA^>H2?`|gke0AmQ3l4mSOX&D_?eX1Y z{MdQfVEl+uD}6BPbQ-rI+M~Wa%I7=q^XoZjFw1pOmh32MN4xT}V+XA*51NsfryJX6 zqR3pxA|wZ9qhUrxOAOEslFsXcq15wS&nf-IWMr!ST+4pTEL!uXSsWW^GuC|3H0STg z0mdj9sqc^Xw~|pq0U8Pa$hL4tGaABRrZGEYP|Mn$3|ZJtEK3FCo5A|N@WRUXCu5X& g#M8`t3Gg4b&zrV|mCx|>K>z>%07*qoM6N<$f?`tg6951J literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/qwilfish.png b/graphics/object_events/pics/pokemon/followers/qwilfish.png new file mode 100644 index 0000000000000000000000000000000000000000..97f77749593a37487ac50f3b208af8ed134cecdf GIT binary patch literal 633 zcmV-<0*3vGP)K)iF!MKokJrgK~%HREjQc4@`wPqy#!S z7QrnIv=r(PQ$2?`Iq2Xbf>T#P&>tWj4K!4)lcJ0HQQoyp?=I$wgAPg`6#A9id%2g_ z3qs3S#xnj-;Fj)|_rnD`BP}ED-~4ca=96AvbN#OsSll8KP)Y)`zY%z-yQ|eB7C;!7 z{f(e>kqPh!jLuEq7xNjV08~z9-pCgTw~)!chqVpojc_6sM4rin3e&*gR>*ucVctAK zvA{BV(h;R6nsGbkyO9a=o+cD6v5a=7EpZEtZJ=PwM>e-|I1mW^Ela&a-L<$6FtRJf z_9s`%yPFwznd~u$1!@7^B_@_Ir_dziSI0w-%$`Z+?)YOq`gQvZpc?l~MiGr|nxH}x zo41Q~S`ixts#8|ZR+KiXCjjSXhfcA1LdHWapm>E(ggxp%rR-z!%i7H4vMk_+7taqD zmg^LoH$6&{q#_H{qA1EdV3#&8N3(>P581lx@e$k)V9zlbxhrkUn-38;4v(*99^9RX z?Kn+V9;znte}hW(#{O-i=a|gnU`Ia;U*58>tB;qAje7_;H$Bx_kXoZr3Cvzp0G+06 zoW9Gs&#V=ArF1tin;+-fdVypw@sO#H2 TR1qMv00000NkvXXu0mjf@!=D{ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/raichu.png b/graphics/object_events/pics/pokemon/followers/raichu.png new file mode 100644 index 0000000000000000000000000000000000000000..1887d9a74621bb5f563d79e33fe53b5784c7b1a6 GIT binary patch literal 805 zcmV+=1KRwFP)Ct&p000009&AD100009 za7bBm000V|000V|0Vb6__5c6^n@L1LR7i>Kl`(4@F&Ku$70eA<)(+)8N66H_W#gL?E3ItlH|4Sv^Njf_@+#1>` z@8IK+zVCfc(jf!ztYAF#w# z!MK1KJ@-7EGgRzlSekn%R}4z`6@(7*{=nLv&wrJR86s5n z{65q3g7wW&3VO)Nxs`%>&sho(*KdAJ9%nx{kCWa0!hEuu`@eaQ%L{&8J^&Wwfk(33 jKcDy9rO8JF|4zRF=C)~SaP%|M00000NkvXXu0mjfUC(7L literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/raikou.png b/graphics/object_events/pics/pokemon/followers/raikou.png new file mode 100644 index 0000000000000000000000000000000000000000..9f092fbc5170a10abf0ac75d1cbc1f89d409b48a GIT binary patch literal 1010 zcmVFN3Dxj~^>xk*`BaXFD$K`A+5VVTLvBKjg@00009 za7bBm000XU000XU0RWnu7ytkRXh}ptR7i>K)<0<5N*Dm}!w@tW51m{S0>-5Xf|foF z3TQQWE7>x7Y~OaaQodML78QzuP!ZQ?FYg4JMO;kPUn+@(9ig>sCC+p`pL0R=8yWRQ6nAFe#B3X4k1GRp_Gm6 zmAyib_&ZTs?h`?sGmW@|sUab@ANq!DYlH_^U1F9ICr_t^0wqTwxNW92N6NdwB@f5q8nOJ4P$e6tg+C6o6FJ*b*@`%H9Yw?}qxuSQ zge==E*OaTNVP%I>wk6RmZNwGJ$g&ZiPgr(iECGn`)A0?3T25UTf7t*yqRcRYi7|B5 zMY`p(5rFRbkR3|Nbx}|W(O$?5gYOyO@S1}TOHP8O)9D{(xGn-AWTD8_=6u};sUvJ) z=f3E;AVQu`6Z+m)#PE7S=47#0Ra*zY>(Nuu$jjic==*p@XTE>u``#2)8>s|Tq7qzb zPWSJ+%COT>$)6!E__tuYg)8I6@4fau8}X8^P9OYNVx;XmWd6I5UBtXO@2=ZB)d)RR zCn!0@al((fuAh9!3KWe%aA2eH*_S||bYtt#1;ya$z0#aME;`tbx6b}~)9bzUPFL0D z=0kTf(S{3@Sfg}f>vv#2H^yttb>9WJ=>B#MiWGX?-oHU|HOuCf!1wz{T3TQUlzi;t zFDCZY|3RP4^@%= z^ZX$9t|_{qSW-Vcvfig&Q;M;7`k`_lnKa=Au5uJNlas;81g;rwD6(|_cOYg3BFeFM z&hABdWYRdVbQHI618_6CX1LL`CGcRqmwHVpCqC@M$ZVPC<|mvOTD0R+R)Cu|5!cGu zq<)rpG_xe-(oA=JJF`H%G?NAF9Ny08>(R8&6Vn-zY2!k|fqj{FMD2XRk-2Nzt?ZG0 zF`LwB0lJtbeKU?|mNdg2v}Rd>DB)O2&m2YVe8Kv|jQU^LL}6+@P5sFnE>~ zh!S!bvIMl9FBpv<7Ygj+d_iRoZ$Hujuhvx8*@Rs3s=g>8Vep_lfd;kCd07*qoM6N<$g6ZJo(f|Me literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/raticate.png b/graphics/object_events/pics/pokemon/followers/raticate.png new file mode 100644 index 0000000000000000000000000000000000000000..691a58a6611b0599635a8626cc8da6a539bd01ef GIT binary patch literal 589 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!Xaw<-?OJBON7o zt}J}{@@J=E<;jyLHzry#GBN^Hp#eS1J4xx2M2|?OPwuxWVQe zczdC!dC-#2P48>X>h|7?Ex-FU|4HI*r#g#-nzbKd&wfb#$ISS|Nct0pTFd^t59%F4 z=C|7fpNM?Ce*LfQvDUdc(p4AOIUcmhx*Ren-<10z_<_^WkL=$v=gzq|wL$o>t^R_o zUB_9T{`#gXrrM^l=A0*#m)sV-Tryz&={Y!1I~ zaDR*xTb0Rh!F^^o@8PzUIYAlBhqV}74t=c5v#JxTf3&J#W8w`N#r>fkatrx4JQQbG zs(f?9*-aLLZJ!Sv-Ie%x?%5-z8cQC2P-IM4U6z+Kjmx#Yb8@NkY;%Uy%NN|9e>Ug| zbArR18mS5WqSFmLINwJ|-qPt$_|){GtZ%LkZ>is+X{Sr9~j@%+z;-R6fr{WWYT7Tf3* zedoxr-Kk4cr`^np^e4cx%OlBA*E)o(>$hfPd>7EbGz@g@EKS1wlmlH Z&bR!r&(inK15o;4@O1TaS?83{1OV2E{$2n8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rattata.png b/graphics/object_events/pics/pokemon/followers/rattata.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b389ef618ba5fd8fc4ea2e642fb665b670f19c GIT binary patch literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toDWaAo67OT);Q zH#hDCvTojdXsMVPIrHVqpNx!*K!wO4<+z3ekk47*5n0T@z%>_y8P%rReq&%@oagD{ z7~;|ScFM-QW&?pX-Mh!aQcqWeNliJqb@HjRQu7otr}s%3e-lh_?0L&A5TJY{Sj^e$ zUB-zC%YxYb3~Dyk&Nr+VNLsP5P3qPEDS}#^fyjBmhtJdsFQGPlCI#&1==Otdf(YyN*i^(vx2*;)BS^pVZ0^b<>#`fphALu1XoX?12?e(Yhz?hH~B>tyN*#5Vso zd${VM%8DRYmcGX2LN!MMzHXlW`#98aMs~>%g;!!SFhf7`0Emd7*3tr zmpkRl^<8CdmK7cDd=XN2Lw99C$qn0pgXxj`x;FD<$xnS6Yb_aKsrCKwI)@6)!*{$_ n22A-{I`8hKa|z3D&%Y+V_;*W=?+tNTP;`2_`njxgN@xNA(B9~F literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rayquaza.png b/graphics/object_events/pics/pokemon/followers/rayquaza.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1a1e547c83d3c15f85bc2122ae524d97a9049b GIT binary patch literal 1648 zcmV-$29NoPP)*xp6TuG4aVU$=UIl;gP|iDUo>@$tfujK^a*Q2>}5C>lL=V00009 za7bBm000XU000XU0RWnu7ytkT=1D|BR7i<^md$G%M;eFg zzaW?$8sDsD#CCiNmK&#cFWx}{N8m+=-9xUyx%m)G29kimEaZ?Jg781!gVnKRVo`3b z84P>ysJlGse9`l!K6+*}BPERx^K`%Ud#b9dtD6vt88OG?$NVw9fOyvBO#l4}-*pH9 zASAz=&BRTA*owEw`TyUWi9Ua*|I3Wz*_k}BWykAe;k$o5Car5{3T*{l3>|WQ%?x2; zwk$KsD#03^;r^kiRCsXf>hAdLywFxWzZKqoJo5JV%!o8o$Y`y6tf%h;r@9+2Ma^X9 z&Po_=10Oxg*?L-opc>JmM?Zb(7?zwv&Q^Ox48fG)K98fO)E%OY&Kj+1Y1A!j}Lxnt>4?d)(AgPldkT*6%H+v zg)f$tbr->tX5miRJQNLY4?H0xqU2L9Q;rBmpwPf}p@dM^8z`M8a`Lnhw!*T!`Pg6YpcIxZ2q`DRecT+mC>w@0T?tPzi>q z@8{`}-ZN<9X&r#8)!E=_N+wJ}*2>cC6iD*X_4?84eax4_4J|CS@HMs!$E+TuBgADm z+Mt)nl$B7i3XHFS+8&@xODoVkQbvKo&Jm4<@Ba{t2F3NIu&#tO(!$X|3+v~uz+dYH zf0=mi$(s>mmPfFsgqn}N&bRHd;UMzlHx;Pa_cY6r@1{m@J>r8wQAZN7?XL`LVa4aX zX4@^?kq|Fsw4YqEY=xSSJJ-H#`GFCLC{`;tb_IzW>|>HD z) zT`pr-b?G~~Vl8z3Qz%w};5AV_vue?$NGdi$&6K?k`q;)dKV$jeL27uYxV-c!K7XzR z^qnHkW9YhZR|WQ5>Frm1GvSJLVA9M=As*W2(r_g-JL?ep!*H1+70)59xYbEewdr{o zQGq0{$I>M>u>9mw#c%$RDyA}yl7I?vV3&ktG7(ZIp#3~dnra{I^-|5F02V(4KclOw zN?-zOUEpyQm|?}prD9Tu{U?KgNG{qHG3K$5yvgWV5&J4nZf&9F;St0))V_)@kmpW`pb0<7T@Vxz!1|$l}O{%TT?sXcw{9P5^@V zG%u{MIQ*OMjs^3q>w(pxHh4vMENC#d36RF)8g@?FARv!#rx_q2g@d<&R zHre(>noW$ro9d-7`A#cEvf7JaZz`BFy}wx>sO^8!xMEIb1y_V<9G(=YN98Y*F$#eD zo?yXQELYSE5ca2OmS?^WzyC(Pq7yb2kl()NHxv}B->FJ3nNnzQ^ae1lH0RaI)X_1k+;mPs&000000000000000>|J~&00009 za7bBm000XU000XU0RWnu7ytkQ$Vo&&R7i>K*2_-YKokbx*;pE0V~|zHyD|c#=mWAG5?d!U=B;^k_gYw4Lje+a}FKC~(8ca^G zA|EE*&F;&TAD)8zPBt6I^@z*1IJ;`{$wHU=rtEHZzk`9y>nsb@tQIv&xe#Z~p1wQk zv+D+b;tLTQB61r{2n`(mB*Zy1SOb_I^=9C2w6@!6V_#D=8-yHn(#c}%2j!mEodrclxt9f6jFn~>Ky?hfQ;snZI}SZo znuT}^gA@Z}&nTZt<+x%DG=f`oK?Ew0covlQdv0Fv0{xH|Bm*4^gKuD)^foKdS_YyS zTUiA{G{*C1Ss<}Ox3C-f7!X=OZ!VOnKUACUlfuRSzRy(0voa42%%~UxeTbrH=I4O~ zmd>7Y%X5Rwf$RDCjV)cY4A^mr%prsoW1w1uY9HLyqVnbZ$vkag$CY;&+Jp6X8kq5H zDwf;wxAw5(YM`f9zgB=+0~f5pwx-x|HIP=%%}0Qb(^b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/regirock.png b/graphics/object_events/pics/pokemon/followers/regirock.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7985681f636f1c9bdb9ae8546f50b28beccc19 GIT binary patch literal 1074 zcmV-21kL-2P)Oqf*~zh4IkBOUVJRU10000000000ziMr400009 za7bBm000XU000XU0RWnu7ytkRs7XXYR7i>KmN9SJMi@Xp9AIeaLc%f!Eyt5-s+N|7 zNedKQq+T2p$sjRiwRDl{oDsA`EXd%HPRXJcSqcPbXm8e{c#ELa2)L0*fExT!{f?3- zQW4uUK)0M0zN7RW#XAB7_&h$3j~j&k0~3}%_^&KSHOvQc+!!r#wdeFx_+JB6`~hKj zHMM8-Qy73TJER$7p2@Qbg}Q%Ep*DV6$l|9W#+kRjH)>B;{x#koT~hL$@3&xo@*6GS z10jkSVAns-1=e_fG@|6K?@ysNnhQ3tV0--n2Kjf@Q6`XQ5>1{{^QHgt584=w!vgM4 zE{-=dj=z4*2l7m;C<yg-2&+XD|AZ9fh0u z;OB2_(b~uW-@kfwUdsg5n8dLiibuXL`mr5{1$;k_4>mIp;rspT(Kvnl))*RbsEZ%* z(_?W=3mEUldt`>p8Y`CPiFou?)f!u28pyMJW`?-ygx~}D^lapvh*jTj4_JW0`gFx? zF631!jx&KA1G&=bGxQx%n1Dom?o~d6EQzlusm+KWDsQ+pEAD zC&Ga9%geF(Ylf{nC&F$euq;YCqK&((=Rh6#YbOaN z!fu7tH43^S0}2IGvXcbSXlg^o(oHjLnwp2)PPc8(*(-DYt>u6&9>SLBVTp6=_70Ol zDXhPlPA;w-Fx&xKfRW1V2g@Ed2Y52|tbAZR0A-Abjb+M&HW6Hi1Iez5C#Xf zl;vV4WA~n-tL;o+ZNi~oc+7QBn117~<2vRkg~e7dT-I??p$s}5$8eW{reYYmfSiEr z(B*HXa4`&zE+*%r>ruCz3S|)4^x8|G>MH3bnondA7VjT=_6lk4r6f5_g-I~?_Ch<_ s03h>qJ&QTZ2ZtYbe!kj8`2UW-0mRGmqRg=|ga7~l07*qoM6N<$f)!`#hX4Qo literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/registeel.png b/graphics/object_events/pics/pokemon/followers/registeel.png new file mode 100644 index 0000000000000000000000000000000000000000..ad188426fe12e4774614c328b06cdfe9c5df8dfe GIT binary patch literal 845 zcmV-T1G4;yP)K)W2)nKoke?BOKn(5sJZ+RpVq$FW9AC zBw0}e?i5P#Xgi7`(4@vhflhLSbNLUtXUk?Bf6i{roSdX4S0it!Z*0jW^uyboIWqtyMzm`9$7u92x{S{qc6j4a>5EER1(F5Tys~ z1MO~S!@8tbb~ZBaXrKpbumMd+eC`6QrJtn^2p%qxs7 z3W2VfHsB0b^j&&HhyV|0RTjXz<<^}Qg+MFW32%gkpB!os(irsZzFg*>vkB~9l=<0) zz@956fxHpEymyvSpc0Z-e128<+uykR8G_teqP(-Sw)stg?!uiV(XYF-OO$Tm_mTru_5Y$};< zM>ETuEzm?{~* zymR^+Cir!l7*FMwdSl-^AQi3=eOlOvW?2P8Aa3X#LqN6BSMcat;!Q(ILYUOQ!!tDr zc7ms!#5+M2_hn!Ug_Ky|@yd|MvU= X`Kgag_@>}l00000NkvXXu0mjf?s|W6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/relicanth.png b/graphics/object_events/pics/pokemon/followers/relicanth.png new file mode 100644 index 0000000000000000000000000000000000000000..10c4c9943484b306dc773121761a78465e2b0c6e GIT binary patch literal 864 zcmV-m1E2hfP)BX#fBK!WLX000009 za7bBm000XU000XU0RWnu7ytkQ)=5M`R7i>KmN9GFKorLhAKtP!E=~py^@+GkFee?A zOi=|{GL@1hO`V}FjSM0~D6}R~pkN3lwT9v^(7BMMS+lw}Xi}#ToT1HN(>M^~&rn&m z@AL$68pu+}0}Vgj-TyB=-Fqj5?&CiGqnK$z_U=|5qZ|dCNQ3cYWPX%y3`5D30m~LJ zEUm!#QNA&XvIPu^>Kz-X@_Qhts=cX#w>MC$&_DwQNqYxP;~OKfAXm$PwTrM}sbYgi zjxzHvOye0PO0p#ZR?W~j{%9x_G=*#a^`sWd2$7OpmH?{?Fes|f0CLgKr_wlyWrP+Q z2W1MGg;2{I?jst@tkFYwbFLT1{x=&Mpm;Wx4fi>XW1~|Yc&=5ZUWCJfN8d~o&-$|J zKBF<5ymn649k)$qvXDdFCUJIj_$wqBW&J{R7ikQ?J*&S+%{zIuW%+_t=lkK8 zkU+pzJL^}*79ieyH`&pDM5S=_t63>O+?JX`J((ldGclLHE{{A5IK%tVIevd9sgv!y%6ilXcs1UTy6=yM+qm z{D5*n+Ycc)8?eHkn57j`P|}neD$M7xVe#^-b6{=Ncg>MOl!pt_onzZRKA8w&X~ewp zFv}885rx6ha?6_-7OxzqMhbq?NDs0wknAh_Q@_Fm*@#8XYY4QiFjY5IvGMw@C#*U&8o#{B(xq=gf@|?dp|6Sra z$N7L&(VTEK-1_{`x`NlWHCJj$*c-poy7t=C3Dw(pQYtua7^mlk5M%)}p@Bg!9~y*D z3r1bZKf?KZrkgZJF+=>Tv7e6zf1ZZ29B@-e$S^|)!vh>CS*(YLb4}KS3sx9io5K1w q%n)`X>)|kB=$0|lj@FN1NNl5_#0m0Gf898ZjnaL?pfsw)K000000000000000`44|u00009 za7bBm000XU000XU0RWnu7ytkP%}GQ-R7i>Kld)^UKoo~>@whc0A=a%}5jr|`Y_UP= zA_bk3szK>mGRKw%#VJck+FfY3EE0MDT;pjj_iVikg--cR`R?A`cbDW5Ql?CqGG+2u z1zZ&7sR!tqD7jc*91YB|U=gbMuL2fDp^A$`btTgecvEq4R&`IsD**5mTo?wBD0olFi{6H$`WAfon-3P;{bG567KjQWC>X;(qh}hoC)_E#x@opt_(lpV5<*u zA?Jh8iKicsc(iI^&V*cA^EXT5G?Q7pT3WfVKTDFWwHH!IUl+i}?pTOlh!ux(E=>DQ^JIaf_ zFm8zxGG{T@jMq+6uy3b)e}nEYY9su?6kmXhrD@h;X=6Qf#EqYKjYb={Xal+Jeq-z- lXnL?;Ap{lv=Uxj{J@iHV8X+1Yt%If)@T*|Avx0RcflLFwuF0000000000000005%7_R00009 za7bBm000XU000XU0RWnu7ytkQj7da6R7i>KmA!7QH7$cpUXv2;%?zT<8tpvgx0SzbS&4n@=n=#z!?{1kV>lB zuQJF66v*RjtwCyKNJ+^#nyZDW>&+^+H9!q3+yV%W2Ge%VQPY4x5MyC-E)1}V>5T=K z?6D0_jpxgF_a$2IkV;&z&V`BHEyFEe>O+Cia}N%u@x?_v4Wb@$l5=;a%lp$O@t}5VELvSRMjqvNkLS%>s1ZZocsX|g zwO`&ps=IWt580w}sOF5;4E*ZNdGi2-NPWmT$AG}Vhu4j0hY$~0V{1@1GgggB{H>99 zpxv1BoQq;lKP?KirTy+0mx4%<;gG1`j|Frxa(9H1FSYWZQbuQ7b^Tm{B#iCnp+3f? zP^2^qc$6bEBrZz3H7zLANnzk%sdsR7&2O{WQDES!>yFVc9CiZ4ik|e4gMi8e)Y65- zUK8qi=p^e{Es&~vhvn5r*|8p4Ie0XIbEJBQEQm&vM-|ewB2;{Dv=+mFrHIUWC<6)m z^~APmHt?i~Y(#qBq2pVJ%==M* z9fqL8w67_!9!&zb>Nk&2N;A6p%xK6@4&A4d+qM};K@)ikxM3xWG@$lc3QXYd4F1=DEOjyh2G~i?dNtF8+QFSO2yjpEn1)`N}`CKM=Ww UiAokZPXGV_07*qoM6N<$g5W)Bk^lez literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/roselia.png b/graphics/object_events/pics/pokemon/followers/roselia.png new file mode 100644 index 0000000000000000000000000000000000000000..5c067a5ee2452e3c03c36a7e127667700884aa72 GIT binary patch literal 623 zcmV-#0+9WQP)+~)SrIYGL2;>pIXPhwkttE3$&mm600000=ql5R00009 za7bBm000XU000XU0RWnu7ytkPZKo|#bAp~d8^l69(A+WS4ATlMw zYpDx)fYjt6y2v6yPL#o&T4)}?2JKxfQ)=kpJq0hxlELU*a*ieW?(>~Nbm*f0_S0wG zUv~&u)7rFY)22I*?+YnBZ=`;hlAXrA?S@1C$g#_?eT^)+@3PcNV*B)3&R70+WMDEVZ+!}$oO|pX|hPf zAID44$L6W9F8fTW{taW%I^S{d%+XN_7ZNlg(gToO$2b0$yaCmx@0X+n-e&*+002ov JPDHLkV1n3+BYyw@ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sableye.png b/graphics/object_events/pics/pokemon/followers/sableye.png new file mode 100644 index 0000000000000000000000000000000000000000..97f7ccfc2d88b4fba2796be0c76c4eff16c74a6d GIT binary patch literal 554 zcmV+_0@eMAP)K)V*rMFcbw~qfK<{6BrGpu{#z*-=`#C zI)*+(CJ_p4WGyu`AX$?)J6neoJNKa~I}l5%6uJ~T_zVf3e~uK#+$fqdWy+K(|0dhZ z#_{kq3mKhELXL3l6uNFBMEcKwkr-SAo!f=3brniWVlH4C36yliT);9(_cb-@TeWy=^!Eu=BPo<4$z~#zNP9W)gH^C*pv4uKVD4 z-j?MnedS#@7P{_}$_1!HR>lGIQt84{QJ))t&yI|Ru7|>#)suRBPUC=?lnSJj)MpM0 zDU0#NcRduo&a-AY&*OlZZq#AaXMR{^Ql9^>AMS(jJ!@VbP{ z+S0aZYDR;mZ@jx_W}oZf*pY0iP1*)s?BBlfO8Cu0BCpNeI*x|XFx$q~sIXl} zY)5hBH>UiyFxwnQ{qRC^U75oSHS5Ciy9^scva$9HiL-#dr6Sggg*T-7^?BUp)-%Vg sJ5BqaKmQQQjNEpV4r31#d7ezGd?xA)!hp;Cx z7>dbpOvOS$Q+d)@>wJoAsgDYkiD>bm0Uyd<>`i$a3xV`t~F$*vq?Nndx(ESzGHHCD<*qiu%WBUMh2CuJLDsHg)Qf z9=+sdndz@Q6c?M--TCQ%{8gD%{L#RKhUtuQjM*Bn6C9C!)Z^SOG2WibtKsTw{*rTU zl~@gUp-*e$bP9P!!S1aZ(VHcY4RVZv&xFQq8T1l^9II0S18bX;XhsF@@nF6fZ&u;? zGPsTeip=>)V~puuVvu7(J#)0M$b<16T32w73lI;7tJffKOjZTslo}dq=zM38Wnzcn z08sGa9`5n(Oy3_q9qKUO3KSW`0ciA6gDlg3!;PU&$pep@UIk+Ze*};Gr|&@by-1+Q zrtg^m`*?DA1rPolGC)C-n{Lf3GojqAJI6LVb{yh$tJoqwKNp^f3tqv4)w=~8=vaqh zHMhisc8P5W#_+Oew~`5cJ6{H)xLjaybPPY-3hDj4Jp)B1L=q{b#&jtyYE?3E0u&4| zzZFaYVE&KLj6l`{Qs(IO20|D@=;R(I4v2+lSk?UE!vqF1+_;7ef(ll%GGHXn!AKN} zjDtc!$P6II@&H}JPw~O~!^bf<=GT0_6I6!C0b~qp z*8gC$o|#k}u=a$t`IhC)4QaI=(?k#rBfh!W=AaLaQC2WEd<)<2a@4nt7p+U<#7!1u z!t}!@dh+2RqlP;{Wtdju6Sq9R_I843=py4`NLTq17o^`z7p33S>18^@tWUO(u*7{q xc7n=~swykjgk(Ql@JCvd`BJ1E3ZFoqjZg1CM&9dp_FVt~002ovPDHLkV1nUvq2bx7VL>6esfhsr0U=>|*{M0{>G^qSSpfk7000000000000000ici1R00009 za7bBm000V|000V|0Vb6__5c6@e@R3^R7i>K)Ui&(Fc1LH3{i$|CxUD70o_prbAzlZ zuvN5TjoUPe*g7D@XbDBf7nBd69rBgLO=&KU-2sUKDL3_pL$!|oHtT;UZtoas8`264#FSU0pgR>KY5i|IP@ zH-K&7cA!s`SS?|@q1S2pSn$NvOX9ZFch0O1#;*&>n}(*31=H(`l)0TkfiSf@UCfaV zH+`5IsnsoSe!U%Yp65zAoZYK9BwIGE3yP1?@-t7IM%@q{Ufl@{Nk`MV0J6uMta*wZ za|Wz+0_vUMDk7J%o42h)UXI5z^6z-orq6`&0$d(c-6D3H?hWPulK9YYRF)Y@1zA}x z$w0~0v-bLWCQk#G`;@*3y{fcjUC^G_$puM}8LL^d-l?{=`?L54K|7z0_>g@#00000 LNkvXXu0mjfa=h!D literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sandslash.png b/graphics/object_events/pics/pokemon/followers/sandslash.png new file mode 100644 index 0000000000000000000000000000000000000000..7977fb8fc91d427b88177ff1eeb30954e46960e5 GIT binary patch literal 729 zcmV;~0w(>5P)EW4KSy{2MvB`-s0RaK&>G_FaDKQ}tDQSV>sX@V^iJ@sBzBqal00009 za7bBm000V|000V|0Vb6__5c6^Pf0{UR7i>K)G><_K@PSq>o}mZ6 zUtnsngRm&bJZF=9p_^)A$UYTmg*Xj9! znRxWDqq{B`;!asAqq4$SYlwQIAJs@(uY`wv#aFm0wSTuL2s_pB+NX@fgWU|8#LKmcMV)KorMM7AF>#OR-SIk~`NzHzp?! zsTg6m9bQ_ebJUfk0x|I~B$WrxC`Fb&EjsB z7yScw<+&V;S68Yy{#YBdxQx>;Xd8DkFQi-y?&d(LY81Y21S~_D z2LeoT-!U|-Gg$KxoPKAsGh3536B?1H^Orw2{+Si5nMP$krrPypx zaMkSV7E=`iW7r2)kkCZ4A5ThF8JwZu@!SY%L&Mp`td+wzjJ^6auN7M?E?~T17=;y# zGsDqjiFNicUzQ}xtYKyt^Ho)N&xi9owUWq?%q`=V3L#}Z$c&&iEExhN^+ZY)eghHC zRz?sFBg4Vi&O7%f(N{5wtOEy?)a(J)gmLauBd85a#$u#8UkG}crs>oQqM>0=F0Ejy z{10L@wgzD^Od7_6DdRmR<4O<>4Vx3oLlsztB9DzA8dhAU%&J;MiC8RHubS5E09eB! zBJz+umxJmE#4p2CSB!YrOfw;;m7s1aCZejj%8LYNjaM9uvz$2$v{-Jg`?(QBLt6AU z*F|2xvgiv~=EuGfM8lfxq(&(!a+y|h5G_eFu~`ubX>p06At3+&00000e}i@500009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>Kl|66MKp4kwIEBG`zX3>mfzBST!L55+ z8X?rdMTr$Pjl={CqlpehUQm(v08NL|A*iOZdUzusg^WiP>2%+P=lmAiy@rX2K9M5- z?wg|0MWd7{Z!u=8a)VOg6DrizgM$ChKS#Ryh{V1Z`l111;#-_c2V_ zsu|YV3LG{=Z`SoT7zCLePvGx91~02-SYsscmBNQ4+qm_)*9;89a&F zW$aXy+wNyfGCj1vq#{&-+F#lxwg_SS7yi27CZjl{!U%H@Ig0$uGY2M=~FvG9HX)sR1Dp7yAVf5n5yT@*LS#yEkhM3WKqy z8E@rZn=ga@l!iOgOi&xezc;u)34hw1JcEGRzs(yR4MIw}uo3N0Rqyfu0000K)jw<8FcbiAfi-0_5;#Y`gnbg#rCF?4 zAZR{CDQ$*MM%NSJrqV)t*+P~m(}fJZ%NDMrL%v*PTXJljlR`s>Lf-cCJH7WL|2Y6& z;wAo@fY0rwM#UON!~W-8LSP??6s1PT!YX$Z3?oJLDxW>Xm_BY z!Hz-kvDR#OYKOLjR>9EaNrll-1b2(&tBF8!w z%w@N1WA&A(1ZnzxIqZGAC6=L)Nrw#WEILLfrWt3;)kq8__SBNsk2o@)GZbfw^FhO8 zqf5-pg&QZd4aug3Rzg!}=*;rQV*iYCk(oB{-Q){aA~JdyIJ9l>lkSoUrim*kapPak z9IX&WyVvm}j!0HsoIVU38qPL6vp25r1*P-dw8_Wo)9X^*EUtV5Z`|a?N~)Vxdrw2# z2E^`(#L5?(Z5qFFM&^R*>BOAlLGzdpIx+sKgn{jj<|&hlZ*uGl&c?OVgXU`!?GYk{ zEXaXt&>A`F7~?lLt{mUnu(D%Yz<$;2MA@M)I3L%}BWL9DN60libottRqwhDFzkjyh zJ)3vjG!U8K6#Ie-;>x}OAU^LJAfK<_1J3R~Qa)`D92fHsx4id{LttFQh<6$|`wxC# z|NBP8{2hU~{W`;(-4R-(-3GQmPSPXP7Krw&eF2~6=wZ)sCm$)hO!!CE1|vN-r)nK_ znpX21^$Kq1eZ%_tL8l_=vt1BISn#R5eYg6#p#}daegjVOPa+cd12_Nx002ovPDHLk FV1hmAfT;ig literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seadra.png b/graphics/object_events/pics/pokemon/followers/seadra.png new file mode 100644 index 0000000000000000000000000000000000000000..64c61f85ffd643510743cf55b6937dc965390e50 GIT binary patch literal 813 zcmV+|1JeA7P)FN1FK}o5((MgG^`O%>>@c;k-000000000000000bfRQ)00009 za7bBm000XU000XU0RWnu7ytkQqe(KmOX3RKp21zjtm+dQ%c6Z3J7UZbh!5E z2Xv0=iY6V~Ur>qkP_{G_GTJACdl{WV$^FVoitf{OhK6o=2g4(Y_jx~jLI}OYOT2`N zcJ;jbPX|s>o+7e0VX*4&i+>m5`z}HEvrib@qb$V_PYJO@KI5&(DYpc^P^Ns98}@|= z5gt4FJ;urWZj*<5g(!z;if!n_ketDnEKg+ZGo5}?-odORdJmQwyQOZJ2)7%DdZ3r9EykPJXC$mcG~_s5^4 z`~csM>zGbtU@zP=xo{e0tvg(dk>8&bY z^(cH~OySFC=*k|S_PM`wQZtC^uWG4y6ke+W&P5gi6-u}`AB0qK2HnORvm&2SSu&D@ z^9wzq`LY*&oQ;gHqBbL&H%f@F2H{#WftK0F$YWHz7HtxW&E!<^AY>CQtblW1GtJNm zd88N}5So!vZ*1UMX#|*xXWgklh`6=O;mV>LAe)Sa+x^g%3cju^Av_C443K_hs&X{R_f+zSmC%cf~+tAIgx zqBsx}poQ)SiFMDfkR8M|;wh`A)?FloSlI>iLd_h0!tGRVB!Kukte4gf`iu}dOdzy{ zNU+9v|Mo%+obv{o{(?A$2D=UH2zHn`?-tau+6XcM4Kl|b$Gl^=0fejiY2LK^83S|L r%_3*sk3rIBFmb*Yx`Vcx|Nq4wm6Q<;${Sc{00000NkvXXu0mjfaMotW literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seaking.png b/graphics/object_events/pics/pokemon/followers/seaking.png new file mode 100644 index 0000000000000000000000000000000000000000..6277a92913ad1276f19a6bb7272a711df435b8f4 GIT binary patch literal 1038 zcmV+p1o8WcP)G=Tx0byZb!9i&N0000000000v!Cws00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kl|PT1Mi|Da&C$n!RkZ0m5;9C> zDV58UW_7o2(4ifL+Yb4gRb-}wd_C&(x)UmzbV!!W}F*^O-}?mPv< zk7b@`-ak8N+Sl=Qe2Jmc;q*TY>W$|h@CMT-5A*$zAM_|1%~}BMjSld62Bn)G_R}F6 z%~~Lw^yu>pOvK`mAKn|NlqiEn7$o(;z?jGl*=+Lm>VjM#*hJWn5h8En5fm&@8IasZr0I2J)H@w2mE|?;>Rp{EgWz#P>uR-S zT^INO_boHEBLh{}SA@3XS9SR@tvI_5lAf+uHWwW2uyny@m| zp%gj2t)qkNV~Ee!S4&8wf{z4;0*$;NWJMMkgd(6lqdp_yQ$l^ZxU4ufu{?)ru0Gz{EI^j50tV5^=Fk}-d!!defEKnYBnon zd_AiGc*vU-`GecudWV^f1U1ulI!1-qa&txqv1W}lP~2xoGph}G@$Gkn{MyKn6wBW; z0GD1n5EdQVNO0(4SyMvJujZ(+wIMgE#=M9dvi$KmA+NeUnC~UubcUvj5EtYZENi?L zj5G26yUpbrVp((KbZy^r|GxwD%Nz3cp8R&}#GRpJY3Spk#IqkzQ*=z%e#04;g*cnu zy-b*8ou)pL29irh8RU@FT=24FaV`u)$r%Vk>Sg#(%W6<6KY0d1oJ-_(^mm+HSuXDl zd%!jiRHaCJ$QW6Y%j_ZT45{Mlyjy~s)}V3a`xAaVeZqUr>%X{yz0oJ#cyhMgSne?{ z>d?1NeQ46de3xekrF*%S2iT7M`=4LV(__rQKG|;hnUo%8aej^zGiPF;<*)D3qs+u1 zprhVk!tJBc=Xi=jaT?Qr4cSfZ5pEximrwAcBcH6A@_&tg00Y@wusSF>#U6+3B&l(Rp!E>FN1VQE34I0RR91>(!B%00009 za7bBm000XU000XU0RWnu7ytkQs!2paR7i>Km9cBvKorJr(G+r!p+lAq!X^L6Q&EQq z4_46R$vHA*DtKy^o{XU2U4axbcIc88TF4r@x1g!Ku@{3S?52-2*U?_!`6HSzWo zR0We-#x%W^%@*Std|>PuN-U-v@Yq9A$I~ZgG7m3j-)33!G~Kzq z*-gtSv6up@d^id?1m>PU-lXXn49clnVaGhy?a}G@%XpklNj-NL2JJc?Pj+{%aV0~+ zCFfCW677zD^`Fg0<&;<)a-BHV24T##L5vIA^wl{E_F@#&takXZxq?WHZu|ZDv@i)B z!@1E$P>{xvF-$`I3iSMSOE&bt2qLQmp9d!33(B{yF@I;N^OVkVhS%F0mulR5hNFG3p~kA zN1y26_}g2l*LovZR~tUptPNGoyraYAJ0m1lh9z%xILODh7GLnPa z@-m%J8fKccp*mC|{Gf=J2314H_X7YqqDGKhp7_33{fiVrl>O?L=JHAeDYC`xKMg5Q y^6FpgWxz2!bo~Z}bmGeo2S1Gf00003K{+{radBBm2>}5CVOdcjAsOk(d3jMOK|x80c_{z@00000$^SVm00009 za7bBm000XU000XU0RWnu7ytkPFiAu~R7i>K(J@QIKor37;&R*=*Dm7XP@J9IP7JvA z=(!1gfkQ3VSjUtmTM$q5BVGoc4QsY0QqDPi z*|kS#NDW)pQM3v5)3S?C*D!R~JJvh>`s_99*^}Da5<|CN_5aS2&zpVc{G2?GpPn@q ku*R9p{&PczjSGL-H~Sd8>GSk`W&i*H07*qoM6N<$g5J!>m;e9( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/seel.png b/graphics/object_events/pics/pokemon/followers/seel.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d2cca52acddbaef5bd6610a791da443852a862 GIT binary patch literal 669 zcmV;O0%HA%P)jQ2_w~;oB(VXVPWa%`2YX_-wAx-00009 za7bBm000XU000XU0RWnu7ytkQ6G=otR7i>Kls%5yFc3xs1f~vNyOGxh6j+Xxk@gOCUEWJgrxpvXv@JCK^hZq@g$P(^N^Y#xR3j|kNfy< zL!=(A(sX8OHx};{WU!)G!J&oxmN0q!i_nWKTP{GvmI!=du*QZhxDfi0g-R)h`>;p~uohLdryF zH`~J$*|Ii2R`P6Fsbn?J!rUr)C{(zx^&pXZMk)|BBuQP*u~;vS0Hf(sqCx?!t&u)5 z)?BbR)~25047)MibSLaTwMSbLv*93cERo%rg*&wM97~8xRhG$k%nQd+2hZ&pP~w=l zXDSe~Is=^5Sb~M)-S|GL;Ml_M`!wHjKmYmT78{&4?3vwiy{!PYYB(k#J069hYaQdg z&d{;yO7`L9^b}z;_NIWSe0%)-@^uho+VRtLQA^u8#!M0%SAEHTKJ2g|UzKCt z7xd=z`}9i=r<%dhGHE9Knu=1|L*5kq|Jz|pdv%x#&H9K57`%OY$iu-ZbYZwqWLAL( znkiI>Q|3_9um0Kt>!9mP$6-GA-nQFv{^gYi|8V>P8YMM=K)%QP00000NkvXXu0mjf DYBe(O literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sentret.png b/graphics/object_events/pics/pokemon/followers/sentret.png new file mode 100644 index 0000000000000000000000000000000000000000..0c51731d0780e63c9060f4d309e4511ce4bae1e0 GIT binary patch literal 608 zcmV-m0-ybfP)wae-k;*};J^AsOlE`H3Mh(W!x1NjU%j00000Jm73500009 za7bBm000XU000XU0RWnu7ytkP)=5M`R7i>Kl|M_vKp4hvNbS_&prHgb7_Hv0r^@E*2XN|LGK+# z86H*`&^wjA@|;ZYybw9Ei17et?sZk%W4VAF#{nNVw_yPjuX!?4@uS?%FB}`b&lh0< zR{>zH;)kccwC7TmHllWUx3CM?5QctB!R~MxV6%idUt$AcXtmVbfq(;Mfjh4HLx6zP zb}LS}w#5NjXANsGkwL`Ba0E_ZU1j4(PB8GtsUZwRJ$!GN@OI1VC;%d5iCQz_Y=B1f zErf_8q$yA1$<2L0!gPaor3NqJS*n@pJdgqe?gBdZi6NI*m;NISp2f3Nv!P#e7qzf0 zkhW68s3X41c8&>W{Y+lM3Q*5Qi&nTr+2n8gg2bMs6LdJ5!e2fsg@HX8;~(5wPR2fNqRninrxVt9_dv&{fgMe1 ui#`DZO9jWsHfGiU0000KmCs8XK@`Ua_7a$0)*pltJUChpje%@7 z#nLnf<46xZZK>qagY*yt=^@at2R(=dDb{2E0#88^HW9US+)FMMj2BaSaGn39Z#O^Y z&889rd-I+0-JSh>=FPq&ggn+`^~%UT1m)}9IluG(e7SaKHaOQ?xOYeJfIqjTUBWrf zx!%IPJIXK7Oa%#yEY8L(=Ow)7p^iosyl!4-$aTM>)r! zX4LJWjz$#?A2?l)2~{2v#5)=(;7~&7LX>k%N+l3OLff_pN%W`MufDi-L%Jz<4{@qSLUgw~NUx#CX1esb+- zPu5Dg%HNWKFaj>t%1<=`76MQgv{?anv=9;jY0QUj&8UUCu>YPgtg~vZoZRq~AQE~y zP~G19$b2Ow?XK6Qmrox91Zd#MOrVSs?g;cFb^$_y4Pn(k)? zL@L(+kvEfWiG}TVg;6~@n{+lV2Ed*$K)@5HqXegw^o*VBKb+@p+;*I!;<6_5agp9&rV1_Jp=E{*fIhACvjIZ4s*QbL$1Kd>BI zkVqJnf4f`13KY=41)&D)tRO#S>=@-8DvGi(_97KI6RYA_O3Sevj}DgjY`e}7(4XI} zw=`g5WxSyBbq41hIPDH&Rwp{O#40f|(i*dztZEVn`|6FrTfN?{XFLo%HajRw*)cl< zL4q_He6eLwMoYH97sjcAnhSdUd>;WJGn{Er0utT#WBDh{fK+2(?8|O>if|)4cnpg- zM;HKyD(zU-?jK3mzv8`uFN1_iIG8Zp>Y{8`O#6Ksj(qhiAhme*5qyi00009 za7bBm000XU000XU0RWnu7ytkQU`a$lR7i>K)iI0IKoke?@kp?+IJU6RR_tt!w`qp3 zEM$T>g#?ly<~TcRudxv<_X8Zb99v2H&B+#W*lca1m6K$5FEdGI zIZnHK-ETJezn4iiA>^iR>Yr7x#aqf6noTUn>}}-*W?#2~1%c6o*pAs-w$MYfw>L1` zq8Tw+uJ{hSiW?0?U@{?GI5;%en>(|*wT2;L5F1Qv7!1HMIGu}`P#TJQLm3$Rq}wC` zN`VHQw%obM`<)GaikYZQteaS25eQM2i3g4ka5*w_=YHN_+j1xho^5{CO&Iq8QUK0| zttOUiAOJSIu6pMIMMOr|SESowxRimi_%dTn7Z*@nfw!JX^`jZcKu*_>zV1*?TLpS@ z>Y(9OpwJp@ypzw$qbc4cZ6-EPQ|2l-p7T>Mjy5IOOh( zdP~2}76%S+0o0?c#fcn-$>LcRsJo~)JauzGe%NN)>qCOYNMRrRrjw7r*->ubbPyb ztsD@?fx&kC0tTA}i}{MHu2bdxEl*KMZXX-{d;CZF3hTadpzhtVt?apOS%>6Wj)}U5 cy8mDO1xET)n@>z2S^xk507*qoM6N<$g3OFq#{d8T literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shedinja.png b/graphics/object_events/pics/pokemon/followers/shedinja.png new file mode 100644 index 0000000000000000000000000000000000000000..34c74185d9305b143c13dfc8afd561abc42cb15f GIT binary patch literal 693 zcmV;m0!safP)FN1-X+gQM!Fh3sIWb8A0RaF200000K(!Yz_Fcb%H;Ul*M4>m`$)L;vNmKq9O zO1A`+Oo7ri*A6$dOW=kMF)nZNR0{bE0vQ5@ETz-IjhQ-h%V3)jb8zo}shnSDDRRgk zkT;loZ29~2nSdOTCN(Xm_=ln(`9PKzS#*uO2gEyvBfC~y!0twGs#7G z)k}oOI%$pbZUIGSX|~0q9tmXEeZFc!Y|)EFEE3VHbLXmu!mTkEtev~veV}e)QO1P~ z>@rGCCNvQ1YE$1}D;A>bGRWy>KHc&T3@MX=G=Ru#5aMlLzGk!~TY=m#z_x*AIdKjw z5^*Qy5!M*Q&EliXGnt9D14H1j{ZHvG-zf4nz_3%G*%kuaEIvV!o6JN@@JOytcMVjR z6=VplB+GoWZN3SF&}1f_4|%ek&fs;R`^Z}_a>qA2fCRq(lNay}wz|0BI1IwwC)Hf; z$O*m7K`-#kM!srge~V{Dm>O)iLh4O2$Jriv4vyQ_ccd6s%6T04 bT*vA^P;yOVVc|Su00000NkvXXu0mjfCg?&Y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shelgon.png b/graphics/object_events/pics/pokemon/followers/shelgon.png new file mode 100644 index 0000000000000000000000000000000000000000..5d959acdadeef4b37483645686ce427e556b07a0 GIT binary patch literal 596 zcmV-a0;~OrP)iGe98xw*;d>G@e%X#oKN000000000000000Z_Pnp00009 za7bBm000XU000XU0RWnu7ytkP%1J~)R7i>K)z50%KoACSgKpJZY)UBPqGUp#@hx6N z zWtaab9=yUH1Z3E>&E0je)yo^Vz4zGLY^1i)366`u_3;^FvyCCOiT^fM@xeAH=(PVG z5zp6;Ol@tPs1Y0v2t!%38;t@baNd15xG)>D@^ z@N5#|yyrA#lL=;NtNq0E;muXOfVh0)Xl~v(5r=~x%m3a zZ8@BcTwZ`Fgl;{A($M(&YCV$Ur;P$@UHsX6)jeW+tM!7JHrBJ|=e+|EY!((k{xi1B ieeIE1r;P)DKY7p**Q5$0RaKQS+Sv^@kt>;000000000000000LP`1$00009 za7bBm000XU000XU0RWnu7ytkPw@E}nR7i>Kld)>UFc5~b*^sG2plgG`CR35zq*9c$7B)Ip=(7{A%dozH~Tmj-`*|)^ZoL07koVgsPbe z#2e-Lw#26}P<Yw4h8C^1o8$T+%P5)zz$4+0z~b7HF1ss0!&}YRr!j5HmU+N(4`7MLwz8we1s-O zPr^-sWEQ~LT(QYO@8zDZOb6Nk!>fsjz;BL8>KSiP0bcIe^cDe5SB3(CP$2ET|B(VE z>3QV-elie{nkzW#HJh#x;HCol+6&5K&{ya}FN2QvALm%K~Ygz>B)H^ISHY0F#rGn-7?X?00009 za7bBm000XU000XU0RWnu7ytkR21!IgR7i>KmA`M=Koo#)uvkzA6x5ByLRF(o5iYX> zXJd;RDZ(UEDIk9%@5>-^fjnpZBK#L-EVreO3{)Rr=cLzAQ znJRV2lMw#6_r7;OY=h8aJjP@EH*x&{KOFh1Y(7QE0L*nWczsh(|Iw{|r(I zxeyCTF@&Uyq8TfhOyaoM&UxZvn-IR-dmR0g%&3{ge{V1)&n5=(#Auo$;W*0o$60J7 zLNTdLp2F4C^TcSHA5f?`MbzqLgkIyIXU~NYSbuKKWSKW;92Lu&z3AX_ zB7}yF3nyGCLzH0x(JT*(FB!)T;nmc}zn#L23xQk5hb39wXWVcXeY;XuI!+>lhKv`( zO<{2!v2|N=)*GT;-NE(Uk`VTls(x@VlQCoK*6knnDyLi+HB8uL!lEgUMtfz4RY1UsNDfFs>^S7rF@}F2ppXBU8NVq9>Emav;V#6>Bl9 zt%O>;)o{yrl@I?AU1%c;;;UYDH3PWou+&}UW0MA|DzNVCxEQa5QoVuK9^|+J-3w_w mBb_hd^$M(}1nKmD8GiuxGpc)naq$oU0000Z@NWCW^018WqHUj_e$1S7M9G@owf{8N0IPZrHtR+n)=q zU%oA~^2~WD|IO^Bi`QK&OA4RGt+9FO^4l&=4&lqncsnDyYi<>NFD|gVMn+0X-}v6k zMf>#%!!OtH-l@2yu_OG&(*}K4&e)RH#=TGyWKU->6F>fR5rx2Gfg-WV! k`|a(_?T_`={Ez?1q;zffVWYHtMxfyKboFyt=akR{0Li4o2LJ#7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shuckle.png b/graphics/object_events/pics/pokemon/followers/shuckle.png new file mode 100644 index 0000000000000000000000000000000000000000..01fe3ce737826022088c92c99cb292f92193cb3f GIT binary patch literal 594 zcmV-Y0Kl)p>EKpe$`=aNlr1>Gc(2z5ysLQ}hG zaj2sl=qeH+V;qV&Nh#E=8VbF&6a~8#LC}BByQaAxUz<}92cd8K+`GJ&yUWEemRf45 zrT&iyS<~`wWnz4<<8OsrJr6O){URoPbuwg@H#m27Yy>pWEntFA)qKG7`KLN&1844H zMqRZV@=ODa&vneUBrRYBb`LTWJu;;gG9Brj^$VEoR!3c&!g;A22${Vy_-F(N0VoI- z6l?~8yv2~U1z~`Dr6b`$&IYNfJH>2N!p_K8%&6D#$}hHfJHYwi@NrtqE7#M##!dnI zu3dH}!i7vl_WcHVJrn~OlN`;H_p94jT0+M8F|Q{3PAmmNHVm&7oqV*$Jdk8u;{I_I zKgDDI9hn*De)BDf;<1Q>Om}4DTsEzW2+Wutb2@UOSoIm#=XEX1iL6~w5145$iAL>& z2cp`Hp{{jdrpnO-toMmsb0`sMwxc{vA6Rc3OuQanL3qb_ z!V(3SzF@rhW9CR<=dQo`TH?Rfm+}6*%W?2 g^VxoV(KCObPg+jBUN!N3*#H0l07*qoM6N<$f)1SlPyhe` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skarmory.png b/graphics/object_events/pics/pokemon/followers/skarmory.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3183449d7b086385b0af23057705716a57172b GIT binary patch literal 1071 zcmV+~1kn45P)KmcfeaHWY@9L6AN`>DI{C%{AUxm?304 zQ?fMn)o6m(W3o;WDtHsxBpA9&2sCun#eD$>leT)f%C?Rid&-@L(p|NfSc-K1|2s!H z9?SZF{Oz!vdrzSIwomUCVDT5f9yvzhUki+gMvmG20@+AlC^&Y^*7wG@f{~@6KOYkNmt_L_|gc1ESWkEh|06590ebIWhu>b|1GB^)-1I zCVfDp9LH85wI&wL7$fuof|@yEkV|&C#$bRNqVBnM%f{vG={E`KG9#PMwZloyl-X7=yFRaA!_t(%Rtio-G!;D2jt?FsDt@_Xci=!$YdBCb zpF_IKS5dbD=*m|cy@-7S?Gh~4ipVZ1mpI@!iNp{4TyLjK=ZuE}LS8u#l&o+XqCmXt zH36<>VWkx)Q3}p74pjUo2FG@$;zL5M7b z>9?*TGWU#ef)C5&;6|o%AQf-WUJ;q~jvG(wDuVN>AuN7MvotNA3dmuqhzLYuNpuR+ z=1thf5AGXju?MM+tut5pLP8vJ37qA!xXA`tNGxNCk1f*7_U>MPvEyj?(RnVE#K=hectE!&-^zXO4WXb@ri&VKufz3pyOufCb}Eo7pVtd?jT p;T?g282a)n{vV7x|CRg?$6p9`LNL3+1JnQj002ovPDHLkV1fs_>k0q> literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skiploom.png b/graphics/object_events/pics/pokemon/followers/skiploom.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ac8a5d941a196aeea12d7c87a4b29d24574da8 GIT binary patch literal 581 zcmV-L0=oT)P)KlfO#CP!xybq@k10rEegP4mE4xE~R;d z&Z*GFL7IX~QD_S;5we72DQ?oCLMeokB~XW$^HAP|COP*uH5Ji8a<+Rv&iQ>Oe-x#z zy6URyZ)!gI-T7ww`u5vRRZ@hX8V}O}WoMK5kEJNzJifk6R|PvA4GdFmkV31Z1isNO zFWMwvbaSN{lAat|B_(iktZ610XmU7{0;EtimGY0|t}&YqEs`#6R1#{BxzzZsXu9Y8 ziSSf<$5kDSVGxr54o6~uWUOMGNMUpoKS6{5Nr1Z<7(g~kjMC6`cIojJE`?|v!}%#f zbP8KNUV}~oQ==p_H?}ccLa@NCb&zxEaL2t5L>IdGG`w>#EB z&JVcb-a8^=T{?|#&;z+0<$$?`@e#{2>Re9EbD zG6a44oOCFv&?6Wp7fM6=S1A-WDl^_I*|@44Ywt!h-k18y_@CD&qS`o; Ttp_yY00000NkvXXu0mjf7PIjP literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slaking.png b/graphics/object_events/pics/pokemon/followers/slaking.png new file mode 100644 index 0000000000000000000000000000000000000000..da2a67f1f70839a1cd33eaab38a017a283707157 GIT binary patch literal 1015 zcmVKmc47+Kp2OQa*$Ej4TKCPB!qy64z0Qd zY^wMRoc;kVGy!qiLK2L$l@1{!Swg{s&x>g=AwFm`btvuHu|w;033w|ubWj}d5W6(# zE8XeqDy2i04t=r3J-W;Dd+#Jn5c*&LNZlZ$3~%ATuF25(B=esdkh}SC^K|?wHG}iiIttvAxdPdl{#Ue%y5StEwFYn zqf(PKa!HJ8#s(-+*Ow& z-AL>Rn^m>DTxlgSI&g(A;+YGB{mBfa)m62tKCI^w7*ogB@!zW`S5;L#XLZXzA&H^J zi(L?&WrqojDHuC66cA=t*lCbW6wk2!q?+pWK4(hpcvdRZt>)ucuHH|nvy|2cUVy|P ztmK#PW$xXtXgsv$vk)@c0bi$i8prt4-Q~bAeMb78ec*2Irz+9)R=dR$bSL-4|yhF$izQw6RC&jR;tc z@)Rj-xI&`y0G$Ztfy$1yTOdwxq0At(bqcRteWT9<3Le`zAtb~(@gN|==;~@jh`Hno zflXp8nSMaQHnh3cbdmV4A?J<08-Qv=R49NmZ%9#KoSz{?{QM}20doO^km&1|x)}tJ z8ZZelu`H`Vid^W7EX(xg;Shd(ew3%8?+|aD)qE+()kt@`_6LGen z8&06N-Yl3#Q8x_##n%nu@EQt)aNU~s65SE@1Gz9y){BCjVJHycvl-pFEPBFfz6RfI zuK}UPn#X+P2RgzWno6a;2DVc(2nB%%r_(up5tW}`biYxdT)|yeh_p}xpb7=@sbJn+ lfaQOUZmIaST5MZ#{Q_{ucuNtrxC#IO002ovPDHLkV1imp*2n+= literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slakoth.png b/graphics/object_events/pics/pokemon/followers/slakoth.png new file mode 100644 index 0000000000000000000000000000000000000000..c116006819e1d275ed05b1b9568efbeed17f78d8 GIT binary patch literal 652 zcmV;70(1R|P)>G^pfA<Klrd}EFc^k~Ky$Id+qri!WIG2s^dDpk z1ou)wOXA#?De2a^h2wrgmky;%hqlluU3xUoQf`ti*lD1HzXU>3D7lziAlrd!=@LtK zm6I-Air-0(r0;$8N!SQgs#K{`rT<45;~V)_-N~|ZowF>PTKAiN<0igM*awKU3J(B0 zeSO5fT$J)(wCBgR4Nif?6|4o$B}o#Ma^6lb0tN?8Ci&q^GSB85+_^) z&e?2Z^Q+Y`GG^(J!;`)Wm}Y5skg`F#U&?q*ocMtXkldQU>OpUr!+;I910zer=dR^PilcF)f4GP^t4mANDdi9xO8vbeU+KZ<FN1#F*(6OLBYw<*>Pb30Rho@fdBvihMSP800009 za7bBm000XU000XU0RWnu7ytkQo=HSOR7i>K)jw<7KokJ*BSS%h2a|ZnQiK+_n07fR zF(HC3g)RjTf{uX}6%Y2{p(>ax@lZhsxOVMw1nWb%LtG9Qx@Qm$*mc7hS`~vRzR%D* z>yOX!$r(B}Z}RWNdr!JM-vMwJcX1d0Paw42|5^Y+h_*Q6u4gBGYXRaxsFPIp#^tqY zNwWmVf}}bFUqSc;x+$JQ*b}QI%@g<=i3O5gMvA#~SFE<~TMGc7%sHz~xv$yRIEz)a zqt}dvXuVGc@py2mh>0E4(FkRFxXKM{s?ijXR9Me%97hIW_ z34d(Eu)ls%V-F1DY-Qk#-dz$O0GT_vmkp@XiH7?`W*%s6u&DMbv3*DgzQ4fZzs<0_! z_PsBm7g!sdX*evnX|oNx=A-wc=mX2JXbNU6DG&cJJVBJtv*iGZPLx&wYi!LPM+JWc zei-Fv+t4v5HV$W0*@s0cn5_%_X&Cn@iUvqv5?Rr(jjKT+3Rffg|P2?6U#c8rdsKm z6*n_l8L6i*1BGlJ0Dla<+1f`l`E$}QYT6EkszB?mGDY=qcwTt=uTzQ7cr mZe>fptl+lTykq5KlK2aSx58`yz@R1o00005fOP=5$Wmq>B(X7sjK)-h|_KokIAK`#(8cglD;Cg7!Dk+hSq z)>%n#sY9^5XmjO*R?x)(WhosJsKILps9U!diicpifg`^l!D|YkQ=vm}-64i{yZY?d zI$iFRp>%5B_TBltcRKu#4C8~Xrm+@XB1XRecs^4VgnFvbWbnKyCKqf9YctlYCkHYygal8F8PnlK9H3G8XR_SN9X&IQinL vX(U7S86~a(l$VZ_&&T^9Ik$?1zZt&)hAgR@|3CZZ00000NkvXXu0mjfo^*SI literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/slowpoke.png b/graphics/object_events/pics/pokemon/followers/slowpoke.png new file mode 100644 index 0000000000000000000000000000000000000000..c57aeaf7db67e244a600643c47b96f86718362ac GIT binary patch literal 634 zcmV-=0)_pFP)G`3lvBAN?VJR`0Sz+;+p#cE_`N6RO0000000000lLfbF00009 za7bBm000XU000XU0RWnu7ytkP@JU2LR7i>KlRt~wFc`))+#vAuLOJqhbLi5oSNZ{Z zbs=*hkReN;L!on_qeZzxj+bW39 zGE7#fleuAMGNFKo$-v28B6;s(3hm99EIM8ec{DyY6^eh?W!^>@ruW3ol&?em)tD?4 z;}hc3K6G(s3+Xo5+~F=Hr$aHhGL+H-+Dvl5q!pks6Wv;g4G}uGvI@;*Pm9{{R7Q3x7Os!lQ zeE8`5vv;)tQ#@?~0S3sLQ_dBS)%fSj1IFsvgjTL5eD{5S!ZIfVFv!8moG^SCA-TDU000000000000000Ng<*D00009 za7bBm000XU000XU0RWnu7ytkQEJ;K`R7i>Kl+B77K@^1>gf5p68ORglZ>3DY7jUKn z+0M0tvvHwzhHQk4Ug_RUAcIZv07CYeYO7Z+oR-wfrK;?os&WiL2xQ@1^;doGIj739 z9p_Z1I@PKEpBm2wN3$D@jdwPye&6p6j%0T+&09`I|xy%J>O_QZygcyZ;{JG`G z-{a+vIV*R!$1*XQzh?c_E8JnbX|fE!MP)ldotsi{vwA}rtqd%diJdz838iVf(K1+^ z`9cZCwWh_5mb^86#=}a`W|??*@8(5>vmUuOZl$;xLU7_JL54_4hpHl>wQr*Kr{z4Yps_TO8*n-2wCr13xlYCcgE$@jzSp_|@y8 z!JTd?C=74Cw^hH3m-?)DYw|AQqN^_sz1Z0G&~pqX6H@iNUGu}Rzo5zzumbE);FFIB c7XD%V27bUjU}ofAy8r+H07*qoM6N<$f+O5CQvd(} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/smoochum.png b/graphics/object_events/pics/pokemon/followers/smoochum.png new file mode 100644 index 0000000000000000000000000000000000000000..973d42d240ddc2e6cd1fa8eed876542e0ede79c2 GIT binary patch literal 541 zcmV+&0^FN2|L20qM!I@zx;h|}nF;U5ZIRF3v7Hf>k00009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K(mzhaFcb#xNLbmQh?<=Vv7s_CphUQ& zDu{v9sADX^nIlE<1zL#%bYWm&>H#CaF7UjEech71`p z{ZJVYidQSx|H=5aRA$@Bnq+ z0wTg9ETDNN+H!AobjY5Mj#p`b8T3nqZj%$L{&darbFB*(%eT$cSl}2`BS5#en;GLq z;dV2%tP-Eom-Xy4LJd0I-Y%ysHWxTn@gL@|>r|j7x{-GKV6jSLV_17`dUyCuZ$5iW zXdTStv fyft(m(4Xc9hmOAh<5%6K00000NkvXXu0mjfA@KFu literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sneasel.png b/graphics/object_events/pics/pokemon/followers/sneasel.png new file mode 100644 index 0000000000000000000000000000000000000000..d512ecb6672123eeb838afd39a1731924bb02d8e GIT binary patch literal 741 zcmV`2hg|8Bux3F-fVp$?>s4IdO@Bk*S#p0~uLy#!yKs00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR9J=W)-j73K@|^onPSYER--{b6-KYY7r!8A(-9hIy285 zQzpg!tNYFD%$wPrT`!YKlO|1?G->{$IOm6L4dsU&CF>k=cNR7E++=UA%`MHb${8&sOZ6XA31a7iPuQC&2bsG0#)A`t#8+%hQQ2X0=Ef0{dmMtd1=Q99LEx>fn zp9rGeQ0#3g>`}~Y_J#m+?Y<#jJ03uBWU&u0YJ60KvEyZf2V{e88 zl^S}^>^QUd>TO~0NxuWgEeRk;$@bt4th9%Vy(=i;seT9ylm5j?Q+vkP zREFWnZoRlXmfFPFak}#U^2^BP`mos1zfGpIOi0;Ly@qN3+p*Lai@e*Eyno*07E`}d zAAitJvNW6xT0%(mTuq0IVOj0aVQ`F%AgvefK2E4lp1EoO{Y^@7-& zf>X+v)#Cfz(R(qqIUBH7a?N5s`f{k6y5rdnBPTRu#T0-Cfil^vhp%+S-ROtXQrux#{)Jti3QkJlLCp)%JqfU2=(WaEVK9 zbkk+V__k0^)dEY4YxB3K^lSgODC4}oF&zB00000NkvXXu0mjfGM8E7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/snorlax.png b/graphics/object_events/pics/pokemon/followers/snorlax.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c911a60272c6eb260b125cfc4b6b82cd7f8e97 GIT binary patch literal 892 zcmV-?1B3jDP)G?rvdBMTS*}-`!Nl5?z00000mIw^W00009 za7bBm000XU000XU0RWnu7ytkQ@<~KNR7i>KmN9GFKorLhEYO?`8A|5Ph0;zL+(vDR z5^uc_jJq_gLpymeNVsHkh)};mMzt2t)mCWM45kp2Az*4Sx$n~VPCDsymXZ?aQu+)w zzk9m>|K8m@VaEQ)KN8*@Y`5`i=l*PkgNmNX%#S>87!U5t_N%exw#qmmbioY<_hm13 z$NG{@W^5E-Xl0q~2Qhw{*bc_=c%l_x@E;i5&OX8fbo(l!C7cAoNjPa{DcHn5Hw?IG zV8#3(;0IA7LyUsZz}5@}0SbGQY3K{*C!9x(45$duz!vA-P|q5Shdx9>j7U|b*vkg& zA;>86IcL|&dd<6_8yL(yNcOhh^TWN)BvbGdgB-9&i7N%me9j;p?DPc*ilV7Z4nnw| z;es!ga4H8%4rss+A(9J*BCl9>>eh#p1eZ$CWcwVqbMq`cdjMH$`x^hiJZ-mw;c9us zc#^Hzeu{dDI#rVy`xGYdb!}~fPVST{LIKGMd>&9wVm=QNwBsf$C?OZY}j(*tLU z6Rc_E<_vSnJ4z3oD37`-hHWXh4DO?7PPtd94{K$L@~b0%Eq()+S?93x SK=^?G0000G`Rtxd8zI@o8BxF+o8=QNd9`p!(g>00009 za7bBm000XU000XU0RWnu7ytkPS4l)cR7i>K(=kiKKoke?;?U)$=i)(y)GYl%P7Zzn zhZ2_?dP_E;gS+5&xT00zpdbzzjGJ`P=+>oJ=u|;Vyj+Ily>I~o4nqE!e(&YpO9JV1 z+O%oYrp-T!-*4_6ANQzjO`JCOK;Z4vSq?YFuA8F5RNH^));cha-3y8B!yyv6C_o7%ac;<4L zT@Tj)rR~J_!1?y#G7Xi}p?M~7c)BzLc`=aME)A!P_-3V)d& XgP7%C()KKl)sDAKorLZ390T13uQqIiHjiD$zr`^ z$Kaakj=N&HX4NndlK;SJVLLmyU7Vz~+0x@K5N9oH4q@>RIP{Nk-u&2k$+;&8c6n7k zc{88yn?+$BZ)I$^>4^Yb*pl#z*o3Uc!c&8v`9{J~M&d z3$E(eZ1VaOz(uHdA1)IoRGfZ5i88>H4rnt8Et^f=SmW6?fO98oGfZ4x%8~2SlG;Gc z+kmI?bn=vTQ^+;zz?7dzc0$GC0zD!U9;Cc3`SRQ>qC&Hucp>9T zCsb@_GlC~YU6YF z>(cfK)vN>4FLE&wDz@K;HS*Q@LBWT+m}DTV$RF8%w`vF#FG;iF#j2QG>}EKEJ3xyw z`3iC*Ycs5`s1OwWbQy5wjM;t0UgH2@bAr8jEZ9TWYqMIP_vSBWPUu&_SI)?Kv)&9p zB49Jn-uF5EwsC9Qtc~j*zcx2KR`vLK5@AlFx6c~=K^R~T`lD^%9}OD+)?PFkVAePP ja_83mjpohO|FM1pxp_X$CKj5&4Oc>3LZ}K|#qm8M&!(ktq@B>G`2iX@OZGiFrW*0RaF200000TJj+m00009 za7bBm000V|000V|0Vb6__5c6@O-V#SR7i>K(m!j1Ko|yaaq4oz-5P`_g+hW;wuWvc zTSv!kB3b+f4LFo;{UU`7+M$HQk5JIW*w*rXm!5w@&eM}3w9`G??@ph457jgk6%`c~ zm4A$-Pe)tW>bP2)%*j~mbF1AYxLPwY#@0xi7P0v<(e*$WPsorBkXgr=8hn@F=2SM( zbjSdy#O0%(LHkwSRZuyxA-9fMA?Y_OjA4ELvZCw4T^R0Sxpe~oNU!xJrW7DCn@=LT z&QtomO!GkM%sx7Bne_Sa@Jnj{8OLkIv4)tX0w(Xd1;vY5?fK^d0e09D$iFRb}-<4ALWV6 z@bC_NndmYF`zv@OfPybX+s^*>j9GhL1T*mh8tSZQ@caGFyq$$V%nz(7y(a4dIJy7; N002ovPDHLkV1gwb)Q|uG literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/spheal.png b/graphics/object_events/pics/pokemon/followers/spheal.png new file mode 100644 index 0000000000000000000000000000000000000000..94699cc83b064e6bf21207507a19cbd77c69b41c GIT binary patch literal 582 zcmV-M0=fN(P)FN1VQE9=ki2wiq!z}%v00009 za7bBm000XU000XU0RWnu7ytkPyh%hsR7i>Klrd|ySt~iqNrBphM}}FJiYsKSS>&Cb=A*gB_dy_IvN$|9`n$qG`2i z)v8tNzo_9HXDm_r2Oh4gZZh+E4}hM`6o83tGILFVYounr1Oi9F4Gz9AEHjp3G>nvN z058N#1$z*9&@J6$#?p%Wt-w*S(Zj%UO_e=}1F*$_Dq|^K&~sEgPMM4jGCvVNAZ1f# zRD|;oJgIp6fX6BXh>V7z6c9=QZffW|N`6C34zm}3`h*ZCzc@0dJG$Z5=2O_A#4dT{ zCqnW7{VU_$em9K!kwHE#GiuhI#xc7dDOmqbaLM~F=d+BP*^v<9_7gIE-jB6I*JDyspI5*9$$QXKIa^08wvoX!rT{$ofAP~RoG%#mlYtEvO6ff1-G|h>?sUc6e5)2vV zj`)ZSmf`{r1B(-7tqEm9o4vFqtok=%mSu^Cnr>NIbwcb)fercBM&-f@ssFTT(A U#au7kdH?_b07*qoM6N<$f`u&xG?rnS*f|vq1j>4L1_U20dWx-!HEIk!3iNzApigXTv^jz00009 za7bBm000XU000XU0RWnu7ytkQ5lKWrR7i>KlQC=CKp2J(3>j1qHMk%$iV{qR61d<& zm=0+$qJ^wo9ny+o)c%JE4Idf&8w6(wbI78r6DX8IhS0f#CI_1mH0U??bpxXZ|7z95`_com z??2zoIsi=3ZbsdFdtaR&*#TG+K^?+b8RBm-2~f%vSz(=Mc^zc0^$$ITdUf z#hn~h0)hv8et7}#=zHErQCRRsVYYzc%y?lOuA@{eBqdu^@V$L%n)bUpDIl58-`cDY zU?dCcT!e(5efShlL?LxKlRyf*IW@sE&ntnXV zd=Y4AingK!bT=2pwZA@RxsZL+0;C>bpY6W?n7?0WE$o#llgK)G=$@Koke?!?}P~2|FFS$i{6zQwyTd zO|~ym>@Ic5l59!Ex$Tx<{J>K}LqT+m3YA77*Z4XWx|Dpm=tLu(PP!HXU5elKySw*) zk~oCWwzjpcZT%;ukv|*Ze1SL*^~dLzl|0#KM6(5r+A0sgM5qOAl|S3XtVSdE`W-@_ z4t)~N$L&YwgRrgintQ2m z%SuOQV!q_8@Z$u)`r#<88vtEh;eAL_qu8sPH%!+6%Z~FP<277-H(r-vlJl3EPym>l zYG;JB*}DMex|I}Rvh#*-bOwtLrqT=+Ghog3_{*>|P&;)-rpow)MG;#$jot+^jyL7Smz~$dousL+_JD0-)^0XVe}(btve=W& zOCzsVCqJEX0do_f$zm)SJ-g?Q&3%8Kq+u)!ubKDLaM&OFMWE(#(_-Sz%P-T;aa0&b z+&8}m;#<8hJY3EB&_LI}mVuaZm;YQG1)Ztj?0n{8;8k!_xiqqQ!d?`;5d)q?(WxUk z-kgdJd-0|`AB1O>PZB&GN}mX!?h!FXx5$A}c>*h`xN9Zl`~zd?h@09_`cv?LzpdbE i1{S|^t+}4|59mL9#$;qZo5J>I z>Qvh+m!_^=xbVWk^6FhbWW1Sfe{SQEGDH~ z<_?E+{sR}I3%0P4L(cewJVoKZ?)M`)Z-pi;GG|!et(3`ozX?K1)%cNC@v{%gMsJCx__HNBi j&b?{Jw732@ub+|M_@${_&!%KIC~7=i{an^LB{Ts5?3Ke7 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/squirtle.png b/graphics/object_events/pics/pokemon/followers/squirtle.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf56fd5af8857eeb2176d5e2dab98f8933c67b3 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*m$y1(z0{s&6S2P zU;b3|Ox(G1CnF={LQdw$ogY75ECeb<232-toIpNjfk$L90|VDw5N1@HYWt0Wfl=4f z#WBRA^X=u0euoVN*dFMGrL}e44V6mGRgqip>QI{G%oE9731)65tfjMCRP)jvYZ~s@ z^3C*{z`=))`eDTM# z&gL(^e)VU?z1Zn(M{n#~_;T^gW!HU=U93DLEi5Ly>dejmBK9KJouA6gb$`3+bK3uz Y`m1f0pPlNM@&gpQp00i_>zopr0C*|B!~g&Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/stantler.png b/graphics/object_events/pics/pokemon/followers/stantler.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c5e8a826eca62051f47231175359512e7c09bc GIT binary patch literal 745 zcmVG`=~F^M5DaamExv2g$Z00000n%a=!00009 za7bBm000XU000XU0RWnu7ytkQUr9tkR7i>K)jez5Ko|$`!;6oSB}2@OO{RQ-e1oS* zI2~#lxu%ybPG9rc(Nb;e%Q?qn1Slrwtbm`U*x*PmydXi0acfLnkm(mAh^t+e8 zPUkZw)lk>Z<|cdYo-S%0pm?_;`c*^6L6^s>?)_jB?7eP&iG+ ze5Rf#CWy(UC_|y;*(T-vsN^)9PeZ5aVsfqmvvb4)7A~gRl5IEd8q7Hz1&5tEby-Y4 z5Hi6$VBJuc)yuMvQ%>)1GT}7MiW^4g1?BUjoRy#;w-mkGaznHe(rg zfwtSWN;N{wdkioZ#Ayn*U*)pf65DOPc?5X+hI_aH*b=vk&5tk5{qLV{AD;U7{q~9D z9;Q<22Sayp*FNkF-n)H#t#^08ag#JjwNq-i_za#*)WJP|C$^7)K>$4-ZoxCQNHbll zKq)Jb-08!FJP7=#&+3OoFblO|`&zyR+HNM)#jJ{O#}$lo)I+u4{Z7`H+os)0M!54z z%A8|9+p9$FWZG^jUG26#u9mV+IqDa=O7#t~-2^U$`2exjO}AoQe{$j^(CDY!=vTAbOKUJl%-N16%6t2TogiF+ bf2sZevL=M$E(Wre00000NkvXXu0mjf*6Um3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sudowoodo.png b/graphics/object_events/pics/pokemon/followers/sudowoodo.png new file mode 100644 index 0000000000000000000000000000000000000000..419eb917e37117b596b509ba9346ab300b6e12c1 GIT binary patch literal 672 zcmV;R0$=@!P)G|P#d09ab;lTj_00000000000$rvF00009 za7bBm000XU000XU0RWnu7ytkQ7D+@wR7i>Km9eVZFcgLlXVnyw2at796zVy2Eupl# zgSn-?OI{&hQplF2zGS{H(J6?U44(U5l^k0>N4}+(K$nuUefstPzibj2;6C@c&wn%G z4DIclMQJg+F-P@X-pV4U(v-W-`rAp~%D6wVu$a5GWvu`u=P)YbST{#v1^i%+lLEjT zV3CBtjt3WRWyhqD>Ml?QEBF{AY2npi^E0H$80dL$;q1z^km!p<%ajzPj%i_M5U28l zYZ(GPheA;6j!7Za(`91^t5-iRn>OVI&QRB<#oWpe=r|OrpWDnaD;#wfSdUisK=Wmt zlfu!ECZ7@-IJj`To@K8T_PP%YR{ubAUf3I+pO0v+N9+O}4=$V;g;Ajz599-LGrkl2 z%nSR#{FsB;$stfU9tuJ2C4Q+(R_M6bUEoWhcjJl0@`V=mhOa+zY=&2GIatR-A%M16 z6ui)}*k7MWywj=~^F3z`DeMBY%Vztf4exY3(i345an&!Iz zx8>K0+#t#`aa}q5cis8ve*MHRAN|A&y+f^5Y?EgtBPPi9KWzAcA2uz205_uA9ByV) zyk~(i`_WZV$y?bJk5K{VZmlfYV$AwbR)6HIWH&8fR!$0VXYHA=wRZOx-3Abbf5O_< zOulIs3;e#9csajS$2~g?2pcT`Ky-imQE%5(tWFmG;rs?i49^HxIE)wo0000KmCuXYMij>fg&cZF|AGDwd)iWmr9$bpV3pVh-7*ZibSW+-Ciql_!LYj&VpLB+8kpEuN;V)Nq29EV^+n#V?^7a|Z1@!W690ZsjpPkQ-WMx!`8}q&pb<04kDyiE z%L8eBk@rOj2TcppKxKkOky^!lsu&a)-bp`VFI9ezNd|D_m29wO$>4x56@vmJukzst z6O}2>9UDi_o?5wH!m_~~B}>`hjw$R_4&S#VgM@Q~R>NX}MIx0k7aMeFfr%ujQ%ofe zD~Go~d_-7HVNB{Nmz{}40&8;q4u+v1jLBVFQrNpbylq;HW{sUNB{W;oK85lpR?xP0 zGt4GL-qc$da9uy=EtLva|Ji;V3?tY)UqubT&)V!|+Z_=00Y znx0Y*j$a=iEv>9g3#>b^IyRU)37_k59~2C>eDAu_e1qcv4?p2MGX_k?$y;czpzWdY zMTIKI1|%*>7_7h!`YJIvdGRY}W~>jFUQ2mwZm%eL?fTU!s8*}@@qC1KG2#U3^=Z(K z5?+7-!zNyAc`^LrQ)U>@1q_b`gM+~+**3=dy!8Ba^JwXpFQQ$H7G`WfqTGPSH#SLF zpLf1A!n#ps26uBF8^F)D>(@4F{M0-i)zC?_i}isC<@yuUPER;^7#sMLlu_%|qwt0? zV>pNe|0XdA_J8Dmj@;Zp;l))6!yq)G@*rgxJhqk;XQ+Mo%eFeNb{sM1Zn8|dKxwilS002ov JPDHLkV1g!X|I7dY literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sunflora.png b/graphics/object_events/pics/pokemon/followers/sunflora.png new file mode 100644 index 0000000000000000000000000000000000000000..defe0b6fc0667dd1c198be03817daf978e9d8434 GIT binary patch literal 605 zcmV-j0;2tiP)A@j+(Q)CSDS=4=000000000000000Lbs=i00009 za7bBm000XU000XU0RWnu7ytkP(@8`@R7i>K)xT@PKokdXhd8X=zElR16O{Ej&=P27Q9pI60 zS)uvNX|kX+i9)3v*6;~uyGaL?hR_h2FVGu4^@q5mv_l_R!)!PGa!K4V^m<2cbQp*` zgnsFDRBkT59BBYB4|Zn3_#2x_yRVbacZFSg4 z>j=qp=1tv0)~>_{P7FAJog`Fi3#Y*3KDM5>4e4{F5!-|PwHmSI|3qx#*t%6MN}I`h rsJJ&^@4CxB9jt5cbDD=g{A+#z#jz7|-j>lY00000NkvXXu0mjfPRA9` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/sunkern.png b/graphics/object_events/pics/pokemon/followers/sunkern.png new file mode 100644 index 0000000000000000000000000000000000000000..f19116651a5c58e4d3099676fba2e324f1e7cbb1 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*toNk^X1E*k&cXo z2LnA53mF+1XJ&GKyjiGdXqmat^5#xM%|Jn*atK&Ze8vpO;wGbt-fH|MdX+E2^xf z-?=TPY-)^+svf5V{=50(mB{^u4?Dy7<>JKD4;z;-p9yoyym<0(wfyqcIgd-W|0s82 gDb^~Gds=@@JU?UI6S;YMJ3yi9>FVdQ&MBb@08R6k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/surskit.png b/graphics/object_events/pics/pokemon/followers/surskit.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebf3a22e0a2f65277a5cb901a5af3842c7fcff2 GIT binary patch literal 466 zcmV;@0WJQCP)F6XU=)mkQ7{S+fQcf$0-7v39|*b| zDByGKK$S%2gB;Y|L;+u82deexe4u(2X%QuSd~FeF-29-88=V4>WYPIR(B!gvi&Fz0 z{_c&tH{s&5T1#&cHbqFH^MPQ-S)hw`PfWng*Y@?s$&a}t?c!vEa56fdfq^r^_L7p) zU5iLOd|ll9*t<$f%Ek!)q4OCSCU6+vy?ghv1q0McoKQX|QSzLy&&jc(+1U65%)3DU zg82;a7z2W-5n0Ao8KDz!^MP7AaPr%7&Kzw;G7iW;iOgr<3}E2s=wM)oB#+NIHKL<6 z65(KUK2U@*dMcQN*^bF)K!g@7m7p0!Kz;&>Af_%lSU^(%01Kh7oBB&;<^TWy07*qo IM6N<$f^^iydjJ3c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swalot.png b/graphics/object_events/pics/pokemon/followers/swalot.png new file mode 100644 index 0000000000000000000000000000000000000000..31f2741f0dd5346f8cfd822e724922f9f63004a4 GIT binary patch literal 821 zcmV-51Iqk~P)A68UNl~GJ!C^^xp&1zg0Rh=*X}OWvd0CMF00000000006rU?900009 za7bBm000XU000XU0RWnu7ytkQt4TybR7i>Kmc5GGKoo@yDi)Oqd4kDeVNhXYuratv zioAhv`N!`amFfD+{d<+=t4YAN|daEs~Hb8LWXb=jwd- z$|}@q{a^pg>h-#R*@E;j&ExTT3~~(1zP>%u}-j#xW1haZ1DBKH7{RP0r$uH zksjFKYk{_?zN_ThGwnzVZ1D9!>AtUwAS;eP&ILC3df+E6ztalfAOjv&X9631EzqW1 zQ<{~4o$RP6(E~60df*kEA&$~c3FyO>|D%Y!HNd z=nZq5ZGwPBaiL|A&3<3oY=ysy%~-3Z|K|D${_2Xvqm10^00000NkvXXu0mjf9-w!& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swampert.png b/graphics/object_events/pics/pokemon/followers/swampert.png new file mode 100644 index 0000000000000000000000000000000000000000..11de991d473dc1225b6c8a272651a61476108192 GIT binary patch literal 894 zcmV-^1A+XBP)K*1u}oKmZ1CQCi{2U_4}Mpx2;yXagaI z%yADpT>>4uDXKZy;0Tfyou^>jAgf?H6;Ul-GW8LPGi5M@2n~G#Cjq4b_nx75(#iT` zDMLz!LT)hr`SX2epU<)d;bAN zm~}9r1!1Zn?M}F$obO+TYqLT!%Qqe6ppX>06D}y{yVV$vZF+3x?kv}=aBm75?w(L& z(W9Pv`4(Zv{|b9DEp+qD`feK*Y*@`Nk%ys4Y*v`e6Mjq!A#AcjXO?3+Zf;+Hhi^`s zH-(0DOIihPHS88EEIaeyaAr*hSvgc-eIKvRii{zhQs7qO6vEe}PYZ*Cn>BsMmCX+; zA93|?bG67ABa92Iz!1$R8n4hplT9~uBIA?Lu1<_|(YkM2j1X0@-FCm(p8-oW?in-f#W#m;2EEA1w!vcdtL{}wy%JfJpTIA=ZhS$O9WZrwd$d)2rX8V@C^AandJi#*4{hawf%vp-0RHd#ko3^4}MA{>JxjqARK^=MZYkp^^q*b zzoQ7z{{<%KFLEF+=SrNbhBz2Vi#m~BN>dN83Ckm0cxNus)ssK-h^5)TGXHA)0o8~| U6m+8J@Bjb+07*qoM6N<$f?zq9c>n+a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/swellow.png b/graphics/object_events/pics/pokemon/followers/swellow.png new file mode 100644 index 0000000000000000000000000000000000000000..2412333810765a4996c967fd52c17d411fd2ab82 GIT binary patch literal 1050 zcmV+#1m*jQP)KmOX3RKp4l560{sO^dn>}p-^~?AxH&- z6fbtRcqttOG8!tU(50ncAcS_zEPaVXrY^<#0?E*OkDN3l zOQD54#BjMgKmY&lx#uoH=q~Q!KZ#TJshs@l0#eUpHRc#e&!;5dnz7{Z9 zOGB2w=v0-0>Qb)Wf|V*aXc- zlaRU^Mh9*ziISB<*-in#QDQ?bAczvE#l~?b48V@10Nb2LV)Lm^nk)lR$+`z?wjjdQ zHdS-O3?NqmX$H0+VigjE(s2{O^Td{iOrRDHSx@29V_g+>=XqfmPKo>yrqJ7R)PY)b8w62M-O~cKBnXC&k=_h~ zC;|Bu={P-H^P1f8hgbGFr4x?_=}CcRnof^WeF}rN%ZVUaS<|K=&+|-o49hNv5?M9r zI7-`XDjeenxF`ztv1gK)u@A=rX*U~RsyVXXr@~R;Ry&Ls0sk-I6Z88 zp>&K#Q_6xwAyvK9rRmw?(s`er=T+p5Nvw?DqN1t+s zRjH+WwUe#BfBkagPL##xyOOA{eow$={tMCnA_2)bQK9v@}M|WZ< zh#CeUE4tuBSyo0c0Maq9dSNEeW}hQ8bxEt^{pt7dz|k)Q5=7cy0e7oJbdd=Srh)%(9xdjS=~%oUc!dae0ClR^4oN zaq2iGF+r}rYe*28OHeH;c|82g+S3SdqPcvV8|z=^XUyBw&8li@0ra^^B2^*Bsn32P zJUeMQrbe6y%}3?ur3p*Du0i>IR|1kqM!=3{#IlWI*8gf<5TP4G{C&Wtz4>t#S2kgo z6i950@kBotlIUgynIO6t2lmxq29X&NUS2lVwGBUpGTnJQ!2Hf+wBY{Gk1s;*b3=G`DAk4@xYmNj117o_Ui(`mK z=i4hA^O_ArSOcbo#5u2O`Kjo5{fDQb{Gm&_DnhBe6BQQU4tc=;;?n-LjW;CN@2vDb zde<+fW+Su3xjB}_&(6&J-0x(u{gzo(W;JLD-w^d^wYZ(dTLpYz5)lszkT-`5(^iEx=eK2?Il_grY*Ezv*zXW53^;x z<{xnH;WEvN5~-N7E@oG}clz9`|2-T;g4QNHNWLNCxg_uS7LRF%Roh=Xik3}l<$K9B zH&DMQL-~9Dueb-!@gEYLW;^Y5D2_SAS|~lOy>Pqu4n~#-zQ3-Cee1t^V154cZyuX| zH(i<+_u#5PQU0Y+K_>~3oGTl{r>9oNoqjp@bn2pI-Fxio>veA~@!Z?&Q2p5>)FI%` zUXN*y+OA7m-l?1&^Ofn7II&fvaQj0abG7i_*B?L3R`Rd7GG}uS h@0s~$)?b|el%1isXSv?T$YxN~c)I$ztaD0e0styy)iMA8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/taillow.png b/graphics/object_events/pics/pokemon/followers/taillow.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a8afac0cda41aa3d5b2679993e4c69f77c4cc2 GIT binary patch literal 465 zcmV;?0WSWDP)FN1-d4T}|0g*9LNokp>sj)#pLGfv6o=Lkz00009 za7bBm000XU000XU0RWnu7ytkPM@d9MR7i>K)G8C99-O79b8Vx5{Sh? zC@v08?hX}cpn*W~8(6=?m0AkV*0FRD92^SaX3^poXum>-^Ugq_Ge+Tv3)cQTQ9vZHrdpE(;SYiv&CX|Xf>nVG>5NQXAnyn zaf?+$%9Yq`h+S-Wmhy>PtX_#AT#;rCyV!8sxN38Yg$m(7E~0V`yV&qH8h>z$EdzRu zvA$n^SL|ZybZ2*Jv+9==n!UcyZLX=14rZC?8@o;G zbPm9r__)W7`aT#2DA!fhc;I;l@XsRPXu*SD)Yq!u{a-!-N_^W}H$MPG00000NkvXX Hu0mjf&WX?i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tangela.png b/graphics/object_events/pics/pokemon/followers/tangela.png new file mode 100644 index 0000000000000000000000000000000000000000..a20ce784c54aae25fd24125bbdd15483a98d9707 GIT binary patch literal 656 zcmV;B0&o3^P)@~000000000000000E98P!00009 za7bBm000XU000XU0RWnu7ytkQ21!IgR7i>K)G@D{Fc1J>Pk6Q}`6A}(?NzJ(fL3~H ze*l@|q&W~1UVO;gQzf8#)t#lT_?5-civfouQ>6~MDWA_i@No)bk9fo*9`XMK-SPbm zw}ZReX3SQ%eeVI9sJdYySQK2CIPt~i$bLyXJHWKMG_NRi7D7`Z^OOcXD;V1^2~#?> z;ntD48(~0%^wJ6k>Sq^8 zwRY#XS~}?oY@dgMv37ALyv3RF~BiE6_Tn6xo^+ zhhS0{Mj-a7Yk5k7C_FVXcc~k{n>pWlX{!bWxehIf?GOCXMi_zTvAFQ~lLXe~s+Gw> zOMq~_$o_y7IEKitn3>J^xLSmkEu2VHc`0|HMUj2MH~8uK+uOr=?k)_nL($;Ny7$jY zIUOeA!sCJO`1G{j@0pFjL8;F{~Y5k*r}tL8tx z6x7z!m_|OWZQhSPFGAb6JRlx6Q(M~(+kE=>OIpIVZeLwv+ZD}JEw*1G^CGitC|Dme zHTF1|Vcs>_whcaJMVHsFre@4edl_|2KKB^rnBi_#&mbn4ZKn;VJcg-a$tj=Dvh#9y q%$D{20d^7dL$~u6*|qKeEdBzbdlzpMd1hV!0000}9Spfk7DIpP&k&)@?`B716;i*Xg0000000000J1@_~00009 za7bBm000XU000XU0RWnu7ytkR14%?dR7i>KmcMVCKorMs<5r|dFk6xQ2Uv=`y1Iyq z;<1$#wOcD-=l~e=h@1hEt9@0nRvEHZ>e3;Lp+LB_O}#z{!5~H3Hqn0Hd0>PlJ%ZY#3n5F86DYKrHKXs&)2iz)eh&8W}Z} zn*3dOn4}D7#d(5KP7*C?f8~!t>oOQHFDUi!rH2P8r*#!p1(#Q(^6v~f76L#)w_*=* zj#yoV$vsaNQcYA|PfK-_2EgNlCR$ZyKr5~v(9XDSej1@R-V8o^?E{!VNTquUYq!1; zo3|3{kV?FXYfsra*EObKJAQ&%8M>jxB@TeZGH-0H>9R4vydnpH4V%v#vz&m+NOL-r zMZA^@4!LF5oacCLz?U*(t4z`)j`#_k#gjr%Wfa*EvB<8b968`xyk_mQm#+s~*iyJi z()kEPCZ6D|5L6k>7MP;BccCCLM!a9}Loz=({--Vse`c zl58HHE*nhBzKxubcp6DvqOh+Yg^4+?`VUe{^dx1C^aH jSbZLL2<-E(7hB9VIk@1`N`4Y*~y6j0000000000+)A?(00009 za7bBm000XU000XU0RWnu7ytkQDoI2^R9J=Wl|OHrKp4iExcQ{Y;4urT#|kM)$4D8n zc8HV_Y6+8#Q&iufOfrZgm2Ivfs)dv_@Y~ma@*4cEvV|#V6{`n(A18D5R zZ%qc7+^`LPxH`AzA$HcuFo*8C?neXZ^_bR}8CXDBw?YfkSgIatyUvH%hI+-&y*fR1 z@eR=U3tWOgubs|Pab6oQ!%X0CeRJrh>vJOm3wW2|K%Kil_X71$*mmb1{TQ!M<)Z`4 zzhwowJ3W>PA$1R@1`d7S{}3Qk=jNFkn4F#iAW!FZRR9n3WSDJl?)wokmkoPetyco< zvEQ)t@6KUgAXDepxzbyBI5V*QM5`S|fhP@r@A!#wrusEYpHz?w^l)|lBasWJ5)&_W zlrkL1C@q4ndf|Yh_#7NZ`ow{Gs=TVQyArl{q#qEjWXW;`x)P~hu8RQlu* z1VbM_d7rzi_ea2-9A-+(OnhybR8{4nYI{~ycuOM_I#GO&PPz#GJXLn!`*hmhkqO`3 zbCru{6v&qWE{}Ms1fE2Z>PI1ZC1wjX>+@cZZ?t?=T3ELpnliF<*=pcXUw74OO=X6v af307m3NaIzB2SF~0000>G?r1DbcB60RaKg(b3^CVL3@*p2BK)00009 za7bBm000XU000XU0RWnu7ytkP@<~KNR7i>Klrd}DKorNNRT!=*HrZPGdP4_+mwtg9 zZ#*a-LYK@LvX?BSpP&$EDOo&t@*ro<;4a}fLjzZP=qJeF&4^$$8eA!E{O(>WVG5n< zHwd17r~mIgBosya+Sk7J^&i!GegF6T;7QoW2frVY_#!yP0vq|-t%ESJn(=Ak<2H7B z^?{9Cq?g}!o;DJs2S$jJ7 z1@WEEkGY_e+wxd_U?(@Kj(6JA`~+@D(9`+cq@iH4IJ(nwI>d#Og;F6WVJvlSJVEpn zrwd?$l|AaAqqVqjWhKghlTaW!kZ1w@s0Jx;pti@VGFeZhs1rMP`A!WO=(5icV;`xrkqs<-S!?AmRviZ`@+@?Kx!|~ zEdkI)VYO^FN1-!SSi7sgW63nR!_$X?eM!c~P0E;W1(Pp`kfRVE_OCzgE$N00009 za7bBm000XU000XU0RWnu7ytkQV@X6oR7i>K)iG<^Koke?%V{rh77b3}I7NvfQ4ms7 zg!%zGb+F-4j3D2^A;pxM4$@+}wU8lXQbfMLIyT7TQSRS00d3B=~kF25pi)`qt1V&h%@HZMCh|SLYP-s~lT|P9Ed7!L*zkK*u8a;jKHs5)T?oBFm0^UeuOhNwn zc#%ZK{F>1-=v?3TKipsEzsoYm074sAAWtS2Ns=E~-3S9D$%&D~&=wm!kuh}QEO1_~ znk~vYBK~u z$P&F`lUTn2RqAJwM8*C@=xr2di zu2IL{opMAewUYctt~qN6{5T4VK>gNHxHWr7)~I8TV3wzuMlqo3tU%Qx_ls(Oi@Hgc)2+7QOgHZ+| ze!-bhe$iLdCFF*>uIYq5&CE8WTTM5m;uh5cvt=wiuc~9>gc=POH;`W0;Cl#dVN5Zp f{>}fh@!!^85p96jPk|7>00000NkvXXu0mjfz`t8B literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/togepi.png b/graphics/object_events/pics/pokemon/followers/togepi.png new file mode 100644 index 0000000000000000000000000000000000000000..d588b9b441ba0b19a2d77f256f4bda7bd0149869 GIT binary patch literal 553 zcmV+^0@nSBP)FN1-$?;K9Q2_w~Am}_}00009 za7bBm000XU000XU0RWnu7ytkPpGibPR7i>K(7#IpVHgMS8*bJ?g$6-zaB7M3AP~+A zZwQJ#a=cpF^nX_W|&mmK4J6n+gVPMI1%HjtZN$HdvSozFpmBfH9|4}W!(AM{wU*H~2cntd zE`K@(U8rKLb=*B|^BDK;i3{vD^MG&^9l(CpFs=gj-G#MkZ(#LkoB7BeUUg~sN!e8bK-1P$9Auosp00000NkvXXu0mjfzcKxM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/torkoal.png b/graphics/object_events/pics/pokemon/followers/torkoal.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5835f1fd392c88798902aac49a81bd7533777f GIT binary patch literal 731 zcmV<10wn#3P)IZ?T}xiL9G000000000000000OgZzd00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>K)je<8Ko|$`N2+Y8@`NSK9IKFlrBXUj zW#ojAyiinNbq$<}JW(mR4-nV7$RkS_6RA@dT8wk)eYu`pY>In!hIZsZviw8#|K98~ zz^P7ks#E>9QbyJO=lpZhtn$mny-k%JLO$CSemTDvTbl}hFwL_;nekj4v_p@IPUNEq zh2>U>sGAZiWNCvI6a3d#Z!f>Nz1z z)j|kyTjn(If+4@Zy)1L(8mT&2np4EZ&z3o<>B?f1cUN|aE7!HABWlfW+f(jaxZwd96ZD=YHFh(Ko7onYgt zLp$`YvynIn?1y6IiAOED;q^VTIO?xKW_38OwF0(XvD@1A2$Fsdg1g2jooOM8)2}2oA}|mH!=?wlW9j&8EcrOVz`irKcsalKOq;;r^nl>K7~2X|oX#jR*h$ N002ovPDHLkV1kIuOdkLM literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/totodile.png b/graphics/object_events/pics/pokemon/followers/totodile.png new file mode 100644 index 0000000000000000000000000000000000000000..7973715de3f3fe98bd5e35a2b1b93a1a4e697dd6 GIT binary patch literal 574 zcmV-E0>S->P)G^T7=|N$Md1)!3Avpj500000xI@)W00009 za7bBm000XU000XU0RWnu7ytkPv`IukR7i>K)W1r@KpY3~EXCVh1V`V%UnB8Kw}RG5 z2!YU!zJO!tloA4I;--V(7)#18bdVy{*gJ>EHE&crO_cS zlmT_~4zw(?z+}Wmk0} z#PW3489mT!xM;T9&!_M9ekUc)PcEbhG}ke{W9~ekP8*!!>F}g0in{CgBbv!OPq-uD z@oM$)A=kNIzkkQ~0NvnnThm;(;aliDEk#4ZEzThUe7-_?54hpGPCOUrKy0gS-V}OA zGf&(cl5so2QHfZ9FmU@nzB^pdd?FU8nsMhlSd;mk!> zxtHuz*j44)Cg;;;r^yCD`u3%pA_V2z$S#NH^{x$uWLZg%M5<&7+j_@OUp;xWaa?Iv zxx*HuG{tP=r3nc7fm$b#^bWj8o}F1A-?DZZEPX;_ov3xP=kNcPPmsXx6`}mWvH$=8 M07*qoM6N<$f)Yv%MF0Q* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/trapinch.png b/graphics/object_events/pics/pokemon/followers/trapinch.png new file mode 100644 index 0000000000000000000000000000000000000000..4a27dff4060a3695d7a84ea5c14b364ffc5a4b34 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_Cg&9b0+m^KrNErn9gt#u;*!XZ};mSzQla+y* znwmd<{$yli%*@QJtgI|FGz6+b1J-c|Hvxq>3p^r=85p>QL70(Y)*J~221aL37sn8f z&bN~ty$>6R9B*!S>ffl|@4aBg<7t5}b8q;4c*oxH^2D{(O;_~|%I4^X{L1xRyv6fc zNfU?MFYB+zPygP}?#Va<41TzqoGrXkFFnDz;%H19_ui6M>C6lt(gY4&c*xr_apUZ# z>C7tsVybN3ye&U)X4bo|?rn(=%luL=H}O`f_OsnOwXNQCg~PKlt->FRMKg9MUC!H* z;`cm)ZBgR+6ouYd>(X{7%{^imyME3&L#G=O7plL>shAwPyLfYKVZY`16Q^F<%{-sP z#Ad60n%yhlyGl-Yg{f2G+p_uWKaAwd_(M4#{hht}Z*@+ml-VO|q4?b~CsGaGuD@D# zv|Zr#&H#g@4Y$8m>Rg}g>=`Vic8F=P4*hU%B)&_^>psi`QHvd r^8KwF%4~5k*?v9u=LQ|gyY;8kpWQDIv={ur4+?fqS3j3^P6R0{{o0t2#u9L@rd$YKTtZeb8+WSBKaf`Nh2 z%G1R$#G~`=m5q7L1_EpkI?gT*6tDI&3R#pN@GNhxamjisgYZ+@Eoa+89^T8euciX;1LCH|``KRlauc9v=OwLkOUn4c`$DETAxiW#TYW!-JhPGv7HldgI* zZPv%VANU+Y8{Per6Nkm!2T<=TKCVz3yT;Gmn?z0q$%z9y!b9=l+^@%Oi62 zhOKY2nf;>bd#g0oe0;^La7`v!ZbRnpnkWxjn=^vNqT8OCF-q5*vFz!-qUR&l+Hvz+ zYfhK8xUVIjLYZenw^ovxNk>EEs@#V^J_qr;?>peSy2Cz>&oO)sv&^y3tnClq{diZK z{OU$S>@>5dOD5csef{~RWRlqOpq4Xzdn|qLEi2nu-}?5-&7WsK^PRAIk$-zP`<{JW phu_$xZvM?*x6dwncKr4F8Tu_%=aO6vq`W}k?CI*~vd$@?2>|#8xQ_q; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tropius.png b/graphics/object_events/pics/pokemon/followers/tropius.png new file mode 100644 index 0000000000000000000000000000000000000000..d052138683fe802e4d6bb8ae6a85fd337cec5f61 GIT binary patch literal 1065 zcmV+^1lIeBP)G}E5A)$Fud0|Nb0RaF200000rKGab00009 za7bBm000XU000XU0RWnu7ytkRpGibPR7i>KmOpRfHWKS_;mq$+{?RMTse3ov zRNy$+`ia!@JS1Py_PkH+Q~TdEKm0iUp#Jb8{1|pO)qi76=@hR?i0qSN{m0lT=EqSB z2180O%2qHUSB?iHZHELCN|SQ`>=O>$1N-ue76IXPm9IG)k{SP`!5*h<~z_CLsI5BIUI6)s6GKbJ6R%}D*iYuE~KOZ}; zDE(G12&G_?jUEozcjyGEsS4@@2Nlba^Q$)T_3z)@w274=5_Xr>i7upyjp%0Yd|0nElB3g*|peSOoQL4a%nn8Xkl zMFnl70GMMAr7e<-!g;YB)XWwga=-xE83gM5qt#CJa{b@IHzlL5KK283vGAs|O)hIz~H-e#|Mn_`-AYq)28 ziwLm0UrtW{e$K%;5M+W&<_tu6lmm75rILT7nTSVMPuP_yA@T0ybXyT(>z)8|Yp5DQ zbQ3uqkH{^4c6wIsZb4+btuO*#>^U=rRVJeJ{$-SkQCwO>WM`;gT9Kk4aShHvAuHU& zU%e^u(_a?k~MXc9*pwvNa6A#0B?hcNLHU9ZF9Cq=HJ-<4jz(?D_0R zfLA=kK*-KeiEIQ#0oh0>XQ-#9*?e_JHs=75piAV4L&|2CE&JcEqIB~*#NI>piPA+; zthS1{1rTcCSagN$MY`$<2z+-9vxv=FgW!6#Sj%}gI+)AFdULbqh15rbEYUEK`lyiW zl5~;0S}y0?8nDnbujjYGmYtwdk7s+qv!zmfL%EQ0Cwsh=a=mAFOR4$m?niTH_)#o7 zK@WePY%^2u8_MnDa<}fy$nc@Ti>>$hi)DA~exWaa=rXGQSbSt}s0IHWpl67;dNOu& jaQHXlJ?#Sl-q-#CS{jm_jR6va00000NkvXXu0mjf_{{CB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/typhlosion.png b/graphics/object_events/pics/pokemon/followers/typhlosion.png new file mode 100644 index 0000000000000000000000000000000000000000..9a836bf5616f2628ed942402bb8231ba0364dab9 GIT binary patch literal 1101 zcmV-T1hV^yP)G?Tfc>w_dX<0eBF){hkVE_OCA+eVa00009 za7bBm000XU000XU0RWnu7ytkR!%0LzR7i>KmA{J{M-<101#Ppq7(uLHr8q546o^qX z_y`Jd5jJ9)gA2zVVcp1yGHkPj1kMzO5S-0s8&!dn2aeGl>^0III)OGR;v!949OMv! z;KB*y3WNTJ%-tecsG|zwf;nApri5|3=ux=j$;z=bvQVam}w=y#Kwy zu;Xt z&YpEdA}V>IDmYz!9{xTyc=7m9GXVbn*C8Q##;iZnus1wyqc-|E7CBq6oS8i&7vIE- z$Y5ru8C0_UBu;VHVA3N*Fd@B8zy#a-p2*p0!JjIDCB8`FB|cZYx@^Q(XvS~shFUDTHqiTxMn7xLwVjrQy*wYPg?it)mq+mIt zFp-97*-(sQk3}kKWEEU+!-W_+)61tlFC|)^bD|7vuXFSmp`$~uBU%!SMU#17&T#u$5Q=8Sm=ZoN2Iv4MKBV!=2i+F|+83-rOCc+nLzmP};D zc)0yxYIKltPD^h6eXx3t*wn+i$Ih1XRFHwRR+y|b9FhPGGSdmWrFDJi7e>XlB=Se)$=z~945!W;3Vxx zW*OS3(?N~OiY-d3^Z{%Rq@!C1o>b*}wPdvnuZQtxVKz3H{iYNHX9{6HsnZ9NnR-5f zZ{%{rG-G=0AN2?e9w`C0_GLof$?h6_Z$LDI0P>hgL1#AMd}CLx&olPB$aF<7GaK@~ z+WqX<;3nNS_!CHJAJ(S=D>*C@(x5WWikNO-E;zWnpN)L^gf+PA2bwF7DCL6E(Rl=m z#7GL3df6uCL#3^^vynxv@He!tOgiH$)(t~o<@rlnoct=y*Af2!;b-aM Trp3Uo00000NkvXXu0mjfUZNA- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tyranitar.png b/graphics/object_events/pics/pokemon/followers/tyranitar.png new file mode 100644 index 0000000000000000000000000000000000000000..ec13b289dcb6ba3b5f840f9af518fead6263369d GIT binary patch literal 940 zcmV;d15^BoP)L=X{qVy`LWq~0RaJFiNP^JK>z>%3@&9J00009 za7bBm000XU000XU0RWnu7ytkRB1uF+R7i>Kl`(JAKorLVF4k@yffe_wRH{Xi)FpRC!w^*&`CBB!mY7#Y@BS_Q}f~`9Fc6BiLq@Dp@f0j362+Uh6eIAmWS2y>U0Y;CrUFVE~&kGxSMSkiIcp6U9S4h*b*e zr2=1dvgo+%8dk_NYNkfA()&7M4VT`{g<*Mr zl)&WJS@U`fv$NNfzdbgF7)d|;_4839SP|qWWUlL+B{WQ^;Vhvy4TmyG;lT-y`gI~J zF4NJQm}^6IsPQD6oDzLExP&PNBe-DsU_l7e8$iq=vek1YClvg25lwlWn4DG$BW{abrN#9L3SB#(N!ey1cY^LNTa?%(QlAZe%G4+BLFiVV~!_Npc{lN8z4!15;6kMq> zZZfJU8^hwzk@CR$;C$=J)qyc|df)BuYa6v-J1oOqXWdG+>RrqKS^Ne`(xO~7a|7@I O0000; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tyrogue.png b/graphics/object_events/pics/pokemon/followers/tyrogue.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa25a19b8078015b238866860265f33536591e5 GIT binary patch literal 515 zcmV+e0{s1nP)G_Fa3CW?^ktr#0QGoye00000;7cV|00009 za7bBm000XU000XU0RWnu7ytkPc}YY;R7i>Kk1=b5Kp2J{4&s_6KOjpxWJ{ZbP7VeF zhnqG5>DawX>5@T$k}J9v`WL!qkbXGVF@u8;{4b3cXzn|6R)kLV*`9mv-tRk2>*(m{ z_(v>^_D+19$<7JA*6!;u5mVVYX6PGro`wEiFKo+b0_-jZM z9wyW@!TSkiKNa4==S{43+Xb*!mpy#70OrB~$vMG0#BZM3eaCTZh3g*=01IJT$xnxY zIcK%*I7&C2A{Q5yy@ce98REf$v8-{<819q(NH8mMTv+6{UelapXt+i!>}A1ye}D=n z{ej~(&Gp9_Zktqopl`=hRJa^ZS>t^3ywXI1<+VIO+gz=3VUnp{DCK*u;zIstls`Zz5!Mv@FAG^AfW&N002ovPDHLk FV1iQP;#&X! literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/umbreon.png b/graphics/object_events/pics/pokemon/followers/umbreon.png new file mode 100644 index 0000000000000000000000000000000000000000..d15f9abcfa342221af91ab49b19311861fd700e3 GIT binary patch literal 739 zcmV<90v!E`P)FN35u_+lTIYCKL0RaK|*;#3Ed5JjzDLFv^0000000000B*hr>00009 za7bBm000XU000XU0RWnu7ytkQSxH1eR7i>Kmc4GXao&vBsCodq-1w3_Op=3OFq1aU8dQL zXG~cFTpmqIKdG2Sb~G{Q%LFSdJ7a_vs+KnPto^&>G6l;srrZfCW?;29 zc$I>I9csB)3Cq{vW&K0O&cIr3V7-B^u&aCU-t<>S)^Hj!?WWuwWbCXh-8_(d0H25D z(9mxNfhSbpBxM2-Z&5GH38P~(uz?30x>7I*dTxS%Y@n(ddyqw9(|Rrl<5n_GP=9~x zR;U>TM{dXmK;GR~)q_3AXz=5dB!)b--k`mQHO8`35!3!(-k+rJ!WG%^Ds(8_8jy%e z8=e8F@u|TYn`7>8_y%`$^No1}nPvva^~g!#2Hg1Op1HvsenLAt%-hDSYjVd1j0uX; zOwGj^Y0jo*+7K4vV_{a8geCG{M6@6d})Z{F=A?v@z^MopH^Mo6SLc|q+(c=Nc#M+C$`$OKl`)IkFc^jf^`P~j9W&*&+fFx_8bcZj zE|Bxkxntp=9NGE<3^v6OG?#0;b?y}R2nhdxj)#t*Yxw?4KgE`<2)j2GI^358@<{Ug zetIP^AhmQE_ON3_I-oRrMh*o#se%-{P8fKC!z)~t3 z;!mG1aX)>>KAY6UX7~2hD$=}RZn@1Qs0Au2u!hI{;=@SfkerzE9f(Y5Ox47$gP28 z$QtIk5ro1TaB(<;B5mhc9Epcs(B~l5sD_%N5u{*QHEpCSJ{T}-*l{yI5lmH%;6y}G z>KaVrMo=|^L2UWFHP8n=+^FToKsQVuOI7h+kUola;Tn*+fC<1o=teM@T0U(%XcDr5 zouMjP!3Umdd*uulTtm<1nxYzNTEV$xyCy*~hCh3YEI0FXr`NSsUCVSQqz2_~0XsZ7 z!3bu3#|Q4_V_4UCb+bXH@58e?k9&jnXA+OeHAq4XRpl3>%wiN|Y&Og}n`@SIt4TiJ zDwoYWv}E|r#+jv%uFN1NiLs%fp)qNRfmsY$00009 za7bBm000XU000XU0RWnu7ytkQ+(|@1R7i>KmO*RVFc^k)CzVcF zYGBGxECa5pH&tP`M65Wpvy_y(St`;?Kn~=5ATo%%r3e&Wc!lFQ4m&#qjCAAJmjXFM zi|{GHp1Vn;e3cjWsw9rOb|%=XF+t2(V|k}fM4;gMDi;j)-L5D7g~5IYNlZpd^q?B~ zf)gQUS3f>|{mjn-1&8T6qb=`cr{8R6H!;TmN0x2bVJ5&=Le6er?4qU!%otpxPl{VY zdJvSPo2W9t6I`XMFl0i``2M>2V!0jKX&~pCB?P^VhWTh?vyj16 z6 z{FnX8B!k*Az&Oqnmgp9t|K!dq0HLE-&TI#cBmxKlGSfGN=HK(4>T1M wg+dKS9f8!mV!Z07*qoM6N<$f}}Bxxc~qF literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/venomoth.png b/graphics/object_events/pics/pokemon/followers/venomoth.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7f1ff73b618eb926357a1fa3be5777831c1d67 GIT binary patch literal 1087 zcmV-F1i<@=P)FN1NL0JI-0l~q+p=t4PadGLn`PsRF000000000000000_>5MQ00009 za7bBm000XU000XU0RWnu7ytkRwMj%lR7i>Kma&f8I1q-_khs=Gwn;Zw353csb~g`@ z;!2+Y8$v2CH&O_v4A!}N0uhAjLmoiD8V0)*SMAH)kRmC`mu!*ha5ycn_Ha1!e>0>> zW!eAFfArbB;NwmD%G#gI&$^`<^tS%LH13nT@f!Ev0r1nf58O?|+d1@wK%I}H!p-5< zB7I6qUG?@f2}ckqobCLqh6KROl(Wt1Zq^4%M45@G1}^|0a-V<+fWpN(K}TG5-v{uJ zT^sw!3s!d$XB8cWjSHyk-X|Dr*OJYfe((txbfX~V5nxL;+Xet4rUEJx%i%@cYGY>t zk}^;Ljx!FWMY*pwQuekSB|}B!DFC3{RGUf$03zP7PS~Lc>2h7{&@L+Q#L`!gNo&ti zqef-z-~~W<;(Fxu0NQ9w07P6@2(e!>mqiUQ7brdP!B2NhKC2u%K?0|7Kva&n_7!-5 zA~#(j0)QhX0Si%}KwVF(;}*zz;=|dCawx49Xo}vB$b1+y5o;Vy5ugxXj1xFT;!c#- zjxFL)Lt_>Ktn|c(Ja(+qh^TuQdzQVk+7b6-TN#vRlWfij)Ei1v>o<}BHi1~tj-3QRG(F4(xGfxUd5We!{t4G# zk9}-vc_w0IAr>^4Vtp&n1_5*eP!6MjgttcFqJpd%iNm_Hb8&nR*X>a}#R|_vtcGY> z90mHPMC{apTV8*Cq-qz(-EJg~V-su_Nz!?PD21Wo!+_*JP0_~%M z=@1zOJaH6YP$&>B*b*Awb0S)DgYEfBv>_XBi!F@>f{={`_qR@lN4)_chK>PySr#r2rD~bO-T$##dMV zB8dWycn-i;ud)fCUHv5%8~^^QUMvFBMBL7c%-Z?<3dz3!@OOLy;LbY_;CntdolV3) zen(-NhVp6P literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/venonat.png b/graphics/object_events/pics/pokemon/followers/venonat.png new file mode 100644 index 0000000000000000000000000000000000000000..ce572706871a2d8b6c93025d4d2c260485c3c1b5 GIT binary patch literal 589 zcmV-T0K)GzTW-nL!4F`dSPmzlgR9W} ztQ^+bPa(KD6)f?HlTdIA2ikg`ql<0@A(SU>Vuud(L%0bhm8MPZUg_dw|JyGwc}cFJ zp100A>#XyCl6oEyOWafraT8(9&N&sC@G_AK)Gg((*t%6iWM(_pI`@y+kigBe!2HyT z32zp=cN%()8)+K4*6|M-11b+9%%qnL=%AMtnjAlpc57%piR<5vRmonexJke&ae!DI z=Ny7~@wk?C`n_$~>I>8vQ{kBXDnKUZRoCi3ynO~IJjN|mL%`fW;|?0 zBm)>C&e~u#bgj0OdPJIAIV zIWD$;rOv{bneAE+ZGHwRos>~m^t)$>Nt30lLQU1RPCcQNCgBpRE2B>0NwPTGwLVgf z*2}eJt~79~FSG^3PDPgG*p`oDx0Rcf_G5O&M^??(900009 za7bBm000V|000V|0Vb6__5c6^_(?=TR7i>K)G=t=KokH_%?23^oomoyk)=aMlR%+s z#?xeLiVs?F1~2if#fQLTYKBfBlPhRDc>GvfI|f1RU}~R83HBl+NT<@Nr#qdj$me<} z9SS)-_!xsKcU1jowAA?il8k+M4!lWSFF3dV$*eI-C>l`r(H+B7xd0 z!tR)#8+oAQitNZ$TlXA;I6e1+rnZ*M`;Fm=WA?*4rFGd6)zl`9-f++}hnm_|m=H33 zHYY>yl}=?XnO|Fb!3{Z%$&~Q4EK7TdrE&ag#QE7)MchWM!wJn`yTRJ{+CSY;GhS z-iSk;MQK4;$wMx>iZP{l;R7syH(WA*EvGna!tt$4c#}JOO|5%AvbC*kdyUz8wSZ_W zCR#SX0a<5>pJ3D$3FF+^b)1c?tMD3kFh0G9alE2|!lD4iX9>ogw%Ri+Mph^w+zEKX z*BIMTvPS&zHtu9+oSw_2#rm=?ZBa7JEenW|@q}fwnZIY7lXZ4=W1N4A!r8lYaBtqu zvINp$W~*bfky(WTsS!p&dLTGk;_Akm0<#$L4eeE+HbTfwkVq&BawBfqvaq!&urY4u z1=>ri)4{D}OKe%TglU#gN9`5M79&|eT4bO!S>dxa&IX#=!uBdZ!ZabJ2(>AdUq>n| z3u-h>L)HAPLN<5)mT3By&&!r9z!~U;fKJo0`R?p70v>-93(9{A+x22FeN=sW*FRam Y0jaAA*XSELIRF3v07*qoM6N<$f~)bV0ssI2 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/vibrava.png b/graphics/object_events/pics/pokemon/followers/vibrava.png new file mode 100644 index 0000000000000000000000000000000000000000..466a1de0d12adac8e3064c07a2c40443da7bb5da GIT binary patch literal 916 zcmV;F18e+=P)KmA`A-KorNXi!R`$Uc3Yky(L5Isn7=6 zu5IbA3?_rXaDvc+V$-|yVnZN9I8PZH@1x+Ry<}bWcpIA zR-9C3D1hFSP9*s9ODc$mifhJVm>G=6XN5^+h5}rPsv{N*Qb9bl)d8>=+S!!-bFVO| z%us-kg+wPK%eRu5 zjiK%VaF)N4gLysV=?ZZ60hq>y&G{xFkC-q8#7spXd(V=Lw8Pi%gk>8~UEq|&u998C z)oI%^hOA3iV)&pL64GK~r#}-;$_*iVPt6u0%Zb`9?Xn_6dj+%0)z9E6ITzZHuZ-d5 z$cGJCzGKwgb25GdS??JG7xi`9;cABMgZA!62+`}! zM;v-eB!Xo|9_n=$Jr8-63{B=RpImq}YO}~tGm8!595BLgP1c~y`c~I3{4Vkgy4b0$ zk!!_$tUogm!-I4J^H|~ARAw|7-^SSLbSTalMr>sV2Ya|Mzszt4-^!if{ltiA*_d;m qKlreAGKp2KkvQAl8PBI(GfW*=+Rtc$F z6(Xz0Mk*70fvABCz#}*hY;PBf(~MAzi8-3t@?hm#9+5o{jB0 zJBAKbruG)}obP*|`)uw2_&@%cA>DJnz5UEuxd7^amya6NOvDiH$cPD63T-Pkk-|7F z))B@&i;IAMMx~0fE z>;qwJ^^E#4SH?R61UHN_e}fUB7pPecg+H`0&OlKhbxqT}cqIsra9I$pb%|Q2cR72) zdKg$4VnIMikA3E-;EnmwG`WBYjhBLOt@$oi30fW z)HF|XONC&sqi%KdWPZfD|C9q^p!ASUv~{2gUm3Q~O!NKgr9x0(J0?mp?|wGTw>2(s zi!X8t7uYuYh}mp5r?VqsB?>{wQA>`J%zF=d?c7ulv_BkYTY_MSZSaH;vahfcW8D?H z><1DzZST47E%GgW}maohZ_6AaGd}Kz3@Ilnq1k&dwbn8a$u7 zfm3aeNnlX?#)?IO$AC`^v21t(+3Pqigea4~b^~V_lulqUr<62>9s3MJK^1GRV2Azc z2|_SHqiZ_u)7b!tyyLUP@^D!JhrS?Scq`=>Q*eNqo&b#!g=~KA2L|jge&Mr3zak`C zOpwn5fx%&u`c6pZ^or7%f4h0YD=vhC^deB;^>N?vd6QOUtW^N~$^J_M14w7VOM=c0 zr4x>1!NGM3N6tD`^FKxb+s=j)G7DtaDGO{)^aukIUM>;~pw1L5W5@!xsc;vy9L~k7 z?>J2k+fkE6v60k&u94lTN1M+8Bog pf8bi77A*;xJyT+9;|<*B_zl?3>6fzxXodg)002ovPDHLkV1i_Vtr7qL literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/vigoroth.png b/graphics/object_events/pics/pokemon/followers/vigoroth.png new file mode 100644 index 0000000000000000000000000000000000000000..4aad2e9b6ef2cab6134a1f234c117aed3bc1bd7f GIT binary patch literal 759 zcmVK)IpEZKokJrNlBXUFPcg=k;cTZ4F|Zv zlLK828skZm3bmV*y$Z`85V&nT2%C+Uw&|fq7@O#LbK^z57(AFw|BD?eo!M@Oc=5(N zG<<#SdymO<5IV#m4snQokBj{-qkTTkW%EWzx<6O;dhu55i;{PHwww`??doFg+NRhV zAuEyPHv?kx)pDk{)?_)mYMMf~NfNri%h?b^mb+{Eg7I-Sy~3u@KnsGv%Q;!;0oNdB z8qLLQI$4XY8-(C?vCFd&XgXWrg$}n- zYQF#df$eIG|6J88k7(DLcowGV#pE3yksqxK7r$Ht3$LZ?eo?3a^A z*Ij_#57RP>yq&lgO%}sVB(M~EIF5~myUSNohuc*+efI%;9Zq_G3sQT)Or!qb+2hx* zehvhdLM=M`ezOXdBFl~EUs^aBxee~l8ZgsnuHf<#w6(xeU_?<&u%i_E$@*!FwBV%G zb$8Zqg_#z_-{SbQ5#^jURE_A9eS>!!L#m`!Q_6NjBP}c2x3XO$SiQBcEfT1zLpnl3 zL?Qx0S2Y|EfTL_60+xZ9lY*UwXOV|Hmr`>Dll1~%+cb5SS1Vv8Uv@TdA9r;AXhAaR z*aL_Ekb=5x5oYkZej{LZsJXMrZ(9WFSv|*Z>jr<(TtlhrD(HwieosUX>_vFB0U pM0bL3Xcy&e{G_F?nJFnT;cKlTS$7P#D193X?z%(#tFxSoa)TvByqio+JRiM4}z>BI=VBfaPmLn16ks2skCrQmHmZgzm!U0 z+V=`AAdR0~1j{_yaSMgZb-_5Ez~{2RP*F+=!-y*i?Y9UmATx2JfHRZ5jDUOkVAU`R zP-r9MLYYHRG}0m9FSLNn#Fs+-;;=fvoDs$+x_*r1HbQV=@ZK)5J|_L=b?wE!>3+kWT!1 z~UfXygCXu!w10SIaBolLJXe(h%JFA|dofm4haK|6W;gYiOHS1i%CSVQEkB%;`tvChU7P?oHgO9tz zFygN7w}nv(oSS8V>s`6UtUzoH@A|yN0(lAI z`7=fUN-u)Jl)FbB+d_9op#NKU=(L9dT7`hmVyOlA<@aesW^$lLFosN}RS3XR6t6sD za*yx|kk_Lve88K>tuwh-=FN1-NjX_LF#!Pqxmh{!$(dO}Nr^c*000000000000000()cP=00009 za7bBm000XU000XU0RWnu7ytkP=}AOER7i>K)iICSFcb%HPxkEUgpt@B$=)3)`6ykJ zASE4*5q_yUWjS)=Z7?ErsJeAxxGz_em^yYsh4Ai3r6O&lDudXwj+d&w2WMf6Z?wPpclNpU&DYtQ*R3W>TDKkm|O9Mtk z#%Y|6W;8Zdr39>sIN)yopOTCGECWU+jb)T7?X`(S&amK-%DnCl^|nxAb5MX#1r1UNA+PW0*f~2< zR+hp|z4E!ww+*Fr7BsO?R2IC(Ii(F{Me#m^nTLY=1#7dg>lW%(`;CFR*n$rQ=k6cr z1-|c5*tl)m=a6wjmsFGT{ig*t%Za;!?ePGk0;E13rVWmV@gD$o>(>Ua&x>Y{K4#ik zqw$Op+QGQK>i|3b&+9u|!dFD})sBIm N002ovPDHLkV1gUt8h`)* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wailmer.png b/graphics/object_events/pics/pokemon/followers/wailmer.png new file mode 100644 index 0000000000000000000000000000000000000000..ea637a5e275728804b149798a9e517d603044409 GIT binary patch literal 718 zcmV;<0x|uGP)K)W2)nKoke?x734&gV3Rn!G(5gr)qMC z;^8>FSaU`X;u1>gzrr?}0O9pog-5f5hVw8Y2woAZ$?|w-ZQK2q{ z4t`$rIZp5UbVvr+)vk86tN*8@?EZx%7W~Gz634^t)<*St29?$;JS|-pL10!xaYV$6Ls9@Q`z_#w^8kP;|koyv` zvVm@)WgFVUhDB1~wY#(porMob`-0PRCxXYRqCjs7Og0)Shzb)33}B07qaj&ud1C`= z>G1f6-f<`6r4DqCC=hc((=Nmt71Wa49QVU&ak0@5-RtW__hH<=J(uXi&y&mqezRUu zAdC3-_qyRMp|=KB9p@Fj>a4L^T1xj%uWL{F?a`iS>tLS@~YEBlWMaM!L0eI z%50=3R^F$3So`?{=yT1o?Op$fRGYrt=>HGv7a}GC3ahe5NB{r;07*qoM6N<$g8w&M A5dZ)H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wailord.png b/graphics/object_events/pics/pokemon/followers/wailord.png new file mode 100644 index 0000000000000000000000000000000000000000..a27912ba77b83afc272e69b47633439704dea31f GIT binary patch literal 1151 zcmV-_1c3XAP)G8cr4sZp^A0RKEAblhsNl6X@A0Hnd zA0HndA0HndA0HndA0Ho||9j-OpJDvFCyIk0PKWbANO?ltfaAv|1S#R&a4sT%lrZG@ z(GgDo*OUOwMRZe^FK$DQzd@wdWQo(<`dP!F{4Fxw4CeyMD&Xj1j=x3X=_Ve`jo{y9 z`6tx?lD|RZ_IY_hEu$o_E5uzR96vrn>*uA`?ny{&n>BXZ zG`@Eensb5|Ck+={mte(FK@m4RMjK%L{!+_$rx@@Hh~RkB@F~*8 ztl+reXbFXOll!Vp^JQHqT|thIHSC{NKqGgEt{eV@6&X`P)g0MzbdFq>RS!R?)2sQ` zbaMjPt9X>cey4;85frlF=vzq$-{M+@NPbyAXF&e&Ucps%{*)Y^$MIUQ+9`2C(Qvec zxgO>wxqZ^J!wYaVhkO~O;y{DrR-mi}OH3eq*XAK|M%2_eR$=unQgf^a#LeEXa=h+t zmmCk{wqV>746`;*`VHV#p{PB{krqZ!?-9FP>&@$U2xBW~YrKT>{uqd)&9lB?Em)Tb zCOB^I1K1(~2SFM@bCFd0WIa!yFK8>E;YbaP(_(+|BEpv0HpfP&E7++KjtfYPVD-lI z0vRG0wK=v*eV9C$+O)_0Cv29-4aYX}j-b|xY(S3()jqac=TqdZD{OOYnTaQlpRC}A zJ5(?T8jjJCxolhTb4QTlbrW|J9eo($c<{sM@yU$s-RvWZ8UEAiutK_m96uN%X9Fl6 z2zBh59&5b7N>y{iqpo8pi|iKma&W5NEC;s8F1ky#r^{}!Z}doiC0&+ z3j}hN)@F8x4U7GEDVZhWq&+W|^00!;NIo^dOK3;Ed zYgm6Bw&+rWZ$*seBlTnFeN2qM(c5XpcBYV@xSX`5#bys(1Flu)uvZHNh z)5xWrJAy+yFPj*T#C1u=d!fmd(3TJ6b-*bX{Vs7JB>nENiEjgd1(ZF|Gcj2tP6(-X zMYeKoCZl%OAytKa-M}f|G6;*gv)gxUG8);tahCw;4;H!Az^KSU3c=PpIOW?k?20o1 zz5NahM!2&Z|Mq?K%XfoC$8BIVB2FlL;=@7>><68D#}QN2Et`z64U6C7Bzv)g+->5n z1FFJ)BYT5;5<10PcWg3hPYU>ZmCWv8xZN}`Ca^E!HZYpx1tB&e11&T;A9n#F76J4J zb_1gc^rUVMThzo?7yWKgkUr5Zo19zYo4YNY+}sUDb^{}P=k(^#n};{*36rlbNI4Wf z8lgtUxn*5FW3MhoBin6YDkiRE zV9hEJV;KAuGRA^T3XeEtY6ef<0fFaF^#ly|=rwySd=G3YXXNvmWuP!}4wpj6xe^|j z%c{!#4h%-uOc);+o7RDv^-F2}3YS4DeNuSf?m#v0=||DgpFioBWO5ZC zO9h}-syTRbxDi+OObJ_@v024&yx)=dvv)$i5AZdw-THa4x)!c79T3m-Oe4nDLdP>D zMDdCRe#ZHdsuB4j0fb)*y;O6s+zaD}k0U#<^A8F={7#c{gwqGh~4hREZyY2;-(;O%=CQ%YT|g~B6Q zeCqX79GoeowNMAvjOc9Y9{(qTuU8b+4;&ghD9oaip3rIFk>lT0|E*2~zgGVM+f#Xh Txw)G=Tx0YQ1$p;;NB2?O!badDa9K|w(P0000000000urggf00009 za7bBm000V|000V|0Vb6__5c6^FiAu~R7i>Kl|OIVKp2NDfjqHTQThSgTo~#hjZqh8 zNZlij#Ab075)24}J$NeN&)_cIn7ek(loeX5dNWv&n8JtZ*%;sJtD!^HrQ$ar9^ZSv z2iqs1D90Rg%rXB*Hhdt`XM)xMW5dSK!IjQK8IPApm^G z0*Q4l9G7zimM(ti85d7dt2 z_y+KGBm^lB1lxqPv%=J;ySYH+@7wG>=Y?C=#ojbGVHnPIAw5sHiSCH#&g?=6T=%U0 zF1sUjXii_D!jz>OsKRi5@6+@Ag2OpjiJ>NIpIR$1&)ECZFcVa)sH2Tgp($~)p*#2d zaFsuUDkR(%LN3s{MM2JL_jBh9E({{heWeiEczg&yBH`rmp<#<5ld;>gYq8FSi`P4$ z=XVwZR5+RyIZ5l2rZq%?Lf>jycq7;uvD-RY|3HvXh3UdWWol65RIt=e&?!;;d+h{J zp+6%wKBkVxc{i`ZxX_nyED8JxrG+1HM=2JncV2=0iHGKgc!|IDx%b;&j@p;6@JD-q grFm&o-uZ9y3lseRDgaK+I{*Lx07*qoM6N<$g4neG^pH1*t)CL0KvB;YqonF@a$zZ}b9F00009 za7bBm000XU000XU0RWnu7ytkQFiAu~R7i>KlCf*sKoo}$4m6l9Ub1!ZkfB}z0d-2C zAT(tzbW@#hjWL$DdhAdzftG9;Iv9!v4f20bVQ8UaJBWh8!wHH(xNUr6*Y@u0yL)$5 zGz7BwZJ(a*dq2GsLi^g+zV>zR!bcA*eEPcn{o@*{EJx_QiE3Z>hA8Sl=+$4RySrdlh{@9K5A7p(0G$JO!0v)wp}(Hn#({mrFV8{WkL`FB3wDHfP5RbE zJ2Ao~EkQq~&H!g0B-#i`r1+HPv^XN>H9IlFl=Odqal~05DXn?U11a>I2Zm{`c_*<5 zKurMrlQMe%SYPFt#-v$U}pHY3WNqclz270y}Xtt>i z{NchjxR}WyA+3)ZJt-^!Gg`0>r=8XHZPRQd?Tjv&-sT-bG)dER0yq}J2r{n?Pdkh) z%^h=IT{E-IZS}Zt3Ix4RX_{3FU2aSn1AfWOcRm1ly(}Yj9NQMaUS@R!FRcgL$AsLM g6GxXgzvx5PeFN2gp-Ew(*&$(}VNoFg0Rb^ViP6Dfv9ZBvfx$^(p$P>E>K1Ky00009 za7bBm000XU000XU0RWnu7ytkQiAh93R7i>Kl|PFbK^TYMumpB050c`z(jwuSC~TVB z;woDq&4CcOB87)lO3NrjFsb%b*6c#u!v$d%+%8qP50K_QKxA$7;37C222Lz;X4aV< z$2kol!OoX0d}hbzH~*Lg*wwCfwX3aFV%x&b#sBH%xAXZ%VHE&%JOH)y&%$Xkm3)4? zL8$JPP^%MIP}=|NfNAnj5CYT)Ck+O&u&ja|cDmmU^%0wbS_Mng$s7sI8W%>KG9Avc zumY${IP~B#3n;^fyfC~6ED1>=$8`7@WMKuAaoFyLgE&CdG_z0;CLpmajLJ4`o+k^{ zS2hmYzxpF1M>|*{p5+Ch%w+FSaCh%5c5@xe!m^F=h&<6UEO&h@aJsSQvAnIHTS7N@NL04d^kE89>pgP-8<>v>;-aGP;a} zBiCa>naK*k@j{5xkXyq5x=V$Ang-~eALV(J(d)~QkncMzAm&=i-~qVT>-B{IkpbKz zD%37$fSa~`GDL&2dA*pP@3*ON$;m@@N|bT-`sK zxa#{8D&#zk1JslE8GL#=%v5q~ITG4|zjBPNz>D*oH^U6RIr(TesgSc(jJqgL8)Q<$ z#uLU>#{2OE0NweWncx>WVZLnKRNMm(Q6cB$b)mPu-D5nvve_mojO$!z=1B=lw8GQ+ zRrx?~{fLDNb_w%xwdq^SIr|xJqV7_TPYpmbU&x;c0V_P2o!i*5_-n!zX%M=TyNC>_ z##`Jpbj}8`_v}0xDrIM{P9X0w?o2{0%yT`lPJMy+{zS||zovd);^2VYs zPlKy+9p0}izgcps{TgM(%G}k>Sz+@sbtgI936G8soPI)h}U}&Y3q9C#(VCvN698E3l<#`$ezB| z>ZpuE<%(seJ2iQo10SZXzgcWC^>EBeb%UCm0GF2<#j|tt=i3YIX7;)r{dC$4y?TR) z?VFbz+Pv|Gh0l@aaka~qolfJeWma6XKhQSM;O+gB5&zQ#za84z_e%1X`$Hx0Rcg2k?HCAQIWYZNpS!G00000*~8Q@00009 za7bBm000XU000XU0RWnu7ytkQ0!c(cR7i>KRJ%$8K@^=r7DlkMvlEP{KOkCZA@~6s z2sTT=g>`=t1IB}6(UoP4FQ562$?33b127YBouCtcRO8%uFOyDMW?< zvFqdGvti6nlt$9Q$RcQRO z5~|9r41DaC_4;Iap6_AfWYxTe?nD$=PdY{zFjTj;11m+DdX!iPkzdK`O*r1EAdgz_ zqb8CP(y{#-cxO#wZ!O0PjkP874Um~#xT_iY;zUCni?$@UwH!;#z2L)}UH=$-GVVk} z9gDWSfaO>TeAW*8cD==Uwp0@#Ck`CPgywby$8*riwpVk~c*Rg|w<8iS5GMR;+ mZ*U!t1LcK`{uXXz{~6y*oDw%N&apZG0000*IjO0!@o8!C*=hOFxw$b(v5|psSy2E000000Qm~iT00009 za7bBm000XU000XU0RWnu7ytkP_(?=TR7i>K)W1t3K@QwbjUQI66*(*p^1AQ7 zxAWPV3}I|ggBsMJ{-5ICy?|HzNAR-+?7p493|QIm$|-&OYu>@r7htT>gw>Ddtzo|P z7VtK~7_vYI8ja@1;O78`{Iv1Z0v(WE)5sL$kqO9mfW0|yHwBci1)8ivK`y)~5J^u6 zt%WHvR;dN&HS*8~WdwkvPr=N74w^yI%kNBsdIK!sMTI=HL8%bwO9nVM3Yq|XI5Iw_ zTh)WdhrblCK&}yuBctF{cfrYCFC)8NW}E{2`lQuP0e{E{C7mar1F(ldCfDmVU|YxF zgaJ6!yE}R>ZIElwbO#j7wzg~N*MIiD=i%u0Vd%37^1H{tFR|dKfUW|)PIhE~i^r84 ztoKipw|4(v=ugp0!hCmSxx7m9D@d|451R%UXScuN(inzezVD068&s-p0BYg(N|FUt z4AShL&*aa@4xBiL$$rWbaV;4aJ|c$3Ux8Y?Z7T{`Ag|;`=$X24?(cwQuQq}pOvaz? zB}z$;oDCJ8JF_X7%?GDs1B}O+fKR1TiNx%4yHF_5`S@OnYB4SIqH!s#%tfa|yID~+ cU;oZ}0iPAdj@!J-b^rhX07*qoM6N<$f=4(cumAu6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wynaut.png b/graphics/object_events/pics/pokemon/followers/wynaut.png new file mode 100644 index 0000000000000000000000000000000000000000..e90e1c8111dfd469092533b3878a0f4d1737f002 GIT binary patch literal 564 zcmV-40?Yl0P)CRu00009 za7bBm000XU000XU0RWnu7ytkPs!2paR7i>K)jdnYKo|$`GoWzeMQqKMRElPF(8cvc z+-xP-+w4>vBdteAh3-jcEQjl~<}|SyEhtZHZYWIYrOgN(ay1b6FNaqIo+lQg?1sm_*;reP z?y{UQolGpoZO(~r_MFl#%+g&277g6DxFGk;UQilDAWL^y+d=x@M>23m(IJ zHCMAvdYn(|-IIZPW@Dl*Mt2n`8>Y3!ZgFIBkQlwyX)C+aT{W~gAHo35Ua=~Yn(b)E zr@L%m!_h-4PwJeqM?&^<&uAHVul)g_Wd-c|c=sfC>zpz{h=3CSJMB^I!U;524KHVJ z?=V2OBZOaL=d|S!@Kow<43Is3HkgHuZ}!252Oq-9JGXEG$Ik~d1_M+hlt&SR9ne_x zi3b8p|9q-@5K$y-#v>qLPPD82kvCkRFM1btLoP;OYRlw-xq71&OgGZ-kk zIm2tORQ1Z*`17ke{&fd$mOn5m*5eyX|HS?Ii}?!*io~P~+-9x-0000QDLyg-gyxr0RaK&>G|17Sz%ED@zG(iDLJ{BF*#8oZ#THC00009 za7bBm000XU000XU0RWnu7ytkQT1iAfR7i>K)jeq2KokdXK?mPv4#!keJ7=pXH3`K9 zg9b09m?G-kOS%+yvIq!dV%2BI9^yc8hRiVn58Vvu91Jxb>VnjO)-G*B3fbK|=_EZ} ztdzJPlOJAw_jK>ClVvPP>sr^k{#z{;f8gxmGSL*xu2R_5ouod&H3vhDXRa`?J}^s7Lz)JJG4VJ&dI*VTGct$z}7tTVUmaG~p1gj9`)W1~FI`em#9*1f@OV46|k_(vi@FsshyurnB@o4z#kwMj7=96iMMK!9NXjy4as z2X4CeFKA6tj6NMbx%dVG1hcY?dC{q+yLn1WPBD7nJwAO00tEYO+Ve-+UhFMqa0z0M z1ooMuzNIM`{=tZ*RhSc6v6+gs*u~oQeqkQP(>ASc)_&8!)?Rk~zp7uU WCt5^VV}Q>90000G|17F#rGnNg%>Y00009 za7bBm000XU000XU0RWnu7ytkRgh@m}R7i>Kmd|SwK@`UqS!@G)S;%!EgnH^p40>r{ z(+=3nUWz?v#e>LNdJqq_wKQDB#Ew!d*089%&A07u@LZbv4AZ#rwRlJfo9Mv z^Sa3>AYvo>H9`}NBjoSbeImA>DIRu-9*8T}FkWW9FHt5cl4i}va$aL~G}?$0$$9>i z(N2#*0;F3YQ*5}MFhQ?@@urp2rT!^L;?HZO(!+-vghwz`4N)Q)209l& zIydI7kv10~w^cU_2?pRhQ2flLL#DU{$AjzGf`ta}#8HG0U>4sXG^*2rNZei->f#V+`0?Y$~e)cShaL*kbCF--Nm|xC4D{XB=L0C^jQP zye|<_6sOc(Y$<*p!#pEG%ncPkoM(#rj>{7R25ZyR;D?}8fAsLtUN!JroG7~Q6lv93 zQNkaN!iieUVTz4Nao>D4s~FMMLCvYI?|61~B?uT21shV8f;V4@68J>SVTuV;{4U%u z+%e(_%C@}~B}fuUYc<^H;^;0CiKyb_-P63P=2boNTd9c!@5$}3BuOGEwF_ArlrkNdyshU+xMD8IczeeIxOj%Y+!=<;2aJTKqi`SS9v` zOb{teg5vRn7tm>zBsyscA_++-w*IGAXoBbztDN&+%ztFR0B3juA7#~xB>(^b07*qo IM6N<$g4XHMdjJ3c literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/zangoose.png b/graphics/object_events/pics/pokemon/followers/zangoose.png new file mode 100644 index 0000000000000000000000000000000000000000..323463b6766f133d6d6cc1250515766e1fba9f5d GIT binary patch literal 912 zcmV;B18@9^P)Kl+Q~WK@`WQ1h&aBLA^w?7+eC2IrdUY4@tI)jD-e5YH&|2RYCH<^v&+h{)q0e zm*P7t`+4)``<;0+yM#Q%Lp;QP5;2)SKSXl8$)83fyNPJ740!T}M)B4SJ`%l1CM|z4 z_wwc<*6tqAC@#0~wK^Bc@#~xL24Ispi`_bIEA`&Y`^5eP|(wk)>LGM}XdOw=$ z(|2vN7|923&O(Z_j6GqCe@1qBjfjE|gUiH4ateZXP}E_jwnY^BKSZ?D9LbS1=Camy2fDh;!A zVgtTfe8l}OJocxP)A&YVG)gCAnH@Z=@y zZ!1(7YR@_Ec?FuTGE-yed2dN7W5sH3NbQa+nNUbv!n)yhXo;DHgwZ|o4Ycf+KKrc7 z?(|Wvg#1+)5~7y?QY@X9Jwt#@t~W~Av-{gPsaZ~6sXQ=tI#_EsA9#FPFCd%3FkY`0 zMvHhg#=hYM*<9apmJF5-#|%oMA+SC{7KX0i+j_11qUj`B%bUo1!jK#+?@Uk+mS1~@ z$P5&x{=Icv0&JSldv8rt9S!|MM!~gutv2qsJyAL%&Yt0sVhvRWP;PpLHotPQ(YhMx z-Ug5_rkeq_1?y`7KNQh2*=El$CU=Jbkk81Tp=Gm!tBsa|O_~U~)yBo|od9#eof?2e zsYpt&Jetd(dbl8L(_GP$~Gs-AH#dEmYsBv_1b!I~7uEr!wSj mNLm!!!!s$3hK6SFAID!ZVv;30jR~j#0000w_d0YO1Q`OyL4sTr}c(V=lkIVlG|Q2N%`49Sy4d%0000000000T(64>00009 za7bBm000XU000XU0RWnu7ytkRr%6OXR7i>Kl|PT$HWt< zF2u`!&+mCi%LsjG|E-M>4*tjE#L38Ie)pun=K_tp|4>|22uT%?3~ z2Jy0fw|fQk_EoyC>p%)_Y-HzmTCm~-ZU$UCEbI5Jqlay7iBZwF2~7cp{Up)?XUVjN z&5w2cQ#q|urUdsUvdx1O#I?xf2>^o(2}$fRc!#y4^X+Y7iE)dJMN|W%{Rqr0FbXOE z?XT_c8KmJ=BWNPKYy``CB8oY{Oo*u>4%sx;jxKLm&=Lm)Gsx>dfBEhM0EPBxoh1>_ z^q*ZSJ9RNEf>cKaAO$_fz5yWx79}tyiRD159o?$Z5+??k($`;qn9vATS4N(-I7)&8F<4~eWlJh+qd+OU_W84TL0CfN1{!m&Bja4vF_)PPVBBXc=ITHiwvK4v z5L;xmWH6Jv7ws)GvZ7fQ7JZG7#BF3$dG^AD^@{my*-seN+e7W3J-;F52W07*&-g;L zKW&!y-adY@!##G@=&@lF8Ih!#;F=Bxgbqyv-XXGMVvCH>h7Y*C5;V-u@8i*HR2U*k zbYwkKhdpmM=8OxhYe5k^$Ov!#_W8oz2}RG>V!aN`$HOB&Q<1$SJp&Nn zKZfDG?3;2V#6~)LA%tiJB(cvOWbb}Q1V7vfqJsEKizB}cDl*g(QMCS<^nT4fyQ6V* z*sh4>fd^#o*+?v$OP625Lio-G9oeCYxT@U$1MTS06mjk%Q&h~{1M#X@xqo{)GUtHr zt5xRAYe&w!B1SGUDyqsY&+wU39Y@vxR7U_^M<>Jx$sIX*v~?rv0(2dn5_flW1v-(P r&R5;}r-@J6)A}Eq|J05z?a}rx=?!BBcf(b500000NkvXXu0mjff0XRp literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/zigzagoon.png b/graphics/object_events/pics/pokemon/followers/zigzagoon.png new file mode 100644 index 0000000000000000000000000000000000000000..78759aa8b4ce8e5a7aef46f50a77514c6d69af14 GIT binary patch literal 769 zcmV+c1OEJpP)G|2wnMpAj$+3BPNhz6$SwS%=G*%Q800009 za7bBm000XU000XU0RWnu7ytkQcS%G+R7i>K)W3_`U>FDR7s*Xd0f&G~2se3$W0yjS z_8o$W(&eQTIXd)j=pPWs@PZuu3vLmooP)Lzgx5Goh9eh*f(OMI3gYJBR_Ib_)ckmJ z=gWc6rTBIFBu}2_O?(poPC4b2|0j|tWtfv#l}D!3Zf96(vnr2EuGBR}il*BZS+z$c z@0r~mMc4Ft?CK+82VOuA2V+*!l9(|ykgKl8WO^<$%we)^NU(g^ zfDFlfI3U@Fk&}VIDv+W;Dk{rF(RD#E2*Xe(qczN%@qoRlfuOHfc)lPMS?2IA@?oES z=L=e3sB`x`<76PotBmbGcs+dRT#TWO9q-8kCb zd87}8)(FqXft<1JCKp`bUkH7~Us;B$T6wwbqzhQJH|0`e?+O~?*61#5Xk{G@+@{>T zLFi_%WI1om-CFH7{Zv@pPRCSxQNw0yNWANKe&WE2>jC%RBjjJnOdAW+?fyu8?R8Br z^6UjX6hYR>4TtYs9sT)0f}Z{gu?&-0mT0byZ`_I diff --git a/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin deleted file mode 100755 index a89a14c69..000000000 --- a/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;‘FFFFFFFFFFFFFx‘F›|›››}›|›{›z›‘F}FFFFFFFFFFFF‘F›~›››}›~›³›››‘FFFFFFFFFFFFF›‘F›}›|›{›z›|›››‘F›FFFFFFFFFFFF‘F›|›}›~›››}›~›‘FFFFFFFFFFFFF³‘Ö–››–ÖÛÖ–››–Ö›Ö–››–ÖÛÛÛÖ–››–Ö–››–ÖÛÛÛÛÛÖ–››–Ö–››–ÖÛÛÛÖ–››–Ö‘Ö–››–ÖÛÖ–››–Ö› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/collision.bin b/graphics/trainer_hill/maps_expert/floor_2/collision.bin deleted file mode 100755 index 891a7f2c1..000000000 --- a/graphics/trainer_hill/maps_expert/floor_2/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�áñù>ù>}~=x½=x}~y>ù>ñá \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin deleted file mode 100755 index 7164f059d..000000000 --- a/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ÑÛÛÛÙÙ˜™š›››ÑÛÛÛÕÕÃù†Ž•››››ÑÛÛÕËËËû‹‹‹•›››ÑÛÕËËËËû‹‹‹‹•››ÑÛËËËËËû‹‹‹‹‹››ÑÕËËËËËûŒ‹‹‹‹•›ÑËËËËÌÌûûŒ‹‹‹‹›ÑÌÌÌÌûõûõû‹‹‹‹›ÑÕÕÕÕûìûìû‹‹‹‹›ÑËËËËõõûûõ‹‹‹‹›ÑÌËËËËËûû‹‹‹‹Œ›ÑÛËËËËËûõ‹‹‹‹››ÑÛÌËËËËû‹‹‹‹Œ››ÑÛÛÌËËËû‹‹‹Œ›››ÑÛÛÛÌÌËûŒŒŒ››››ÑÛÛÛÛÛÌû››››››› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_3/collision.bin b/graphics/trainer_hill/maps_expert/floor_3/collision.bin deleted file mode 100755 index 3d25428f1569114f61521dfb75a0b10efeaee5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 kcmZoFHg#WXcI6&M*f6*M(2iYam&WCO_n09tVcFaQ7m diff --git a/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin deleted file mode 100755 index f2200b713..000000000 --- a/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9999:;;;–ûöýööûFûööýöû›û›ûöûûûFûûûöû›ûöû›ûûFF›FFûû›ûöýöû›F66›66F›ûöýöûûF›FFÛFF›FûûööûF6F›ÛÖÛ›F6FûöûûF6›ÛÖÖÖÛ›6Fûû–››››ÖÖ–ÖÖÛ›››–ûûF6›ÛÖÖÖÛ›6FûûöûF6F›ÛÖÛ›F6FûööûûF›FFÛFF›Fûûöýöû›F66›66F›ûöýöû›ûûFF›FFûû›ûöû›ûöûûûFûûûöû›û–ûöýööûFûööýöû› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/collision.bin b/graphics/trainer_hill/maps_jp/floor_0/collision.bin deleted file mode 100755 index 817f4f54c..000000000 --- a/graphics/trainer_hill/maps_jp/floor_0/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�ÁoAcA`ADAUAUÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin deleted file mode 100755 index 8d1787efd..000000000 --- a/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -155;&&%9:;;;1++;44++43????;1++;;;44;3???;;1++55555;3???;?1+444+44;,???;;1+;5;+;5;5;???;1+;+;+;+;+;???;14;+;4;+5+;;?;;1;;4;;;444?;;;? \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_1/collision.bin b/graphics/trainer_hill/maps_jp/floor_1/collision.bin deleted file mode 100755 index 58f80b49bb1ab2c9e27f9e8c19f3cfa17b6dcdfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 bcmZo?HC#Uv;AiWLNEXT<6#hZ diff --git a/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin deleted file mode 100755 index 951723792..000000000 --- a/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;5;9&%9:;5;1;+;;+++++;;;+;1;+;;+++++>>;+;1;+;;+++++;;;+;?;+;;+++++;>>+;1;+;;++,++;;;+;1?+;;,,;,,>>;+;1;+5555;55555+;?;,,,,,;,,,,,,;1;??;55;55555551???;++5+++++++1??;;++++++++++1;;;?,,,,,,,,,, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/collision.bin b/graphics/trainer_hill/maps_normal/floor_0/collision.bin deleted file mode 100755 index 80213aaae..000000000 --- a/graphics/trainer_hill/maps_normal/floor_0/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�å?í½%„½ß!~A } ÷Aùyÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin deleted file mode 100755 index 658a5ace6..000000000 --- a/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;55&&%&:;5;1;,,,+$$$$,;;,;-;;;;+;;;;5;55;3;2!0+;2!0+;,+;35;;;,5;;;+;;+;4,;2!0+20;+20,;15;;5;,;;5,;;551,20+205;+2!0,,15;;+;;+;,;5;;;1,20+20+;20+20;1555+;;+;;5+;551+,,,20+20,,;,,1+;;5;;+;;5;;;;1,20+;;,20,20;51;;;,;;;;;;;;;, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/collision.bin b/graphics/trainer_hill/maps_normal/floor_1/collision.bin deleted file mode 100755 index fb3f6aec0..000000000 --- a/graphics/trainer_hill/maps_normal/floor_1/collision.bin +++ /dev/null @@ -1 +0,0 @@ -�ûs @ @ëQ‹S»Q‹QëQ‹Q»QPPÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin deleted file mode 100755 index 52af9cfdc..000000000 --- a/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ÑÕÕÕÙÙÅÆÎÕÛÕÑËÄÄÛÛÄÄÄÌÌÌËÛËÑËÛÛÛÛÛÛÛËÛËÑËÛÕÕÕÕÕßËÛËÑËÛËËËÄÄÛËÛËÑËÛËÛÛÄËËßÕÕËÛËÑËÛËÛÛÛËËÛÄÄËÛËÑËÛËÛÛÛËËÕÕßËÛËÑËÛËÛÛÛËËÄÄÛËÛËÑËÛËÛÛÛËËßÕÕËÛËÑËÛËÛÛÛÄÄÛÄÄÄÛËÑËÛË››››››ÛÕÕÕËÑÄÛËÛÛÛÛÛ›ÛËËËËÑÛÛËÛÛÛÛÛ›ÛËËËËÑÛÛÄÛÛÛÛÛ›ÛÄÄÄÄ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_2/collision.bin b/graphics/trainer_hill/maps_normal/floor_2/collision.bin deleted file mode 100755 index b3ccacdd4c25fee4cf227fac1346ee02b189d8c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 acmZoeskKr|x*BLe_r>jg#t diff --git a/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin deleted file mode 100755 index bf2b52c32..000000000 --- a/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1555&&8&.55;icddddqqqrdddcsicssssssssssscsicssssssssssscsicCA@ABAAJBAAcsicsssssssdssscsicACKCCABB@A@csicssdsssssssscsicA@BBAABJBABcsicsssssssdssscsicABACKAAA@CAcsicssssdsssssscsicA@CABBAJBABcsidsssssssdsssdsiCCABBACAA@BABsiBsssssssssssBs \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_3/collision.bin b/graphics/trainer_hill/maps_normal/floor_3/collision.bin deleted file mode 100755 index f4c47254c56adb7e19d0d6ed491a13178b73c526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ncmZoUbL@H$@m!0ULkk4!I2@pp3%k8wKCK(G#-c@Lu*4B1sMhZ{|5lD4+_)( diff --git a/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin deleted file mode 100755 index 66840137c..000000000 --- a/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -ñûûûùùåæîõûûíõõõûûìììëìììûûôìììûûûûûëûûûûûñõõõõõõõûëûõõõõñëìììëììûìûììììñëûûûëûõûõûûûûûñëûõûëûëûëõõõûûñëûëûëûëûëìììûûñëûëûëûëûëûõõõõñëûëûëûëûëûììììñëûëûëûëûëûûûûûñëûëûëûëûëõõõõûñìûëûìûëûìììììûñûûëûûûëûûûûûûûñûûìûûûìûûûûûûû \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_0/collision.bin b/graphics/trainer_hill/maps_variety/floor_0/collision.bin deleted file mode 100755 index 24fc2ea1e6b203d760a554f6b02de209bdeadb1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 McmZo+m diff --git a/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin deleted file mode 100755 index c5a9aa5d4..000000000 --- a/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin +++ /dev/null @@ -1 +0,0 @@ -1;;;9989:;;;‘›œ–@@–›–@@–›œ›œ›–@ÛÛ@–@ÛÛB–››‘–@ÛÛÛÛÛÛÛÛÛB–œ‘BÛÛÖÖÖÛÖÖÖÛÛB›–BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÛÖÖÖÖÖÖÖÛÛB–‘–BÛÛÖÖÖÖÖÛÛB–›‘›–BÛÛÖÖÖÛÛB–›œœ››–BÛÛÖÛÛB–›››–›››–AÛÛÛB–››œ–Ö–œ››–AÛB–›››–֖֜›œ›–@–›œ›–Öœ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_2/collision.bin b/graphics/trainer_hill/maps_variety/floor_2/collision.bin deleted file mode 100755 index 606249b2a0085c18fc9fea19f02a98713c93233a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 RcmZodata[3] = gBattleAnimArgs[3]; sprite->callback = AnimOverheatFlame_Step; for (i = 0; i < 7; i++) - sUnusedOverheatData[i] = sprite->data[i]; + gUnusedOverheatData[i] = sprite->data[i]; } static void AnimOverheatFlame_Step(struct Sprite *sprite) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index c590572b9..d460b9236 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -128,7 +128,7 @@ static void AnimHornHit_Step(struct Sprite *); static void AnimSuperFang(struct Sprite *); static void AnimWavyMusicNotes(struct Sprite *); static void AnimWavyMusicNotes_Step(struct Sprite *); -static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); static void AnimFlyingMusicNotes(struct Sprite *); static void AnimFlyingMusicNotes_Step(struct Sprite *); static void AnimBellyDrumHand(struct Sprite *); @@ -4343,7 +4343,7 @@ static void AnimLockOnTarget_Step4(struct Sprite* sprite) sprite->data[1] = 0; } - BlendPalettes(GetBattlePalettesMask(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE), sprite->data[1], RGB(31, 31, 31)); + BlendPalettes(GetBattleBgPalettesMask(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31)); if (sprite->data[1] == 16) { int pal; @@ -4998,7 +4998,7 @@ static void AnimMoonlightSparkle_Step(struct Sprite* sprite) void AnimTask_MoonlightEndFade(u8 taskId) { - int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; + int a = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; int b; int c; int d; @@ -5279,87 +5279,79 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) DestroyAnimVisualTask(taskId); } -#define sMoveTimer data[0] -#define sBlendTableIdx data[1] -#define sBlendTimer data[2] -#define sBlendCycleTime data[3] -#define sX data[4] -#define sY data[5] -#define sVelocX data[6] -#define sVelocY data[7] - static void AnimWavyMusicNotes(struct Sprite* sprite) { u8 index; - u8 x, y; + u8 a; + u8 b; SetSpriteCoordsToAnimAttackerCoords(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->sBlendTableIdx = gBattleAnimArgs[1]; - sprite->sBlendTimer = 0; - sprite->sBlendCycleTime = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; if (IsContest()) { - x = 48; - y = 40; + a = 48; + b = 40; } else { - x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->sX = sprite->x << 4; - sprite->sY = sprite->y << 4; - AnimWavyMusicNotes_CalcVelocity(x - sprite->x, y - sprite->y, &sprite->sVelocX, &sprite->sVelocY, 40); + sprite->data[4] = sprite->x << 4; + sprite->data[5] = sprite->y << 4; + AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40); sprite->callback = AnimWavyMusicNotes_Step; } -static void AnimWavyMusicNotes_CalcVelocity(s16 x, s16 y, s16* velocX, s16* velocY, s8 xSpeedFactor) +static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16* c, s16* d, s8 e) { - int x2; - int time; - if (x < 0) - xSpeedFactor = -xSpeedFactor; + int f; + int g; + if (a < 0) + e = -e; - x2 = x * 256; - time = x2 / xSpeedFactor; - if (time == 0) - time = 1; + f = a << 8; + g = f / e; + if (g == 0) + g = 1; - *velocX = x2 / time; - *velocY = (y * 256) / time; + *c = f / g; + *d = (b << 8) / g; } static void AnimWavyMusicNotes_Step(struct Sprite* sprite) { - s16 y, trigIdx; + s16 y, yDelta; u8 index; - sprite->sMoveTimer++; - trigIdx = sprite->sMoveTimer * 5 - ((sprite->sMoveTimer * 5 / 256) << 8); - sprite->sX += sprite->sVelocX; - sprite->sY += sprite->sVelocY; - sprite->x = sprite->sX >> 4; - sprite->y = sprite->sY >> 4; - sprite->y2 = Sin(trigIdx, 15); + sprite->data[0]++; + yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->x = sprite->data[4] >> 4; + sprite->y = sprite->data[5] >> 4; + sprite->y2 = Sin(yDelta, 15); y = sprite->y; - if (sprite->x < -16 || sprite->x > DISPLAY_WIDTH + 16 || y < -16 || y > DISPLAY_HEIGHT - 32) + if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128) { DestroySpriteAndMatrix(sprite); } else { - if (sprite->sBlendCycleTime && ++sprite->sBlendTimer > sprite->sBlendCycleTime) + if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) { - sprite->sBlendTimer = 0; - if (++sprite->sBlendTableIdx > (int)ARRAY_COUNT(gParticlesColorBlendTable) - 1) - sprite->sBlendTableIdx = 0; + sprite->data[2] = 0; + if (++sprite->data[1] > 3) + sprite->data[1] = 0; - index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->sBlendTableIdx][0]); + index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->data[1]][0]); if (index != 0xFF) sprite->oam.paletteNum = index; } @@ -5475,7 +5467,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) static void AnimThoughtBubble(struct Sprite* sprite) { - u8 animNum; + u8 a; u8 battler; if (gBattleAnimArgs[0] == 0) battler = gBattleAnimAttacker; @@ -5483,10 +5475,10 @@ static void AnimThoughtBubble(struct Sprite* sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = animNum + 2; - StartSpriteAnim(sprite, animNum); + sprite->data[1] = a + 2; + StartSpriteAnim(sprite, a); StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); sprite->callback = RunStoredCallbackWhenAnimEnds; } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 9764d5522..101b255df 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3116,7 +3116,7 @@ static void AnimTask_FakeOut_Step2(u8 taskId) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB(31, 31, 31)); + BlendPalettes(GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); } else if (gTasks[taskId].data[10] > 4) { diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 3b4f6729f..f73393de4 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1213,7 +1213,7 @@ void AnimTask_SmokescreenImpact(u8 taskId) SmokescreenImpact( GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, - FALSE); + 0); DestroyAnimVisualTask(taskId); } @@ -3717,26 +3717,6 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1; } -#define IDX_ACTIVE_SPRITES 2 // Used by the sprite callback to modify the number of active sprites - -// Task data for AnimTask_SquishAndSweatDroplets -#define tState data[0] -#define tTimer data[1] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -#define tNumSquishes data[3] -#define tBaseX data[4] -#define tBaseY data[5] -#define tSubpriority data[6] -// data[7]-data[15] used by PrepareAffineAnimInTaskData -#define tBattlerSpriteId data[15] - -// Sprite data for AnimFacadeSweatDrop -#define sTimer data[0] -#define sVelocX data[1] -#define sVelocY data[2] -#define sTaskId data[3] -#define sActiveSpritesIdx data[4] - // Squishes the mon vertically and emits sweat droplets a few times. // arg 0: battler // arg 1: num squishes @@ -3748,20 +3728,20 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) if (!gBattleAnimArgs[1]) DestroyAnimVisualTask(taskId); - task->tState = 0; - task->tTimer = 0; - task->tActiveSprites = 0; - task->tNumSquishes = gBattleAnimArgs[1]; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = gBattleAnimArgs[1]; if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - task->tBaseX = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); - task->tSubpriority = GetBattlerSpriteSubpriority(battler); - task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); + task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->data[6] = GetBattlerSpriteSubpriority(battler); + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); task->func = AnimTask_SquishAndSweatDroplets_Step; } @@ -3769,40 +3749,37 @@ static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - task->tTimer++; - if (task->tTimer == 6) + task->data[1]++; + if (task->data[1] == 6) CreateSweatDroplets(taskId, TRUE); - if (task->tTimer == 18) + if (task->data[1] == 18) CreateSweatDroplets(taskId, FALSE); if (!RunAffineAnimFromTaskData(task)) { - if (--task->tNumSquishes == 0) + if (--task->data[3] == 0) { - // Animation is finished - task->tState++; + task->data[0]++; } else { - // Animation continues, more droplet sprites to create - task->tTimer = 0; - PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); + task->data[1] = 0; + PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); } } break; case 1: - // Wait for sprites to be destroyed before ending task - if (task->tActiveSprites == 0) + if (task->data[2] == 0) DestroyAnimVisualTask(taskId); break; } } -static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) +static void CreateSweatDroplets(u8 taskId, bool8 arg1) { u8 i; s8 xOffset, yOffset; @@ -3811,7 +3788,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) s16 yCoords[2]; task = &gTasks[taskId]; - if (!lowerDroplets) + if (!arg1) { xOffset = 18; yOffset = -20; @@ -3822,54 +3799,39 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) yOffset = 20; } - xCoords[0] = task->tBaseX - xOffset; - xCoords[1] = task->tBaseX - xOffset - 4; - xCoords[2] = task->tBaseX + xOffset; - xCoords[3] = task->tBaseX + xOffset + 4; - yCoords[0] = task->tBaseY + yOffset; - yCoords[1] = task->tBaseY + yOffset + 6; + xCoords[0] = task->data[4] - xOffset; + xCoords[1] = task->data[4] - xOffset - 4; + xCoords[2] = task->data[4] + xOffset; + xCoords[3] = task->data[4] + xOffset + 4; + yCoords[0] = task->data[5] + yOffset; + yCoords[1] = task->data[5] + yOffset + 6; for (i = 0; i < 4; i++) { - u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->tSubpriority - 5); + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].sVelocX = i < 2 ? -2 : 2; // First two travel left, remaining travel right - gSprites[spriteId].sVelocY = -1; - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; - task->tActiveSprites++; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i < 2 ? -2 : 2; + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].data[3] = taskId; + gSprites[spriteId].data[4] = 2; + task->data[2]++; } } } static void AnimFacadeSweatDrop(struct Sprite *sprite) { - sprite->x += sprite->sVelocX; - sprite->y += sprite->sVelocY; - if (++sprite->sTimer > 6) + sprite->x += sprite->data[1]; + sprite->y += sprite->data[2]; + if (++sprite->data[0] > 6) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[3]].data[sprite->data[4]]--; DestroySprite(sprite); } } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer -#undef tActiveSprites -#undef tNumSquishes -#undef tBaseX -#undef tBaseY -#undef tSubpriority -#undef tBattlerSpriteId -#undef sTimer -#undef sVelocX -#undef sVelocY -#undef sTaskId -#undef sActiveSpritesIdx - // Blends the mon sprite's color with a rotating set of colors. // arg 0: battler // arg 1: duration @@ -3965,26 +3927,6 @@ static void AnimRoarNoiseLine_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -#define IDX_ACTIVE_SPRITES 10 // Used by the sprite callback to modify the number of active sprites - -// Task data for AnimTask_GlareEyeDots -#define tState data[0] -#define tTimer data[1] -#define tPairNum data[2] -#define tPairMax data[5] -#define tDotOffset data[6] -#define tIsContest data[7] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -#define tStartX data[11] -#define tStartY data[12] -#define tEndX data[13] -#define tEndY data[14] - -// Sprite data for AnimGlareEyeDot -#define sTimer data[0] -#define sTaskId data[1] -#define sActiveSpritesIdx data[2] - // Makes a series of dots in a trail from the attacker to the target. // arg 0: unused void AnimTask_GlareEyeDots(u8 taskId) @@ -3993,25 +3935,25 @@ void AnimTask_GlareEyeDots(u8 taskId) if (IsContest()) { - task->tPairMax = 8; - task->tDotOffset = 3; - task->tIsContest = TRUE; + task->data[5] = 8; + task->data[6] = 3; + task->data[7] = 1; } else { - task->tPairMax = 12; - task->tDotOffset = 3; - task->tIsContest = FALSE; + task->data[5] = 12; + task->data[6] = 3; + task->data[7] = 0; } if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else - task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->tStartY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->tEndX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - task->tEndY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); task->func = AnimTask_GlareEyeDots_Step; } @@ -4021,122 +3963,103 @@ static void AnimTask_GlareEyeDots_Step(u8 taskId) s16 x, y; struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - // Wait to create next pair of dots - if (++task->tTimer > 3) + if (++task->data[1] > 3) { - task->tTimer = 0; + task->data[1] = 0; GetGlareEyeDotCoords( - task->tStartX, - task->tStartY, - task->tEndX, - task->tEndY, - task->tPairMax, - task->tPairNum, + task->data[11], + task->data[12], + task->data[13], + task->data[14], + task->data[5], + task->data[2], &x, &y); - // Create dot pair for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); if (spriteId != MAX_SPRITES) { - if (!task->tIsContest) + if (task->data[7] == 0) { if (i == 0) - gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->tDotOffset; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6]; else - gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->tDotOffset; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6]; } else { if (i == 0) { - gSprites[spriteId].x2 = -task->tDotOffset; - gSprites[spriteId].y2 = task->tDotOffset; + gSprites[spriteId].x2 = -task->data[6]; + gSprites[spriteId].y2 = task->data[6]; } else { - gSprites[spriteId].x2 = task->tDotOffset; - gSprites[spriteId].y2 = -task->tDotOffset; + gSprites[spriteId].x2 = task->data[6]; + gSprites[spriteId].y2 = -task->data[6]; } } - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; - task->tActiveSprites++; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 10; + task->data[10]++; } } - if (task->tPairNum == task->tPairMax) - task->tState++; + if (task->data[2] == task->data[5]) + task->data[0]++; - task->tPairNum++; + task->data[2]++; } break; case 1: - // Wait for sprites to be destroyed before ending task - if (task->tActiveSprites == 0) + if (task->data[10] == 0) DestroyAnimVisualTask(taskId); break; } } -static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 pairMax, u8 pairNum, s16 *x, s16 *y) +static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) { int x2; int y2; - if (pairNum == 0) + if (arg5 == 0) { - *x = startX; - *y = startY; + *x = arg0; + *y = arg1; return; } - if (pairNum >= pairMax) + if (arg5 >= arg4) { - *x = endX; - *y = endY; + *x = arg2; + *y = arg3; return; } - pairMax--; - x2 = (startX << 8) + pairNum * (((endX - startX) << 8) / pairMax); - y2 = (startY << 8) + pairNum * (((endY - startY) << 8) / pairMax); + arg4--; + x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); + y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); *x = x2 >> 8; *y = y2 >> 8; } static void AnimGlareEyeDot(struct Sprite *sprite) { - if (++sprite->sTimer > 36) + if (++sprite->data[0] > 36) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[1]].data[sprite->data[2]]--; DestroySprite(sprite); } } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer -#undef tPairNum -#undef tPairMax -#undef tDotOffset -#undef tIsContest -#undef tActiveSprites -#undef tStartX -#undef tStartY -#undef tEndX -#undef tEndY -#undef sTimer -#undef sTaskId -#undef sActiveSpritesIdx - // Moves a pawprint in a straight line. // arg 0: initial x position // arg 1: initial y position diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index b523a3771..8ecb60713 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -26,18 +26,18 @@ static void AnimFireCross(struct Sprite *); static void AnimFireSpiralOutward(struct Sprite *); static void AnimFireSpiralOutward_Step1(struct Sprite *); static void AnimFireSpiralOutward_Step2(struct Sprite *); -static void AnimTask_EruptionLaunchRocks_Step(u8); -static void CreateEruptionLaunchRocks(u8, u8, u8); +static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3); static void AnimEruptionLaunchRock(struct Sprite *); -static u16 GetEruptionLaunchRockInitialYPos(u8); -static void InitEruptionLaunchRockCoordData(struct Sprite *, s16, s16); +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId); +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y); static void UpdateEruptionLaunchRockPos(struct Sprite *); static void AnimEruptionFallingRock(struct Sprite *); static void AnimEruptionFallingRock_Step(struct Sprite *); static void AnimWillOWispOrb(struct Sprite *); static void AnimWillOWispOrb_Step(struct Sprite *); static void AnimWillOWispFire(struct Sprite *); -static void AnimTask_MoveHeatWaveTargets_Step(u8); +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId); static const union AnimCmd sAnim_FireSpiralSpread_0[] = { @@ -355,7 +355,7 @@ const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate = .callback = AnimEruptionLaunchRock, }; -static const s16 sEruptionLaunchRockSpeeds[][2] = +static const s16 sEruptionLaunchRockCoords[][2] = { {-2, -5}, {-1, -1}, @@ -770,43 +770,22 @@ static void AnimFireSpiralOutward_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites - -#define tState data[0] -#define tTimer1 data[1] -#define tTimer2 data[2] -#define tTimer3 data[3] -#define tAttackerY data[4] -#define tAttackerSide data[5] -#define tActiveSprites data[IDX_ACTIVE_SPRITES] -// data[8]-data[15] used by PrepareEruptAnimTaskData / UpdateEruptAnimTask -#define tAttackerSpriteId data[15] - -#define sSpeedDelay data[0] -#define sLaunchStage data[1] -#define sX data[2] -#define sY data[3] -#define sSpeedX data[4] -#define sSpeedY data[5] -#define sTaskId data[6] -#define sActiveSpritesIdx data[7] - // Animates first stage of Eruption where the attacker squishes and launches rocks away from themself void AnimTask_EruptionLaunchRocks(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->tState = 0; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tAttackerY = gSprites[task->tAttackerSpriteId].y; - task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker); - task->tActiveSprites = 0; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = gSprites[task->data[15]].y; + task->data[5] = GetBattlerSide(gBattleAnimAttacker); + task->data[6] = 0; - PrepareBattlerSpriteForRotScale(task->tAttackerSpriteId, ST_OAM_OBJ_NORMAL); + PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); task->func = AnimTask_EruptionLaunchRocks_Step; } @@ -815,102 +794,102 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->tState) + switch (task->data[0]) { case 0: - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32); - task->tState++; + PrepareEruptAnimTaskData(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 32); + task->data[0]++; case 1: - if (++task->tTimer1 > 1) + if (++task->data[1] > 1) { - task->tTimer1 = 0; + task->data[1] = 0; - if (++task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].x2 = 3; + if (++task->data[2] & 0x1) + gSprites[task->data[15]].x2 = 3; else - gSprites[task->tAttackerSpriteId].x2 = -3; + gSprites[task->data[15]].x2 = -3; } - if (task->tAttackerSide != B_SIDE_PLAYER) + if (task->data[5] != B_SIDE_PLAYER) { - if (++task->tTimer3 > 4) + if (++task->data[3] > 4) { - task->tTimer3 = 0; - gSprites[task->tAttackerSpriteId].y++; + task->data[3] = 0; + gSprites[task->data[15]].y++; } } if(!UpdateEruptAnimTask(task)) { - SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId); - gSprites[task->tAttackerSpriteId].x2 = 0; + SetBattlerSpriteYOffsetFromYScale(task->data[15]); + gSprites[task->data[15]].x2 = 0; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; } break; case 2: - if (++task->tTimer1 > 4) + if (++task->data[1] > 4) { - if (task->tAttackerSide != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6); + if (task->data[5] != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 6); else - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6); + PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 6); - task->tTimer1 = 0; - task->tState++; + task->data[1] = 0; + task->data[0]++; } break; case 3: if (!UpdateEruptAnimTask(task)) { - CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES); - task->tState++; + CreateEruptionLaunchRocks(task->data[15], taskId, 6); + task->data[0]++; } break; case 4: - if (++task->tTimer1 > 1) + if (++task->data[1] > 1) { - task->tTimer1 = 0; + task->data[1] = 0; - if (++task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].y2 += 3; + if (++task->data[2] & 1) + gSprites[task->data[15]].y2 += 3; else - gSprites[task->tAttackerSpriteId].y2 -= 3; + gSprites[task->data[15]].y2 -= 3; } - if (++task->tTimer3 > 24) + if (++task->data[3] > 0x18) { - if (task->tAttackerSide != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8); + if (task->data[5] != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 8); else - PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8); + PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 8); - if (task->tTimer2 & 1) - gSprites[task->tAttackerSpriteId].y2 -= 3; + if (task->data[2] & 1) + gSprites[task->data[15]].y2 -= 3; - task->tTimer1 = 0; - task->tTimer2 = 0; - task->tTimer3 = 0; - task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; } break; case 5: - if (task->tAttackerSide != B_SIDE_PLAYER) - gSprites[task->tAttackerSpriteId].y--; + if (task->data[5] != B_SIDE_PLAYER) + gSprites[task->data[15]].y--; if (!UpdateEruptAnimTask(task)) { - gSprites[task->tAttackerSpriteId].y = task->tAttackerY; - ResetSpriteRotScale(task->tAttackerSpriteId); - task->tTimer2 = 0; - task->tState++; + gSprites[task->data[15]].y = task->data[4]; + ResetSpriteRotScale(task->data[15]); + task->data[2] = 0; + task->data[0]++; } break; case 6: - if (task->tActiveSprites == 0) + if (!task->data[6]) DestroyAnimVisualTask(taskId); break; default: @@ -918,7 +897,7 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) } } -static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx) +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3) { u16 i, j; s8 sign; @@ -928,12 +907,12 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId if(!GetBattlerSide(gBattleAnimAttacker)) { - x -= 12; + x -= 0xC; sign = 1; } else { - x += 16; + x += 0x10; sign = -1; } @@ -941,18 +920,18 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); - if (spriteId != MAX_SPRITES) + if (spriteId != 0x40) { gSprites[spriteId].oam.tileNum += j * 4 + 0x40; if (++j >= 5) j = 0; - InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]); - gSprites[spriteId].sTaskId = taskId; - gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx; + InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]); + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = a3; - gTasks[taskId].data[activeSpritesIdx]++; + gTasks[taskId].data[a3]++; } } } @@ -963,7 +942,7 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite) if (sprite->invisible) { - gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; + gTasks[sprite->data[6]].data[sprite->data[7]]--; DestroySprite(sprite); } } @@ -980,71 +959,46 @@ static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) return y; } -static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY) +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y) { - sprite->sSpeedDelay = 0; - sprite->sLaunchStage = 0; - sprite->sX = (u16)sprite->x * 8; - sprite->sY = (u16)sprite->y * 8; - sprite->sSpeedX = speedX * 8; - sprite->sSpeedY = speedY * 8; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = (u16)sprite->x * 8; + sprite->data[3] = (u16)sprite->y * 8; + sprite->data[4] = x * 8; + sprite->data[5] = y * 8; } static void UpdateEruptionLaunchRockPos(struct Sprite *sprite) { - int extraLaunchSpeed; - if (++sprite->sSpeedDelay > 2) + int var1; + if (++sprite->data[0] > 2) { - sprite->sSpeedDelay = 0; - ++sprite->sLaunchStage; - extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage; - sprite->sY += extraLaunchSpeed; + sprite->data[0] = 0; + ++sprite->data[1]; + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; } - sprite->sX += sprite->sSpeedX; - sprite->x = sprite->sX >> 3; - sprite->sY += sprite->sSpeedY; - sprite->y = sprite->sY >> 3; + sprite->data[2] += sprite->data[4]; + sprite->x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->y = sprite->data[3] >> 3; - if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120) + if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120) sprite->invisible = TRUE; } -#undef IDX_ACTIVE_SPRITES -#undef tState -#undef tTimer1 -#undef tTimer2 -#undef tTimer3 -#undef tAttackerY -#undef tAttackerSide -#undef tActiveSprites -#undef tAttackerSpriteId -#undef sSpeedDelay -#undef sLaunchStage -#undef sX -#undef sY -#undef sSpeedX -#undef sSpeedY -#undef sTaskId -#undef sActiveSpritesIdx - -#define sState data[0] -#define sBounceTimer data[1] -#define sBounceDir data[2] -#define sEndTimer data[3] -#define sFallDelay data[6] -#define sTargetY data[7] - static void AnimEruptionFallingRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; - sprite->sState = 0; - sprite->sBounceTimer = 0; - sprite->sBounceDir = 0; - sprite->sFallDelay = gBattleAnimArgs[2]; - sprite->sTargetY = gBattleAnimArgs[3]; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; sprite->oam.tileNum += gBattleAnimArgs[4] * 16; sprite->callback = AnimEruptionFallingRock_Step; @@ -1052,51 +1006,47 @@ static void AnimEruptionFallingRock(struct Sprite *sprite) static void AnimEruptionFallingRock_Step(struct Sprite *sprite) { - switch (sprite->sState) + switch (sprite->data[0]) { case 0: - // Wait to begin falling - if (sprite->sFallDelay != 0) + if (sprite->data[6] != 0) { - sprite->sFallDelay--; + sprite->data[6]--; return; } - sprite->sState++; + sprite->data[0]++; // fall through case 1: - // Rock is falling sprite->y += 8; - if (sprite->y >= sprite->sTargetY) + if (sprite->y >= sprite->data[7]) { - sprite->y = sprite->sTargetY; - sprite->sState++; + sprite->y = sprite->data[7]; + sprite->data[0]++; } break; case 2: - // Bounce up and down on landing spot - if (++sprite->sBounceTimer > 1) + if (++sprite->data[1] > 1) { - sprite->sBounceTimer = 0; - if ((++sprite->sBounceDir & 1) != 0) + sprite->data[1] = 0; + if ((++sprite->data[2] & 1) != 0) + { sprite->y2 = -3; + } else + { sprite->y2 = 3; + } } - if (++sprite->sEndTimer > 16) + if (++sprite->data[3] > 16) + { DestroyAnimSprite(sprite); + } break; } } -#undef sState -#undef sBounceTimer -#undef sBounceDir -#undef sEndTimer -#undef sFallDelay -#undef sTargetY - static void AnimWillOWispOrb(struct Sprite *sprite) { switch (sprite->data[0]) diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index a59e54900..02b89b965 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -653,9 +653,9 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) startLine = 0; if (position == 1) - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, 1); else - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, TRUE); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, 1); task->data[15]++; break; @@ -1004,7 +1004,7 @@ static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId) right = DISPLAY_WIDTH; top = 0; bottom = 112; - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2; } diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 2fbe858d7..a03196ee1 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -908,17 +908,13 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } -#define BG_ANIM_PAL_1 8 -#define BG_ANIM_PAL_2 9 -#define BG_ANIM_PAL_CONTEST 14 - void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { if (IsContest()) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -927,7 +923,7 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_1; + out->paletteId = 8; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; @@ -940,7 +936,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -953,7 +949,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = BG_ANIM_PAL_2; + out->paletteId = 9; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -966,21 +962,21 @@ void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battlerId) out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; if (IsContest()) { - out->paletteId = BG_ANIM_PAL_CONTEST; + out->paletteId = 14; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; } else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - out->paletteId = BG_ANIM_PAL_1; + out->paletteId = 8; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; } else { - out->paletteId = BG_ANIM_PAL_2; + out->paletteId = 9; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -1365,14 +1361,14 @@ void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static u16 ArcTan2_(s16 x, s16 y) +static u16 ArcTan2_(s16 a, s16 b) { - return ArcTan2(x, y); + return ArcTan2(a, b); } -u16 ArcTan2Neg(s16 x, s16 y) +u16 ArcTan2Neg(s16 a, s16 b) { - u16 var = ArcTan2_(x, y); + u16 var = ArcTan2_(a, b); return -var; } @@ -1405,7 +1401,7 @@ void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2) +u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7) { u32 selectedPalettes = 0; u32 shift; @@ -1413,7 +1409,7 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, if (battleBackground) { if (!IsContest()) - selectedPalettes = 0xe; // Palettes 1, 2, and 3 + selectedPalettes = 0xe; else selectedPalettes = 1 << GetBattleBgPaletteNum(); } @@ -1443,17 +1439,17 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, selectedPalettes |= 1 << shift; } } - if (anim1) + if (a6) { if (!IsContest()) - selectedPalettes |= 1 << BG_ANIM_PAL_1; + selectedPalettes |= 0x100; else - selectedPalettes |= 1 << BG_ANIM_PAL_CONTEST; + selectedPalettes |= 0x4000; } - if (anim2) + if (a7) { if (!IsContest()) - selectedPalettes |= 1 << BG_ANIM_PAL_2; + selectedPalettes |= 0x200; } return selectedPalettes; } diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index a92428f83..ebf9a588f 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -304,7 +304,7 @@ static void AnimConfusionDuck_Step(struct Sprite *sprite) // arg 4: blend color static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = TRUE; sprite->callback = AnimSimplePaletteBlend_Step; @@ -312,23 +312,23 @@ static void AnimSimplePaletteBlend(struct Sprite *sprite) // Unpacks a bitfield and returns a bitmask of its selected palettes. // Bits 0-6 of the selector parameter result in the following palettes being selected: -// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3) -// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette -// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette -// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette -// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette -// 5: F_PAL_ANIM_1, BG palette 8 (or 14, if in Contest) -// 6: F_PAL_ANIM_2, BG palette 9 -u32 UnpackSelectedBattlePalettes(s16 selector) +// 0: battle background palettes (BG palettes 1, 2, and 3) +// 1: gBattleAnimAttacker OBJ palette +// 2: gBattleAnimTarget OBJ palette +// 3: gBattleAnimAttacker partner OBJ palette +// 4: gBattleAnimTarget partner OBJ palette +// 5: BG palette 4 +// 6: BG palette 5 +u32 UnpackSelectedBattleBgPalettes(s16 selector) { - bool8 battleBackground = selector & 1; - bool8 attacker = (selector >> 1) & 1; - bool8 target = (selector >> 2) & 1; - bool8 attackerPartner = (selector >> 3) & 1; - bool8 targetPartner = (selector >> 4) & 1; - bool8 anim1 = (selector >> 5) & 1; - bool8 anim2 = (selector >> 6) & 1; - return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2); + u8 battleBackground = selector & 1; + u8 attacker = (selector >> 1) & 1; + u8 target = (selector >> 2) & 1; + u8 attackerPartner = (selector >> 3) & 1; + u8 targetPartner = (selector >> 4) & 1; + u8 arg5 = (selector >> 5) & 1; + u8 arg6 = (selector >> 6) & 1; + return GetBattleBgPalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); } static void AnimSimplePaletteBlend_Step(struct Sprite *sprite) @@ -350,7 +350,7 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = TRUE; sprite->callback = AnimComplexPaletteBlend_Step1; @@ -375,7 +375,7 @@ static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite) return; } - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -392,7 +392,7 @@ static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite) if (!gPaletteFade.active) { - selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } @@ -442,7 +442,7 @@ void AnimTask_BlendColorCycle(u8 taskId) static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gTasks[taskId].tPalSelector); BeginNormalPaletteFade( selectedPalettes, gTasks[taskId].tDelay, @@ -721,7 +721,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index aebf76cc0..a7faa7658 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -583,9 +583,9 @@ static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - bool32 ignoreOffsets = gBattleAnimArgs[3]; + int arg3 = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (!ignoreOffsets) + if (arg3 == 0) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index c7be8d41c..0819796d2 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -7,13 +7,8 @@ #include "util.h" #include "constants/battle_palace.h" -#define TAG_SMOKESCREEN 55019 - -#define PALTAG_SHADOW 55039 -#define GFXTAG_SHADOW 55129 - -static void SpriteCB_SmokescreenImpactMain(struct Sprite *); -static void SpriteCB_SmokescreenImpact(struct Sprite *); +static void SmokescreenImpact_Callback(struct Sprite *); +static void SpriteCB_DestroySprite(struct Sprite *sprite); // The below data for smokescreen starts and ends with some data that belongs to battle_gfx_sfx_util.c @@ -48,12 +43,12 @@ const u8 gBattlePalaceNatureToMoveTarget[NUM_NATURES] = static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = { - .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN + .data = gSmokescreenImpactTiles, .size = 0x180, .tag = 55019 }; static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = { - .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN + .data = gSmokescreenImpactPalette, .tag = 55019 }; static const struct OamData sOamData_SmokescreenImpact = @@ -115,18 +110,18 @@ static const union AnimCmd *const sAnims_SmokescreenImpact[] = static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate = { - .tileTag = TAG_SMOKESCREEN, - .paletteTag = TAG_SMOKESCREEN, + .tileTag = 55019, + .paletteTag = 55019, .oam = &sOamData_SmokescreenImpact, .anims = sAnims_SmokescreenImpact, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_SmokescreenImpact + .callback = SpriteCB_DestroySprite }; const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow = { - .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW + .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = 55129 }; static const struct OamData sOamData_EnemyShadow = @@ -148,8 +143,8 @@ static const struct OamData sOamData_EnemyShadow = const struct SpriteTemplate gSpriteTemplate_EnemyShadow = { - .tileTag = GFXTAG_SHADOW, - .paletteTag = PALTAG_SHADOW, + .tileTag = 55129, + .paletteTag = 55039, .oam = &sOamData_EnemyShadow, .anims = gDummySpriteAnimTable, .images = NULL, @@ -157,12 +152,7 @@ const struct SpriteTemplate gSpriteTemplate_EnemyShadow = .callback = SpriteCB_SetInvisible }; -#define sActiveSprites data[0] -#define sPersist data[1] - -#define sMainSpriteId data[0] - -u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) +u8 SmokescreenImpact(s16 x, s16 y, u8 a3) { u8 mainSpriteId; u8 spriteId1, spriteId2, spriteId3, spriteId4; @@ -174,58 +164,54 @@ u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); } - mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); + mainSpriteId = CreateInvisibleSpriteWithCallback(SmokescreenImpact_Callback); mainSprite = &gSprites[mainSpriteId]; - mainSprite->sPersist = persist; + mainSprite->data[1] = a3; - // Top left sprite spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); - gSprites[spriteId1].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId1].data[0] = mainSpriteId; + mainSprite->data[0]++; AnimateSprite(&gSprites[spriteId1]); - // Top right sprite spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2); - gSprites[spriteId2].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId2].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId2], 1); AnimateSprite(&gSprites[spriteId2]); - // Bottom left sprite spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2); - gSprites[spriteId3].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId3].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId3], 2); AnimateSprite(&gSprites[spriteId3]); - // Bottom right sprite spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2); - gSprites[spriteId4].sMainSpriteId = mainSpriteId; - mainSprite->sActiveSprites++; + gSprites[spriteId4].data[0] = mainSpriteId; + mainSprite->data[0]++; StartSpriteAnim(&gSprites[spriteId4], 3); AnimateSprite(&gSprites[spriteId4]); return mainSpriteId; } -static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite) +static void SmokescreenImpact_Callback(struct Sprite *sprite) { - if (sprite->sActiveSprites == 0) + if (!sprite->data[0]) { FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag); FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag); - if (!sprite->sPersist) + if (!sprite->data[1]) DestroySprite(sprite); else sprite->callback = SpriteCallbackDummy; } } -static void SpriteCB_SmokescreenImpact(struct Sprite *sprite) +static void SpriteCB_DestroySprite(struct Sprite *sprite) { if (sprite->animEnded) { - gSprites[sprite->sMainSpriteId].sActiveSprites--; + gSprites[sprite->data[0]].data[0]--; DestroySprite(sprite); } } diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index f329ea210..6b14d3863 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -135,12 +135,10 @@ void SoundTask_PlayCryHighPitch(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - // Destroying the task twice (here and at end of function) - // results in an incorrect value for gAnimVisualTaskCount - #ifndef BUGFIX + #ifndef UBFIX else - DestroyAnimVisualTask(taskId); - #endif + DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. + #endif } else { @@ -183,12 +181,10 @@ void SoundTask_PlayDoubleCry(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - // Destroying the task twice (here and at end of function) - // results in an incorrect value for gAnimVisualTaskCount - #ifndef BUGFIX + #ifndef UBFIX else - DestroyAnimVisualTask(taskId); - #endif + DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. + #endif } else { diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index f56d04ccd..9be3d65dc 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -248,7 +248,7 @@ static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] = {ARRAY_COUNT(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites}, }; -static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate = +static const struct SpriteTemplate gFrozenIceCubeSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CUBE, .paletteTag = ANIM_TAG_ICE_CUBE, @@ -389,7 +389,7 @@ void AnimTask_FrozenIceCube(u8 taskId) x -= 6; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); - spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4); + spriteId = CreateSprite(&gFrozenIceCubeSpriteTemplate, x, y, 4); if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) gSprites[spriteId].invisible = TRUE; SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable); @@ -549,7 +549,7 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) gBattleAnimAttacker = battlerId; gBattleAnimTarget = battlerId; - LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, FALSE); + LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, 0); taskId = CreateTask(Task_DoStatusAnimation, 10); gTasks[taskId].data[0] = battlerId; } diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index 2f095a043..bf95a319c 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -690,7 +690,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); gTasks[taskId].data[11] = LaunchBallFadeMonTask(FALSE, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; @@ -2018,24 +2018,24 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) #define tPaletteHi data[11] #define tBallId data[15] -u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId) +u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) { u8 taskId; taskId = CreateTask(Task_FadeMon_ToBallColor, 5); gTasks[taskId].tBallId = ballId; - gTasks[taskId].tPalOffset = spritePalNum; + gTasks[taskId].tPalOffset = battler; gTasks[taskId].tPaletteLo = selectedPalettes; gTasks[taskId].tPaletteHi = selectedPalettes >> 16; if (!unfadeLater) { - BlendPalette(spritePalNum * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); + BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); gTasks[taskId].tdCoeff = 1; } else { - BlendPalette(spritePalNum * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); + BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff = 16; gTasks[taskId].tdCoeff = -1; gTasks[taskId].func = Task_FadeMon_ToNormal; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index b5455a19c..e2c674c57 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -47,7 +47,7 @@ const u8 gBattleAnimBgCntGet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFS void AnimTask_BlendBattleAnimPal(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); selectedPalettes |= GetBattleMonSpritePalettesMask((gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, @@ -62,7 +62,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattlePalettes(F_PAL_BG); + selectedPalettes = UnpackSelectedBattleBgPalettes(1); switch (gBattleAnimArgs[0]) { case 2: @@ -105,7 +105,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -594,7 +594,8 @@ static void StatsChangeAnimation_Step3(u8 taskId) if (gTasks[taskId].data[6] == 1) gSprites[gTasks[taskId].data[7]].oam.priority++; - FREE_AND_SET_NULL(sAnimStatsChangeData); + Free(sAnimStatsChangeData); + sAnimStatsChangeData = NULL; DestroyAnimVisualTask(taskId); break; } @@ -606,7 +607,7 @@ void AnimTask_Flash(u8 taskId) SetPalettesToColor(selectedPalettes, RGB_BLACK); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; SetPalettesToColor(selectedPalettes, RGB_WHITEALPHA); gTasks[taskId].data[15] = selectedPalettes; @@ -922,7 +923,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -949,7 +950,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -976,7 +977,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); + selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; diff --git a/src/battle_bg.c b/src/battle_bg.c index ed32c009c..f739a002f 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -159,7 +159,7 @@ const struct BgTemplate gBattleBgTemplates[] = }, }; -static const struct WindowTemplate sStandardBattleWindowTemplates[] = +static const struct WindowTemplate gStandardBattleWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -380,7 +380,7 @@ static const struct WindowTemplate sStandardBattleWindowTemplates[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sBattleArenaWindowTemplates[] = +static const struct WindowTemplate gBattleArenaWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -594,8 +594,8 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] = const struct WindowTemplate * const gBattleWindowTemplates[] = { - [B_WIN_TYPE_NORMAL] = sStandardBattleWindowTemplates, - [B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates, + [B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates, + [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates, }; static const struct BattleBackground sBattleTerrainTable[] = diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 954192f0a..5b69030df 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -96,8 +96,8 @@ static void PlayerCmdEnd(void); static void PlayerBufferRunCommand(void); static void HandleInputChooseTarget(void); static void HandleInputChooseMove(void); -static void MoveSelectionCreateCursorAt(u8, u8); -static void MoveSelectionDestroyCursorAt(u8); +static void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1); +static void MoveSelectionDestroyCursorAt(u8 cursorPos); static void MoveSelectionDisplayPpNumber(void); static void MoveSelectionDisplayPpString(void); static void MoveSelectionDisplayMoveType(void); @@ -106,18 +106,18 @@ static void HandleMoveSwitching(void); static void SwitchIn_HandleSoundAndEnd(void); static void WaitForMonSelection(void); static void CompleteWhenChoseItem(void); -static void Task_LaunchLvlUpAnim(u8); -static void Task_PrepareToGiveExpWithExpBar(u8); -static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8); -static void Task_GiveExpWithExpBar(u8); -static void Task_UpdateLvlInHealthbox(u8); +static void Task_LaunchLvlUpAnim(u8 taskId); +static void Task_PrepareToGiveExpWithExpBar(u8 taskId); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); +static void Task_GiveExpWithExpBar(u8 taskId); +static void Task_UpdateLvlInHealthbox(u8 taskId); static void PrintLinkStandbyMsg(void); -static u32 CopyPlayerMonData(u8, u8 *); -static void SetPlayerMonData(u8); -static void StartSendOutAnim(u8, bool8); +static u32 CopyPlayerMonData(u8 monId, u8 *dst); +static void SetPlayerMonData(u8 monId); +static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit); static void DoSwitchOutAnimation(void); static void PlayerDoMoveAnimation(void); -static void Task_StartSendOutAnim(u8); +static void Task_StartSendOutAnim(u8 taskId); static void EndDrawPartyStatusSummary(void); static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = @@ -1507,11 +1507,11 @@ static void MoveSelectionDisplayMoveType(void) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } -static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) +static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) { u16 src[2]; - src[0] = baseTileNum + 1; - src[1] = baseTileNum + 2; + src[0] = arg1 + 1; + src[1] = arg1 + 2; CopyToBgTilemapBufferRect_ChangePalette(0, src, 9 * (cursorPosition & 1) + 1, 55 + (cursorPosition & 2), 1, 2, 0x11); CopyBgTilemapBufferToVram(0); @@ -1527,7 +1527,7 @@ static void MoveSelectionDestroyCursorAt(u8 cursorPosition) CopyBgTilemapBufferToVram(0); } -void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) +void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) { u16 src[2]; src[0] = 1; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 369f735f2..7d2717e2c 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1168,13 +1168,13 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); } -void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder) +void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1) { s32 i; sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; - for (i = 0; i < PARTY_SIZE / 2; i++) - sBattleBuffersTransferData[1 + i] = battlePartyOrder[i]; + for (i = 0; i < 3; i++) + sBattleBuffersTransferData[1 + i] = arg1[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1309,12 +1309,12 @@ void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); } -void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16) +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2) { sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES; - sBattleBuffersTransferData[1] = ret8; - sBattleBuffersTransferData[2] = ret16; - sBattleBuffersTransferData[3] = (ret16 & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = arg2; + sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1329,20 +1329,20 @@ void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battleP PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); } -void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret) +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE; - sBattleBuffersTransferData[1] = ret; - sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = arg1; + sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret) +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE; - sBattleBuffersTransferData[1] = ret; - sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = b; + sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } diff --git a/src/battle_dome.c b/src/battle_dome.c index cbd9d0b6b..aadd85afd 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -73,43 +73,40 @@ struct TourneyTreeLineSection #define tMode data[2] #define tPrevTaskId data[3] -#define EFFECTIVENESS_MODE_GOOD 0 -#define EFFECTIVENESS_MODE_BAD 1 -#define EFFECTIVENESS_MODE_AI_VS_AI 2 - -static u8 GetDomeTrainerMonIvs(u16); -static void SwapDomeTrainers(int, int, u16 *); -static void CalcDomeMonStats(u16, int, int, u8, u8, int *); -static void CreateDomeOpponentMons(u16); -static int SelectOpponentMons_Good(u16, bool8); -static int SelectOpponentMons_Bad(u16, bool8); -static int GetTypeEffectivenessPoints(int, int, int); -static int SelectOpponentMonsFromParty(int *, bool8); -static void Task_ShowTourneyInfoCard(u8); -static void Task_HandleInfoCardInput(u8); -static u8 Task_GetInfoCardInput(u8); +// This file's functions. +static u8 GetDomeTrainerMonIvs(u16 trainerId); +static void SwapDomeTrainers(int id1, int id2, u16 *statsArray); +static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats); +static void CreateDomeOpponentMons(u16 tournamentTrainerId); +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 arg1); +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 arg1); +static int GetTypeEffectivenessPoints(int move, int species, int arg2); +static int SelectOpponentMonsFromParty(int *arr, bool8 arg1); +static void Task_ShowTourneyInfoCard(u8 taskId); +static void Task_HandleInfoCardInput(u8 taskId); +static u8 Task_GetInfoCardInput(u8 taskId); static void SetFacilityTrainerAndMonPtrs(void); -static int TrainerIdToTournamentId(u16); +static int TrainerIdToTournamentId(u16 trainerId); static u16 TrainerIdOfPlayerOpponent(void); -static void Task_ShowTourneyTree(u8); -static void Task_HandleStaticTourneyTreeInput(u8); +static void Task_ShowTourneyTree(u8 taskId); +static void Task_HandleStaticTourneyTreeInput(u8 taskId); static void CB2_TourneyTree(void); static void VblankCb_TourneyInfoCard(void); -static void DisplayMatchInfoOnCard(u8, u8); -static void DisplayTrainerInfoOnCard(u8, u8); +static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId); static int BufferDomeWinString(u8, u8*); static u8 GetDomeBrainTrainerPicId(void); static u8 GetDomeBrainTrainerClass(void); -static void CopyDomeBrainTrainerName(u8 *); -static void CopyDomeTrainerName(u8 *, u16); +static void CopyDomeBrainTrainerName(u8 *str); +static void CopyDomeTrainerName(u8 *str, u16 trainerId); static void HblankCb_TourneyTree(void); static void VblankCb_TourneyTree(void); -static u8 UpdateTourneyTreeCursor(u8); -static void DecideRoundWinners(u8); -static u8 GetOpposingNPCTournamentIdByRound(u8, u8); +static u8 UpdateTourneyTreeCursor(u8 taskId); +static void DecideRoundWinners(u8 roundId); +static u8 GetOpposingNPCTournamentIdByRound(u8 tournamentId, u8); static void DrawTourneyAdvancementLine(u8, u8); -static void SpriteCb_HorizontalScrollArrow(struct Sprite *); -static void SpriteCb_VerticalScrollArrow(struct Sprite *); +static void SpriteCb_HorizontalScrollArrow(struct Sprite *sprite); +static void SpriteCb_VerticalScrollArrow(struct Sprite *sprite); static void InitDomeChallenge(void); static void GetDomeData(void); static void SetDomeData(void); @@ -133,6 +130,7 @@ static void BufferLastDomeWinnerName(void); static void InitRandomTourneyTreeResults(void); static void InitDomeTrainers(void); +// EWRAM variables. EWRAM_DATA u32 gPlayerPartyLostHP = 0; // never read static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; @@ -2082,6 +2080,7 @@ static const u8 sTourneyTreeLineSectionArrayCounts[DOME_TOURNAMENT_TRAINERS_COUN {ARRAY_COUNT(sLineSectionTrainer16Round1), ARRAY_COUNT(sLineSectionTrainer16Round2), ARRAY_COUNT(sLineSectionTrainer16Semifinal), ARRAY_COUNT(sLineSectionTrainer16Final)}, }; +// code void CallBattleDomeFunction(void) { sBattleDomeFunctions[gSpecialVar_0x8004](); @@ -2593,33 +2592,28 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId) } } -// Returns a bitmask representing which 2 of the trainer's 3 pokemon to select. -// The choice is calculated solely depending on the type effectiveness of their -// movesets against the player's pokemon. -// There is a 50% chance of either a "good" or "bad" selection mode being used. -// In the good mode movesets are preferred which are more effective against the -// player, and in the bad mode the opposite is true. If all 3 pokemon tie, the -// other mode will be tried. If they tie again, the pokemon selection is random. int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { int selectedMonBits; if (Random() & 1) { - selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, TRUE); } else { - selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, TRUE); } return selectedMonBits; } -static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) +// Could probably use a better name once GetTypeEffectivenessPoints is clarified +// Personality seems to be used to select a different weighting system for type effectiveness points +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2634,12 +2628,12 @@ static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } } } @@ -2647,8 +2641,8 @@ static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -// Identical to function above, but uses EFFECTIVENESS_MODE_BAD -static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom) +// See above function, identical but uses MON_DATA_OT_ID +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2663,12 +2657,12 @@ static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom) if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } } } @@ -2741,7 +2735,7 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) #define TYPE_x2 40 #define TYPE_x4 80 -static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) +static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) { int defType1, defType2, defAbility, moveType; int i = 0; @@ -2757,20 +2751,11 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) { - // They likely meant to return here, as 8 is the number of points normally used in this mode for moves with no effect. - // Because there's no return the value instead gets interpreted by the switch, and the number of points becomes 0. - if (mode == EFFECTIVENESS_MODE_BAD) - { + if (arg2 == 1) typePower = 8; - #ifdef BUGFIX - return; - #endif - } } else { - // Calculate a "type power" value to determine the benefit of using this type move against the target. - // This value will then be used to get the number of points to assign to the move. while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) @@ -2782,30 +2767,33 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) { // BUG: the value of TYPE_x2 does not exist in gTypeEffectiveness, so if defAbility is ABILITY_WONDER_GUARD, the conditional always fails #ifndef BUGFIX - #define WONDER_GUARD_EFFECTIVENESS TYPE_x2 - #else - #define WONDER_GUARD_EFFECTIVENESS TYPE_MUL_SUPER_EFFECTIVE - #endif if (TYPE_EFFECT_DEF_TYPE(i) == defType1) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + #else + if (TYPE_EFFECT_DEF_TYPE(i) == defType1) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + #endif } i += 3; } } - switch (mode) + switch (arg2) { - case EFFECTIVENESS_MODE_GOOD: - // Weights moves that more effective. + case 0: switch (typePower) { - case TYPE_x0: - case TYPE_x0_25: case TYPE_x0_50: + case TYPE_x0_25: + case TYPE_x0: default: typePower = 0; break; @@ -2820,24 +2808,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) break; } break; - case EFFECTIVENESS_MODE_BAD: - // Weights moves that are less effective. - // Odd that there's no limit on this being used, even the Frontier Brain could end up using this. + case 1: switch (typePower) { - case TYPE_x0: - typePower = 8; + default: + case TYPE_x1: + typePower = 0; break; case TYPE_x0_25: typePower = 4; break; + case TYPE_x0: + typePower = 8; + break; case TYPE_x0_50: typePower = 2; break; - default: - case TYPE_x1: - typePower = 0; - break; case TYPE_x2: typePower = -2; break; @@ -2846,9 +2832,7 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) break; } break; - case EFFECTIVENESS_MODE_AI_VS_AI: - // Used as part of calculating the winner in a battle between two AIs. - // Weights moves that are more effective much more strongly in both directions. + case 2: switch (typePower) { case TYPE_x0: @@ -5863,7 +5847,7 @@ static void InitRandomTourneyTreeResults(void) DOME_TRAINERS[i].forfeited = FALSE; } - monLevel = FRONTIER_MAX_LEVEL_50; + monLevel = 50; for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { monTypesBits = 0; @@ -6006,7 +5990,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); + gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, 2); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; @@ -6029,7 +6013,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); + gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, 2); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; diff --git a/src/battle_factory.c b/src/battle_factory.c index a68ef8180..d88ed37f9 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -12,15 +12,15 @@ #include "constants/battle_factory.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" -#include "constants/battle_tent.h" #include "constants/frontier_util.h" #include "constants/layouts.h" #include "constants/trainers.h" #include "constants/moves.h" -#include "constants/items.h" +// IWRAM bss static bool8 sPerformedRentalSwap; +// This file's functions. static void InitFactoryChallenge(void); static void GetBattleFactoryData(void); static void SetBattleFactoryData(void); @@ -212,7 +212,7 @@ static void InitFactoryChallenge(void) } sPerformedRentalSwap = FALSE; - for (i = 0; i < ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); i++) + for (i = 0; i < 6; i++) gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) gFrontierTempParty[i] = 0xFFFF; @@ -310,12 +310,11 @@ static void GenerateOpponentMons(void) u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u32 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; - u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + u32 challengeNum = winStreak / 7; gFacilityTrainers = gBattleFrontierTrainers; do { - // Choose a random trainer, ensuring no repeats in this challenge trainerId = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -325,32 +324,27 @@ static void GenerateOpponentMons(void) } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum); gTrainerBattleOpponent_A = trainerId; - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId; i = 0; while (i != FRONTIER_PARTY_SIZE) { u16 monId = GetFactoryMonId(lvlMode, challengeNum, FALSE); - - // Unown (FRONTIER_MON_UNOWN) is forbidden on opponent Factory teams. if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + for (j = 0; j < 6; j++) { if (gFacilityTrainerMons[monId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; - // "High tier" pokemon are only allowed on open level mode if (lvlMode == FRONTIER_LVL_50 && monId > FRONTIER_MONS_HIGH_TIER) continue; - // Ensure this species hasn't already been chosen for the opponent for (k = firstMonId; k < firstMonId + i; k++) { if (species[k] == gFacilityTrainerMons[monId].species) @@ -359,16 +353,14 @@ static void GenerateOpponentMons(void) if (k != firstMonId + i) continue; - // Ensure held items don't repeat on the opponent's team for (k = firstMonId; k < firstMonId + i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != firstMonId + i) continue; - // Successful selection species[i] = gFacilityTrainerMons[monId].species; heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; gFrontierTempParty[i] = monId; @@ -414,15 +406,15 @@ static void SetPlayerAndOpponentParties(void) if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT) { gFacilityTrainerMons = gSlateportBattleTentMons; - monLevel = TENT_MIN_LEVEL; + monLevel = 30; } else { gFacilityTrainerMons = gBattleFrontierMons; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - monLevel = FRONTIER_MAX_LEVEL_OPEN; + monLevel = 100; else - monLevel = FRONTIER_MAX_LEVEL_50; + monLevel = 50; } if (gSpecialVar_0x8005 < 2) @@ -626,9 +618,9 @@ static void GetOpponentMostCommonMonType(void) // Determine which are the two most-common types. // The second most-common type is only updated if // its count is equal to the most-common type. - mostCommonTypes[0] = 0; - mostCommonTypes[1] = 0; - for (i = 1; i < NUMBER_OF_MON_TYPES; i++) + mostCommonTypes[0] = TYPE_NORMAL; + mostCommonTypes[1] = TYPE_NORMAL; + for (i = TYPE_FIGHTING; i < NUMBER_OF_MON_TYPES; i++) { if (typeCounts[mostCommonTypes[0]] < typeCounts[i]) mostCommonTypes[0] = i; @@ -773,15 +765,15 @@ void FillFactoryBrainParty(void) if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - if (monLevel == FRONTIER_MAX_LEVEL_50 && monId > FRONTIER_MONS_HIGH_TIER) + if (monLevel == 50 && monId > FRONTIER_MONS_HIGH_TIER) continue; - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + for (j = 0; j < 6; j++) { if (monId == gSaveBlock2Ptr->frontier.rentalMons[j].monId) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; for (k = 0; k < i; k++) @@ -794,7 +786,7 @@ void FillFactoryBrainParty(void) for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != i) diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 14c63b7b8..787dc4740 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1131,7 +1131,8 @@ static void CB2_InitSelectScreen(void) switch (gMain.state) { case 0: - TRY_FREE_AND_SET_NULL(sFactorySelectMons); + if (sFactorySelectMons != NULL) + FREE_AND_SET_NULL(sFactorySelectMons); SetHBlankCallback(NULL); SetVBlankCallback(NULL); CpuFill32(0, (void *)VRAM, VRAM_SIZE); @@ -4220,12 +4221,17 @@ static void Task_OpenMonPic(u8 taskId) return; break; default: + #ifndef UBFIX DestroyTask(taskId); - // Accessing data of destroyed task. Task data isn't reset until a new task needs that task id. + #endif + // UB: Should not use the task after it has been deleted. if (gTasks[taskId].tIsSwapScreen == TRUE) Swap_CreateMonSprite(); else Select_CreateMonSprite(); + #ifdef UBFIX + DestroyTask(taskId); + #endif return; } task->tState++; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index d547dec0f..2a690d129 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -353,12 +353,12 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) } } -static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless) +static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1) { sprite->animPaused = TRUE; sprite->callback = SpriteCallbackDummy; - if (!pointless) + if (!arg1) StartSpriteAffineAnim(sprite, 1); else StartSpriteAffineAnim(sprite, 1); @@ -590,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -653,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -783,7 +783,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) return retVal; } -void LoadBattleBarGfx(u8 unused) +void LoadBattleBarGfx(u8 arg0) { LZDecompressWram(gBattleInterfaceGfx_BattleBar, gMonSpritesGfxPtr->barFontGfx); } @@ -973,7 +973,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform) if (targetSpecies == SPECIES_CASTFORM) { gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies]; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32); } diff --git a/src/battle_interface.c b/src/battle_interface.c index dbcab4a9c..26209fe2d 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -158,36 +158,36 @@ enum HEALTHBOX_GFX_FRAME_END_BAR, }; -static const u8 *GetHealthboxElementGfxPtr(u8); -static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *, u32, u32, u32, u32 *); +static const u8 *GetHealthboxElementGfxPtr(u8 elementId); +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId); static void RemoveWindowOnHealthbox(u32 windowId); -static void UpdateHpTextInHealthboxInDoubles(u8, s16, u8); -static void UpdateStatusIconInHealthbox(u8); +static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); -static void TextIntoHealthboxObject(void *, u8 *, s32); -static void SafariTextIntoHealthboxObject(void *, u8 *, u32); -static void HpTextIntoHealthboxObject(void *, u8 *, u32); -static void FillHealthboxObject(void *, u32, u32); +static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth); +static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); +static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); +static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2); -static void Task_HidePartyStatusSummary_BattleStart_1(u8); -static void Task_HidePartyStatusSummary_BattleStart_2(u8); -static void Task_HidePartyStatusSummary_DuringBattle(u8); +static void Task_HidePartyStatusSummary_BattleStart_1(u8 taskId); +static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId); +static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId); -static void SpriteCB_HealthBoxOther(struct Sprite *); -static void SpriteCB_HealthBar(struct Sprite *); -static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *); -static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *); -static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *); +static void SpriteCB_HealthBoxOther(struct Sprite *sprite); +static void SpriteCB_HealthBar(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *sprite); +static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *sprite); -static u8 GetStatusIconForBattlerId(u8, u8); -static s32 CalcNewBarValue(s32, s32, s32, s32 *, u8, u16); -static u8 GetScaledExpFraction(s32, s32, s32, u8); -static void MoveBattleBarGraphically(u8, u8); -static u8 CalcBarFilledPixels(s32, s32, s32, s32 *, u8 *, u8); -static void Debug_TestHealthBar_Helper(struct TestingBar *, s32 *, u16 *); +static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId); +static s32 CalcNewBarValue(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5); +static u8 GetScaledExpFraction(s32 currValue, s32 receivedValue, s32 maxValue, u8 scale); +static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar); +static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale); +static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *arg1, u16 *arg2); static const struct OamData sOamData_64x32 = { @@ -814,11 +814,11 @@ static void Debug_DrawNumber(s16 number, u16 *dest, bool8 unk) } // Unused -static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *dest) +static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *arg2) { - dest[4] = 0x1E; - Debug_DrawNumber(number2, dest, FALSE); - Debug_DrawNumber(number1, dest + 5, TRUE); + arg2[4] = 0x1E; + Debug_DrawNumber(number2, arg2, 0); + Debug_DrawNumber(number1, arg2 + 5, 1); } // Because the healthbox is too large to fit into one sprite, it is divided into two sprites. @@ -1420,7 +1420,7 @@ void SwapHpBarsWithHpText(void) #define tIsBattleStart data[10] #define tBlend data[15] -u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart) +u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) { bool8 isOpponent; s16 bar_X, bar_Y, bar_pos2_X, bar_data0; @@ -1429,7 +1429,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 ballIconSpritesIds[PARTY_SIZE]; u8 taskId; - if (!skipPlayer || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) + if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { @@ -1442,7 +1442,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { isOpponent = TRUE; - if (!skipPlayer || !IsDoubleBattle()) + if (!arg2 || !IsDoubleBattle()) bar_X = 104, bar_Y = 40; else bar_X = 104, bar_Y = 16; @@ -2383,7 +2383,7 @@ static s32 CalcNewBarValue(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *c return ret; } -static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *pixelsArray, u8 scale) +static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale) { u8 pixels, filledPixels, totalPixels; u8 i; @@ -2397,7 +2397,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 totalPixels = scale * 8; for (i = 0; i < scale; i++) - pixelsArray[i] = 0; + arg4[i] = 0; if (maxValue < totalPixels) pixels = (*currValue * totalPixels / maxValue) >> 8; @@ -2408,7 +2408,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 if (filledPixels == 0 && newValue > 0) { - pixelsArray[0] = 1; + arg4[0] = 1; filledPixels = 1; } else @@ -2417,11 +2417,11 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 { if (pixels >= 8) { - pixelsArray[i] = 8; + arg4[i] = 8; } else { - pixelsArray[i] = pixels; + arg4[i] = pixels; break; } pixels -= 8; @@ -2433,7 +2433,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 // Unused // These two functions seem as if they were made for testing the health bar. -static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *dest, s32 unused) +static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *arg2, s32 arg3) { s16 ret, var; @@ -2441,31 +2441,31 @@ static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 * barInfo->oldValue, barInfo->receivedValue, currValue, B_HEALTHBAR_PIXELS / 8, 1); - Debug_TestHealthBar_Helper(barInfo, currValue, dest); + Debug_TestHealthBar_Helper(barInfo, currValue, arg2); if (barInfo->maxValue < B_HEALTHBAR_PIXELS) var = *currValue >> 8; else var = *currValue; - DummiedOutFunction(barInfo->maxValue, var, unused); + DummiedOutFunction(barInfo->maxValue, var, arg3); return ret; } -static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *dest) +static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *arg2) { - u8 pixels[6]; - u16 src[6]; + u8 sp8[6]; + u16 sp10[6]; u8 i; CalcBarFilledPixels(barInfo->maxValue, barInfo->oldValue, - barInfo->receivedValue, currValue, pixels, B_HEALTHBAR_PIXELS / 8); + barInfo->receivedValue, currValue, sp8, B_HEALTHBAR_PIXELS / 8); for (i = 0; i < 6; i++) - src[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + pixels[i]); + sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]); - CpuCopy16(src, dest, sizeof(src)); + CpuCopy16(sp10, arg2, sizeof(sp10)); } static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 scale) @@ -2546,9 +2546,9 @@ static void RemoveWindowOnHealthbox(u32 windowId) RemoveWindow(windowId); } -static void FillHealthboxObject(void *dest, u32 valMult, u32 numTiles) +static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2) { - CpuFill32(0x11111111 * valMult, dest, numTiles * TILE_SIZE_4BPP); + CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP); } static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth) diff --git a/src/battle_main.c b/src/battle_main.c index f61d5eaae..9a0de4199 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1498,7 +1498,8 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } } else if (gReceivedRemoteLinkPlayers == 0) @@ -1506,7 +1507,8 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } break; } @@ -1542,7 +1544,8 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); + Free(sMultiPartnerPartyBuffer); + sMultiPartnerPartyBuffer = NULL; } break; } @@ -5206,6 +5209,12 @@ static void ReturnFromBattleToOverworld(void) m4aSongNumStop(SE_LOW_HEALTH); SetMainCallback2(gMain.savedCallback); + + // if you experience the follower de-syncing with the player after battle, set POST_BATTLE_FOLLOWER_FIX to TRUE in include/constants/global.h + #if POST_BATTLE_FOLLOWER_FIX + FollowMe_WarpSetEnd(); + gObjectEvents[GetFollowerObjectId()].invisible = TRUE; + #endif } void RunBattleScriptCommands_PopCallbacksStack(void) diff --git a/src/battle_message.c b/src/battle_message.c index 2776c952b..9d1b88ba7 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1035,7 +1035,7 @@ const u16 gFirstTurnOfTwoStringIds[] = }; // Index copied from move's index in gTrappingMoves -const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] = +const u16 gWrappedStringIds[] = { STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP @@ -1253,7 +1253,7 @@ const u16 gCaughtMonStringIds[] = [B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL, }; -const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = +const u16 gTrappingMoves[] = { MOVE_BIND, MOVE_WRAP, @@ -1261,7 +1261,7 @@ const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, - 0xFFFF // Never read + 0xFFFF }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); diff --git a/src/battle_pike.c b/src/battle_pike.c index 433dd0a08..dcdabb5dc 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -573,7 +573,7 @@ static void SetupRoomObjectEvents(void) objGfx1 = OBJ_EVENT_GFX_LINK_RECEPTIONIST; break; case PIKE_ROOM_NPC: - objGfx1 = (u8)(GetNPCRoomGraphicsId()); + objGfx1 = (u16)(GetNPCRoomGraphicsId()); break; case PIKE_ROOM_STATUS: objGfx1 = OBJ_EVENT_GFX_GENTLEMAN; @@ -684,7 +684,7 @@ static void SetBattlePikeData(void) static void IsNextRoomFinal(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > 14) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; @@ -1117,20 +1117,20 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate) if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) { monLevel = GetHighestLevelInPlayerParty(); - if (monLevel < FRONTIER_MIN_LEVEL_OPEN) + if (monLevel < 60) { - monLevel = FRONTIER_MIN_LEVEL_OPEN; + monLevel = 60; } else { monLevel -= wildMons[headerId][pikeMonId].levelDelta; - if (monLevel < FRONTIER_MIN_LEVEL_OPEN) - monLevel = FRONTIER_MIN_LEVEL_OPEN; + if (monLevel < 60) + monLevel = 60; } } else { - monLevel = FRONTIER_MAX_LEVEL_50 - wildMons[headerId][pikeMonId].levelDelta; + monLevel = 50 - wildMons[headerId][pikeMonId].levelDelta; } if (checkKeenEyeIntimidate == TRUE && !CanEncounterWildMon(monLevel)) @@ -1158,11 +1158,11 @@ u8 GetBattlePikeWildMonHeaderId(void) u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; - if (winStreak <= 20 * NUM_PIKE_ROOMS) + if (winStreak <= 280) headerId = 0; - else if (winStreak <= 40 * NUM_PIKE_ROOMS) + else if (winStreak <= 560) headerId = 1; - else if (winStreak <= 60 * NUM_PIKE_ROOMS) + else if (winStreak <= 840) headerId = 2; else headerId = 3; @@ -1392,10 +1392,10 @@ static void PrepareOneTrainer(bool8 difficult) if (!difficult) battleNum = 1; else - battleNum = FRONTIER_STAGES_PER_CHALLENGE - 1; + battleNum = 6; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; do { trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); @@ -1409,7 +1409,7 @@ static void PrepareOneTrainer(bool8 difficult) gTrainerBattleOpponent_A = trainerId; gFacilityTrainers = gBattleFrontierTrainers; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; } @@ -1418,7 +1418,7 @@ static void PrepareTwoTrainers(void) int i; u16 trainerId; u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; gFacilityTrainers = gBattleFrontierTrainers; do @@ -1433,7 +1433,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; do @@ -1448,7 +1448,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_B = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B; } @@ -1456,7 +1456,7 @@ static void ClearPikeTrainerIds(void) { u8 i; - for (i = 0; i < NUM_PIKE_ROOMS; i++) + for (i = 0; i < 14; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index a885f1c8e..9039f60f2 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -83,18 +83,18 @@ static void ClearPyramidPartyHeldItems(void); static void SetPyramidFloorPalette(void); static void BattlePyramidStartMenu(void); static void RestorePyramidPlayerParty(void); -static void InitPyramidBagItems(u8); +static void InitPyramidBagItems(u8 lvlMode); static u8 GetPyramidFloorTemplateId(void); static u8 GetPostBattleDirectionHintTextIndex(int *, u8, u8); -static void Task_SetPyramidFloorPalette(u8); -static void MarkPyramidTrainerAsBattled(u16); -static void GetPyramidFloorLayoutOffsets(u8 *); +static void Task_SetPyramidFloorPalette(u8 taskId); +static void MarkPyramidTrainerAsBattled(u16 trainerId); +static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets); static void GetPyramidEntranceAndExitSquareIds(u8 *, u8 *); static void SetPyramidObjectPositionsUniformly(u8); static bool8 SetPyramidObjectPositionsInAndNearSquare(u8, u8); static bool8 SetPyramidObjectPositionsNearSquare(u8, u8); -static bool8 TrySetPyramidObjectEventPositionInSquare(u8, u8 *, u8, u8); -static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8, u8, u8, u8 *, u8, u8); +static bool8 TrySetPyramidObjectEventPositionInSquare(u8 arg0, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); +static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); // Const rom data. #define ABILITY_RANDOM 2 // For wild mons data. @@ -279,9 +279,9 @@ static const u8 sPyramidFloorTemplateOptions[][2] = {100, 15} }; -static const u8 sFloorTemplateOffsets[FRONTIER_STAGES_PER_CHALLENGE] = +static const u8 sFloorTemplateOffsets[] = { - 0, 4, 9, 14, 19, 24, 29 + 0, 4, 9, 14, 19, 24, 29, 0 }; static const u16 sPickupItemsLvl50[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] = @@ -406,7 +406,7 @@ static const u8 sPickupItemSlots[][2] = {100, 9}, }; -static const u8 sPickupItemOffsets[FRONTIER_STAGES_PER_CHALLENGE] = {0, 9, 18, 27, 36, 45, 54}; +static const u8 sPickupItemOffsets[] = {0, 9, 18, 27, 36, 45, 54}; static const struct PyramidTrainerEncounterMusic sTrainerClassEncounterMusic[54] = { @@ -963,7 +963,7 @@ static void SeedPyramidFloor(void) { int i; - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.pyramidRandoms); i++) + for (i = 0; i < 4; i++) gSaveBlock2Ptr->frontier.pyramidRandoms[i] = Random(); gSaveBlock2Ptr->frontier.pyramidTrainerFlags = 0; @@ -977,7 +977,7 @@ static void SetPickupItem(void) u8 id; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; + u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1016,8 +1016,8 @@ static void HidePyramidItem(void) { // Rather than using event flags to hide the item object event, // it moves them far off the map bounds. - events[i].x = SHRT_MAX; - events[i].y = SHRT_MAX; + events[i].x = 0x7FFF; + events[i].y = 0x7FFF; break; } i++; @@ -1063,7 +1063,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_ITEMS: for (i = 0; i < GetNumBattlePyramidObjectEvents(); i++) { - if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != SHRT_MAX && events[i].y != SHRT_MAX) + if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != 0x7FFF && events[i].y != 0x7FFF) textIndex++; } i = 1; @@ -1071,7 +1071,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_TRAINERS: id = GetPyramidFloorTemplateId(); textIndex = sPyramidFloorTemplates[id].numTrainers; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) { if (gBitTable[i] & gSaveBlock2Ptr->frontier.pyramidTrainerFlags) textIndex--; @@ -1326,7 +1326,7 @@ static void MarkPyramidTrainerAsBattled(u16 trainerId) { int i; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) gSaveBlock2Ptr->frontier.pyramidTrainerFlags |= gBitTable[i]; @@ -1345,7 +1345,7 @@ void GenerateBattlePyramidWildMon(void) const struct PyramidWildMon *wildMons; u32 id; u32 lvl = gSaveBlock2Ptr->frontier.lvlMode; - u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; + u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1488,13 +1488,13 @@ static u16 GetUniqueTrainerId(u8 objectEventId) int i; u16 trainerId; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; - u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - if (floor == FRONTIER_STAGES_PER_CHALLENGE) + u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; + u32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + if (battleNum == 7) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, floor); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1506,7 +1506,7 @@ static u16 GetUniqueTrainerId(u8 objectEventId) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum, floor); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1523,11 +1523,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio int y, x; int i; u8 entranceSquareId, exitSquareId; - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); GetPyramidEntranceAndExitSquareIds(&entranceSquareId, &exitSquareId); - for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) + for (i = 0; i < 16; i++) { u16 *map; int yOffset, xOffset; @@ -1535,11 +1535,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio const u16 *layoutMap = mapLayout->map; gBackupMapLayout.map = backupMapData; - gBackupMapLayout.width = mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE + MAP_OFFSET_W; - gBackupMapLayout.height = mapLayout->height * PYRAMID_FLOOR_SQUARES_HIGH + MAP_OFFSET_H; + gBackupMapLayout.width = mapLayout->width * 4 + MAP_OFFSET_W; + gBackupMapLayout.height = mapLayout->height * 4 + MAP_OFFSET_H; map = backupMapData; - yOffset = ((i / PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; - xOffset = (i % PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->width) + MAP_OFFSET; + yOffset = ((i / 4 * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; + xOffset = (i % 4 * mapLayout->width) + MAP_OFFSET; map += yOffset + xOffset; for (y = 0; y < mapLayout->height; y++) { @@ -1553,8 +1553,8 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio { if (i == entranceSquareId && setPlayerPosition == FALSE) { - gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % PYRAMID_FLOOR_SQUARES_WIDE)) + x; - gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / PYRAMID_FLOOR_SQUARES_WIDE)) + y; + gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + x; + gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + y; } map[x] = (layoutMap[x] & (MAPGRID_ELEVATION_MASK | MAPGRID_COLLISION_MASK)) | METATILE_BattlePyramid_Floor; } @@ -1563,7 +1563,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio map[x] = layoutMap[x]; } } - map += MAP_OFFSET_W + (mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE); + map += MAP_OFFSET_W + (mapLayout->width * 4); layoutMap += mapLayout->width; } } @@ -1577,7 +1577,7 @@ void LoadBattlePyramidObjectEventTemplates(void) u8 id; u8 entranceSquareId, exitSquareId; - for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) + for (i = 0; i < 8; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; id = GetPyramidFloorTemplateId(); @@ -1633,13 +1633,13 @@ void LoadBattlePyramidFloorObjectEventScripts(void) static void GetPyramidEntranceAndExitSquareIds(u8 *entranceSquareId, u8 *exitSquareId) { - *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % NUM_PYRAMID_FLOOR_SQUARES; - *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % NUM_PYRAMID_FLOOR_SQUARES; + *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % 16; + *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % 16; if (*entranceSquareId == *exitSquareId) { - *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % NUM_PYRAMID_FLOOR_SQUARES; - *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + NUM_PYRAMID_FLOOR_SQUARES - 1) % NUM_PYRAMID_FLOOR_SQUARES; + *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % 16; + *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + 15) % 16; } } @@ -1651,10 +1651,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) int squareId; u32 bits = 0; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); - squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES; + squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16; if (objType == OBJ_TRAINERS) { numObjects = sPyramidFloorTemplates[id].numTrainers; @@ -1682,10 +1682,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) if (gBitTable[squareId] & gSaveBlock2Ptr->frontier.pyramidRandoms[3]) bits |= 2; } - if (++squareId >= NUM_PYRAMID_FLOOR_SQUARES) + if (++squareId >= 16) squareId = 0; - if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES) + if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16) { if (bits & 1) bits |= 6; @@ -1709,7 +1709,7 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) int numPlacedObjects = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1775,7 +1775,7 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId) int r8 = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); + u8 *floorLayoutOffsets = AllocZeroed(16); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1900,7 +1900,7 @@ static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets) int rand = (gSaveBlock2Ptr->frontier.pyramidRandoms[0]) | (gSaveBlock2Ptr->frontier.pyramidRandoms[1] << 16); u8 id = GetPyramidFloorTemplateId(); - for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) + for (i = 0; i < 16; i++) { layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[rand & 0x7]; rand >>= 3; @@ -1931,7 +1931,7 @@ u8 GetNumBattlePyramidObjectEvents(void) u8 i; struct ObjectEventTemplate *events = gSaveBlock1Ptr->objectEventTemplates; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < 16; i++) { if (events[i].localId == 0) break; @@ -1959,7 +1959,7 @@ u16 GetBattlePyramidPickupItemId(void) int rand; u32 i; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); + int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7); if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 66b4cd97d..d1b946146 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -1410,7 +1410,7 @@ void TryStoreHeldItemsInPyramidBag(void) memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); - for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + for (i = 0; i < 3; i++) { heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); if (heldItem != ITEM_NONE && !AddBagItem(heldItem, 1)) @@ -1426,8 +1426,10 @@ void TryStoreHeldItemsInPyramidBag(void) } heldItem = ITEM_NONE; - for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + for (i = 0; i < 3; i++) + { SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem); + } gSpecialVar_Result = 0; Free(newItems); Free(newQuantities); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 4f31f0f01..3c8bbfdee 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2596,7 +2596,7 @@ void SetMoveEffect(bool8 primary, u8 certain) for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++) { - if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_TRAPPING_MOVES - 1) + if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) break; if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) break; diff --git a/src/battle_setup.c b/src/battle_setup.c index be2f7e859..ecb5ad9b9 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -611,6 +611,7 @@ static void CB2_EndWildBattle(void) { SetMainCallback2(CB2_ReturnToField); gFieldCallback = FieldCB_ReturnToFieldNoScriptCheckMusic; + UpdateFollowerPokemonGraphic(); } } @@ -629,6 +630,7 @@ static void CB2_EndScriptedWildBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); } } @@ -699,22 +701,21 @@ static u8 GetBattleTransitionTypeByMap(void) PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - if (GetFlashLevel()) return TRANSITION_TYPE_FLASH; - - if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return TRANSITION_TYPE_WATER; - - switch (gMapHeader.mapType) + if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) { - case MAP_TYPE_UNDERGROUND: - return TRANSITION_TYPE_CAVE; - case MAP_TYPE_UNDERWATER: - return TRANSITION_TYPE_WATER; - default: - return TRANSITION_TYPE_NORMAL; + switch (gMapHeader.mapType) + { + case MAP_TYPE_UNDERGROUND: + return TRANSITION_TYPE_CAVE; + case MAP_TYPE_UNDERWATER: + return TRANSITION_TYPE_WATER; + default: + return TRANSITION_TYPE_NORMAL; + } } + return TRANSITION_TYPE_WATER; } static u16 GetSumOfPlayerPartyLevel(u8 numMons) @@ -1339,6 +1340,7 @@ static void CB2_EndTrainerBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); if (!InBattlePyramid() && !InTrainerHillChallenge()) { RegisterTrainerInMatchCall(); @@ -1360,6 +1362,7 @@ static void CB2_EndRematchBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + UpdateFollowerPokemonGraphic(); RegisterTrainerInMatchCall(); SetBattledTrainersFlags(); HandleRematchVarsOnBattleEnd(); diff --git a/src/battle_tent.c b/src/battle_tent.c index dba9e6e8a..53c91c871 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -56,8 +56,10 @@ static void GenerateInitialRentalMons(void); * */ -static u16 sRandMonId; +// IWRAM bss +static u16 sRandMonSetId; +// const rom data void static (*const sVerdanturfTentFuncs[])(void) = { [VERDANTURF_TENT_FUNC_INIT] = InitVerdanturfTentChallenge, @@ -355,7 +357,7 @@ static void GenerateOpponentMons(void) const u16 *monSet; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - s32 numMons = 0; + s32 monId = 0; gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -364,7 +366,6 @@ static void GenerateOpponentMons(void) { do { - // Choose a random trainer, ensuring no repeats in this challenge trainerId = Random() % NUM_BATTLE_TENT_TRAINERS; for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -375,53 +376,48 @@ static void GenerateOpponentMons(void) gTrainerBattleOpponent_A = trainerId; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; - while (monSet[numMons] != 0xFFFF) - numMons++; - if (numMons > 8) + while (monSet[monId] != 0xFFFF) + monId++; + if (monId > 8) break; - numMons = 0; + monId = 0; } - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < TENT_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; i = 0; while (i != FRONTIER_PARTY_SIZE) { - sRandMonId = monSet[Random() % numMons]; - - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player - for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) + sRandMonSetId = monSet[Random() % monId]; + for (j = 0; j < 6; j++) { - if (gFacilityTrainerMons[sRandMonId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) + if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) + if (j != 6) continue; - // Ensure this species hasn't already been chosen for the opponent for (k = 0; k < i; k++) { - if (species[k] == gFacilityTrainerMons[sRandMonId].species) + if (species[k] == gFacilityTrainerMons[sRandMonSetId].species) break; } if (k != i) continue; - // Ensure held items don't repeat on the opponent's team for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]) + if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]) break; } if (k != i) continue; - // Successful selection - species[i] = gFacilityTrainerMons[sRandMonId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]; - gFrontierTempParty[i] = sRandMonId; + species[i] = gFacilityTrainerMons[sRandMonSetId].species; + heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]; + gFrontierTempParty[i] = sRandMonSetId; i++; } } diff --git a/src/battle_tower.c b/src/battle_tower.c index 354a087c4..989412e9e 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -27,7 +27,6 @@ #include "constants/battle_dome.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" -#include "constants/battle_tent.h" #include "constants/battle_tent_mons.h" #include "constants/battle_tent_trainers.h" #include "constants/battle_tower.h" @@ -688,7 +687,7 @@ struct { u32 facilityClass; const u8 *const *strings; -} static const sPartnerTrainerTextTables[] = +} const sPartnerTrainerTextTables[] = { {FACILITY_CLASS_LASS, sPartnerTextsLass}, {FACILITY_CLASS_YOUNGSTER, sPartnerTextsYoungster}, @@ -770,7 +769,7 @@ struct u8 nature; u8 evs[NUM_STATS]; u16 moves[MAX_MON_MOVES]; -} static const sStevenMons[MULTI_PARTY_SIZE] = +} const sStevenMons[MULTI_PARTY_SIZE] = { { .species = SPECIES_METANG, @@ -1061,7 +1060,7 @@ static void SetNextFacilityOpponent(void) u16 id; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u16 winStreak = GetCurrentFacilityWinStreak(); - u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + u32 challengeNum = winStreak / 7; SetFacilityPtrsGetLevel(); if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS) @@ -1096,7 +1095,7 @@ static void SetNextFacilityOpponent(void) gTrainerBattleOpponent_A = id; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < FRONTIER_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 7) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } } @@ -1108,7 +1107,7 @@ u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) if (challengeNum <= 7) { - if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) + if (battleNum == 6) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges trainerId = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1137,7 +1136,7 @@ static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, if (challengeNum <= 7) { - if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) + if (battleNum == 6) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges range = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1327,19 +1326,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j]) break; } - if (j == TRAINER_ID_LENGTH) + if (j == 4) { for (k = 0; k < PLAYER_NAME_LENGTH; k++) { - // Incorrect index being used - #ifdef BUGFIX - #define INDEX k - #else - #define INDEX j - #endif - if (gSaveBlock2Ptr->frontier.towerRecords[i].name[INDEX] != newRecord->name[INDEX]) + #ifdef BUGFIX + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k]) break; - if (newRecord->name[INDEX] == EOS) + if (newRecord->name[k] == EOS) + #else + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j]) + break; + if (newRecord->name[j] == EOS) + #endif { k = PLAYER_NAME_LENGTH; break; @@ -1635,7 +1634,7 @@ static void FillTentTrainerParty(u8 monsCount) static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; - u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; + u16 chosenMonIndices[4]; u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; @@ -1651,7 +1650,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1676,7 +1675,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) else { // Apprentice. - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateApprenticeMon(&gEnemyParty[i], &gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE], i - firstMonId); return; } @@ -1692,10 +1691,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) while (i != monCount) { u16 monId = monSet[Random() % bfMonCount]; - - // "High tier" pokemon are only allowed on open level mode - // 20 is not a possible value for level here - if ((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) + if ((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) continue; // Ensure this pokemon species isn't a duplicate. @@ -1771,11 +1767,11 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) fixedIV = 9; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - level = FRONTIER_MAX_LEVEL_OPEN; + level = 100; else - level = FRONTIER_MAX_LEVEL_50; + level = 50; - for (i = 0; i != FRONTIER_PARTY_SIZE; i++) + for (i = 0; i != 3; i++) { CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8); friendship = MAX_FRIENDSHIP; @@ -1806,10 +1802,8 @@ u16 GetRandomFrontierMonFromSet(u16 trainerId) do { - // "High tier" pokemon are only allowed on open level mode - // 20 is not a possible value for level here monId = monSet[Random() % numMons]; - } while((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); + } while((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); return monId; } @@ -1837,18 +1831,18 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); // By mistake Battle Tower's Level 50 challenge number is used to determine the IVs for Battle Factory. #ifdef BUGFIX - u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; #else - u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / FRONTIER_STAGES_PER_CHALLENGE; + u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / 7; #endif - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) fixedIV = GetFactoryMonFixedIV(challengeNum, FALSE); else fixedIV = GetFactoryMonFixedIV(challengeNum, TRUE); // Last trainer in challenge uses higher IVs } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) + for (i = firstMonId; i < firstMonId + 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1888,7 +1882,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) { u8 i, j; u8 friendship; - u8 level = TENT_MIN_LEVEL; + u8 level = 30; u8 fixedIV = 0; u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); @@ -2049,7 +2043,7 @@ void DoSpecialTrainerBattle(void) break; case SPECIAL_BATTLE_EREADER: ZeroEnemyPartyMons(); - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.ereaderTrainer.party); i++) + for (i = 0; i < 3; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]); gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_EREADER_TRAINER; gTrainerBattleOpponent_A = 0; @@ -2195,7 +2189,7 @@ static void SaveTowerChallenge(void) { u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); + s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) SaveBattleTowerRecord(); @@ -2285,7 +2279,7 @@ static void LoadMultiPartnerCandidatesData(void) objEventTemplates = gSaveBlock1Ptr->objectEventTemplates; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); level = SetFacilityPtrsGetLevel(); @@ -2344,7 +2338,7 @@ static void LoadMultiPartnerCandidatesData(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -2383,7 +2377,7 @@ static void LoadMultiPartnerCandidatesData(void) checksum += record[j]; } - if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum + if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / 7 <= challengeNum && gSaveBlock2Ptr->frontier.towerRecords[i].lvlMode == lvlMode && recordHasData && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum) @@ -2464,7 +2458,7 @@ static void ShowPartnerCandidateMessage(void) s32 monId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); - s32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; + s32 challengeNum = winStreak / 7; s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k]; @@ -2523,7 +2517,7 @@ static void ShowPartnerCandidateMessage(void) gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[0]; gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[1]; } - for (k = 0; k < FRONTIER_STAGES_PER_CHALLENGE * 2; k++) + for (k = 0; k < 14; k++) { while (1) { @@ -2582,7 +2576,7 @@ static void LoadLinkMultiOpponentsData(void) case 0: if (battleMode == FRONTIER_MODE_LINK_MULTIS) { - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; if (IsLinkTaskFinished()) { SendBlock(BitmaskAllOtherLinkPlayers(), &challengeNum, sizeof(challengeNum)); @@ -2602,7 +2596,7 @@ static void LoadLinkMultiOpponentsData(void) challengeNum = gBlockRecvBuffer[0][0]; else challengeNum = gBlockRecvBuffer[1][0]; - for (i = 0; i < FRONTIER_STAGES_PER_CHALLENGE * 2; i++) + for (i = 0; i < 14; i++) { do { @@ -2743,8 +2737,8 @@ u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode) { u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; - if (winStreak > MAX_STREAK) - return MAX_STREAK; + if (winStreak > 9999) + return 9999; else return winStreak; } @@ -2846,7 +2840,7 @@ static void FillEReaderTrainerWithPlayerData(void) ereaderTrainer->winStreak = 1; j = 7; - for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++) + for (i = 0; i < 6; i++) { ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; ereaderTrainer->farewellPlayerLost[i] = j; @@ -2854,7 +2848,7 @@ static void FillEReaderTrainerWithPlayerData(void) j++; } - for (i = 0; i < (int)ARRAY_COUNT(ereaderTrainer->party); i++) + for (i = 0; i < 3; i++) ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); @@ -3252,12 +3246,12 @@ u8 GetFrontierEnemyMonLevel(u8 lvlMode) { default: case FRONTIER_LVL_50: - level = FRONTIER_MAX_LEVEL_50; + level = 50; break; case FRONTIER_LVL_OPEN: level = GetHighestLevelInPlayerParty(); - if (level < FRONTIER_MIN_LEVEL_OPEN) - level = FRONTIER_MIN_LEVEL_OPEN; + if (level < 60) + level = 60; break; } @@ -3327,7 +3321,7 @@ static u16 GetBattleTentTrainerId(void) static u8 SetTentPtrsGetLevel(void) { - u8 level = TENT_MIN_LEVEL; + u8 level = 30; u32 facility = VarGet(VAR_FRONTIER_FACILITY); if (facility == FRONTIER_FACILITY_FACTORY) @@ -3352,8 +3346,8 @@ static u8 SetTentPtrsGetLevel(void) } level = GetHighestLevelInPlayerParty(); - if (level < TENT_MIN_LEVEL) - level = TENT_MIN_LEVEL; + if (level < 30) + level = 30; return level; } @@ -3375,7 +3369,7 @@ static void SetNextBattleTentOpponent(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < TENT_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 3) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } diff --git a/src/battle_transition.c b/src/battle_transition.c index c523cbe7b..1e421b5e4 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -4762,8 +4762,10 @@ static bool8 FrontierSquaresScroll_End(struct Task *task) BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); DestroyTask(FindTaskIdByFunc(task->func)); - task->tState++; // Changing value of a destroyed task +#ifndef UBFIX + task->tState++; // UB: changing value of a destroyed task +#endif return FALSE; } diff --git a/src/battle_util.c b/src/battle_util.c index f34c39eb0..6bb6d9ae4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1190,7 +1190,7 @@ u8 DoFieldEndTurnEffects(void) s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE)) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) SwapTurnOrder(i, j); } } diff --git a/src/berry_blender.c b/src/berry_blender.c index bdf7858ce..27ea641ce 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1188,9 +1188,9 @@ static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSp #undef sXSpeed #undef sYDownSpeed -static void CreateBerrySprite(u16 itemId, u8 playerId) +static void CreateBerrySprite(u16 a0, u8 playerId) { - u8 spriteId = CreateSpinningBerrySprite(ITEM_TO_BERRY(itemId) - 1, 0, 80, playerId & 1); + u8 spriteId = CreateSpinningBerrySprite(a0 + FIRST_BERRY_INDEX - 10, 0, 80, playerId & 1); SetBerrySpriteData(&gSprites[spriteId], sBerrySpriteData[playerId][0], sBerrySpriteData[playerId][1], @@ -2238,7 +2238,7 @@ static void CB2_PlayBlender(void) UpdatePaletteFade(); } -static void Blender_DummiedOutFunc(s16 bgX, s16 bgY) +static void Blender_DummiedOutFunc(s16 a0, s16 a1) { } diff --git a/src/berry_crush.c b/src/berry_crush.c index e6e2d8742..e7a5df951 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -2254,7 +2254,7 @@ static u32 Cmd_PrintMessage(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); if (args[1] & F_MSG_EXPAND) { StringExpandPlaceholders(gStringVar4, sMessages[args[0]]); @@ -3241,7 +3241,7 @@ static u32 Cmd_SaveGame(struct BerryCrushGame *game, u8 *args) case 2: if (!IsLinkTaskFinished()) return 0; - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, 0, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); CreateTask(Task_LinkFullSave, 0); @@ -3389,7 +3389,7 @@ static u32 Cmd_StopGame(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); if (game->playAgainState == PLAY_AGAIN_NO_BERRIES) AddTextPrinterParameterized2(0, FONT_NORMAL, sMessages[MSG_NO_BERRIES], game->textSpeed, 0, 2, 1, 3); else diff --git a/src/bike.c b/src/bike.c index 5546edd8e..b1dd7cfe2 100644 --- a/src/bike.c +++ b/src/bike.c @@ -7,6 +7,8 @@ #include "metatile_behavior.h" #include "overworld.h" #include "sound.h" +#include "event_data.h" +#include "sprite.h" #include "constants/map_types.h" #include "constants/songs.h" @@ -982,7 +984,7 @@ void GetOnOffBike(u8 transitionFlags) else { FollowerIntoPokeball(); - + SetPlayerAvatarTransitionFlags(transitionFlags); Overworld_SetSavedMusic(MUS_CYCLING); Overworld_ChangeMusicTo(MUS_CYCLING); diff --git a/src/cable_car.c b/src/cable_car.c index c81764728..00f62d08f 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -800,12 +800,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, diff --git a/src/coins.c b/src/coins.c index 4c4739999..17fd147b7 100644 --- a/src/coins.c +++ b/src/coins.c @@ -8,7 +8,7 @@ #include "international_string_util.h" #include "constants/coins.h" -static EWRAM_DATA u8 sCoinsWindowId = 0; +EWRAM_DATA u8 sCoinsWindowId = 0; void PrintCoinsString(u32 coinAmount) { diff --git a/src/contest.c b/src/contest.c index da57d9e28..ced9f90cd 100644 --- a/src/contest.c +++ b/src/contest.c @@ -93,7 +93,7 @@ static void Task_ContestReturnToField(u8); static void FieldCB_ContestReturnToField(void); static bool8 IsPlayerLinkLeader(void); static void PrintContestantTrainerName(u8); -static void PrintContestantTrainerNameWithColor(u8, u8); +static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1); static void PrintContestantMonName(u8); static void PrintContestantMonNameWithColor(u8, u8); static u8 CreateJudgeSprite(void); @@ -352,7 +352,7 @@ EWRAM_DATA u16 gSpecialVar_ContestRank = 0; EWRAM_DATA u8 gNumLinkContestPlayers = 0; EWRAM_DATA u8 gHighestRibbonRank = 0; EWRAM_DATA struct ContestResources *gContestResources = NULL; -static EWRAM_DATA u8 sContestBgCopyFlags = 0; +EWRAM_DATA u8 sContestBgCopyFlags = 0; EWRAM_DATA struct ContestWinner gCurContestWinner = {0}; EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0; EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0; @@ -625,7 +625,7 @@ static const struct SpriteTemplate sSpriteTemplate_ApplauseMeter = .callback = SpriteCallbackDummy }; -static const struct OamData sOam_Judge = +const struct OamData sOam_Judge = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -639,7 +639,7 @@ static const struct OamData sOam_Judge = .paletteNum = 2, }; -static const struct SpriteTemplate sSpriteTemplate_Judge = +const struct SpriteTemplate sSpriteTemplate_Judge = { .tileTag = TAG_JUDGE, .paletteTag = TAG_JUDGE, @@ -650,7 +650,7 @@ static const struct SpriteTemplate sSpriteTemplate_Judge = .callback = SpriteCallbackDummy }; -static const struct CompressedSpriteSheet sSpriteSheet_Judge = +const struct CompressedSpriteSheet sSpriteSheet_Judge = { .data = gContestJudgeGfx, .size = 0x800, @@ -664,13 +664,13 @@ static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = .tag = TAG_JUDGE_SYMBOLS_GFX }; -static const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = +const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = { .data = gContestJudgeSymbolsPal, .tag = TAG_CONTEST_SYMBOLS_PAL }; -static const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = +const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = { .tileTag = TAG_JUDGE_SYMBOLS_GFX, .paletteTag = TAG_CONTEST_SYMBOLS_PAL, @@ -876,7 +876,7 @@ static const struct SpritePalette sSpritePalettes_ContestantsTurnBlinkEffect[CON } }; -static const struct OamData sOam_ContestantsTurnBlinkEffect = +const struct OamData sOam_ContestantsTurnBlinkEffect = { .y = 0, .affineMode = ST_OAM_AFFINE_DOUBLE, @@ -891,13 +891,13 @@ static const struct OamData sOam_ContestantsTurnBlinkEffect = .affineParam = 0, }; -static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = +const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = +const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = { AFFINEANIMCMD_FRAME(3, 3, 0, 15), AFFINEANIMCMD_FRAME(-3, -3, 0, 15), @@ -906,13 +906,13 @@ static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = +const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = { sAffineAnim_ContestantsTurnBlinkEffect_0, sAffineAnim_ContestantsTurnBlinkEffect_1 }; -static const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = +const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = { { .tileTag = TAG_BLINK_EFFECT_CONTESTANT0, @@ -952,7 +952,7 @@ static const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[C } }; -static const s8 sContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = +static const s8 gContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = { [CONTEST_CATEGORY_COOL] = { [CONTEST_CATEGORY_COOL] = +1, @@ -3186,14 +3186,14 @@ static u16 GetMoveEffectSymbolTileOffset(u16 move, u8 contestant) return offset; } -static void PrintContestMoveDescription(u16 move) +static void PrintContestMoveDescription(u16 a) { u8 category; u16 categoryTile; u8 numHearts; // The contest category icon is implemented as a 5x2 group of tiles. - category = gContestMoves[move].contestCategory; + category = gContestMoves[a].contestCategory; if (category == CONTEST_CATEGORY_COOL) categoryTile = 0x4040; else if (category == CONTEST_CATEGORY_BEAUTY) @@ -3209,27 +3209,27 @@ static void PrintContestMoveDescription(u16 move) ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01); // Appeal hearts - if (gContestEffects[gContestMoves[move].effect].appeal == 0xFF) + if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[move].effect].appeal / 10; + numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_APPEAL_HEART, 0x15, 0x1f, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_APPEAL_HEART, 0x15, 0x1f, numHearts, 0x01, 0x11); // Jam hearts - if (gContestEffects[gContestMoves[move].effect].jam == 0xFF) + if (gContestEffects[gContestMoves[a].effect].jam == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[move].effect].jam / 10; + numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_JAM_HEART, 0x15, 0x20, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11); FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0)); - Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[move].effect]); + Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]); Contest_PrintTextToBg0WindowStd(WIN_SLASH, gText_Slash); } @@ -4537,14 +4537,14 @@ static void CalculateAppealMoveImpact(u8 contestant) eContestantStatus[contestant].contestantAnimTarget = i; } -void SetContestantEffectStringID(u8 contestant, u8 effectStringId) +void SetContestantEffectStringID(u8 a, u8 b) { - eContestantStatus[contestant].effectStringId = effectStringId; + eContestantStatus[a].effectStringId = b; } -void SetContestantEffectStringID2(u8 contestant, u8 effectStringId) +void SetContestantEffectStringID2(u8 a, u8 b) { - eContestantStatus[contestant].effectStringId2 = effectStringId; + eContestantStatus[a].effectStringId2 = b; } void SetStartledString(u8 contestant, u8 jam) @@ -4744,7 +4744,7 @@ static void UpdateApplauseMeter(void) s8 Contest_GetMoveExcitement(u16 move) { - return sContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; + return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; } static u8 StartApplauseOverflowAnimation(void) diff --git a/src/contest_util.c b/src/contest_util.c index d8726d860..1ca217526 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -77,10 +77,7 @@ enum { #define TAG_CONFETTI 3017 #define TAG_WIRELESS_INDICATOR_WINDOW 22222 -// Length of the score bar on the results screen -#define NUM_BAR_SEGMENTS 11 -#define BAR_SEGMENT_LENGTH 8 // Each segment of the results bar is a single tile, so 8 pixels long -#define MAX_BAR_LENGTH (NUM_BAR_SEGMENTS * BAR_SEGMENT_LENGTH) +#define MAX_BAR_LENGTH 87 // Starting x/y for the sliding results screen text box #define TEXT_BOX_X (DISPLAY_WIDTH + 32) @@ -99,7 +96,7 @@ struct ContestResultsInternal u8 winnerMonSpriteId; bool8 destroyConfetti; bool8 pointsFlashing; - s16 barLength[CONTESTANT_COUNT]; + s16 unkC[CONTESTANT_COUNT]; u8 numBarsUpdating; }; @@ -1751,7 +1748,7 @@ static void CalculateContestantsResultData(void) if ((*sContestResults->monResults)[i].lostPoints) barLengthRound2 *= -1; - if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH) + if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH + 1) { if (barLengthRound2 > 0) (*sContestResults->monResults)[i].barLengthRound2--; @@ -1844,52 +1841,47 @@ static void Task_UpdateContestResultBar(u8 taskId) s16 target = gTasks[taskId].tTarget; s16 decreasing = gTasks[taskId].tDecreasing; - // Has the results bar reached the limit? if (decreasing) { - if (sContestResults->data->barLength[monId] <= 0) + if (sContestResults->data->unkC[monId] <= 0) minMaxReached = TRUE; } else { - if (sContestResults->data->barLength[monId] >= MAX_BAR_LENGTH) + if (sContestResults->data->unkC[monId] > MAX_BAR_LENGTH) minMaxReached = TRUE; } - if (sContestResults->data->barLength[monId] == target) + if (sContestResults->data->unkC[monId] == target) targetReached = TRUE; if (!targetReached) { - // Target length has not been reached, update bar length if (minMaxReached) - sContestResults->data->barLength[monId] = target; + sContestResults->data->unkC[monId] = target; else if (decreasing) - sContestResults->data->barLength[monId]--; + sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] - 1; else - sContestResults->data->barLength[monId]++; + sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] + 1; } - // Update the tiles of the results bar if it's still changing if (!minMaxReached && !targetReached) { - u8 tileOffset; + u8 var0; u16 tileNum; - for (i = 0; i < NUM_BAR_SEGMENTS; i++) + for (i = 0; i < 11; i++) { - if (sContestResults->data->barLength[monId] >= (i + 1) * BAR_SEGMENT_LENGTH) - tileOffset = 8; // Bar segment is full - else if (sContestResults->data->barLength[monId] >= i * BAR_SEGMENT_LENGTH) - tileOffset = sContestResults->data->barLength[monId] % 8; // Bar segment is between full and empty + if (sContestResults->data->unkC[monId] >= (i + 1) * 8) + var0 = 8; + else if (sContestResults->data->unkC[monId] >= i * 8) + var0 = sContestResults->data->unkC[monId] % 8; else - tileOffset = 0; // Bar segment is empty + var0 = 0; - // The first 4 bar segment tiles are not adjacent in the tileset to the - // remaining bar segment tiles; choose the base tile number accordingly. - if (tileOffset < 4) - tileNum = 0x504C + tileOffset; + if (var0 < 4) + tileNum = 0x504C + var0; else - tileNum = 0x5057 + tileOffset; + tileNum = 0x5057 + var0; FillBgTilemapBufferRect_Palette0(2, tileNum, i + 7, monId * 3 + 6, 1, 1); } diff --git a/src/credits.c b/src/credits.c index 33362fb38..43c8d6628 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1285,18 +1285,18 @@ static void ResetCreditsTasks(u8 taskId) gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; } -static void LoadTheEndScreen(u16 tileOffsetLoad, u16 tileOffsetWrite, u16 palOffset) +static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 palOffset) { u16 baseTile; u16 i; - LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + tileOffsetLoad)); + LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); LoadPalette(gIntroCopyright_Pal, palOffset, sizeof(gIntroCopyright_Pal)); baseTile = (palOffset / 16) << 12; for (i = 0; i < 32 * 32; i++) - ((u16 *) (VRAM + tileOffsetWrite))[i] = baseTile + 1; + ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } static u16 GetLetterMapTile(u8 baseTiles) diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h index f09448b82..8738b0de6 100644 --- a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h +++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h @@ -1038,7 +1038,7 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round20[] = } }; -static const struct PyramidWildMon *const sOpenLevelWildMonPointers[TOTAL_ROUNDS] = +static const struct PyramidWildMon *const sOpenLevelWildMonPointers[] = { sOpenLevelWildMons_Round1, sOpenLevelWildMons_Round2, diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h index c13e6a8c9..75785b258 100644 --- a/src/data/battle_frontier/trainer_hill.h +++ b/src/data/battle_frontier/trainer_hill.h @@ -1,23 +1,20 @@ +#define TRAINER_HILL_OTID 0x10000000 + // NOTE: Each of these macros turn data into one byte. Therefore ranges for all arguments is 0-15 -// See struct TrainerHillFloorMap for more info about each +// See struct TrHillDisplay for more info about each #define COORDS_XY(x,y) ((y<<4)|(x)) #define TRAINER_DIRS(a, b) (((a-1)<<4)|(b-1)) #define TRAINER_RANGE(a, b) ((a<<4)|(b)) -// WARNING: While not referenced directly, the floor data in this file is referenced by virtue -// of coming after its corresponding challenge (see SetUpDataStruct in trainer_hill.c). -// Do not insert data between a pair of 'sChallenge_Mode' and 'sFloors_Mode'. - -// Unused -static const struct TrainerHillChallenge sChallenge_JPDefault = { +static const struct TrHillTag sDataTagJPDefault = { .numTrainers = NUM_TRAINER_HILL_TRAINERS_JP, .unused1 = 1, .numFloors = NUM_TRAINER_HILL_FLOORS_JP, .checksum = 0x0 }; -// Unused -static const struct TrainerHillFloor sFloors_JPDefault[] = { + +static const struct TrHillFloor sDataTagJPDefault_Floors[] = { [0] = { .trainerNum1 = 0, .trainerNum2 = 0, @@ -25,7 +22,7 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { [0] = { .name = __("シゲノブ$$$$ "), .facilityClass = FACILITY_CLASS_YOUNGSTER, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_EXCL, EC_WORD_THEY_WERE, EC_WORD_OPPONENT, EC_WORD_CAN }, .speechWin = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_WEAK, EC_WORD_OF, EC_WORD_WERE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechLose = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_STRONG, EC_WORD_HEY_QUES, EC_WORD_EXCL, EC_WORD_EXCL }, @@ -35,10 +32,13 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .species = SPECIES_ZIGZAGOON, .heldItem = ITEM_SITRUS_BERRY, .moves = { MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_GROWL, MOVE_TAIL_WHIP }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, .speedEV = 100, + .spAttackEV = 0, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -50,14 +50,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("ジグザグマ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [1] = { .species = SPECIES_SHROOMISH, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_POISON_POWDER, MOVE_GROWTH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 120, + .attackEV = 0, .defenseEV = 120, + .speedEV = 0, .spAttackEV = 150, .spDefenseEV = 120, .otId = TRAINER_HILL_OTID, @@ -70,15 +74,19 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キノココ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [2] = { .species = SPECIES_SANDSHREW, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_SCRATCH, MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SWIFT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, .spDefenseEV = 200, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -90,32 +98,35 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("サンド$$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, - [3] = DUMMY_HILL_MON, - [4] = DUMMY_HILL_MON, - [5] = DUMMY_HILL_MON + [3] = NULL_BATTLE_TOWER_POKEMON, + [4] = NULL_BATTLE_TOWER_POKEMON, + [5] = NULL_BATTLE_TOWER_POKEMON } }, [1] = { .name = __("アカリ$$$$$ "), .facilityClass = FACILITY_CLASS_PARASOL_LADY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_SHE, EC_WORD_EVERY, EC_WORD_TYPE, EC_WORD_ADORE, EC_WORD_FOR, EC_WORD_EXCL }, .speechWin = { EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_WONDER, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_EXCL }, .speechLose = { EC_WORD_OH_QUES, EC_MOVE(EARTHQUAKE), EC_WORD_EXISTS, EC_WORD_OF, EC_WORD_WITHOUT, EC_WORD_EXCL }, .speechAfter = { EC_WORD_YOU_RE, EC_WORD_PROBABLY, EC_WORD_END, EC_WORD_UNTIL, EC_WORD_GOING, EC_WORD_ANYWHERE }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_WINGULL, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_WATER_GUN, MOVE_WING_ATTACK, MOVE_GROWL, MOVE_SUPERSONIC }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -128,15 +139,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キャモメ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_NUMEL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_EMBER, MOVE_DIG, MOVE_TACKLE, MOVE_FOCUS_ENERGY }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -149,15 +163,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ドンメル$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_SURSKIT, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_BUBBLE_BEAM, MOVE_MUD_SHOT, MOVE_QUICK_ATTACK, MOVE_AGILITY }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -170,17 +187,34 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("アメタマ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_0/collision.bin"), - .trainerCoords = { COORDS_XY(8,2), COORDS_XY(8,7) }, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(2, 3) + .display = { + .metatileData = { + 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x08, + 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, + 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x08, + 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = { 0x0381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }, + .coords = { COORDS_XY(8,2), COORDS_XY(8,7) }, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(2, 3) } }, [1] = { @@ -190,7 +224,7 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { [0] = { .name = __("シゲゾウ$$$$ "), .facilityClass = FACILITY_CLASS_NINJA_BOY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_WIN, EC_WORD_UNTIL, EC_WORD_DAUGHTER, EC_MOVE(CONSTRICT), EC_WORD_OF, EC_WORD_WERE }, .speechWin = { EC_MOVE(CONSTRICT), EC_WORD_UNTIL, EC_WORD_LESS, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_EXCL }, .speechLose = { EC_WORD_YET, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_URGH, EC_WORD_ALMOST, EC_WORD_POWER, EC_WORD_NONE }, @@ -200,10 +234,14 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .species = SPECIES_ELECTRIKE, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 120, .attackEV = 120, + .defenseEV = 0, .speedEV = 120, .spAttackEV = 150, + .spDefenseEV = 0, .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, @@ -214,15 +252,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("ラクライ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [1] = { .species = SPECIES_CORPHISH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_KNOCK_OFF, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_PROTECT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -235,15 +276,18 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0x96, .nickname = __("ヘイガニ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [2] = { .species = SPECIES_BALTOY, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYBEAM, MOVE_ROCK_TOMB, MOVE_MUD_SLAP, MOVE_HARDEN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -256,32 +300,35 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ヤジロン$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, - [3] = DUMMY_HILL_MON, - [4] = DUMMY_HILL_MON, - [5] = DUMMY_HILL_MON, + [3] = NULL_BATTLE_TOWER_POKEMON, + [4] = NULL_BATTLE_TOWER_POKEMON, + [5] = NULL_BATTLE_TOWER_POKEMON, } }, [1] = { .name = __("ナミコ$$$$$ "), .facilityClass = FACILITY_CLASS_BEAUTY, - .unused = TRUE, + .unused = 0x1, .speechBefore = { EC_WORD_SISTER, EC_WORD_ALTHOUGH, EC_WORD_KIND, EC_WORD_MATCH, EC_WORD_PLEASE, EC_WORD_WITHOUT }, .speechWin = { EC_WORD_KIND, EC_WORD_ELLIPSIS, EC_WORD_INSTEAD, EC_WORD_DEEP, EC_WORD_WEAK, EC_WORD_QUES }, .speechLose = { EC_WORD_AWFUL, EC_WORD_GWAH, EC_WORD_HOPELESS, EC_WORD_CAN_T_WIN, EC_WORD_IS, EC_WORD_NONE }, .speechAfter = { EC_WORD_AWW, EC_EMPTY_WORD, EC_EMPTY_WORD, EC_WORD_ALMOST, EC_WORD_GOOD, EC_WORD_ANYWHERE }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_ICE_BALL, MOVE_BODY_SLAM, MOVE_WATER_GUN, MOVE_ENCORE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, + .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -294,13 +341,16 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("タマザラシ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SPOINK, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYWAVE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_MAGIC_COAT }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, + .attackEV = 0, .defenseEV = 100, .speedEV = 100, .spAttackEV = 110, @@ -315,12 +365,14 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 1, .personality = 0xf, .nickname = __("ãƒ�ãƒ�ブー$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_POOCHYENA, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_BITE, MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_SCARY_FACE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 70, .attackEV = 80, .defenseEV = 80, @@ -337,22 +389,39 @@ static const struct TrainerHillFloor sFloors_JPDefault[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ãƒ�ãƒ�エナ$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_1/collision.bin"), - .trainerCoords = { COORDS_XY(7,6), COORDS_XY(7,10) }, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3) + .display = { + .metatileData = { + 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, + 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x08, + 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x08, + 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x08, + 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, + 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, + 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = { 0x0381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff }, + .coords = { COORDS_XY(7,6), COORDS_XY(7,10) }, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3) } }, }; -static const struct TrainerHillChallenge sChallenge_Normal = +static const struct TrHillTag sDataTagNormal = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 2, @@ -360,7 +429,7 @@ static const struct TrainerHillChallenge sChallenge_Normal = .checksum = 0x00051E05 }; -static const struct TrainerHillFloor sFloors_Normal[] = +static const struct TrHillFloor sDataTagNormal_Floors[] = { [0] = { @@ -372,6 +441,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("ALAINA"), .facilityClass = FACILITY_CLASS_HEX_MANIAC, + .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_CHOOSE, EC_WORD_NOT, EC_WORD_TO, EC_WORD_BELIEVE}, .speechWin = {EC_WORD_A, EC_WORD_SUPER, EC_WORD_NATURAL, EC_WORD_POWER, EC_WORD_HAS, EC_WORD_COME}, .speechLose = {EC_WORD_THIS, EC_WORD_MUST_BE, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_EXCL, EC_EMPTY_WORD}, @@ -383,6 +453,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_MISDREAVUS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -396,13 +468,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MISDREAVUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SOLROCK, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -417,13 +491,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SOLROCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_CLAYDOL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 135, .spDefenseEV = 120, @@ -437,13 +513,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xC, .nickname = _("CLAYDOL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_WEEZING, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -464,6 +542,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_LUNATONE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -478,13 +558,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("LUNATONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_FLYGON, .heldItem = ITEM_CHOICE_BAND, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_FLAMETHROWER}, + .level = 0, + .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -498,7 +580,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x83, .nickname = _("FLYGON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -506,6 +588,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("ALFONSO"), .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_TAKE, EC_WORD_A, EC_WORD_TRAIN, EC_EMPTY_WORD}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(SUPERSONIC), EC_WORD_ON, EC_WORD_MY, EC_WORD_BIKE}, .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL, EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_IT}, @@ -517,6 +600,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_SEALEO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_ICE_BALL, MOVE_ENCORE, MOVE_HAIL}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -529,13 +614,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SEALEO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_AMPHAROS, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -548,13 +635,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("AMPHAROS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_MACHOKE, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MUD_SLAP, MOVE_COUNTER, MOVE_SCARY_FACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -567,13 +656,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOKE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_FLAREON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_BLAST, MOVE_BITE, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -586,13 +677,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x28, .nickname = _("FLAREON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MAGNETON, .heldItem = ITEM_MAGNET, .moves = {MOVE_ZAP_CANNON, MOVE_THUNDER_WAVE, MOVE_SCREECH, MOVE_METAL_SOUND}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -605,13 +698,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MAGNETON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_PINSIR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 155, .spDefenseEV = 155, @@ -625,18 +720,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x85, .nickname = _("PINSIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(11,1), COORDS_XY(13,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(2, 1), - } + .display = { + .metatileData = { + 0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x08, + 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x08, + 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x08, + 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x08, + 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x08, + 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x08, + 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x08, + 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x08, + 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x08, + 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, + 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x08, + 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x3FE5, 0x0401, 0xBDED, 0x8425, 0xDFBD, 0x0221, 0x7E7F, 0x0941, 0x7F7D, 0x0911, 0x7FF7, 0x4101, 0x79F9, 0x0803, 0xFFFF}, + .coords = {COORDS_XY(11,1), COORDS_XY(13,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .range = TRAINER_RANGE(2, 1), + } }, [1] = { @@ -648,6 +760,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("THEODORE"), .facilityClass = FACILITY_CLASS_BLACK_BELT, + .unused = 0, .speechBefore = {EC_WORD_MY, EC_WORD_POWER, EC_WORD_WILL, EC_MOVE2(STOMP), EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AT, EC_WORD_IT, EC_WORD_TOO, EC_WORD_HARD}, @@ -659,6 +772,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_MEDITITE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -672,13 +787,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("MEDITITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_HERACROSS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -692,13 +809,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0x80, .nickname = _("HERACROSS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_HITMONTOP, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -712,13 +831,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONTOP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MACHOP, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -732,13 +853,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PINSIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -752,13 +875,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("PINSIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -772,7 +897,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -780,6 +905,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("JAYDEN"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, + .unused = 0, .speechBefore = {EC_WORD_SOME, EC_WORD_THINGS, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_DO, EC_WORD_ALONE}, .speechWin = {EC_WORD_YOU, EC_WORD_WIN, EC_WORD_AS, EC_WORD_A, EC_WORD_GROUP, EC_EMPTY_WORD}, .speechLose = {EC_WORD_WE, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_TOGETHER, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -791,6 +917,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_VULPIX, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_TAIL_WHIP, MOVE_OVERHEAT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -804,13 +932,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("VULPIX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDER_WAVE, MOVE_CHARM, MOVE_ENCORE, MOVE_SPARK}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -824,13 +954,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TOXIC, MOVE_LEECH_SEED, MOVE_SWEET_SCENT, MOVE_GIGA_DRAIN}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -844,13 +976,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("ROSELIA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MR_MIME, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_SAFEGUARD, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -864,13 +998,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x82, .nickname = _("MR. MIME"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_HELPING_HAND, MOVE_THUNDER}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -884,13 +1020,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x5, .nickname = _("PLUSLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_TOGEPI, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOLLOW_ME, MOVE_METRONOME}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -904,18 +1042,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0x37, .nickname = _("TOGEPI"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(4,11), COORDS_XY(9,14)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 5), - } + .display = { + .metatileData = { + 0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x08, + 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x08, + 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x08, + 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, + 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, + 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF}, + .coords = {COORDS_XY(4,11), COORDS_XY(9,14)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), + .range = TRAINER_RANGE(3, 5), + } }, [2] = { @@ -927,6 +1082,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("SALVADORE"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, + .unused = 0, .speechBefore = {EC_WORD_LET_S, EC_MOVE2(WRAP), EC_WORD_THINGS, EC_WORD_UP, EC_WORD_HERE, EC_WORD_HEY_QUES}, .speechWin = {EC_WORD_WOULD, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SORRY, EC_WORD_FRIEND}, @@ -938,6 +1094,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_VAPOREON, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_HAZE, MOVE_HELPING_HAND, MOVE_TICKLE, MOVE_WATER_PULSE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -958,6 +1116,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_DODRIO, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_HAZE, MOVE_TRI_ATTACK, MOVE_TAUNT, MOVE_TORMENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -978,6 +1138,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_OMASTAR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HAZE, MOVE_HYDRO_PUMP, MOVE_TICKLE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -991,13 +1153,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x14, .nickname = _("OMASTAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_LICKITUNG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1011,13 +1175,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LICKITUNG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SLOWBRO, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_BELLY_DRUM, MOVE_MUD_SLAP, MOVE_SWAGGER, MOVE_AMNESIA}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1038,6 +1204,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_LINOONE, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1051,7 +1219,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LINOONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1059,6 +1227,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("VERONICA"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, + .unused = 0, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_STRONG, EC_WORD_BEAUTY, EC_WORD_AROUND, EC_WORD_HERE}, .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL}, @@ -1070,6 +1239,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_SKITTY, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCH_UP, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_IRON_TAIL}, + .level = 0, + .ppBonuses = 0, .attackEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -1082,13 +1253,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xCB, .nickname = _("SKITTY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MEDICHAM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -1109,6 +1282,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_STANTLER, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCH_UP, MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -1129,6 +1304,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_NIDOQUEEN, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SUPERPOWER, MOVE_BITE, MOVE_CHARM, MOVE_FLATTER}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -1149,6 +1326,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_NINETALES, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_QUICK_ATTACK, MOVE_SPITE, MOVE_TAIL_WHIP}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1162,13 +1341,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xD7, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_CHARIZARD, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_BEAT_UP, MOVE_SCARY_FACE, MOVE_GROWL}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1182,18 +1363,35 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x28, .nickname = _("CHARIZARD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(5,2), COORDS_XY(9,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), - } + .display = { + .metatileData = { + 0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x08, + 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, + 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, + 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x08, + 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x08, + 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x08, + }, + .collisionData = {0x0381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1}, + .coords = {COORDS_XY(5,2), COORDS_XY(9,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), + } }, [3] = { @@ -1205,6 +1403,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("KEENAN"), .facilityClass = FACILITY_CLASS_PSYCHIC_M, + .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_HURRIED, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechWin = {EC_WORD_TOO, EC_WORD_BAD, EC_EMPTY_WORD, EC_WORD_TIME, EC_WORD_IS, EC_WORD_UP}, .speechLose = {EC_WORD_DOES, EC_WORD_THE, EC_WORD_TIME, EC_WORD_WORRY, EC_WORD_YOU, EC_WORD_QUES}, @@ -1216,6 +1415,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_ALAKAZAM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_REFLECT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1228,13 +1429,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x41, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_BLISSEY, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SKILL_SWAP, MOVE_EGG_BOMB, MOVE_THUNDERBOLT, MOVE_SING}, + .level = 0, + .ppBonuses = 0, .defenseEV = 255, .spAttackEV = 155, .spDefenseEV = 100, @@ -1248,13 +1451,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("BLISSEY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spAttackEV = 200, @@ -1268,13 +1473,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GRUMPIG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1287,13 +1494,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 1, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_VENOMOTH, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKILL_SWAP, MOVE_SIGNAL_BEAM, MOVE_SLEEP_POWDER, MOVE_TOXIC}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1306,13 +1515,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x80, .nickname = _("VENOMOTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1325,7 +1536,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0xF, .nickname = _("ESPEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1333,6 +1544,7 @@ static const struct TrainerHillFloor sFloors_Normal[] = { .name = _("KRISTINA"), .facilityClass = FACILITY_CLASS_AROMA_LADY, + .unused = 0, .speechBefore = {EC_WORD_IT_S, EC_WORD_HOT, EC_WORD_ELLIPSIS, EC_WORD_WHAT, EC_WORD_A, EC_WORD_STENCH}, .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_OFFENSIVE, EC_WORD_STENCH}, .speechLose = {EC_WORD_I, EC_MOVE2(COVET), EC_WORD_ANY, EC_WORD_STRONG, EC_WORD_STENCH, EC_EMPTY_WORD}, @@ -1344,6 +1556,8 @@ static const struct TrainerHillFloor sFloors_Normal[] = .species = SPECIES_WEEZING, .heldItem = ITEM_POISON_BARB, .moves = {MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_SMOKESCREEN, MOVE_HAZE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1356,13 +1570,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("WEEZING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GLOOM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_PETAL_DANCE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1375,13 +1591,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GLOOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_MUK, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SCREECH, MOVE_DISABLE, MOVE_SLUDGE_BOMB, MOVE_ACID_ARMOR}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1394,13 +1612,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x3, .nickname = _("MUK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_TROPIUS, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_SWEET_SCENT, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .attackEV = 120, .speedEV = 255, .spAttackEV = 135, @@ -1414,13 +1634,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x83, .nickname = _("TROPIUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_BELLOSSOM, .heldItem = ITEM_MENTAL_HERB, .moves = {MOVE_SWEET_SCENT, MOVE_PETAL_DANCE, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1433,13 +1655,15 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x6, .nickname = _("BELLOSSOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MEGANIUM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_RAZOR_LEAF, MOVE_BODY_SLAM, MOVE_LEECH_SEED, MOVE_SYNTHESIS}, + .level = 0, + .ppBonuses = 0, .attackEV = 200, .speedEV = 110, .spAttackEV = 200, @@ -1453,22 +1677,39 @@ static const struct TrainerHillFloor sFloors_Normal[] = .abilityNum = 0, .personality = 0x1F, .nickname = _("MEGANIUM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(7,4), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), - } + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, + 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x08, + 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x08, + 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x08, + 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x08, + 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x08, + 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x0401, 0x1, 0x8401, 0x8465, 0x0445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF}, + .coords = {COORDS_XY(7,4), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), + } }, }; -static const struct TrainerHillChallenge sChallenge_Variety = +static const struct TrHillTag sDataTagVariety = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -1476,7 +1717,7 @@ static const struct TrainerHillChallenge sChallenge_Variety = .checksum = 0x00054C15 }; -static const struct TrainerHillFloor sFloors_Variety[] = { +static const struct TrHillFloor sDataTagVariety_Floors[] = { [0] = { .trainerNum1 = 41, @@ -1487,6 +1728,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("TERRANCE"), .facilityClass = FACILITY_CLASS_GENTLEMAN, + .unused = 0, .speechBefore = {EC_WORD_GOOD, EC_WORD_CHILDREN, EC_WORD_WILL, EC_WORD_GET, EC_WORD_A, EC_MOVE2(PRESENT)}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_IS, EC_WORD_YOUR, EC_MOVE2(PRESENT)}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_TO, EC_WORD_YOU, EC_EMPTY_WORD}, @@ -1498,6 +1740,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_DELIBIRD, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SPLASH, MOVE_HAIL, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1510,13 +1754,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("DELIBIRD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_CLEFAIRY, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1529,13 +1775,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CLEFAIRY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_PIKACHU, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_AGILITY}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1548,13 +1796,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("PIKACHU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MARILL, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_ENDURE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1567,13 +1817,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("MARILL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SING, MOVE_DISABLE, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1586,13 +1838,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("JIGGLYPUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_TOGETIC, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_CHARM, MOVE_SWEET_KISS, MOVE_WISH}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1605,7 +1859,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x26, .nickname = _("TOGETIC"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1613,6 +1867,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ELIZABETH"), .facilityClass = FACILITY_CLASS_LADY, + .unused = 0, .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SENSE, EC_WORD_ME, EC_MOVE(FOCUS_ENERGY), EC_WORD_QUES}, .speechWin = {EC_WORD_THAT_S, EC_WORD_ABOUT, EC_WORD_RIGHT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_THINK}, .speechLose = {EC_WORD_THINGS, EC_WORD_DON_T, EC_WORD_ALWAYS, EC_WORD_WORK, EC_WORD_OUT, EC_EMPTY_WORD}, @@ -1624,6 +1879,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_WIGGLYTUFF, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SING, MOVE_DREAM_EATER}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1636,13 +1893,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xC1, .nickname = _("WIGGLYTUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SABLEYE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1655,13 +1914,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SABLEYE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_BOUNCE, MOVE_FUTURE_SIGHT}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1674,13 +1935,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("GRUMPIG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_CORSOLA, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_BUBBLE_BEAM, MOVE_ROCK_BLAST, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1693,13 +1956,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x12, .nickname = _("CORSOLA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_CLAMPERL, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_WHIRLPOOL, MOVE_IRON_DEFENSE, MOVE_ENDURE, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1712,13 +1977,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("CLAMPERL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_DIVE, MOVE_ICY_WIND, MOVE_SWIFT, MOVE_SKILL_SWAP}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1731,17 +1998,34 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(5,8), COORDS_XY(9,8)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x08, + 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x08, + 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x08, + 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x08, + 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x08, + 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1}, + .coords = {COORDS_XY(5,8), COORDS_XY(9,8)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, [1] = @@ -1754,6 +2038,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ANNABELL"), .facilityClass = FACILITY_CLASS_PARASOL_LADY, + .unused = 0, .speechBefore = {EC_WORD_HI, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_UPBEAT, EC_WORD_QUES}, .speechWin = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_WELL, EC_WORD_QUES, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_SEE, EC_WORD_YOU_RE, EC_WORD_FEELING, EC_WORD_GREAT}, @@ -1765,6 +2050,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SING, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1781,13 +2068,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JIGGLYPUFF"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_JYNX, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_PERISH_SONG, MOVE_FAKE_TEARS, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1804,13 +2093,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JYNX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HOWL, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1827,13 +2118,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("EXPLOUD"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_ABSOL, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1850,13 +2143,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("ABSOL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PIDGEOTTO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_FEATHER_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1873,13 +2168,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("PIDGEOTTO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -1896,7 +2193,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("ALTARIA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -1904,6 +2201,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("COLEMAN"), .facilityClass = FACILITY_CLASS_COLLECTOR, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_SOMEONE, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL}, .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(HEAL_BELL), EC_WORD_TO_ME, EC_WORD_EXCL}, @@ -1915,6 +2213,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_CHIMECHO, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1928,13 +2228,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CHIMECHO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_WHISMUR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1948,13 +2250,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("WHISMUR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_YANMA, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -1968,13 +2272,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("YANMA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -1988,13 +2294,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ILLUMISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -2008,13 +2316,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SPHEAL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_VIGOROTH, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2028,17 +2338,34 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("VIGOROTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(3,8), COORDS_XY(11,8)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(7, 7), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x08, + 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x08, + 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x08, + 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, + 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x08, + 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x08, + 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x08, + 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x08, + 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x08, + 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(3,8), COORDS_XY(11,8)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(7, 7), } }, [2] = @@ -2051,6 +2378,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("ENRIQUE"), .facilityClass = FACILITY_CLASS_RICH_BOY, + .unused = 0, .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_TIME}, .speechWin = {EC_WORD_HEY, EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_WHAT_S_UP_QUES, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechLose = {EC_WORD_AWW, EC_WORD_COULDN_T, EC_WORD_YOU, EC_WORD_LET_ME_WIN, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -2062,6 +2390,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_WOOPER, .heldItem = ITEM_FIGY_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_YAWN, MOVE_SURF, MOVE_HAZE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2075,13 +2405,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("WOOPER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_POLIWAG, .heldItem = ITEM_WIKI_BERRY, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_MIST, MOVE_HYPNOSIS}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2095,13 +2427,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0x3, .nickname = _("POLIWAG"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_PSYDUCK, .heldItem = ITEM_AGUAV_BERRY, .moves = {MOVE_HYPNOSIS, MOVE_SURF, MOVE_DISABLE, MOVE_SEISMIC_TOSS}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -2115,13 +2449,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("PSYDUCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_RHYDON, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2142,6 +2478,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_RHYHORN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2162,6 +2500,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_CUBONE, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2183,6 +2523,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("COLLEEN"), .facilityClass = FACILITY_CLASS_LADY, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_OUT}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ROCK, EC_WORD_THING, EC_WORD_EXCL}, .speechLose = {EC_WORD_GO_AHEAD, EC_WORD_AND, EC_WORD_CRUSH, EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ELLIPSIS}, @@ -2194,6 +2535,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_MAGNEMITE, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_ZAP_CANNON, MOVE_SPARK, MOVE_THUNDER_SHOCK}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2207,13 +2550,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MAGNEMITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ELECTABUZZ, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_SHOCK_WAVE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2227,13 +2572,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x41, .nickname = _("ELECTABUZZ"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_FLAAFFY, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_SHOCK_WAVE, MOVE_THUNDER_SHOCK}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .spAttackEV = 130, .otId = TRAINER_HILL_OTID, @@ -2246,13 +2593,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("FLAAFFY"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_BALTOY, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2273,6 +2622,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_PINECO, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2293,6 +2644,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_VOLTORB, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2311,12 +2664,29 @@ static const struct TrainerHillFloor sFloors_Variety[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(9,1), COORDS_XY(14,1)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(4, 4), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, + 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, + 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x08, + }, + .collisionData = {0x0381, 0x0381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1}, + .coords = {COORDS_XY(9,1), COORDS_XY(14,1)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(4, 4), } }, [3] = @@ -2329,6 +2699,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("KIMBERLY"), .facilityClass = FACILITY_CLASS_POKEFAN_F, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_WORKING, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_KID, EC_WORD_IT, EC_WORD_SEEMS}, @@ -2340,6 +2711,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2352,13 +2725,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x202, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2371,13 +2746,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x10001, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_UNOWN, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2390,13 +2767,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x102, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2410,13 +2789,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x88FE980F, .nickname = _("SPINDA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2429,13 +2810,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PLUSLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_VOLBEAT, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_SIGNAL_BEAM, MOVE_SOLAR_BEAM, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2448,7 +2831,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("VOLBEAT"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -2456,6 +2839,7 @@ static const struct TrainerHillFloor sFloors_Variety[] = { { .name = _("FRANCISCO"), .facilityClass = FACILITY_CLASS_POKEFAN_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO, EC_EMPTY_WORD}, .speechWin = {EC_WORD_SO, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_LOSE, EC_EMPTY_WORD}, .speechLose = {EC_WORD_NO, EC_WORD_WONDER, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_BEAT, EC_WORD_YOU}, @@ -2467,6 +2851,8 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2480,13 +2866,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xE2880098, .nickname = _("SPINDA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2499,13 +2887,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_WISH, MOVE_THUNDERBOLT, MOVE_MOONLIGHT}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2518,13 +2908,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ILLUMISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_UNOWN, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2537,13 +2929,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x302, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_UNOWN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2556,13 +2950,15 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x203, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_UNOWN, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2575,22 +2971,39 @@ static const struct TrainerHillFloor sFloors_Variety[] = { .abilityNum = 0, .personality = 0x301, .nickname = _("UNOWN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(10,2), COORDS_XY(14,2)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, + 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x08, + 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x08, + 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, + 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x08, + 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x08, + 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, + 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x08, + 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF}, + .coords = {COORDS_XY(10,2), COORDS_XY(14,2)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, }; -static const struct TrainerHillChallenge sChallenge_Unique = +static const struct TrHillTag sDataTagUnique = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 3, @@ -2598,7 +3011,7 @@ static const struct TrainerHillChallenge sChallenge_Unique = .checksum = 0x000652F3 }; -static const struct TrainerHillFloor sFloors_Unique[] = { +static const struct TrHillFloor sDataTagUnique_Floors[] = { [0] = { .trainerNum1 = 49, @@ -2609,6 +3022,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("MEREDITH"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, + .unused = 0, .speechBefore = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_I, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, .speechWin = {EC_WORD_OH, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_UM, EC_WORD_ELLIPSIS, EC_WORD_YAY}, .speechLose = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_WAAAH, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, @@ -2620,6 +3034,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SUNFLORA, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_PETAL_DANCE, MOVE_GRASS_WHISTLE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 155, .spDefenseEV = 100, @@ -2633,13 +3049,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("SUNFLORA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_TANGELA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_AMNESIA, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -2652,13 +3070,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x91, .nickname = _("TANGELA"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_VENUSAUR, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, @@ -2674,13 +3094,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x1F, .nickname = _("VENUSAUR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_LANTURN, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_SPARK, MOVE_WATER_PULSE, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2693,13 +3115,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("LANTURN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MANECTRIC, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDERBOLT, MOVE_HEADBUTT, MOVE_BITE, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2712,13 +3136,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("MANECTRIC"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_RAIKOU, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDER, MOVE_CRUNCH, MOVE_ROAR, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2731,7 +3157,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("RAIKOU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -2739,6 +3165,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("BERNARD"), .facilityClass = FACILITY_CLASS_KINDLER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_HOT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_COOL, EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_QUES}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_PERSON}, @@ -2750,6 +3177,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_MUD_SPORT, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .hpEV = 155, .defenseEV = 100, .spDefenseEV = 255, @@ -2763,13 +3192,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x2F, .nickname = _("RELICANTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GOLDUCK, .heldItem = ITEM_LAX_INCENSE, .moves = {MOVE_SURF, MOVE_PSYBEAM, MOVE_BRICK_BREAK, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2782,13 +3213,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GOLDUCK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_BLASTOISE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_MIRROR_COAT, MOVE_RAIN_DANCE}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2801,13 +3234,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLASTOISE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_MAGCARGO, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HEAT_WAVE, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -2820,13 +3255,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x93, .nickname = _("MAGCARGO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_RAPIDASH, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2839,13 +3276,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("RAPIDASH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MOLTRES, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKY_ATTACK, MOVE_AERIAL_ACE, MOVE_ROAR, MOVE_SUNNY_DAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2858,17 +3297,34 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("MOLTRES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(4,3), COORDS_XY(7,3)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(2, 2), + .display = { + .metatileData = { + 0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x08, + 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, + 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x08, + 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, + 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF}, + .coords = {COORDS_XY(4,3), COORDS_XY(7,3)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(2, 2), } }, [1] = @@ -2881,6 +3337,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("ABRAHAM"), .facilityClass = FACILITY_CLASS_RUIN_MANIAC, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST}, .speechWin = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_GREAT, EC_WORD_POKEMON, EC_WORD_IT, EC_WORD_IS}, .speechLose = {EC_WORD_I, EC_WORD_CONFUSED, EC_WORD_A, EC_WORD_MOVE, EC_WORD_WITH, EC_WORD_ANOTHER}, @@ -2892,6 +3349,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -2905,13 +3364,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_REST, MOVE_THUNDER_WAVE, MOVE_FLAMETHROWER, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -2925,13 +3386,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_EXPLOSION}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -2945,13 +3408,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -2965,13 +3430,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_IMPRISON}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2985,13 +3452,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3005,7 +3474,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3013,6 +3482,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("LUC"), .facilityClass = FACILITY_CLASS_TUBER_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_RARE, EC_WORD_MOVE}, .speechWin = {EC_WORD_MY, EC_WORD_RARE, EC_WORD_MOVE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES}, .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_MOVE, EC_WORD_QUES}, @@ -3024,6 +3494,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_STARYU, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CAMOUFLAGE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3037,13 +3509,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARYU"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MEOWTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PAY_DAY, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3057,13 +3531,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("MEOWTH"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_BLAZIKEN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_BLAZE_KICK, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -3077,13 +3553,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLAZIKEN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_CUBONE, .heldItem = ITEM_THICK_CLUB, .moves = {MOVE_BONEMERANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .spDefenseEV = 252, @@ -3097,13 +3575,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x16, .nickname = _("CUBONE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_BEEDRILL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_TWINEEDLE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -3116,13 +3596,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("BEEDRILL"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_RATICATE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SUPER_FANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3136,17 +3618,34 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("RATICATE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(9,6), COORDS_XY(13,6)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x08, + 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x08, + 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x08, + 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x08, + 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x08, + 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x08, + 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x08, + 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x08, + 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x08, + 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x08, + 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7C1, 0x8AA1, 0x0209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF}, + .coords = {COORDS_XY(9,6), COORDS_XY(13,6)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(3, 3), } }, [2] = @@ -3159,6 +3658,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("BREYDEN"), .facilityClass = FACILITY_CLASS_YOUNGSTER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CARE, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_A_LOT}, .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_CAN, EC_WORD_DO, EC_WORD_IT, EC_WORD_ALL}, .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_LIKE, EC_WORD_WE, EC_WORD_ALWAYS, EC_WORD_WIN}, @@ -3170,6 +3670,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CHARMELEON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_SPIN, MOVE_DRAGON_RAGE, MOVE_FLAMETHROWER, MOVE_SLASH}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3190,6 +3692,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_WARTORTLE, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HYDRO_PUMP, MOVE_SKULL_BASH, MOVE_RAIN_DANCE, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .otId = TRAINER_HILL_OTID, @@ -3209,6 +3713,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_IVYSAUR, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SYNTHESIS, MOVE_GROWTH, MOVE_SWEET_SCENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -3229,6 +3735,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_BAYLEEF, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .attackEV = 130, .spAttackEV = 130, @@ -3249,6 +3757,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CROCONAW, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_SCARY_FACE, MOVE_SLASH, MOVE_HYDRO_PUMP, MOVE_SCREECH}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -3269,6 +3779,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_QUILAVA, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_FLAME_WHEEL, MOVE_SWIFT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3290,6 +3802,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("ANIYA"), .facilityClass = FACILITY_CLASS_TUBER_F, + .unused = 0, .speechBefore = {EC_WORD_SOMEONE, EC_WORD_GOT, EC_WORD_ME, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_EGG}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NEW, EC_WORD_AT, EC_WORD_THIS, EC_WORD_EXCL}, .speechLose = {EC_WORD_OH, EC_WORD_BUT, EC_WORD_ELLIPSIS, EC_WORD_WHY, EC_WORD_WHY, EC_WORD_QUES_EXCL}, @@ -3301,6 +3814,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SMOOCHUM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_SWEET_KISS, MOVE_FAKE_TEARS}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3321,6 +3836,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_AZURILL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SURF, MOVE_SING, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3341,6 +3858,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_ELEKID, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3361,6 +3880,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_CLEFFA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SWEET_KISS, MOVE_SING, MOVE_METRONOME}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3381,6 +3902,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_WYNAUT, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -3401,6 +3924,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_MAGBY, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_FIRE_BLAST, MOVE_CONFUSE_RAY, MOVE_THUNDER_PUNCH, MOVE_BARRIER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3419,12 +3944,29 @@ static const struct TrainerHillFloor sFloors_Unique[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(6,9), COORDS_XY(8,9)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(1, 1), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x08, + 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x08, + 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x08, + 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, + 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x08, + 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x08, + 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF}, + .coords = {COORDS_XY(6,9), COORDS_XY(8,9)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(1, 1), } }, [3] = @@ -3437,6 +3979,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("DANE"), .facilityClass = FACILITY_CLASS_BIRD_KEEPER, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_VACATION}, .speechWin = {EC_WORD_IT_S, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_TRAVEL, EC_WORD_AND, EC_WORD_BATTLE}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_MY, EC_WORD_RARE, EC_WORD_POKEMON, EC_WORD_EXCL}, @@ -3448,6 +3991,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_SUDOWOODO, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_BLOCK, MOVE_TOXIC, MOVE_EXPLOSION}, + .level = 0, + .ppBonuses = 0, .hpEV = 100, .attackEV = 255, .spDefenseEV = 155, @@ -3461,13 +4006,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SUDOWOODO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_DISABLE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3480,13 +4027,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x8C, .nickname = _("SLOWKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_ENTEI, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_FIRE_SPIN, MOVE_ROAR}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3499,13 +4048,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ENTEI"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_PUNCH, MOVE_DETECT, MOVE_COUNTER, MOVE_SKY_UPPERCUT}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -3518,13 +4069,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_MANTINE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3537,13 +4090,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0x6, .nickname = _("MANTINE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ZAPDOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_AGILITY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3556,7 +4111,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x18, .nickname = _("ZAPDOS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3564,6 +4119,7 @@ static const struct TrainerHillFloor sFloors_Unique[] = { { .name = _("STEPHANIE"), .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + .unused = 0, .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_HOW, EC_WORD_NOW, EC_WORD_QUES}, .speechLose = {EC_WORD_YES, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_DO, EC_WORD_IT}, @@ -3575,6 +4131,8 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .species = SPECIES_HITMONLEE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3587,13 +4145,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONLEE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_PORYGON2, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_LOCK_ON, MOVE_BLIZZARD, MOVE_CONVERSION_2, MOVE_PSYCHIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3606,13 +4166,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PORYGON2"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_SUICUNE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SURF, MOVE_CALM_MIND, MOVE_MIRROR_COAT, MOVE_MIST}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3625,13 +4187,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("SUICUNE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_HOUNDOOM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_ROAR, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3644,13 +4208,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("HOUNDOOM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_STANTLER, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CONFUSE_RAY, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_TAKE_DOWN}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -3663,13 +4229,15 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("STANTLER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ARTICUNO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_SHEER_COLD, MOVE_MIST, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3682,22 +4250,39 @@ static const struct TrainerHillFloor sFloors_Unique[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ARTICUNO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(8,2), COORDS_XY(11,5)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x08, + 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, + 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x08, + 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF}, + .coords = {COORDS_XY(8,2), COORDS_XY(11,5)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, }; -static const struct TrainerHillChallenge sChallenge_Expert = +static const struct TrHillTag sDataTagExpert = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -3705,7 +4290,7 @@ static const struct TrainerHillChallenge sChallenge_Expert = .checksum = 0x00061F3F }; -static const struct TrainerHillFloor sFloors_Expert[] = { +static const struct TrHillFloor sDataTagExpert_Floors[] = { [0] = { .trainerNum1 = 57, @@ -3716,6 +4301,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("ALFRED"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, + .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_CAN, EC_WORD_TAKE, EC_WORD_ON, EC_WORD_ANY, EC_WORD_TYPE}, .speechWin = {EC_WORD_WE, EC_WORD_DID, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_OKAY, EC_WORD_EXCL}, .speechLose = {EC_WORD_OUR, EC_WORD_STRATEGY, EC_WORD_ISN_T, EC_WORD_ANY, EC_WORD_GOOD, EC_WORD_ELLIPSIS}, @@ -3727,6 +4313,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SNORLAX, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .defenseEV = 252, @@ -3740,13 +4328,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x35, .nickname = _("SNORLAX"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MILTANK, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_MILK_DRINK}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3760,13 +4350,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MILTANK"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spAttackEV = 6, @@ -3780,13 +4372,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("URSARING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_SLAKING, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_REST}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .spDefenseEV = 252, @@ -3800,13 +4394,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SLAKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_KANGASKHAN, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_FAKE_OUT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3820,13 +4416,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("KANGASKHAN"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ZANGOOSE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_ROAR}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3840,7 +4438,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("ZANGOOSE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -3848,6 +4446,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("EDIE"), .facilityClass = FACILITY_CLASS_PSYCHIC_F, + .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_WILL_BE_HERE, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_TRAINER, EC_WORD_CHALLENGE}, .speechWin = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION, EC_WORD_EXCL}, .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THAT, EC_WORD_WON_T, EC_WORD_DO}, @@ -3859,6 +4458,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_SKILL_SWAP}, + .level = 0, + .ppBonuses = 0, .hpEV = 200, .defenseEV = 110, .spAttackEV = 200, @@ -3872,13 +4473,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("SLOWKING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_CALM_MIND, MOVE_REFLECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3892,13 +4495,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("ESPEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3912,13 +4517,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3932,13 +4539,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_MAGICAL_LEAF, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3952,13 +4561,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_RECOVER, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3972,17 +4583,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_0/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_0/collision.bin"), - .trainerCoords = {COORDS_XY(4,7), COORDS_XY(10,7)}, - .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .trainerRanges = TRAINER_RANGE(5, 5), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, + 0x31, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x3B, 0x08, + 0x69, 0x73, 0x08, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x08, 0x69, 0x73, 0x08, + 0x40, 0x3B, 0x08, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x08, 0x31, 0x41, 0x08, + 0x69, 0x41, 0x08, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x08, 0x41, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, + 0x69, 0x41, 0x08, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x08, 0x41, 0x73, 0x08, + 0x40, 0x3B, 0x08, 0x08, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x08, 0x08, 0x31, 0x41, 0x08, + 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x08, + 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x08, + 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x0201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(4,7), COORDS_XY(10,7)}, + .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .range = TRAINER_RANGE(5, 5), } }, [1] = @@ -3995,6 +4623,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("RODERICK"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN, EC_WORD_WIN, EC_WORD_WITHOUT, EC_WORD_A, EC_MOVE2(HELPING_HAND)}, .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_THAT, EC_WORD_I, EC_WORD_WIN}, .speechLose = {EC_WORD_LOSING, EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SMALL, EC_WORD_ELLIPSIS}, @@ -4006,6 +4635,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4019,13 +4650,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("SWELLOW"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_MACHAMP, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_LOW_KICK, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4039,13 +4672,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MACHAMP"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4059,13 +4694,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("URSARING"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_KINGLER, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_RETURN, MOVE_PROTECT, MOVE_CRABHAMMER, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4079,13 +4716,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("KINGLER"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_TYRANITAR, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .defenseEV = 6, @@ -4099,13 +4738,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("TYRANITAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_DRAGONITE, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_BODY_SLAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4119,7 +4760,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("DRAGONITE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4127,6 +4768,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("ALICIA"), .facilityClass = FACILITY_CLASS_COOLTRAINER_F, + .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND), EC_WORD_EXCL}, .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_UNBELIEVABLE, EC_MOVE2(STRUGGLE), EC_WORD_THAT_WAS, EC_WORD_EXCL}, @@ -4138,6 +4780,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_JOLTEON, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4151,13 +4795,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("JOLTEON"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_ATTRACT, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4171,13 +4817,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ALAKAZAM"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_SWAGGER}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4191,13 +4839,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PURSUIT, MOVE_PROTECT, MOVE_ATTRACT, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4211,13 +4861,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x82, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_OVERHEAT, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_ATTRACT}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4231,13 +4883,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xD2, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4251,17 +4905,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("BANETTE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_1/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_1/collision.bin"), - .trainerCoords = {COORDS_XY(7,10), COORDS_XY(7,14)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x08, + 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x08, + 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x08, + 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x08, + 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, + 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x08, + 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x08, + 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, + 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x08, + 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, + 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + }, + .collisionData = {0x0381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, + .coords = {COORDS_XY(7,10), COORDS_XY(7,14)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, [2] = @@ -4274,6 +4945,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("TERRENCE"), .facilityClass = FACILITY_CLASS_EXPERT_M, + .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_THIS, EC_WORD_MATCH, EC_WORD_IS, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_EMPTY_WORD, EC_EMPTY_WORD}, @@ -4285,6 +4957,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_WOBBUFFET, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MIRROR_COAT, MOVE_COUNTER, MOVE_SAFEGUARD, MOVE_ENCORE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4298,13 +4972,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x94, .nickname = _("WOBBUFFET"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_VOICE, MOVE_COUNTER, MOVE_REST, MOVE_ROCK_SLIDE}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4325,6 +5001,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_CROBAT, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_TOXIC}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4338,13 +5016,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("CROBAT"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUGTRIO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_RETURN, MOVE_SLUDGE_BOMB}, + .level = 0, + .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -4358,13 +5038,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("DUGTRIO"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_TORMENT, MOVE_MIRROR_COAT, MOVE_THUNDERBOLT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -4385,6 +5067,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_GENGAR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -4398,7 +5082,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4406,6 +5090,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("CARLOTTA"), .facilityClass = FACILITY_CLASS_EXPERT_F, + .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_WE, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PARTY, EC_WORD_LATER}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_DISAPPOINT, EC_WORD_YOU}, @@ -4417,6 +5102,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_LAPRAS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PERISH_SONG, MOVE_SING}, + .level = 0, + .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4437,6 +5124,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_ABSOL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PERISH_SONG, MOVE_DOUBLE_EDGE, MOVE_PROTECT, MOVE_TORMENT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -4457,6 +5146,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PERISH_SONG, MOVE_PROTECT, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -4477,6 +5168,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_DEWGONG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_SIGNAL_BEAM, MOVE_REST, MOVE_PERISH_SONG}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -4497,6 +5190,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_POLITOED, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_MIND_READER, MOVE_PERISH_SONG}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -4517,6 +5212,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_MAROWAK, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PERISH_SONG, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_PROTECT}, + .level = 0, + .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spDefenseEV = 252, @@ -4535,12 +5232,29 @@ static const struct TrainerHillFloor sFloors_Expert[] = { }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_2/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_2/collision.bin"), - .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, + 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x08, + 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, + 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x08, + 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, + }, + .collisionData = {0x0381, 0x0201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201}, + .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, [3] = @@ -4553,6 +5267,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("NORA"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, + .unused = 0, .speechBefore = {EC_WORD_WAAAH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_WON}, .speechLose = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_LOST}, @@ -4564,6 +5279,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_FORRETRESS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_SPIKES}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -4577,13 +5294,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("FORRETRESS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4596,13 +5315,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 1, .personality = 0xC, .nickname = _("ELECTRODE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_EXEGGUTOR, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EXPLOSION, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_SOLAR_BEAM}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4615,13 +5336,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("EXEGGUTOR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -4635,13 +5358,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x93, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_OVERHEAT, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4654,13 +5379,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("NINETALES"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_THUNDER}, + .level = 0, + .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4673,7 +5400,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("BANETTE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, @@ -4681,6 +5408,7 @@ static const struct TrainerHillFloor sFloors_Expert[] = { { .name = _("GAV"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, + .unused = 0, .speechBefore = {EC_WORD_WAHAHAHA, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_STOP, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_WOWEE, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_COOL}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL}, @@ -4692,6 +5420,8 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .species = SPECIES_SALAMENCE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_ROCK_SLIDE, MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4704,13 +5434,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x95, .nickname = _("SALAMENCE"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [1] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, + .level = 0, + .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4723,13 +5455,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [2] = { .species = SPECIES_GYARADOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_BITE, MOVE_EARTHQUAKE}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4742,13 +5476,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GYARADOS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_MEAN_LOOK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, + .level = 0, + .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4761,13 +5497,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GENGAR"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [4] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -4781,13 +5519,15 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("DUSCLOPS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, [5] = { .species = SPECIES_MISDREAVUS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_PERISH_SONG, MOVE_SHADOW_BALL}, + .level = 0, + .ppBonuses = 0, .hpEV = 180, .defenseEV = 180, .spDefenseEV = 150, @@ -4801,17 +5541,34 @@ static const struct TrainerHillFloor sFloors_Expert[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("MISDREAVUS"), - .friendship = MAX_FRIENDSHIP, + .friendship = 255, }, }, }, }, - .map = { - .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_3/metatiles.bin"), - .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_3/collision.bin"), - .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .trainerRanges = TRAINER_RANGE(3, 3), + .display = { + .metatileData = { + 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, + 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, + 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, + 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, + 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, + 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, + 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, + 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, + 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x08, + 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, + 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, + 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, + 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, + 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, + 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, + 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, + }, + .collisionData = {0x0381, 0x0101, 0x0101, 0x6C1, 0x0821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x0821, 0x6C1, 0x0101, 0x101}, + .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .range = TRAINER_RANGE(3, 3), } }, }; 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 f9918c160..cf547a5d8 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), @@ -509,6 +539,23 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +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), +}; + +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), @@ -1272,7 +1319,7 @@ static const union AnimCmd *const sAnimTable_RayquazaSpotlightEffect[] = { sAnim_RayquazaSpotlightEffect, }; -static const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { +const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), }; diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f5189d838..8d0956f48 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -24,6 +24,13 @@ u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = { GetLimitedVectorDirection_SouthWestEast, }; +u8 (*const gMovementTypeFuncs_FollowingPokemon[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowingPokemon_Step0, + MovementType_FollowingPokemon_Step1, + MovementType_FollowingPokemon_Step2, + MovementType_FollowingPokemon_Step3, +}; + u8 (*const gMovementTypeFuncs_LookAround[])(struct ObjectEvent *, struct Sprite *) = { MovementType_LookAround_Step0, MovementType_LookAround_Step1, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h old mode 100644 new mode 100755 index 7455ecdfd..f05510ff8 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -363,6 +363,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.h b/src/data/object_events/object_event_graphics_info.h old mode 100644 new mode 100755 diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h old mode 100644 new mode 100755 index 855f9a112..1214eaec2 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -978,7 +978,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_FEAROW] = &gObjectEventGraphicsInfo_Fearow, [OBJ_EVENT_GFX_EKANS] = &gObjectEventGraphicsInfo_Ekans, [OBJ_EVENT_GFX_ARBOK] = &gObjectEventGraphicsInfo_Arbok, - [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, + [OBJ_EVENT_GFX_PIKACHU_FOLLOWER] = &gObjectEventGraphicsInfo_Pikachu_Follower, [OBJ_EVENT_GFX_RAICHU] = &gObjectEventGraphicsInfo_Raichu, [OBJ_EVENT_GFX_SANDSHREW] = &gObjectEventGraphicsInfo_Sandshrew, [OBJ_EVENT_GFX_SANDSLASH] = &gObjectEventGraphicsInfo_Sandslash, diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 2fb8f28ac..567639606 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -2281,3 +2281,3767 @@ static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 7), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 8), }; + +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_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_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), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 2), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 3), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), +}; + +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_Follow[] = { + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 0), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 1), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 2), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 3), + overworld_frame(gObjectEventPic_Pikachu_Follow, 4, 4, 4), + overworld_frame(gObjectEventPic_Pikachu_Follow, 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_Nidoran_F[] = { + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_F, 4, 4, 5), +}; + +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_Nidoran_M[] = { + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_M, 4, 4, 5), +}; + +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_Farfetchd[] = { + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 0), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 1), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 2), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 3), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 4), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 5), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 6), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 6), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 6), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 6), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 6), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 7), +}; + +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_Mr_Mime[] = { + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 0), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 1), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 2), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 3), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 4), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 5), +}; + +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_Follower[] = { + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Mew_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Mew_Follower, 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_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Azumarill_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = { + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Sudowoodo_Follower, 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_Unown_A[] = { + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_B[] = { + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_C[] = { + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_D[] = { + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_E[] = { + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_F[] = { + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_G[] = { + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_H[] = { + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_I[] = { + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_J[] = { + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_K[] = { + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_L[] = { + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_M[] = { + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_N[] = { + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_O[] = { + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_P[] = { + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Q[] = { + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_R[] = { + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_S[] = { + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_T[] = { + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_U[] = { + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_V[] = { + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_W[] = { + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_X[] = { + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Y[] = { + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Z[] = { + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Exclamation[] = { + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Unown_Question[] = { + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 5), +}; + +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, 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), + 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), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 6), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 6), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 7), +}; + +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), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 6), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 7), +}; + +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_Follower[] = { + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_Lugia_Follower, 8, 8, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_HoOh_Follower[] = { + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 0), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 1), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 2), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 3), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 4), + overworld_frame(gObjectEventPic_HoOh_Follower, 8, 8, 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_Follower[] = { + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Poochyena_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Poochyena_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Zigzagoon_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Wingull_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Wingull_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kirlia_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kirlia_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Vigoroth_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Azurill_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Azurill_Follower, 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_Follower[] = { + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Skitty_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Skitty_Follower, 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), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 6), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 7), +}; + +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, 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), + 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_Castform[] = { + overworld_frame(gObjectEventPic_Castform, 4, 4, 0), + overworld_frame(gObjectEventPic_Castform, 4, 4, 1), + overworld_frame(gObjectEventPic_Castform, 4, 4, 2), + overworld_frame(gObjectEventPic_Castform, 4, 4, 3), + overworld_frame(gObjectEventPic_Castform, 4, 4, 4), + overworld_frame(gObjectEventPic_Castform, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Kecleon_Follower[] = { + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kecleon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kecleon_Follower, 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), + 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_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_Follower[] = { + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Dusclops_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Dusclops_Follower, 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), + overworld_frame(gObjectEventPic_Absol, 4, 4, 6), + overworld_frame(gObjectEventPic_Absol, 4, 4, 7), +}; + +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_Follower[] = { + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Kyogre_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Groudon_Follower[] = { + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Groudon_Follower, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Rayquaza_Follower[] = { + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 0), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 1), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 2), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 3), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 4, 4, 4), + overworld_frame(gObjectEventPic_Rayquaza_Follower, 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_Normal[] = { + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Normal, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Attack[] = { + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Attack, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Defense[] = { + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Defense, 4, 4, 5), +}; + +const struct SpriteFrameImage gObjectEventPicTable_Deoxys_Speed[] = { + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_Speed, 4, 4, 5), +}; diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 6b6ab12aa..d851dfbe1 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -20,8 +20,8 @@ .evYield_Speed = 2, \ .evYield_SpAttack = 2, \ .evYield_SpDefense = 2, \ - .itemCommon = ITEM_NONE, \ - .itemRare = ITEM_NONE, \ + .item1 = ITEM_NONE, \ + .item2 = ITEM_NONE, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 120, \ .friendship = 0, \ @@ -56,8 +56,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -88,8 +88,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -120,8 +120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -152,8 +152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -184,8 +184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -216,8 +216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -248,8 +248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -280,8 +280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -312,8 +312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -344,8 +344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -376,8 +376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -408,8 +408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -440,8 +440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -472,8 +472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -504,8 +504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -536,8 +536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -568,8 +568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -600,8 +600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -632,8 +632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -664,8 +664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -696,8 +696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -728,8 +728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -760,8 +760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -792,8 +792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -824,8 +824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_LIGHT_BALL, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_LIGHT_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -856,8 +856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -888,8 +888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -920,8 +920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -952,8 +952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -984,8 +984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1016,8 +1016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1048,8 +1048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1080,8 +1080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1112,8 +1112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1144,8 +1144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1176,8 +1176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1208,8 +1208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1240,8 +1240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1272,8 +1272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1304,8 +1304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1336,8 +1336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1368,8 +1368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1400,8 +1400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1432,8 +1432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1464,8 +1464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1496,8 +1496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1528,8 +1528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1560,8 +1560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1592,8 +1592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1624,8 +1624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1656,8 +1656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1688,8 +1688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1720,8 +1720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1752,8 +1752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1784,8 +1784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1816,8 +1816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1848,8 +1848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1880,8 +1880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1912,8 +1912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1944,8 +1944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1976,8 +1976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2008,8 +2008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2040,8 +2040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2072,8 +2072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2104,8 +2104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_TWISTED_SPOON, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2136,8 +2136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2168,8 +2168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2200,8 +2200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2232,8 +2232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2264,8 +2264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2296,8 +2296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2328,8 +2328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2360,8 +2360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2392,8 +2392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2424,8 +2424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2456,8 +2456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_EVERSTONE, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2488,8 +2488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2520,8 +2520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2552,8 +2552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2584,8 +2584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2616,8 +2616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2648,8 +2648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2680,8 +2680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_STICK, + .item1 = ITEM_NONE, + .item2 = ITEM_STICK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2712,8 +2712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2744,8 +2744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SHARP_BEAK, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2776,8 +2776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2808,8 +2808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2840,8 +2840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NUGGET, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2872,8 +2872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NUGGET, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2904,8 +2904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2936,8 +2936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2968,8 +2968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3000,8 +3000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3032,8 +3032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3064,8 +3064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3096,8 +3096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3128,8 +3128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3160,8 +3160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3192,8 +3192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3224,8 +3224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3256,8 +3256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3288,8 +3288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3320,8 +3320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3352,8 +3352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_THICK_CLUB, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3384,8 +3384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_THICK_CLUB, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3416,8 +3416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3448,8 +3448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3480,8 +3480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3512,8 +3512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SMOKE_BALL, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3544,8 +3544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SMOKE_BALL, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3576,8 +3576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3608,8 +3608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3640,8 +3640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LUCKY_EGG, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -3672,8 +3672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3704,8 +3704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -3736,8 +3736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3768,8 +3768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3800,8 +3800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3832,8 +3832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3864,8 +3864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3896,8 +3896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3928,8 +3928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3960,8 +3960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3992,8 +3992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_ASPEAR_BERRY, - .itemRare = ITEM_ASPEAR_BERRY, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -4024,8 +4024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4056,8 +4056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4088,8 +4088,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -4120,8 +4120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -4152,8 +4152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4184,8 +4184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4216,8 +4216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -4248,8 +4248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_POWDER, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4280,8 +4280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4312,8 +4312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4344,8 +4344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4376,8 +4376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4408,8 +4408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4440,8 +4440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4472,8 +4472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4504,8 +4504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4536,8 +4536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4568,8 +4568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4600,8 +4600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, + .item1 = ITEM_LEFTOVERS, + .item2 = ITEM_LEFTOVERS, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -4632,8 +4632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4664,8 +4664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4696,8 +4696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4728,8 +4728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4760,8 +4760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4792,8 +4792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4824,8 +4824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -4856,8 +4856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -4888,8 +4888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4920,8 +4920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4952,8 +4952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4984,8 +4984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5016,8 +5016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5048,8 +5048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5080,8 +5080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5112,8 +5112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5144,8 +5144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5176,8 +5176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5208,8 +5208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5240,8 +5240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5272,8 +5272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5304,8 +5304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5336,8 +5336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5368,8 +5368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5400,8 +5400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5432,8 +5432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5464,8 +5464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_YELLOW_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5496,8 +5496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_YELLOW_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5528,8 +5528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5560,8 +5560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_LEPPA_BERRY, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -5592,8 +5592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -5624,8 +5624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5656,8 +5656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5688,8 +5688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5720,8 +5720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5752,8 +5752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5784,8 +5784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5816,8 +5816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5848,8 +5848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5880,8 +5880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5912,8 +5912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5944,8 +5944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5976,8 +5976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6008,8 +6008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6040,8 +6040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6072,8 +6072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6104,8 +6104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6136,8 +6136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6168,8 +6168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6200,8 +6200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6232,8 +6232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6264,8 +6264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6296,8 +6296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -6328,8 +6328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 35, @@ -6360,8 +6360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6392,8 +6392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6424,8 +6424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -6456,8 +6456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 70, @@ -6488,8 +6488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6520,8 +6520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PERSIM_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6552,8 +6552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6584,8 +6584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6616,8 +6616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6648,8 +6648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6680,8 +6680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6712,8 +6712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6744,8 +6744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6776,8 +6776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6808,8 +6808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6840,8 +6840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6872,8 +6872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6904,8 +6904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_QUICK_CLAW, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6936,8 +6936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6968,8 +6968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7000,8 +7000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7032,8 +7032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7064,8 +7064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7096,8 +7096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7128,8 +7128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_RED_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_RED_SHARD, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -7160,8 +7160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7192,8 +7192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7224,8 +7224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7256,8 +7256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7288,8 +7288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7320,8 +7320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7352,8 +7352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7384,8 +7384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7416,8 +7416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7448,8 +7448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7480,8 +7480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -7512,8 +7512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7544,8 +7544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7576,8 +7576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7608,8 +7608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7640,8 +7640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_ASPEAR_BERRY, - .itemRare = ITEM_ASPEAR_BERRY, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -7672,8 +7672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7704,8 +7704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7736,8 +7736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_MOOMOO_MILK, - .itemRare = ITEM_MOOMOO_MILK, + .item1 = ITEM_MOOMOO_MILK, + .item2 = ITEM_MOOMOO_MILK, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -7768,8 +7768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LUCKY_EGG, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -7800,8 +7800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7832,8 +7832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7864,8 +7864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7896,8 +7896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7928,8 +7928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7960,8 +7960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7992,8 +7992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8024,8 +8024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_SACRED_ASH, - .itemRare = ITEM_SACRED_ASH, + .item1 = ITEM_SACRED_ASH, + .item2 = ITEM_SACRED_ASH, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8056,8 +8056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -8138,8 +8138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8170,8 +8170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8202,8 +8202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8234,8 +8234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8266,8 +8266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8298,8 +8298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8330,8 +8330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8362,8 +8362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8394,8 +8394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8426,8 +8426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PECHA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8458,8 +8458,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PECHA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8490,8 +8490,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_ORAN_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8522,8 +8522,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8554,8 +8554,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8586,8 +8586,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8618,8 +8618,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8650,8 +8650,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8682,8 +8682,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8714,8 +8714,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8746,8 +8746,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8778,8 +8778,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8810,8 +8810,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8842,8 +8842,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8874,8 +8874,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8906,8 +8906,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8938,8 +8938,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8970,8 +8970,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 15, .friendship = 70, @@ -9002,8 +9002,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9034,8 +9034,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9066,8 +9066,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9098,8 +9098,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9130,8 +9130,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9162,8 +9162,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9194,8 +9194,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9226,8 +9226,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9258,8 +9258,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SILVER_POWDER, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9290,8 +9290,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9322,8 +9322,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9354,8 +9354,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9386,8 +9386,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_LEPPA_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9418,8 +9418,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_PERSIM_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9450,8 +9450,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9482,8 +9482,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9514,8 +9514,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9546,8 +9546,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9578,8 +9578,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -9610,8 +9610,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9642,8 +9642,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9674,8 +9674,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_HEART_SCALE, - .itemRare = ITEM_NONE, + .item1 = ITEM_HEART_SCALE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -9706,8 +9706,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9738,8 +9738,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9770,8 +9770,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9802,8 +9802,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9834,8 +9834,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9866,8 +9866,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9898,8 +9898,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SOFT_SAND, + .item1 = ITEM_NONE, + .item2 = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9930,8 +9930,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9962,8 +9962,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9994,8 +9994,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10026,8 +10026,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_KINGS_ROCK, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10058,8 +10058,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10090,8 +10090,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10122,8 +10122,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10154,8 +10154,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_RAWST_BERRY, - .itemRare = ITEM_RAWST_BERRY, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10186,8 +10186,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10218,8 +10218,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10250,8 +10250,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10282,8 +10282,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10314,8 +10314,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10346,8 +10346,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10378,8 +10378,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NEVER_MELT_ICE, + .item1 = ITEM_NONE, + .item2 = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10410,8 +10410,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_MOON_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_MOON_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10442,8 +10442,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SUN_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_SUN_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10474,8 +10474,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -10506,8 +10506,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10538,8 +10538,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10570,8 +10570,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10602,8 +10602,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10634,8 +10634,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10666,8 +10666,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10698,8 +10698,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10730,8 +10730,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10762,8 +10762,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10794,8 +10794,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10826,8 +10826,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10858,8 +10858,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10890,8 +10890,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_POISON_BARB, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10922,8 +10922,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10954,8 +10954,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10986,8 +10986,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -11018,8 +11018,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11050,8 +11050,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BIG_PEARL, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11082,8 +11082,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11114,8 +11114,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11146,8 +11146,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11178,8 +11178,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_CHESTO_BERRY, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11210,8 +11210,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_BLUE_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_BLUE_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11242,8 +11242,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11274,8 +11274,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11306,8 +11306,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11338,8 +11338,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11370,8 +11370,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_SPELL_TAG, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11402,8 +11402,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11434,8 +11434,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11466,8 +11466,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_GREEN_SHARD, + .item1 = ITEM_NONE, + .item2 = ITEM_GREEN_SHARD, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -11498,8 +11498,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11530,8 +11530,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11562,8 +11562,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_HARD_STONE, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11594,8 +11594,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_MYSTIC_WATER, - .itemRare = ITEM_MYSTIC_WATER, + .item1 = ITEM_MYSTIC_WATER, + .item2 = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11626,8 +11626,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 15, .friendship = 70, @@ -11658,8 +11658,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 15, .friendship = 70, @@ -11690,8 +11690,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11722,8 +11722,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11754,8 +11754,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11786,8 +11786,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11818,8 +11818,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11850,8 +11850,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11882,8 +11882,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11914,8 +11914,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11946,8 +11946,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11978,8 +11978,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_DRAGON_SCALE, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -12010,8 +12010,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12042,8 +12042,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12074,8 +12074,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_METAL_COAT, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12106,8 +12106,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12138,8 +12138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12170,8 +12170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12202,8 +12202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12234,8 +12234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12266,8 +12266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12298,8 +12298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 120, .friendship = 90, @@ -12330,8 +12330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 120, .friendship = 90, @@ -12362,8 +12362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .itemCommon = ITEM_STAR_PIECE, - .itemRare = ITEM_STAR_PIECE, + .item1 = ITEM_STAR_PIECE, + .item2 = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -12394,8 +12394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12426,8 +12426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .itemCommon = ITEM_NONE, - .itemRare = ITEM_NONE, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, diff --git a/src/data/trade.h b/src/data/trade.h index 80d17a49b..b26072763 100644 --- a/src/data/trade.h +++ b/src/data/trade.h @@ -174,10 +174,10 @@ static const struct SpriteTemplate sSpriteTemplate_MenuText = .callback = SpriteCallbackDummy, }; -static const u16 sTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); -static const struct SpritePalette sSpritePalette_TradeScreenText = +static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); +static const struct SpritePalette gSpritePalette_TradeScreenText = { - .data = sTradeScreenTextPalette, + .data = TradeScreenTextPalette, .tag = PALTAG_MENU_TEXT }; diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h index ed12e0cb4..821039cb3 100644 --- a/src/data/trainer_graphics/back_pic_anims.h +++ b/src/data/trainer_graphics/back_pic_anims.h @@ -1,4 +1,4 @@ -static const union AnimCmd sAnimCmd_Brendan_1[] = +static const union AnimCmd gAnimCmd_Brendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -8,7 +8,7 @@ static const union AnimCmd sAnimCmd_Brendan_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_May_Steven_1[] = +static const union AnimCmd gAnimCmd_May_Steven_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -18,7 +18,7 @@ static const union AnimCmd sAnimCmd_May_Steven_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Wally_1[] = +static const union AnimCmd gAnimCmd_Wally_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -28,7 +28,7 @@ static const union AnimCmd sAnimCmd_Wally_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Red_1[] = +static const union AnimCmd gAnimCmd_Red_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -38,7 +38,7 @@ static const union AnimCmd sAnimCmd_Red_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_Leaf_1[] = +static const union AnimCmd gAnimCmd_Leaf_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -48,7 +48,7 @@ static const union AnimCmd sAnimCmd_Leaf_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = +static const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -58,7 +58,7 @@ static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = +static const union AnimCmd gAnimCmd_RubySapphireMay_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -71,49 +71,49 @@ static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = static const union AnimCmd *const sBackAnims_Brendan[] = { sAnim_GeneralFrame3, - sAnimCmd_Brendan_1, + gAnimCmd_Brendan_1, }; static const union AnimCmd *const sBackAnims_May[] = { sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, + gAnimCmd_May_Steven_1, }; static const union AnimCmd *const sBackAnims_Red[] = { sAnim_GeneralFrame0, - sAnimCmd_Red_1, + gAnimCmd_Red_1, }; static const union AnimCmd *const sBackAnims_Leaf[] = { sAnim_GeneralFrame0, - sAnimCmd_Leaf_1, + gAnimCmd_Leaf_1, }; static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] = { sAnim_GeneralFrame3, - sAnimCmd_RubySapphireBrendan_1, + gAnimCmd_RubySapphireBrendan_1, }; static const union AnimCmd *const sBackAnims_RubySapphireMay[] = { sAnim_GeneralFrame3, - sAnimCmd_RubySapphireMay_1, + gAnimCmd_RubySapphireMay_1, }; static const union AnimCmd *const sBackAnims_Wally[] = { sAnim_GeneralFrame3, - sAnimCmd_Wally_1, + gAnimCmd_Wally_1, }; static const union AnimCmd *const sBackAnims_Steven[] = { sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, + gAnimCmd_May_Steven_1, }; const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = diff --git a/src/decompress.c b/src/decompress.c index 92c840a63..b74d4e814 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -51,13 +51,13 @@ void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src) LoadSpritePalette(&dest); } -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer) +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer) { struct SpritePalette dest; - LZ77UnCompWram(src->data, buffer); + LZ77UnCompWram(a->data, buffer); dest.data = buffer; - dest.tag = src->tag; + dest.tag = a->tag; LoadSpritePalette(&dest); } diff --git a/src/decoration.c b/src/decoration.c index 547b05acf..7e102251a 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -826,7 +826,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId) { RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES); AddDecorationActionsWindow(); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); PrintCurMainMenuDescription(); gTasks[taskId].func = HandleDecorationActionsMenuInput; } @@ -2664,7 +2664,7 @@ static void FieldCB_StopPuttingAwayDecorations(void) u8 taskId; FadeInFromBlack(); - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); InitDecorationActionsWindow(); taskId = CreateTask(Task_ReinitializeDecorationMenuHandler, 8); gTasks[taskId].tState = 0; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index b87fe3092..691ca6b2a 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2879,10 +2879,10 @@ static u8 TryGivePrize(void) return PRIZE_RECEIVED; } -static u32 IncrementWithLimit(u32 num, u32 max) +static u32 IncrementWithLimit(u32 a, u32 max) { - if (num < max) - return num + 1; + if (a < max) + return a + 1; else return max; } @@ -4546,7 +4546,7 @@ struct { u8 id; void (*func)(void); -} static const sGfxFuncs[] = +} const sGfxFuncs[] = { {GFXFUNC_LOAD, LoadGfx}, // Element not used, LoadGfx is passed directly to SetGfxFunc {GFXFUNC_SHOW_NAMES, ShowNames}, diff --git a/src/easy_chat.c b/src/easy_chat.c index 2bbd16cb2..734fd4f18 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1492,7 +1492,7 @@ void ShowEasyChatScreen(void) displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE; break; case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW: - words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainerTower.words; + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18; displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; case EASY_CHAT_TYPE_GOOD_SAYING: @@ -1672,7 +1672,8 @@ static bool8 InitEasyChatScreenStruct(u8 type, u16 *words, u8 displayedPersonTyp static void FreeEasyChatScreenStruct(void) { - TRY_FREE_AND_SET_NULL(sEasyChatScreen); + if (sEasyChatScreen != NULL) + FREE_AND_SET_NULL(sEasyChatScreen); } // Returns the function ID of the action to take as a result of player's input. @@ -3074,7 +3075,8 @@ static bool8 LoadEasyChatScreen(void) static void FreeEasyChatScreenControl(void) { - TRY_FREE_AND_SET_NULL(sScreenControl); + if (sScreenControl) + FREE_AND_SET_NULL(sScreenControl); } static void StartEasyChatFunction(u16 funcId) @@ -5571,7 +5573,8 @@ static bool8 InitEasyChatScreenWordData(void) static void FreeEasyChatScreenWordData(void) { - TRY_FREE_AND_SET_NULL(sWordData); + if (sWordData) + FREE_AND_SET_NULL(sWordData); } static void SetUnlockedEasyChatGroups(void) diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index cf3ca16c3..c3f17f234 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -15,8 +15,6 @@ #include "constants/items.h" #include "constants/trainer_hill.h" -STATIC_ASSERT(sizeof(struct TrainerHillChallenge) <= SECTOR_DATA_SIZE, TrainerHillChallengeFreeSpace); - struct SendRecvMgr { bool8 isParent; @@ -59,20 +57,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_SWALOT, .heldItem = ITEM_SHELL_BELL, .moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 55, .attackEV = 255, .defenseEV = 100, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 100, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -82,19 +82,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x80, .nickname = __("マルノーム$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_DUSTOX, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -104,19 +106,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("ドクケイル$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 155, .spDefenseEV = 255, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -126,7 +130,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x2f, .nickname = __("ジーランス$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -139,20 +143,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL }, .speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_CACTURNE, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 55, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 100, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -162,19 +168,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x8c, .nickname = __("ノクタス$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -184,19 +192,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("オオスãƒ�メ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_WHISCASH, .heldItem = ITEM_CHESTO_BERRY, .moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -206,7 +216,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("ナマズン$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -219,20 +229,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, EC_EMPTY_WORD }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_DELCATTY, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 255, .spAttackEV = 0, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -242,19 +254,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x3, .nickname = __("エãƒ�コロロ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LEFTOVERS, .moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -264,19 +278,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x6, .nickname = __("ロゼリア$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_BEAUTIFLY, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 100, .attackEV = 200, .defenseEV = 0, .speedEV = 0, .spAttackEV = 200, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -286,7 +302,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("アゲãƒ�ント$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -299,20 +315,22 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL }, .mons = { - [0] = DUMMY_HILL_MON, - [1] = DUMMY_HILL_MON, - [2] = DUMMY_HILL_MON, + [0] = NULL_BATTLE_TOWER_POKEMON, + [1] = NULL_BATTLE_TOWER_POKEMON, + [2] = NULL_BATTLE_TOWER_POKEMON, [3] = { .species = SPECIES_MAWILE, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 0, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 155, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -322,19 +340,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("クãƒ�ート$$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [4] = { .species = SPECIES_SHARPEDO, .heldItem = ITEM_SCOPE_LENS, .moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -344,19 +364,21 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("サメãƒ�ダー$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP }, + .level = 0, + .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = TRAINER_HILL_OTID, + .otId = 0x10000000, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -366,7 +388,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ジュペッタ$$$$$$"), - .friendship = MAX_FRIENDSHIP + .friendship = 255 }, } }, @@ -425,40 +447,40 @@ static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet) return TRUE; } -static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrainerHillChallenge * challenge) +static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrHillTag * hillTag) { int i; AGB_ASSERT_EX(hillSet->dummy == 0, "cereader_tool.c", 450); AGB_ASSERT_EX(hillSet->id == 0, "cereader_tool.c", 452); - memset(challenge, 0, SECTOR_SIZE); - challenge->numTrainers = hillSet->numTrainers; - challenge->unused1 = GetTrainerHillUnkVal(); - challenge->numFloors = (hillSet->numTrainers + 1) / HILL_TRAINERS_PER_FLOOR; + memset(hillTag, 0, SECTOR_SIZE); + hillTag->numTrainers = hillSet->numTrainers; + hillTag->unused1 = GetTrainerHillUnkVal(); + hillTag->numFloors = (hillSet->numTrainers + 1) / TRAINER_HILL_TRAINERS_PER_FLOOR; for (i = 0; i < hillSet->numTrainers; i++) { if (!(i & 1)) { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].map = hillSet->trainers[i].map; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].display = hillSet->trainers[i].display; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; } else { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; } } if (i & 1) { - challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / HILL_TRAINERS_PER_FLOOR]; + hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / TRAINER_HILL_TRAINERS_PER_FLOOR]; } - challenge->checksum = CalcByteArraySum((u8 *)challenge->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrainerHillFloor)); - if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)challenge) != SAVE_STATUS_OK) + hillTag->checksum = CalcByteArraySum((u8 *)hillTag->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrHillFloor)); + if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)hillTag) != SAVE_STATUS_OK) return FALSE; return TRUE; diff --git a/src/event_data.c b/src/event_data.c index 22ebdb0d1..1defd2ccb 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -30,7 +30,7 @@ EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0; -EWRAM_DATA static u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; +EWRAM_DATA static u8 gSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; extern u16 *const gSpecialVars[]; @@ -38,7 +38,7 @@ void InitEventData(void) { memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags)); memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars)); - memset(sSpecialFlags, 0, sizeof(sSpecialFlags)); + memset(gSpecialFlags, 0, sizeof(gSpecialFlags)); } void ClearTempFieldEventData(void) @@ -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); } @@ -205,7 +205,7 @@ u8 *GetFlagPointer(u16 id) else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; else - return &sSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; + return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6b2742c92..b06a51ac6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -25,6 +25,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "follow_me.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" #include "constants/field_effects.h" @@ -32,6 +33,7 @@ #include "constants/mauville_old_man.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/metatile_behaviors.h" // this file was known as evobjmv.c in Game Freak's original source @@ -80,6 +82,8 @@ static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprit static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0}; +extern void PlaySE(u16); +extern void PlaySE12WithPanning(u16, s8); static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static void SetMovementDelay(struct Sprite *, s16); @@ -115,6 +119,9 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent*, struct Sprite*); static void DoTracksGroundEffect_None(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsBug(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent*, struct Sprite*); static void DoGroundEffects_OnSpawn(struct ObjectEvent*, struct Sprite*); @@ -139,7 +146,7 @@ static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); -static u8 FindObjectEventPaletteIndexByTag(u16); +static u16 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); @@ -163,7 +170,7 @@ static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); static bool8 NpcTakeStep(struct Sprite *); static bool8 IsElevationMismatchAt(u8, s16, s16); -static bool8 AreElevationsCompatible(u8, u8); +static bool8 AreElevationsCompatible(u8 a, u8 b); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -269,6 +276,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_FOLLOWING_POKEMON] = MovementType_FollowingPokemon, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -313,6 +321,7 @@ static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { [MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = TRUE, [MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = TRUE, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = FALSE, }; const u8 gInitialMovementTypeFacingDirections[] = { @@ -397,6 +406,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = DIR_NORTH, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = DIR_WEST, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, + [MOVEMENT_TYPE_FOLLOWING_POKEMON] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 @@ -1731,7 +1741,9 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId == OBJ_EVENT_ID_FOLLOWER) + return GetFollowerObjectId(); + else if (localId < OBJ_EVENT_ID_PLAYER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1878,7 +1890,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * return FALSE; } -static void RemoveObjectEvent(struct ObjectEvent *objectEvent) +void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); @@ -1896,10 +1908,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) @@ -1937,7 +1952,6 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1964,7 +1978,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -1996,7 +2010,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) { struct ObjectEventTemplate objectEventTemplate; @@ -2007,7 +2021,7 @@ u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 objectEventTemplate.inConnection = 0; objectEventTemplate.x = x; objectEventTemplate.y = y; - objectEventTemplate.elevation = elevation; + objectEventTemplate.elevation = z; objectEventTemplate.movementType = movementBehavior; objectEventTemplate.movementRangeX = 0; objectEventTemplate.movementRangeY = 0; @@ -2086,7 +2100,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(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -2114,14 +2128,14 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevati sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = elevation; + sprite->sVirtualObjElev = z; if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; } - InitObjectPriorityByElevation(sprite, elevation); - SetObjectSubpriorityByElevation(elevation, sprite, 1); + InitObjectPriorityByElevation(sprite, z); + SetObjectSubpriorityByElevation(z, sprite, 1); StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction)); } return spriteId; @@ -2175,7 +2189,7 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + if (objectEvent->active && !objectEvent->isPlayer && i != GetFollowerObjectId()) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -2213,7 +2227,6 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -2238,16 +2251,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) LoadObjectEventPalette(spriteTemplate.paletteTag); UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); } - else if (paletteSlot == 10) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) @@ -2300,7 +2303,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) { const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; @@ -2330,7 +2333,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) CameraObjectReset1(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -2387,7 +2390,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { u8 bard; @@ -2514,7 +2517,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) { - u8 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); + u16 paletteIndex = FindObjectEventPaletteIndexByTag(paletteTag); LoadPalette(sObjectEventSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20); } @@ -2529,9 +2532,9 @@ void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot) } } -static u8 FindObjectEventPaletteIndexByTag(u16 tag) +static u16 FindObjectEventPaletteIndexByTag(u16 tag) { - u8 i; + u16 i; for (i = 0; sObjectEventSpritePalettes[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { @@ -2877,7 +2880,7 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; @@ -3260,6 +3263,38 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy); } +movement_type_def(MovementType_FollowingPokemon, gMovementTypeFuncs_FollowingPokemon) + +bool8 MovementType_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + sprite->data[1] = 1; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_FOLLOWING_POKEMON); + sprite->data[1] = 2; + return TRUE; +} + +bool8 MovementType_FollowingPokemon_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = FALSE; + sprite->data[1] = 3; + } + return FALSE; +} + +bool8 MovementType_FollowingPokemon_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + sprite->data[1] = 1; + return TRUE; +} + movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround) bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5148,8 +5183,9 @@ 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 != objectEvent && !FollowMe_IsCollisionExempt(curObject, objectEvent)) { + // check for collision if curObject is active, not the object in question, and not exempt from collisions if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { if (AreElevationsCompatible(objectEvent->currentElevation, curObject->currentElevation)) @@ -5297,6 +5333,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct objectEvent->heldMovementActive = TRUE; objectEvent->heldMovementFinished = FALSE; gSprites[objectEvent->spriteId].sActionFuncId = 0; + FollowMe(objectEvent, movementActionId, FALSE); return FALSE; } @@ -5397,6 +5434,41 @@ bool8 ObjectEventFaceOppositeDirection(struct ObjectEvent *objectEvent, u8 direc return ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetOppositeDirection(direction))); } +bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *follower, struct ObjectEvent *player) +{ + if(follower->currentCoords.x == player->currentCoords.x) + { + // Follower is south of player + if(follower->currentCoords.y > player->currentCoords.y) + { + gSprites[follower->spriteId].animNum = 5; + follower->facingDirection = DIR_NORTH; + } + // Follower is north of player + else + { + gSprites[follower->spriteId].animNum = 4; + follower->facingDirection = DIR_SOUTH; + } + } + else + { + // Follower is east of player + if(follower->currentCoords.x > player->currentCoords.x) + { + gSprites[follower->spriteId].animNum = 6; + follower->facingDirection = DIR_WEST; + } + // Follower is west of player + else + { + gSprites[follower->spriteId].animNum = 7; + follower->facingDirection = DIR_EAST; + } + } + return ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON); +} + dirn_to_anim(GetAcroWheelieFaceDirectionMovementAction, gAcroWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroPopWheelieFaceDirectionMovementAction, gAcroPopWheelieFaceDirectionMovementActions); dirn_to_anim(GetAcroEndWheelieFaceDirectionMovementAction, gAcroEndWheelieFaceDirectionMovementActions); @@ -5539,7 +5611,8 @@ static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; return TRUE; } return FALSE; @@ -5773,7 +5846,19 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 2) + { + sprite->data[7] = 2; + sprite->animNum = 4; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } @@ -5789,7 +5874,19 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 3) + { + sprite->data[7] = 3; + sprite->animNum = 5; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } @@ -5805,7 +5902,19 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 4) + { + sprite->data[7] = 4; + sprite->animNum = 6; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } @@ -5821,7 +5930,19 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 5) + { + sprite->data[7] = 5; + sprite->animNum = 7; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 0); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } @@ -5895,7 +6016,8 @@ static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; objectEvent->landingJump = TRUE; - sprite->animPaused = TRUE; + if (!(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId])) + sprite->animPaused = TRUE; } return result; } @@ -5944,6 +6066,11 @@ static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *s bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -5961,6 +6088,11 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 0; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -5978,6 +6110,11 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = 8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -5995,6 +6132,11 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + sprite->x2 = -8; + sprite->data[7] = 10; + } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -6058,7 +6200,19 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 6) + { + sprite->data[7] = 6; + sprite->animNum = 20; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } @@ -6074,7 +6228,19 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 7) + { + sprite->data[7] = 7; + sprite->animNum = 21; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } @@ -6090,7 +6256,19 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 8) + { + sprite->data[7] = 8; + sprite->animNum = 22; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } @@ -6106,7 +6284,19 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 9) + { + sprite->data[7] = 9; + sprite->animNum = 23; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } @@ -8286,29 +8476,32 @@ void GroundEffect_FlowingWater(struct ObjectEvent *objEvent, struct Sprite *spri StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objEvent); } -static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) = { +static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) = { [TRACKS_NONE] = DoTracksGroundEffect_None, [TRACKS_FOOT] = DoTracksGroundEffect_Footprints, [TRACKS_BIKE_TIRE] = DoTracksGroundEffect_BikeTireTracks, + [TRACKS_SLITHER] = DoTracksGroundEffect_SlitherTracks, + [TRACKS_BUG] = DoTracksGroundEffect_FootprintsBug, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsSpot, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, FALSE); + sGroundEffectTracksFuncs[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, TRUE); + sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 1); } -static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { } -static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) { // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) u16 sandFootprints_FieldEffectData[2] = { @@ -8321,10 +8514,77 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct gFieldEffectArguments[2] = 149; gFieldEffectArguments[3] = 2; gFieldEffectArguments[4] = objEvent->facingDirection; - FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); + FieldEffectStart(sandFootprints_FieldEffectData[a]); } -static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +static void DoTracksGroundEffect_FootprintsSpot(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsA_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_FootprintsBug(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; + if (Random() % 2 == 0) + PlaySE(159); + if (Random() % 2 == 1) + PlaySE12WithPanning(159, 1); + FieldEffectStart(otherFootprintsB_FieldEffectData[a]); +} + +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]; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + +static void DoTracksGroundEffect_BikeTireTracks(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 @@ -8700,11 +8960,11 @@ static const SpriteStepFunc *const sNpcStepFuncTables[] = { }; static const s16 sStepTimes[] = { - [MOVE_SPEED_NORMAL] = ARRAY_COUNT(sStep1Funcs), - [MOVE_SPEED_FAST_1] = ARRAY_COUNT(sStep2Funcs), - [MOVE_SPEED_FAST_2] = ARRAY_COUNT(sStep3Funcs), - [MOVE_SPEED_FASTER] = ARRAY_COUNT(sStep4Funcs), - [MOVE_SPEED_FASTEST] = ARRAY_COUNT(sStep8Funcs), + [MOVE_SPEED_NORMAL] = 16, + [MOVE_SPEED_FAST_1] = 8, + [MOVE_SPEED_FAST_2] = 6, + [MOVE_SPEED_FASTER] = 4, + [MOVE_SPEED_FASTEST] = 2, }; static bool8 NpcTakeStep(struct Sprite *sprite) @@ -9039,7 +9299,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); @@ -9971,3 +10231,28 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } + +// NEW +u16 GetMiniStepCount(u8 speed) +{ + return (u16)sStepTimes[speed]; +} + +void RunMiniStep(struct Sprite *sprite, u8 speed, u8 currentFrame) +{ + sNpcStepFuncTables[speed][currentFrame](sprite, sprite->data[3]); +} + +bool8 PlayerIsUnderWaterfall(struct ObjectEvent *objectEvent) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(DIR_NORTH, &x, &y, 0, 1); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y))) + return TRUE; + + return FALSE; +} diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index a6b558195..5d17cca84 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -92,22 +92,11 @@ static const struct SpriteTemplate sEvoSparkleSpriteTemplate = .callback = SpriteCB_Sparkle_Dummy }; -static const u16 sEvoSparkleMatrices[] = +static const s16 sEvoSparkleMatrices[] = { - 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, - 0x240, 0x200, 0x1C0, 0x180, 0x140, 0x100 -}; - -static const s16 sUnused[] = -{ - -4, 0x10, - -3, 0x30, - -2, 0x50, - -1, 0x70, - 1, 0x70, - 2, 0x50, - 3, 0x30, - 4, 0x10 + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, + 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, + -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 }; static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) @@ -118,33 +107,30 @@ static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) static void SetEvoSparklesMatrices(void) { u16 i; - for (i = 0; i < ARRAY_COUNT(sEvoSparkleMatrices); i++) + for (i = 0; i < 12; i++) + { SetOamMatrix(20 + i, sEvoSparkleMatrices[i], 0, 0, sEvoSparkleMatrices[i]); + } } -#define sSpeed data[3] -#define sAmplitude data[5] -#define sTrigIdx data[6] -#define sTimer data[7] - static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) { if (sprite->y > 8) { u8 matrixNum; - sprite->y = 88 - (sprite->sTimer * sprite->sTimer) / 80; - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sTrigIdx += 4; - if (sprite->sTimer & 1) - sprite->sAmplitude--; - sprite->sTimer++; + sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[6] += 4; + if (sprite->data[7] & 1) + sprite->data[5]--; + sprite->data[7]++; if (sprite->y2 > 0) sprite->subpriority = 1; else sprite->subpriority = 20; - matrixNum = sprite->sAmplitude / 4 + 20; + matrixNum = sprite->data[5] / 4 + 20; if (matrixNum > 31) matrixNum = 31; sprite->oam.matrixNum = matrixNum; @@ -153,17 +139,17 @@ static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) DestroySprite(sprite); } -static void CreateSparkle_SpiralUpward(u8 trigIdx) +static void CreateSparkle_SpiralUpward(u8 arg0) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 88, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sAmplitude = 48; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].callback = SpriteCB_Sparkle_SpiralUpward; + gSprites[spriteID].data[5] = 48; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].callback = SpriteCB_Sparkle_SpiralUpward; } } @@ -171,85 +157,85 @@ static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite) { if (sprite->y < 88) { - sprite->y = 8 + (sprite->sTimer * sprite->sTimer) / 5; - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sAmplitude = 8 + Sin((u8)(sprite->sTimer * 4), 40); - sprite->sTimer++; + sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40); + sprite->data[7]++; } else DestroySprite(sprite); } -static void CreateSparkle_ArcDown(u8 trigIdx) +static void CreateSparkle_ArcDown(u8 arg0) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 8, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sAmplitude = 8; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 25; - gSprites[spriteId].subpriority = 1; - gSprites[spriteId].callback = SpriteCB_Sparkle_ArcDown; + gSprites[spriteID].data[5] = 8; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 25; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_Sparkle_ArcDown; } } static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite) { - if (sprite->sAmplitude > 8) + if (sprite->data[5] > 8) { - sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->sAmplitude -= sprite->sSpeed; - sprite->sTrigIdx += 4; + sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]); + sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); + sprite->data[5] -= sprite->data[3]; + sprite->data[6] += 4; } else DestroySprite(sprite); } -static void CreateSparkle_CircleInward(u8 trigIdx, u8 speed) +static void CreateSparkle_CircleInward(u8 arg0, u8 arg1) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sSpeed = speed; - gSprites[spriteId].sAmplitude = 120; - gSprites[spriteId].sTrigIdx = trigIdx; - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].subpriority = 1; - gSprites[spriteId].callback = SpriteCB_Sparkle_CircleInward; + gSprites[spriteID].data[3] = arg1; + gSprites[spriteID].data[5] = 120; + gSprites[spriteID].data[6] = arg0; + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 1; + gSprites[spriteID].callback = SpriteCB_Sparkle_CircleInward; } } static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) { - if (!(sprite->sTimer & 3)) + if (!(sprite->data[7] & 3)) sprite->y++; - if (sprite->sTrigIdx < 128) + if (sprite->data[6] < 128) { u8 matrixNum; - sprite->y2 = -Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); - sprite->x = (DISPLAY_WIDTH / 2) + (sprite->sSpeed * sprite->sTimer) / 3; - sprite->sTrigIdx++; - matrixNum = 31 - (sprite->sTrigIdx * 12 / 128); - if (sprite->sTrigIdx > 64) + sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]); + sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3; + sprite->data[6]++; + matrixNum = 31 - (sprite->data[6] * 12 / 128); + if (sprite->data[6] > 64) sprite->subpriority = 1; else { sprite->invisible = FALSE; sprite->subpriority = 20; - if (sprite->sTrigIdx > 112 && sprite->sTrigIdx & 1) + if (sprite->data[6] > 112 && sprite->data[6] & 1) sprite->invisible = TRUE; } if (matrixNum < 20) matrixNum = 20; sprite->oam.matrixNum = matrixNum; - sprite->sTimer++; + sprite->data[7]++; } else DestroySprite(sprite); @@ -257,16 +243,16 @@ static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) static void CreateSparkle_Spray(u8 id) { - u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); - if (spriteId != MAX_SPRITES) + u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); + if (spriteID != MAX_SPRITES) { - gSprites[spriteId].sSpeed = 3 - (Random() % 7); - gSprites[spriteId].sAmplitude = 48 + (Random() & 0x3F); - gSprites[spriteId].sTimer = 0; - gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteId].oam.matrixNum = 31; - gSprites[spriteId].subpriority = 20; - gSprites[spriteId].callback = SpriteCB_Sparkle_Spray; + gSprites[spriteID].data[3] = 3 - (Random() % 7); + gSprites[spriteID].data[5] = 48 + (Random() & 0x3F); + gSprites[spriteID].data[7] = 0; + gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteID].oam.matrixNum = 31; + gSprites[spriteID].subpriority = 20; + gSprites[spriteID].callback = SpriteCB_Sparkle_Spray; } } @@ -303,7 +289,7 @@ static void Task_Sparkles_SpiralUpward(u8 taskId) { u8 i; for (i = 0; i < 4; i++) - CreateSparkle_SpiralUpward((gTasks[taskId].tTimer & 120) * 2 + i * 64); + CreateSparkle_SpiralUpward((0x78 & gTasks[taskId].tTimer) * 2 + i * 64); } gTasks[taskId].tTimer++; } diff --git a/src/evolution_scene.c b/src/evolution_scene.c index eb458d39d..bde11ddb5 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -816,7 +816,8 @@ static void Task_EvolutionScene(u8 taskId) DestroyTask(taskId); FreeMonSpritesGfx(); - FREE_AND_SET_NULL(sEvoStructPtr); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; FreeAllWindowBuffers(); SetMainCallback2(gCB2_AfterEvolution); } @@ -1222,7 +1223,8 @@ static void Task_TradeEvolutionScene(u8 taskId) if (!IsTextPrinterActive(0)) { DestroyTask(taskId); - FREE_AND_SET_NULL(sEvoStructPtr); + Free(sEvoStructPtr); + sEvoStructPtr = NULL; gTextFlags.useAlternateDownArrow = 0; SetMainCallback2(gCB2_AfterEvolution); } diff --git a/src/field_camera.c b/src/field_camera.c index 9b129e6b2..0a00dcbee 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -212,13 +212,13 @@ void CurrentMapDrawMetatileAt(int x, int y) } } -void DrawDoorMetatileAt(int x, int y, u16 *tiles) +void DrawDoorMetatileAt(int x, int y, u16 *arr) { int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y); if (offset >= 0) { - DrawMetatile(METATILE_LAYER_TYPE_COVERED, tiles, offset); + DrawMetatile(METATILE_LAYER_TYPE_COVERED, arr, offset); sFieldCameraOffset.copyBGToVRAM = TRUE; } } @@ -404,9 +404,9 @@ void CameraUpdate(void) } gFieldCamera.x += movementSpeedX; - gFieldCamera.x %= 16; + gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16); gFieldCamera.y += movementSpeedY; - gFieldCamera.y %= 16; + gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16); if (deltaX != 0 || deltaY != 0) { @@ -437,10 +437,10 @@ void SetCameraPanningCallback(void (*callback)(void)) sFieldCameraPanningCallback = callback; } -void SetCameraPanning(s16 horizontal, s16 vertical) +void SetCameraPanning(s16 a, s16 b) { - sHorizontalCameraPan = horizontal; - sVerticalCameraPan = vertical + 32; + sHorizontalCameraPan = a; + sVerticalCameraPan = b + 32; } void InstallCameraPanAheadCallback(void) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 60cd86bd6..1bcf7b403 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -28,6 +28,7 @@ #include "trainer_see.h" #include "trainer_hill.h" #include "wild_encounter.h" +#include "follow_me.h" #include "constants/event_bg.h" #include "constants/event_objects.h" #include "constants/field_poison.h" @@ -156,10 +157,16 @@ int ProcessPlayerFieldInput(struct FieldInput *input) { IncrementGameStat(GAME_STAT_STEPS); IncrementBirthIslandRockStepCount(); - + if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE) return TRUE; } + else if(gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 0x9E); + } + if (input->checkStandardWildEncounter && CheckStandardWildEncounter(metatileBehavior) == TRUE) return TRUE; if (input->heldDirection && input->dpadDirection == playerDirection) @@ -307,6 +314,13 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 if (InTrainerHill() == TRUE) script = GetTrainerHillTrainerScript(); + else if (objectEventId == GetFollowerObjectId())//(gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_FOLLOWER) + { + if(gObjectEvents[objectEventId].invisible == FALSE) + script = GetFollowerScriptPointer(); + else + return NULL; + } else script = GetObjectEventScriptPointerByObjectEventId(objectEventId); diff --git a/src/field_door.c b/src/field_door.c index 756d0dabf..988ea615d 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -18,7 +18,7 @@ struct DoorGraphics u8 sound; u8 size; const void *tiles; - const void *palettes; + const void *palette; }; struct DoorAnimFrame @@ -74,7 +74,7 @@ static const u8 sDoorAnimTiles_PokemonLeague[] = INCBIN_U8("graphics/door_anims/ static const u16 sDoorNullPalette20[16] = {}; static const u8 sDoorAnimTiles_Pacifidlog[] = INCBIN_U8("graphics/door_anims/pacifidlog.4bpp"); static const u16 sDoorNullPalette21[16] = {}; -static const u8 sDoorAnimTiles_PetalburgGym[] = INCBIN_U8("graphics/door_anims/petalburg_gym.4bpp"); +static const u8 sDoorAnimTiles_BattleTowerCorridor[] = INCBIN_U8("graphics/door_anims/battle_tower_corridor.4bpp"); static const u16 sDoorNullPalette22[16] = {}; static const u8 sDoorAnimTiles_CyclingRoad[] = INCBIN_U8("graphics/door_anims/cycling_road.4bpp"); static const u16 sDoorNullPalette23[16] = {}; @@ -98,7 +98,7 @@ static const u8 sDoorAnimTiles_BattleTowerOld[] = INCBIN_U8("graphics/door_anims static const u16 sDoorNullPalette32[16] = {}; static const u8 sDoorAnimTiles_BattleTowerElevator[] = INCBIN_U8("graphics/door_anims/battle_tower_elevator.4bpp"); static const u16 sDoorNullPalette33[16] = {}; -static const u8 sDoorAnimTiles_UnusedBattleFrontier[] = INCBIN_U8("graphics/door_anims/unused_battle_frontier.4bpp"); +static const u8 sDoorAnimTiles_34[] = INCBIN_U8("graphics/door_anims/unknown.4bpp"); static const u16 sDoorNullPalette34[16] = {}; static const u8 sDoorAnimTiles_BattleDome[] = INCBIN_U8("graphics/door_anims/battle_dome.4bpp"); static const u16 sDoorNullPalette35[16] = {}; @@ -190,7 +190,7 @@ static const u8 sDoorAnimPalettes_Mauville[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_Verdanturf[] = {6, 6, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_LilycoveWooden[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_Contest[] = {1, 1, 1, 1, 1, 1, 1, 1}; -static const u8 sDoorAnimPalettes_PetalburgGym[] = {6, 6, 6, 6, 6, 6, 6, 6}; +static const u8 sDoorAnimPalettes_BattleTowerCorridor[] = {6, 6, 6, 6, 6, 6, 6, 6}; static const u8 sDoorAnimPalettes_CyclingRoad[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_LilycoveDeptStore[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_SafariZone[] = {9, 9, 9, 9, 9, 9, 9, 9}; @@ -202,7 +202,7 @@ static const u8 sDoorAnimPalettes_AbandonedShipRoom[] = {7, 7, 7, 7, 7, 7, 7, 7} static const u8 sDoorAnimPalettes_LilycoveDeptStoreElevator[] = {6, 6, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_BattleTowerOld[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTowerElevator[] = {7, 7, 7, 7, 7, 7, 7, 7}; -static const u8 sDoorAnimPalettes_UnusedBattleFrontier[] = {9, 9, 9, 9, 9, 9, 9, 9}; +static const u8 sDoorAnimPalettes_34[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleDome[] = {1, 1, 1, 1, 1, 1, 1, 1}; static const u8 sDoorAnimPalettes_BattleFactory[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTower[] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -244,7 +244,7 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Sootopolis_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Sootopolis, sDoorAnimPalettes_Sootopolis}, {METATILE_EverGrande_Door_PokemonLeague, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_PokemonLeague, sDoorAnimPalettes_PokemonLeague}, {METATILE_Pacifidlog_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Pacifidlog, sDoorAnimPalettes_Pacifidlog}, - {METATILE_PetalburgGym_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_PetalburgGym, sDoorAnimPalettes_PetalburgGym}, + {METATILE_BattleFrontier_Door_Corridor, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_BattleTowerCorridor, sDoorAnimPalettes_BattleTowerCorridor}, {METATILE_Mauville_Door_CyclingRoad, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_CyclingRoad, sDoorAnimPalettes_CyclingRoad}, {METATILE_Lilycove_Door_DeptStore, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStore, sDoorAnimPalettes_LilycoveDeptStore}, {METATILE_Lilycove_Door_SafariZone, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_SafariZone, sDoorAnimPalettes_SafariZone}, @@ -256,9 +256,7 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Shop_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStoreElevator, sDoorAnimPalettes_LilycoveDeptStoreElevator}, {METATILE_Dewford_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerOld, sDoorAnimPalettes_BattleTowerOld}, {METATILE_BattleFrontier_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerElevator, sDoorAnimPalettes_BattleTowerElevator}, - // The metatile for this door doesn't seem to correspond to a door in any Emerald tileset. Given the surrounding door animations, it was likely cut from the Battle Frontier. - // From the palettes array we know it uses palette 9, and the door's shadow looks correct using either the Battle Tent or Battle Frontier Outside's 9th palette. - {0x3B0, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_UnusedBattleFrontier, sDoorAnimPalettes_UnusedBattleFrontier}, + {0x3B0, /* TODO: Missing metatile ID */ DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_34, sDoorAnimPalettes_34}, {METATILE_BattleFrontierOutsideWest_Door_BattleDome, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleDome, sDoorAnimPalettes_BattleDome}, {METATILE_BattleFrontierOutsideWest_Door_BattleFactory, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleFactory, sDoorAnimPalettes_BattleFactory}, {METATILE_BattleFrontierOutsideEast_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTower, sDoorAnimPalettes_BattleTower}, @@ -280,71 +278,52 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {}, }; -// NOTE: The tiles of a door's animation must be copied to VRAM because they are not already part of any given tileset. -// This means that if there are any pre-existing tiles in this copied region that are visible when the door -// animation is played they will be overwritten. -#define DOOR_TILE_START_SIZE1 (NUM_TILES_TOTAL - 8) -#define DOOR_TILE_START_SIZE2 (NUM_TILES_TOTAL - 16) - static void CopyDoorTilesToVram(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frame) { if (gfx->size == 2) - CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE2)), 16 * TILE_SIZE_4BPP); + CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7E00), 0x80); else - CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE1)), 8 * TILE_SIZE_4BPP); + CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7F00), 0x40); } -static void BuildDoorTiles(u16 *tiles, u16 tileNum, const u8 *paletteNums) +static void door_build_blockdef(u16 *a, u16 b, const u8 *c) { int i; - u16 tile; + u16 unk; - // Only the first 4 tiles of each metatile (bottom layer) actually use the door tiles for (i = 0; i < 4; i++) { - tile = *(paletteNums++) << 12; - tiles[i] = tile | (tileNum + i); + unk = *(c++) << 12; + a[i] = unk | (b + i); } - - // The remaining layers are left as tile 0 (with the same palette) for (; i < 8; i++) { - tile = *(paletteNums++) << 12; - tiles[i] = tile; + unk = *(c++) << 12; + a[i] = unk; } } -static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *paletteNums) +static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *pal) { - u16 tiles[24]; + u16 arr[24]; if (gfx->size == 2) { - // Top left metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 0, &paletteNums[0]); - DrawDoorMetatileAt(x, y - 1, &tiles[8]); - - // Bottom left metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 4, &paletteNums[4]); - DrawDoorMetatileAt(x, y, &tiles[8]); - - // Top right metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 8, &paletteNums[0]); - DrawDoorMetatileAt(x + 1, y - 1, &tiles[8]); - - // Bottom right metatile - BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 12, &paletteNums[4]); - DrawDoorMetatileAt(x + 1, y, &tiles[8]); + door_build_blockdef(&arr[8], 0x3F0, pal); + DrawDoorMetatileAt(x, y - 1, &arr[8]); + door_build_blockdef(&arr[8], 0x3F4, pal + 4); + DrawDoorMetatileAt(x, y, &arr[8]); + door_build_blockdef(&arr[8], 0x3F8, pal); + DrawDoorMetatileAt(x + 1, y - 1, &arr[8]); + door_build_blockdef(&arr[8], 0x3FC, pal + 4); + DrawDoorMetatileAt(x + 1, y, &arr[8]); } else { - // Top metatile - BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 0, &paletteNums[0]); - DrawDoorMetatileAt(x, y - 1, &tiles[0]); - - // Bottom metatile - BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 4, &paletteNums[4]); - DrawDoorMetatileAt(x, y, &tiles[0]); + door_build_blockdef(&arr[0], 0x3F8, pal); + DrawDoorMetatileAt(x, y - 1, &arr[0]); + door_build_blockdef(&arr[0], 0x3FC, pal + 4); + DrawDoorMetatileAt(x, y, &arr[0]); } } @@ -371,9 +350,9 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame else { CopyDoorTilesToVram(gfx, frame); - DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palettes); + DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette); if (ShouldUseMultiCorridorDoor()) - DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palettes); + DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palette); } } diff --git a/src/field_effect.c b/src/field_effect.c index 53c075581..04e8ad007 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -26,6 +26,7 @@ #include "trainer_pokemon_sprites.h" #include "trig.h" #include "util.h" +#include "follow_me.h" #include "constants/field_effects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" @@ -39,6 +40,7 @@ EWRAM_DATA u16 gReflectionPaletteBuffer[0x10] = {0}; // Static type declarations +extern void FollowMe_WarpSetEnd(void); static void Task_PokecenterHeal(u8 taskId); static void PokecenterHealEffect_Init(struct Task *); static void PokecenterHealEffect_WaitForBallPlacement(struct Task *); @@ -482,13 +484,13 @@ static const struct Subsprite sSubsprites_HofMonitorBig[] = static const struct SubspriteTable sSubspriteTable_HofMonitorBig = subsprite_table(sSubsprites_HofMonitorBig); -static const union AnimCmd sAnim_Static[] = +const union AnimCmd sAnim_Static[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 1), ANIMCMD_JUMP(0) }; -static const union AnimCmd sAnim_Flicker[] = +const union AnimCmd sAnim_Flicker[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 16), ANIMCMD_FRAME(.imageValue = 1, .duration = 16), @@ -502,7 +504,7 @@ static const union AnimCmd sAnim_Flicker[] = }; // Flicker on and off, for the Pokéballs / monitors during the PokéCenter heal effect -static const union AnimCmd *const sAnims_Flicker[] = +const union AnimCmd *const sAnims_Flicker[] = { sAnim_Static, sAnim_Flicker @@ -557,7 +559,7 @@ static const struct SpriteTemplate sSpriteTemplate_HofMonitorSmall = .callback = SpriteCB_HallOfFameMonitor }; -static void (*const sPokecenterHealEffectFuncs[])(struct Task *) = +void (*const sPokecenterHealEffectFuncs[])(struct Task *) = { PokecenterHealEffect_Init, PokecenterHealEffect_WaitForBallPlacement, @@ -565,7 +567,7 @@ static void (*const sPokecenterHealEffectFuncs[])(struct Task *) = PokecenterHealEffect_WaitForSoundAndEnd }; -static void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = +void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = { HallOfFameRecordEffect_Init, HallOfFameRecordEffect_WaitForBallPlacement, @@ -573,7 +575,7 @@ static void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = HallOfFameRecordEffect_WaitForSoundAndEnd }; -static void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = +void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = { PokeballGlowEffect_PlaceBalls, PokeballGlowEffect_TryPlaySe, @@ -599,7 +601,7 @@ static const u8 sPokeballGlowReds[] = {16, 12, 8, 0}; static const u8 sPokeballGlowGreens[] = {16, 12, 8, 0}; static const u8 sPokeballGlowBlues[] = { 0, 0, 0, 0}; -static bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = +bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = { FallWarpEffect_Init, FallWarpEffect_WaitWeather, @@ -610,7 +612,7 @@ static bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = FallWarpEffect_End, }; -static bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = +bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = { EscalatorWarpOut_Init, EscalatorWarpOut_WaitForPlayer, @@ -620,7 +622,7 @@ static bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = EscalatorWarpOut_Down_End, }; -static bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = +bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = { EscalatorWarpIn_Init, EscalatorWarpIn_Down_Init, @@ -631,7 +633,7 @@ static bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = EscalatorWarpIn_End, }; -static bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = +bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = { WaterfallFieldEffect_Init, WaterfallFieldEffect_ShowMon, @@ -640,14 +642,14 @@ static bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectE WaterfallFieldEffect_ContinueRideOrEnd, }; -static bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = +bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = { DiveFieldEffect_Init, DiveFieldEffect_ShowMon, DiveFieldEffect_TryWarp, }; -static bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpEffect_Init, LavaridgeGymB1FWarpEffect_CameraShake, @@ -657,7 +659,7 @@ static bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct Ob LavaridgeGymB1FWarpEffect_Warp, }; -static bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpExitEffect_Init, LavaridgeGymB1FWarpExitEffect_StartPopOut, @@ -665,7 +667,7 @@ static bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struc LavaridgeGymB1FWarpExitEffect_End, }; -static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGym1FWarpEffect_Init, LavaridgeGym1FWarpEffect_AshPuff, @@ -674,7 +676,7 @@ static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct Obj LavaridgeGym1FWarpEffect_Warp, }; -static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = +void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = { EscapeRopeWarpOutEffect_Init, EscapeRopeWarpOutEffect_Spin, @@ -1362,7 +1364,7 @@ static void Task_UseFly(u8 taskId) task->data[0]++; } - + if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); @@ -1541,6 +1543,7 @@ static bool8 FallWarpEffect_End(struct Task *task) UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); + FollowMe_WarpSetEnd(); return FALSE; } @@ -1592,6 +1595,7 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) task->tState++; task->data[2] = 0; task->data[3] = 0; + EscalatorMoveFollower(task->data[1]); if ((u8)task->tGoingUp == FALSE) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride @@ -1889,6 +1893,7 @@ static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct Ob gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); + FollowMe_WarpSetEnd(); return FALSE; } @@ -2275,6 +2280,31 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection])); + + if (gSaveBlock2Ptr->follower.inProgress) + { + ObjectEventClearHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId]); + switch(objectEvent->facingDirection) + { + case DIR_SOUTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 25); + break; + case DIR_NORTH: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 0; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 26); + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 27); + break; + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + ObjectEventSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], 28); + break; + } + } + if (task->tNumTurns < 12) task->tNumTurns++; task->tSpinDelay = 8 >> (task->tNumTurns >> 2); @@ -2282,7 +2312,7 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) } } -static void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { +void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { EscapeRopeWarpInEffect_Init, EscapeRopeWarpInEffect_Spin }; @@ -2453,7 +2483,7 @@ static void FieldCallback_TeleportWarpIn(void) CreateTask(Task_TeleportWarpIn, 0); } -static void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { +void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { TeleportWarpInFieldEffect_Init, TeleportWarpInFieldEffect_SpinEnter, TeleportWarpInFieldEffect_SpinGround @@ -2587,7 +2617,7 @@ bool8 FldEff_FieldMoveShowMonInit(void) return FALSE; } -static void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { +void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonOutdoorsEffect_Init, FieldMoveShowMonOutdoorsEffect_LoadGfx, FieldMoveShowMonOutdoorsEffect_CreateBanner, @@ -2755,7 +2785,7 @@ static void LoadFieldMoveOutdoorStreaksTilemap(u16 offs) #define tBgOffset data[4] #define tMonSpriteId data[15] -static void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { +void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonIndoorsEffect_Init, FieldMoveShowMonIndoorsEffect_LoadGfx, FieldMoveShowMonIndoorsEffect_SlideBannerOn, @@ -2983,7 +3013,7 @@ u8 FldEff_UseSurf(void) return FALSE; } -static void (*const sSurfFieldEffectFuncs[])(struct Task *) = { +void (*const sSurfFieldEffectFuncs[])(struct Task *) = { SurfFieldEffect_Init, SurfFieldEffect_FieldMovePose, SurfFieldEffect_ShowMon, @@ -3163,7 +3193,7 @@ u8 FldEff_UseFly(void) return 0; } -static void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { +void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { FlyOutFieldEffect_FieldMovePose, FlyOutFieldEffect_ShowMon, FlyOutFieldEffect_BirdLeaveBall, @@ -3454,7 +3484,7 @@ u8 FldEff_FlyIn(void) return 0; } -static void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { +void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { FlyInFieldEffect_BirdSwoopDown, FlyInFieldEffect_FlyInWithBird, FlyInFieldEffect_JumpOffBird, @@ -3685,7 +3715,7 @@ static void StartEndingDeoxysRockCameraShake(u8 taskId) #undef tEndDelay #undef tEnding -static void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { +void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { DestroyDeoxysRockEffect_CameraShake, DestroyDeoxysRockEffect_RockFragments, DestroyDeoxysRockEffect_WaitAndEnd, diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 7bc4230b0..fdbafd233 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -589,6 +589,60 @@ u32 FldEff_SandFootprints(void) return 0; } +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_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; +} + u32 FldEff_DeepSandFootprints(void) { u8 spriteId; diff --git a/src/field_message_box.c b/src/field_message_box.c index 95d0a94c9..74afb5677 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -33,7 +33,7 @@ static void Task_DrawFieldMessage(u8 taskId) task->tState++; break; case 1: - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); task->tState++; break; case 2: diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index a3a6ed342..b08288ffa 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -20,6 +20,7 @@ #include "strings.h" #include "task.h" #include "tv.h" +#include "follow_me.h" #include "wild_encounter.h" #include "constants/abilities.h" #include "constants/event_objects.h" @@ -79,13 +80,13 @@ static bool8 TryPushBoulder(s16, s16, u8); static void CheckAcroBikeCollision(s16, s16, u8, u8 *); static void DoPlayerAvatarTransition(void); -static void PlayerAvatarTransition_Dummy(struct ObjectEvent *); -static void PlayerAvatarTransition_Normal(struct ObjectEvent *); -static void PlayerAvatarTransition_MachBike(struct ObjectEvent *); -static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *); -static void PlayerAvatarTransition_Surfing(struct ObjectEvent *); -static void PlayerAvatarTransition_Underwater(struct ObjectEvent *); -static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *); +static void PlayerAvatarTransition_Dummy(struct ObjectEvent *a); +static void PlayerAvatarTransition_Normal(struct ObjectEvent *a); +static void PlayerAvatarTransition_MachBike(struct ObjectEvent *a); +static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *a); +static void PlayerAvatarTransition_Surfing(struct ObjectEvent *a); +static void PlayerAvatarTransition_Underwater(struct ObjectEvent *a); +static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *a); static bool8 PlayerAnimIsMultiFrameStationary(void); static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void); @@ -96,51 +97,51 @@ static void PlayerRun(u8); static void PlayerNotOnBikeCollide(u8); static void PlayerNotOnBikeCollideWithFarawayIslandMew(u8); -static void PlayCollisionSoundIfNotFacingWarp(u8); +static void PlayCollisionSoundIfNotFacingWarp(u8 a); static void HideShowWarpArrow(struct ObjectEvent *); static void StartStrengthAnim(u8, u8); -static void Task_PushBoulder(u8); -static bool8 PushBoulder_Start(struct Task *, struct ObjectEvent *, struct ObjectEvent *); -static bool8 PushBoulder_Move(struct Task *, struct ObjectEvent *, struct ObjectEvent *); -static bool8 PushBoulder_End(struct Task *, struct ObjectEvent *, struct ObjectEvent *); +static void Task_PushBoulder(u8 taskId); +static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); +static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); +static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); static void DoPlayerMatJump(void); -static void DoPlayerAvatarSecretBaseMatJump(u8); -static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *, struct ObjectEvent *); +static void DoPlayerAvatarSecretBaseMatJump(u8 taskId); +static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent *objectEvent); static void DoPlayerMatSpin(void); -static void PlayerAvatar_DoSecretBaseMatSpin(u8); -static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *, struct ObjectEvent *); -static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *, struct ObjectEvent *); +static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId); +static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct ObjectEvent *objectEvent); +static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct ObjectEvent *objectEvent); static void CreateStopSurfingTask(u8); -static void Task_StopSurfingInit(u8); -static void Task_WaitStopSurfing(u8); +static void Task_StopSurfingInit(u8 taskId); +static void Task_WaitStopSurfing(u8 taskId); -static void Task_Fishing(u8); -static u8 Fishing_Init(struct Task *); -static u8 Fishing_GetRodOut(struct Task *); -static u8 Fishing_WaitBeforeDots(struct Task *); -static u8 Fishing_InitDots(struct Task *); -static u8 Fishing_ShowDots(struct Task *); -static u8 Fishing_CheckForBite(struct Task *); -static u8 Fishing_GotBite(struct Task *); -static u8 Fishing_WaitForA(struct Task *); -static u8 Fishing_CheckMoreDots(struct Task *); -static u8 Fishing_MonOnHook(struct Task *); -static u8 Fishing_StartEncounter(struct Task *); -static u8 Fishing_NotEvenNibble(struct Task *); -static u8 Fishing_GotAway(struct Task *); -static u8 Fishing_NoMon(struct Task *); -static u8 Fishing_PutRodAway(struct Task *); -static u8 Fishing_EndNoMon(struct Task *); +static void Task_Fishing(u8 taskId); +static u8 Fishing_Init(struct Task *task); +static u8 Fishing_GetRodOut(struct Task *task); +static u8 Fishing_WaitBeforeDots(struct Task *task); +static u8 Fishing_InitDots(struct Task *task); +static u8 Fishing_ShowDots(struct Task *task); +static u8 Fishing_CheckForBite(struct Task *task); +static u8 Fishing_GotBite(struct Task *task); +static u8 Fishing_WaitForA(struct Task *task); +static u8 Fishing_CheckMoreDots(struct Task *task); +static u8 Fishing_MonOnHook(struct Task *task); +static u8 Fishing_StartEncounter(struct Task *task); +static u8 Fishing_NotEvenNibble(struct Task *task); +static u8 Fishing_GotAway(struct Task *task); +static u8 Fishing_NoMon(struct Task *task); +static u8 Fishing_PutRodAway(struct Task *task); +static u8 Fishing_EndNoMon(struct Task *task); static void AlignFishingAnimationFrames(void); -static u8 TrySpinPlayerForWarp(struct ObjectEvent *, s16 *); +static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *a1); static bool8 (*const sForcedMovementTestFuncs[NUM_FORCED_MOVEMENTS])(u8) = { @@ -638,7 +639,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) { FollowerPokeballSparkle(); PlayerRun(direction); @@ -1217,32 +1218,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) +u8 unref_GetRivalAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1260,7 +1261,7 @@ u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) } } -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1329,7 +1330,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1341,7 +1342,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) +u16 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1354,7 +1355,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1392,6 +1393,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) gPlayerAvatar.spriteId = objectEvent->spriteId; gPlayerAvatar.gender = gender; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT); + CreateFollowerAvatar(); } void SetPlayerInvisibility(bool8 invisible) @@ -1450,68 +1452,68 @@ static void HideShowWarpArrow(struct ObjectEvent *objectEvent) /* Strength */ -#define tState data[0] -#define tBoulderObjId data[1] -#define tDirection data[2] - -static void StartStrengthAnim(u8 objectEventId, u8 direction) +static void StartStrengthAnim(u8 a, u8 b) { u8 taskId = CreateTask(Task_PushBoulder, 0xFF); - gTasks[taskId].tBoulderObjId = objectEventId; - gTasks[taskId].tDirection = direction; + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = b; Task_PushBoulder(taskId); } static void Task_PushBoulder(u8 taskId) { - while (sPushBoulderFuncs[gTasks[taskId].tState](&gTasks[taskId], + while (sPushBoulderFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], - &gObjectEvents[gTasks[taskId].tBoulderObjId])) + &gObjectEvents[gTasks[taskId].data[1]])) ; } -static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { ScriptContext2_Enable(); gPlayerAvatar.preventStep = TRUE; - task->tState++; + task->data[0]++; return FALSE; } -static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - if (ObjectEventIsHeldMovementActive(player)) - ObjectEventClearHeldMovementIfFinished(player); - - if (ObjectEventIsHeldMovementActive(boulder)) - ObjectEventClearHeldMovementIfFinished(boulder); - - if (!ObjectEventIsMovementOverridden(player) - && !ObjectEventIsMovementOverridden(boulder)) + if (ObjectEventIsHeldMovementActive(playerObject)) { - ObjectEventClearHeldMovementIfFinished(player); - ObjectEventClearHeldMovementIfFinished(boulder); - ObjectEventSetHeldMovement(player, GetWalkInPlaceNormalMovementAction((u8)task->tDirection)); - ObjectEventSetHeldMovement(boulder, GetWalkSlowMovementAction((u8)task->tDirection)); - gFieldEffectArguments[0] = boulder->currentCoords.x; - gFieldEffectArguments[1] = boulder->currentCoords.y; - gFieldEffectArguments[2] = boulder->previousElevation; - gFieldEffectArguments[3] = gSprites[boulder->spriteId].oam.priority; + ObjectEventClearHeldMovementIfFinished(playerObject); + } + + if (ObjectEventIsHeldMovementActive(strengthObject)) + { + ObjectEventClearHeldMovementIfFinished(strengthObject); + } + + if (!ObjectEventIsMovementOverridden(playerObject) + && !ObjectEventIsMovementOverridden(strengthObject)) + { + ObjectEventClearHeldMovementIfFinished(playerObject); + ObjectEventClearHeldMovementIfFinished(strengthObject); + ObjectEventSetHeldMovement(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2])); + ObjectEventSetHeldMovement(strengthObject, GetWalkSlowMovementAction((u8)task->data[2])); + gFieldEffectArguments[0] = strengthObject->currentCoords.x; + gFieldEffectArguments[1] = strengthObject->currentCoords.y; + gFieldEffectArguments[2] = strengthObject->previousElevation; + gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority; FieldEffectStart(FLDEFF_DUST); PlaySE(SE_M_STRENGTH); - task->tState++; + task->data[0]++; } return FALSE; } -static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) +static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - if (ObjectEventCheckHeldMovementStatus(player) - && ObjectEventCheckHeldMovementStatus(boulder)) + if (ObjectEventCheckHeldMovementStatus(playerObject) + && ObjectEventCheckHeldMovementStatus(strengthObject)) { - ObjectEventClearHeldMovementIfFinished(player); - ObjectEventClearHeldMovementIfFinished(boulder); + ObjectEventClearHeldMovementIfFinished(playerObject); + ObjectEventClearHeldMovementIfFinished(strengthObject); gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); DestroyTask(FindTaskIdByFunc(Task_PushBoulder)); @@ -1519,10 +1521,6 @@ static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *player, stru return FALSE; } -#undef tState -#undef tBoulderObjId -#undef tDirection - /* Some field effect */ static void DoPlayerMatJump(void) diff --git a/src/field_region_map.c b/src/field_region_map.c index adf5e4ed7..26ae736a6 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -192,7 +192,10 @@ static void FieldUpdateRegionMap(void) { FreeRegionMapIconResources(); SetMainCallback2(sFieldRegionMapHandler->callback); - TRY_FREE_AND_SET_NULL(sFieldRegionMapHandler); + if (sFieldRegionMapHandler != NULL) + { + FREE_AND_SET_NULL(sFieldRegionMapHandler); + } FreeAllWindowBuffers(); } break; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 77553542a..119f20dea 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -27,6 +27,7 @@ #include "sound.h" #include "start_menu.h" #include "task.h" +#include "follow_me.h" #include "text.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" @@ -42,8 +43,6 @@ static void FillPalBufferWhite(void); static void Task_ExitDoor(u8); static bool32 WaitForWeatherFadeIn(void); static void Task_SpinEnterWarp(u8 taskId); -static void Task_WarpAndLoadMap(u8 taskId); -static void Task_DoDoorWarp(u8 taskId); static void Task_EnableScriptAfterMusicFade(u8 taskId); // data[0] is used universally by tasks in this file as a state for switches @@ -53,7 +52,7 @@ static void Task_EnableScriptAfterMusicFade(u8 taskId); static const u16 sFlashLevelToRadius[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 }; const s32 gMaxFlashLevel = ARRAY_COUNT(sFlashLevelToRadius) - 1; -static const struct ScanlineEffectParams sFlashEffectParams = +const struct ScanlineEffectParams sFlashEffectParams = { ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -111,7 +110,7 @@ void WarpFadeOutScreen(void) } } -static void SetPlayerVisibility(bool8 visible) +void SetPlayerVisibility(bool8 visible) { SetPlayerInvisibility(!visible); } @@ -275,6 +274,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); SetUpWarpExitTask(); + FollowMe_WarpSetEnd(); ScriptContext2_Enable(); } @@ -323,6 +323,7 @@ static void Task_ExitDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -352,6 +353,8 @@ static void Task_ExitDoor(u8 taskId) case 3: if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 4; } @@ -372,6 +375,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) switch (task->tState) { case 0: + HideFollower(); SetPlayerVisibility(FALSE); FreezeObjectEvents(); PlayerGetDestCoords(x, y); @@ -390,6 +394,8 @@ static void Task_ExitNonAnimDoor(u8 taskId) case 2: if (IsPlayerStandingStill()) { + FollowMe_SetIndicatorToComeOutDoor(); + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); task->tState = 3; } @@ -644,7 +650,7 @@ void ReturnFromLinkRoom(void) CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } -static void Task_WarpAndLoadMap(u8 taskId) +void Task_WarpAndLoadMap(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -675,59 +681,6 @@ static void Task_WarpAndLoadMap(u8 taskId) } } -static void Task_DoDoorWarp(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - s16 *x = &task->data[2]; - s16 *y = &task->data[3]; - - switch (task->tState) - { - case 0: - FreezeObjectEvents(); - PlayerGetDestCoords(x, y); - PlaySE(GetDoorSoundEffect(*x, *y - 1)); - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); - task->tState = 1; - break; - case 1: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - u8 objEventId; - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP); - task->tState = 2; - } - break; - case 2: - if (IsPlayerStandingStill()) - { - u8 objEventId; - task->data[1] = FieldAnimateDoorClose(*x, *y - 1); - objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); - ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); - SetPlayerVisibility(FALSE); - task->tState = 3; - } - break; - case 3: - if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) - { - task->tState = 4; - } - break; - case 4: - TryFadeOutOldMapMusic(); - WarpFadeOutScreen(); - PlayRainStoppingSoundEffect(); - task->tState = 0; - task->func = Task_WarpAndLoadMap; - break; - } -} - static void Task_DoContestHallWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1011,6 +964,7 @@ static void Task_SpinEnterWarp(u8 taskId) case 1: if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE) { + FollowMe_WarpSetEnd(); UnfreezeObjectEvents(); ScriptContext2_Disable(); DestroyTask(taskId); diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 749346728..d8b9eb05d 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -19,19 +19,7 @@ #include "constants/songs.h" #include "constants/metatile_labels.h" -// Most of the boxes in the moving truck are map tiles, with the -// exception of three boxes that are map events that jostle around -// while the truck is driving. In addition, their sprite's placement -// is slightly offset to make them look less perfectly stacked. -// Box 1 (LOCALID_TRUCK_BOX_TOP) -#define BOX1_X_OFFSET 3 -#define BOX1_Y_OFFSET 3 -// Box 2 (LOCALID_TRUCK_BOX_BOTTOM_L) -#define BOX2_X_OFFSET 0 -#define BOX2_Y_OFFSET -3 -// Box 3 (LOCALID_TRUCK_BOX_BOTTOM_R) -#define BOX3_X_OFFSET -3 -#define BOX3_Y_OFFSET 0 +#define SECONDS(value) ((signed) (60.0 * value + 0.5)) // porthole states enum @@ -42,7 +30,8 @@ enum EXIT_PORTHOLE, }; -static const s8 sTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; +//. rodata +static const s8 gTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; static const u8 sSSTidalSailEastMovementScript[] = { @@ -56,194 +45,175 @@ static const u8 sSSTidalSailWestMovementScript[] = MOVEMENT_ACTION_STEP_END }; +// .text static void Task_Truck3(u8); -static s16 GetTruckCameraBobbingY(int time) +s16 GetTruckCameraBobbingY(int a1) { - if (!(time % 120)) + if (!(a1 % 120)) return -1; - else if ((time % 10) <= 4) + else if ((a1 % 10) <= 4) return 1; return 0; } -// Determines the frequency that the truck boxes bounce at. -// The return value of this function is multiplied and added -// to the boxes resting y offset, the result of which is that -// when it returns 0 they remain vertically still and when it -// returns -1 they jump upward. -// Box 1 has 30 added to the time so it jumps earlier, and -// box 2 has the return value multiplied by less, so it doesn't -// jump as high. -static s16 GetTruckBoxYMovement(int time) +s16 GetTruckBoxMovement(int a1) // for the box movement? { - if (!((time + 120) % 180)) + if (!((a1 + 120) % 180)) return -1; return 0; } -#define tTimer data[0] - -static void Task_Truck1(u8 taskId) +void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; s16 cameraXpan = 0, cameraYpan = 0; - s16 yBox1, yBox2, yBox3; + s16 box1, box2, box3; - yBox1 = GetTruckBoxYMovement(tTimer + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); - yBox2 = GetTruckBoxYMovement(tTimer) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); - yBox3 = GetTruckBoxYMovement(tTimer) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); + box1 = GetTruckBoxMovement(data[0] + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); + box2 = GetTruckBoxMovement(data[0]) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); + box3 = GetTruckBoxMovement(data[0]) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); - // Arbitrary timer limit that won't be reached - if (++tTimer == 30000) - tTimer = 0; + if (++data[0] == SECONDS(500)) // this will never run + data[0] = 0; // reset the timer if it gets stuck. - cameraYpan = GetTruckCameraBobbingY(tTimer); + cameraYpan = GetTruckCameraBobbingY(data[0]); SetCameraPanning(cameraXpan, cameraYpan); } -#undef tTimer - -#define tTimerHorizontal data[0] -#define tMoveStep data[1] -#define tTimerVertical data[2] - -static void Task_Truck2(u8 taskId) +void Task_Truck2(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan, cameraXpan; - s16 yBox1, yBox2, yBox3; + s16 cameraYpan; + s16 cameraXpan; + s16 box1; + s16 box2; + s16 box3; - tTimerHorizontal++; - tTimerVertical++; + data[0]++; + data[2]++; - if (tTimerHorizontal > 5) + if (data[0] > 5) { - tTimerHorizontal = 0; - tMoveStep++; + data[0] = 0; + data[1]++; } - if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) + if ((u16)data[1] == 19) { - // Never reached, the task function is changed below before finishing the table DestroyTask(taskId); } else { - if (sTruckCamera_HorizontalTable[tMoveStep] == 2) + if (gTruckCamera_HorizontalTable[data[1]] == 2) gTasks[taskId].func = Task_Truck3; - cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; - cameraYpan = GetTruckCameraBobbingY(tTimerVertical); + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; + cameraYpan = GetTruckCameraBobbingY(data[2]); SetCameraPanning(cameraXpan, cameraYpan); - yBox1 = GetTruckBoxYMovement(tTimerVertical + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); - yBox2 = GetTruckBoxYMovement(tTimerVertical) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); - yBox3 = GetTruckBoxYMovement(tTimerVertical) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); + box1 = GetTruckBoxMovement(data[2] + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); + box2 = GetTruckBoxMovement(data[2]) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); + box3 = GetTruckBoxMovement(data[2]) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); } } static void Task_Truck3(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraXpan, cameraYpan; + s16 cameraXpan; + s16 cameraYpan; - tTimerHorizontal++; + data[0]++; - if (tTimerHorizontal > 5) + if (data[0] > 5) { - tTimerHorizontal = 0; - tMoveStep++; + data[0] = 0; + data[1]++; } - if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) + if ((u16)data[1] == 19) { DestroyTask(taskId); } else { - cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; + cameraXpan = gTruckCamera_HorizontalTable[data[1]]; cameraYpan = 0; - SetCameraPanning(cameraXpan, cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + cameraYpan); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + cameraYpan); + SetCameraPanning(cameraXpan, 0); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan); } } -#undef tTimerHorizontal -#undef tMoveStep -#undef tTimerVertical - -#define tState data[0] -#define tTimer data[1] -#define tTaskId1 data[2] -#define tTaskId2 data[3] - -static void Task_HandleTruckSequence(u8 taskId) +void Task_HandleTruckSequence(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (tState) + switch (data[0]) { + /* + Each case has a timer which is handled with data[1], incrementing + until it reaches the if function's condition, which sets the next task up. + */ case 0: - tTimer++; - if (tTimer == 90) + data[1]++; + if (data[1] == SECONDS(1.5)) { SetCameraPanningCallback(NULL); - tTimer = 0; - tTaskId1 = CreateTask(Task_Truck1, 0xA); - tState = 1; + data[1] = 0; // reset the timer. + data[2] = CreateTask(Task_Truck1, 0xA); + data[0] = 1; // run the next case. PlaySE(SE_TRUCK_MOVE); } break; case 1: - tTimer++; - if (tTimer == 150) + data[1]++; + if (data[1] == SECONDS(2.5)) { FadeInFromBlack(); - tTimer = 0; - tState = 2; + data[1] = 0; + data[0] = 2; } break; case 2: - tTimer++; - if (!gPaletteFade.active && tTimer > 300) + data[1]++; + if (!gPaletteFade.active && data[1] > SECONDS(5)) { - tTimer = 0; - DestroyTask(tTaskId1); - tTaskId2 = CreateTask(Task_Truck2, 0xA); - tState = 3; + data[1] = 0; + DestroyTask(data[2]); + data[3] = CreateTask(Task_Truck2, 0xA); + data[0] = 3; PlaySE(SE_TRUCK_STOP); } break; case 3: - if (!gTasks[tTaskId2].isActive) + if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) { - // Task_Truck2 / Task_Truck3 has finished InstallCameraPanAheadCallback(); - tTimer = 0; - tState = 4; + data[1] = 0; + data[0] = 4; } break; case 4: - tTimer++; - if (tTimer == 90) + data[1]++; + if (data[1] == 90) { PlaySE(SE_TRUCK_UNLOAD); - tTimer = 0; - tState = 5; + data[1] = 0; + data[0] = 5; } break; case 5: - tTimer++; - if (tTimer == 120) + data[1]++; + if (data[1] == 120) { MapGridSetMetatileIdAt(4 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Top); MapGridSetMetatileIdAt(4 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Mid); @@ -272,9 +242,9 @@ void EndTruckSequence(u8 taskId) { if (!FuncIsActiveTask(Task_HandleTruckSequence)) { - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET, BOX1_Y_OFFSET); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET, BOX2_Y_OFFSET); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET, BOX3_Y_OFFSET); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0); } } @@ -289,7 +259,7 @@ bool8 TrySetPortholeWarpDestination(void) } else { - SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, x, y); + SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } diff --git a/src/field_specials.c b/src/field_specials.c index 4ed2a2e03..370d5136c 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -90,44 +90,44 @@ void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); static void RecordCyclingRoadResults(u32, u8); -static void LoadLinkPartnerObjectEventSpritePalette(u8, u8, u8); -static void Task_PetalburgGymSlideOpenRoomDoors(u8); -static void PetalburgGymSetDoorMetatiles(u8, u16); +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum); +static void Task_PetalburgGymSlideOpenRoomDoors(u8 taskId); +static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId); static void Task_PCTurnOnEffect(u8); static void PCTurnOnEffect_0(struct Task *); static void PCTurnOnEffect_1(s16, s8, s8); static void PCTurnOffEffect(void); static void Task_LotteryCornerComputerEffect(u8); static void LotteryCornerComputerEffect(struct Task *); -static void Task_ShakeCamera(u8); -static void StopCameraShake(u8); -static void Task_MoveElevator(u8); -static void MoveElevatorWindowLights(u16, bool8); -static void Task_MoveElevatorWindowLights(u8); -static void Task_ShowScrollableMultichoice(u8); -static void FillFrontierExchangeCornerWindowAndItemIcon(u16, u16); -static void ShowBattleFrontierTutorWindow(u8, u16); +static void Task_ShakeCamera(u8 taskId); +static void StopCameraShake(u8 taskId); +static void Task_MoveElevator(u8 taskId); +static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending); +static void Task_MoveElevatorWindowLights(u8 taskId); +static void Task_ShowScrollableMultichoice(u8 taskId); +static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection); +static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection); static void InitScrollableMultichoice(void); -static void ScrollableMultichoice_ProcessInput(u8); -static void ScrollableMultichoice_UpdateScrollArrows(u8); -static void ScrollableMultichoice_MoveCursor(s32, bool8, struct ListMenu *); -static void HideFrontierExchangeCornerItemIcon(u16, u16); -static void ShowBattleFrontierTutorMoveDescription(u8, u16); -static void CloseScrollableMultichoice(u8); -static void ScrollableMultichoice_RemoveScrollArrows(u8); -static void Task_ScrollableMultichoice_WaitReturnToList(u8); -static void Task_ScrollableMultichoice_ReturnToList(u8); -static void ShowFrontierExchangeCornerItemIcon(u16); -static void Task_DeoxysRockInteraction(u8); -static void ChangeDeoxysRockLevel(u8); -static void WaitForDeoxysRockMovement(u8); -static void Task_LinkRetireStatusWithBattleTowerPartner(u8); -static void Task_LoopWingFlapSE(u8); -static void Task_CloseBattlePikeCurtain(u8); +static void ScrollableMultichoice_ProcessInput(u8 taskId); +static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId); +static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused); +static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection); +static void CloseScrollableMultichoice(u8 taskId); +static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId); +static void Task_ScrollableMultichoice_WaitReturnToList(u8 taskId); +static void Task_ScrollableMultichoice_ReturnToList(u8 taskId); +static void ShowFrontierExchangeCornerItemIcon(u16 item); +static void Task_DeoxysRockInteraction(u8 taskId); +static void ChangeDeoxysRockLevel(u8 a0); +static void WaitForDeoxysRockMovement(u8 taskId); +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId); +static void Task_LoopWingFlapSE(u8 taskId); +static void Task_CloseBattlePikeCurtain(u8 taskId); static u8 DidPlayerGetFirstFans(void); static void SetInitialFansOfPlayer(void); static u16 PlayerGainRandomTrainerFan(void); -static void BufferFanClubTrainerName_(struct LinkBattleRecords *, u8, u8); +static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 a, u8 b); void Special_ShowDiploma(void) { @@ -502,7 +502,7 @@ void SpawnLinkPartnerObjectEvent(void) }; u8 myLinkPlayerNumber; u8 playerFacingDirection; - u8 linkSpriteId; + u16 linkSpriteId; u8 i; myLinkPlayerNumber = GetMultiplayerId(); @@ -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. @@ -1497,6 +1497,21 @@ u8 GetLeadMonIndex(void) return 0; } +u8 GetLeadMonNotFaintedIndex(void) +{ + u8 i; + u8 partyCount = CalculatePlayerPartyCount(); + for(i = 0; i < partyCount; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0 + && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) + { + return i; + } + } + return 0; +} + u16 ScriptGetPartyMonSpecies(void) { return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL); diff --git a/src/field_weather.c b/src/field_weather.c index 31cd4abf3..dfd96ee2b 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -65,7 +65,7 @@ static const u8 *sPaletteGammaTypes; // The drought weather effect uses a precalculated color lookup table. Presumably this // is because the underlying color shift calculation is slow. -static const u16 sDroughtWeatherColors[][0x1000] = { +const u16 sDroughtWeatherColors[][0x1000] = { INCBIN_U16("graphics/weather/drought/colors_0.bin"), INCBIN_U16("graphics/weather/drought/colors_1.bin"), INCBIN_U16("graphics/weather/drought/colors_2.bin"), @@ -859,10 +859,10 @@ void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette) UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); } -static void LoadDroughtWeatherPalette(u8 *palsIndex, u8 *palsOffset) +static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) { - *palsIndex = 0x20; - *palsOffset = 0x20; + *gammaIndexPtr = 0x20; + *a1 = 0x20; } void ResetDroughtWeatherPaletteLoading(void) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index bd6b9497d..cefe0da55 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -14,9 +14,11 @@ #include "trig.h" #include "gpu_regs.h" -EWRAM_DATA static u8 sCurrentAbnormalWeather = 0; -EWRAM_DATA static u16 sUnusedWeatherRelated = 0; +// EWRAM +EWRAM_DATA static u8 gCurrentAbnormalWeather = 0; +EWRAM_DATA static u16 gUnusedWeatherRelated = 0; +// CONST const u16 gCloudsWeatherPalette[] = INCBIN_U16("graphics/weather/cloud.gbapal"); const u16 gSandstormWeatherPalette[] = INCBIN_U16("graphics/weather/sandstorm.gbapal"); const u8 gWeatherFogDiagonalTiles[] = INCBIN_U8("graphics/weather/fog_diagonal.4bpp"); @@ -1819,7 +1821,7 @@ static void UpdateFogDiagonalMovement(void) gWeatherPtr->fogDPosY = gSpriteCoordOffsetY + gWeatherPtr->fogDYOffset; } -static const struct SpriteSheet sFogDiagonalSpriteSheet = +static const struct SpriteSheet gFogDiagonalSpriteSheet = { .data = gWeatherFogDiagonalTiles, .size = sizeof(gWeatherFogDiagonalTiles), @@ -1874,7 +1876,7 @@ static void CreateFogDiagonalSprites(void) if (!gWeatherPtr->fogDSpritesCreated) { - fogDiagonalSpriteSheet = sFogDiagonalSpriteSheet; + fogDiagonalSpriteSheet = gFogDiagonalSpriteSheet; LoadSpriteSheet(&fogDiagonalSpriteSheet); LoadCustomWeatherSpritePalette(&sFogSpritePalette); for (i = 0; i < NUM_FOG_DIAGONAL_SPRITES; i++) @@ -2432,39 +2434,34 @@ static void UpdateBubbleSprite(struct Sprite *sprite) //------------------------------------------------------------------------------ // Unused function. -static void UnusedSetCurrentAbnormalWeather(u32 weather, u32 unknown) +static void UnusedSetCurrentAbnormalWeather(u32 a0, u32 a1) { - sCurrentAbnormalWeather = weather; - sUnusedWeatherRelated = unknown; + gCurrentAbnormalWeather = a0; + gUnusedWeatherRelated = a1; } -#define tState data[0] -#define tWeatherA data[1] -#define tWeatherB data[2] -#define tDelay data[15] - static void Task_DoAbnormalWeather(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (tState) + switch (data[0]) { case 0: - if (tDelay-- <= 0) + if (data[15]-- <= 0) { - SetNextWeather(tWeatherA); - sCurrentAbnormalWeather = tWeatherA; - tDelay = 600; - tState++; + SetNextWeather(data[1]); + gCurrentAbnormalWeather = data[1]; + data[15] = 600; + data[0]++; } break; case 1: - if (tDelay-- <= 0) + if (data[15]-- <= 0) { - SetNextWeather(tWeatherB); - sCurrentAbnormalWeather = tWeatherB; - tDelay = 600; - tState = 0; + SetNextWeather(data[2]); + gCurrentAbnormalWeather = data[2]; + data[15] = 600; + data[0] = 0; } break; } @@ -2475,33 +2472,25 @@ static void CreateAbnormalWeatherTask(void) u8 taskId = CreateTask(Task_DoAbnormalWeather, 0); s16 *data = gTasks[taskId].data; - tDelay = 600; - if (sCurrentAbnormalWeather == WEATHER_DOWNPOUR) + data[15] = 600; + if (gCurrentAbnormalWeather == WEATHER_DOWNPOUR) { - // Currently Downpour, next will be Drought - tWeatherA = WEATHER_DROUGHT; - tWeatherB = WEATHER_DOWNPOUR; + data[1] = WEATHER_DROUGHT; + data[2] = WEATHER_DOWNPOUR; } - else if (sCurrentAbnormalWeather == WEATHER_DROUGHT) + else if (gCurrentAbnormalWeather == WEATHER_DROUGHT) { - // Currently Drought, next will be Downpour - tWeatherA = WEATHER_DOWNPOUR; - tWeatherB = WEATHER_DROUGHT; + data[1] = WEATHER_DOWNPOUR; + data[2] = WEATHER_DROUGHT; } else { - // Default to starting with Downpour - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; - tWeatherA = WEATHER_DROUGHT; - tWeatherB = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; + data[1] = WEATHER_DROUGHT; + data[2] = WEATHER_DOWNPOUR; } } -#undef tState -#undef tWeatherA -#undef tWeatherB -#undef tDelay - static u8 TranslateWeatherNum(u8); static void UpdateRainCounter(u8, u8); @@ -2544,13 +2533,13 @@ void DoCurrentWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = sCurrentAbnormalWeather; + weather = gCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetNextWeather(weather); } @@ -2563,13 +2552,13 @@ void ResumePausedWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = sCurrentAbnormalWeather; + weather = gCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - sCurrentAbnormalWeather = WEATHER_DOWNPOUR; + gCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetCurrentAndNextWeather(weather); } diff --git a/src/fieldmap.c b/src/fieldmap.c index a02355e72..4dbf981cf 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -25,10 +25,10 @@ struct ConnectionFlags u8 east:1; }; -EWRAM_DATA static u16 sBackupMapData[MAX_MAP_DATA_SIZE] = {0}; +EWRAM_DATA static u16 gBackupMapData[MAX_MAP_DATA_SIZE] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; -EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0}; +EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0}; EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly struct BackupMapLayout gBackupMapLayout; @@ -87,14 +87,14 @@ void InitMapFromSavedGame(void) void InitBattlePyramidMap(bool8 setPlayerPosition) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - GenerateBattlePyramidFloorLayout(sBackupMapData, setPlayerPosition); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition); } void InitTrainerHillMap(void) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - GenerateTrainerHillFloorLayout(sBackupMapData); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + GenerateTrainerHillFloorLayout(gBackupMapData); } static void InitMapLayoutData(struct MapHeader *mapHeader) @@ -103,8 +103,8 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) int width; int height; mapLayout = mapHeader->mapLayout; - CpuFastFill16(MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); - gBackupMapLayout.map = sBackupMapData; + CpuFastFill16(MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); + gBackupMapLayout.map = gBackupMapData; width = mapLayout->width + MAP_OFFSET_W; gBackupMapLayout.width = width; height = mapLayout->height + MAP_OFFSET_H; @@ -140,7 +140,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { count = mapHeader->connections->count; connection = mapHeader->connections->connections; - sMapConnectionFlags = sDummyConnectionFlags; + gMapConnectionFlags = sDummyConnectionFlags; for (i = 0; i < count; i++, connection++) { struct MapHeader const *cMap = GetMapHeaderFromConnection(connection); @@ -149,19 +149,19 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { case CONNECTION_SOUTH: FillSouthConnection(mapHeader, cMap, offset); - sMapConnectionFlags.south = TRUE; + gMapConnectionFlags.south = TRUE; break; case CONNECTION_NORTH: FillNorthConnection(mapHeader, cMap, offset); - sMapConnectionFlags.north = TRUE; + gMapConnectionFlags.north = TRUE; break; case CONNECTION_WEST: FillWestConnection(mapHeader, cMap, offset); - sMapConnectionFlags.west = TRUE; + gMapConnectionFlags.west = TRUE; break; case CONNECTION_EAST: FillEastConnection(mapHeader, cMap, offset); - sMapConnectionFlags.east = TRUE; + gMapConnectionFlags.east = TRUE; break; } } @@ -436,7 +436,7 @@ void SaveMapView(void) for (i = y; i < y + MAP_OFFSET_H; i++) { for (j = x; j < x + MAP_OFFSET_W; j++) - *mapView++ = sBackupMapData[width * i + j]; + *mapView++ = gBackupMapData[width * i + j]; } } @@ -491,8 +491,8 @@ static void LoadSavedMapView(void) for (j = x; j < x + MAP_OFFSET_W; j++) { - if (!SkipCopyingMetatileFromSavedMap(&sBackupMapData[j + width * i], width, yMode)) - sBackupMapData[j + width * i] = *mapView; + if (!SkipCopyingMetatileFromSavedMap(&gBackupMapData[j + width * i], width, yMode)) + gBackupMapData[j + width * i] = *mapView; mapView++; } } @@ -554,7 +554,7 @@ static void MoveMapViewToBackup(u8 direction) desti = width * (y + y0); srci = (y + r8) * MAP_OFFSET_W + r9; src = &mapView[srci + i]; - dest = &sBackupMapData[x0 + desti + j]; + dest = &gBackupMapData[x0 + desti + j]; *dest = *src; i++; j++; @@ -570,28 +570,28 @@ int GetMapBorderIdAt(int x, int y) if (x >= (gBackupMapLayout.width - (MAP_OFFSET + 1))) { - if (!sMapConnectionFlags.east) + if (!gMapConnectionFlags.east) return CONNECTION_INVALID; return CONNECTION_EAST; } else if (x < MAP_OFFSET) { - if (!sMapConnectionFlags.west) + if (!gMapConnectionFlags.west) return CONNECTION_INVALID; return CONNECTION_WEST; } else if (y >= (gBackupMapLayout.height - MAP_OFFSET)) { - if (!sMapConnectionFlags.south) + if (!gMapConnectionFlags.south) return CONNECTION_INVALID; return CONNECTION_SOUTH; } else if (y < MAP_OFFSET) { - if (!sMapConnectionFlags.north) + if (!gMapConnectionFlags.north) return CONNECTION_INVALID; return CONNECTION_NORTH; diff --git a/src/frontier_util.c b/src/frontier_util.c index f5dde452f..03d7b0cb5 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -29,7 +29,6 @@ #include "load_save.h" #include "battle_dome.h" #include "constants/battle_frontier.h" -#include "constants/battle_pike.h" #include "constants/frontier_util.h" #include "constants/trainers.h" #include "constants/game_stat.h" @@ -500,94 +499,94 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT] = { { - {1, 2, 3, 3}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + {1, 2, 3, 3}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} }, { - {2, 3, 4, 4}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} + {2, 3, 4, 4}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} }, { - {3, 4, 5, 5}, {2, 2}, {5, 6}, {1}, {4, 5}, {2}, {6} + {3, 4, 5, 5}, {2, 2, 0, 0}, {5, 6, 0, 0}, {1, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} }, { - {4, 5, 6, 6}, {2, 2}, {5, 6}, {2}, {4, 5}, {2}, {6} + {4, 5, 6, 6}, {2, 2, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} }, { - {5, 6, 7, 7}, {3, 3}, {6, 7}, {2}, {5, 6}, {2}, {7} + {5, 6, 7, 7}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {7, 0, 0, 0} }, { - {6, 7, 8, 8}, {3, 3}, {6, 7}, {2}, {5, 6}, {4}, {7} + {6, 7, 8, 8}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {4, 0, 0, 0}, {7, 0, 0, 0} }, { - {7, 8, 9, 9}, {4, 4}, {7, 8}, {3}, {6, 7}, {4}, {8} + {7, 8, 9, 9}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0}, {6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} }, { - {8, 9, 10, 10}, {4, 4}, {7, 8}, {3},{6, 7}, {4}, {8} + {8, 9, 10, 10}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0},{6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} }, { - {9, 10, 11, 11}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} + {9, 10, 11, 11}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} }, { - {10, 11, 12, 12}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} + {10, 11, 12, 12}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} }, { - {11, 12, 13, 13}, {6, 6}, {9, 10}, {5,0}, {8, 9}, {8}, {10} + {11, 12, 13, 13}, {6, 6, 0, 0}, {9, 10, 0, 0}, {5, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} }, { - {12, 13, 14, 14}, {6, 6}, {9, 10}, {6,0}, {8, 9}, {8}, {10} + {12, 13, 14, 14}, {6, 6, 0, 0}, {9, 10, 0, 0}, {6, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} }, { - {13, 14, 15, 15}, {7, 7}, {10, 11}, {7}, {9, 10}, {10}, {11} + {13, 14, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {7, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} }, { - {14, 15, 15, 15}, {7, 7}, {10, 11}, {8}, {9, 10}, {10}, {11} + {14, 15, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {8, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} }, { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {9}, {10, 11}, {10}, {12} + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {9, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} }, { - {15, 15, 15, 15}, {8, 8}, {11, 12}, {10}, {10, 11}, {10}, {12} + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {10, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} }, { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {11}, {11, 12}, {12}, {13} + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {11, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} }, { - {15, 15, 15, 15}, {9, 9}, {12, 13}, {12}, {11, 12}, {12}, {13} + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} }, { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {13}, {12, 13}, {12}, {14} + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {13, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} }, { - {15, 15, 15, 15}, {10, 10}, {13, 14}, {14}, {12, 13}, {12}, {14} + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} }, { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {12}, {15} + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {12, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {14}, {15} + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {14}, {15} + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, { - {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} }, }; @@ -595,13 +594,13 @@ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUN // First bit is has battled them before and not won yet, second bit is has battled them and won (obtained a Symbol) static const u16 sBattledBrainBitFlags[NUM_FRONTIER_FACILITIES][2] = { - [FRONTIER_FACILITY_TOWER] = {1 << 0, 1 << 1}, - [FRONTIER_FACILITY_DOME] = {1 << 2, 1 << 3}, - [FRONTIER_FACILITY_PALACE] = {1 << 4, 1 << 5}, - [FRONTIER_FACILITY_ARENA] = {1 << 6, 1 << 7}, - [FRONTIER_FACILITY_FACTORY] = {1 << 8, 1 << 9}, - [FRONTIER_FACILITY_PIKE] = {1 << 10, 1 << 11}, - [FRONTIER_FACILITY_PYRAMID] = {1 << 12, 1 << 13}, + [FRONTIER_FACILITY_TOWER] = {0x0001, 0x0002}, + [FRONTIER_FACILITY_DOME] = {0x0004, 0x0008}, + [FRONTIER_FACILITY_PALACE] = {0x0010, 0x0020}, + [FRONTIER_FACILITY_ARENA] = {0x0040, 0x0080}, + [FRONTIER_FACILITY_FACTORY] = {0x0100, 0x0200}, + [FRONTIER_FACILITY_PIKE] = {0x0400, 0x0800}, + [FRONTIER_FACILITY_PYRAMID] = {0x1000, 0x2000}, }; static void (* const sFrontierUtilFuncs[])(void) = @@ -636,8 +635,8 @@ static const struct WindowTemplate sFrontierResultsWindowTemplate = .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, - .width = 28, - .height = 18, + .width = 0x1c, + .height = 0x12, .paletteNum = 15, .baseBlock = 1 }; @@ -647,7 +646,7 @@ static const struct WindowTemplate sLinkContestResultsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 2, - .width = 26, + .width = 0x1a, .height = 15, .paletteNum = 15, .baseBlock = 1 @@ -658,7 +657,7 @@ static const struct WindowTemplate sRankingHallRecordsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 1, - .width = 26, + .width = 0x1a, .height = 17, .paletteNum = 15, .baseBlock = 1 @@ -959,7 +958,7 @@ static bool8 IsWinStreakActive(u32 challenge) static void PrintAligned(const u8 *str, s32 y) { - s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, DISPLAY_WIDTH - 16); + s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, 224); y = (y * 8) + 1; AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, str, x, y, TEXT_SKIP_DRAW, NULL); } @@ -969,7 +968,7 @@ static void PrintHyphens(s32 y) s32 i; u8 text[37]; - for (i = 0; i < (int)ARRAY_COUNT(text) - 1; i++) + for (i = 0; i < 36; i++) text[i] = CHAR_HYPHEN; text[i] = EOS; @@ -1861,25 +1860,25 @@ static void GiveBattlePoints(void) switch (facility) { case FRONTIER_FACILITY_TOWER: - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_DOME: challengeNum = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; break; case FRONTIER_FACILITY_PALACE: - challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_ARENA: - challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / 7; break; case FRONTIER_FACILITY_FACTORY: - challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; break; case FRONTIER_FACILITY_PIKE: - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; break; case FRONTIER_FACILITY_PYRAMID: - challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; break; } @@ -1983,7 +1982,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (gFrontierBannedSpecies[i] != 0xFFFF) return; - if (lvlMode == FRONTIER_LVL_50 && monLevel > FRONTIER_MAX_LEVEL_50) + if (lvlMode == FRONTIER_LVL_50 && monLevel > 50) return; for (i = 0; i < *count && speciesArray[i] != species; i++) @@ -2345,7 +2344,7 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) StringCopy(gStringVar1, sRecordsWindowChallengeTexts[hallFacilityId][0]); StringExpandPlaceholders(gStringVar4, sRecordsWindowChallengeTexts[hallFacilityId][1]); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gStringVar4, 0, 1, TEXT_SKIP_DRAW, NULL); - x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], DISPLAY_WIDTH - 32); + x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], 0xD0); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, sLevelModeText[lvlMode], x, 1, TEXT_SKIP_DRAW, NULL); if (hallFacilityId == RANKING_HALL_TOWER_LINK) { diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 38f096af8..d134f2265 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -52,8 +52,6 @@ struct HallofFameTeam struct HallofFameMon mon[PARTY_SIZE]; }; -STATIC_ASSERT(sizeof(struct HallofFameTeam) * HALL_OF_FAME_MAX_TEAMS <= SECTOR_DATA_SIZE * NUM_HOF_SECTORS, HallOfFameFreeSpace); - struct HofGfx { u16 state; @@ -514,7 +512,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } *lastSavedTeam = *sHofMonPtr; - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_TrySaveData; @@ -529,8 +527,10 @@ static void Task_Hof_TrySaveData(u8 taskId) UnsetBgTilemapBuffer(3); FreeAllWindowBuffers(); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); DestroyTask(taskId); } @@ -722,7 +722,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); HallOfFame_PrintPlayerInfo(1, 2); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_LeagueChamp, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; @@ -771,8 +771,10 @@ static void Task_Hof_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); StartCredits(); } @@ -1077,8 +1079,10 @@ static void Task_HofPC_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - TRY_FREE_AND_SET_NULL(sHofGfxPtr); - TRY_FREE_AND_SET_NULL(sHofMonPtr); + if (sHofGfxPtr != NULL) + FREE_AND_SET_NULL(sHofGfxPtr); + if (sHofMonPtr != NULL) + FREE_AND_SET_NULL(sHofMonPtr); ReturnFromHallOfFamePC(); } @@ -1087,7 +1091,7 @@ static void Task_HofPC_HandleExit(u8 taskId) static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) { HofPCTopBar_Print(gText_AButtonExit, 8, TRUE); - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_HOFCorrupted, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; diff --git a/src/intro.c b/src/intro.c index a1d0508f4..827ce80be 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1848,7 +1848,7 @@ static void Task_Scene3_StartGroudon(u8 taskId) { gTasks[taskId].tState = 0; gTasks[taskId].func = Task_Scene3_Groudon; - ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, FALSE); + ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, 0); } #define tScreenX data[1] @@ -2058,7 +2058,7 @@ static void Task_Scene3_LoadKyogre(u8 taskId) gTasks[taskId].tDelay = 16; gTasks[taskId].tZoom = 256; PanFadeAndZoomScreen(gTasks[taskId].tScreenX, gTasks[taskId].tScreenY, gTasks[taskId].tZoom, 0); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, FALSE); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, 0); } static void Task_Scene3_Kyogre(u8 taskId) diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 0942e82f1..e7039e02b 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -757,9 +757,10 @@ void LoadIntroPart2Graphics(u8 scenery) gReservedSpritePaletteCount = 8; } -// Note: This is only called with scenery=1. +// Note: This is only called with a=1. void SetIntroPart2BgCnt(u8 scenery) { + // Only called with scenery = 1 switch (scenery) { default: diff --git a/src/item_menu.c b/src/item_menu.c index cd0bc159d..9eaca9597 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1344,7 +1344,7 @@ static void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, bool16 skipEraseLis DrawPocketIndicatorSquare(newPocket, TRUE); FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16); ScheduleBgCopyTilemapToVram(2); - SetBagVisualPocketId(newPocket, TRUE); + SetBagVisualPocketId(newPocket, 1); RemoveBagSprite(ITEMMENUSPRITE_BALL); AddSwitchPocketRotatingBallSprite(deltaBagPocketId); SetTaskFuncWithFollowupFunc(taskId, Task_SwitchBagPocket, gTasks[taskId].func); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index 5ac44f5ad..a5c265f90 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -35,8 +35,8 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite); // static const rom data static const u16 sRotatingBall_Pal[] = INCBIN_U16("graphics/bag/rotating_ball.gbapal"); static const u8 sRotatingBall_Gfx[] = INCBIN_U8("graphics/bag/rotating_ball.4bpp"); -static const u8 sCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); -static const u16 sCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); +static const u8 gCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); +static const u16 gCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); static const struct OamData sBagOamData = { @@ -269,7 +269,7 @@ static const struct SpriteFrameImage sBerryPicSpriteImageTable[] = {&gDecompressionBuffer[0], 0x800}, }; -static const struct SpriteTemplate sBerryPicSpriteTemplate = +static const struct SpriteTemplate gBerryPicSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -308,7 +308,7 @@ static const union AffineAnimCmd *const sBerryPicRotatingAnimCmds[] = sSpriteAffineAnim_BerryPicRotation2 }; -static const struct SpriteTemplate sBerryPicRotatingSpriteTemplate = +static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -404,7 +404,7 @@ static const union AnimCmd *const sBerryCheckCircleSpriteAnimTable[] = sSpriteAnim_BerryCheckCircle }; -static const struct SpriteTemplate sBerryCheckCircleSpriteTemplate = +static const struct SpriteTemplate gBerryCheckCircleSpriteTemplate = { .tileTag = TAG_BERRY_CHECK_CIRCLE_GFX, .paletteTag = TAG_BERRY_CHECK_CIRCLE_GFX, @@ -544,22 +544,7 @@ void AddBagItemIconSprite(u16 itemId, u8 id) void RemoveBagItemIconSprite(u8 id) { -// BUG: For one frame, the item you scroll to in the Bag menu -// will have an incorrect palette and may be seen as a flicker. -#ifdef BUGFIX - u8 *spriteId = &gBagMenu->spriteIds[ITEMMENUSPRITE_ITEM]; - - if (spriteId[id ^ 1] != SPRITE_NONE) - gSprites[spriteId[id ^ 1]].invisible = TRUE; - - if (spriteId[id] != SPRITE_NONE) - { - DestroySpriteAndFreeResources(&gSprites[spriteId[id]]); - spriteId[id] = SPRITE_NONE; - } -#else RemoveBagSprite(id + ITEMMENUSPRITE_ITEM); -#endif } void CreateItemMenuSwapLine(void) @@ -624,7 +609,7 @@ static void LoadBerryGfx(u8 berryId) u8 CreateBerryTagSprite(u8 id, s16 x, s16 y) { LoadBerryGfx(id); - return CreateSprite(&sBerryPicSpriteTemplate, x, y, 0); + return CreateSprite(&gBerryPicSpriteTemplate, x, y, 0); } void FreeBerryTagSpritePalette(void) @@ -639,7 +624,7 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL); LoadBerryGfx(berryId); - spriteId = CreateSprite(&sBerryPicRotatingSpriteTemplate, x, y, 0); + spriteId = CreateSprite(&gBerryPicRotatingSpriteTemplate, x, y, 0); if (startAffine == TRUE) StartSpriteAffineAnim(&gSprites[spriteId], 1); @@ -648,5 +633,5 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) u8 CreateBerryFlavorCircleSprite(s16 x) { - return CreateSprite(&sBerryCheckCircleSpriteTemplate, x, 116, 0); + return CreateSprite(&gBerryCheckCircleSpriteTemplate, x, 116, 0); } diff --git a/src/item_use.c b/src/item_use.c index af8f2504f..c03ede61b 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -42,33 +42,33 @@ #include "constants/items.h" #include "constants/songs.h" -static void SetUpItemUseCallback(u8); +static void SetUpItemUseCallback(u8 taskId); static void FieldCB_UseItemOnField(void); -static void Task_CallItemUseOnFieldCallback(u8); -static void Task_UseItemfinder(u8); -static void Task_CloseItemfinderMessage(u8); -static void Task_HiddenItemNearby(u8); -static void Task_StandingOnHiddenItem(u8); +static void Task_CallItemUseOnFieldCallback(u8 taskId); +static void Task_UseItemfinder(u8 taskId); +static void Task_CloseItemfinderMessage(u8 taskId); +static void Task_HiddenItemNearby(u8 taskId); +static void Task_StandingOnHiddenItem(u8 taskId); static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -static u8 GetDirectionToHiddenItem(s16, s16); -static void PlayerFaceHiddenItem(u8); -static void CheckForHiddenItemsInMapConnection(u8); -static void Task_OpenRegisteredPokeblockCase(u8); -static void ItemUseOnFieldCB_Bike(u8); +static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY); +static void PlayerFaceHiddenItem(u8 a); +static void CheckForHiddenItemsInMapConnection(u8 taskId); +static void Task_OpenRegisteredPokeblockCase(u8 taskId); +static void ItemUseOnFieldCB_Bike(u8 taskId); static void ItemUseOnFieldCB_Rod(u8); static void ItemUseOnFieldCB_Itemfinder(u8); -static void ItemUseOnFieldCB_Berry(u8); -static void ItemUseOnFieldCB_WailmerPailBerry(u8); -static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8); +static void ItemUseOnFieldCB_Berry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); static bool8 TryToWaterSudowoodo(void); -static void BootUpSoundTMHM(u8); -static void Task_ShowTMHMContainedMessage(u8); -static void UseTMHMYesNo(u8); -static void UseTMHM(u8); -static void Task_StartUseRepel(u8); -static void Task_UseRepel(u8); -static void Task_CloseCantUseKeyItemMessage(u8); -static void SetDistanceOfClosestHiddenItem(u8, s16, s16); +static void BootUpSoundTMHM(u8 taskId); +static void Task_ShowTMHMContainedMessage(u8 taskId); +static void UseTMHMYesNo(u8 taskId); +static void UseTMHM(u8 taskId); +static void Task_StartUseRepel(u8 taskId); +static void Task_UseRepel(u8 taskId); +static void Task_CloseCantUseKeyItemMessage(u8 taskId); +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y); static void CB2_OpenPokeblockFromBag(void); // EWRAM variables diff --git a/src/landmark.c b/src/landmark.c index 615a9bfe3..52d52500a 100644 --- a/src/landmark.c +++ b/src/landmark.c @@ -336,7 +336,7 @@ static const struct Landmark *const Landmarks_MtChimney_2[] = NULL, }; -static const struct LandmarkList sLandmarkLists[] = +static const struct LandmarkList gLandmarkLists[] = { {MAPSEC_ROUTE_103, 2, Landmarks_Route103_2}, {MAPSEC_ROUTE_104, 0, Landmarks_Route104_0}, @@ -420,21 +420,21 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id) { u16 i = 0; - for (; sLandmarkLists[i].mapSection != MAPSEC_NONE; i++) + for (; gLandmarkLists[i].mapSection != MAPSEC_NONE; i++) { - if (sLandmarkLists[i].mapSection > mapSection) + if (gLandmarkLists[i].mapSection > mapSection) return NULL; - if (sLandmarkLists[i].mapSection == mapSection) + if (gLandmarkLists[i].mapSection == mapSection) break; } - if (sLandmarkLists[i].mapSection == MAPSEC_NONE) + if (gLandmarkLists[i].mapSection == MAPSEC_NONE) return NULL; - for (; sLandmarkLists[i].mapSection == mapSection; i++) + for (; gLandmarkLists[i].mapSection == mapSection; i++) { - if (sLandmarkLists[i].id == id) - return sLandmarkLists[i].landmarks; + if (gLandmarkLists[i].id == id) + return gLandmarkLists[i].landmarks; } return NULL; diff --git a/src/libisagbprn.c b/src/libisagbprn.c index 7a70cf41f..69c6986ae 100644 --- a/src/libisagbprn.c +++ b/src/libisagbprn.c @@ -31,7 +31,7 @@ void AGBPrintFlush1Block(void); void AGBPrintInit(void) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; @@ -57,7 +57,7 @@ static void AGBPutcInternal(const char cChr) void AGBPutc(const char cChr) { - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; volatile struct AGBPrintStruct *pPrint; *pWSCNT = WSCNT_DATA; @@ -71,7 +71,7 @@ void AGBPutc(const char cChr) void AGBPrint(const char *pBuf) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - vu16 *pWSCNT = ®_WAITCNT; + u16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; while (*pBuf) @@ -95,9 +95,9 @@ void AGBPrintf(const char *pBuf, ...) static void AGBPrintTransferDataInternal(u32 bAllData) { LPFN_PRINT_FLUSH lpfnFuncFlush; - vu16 *pIME; + u16 *pIME; u16 nIME; - vu16 *pWSCNT; + u16 *pWSCNT; u16 nOldWSCNT; u16 *pProtect; volatile struct AGBPrintStruct *pPrint; diff --git a/src/link.c b/src/link.c index e88cde55a..aa9a0d73d 100644 --- a/src/link.c +++ b/src/link.c @@ -120,18 +120,18 @@ static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL; static void InitLocalLinkPlayer(void); static void VBlankCB_LinkError(void); static void CB2_LinkTest(void); -static void ProcessRecvCmds(u8); +static void ProcessRecvCmds(u8 unused); static void LinkCB_SendHeldKeys(void); static void ResetBlockSend(void); -static bool32 InitBlockSend(const void *, size_t); +static bool32 InitBlockSend(const void *src, size_t size); static void LinkCB_BlockSendBegin(void); static void LinkCB_BlockSend(void); static void LinkCB_BlockSendEnd(void); -static void SetBlockReceivedFlag(u8); -static u16 LinkTestCalcBlockChecksum(const u16 *, u16); -static void LinkTest_PrintHex(u32, u8, u8, u8); +static void SetBlockReceivedFlag(u8 who); +static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); +static void LinkTest_PrintHex(u32 pos, u8 a0, u8 a1, u8 a2); static void LinkCB_RequestPlayerDataExchange(void); -static void Task_PrintTestData(u8); +static void Task_PrintTestData(u8 taskId); static void LinkCB_ReadyCloseLink(void); static void LinkCB_WaitCloseLink(void); diff --git a/src/list_menu.c b/src/list_menu.c index 8ba13a6cf..ccb183891 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -312,14 +312,14 @@ static void ListMenuDummyTask(u8 taskId) } -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum) +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum) { switch (sMysteryGiftLinkMenu.state) { case 0: default: sMysteryGiftLinkMenu.windowId = AddWindow(windowTemplate); - switch (drawMode) + switch (arg2) { case 2: LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palNum); @@ -346,13 +346,13 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str } if (sMysteryGiftLinkMenu.state == 2) { - if (drawMode == 0) + if (arg2 == 0) { ClearWindowTilemap(sMysteryGiftLinkMenu.windowId); } else { - switch (drawMode) + switch (arg2) { case 0: // can never be reached, because of the if statement above ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE); diff --git a/src/m4a_1.s b/src/m4a_1.s index 3f1578806..cc5d3238d 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -680,7 +680,7 @@ SoundMainRAM_Unk2: ldr r1, [r4, o_SoundChannel_wav] add r2, r2, r1 add r2, r2, 0x10 - ldr r5, =sDecodingBuffer + ldr r5, =gDecodingBuffer ldr r6, =gDeltaEncodingTable mov r7, 0x40 ldrb lr, [r2], 1 @@ -701,7 +701,7 @@ _081DD57C: subs r7, r7, 2 bgt _081DD568 _081DD594: - ldr r5, =sDecodingBuffer + ldr r5, =gDecodingBuffer and r0, r3, 0x3F ldrsb r1, [r5, r0] pop {r0,r2,r5-r7,pc} @@ -1911,6 +1911,6 @@ _081DDD90: .align 2, 0 @ Don't pad with nop. .bss -sDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM +gDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM .space 0x40 - .size sDecodingBuffer, .-sDecodingBuffer + .size gDecodingBuffer, .-gDecodingBuffer diff --git a/src/main.c b/src/main.c index 5fd236447..2b96a8698 100644 --- a/src/main.c +++ b/src/main.c @@ -69,7 +69,7 @@ u8 gLinkVSyncDisabled; u32 IntrMain_Buffer[0x200]; s8 gPcmDmaCounter; -static EWRAM_DATA u16 sTrainerId = 0; +static EWRAM_DATA u16 gTrainerId = 0; //EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL; @@ -201,12 +201,12 @@ void SeedRngAndSetTrainerId(void) u16 val = REG_TM1CNT_L; SeedRng(val); REG_TM1CNT_H = 0; - sTrainerId = val; + gTrainerId = val; } u16 GetGeneratedTrainerIdLower(void) { - return sTrainerId; + return gTrainerId; } void EnableVCountIntrAtLine150(void) diff --git a/src/main_menu.c b/src/main_menu.c index d11784133..ed6158a9c 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -198,7 +198,7 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8, u8); static void NewGameBirchSpeech_ClearWindow(u8); static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8); static void Task_NewGameBirchSpeech_MainSpeech(u8); -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *, u16); +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a); static void Task_NewGameBirchSpeech_AndYouAre(u8); static void Task_NewGameBirchSpeechSub_WaitForLotad(u8); static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8); @@ -371,7 +371,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sNewGameBirchSpeechTextWindows[] = +static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] = { { .bg = 0, @@ -457,7 +457,7 @@ static const struct MenuAction sMenuActions_Gender[] = { {gText_BirchGirl, NULL} }; -static const u8 *const sMalePresetNames[] = { +static const u8 *const gMalePresetNames[] = { gText_DefaultNameStu, gText_DefaultNameMilton, gText_DefaultNameTom, @@ -480,7 +480,7 @@ static const u8 *const sMalePresetNames[] = { gText_DefaultNameQuincy }; -static const u8 *const sFemalePresetNames[] = { +static const u8 *const gFemalePresetNames[] = { gText_DefaultNameKimmy, gText_DefaultNameTiara, gText_DefaultNameBella, @@ -1325,7 +1325,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) } else { - InitWindows(sNewGameBirchSpeechTextWindows); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); NewGameBirchSpeech_ShowDialogueWindow(0, 1); @@ -1371,7 +1371,7 @@ static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId) gSprites[spriteId].invisible = FALSE; gSprites[spriteId].data[0] = 0; - CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, PALETTES_BG, SPECIES_LOTAD); + CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, 0x0000FFFF, SPECIES_LOTAD); gTasks[taskId].func = Task_NewGameBirchSpeechSub_WaitForLotad; gTasks[sBirchSpeechMainTaskId].tTimer = 0; } @@ -1851,7 +1851,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) REG_IME = savedIme; SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - InitWindows(sNewGameBirchSpeechTextWindows); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); PutWindowTilemap(0); @@ -2087,7 +2087,7 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay) static void NewGameBirchSpeech_ShowGenderMenu(void) { - DrawMainMenuWindowBorder(&sNewGameBirchSpeechTextWindows[1], 0xF3); + DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3); FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, ARRAY_COUNT(sMenuActions_Gender), sMenuActions_Gender); InitMenuInUpperLeftCornerNormal(1, ARRAY_COUNT(sMenuActions_Gender), 0); @@ -2106,9 +2106,9 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) u8 i; if (gSaveBlock2Ptr->playerGender == MALE) - name = sMalePresetNames[nameId]; + name = gMalePresetNames[nameId]; else - name = sFemalePresetNames[nameId]; + name = gFemalePresetNames[nameId]; for (i = 0; i < PLAYER_NAME_LENGTH; i++) gSaveBlock2Ptr->playerName[i] = name[i]; gSaveBlock2Ptr->playerName[PLAYER_NAME_LENGTH] = EOS; @@ -2221,9 +2221,9 @@ static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template) CopyBgTilemapBufferToVram(template->bg); } -static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 unused) +static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused) { - FillBgTilemapBufferRect(bg, 0, x + 255, y + 255, width + 2, height + 2, 2); + FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2); } static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram) @@ -2247,7 +2247,7 @@ static void NewGameBirchSpeech_ClearWindow(u8 windowId) CopyWindowToVram(windowId, COPYWIN_GFX); } -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 renderCmd) +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a) { // Wait for Birch's "This is a Pokémon" text to reach the pause // Then start the PokéBall release (if it hasn't been started already) @@ -2270,25 +2270,24 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, COPYWIN_FULL); + CopyWindowToVram(windowId, 3); } -static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 palNum) +static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f) { - FillBgTilemapBufferRect(bg, 0xFD, x-2, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0xFF, x-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x100, x, y-1, width, 1, palNum); - FillBgTilemapBufferRect(bg, 0x101, x+width-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x102, x+width, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x103, x-2, y, 1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x105, x-1, y, width+1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x106, x+width, y, 1, 5, palNum); - - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFD), x-2, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFF), x-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x100), x, y+height, width-1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x101), x+width-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x102), x+width, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(a, 0xFD, b-2, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0xFF, b-1, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x100, b, c-1, d, 1, f); + FillBgTilemapBufferRect(a, 0x101, b+d-1, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x102, b+d, c-1, 1, 1, f); + FillBgTilemapBufferRect(a, 0x103, b-2, c, 1, 5, f); + FillBgTilemapBufferRect(a, 0x105, b-1, c, d+1, 5, f); + FillBgTilemapBufferRect(a, 0x106, b+d, c, 1, 5, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFD), b-2, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFF), b-1, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x100), b, c+e, d-1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x101), b+d-1, c+e, 1, 1, f); + FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x102), b+d, c+e, 1, 1, f); } static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8 taskId) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 9eaa035ca..8cf1a6bab 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -12,7 +12,6 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "constants/battle_frontier.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" #include "constants/weather.h" @@ -177,25 +176,25 @@ static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] = [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE }; -static const u8 sText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); -static const u8 sText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); -static const u8 sText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); -static const u8 sText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); -static const u8 sText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); -static const u8 sText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); -static const u8 sText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); -static const u8 sText_Pyramid[] = _("PYRAMID"); +static const u8 gText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); +static const u8 gText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); +static const u8 gText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); +static const u8 gText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); +static const u8 gText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); +static const u8 gText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); +static const u8 gText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); +static const u8 gText_Pyramid[] = _("PYRAMID"); -static const u8 * const sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE + 1] = +static const u8 * const gBattlePyramid_MapHeaderStrings[] = { - sText_PyramidFloor1, - sText_PyramidFloor2, - sText_PyramidFloor3, - sText_PyramidFloor4, - sText_PyramidFloor5, - sText_PyramidFloor6, - sText_PyramidFloor7, - sText_Pyramid, + gText_PyramidFloor1, + gText_PyramidFloor2, + gText_PyramidFloor3, + gText_PyramidFloor4, + gText_PyramidFloor5, + gText_PyramidFloor6, + gText_PyramidFloor7, + gText_Pyramid, }; // Unused @@ -310,12 +309,12 @@ static void ShowMapNamePopUpWindow(void) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP) { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE]; + mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7]; } else { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; + mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; } StringCopy(withoutPrefixPtr, mapDisplayHeaderSource); } diff --git a/src/match_call.c b/src/match_call.c index 8b25d5b44..de7f13416 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -33,13 +33,6 @@ #include "constants/songs.h" #include "constants/trainers.h" -// In this file only the values normally associated with Battle Pike and Factory are swapped. -// Note that this is *not* a bug, because they are properly swapped consistently in this file. -// There would only be an issue if anything in this file interacted with something expecting -// the usual value order, or vice versa. -#define MATCH_CALL_FACTORY FRONTIER_FACILITY_PIKE -#define MATCH_CALL_PIKE FRONTIER_FACILITY_FACTORY - // Each match call message has variables that can be populated randomly or // dependent on the trainer. The below are IDs for how to populate the vars // in a given message. @@ -1597,7 +1590,6 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * rand = Random(); if (!(rand & 1)) { - // Count the number of facilities with a win streak for (count = 0, i = 0; i < NUM_FRONTIER_FACILITIES; i++) { if (GetFrontierStreakInfo(i, &topic) > 1) @@ -1606,8 +1598,6 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * if (count) { - // At least one facility with a win streak - // Randomly choose one to have a call about count = Random() % count; for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { @@ -1817,15 +1807,15 @@ static void PopulateSpeciesFromTrainerParty(int matchCallId, u8 *destStr) StringCopy(destStr, speciesName); } -static const u8 *const sBattleFrontierFacilityNames[NUM_FRONTIER_FACILITIES] = +static const u8 *const sBattleFrontierFacilityNames[] = { - [FRONTIER_FACILITY_TOWER] = gText_BattleTower2, - [FRONTIER_FACILITY_DOME] = gText_BattleDome, - [FRONTIER_FACILITY_PALACE] = gText_BattlePalace, - [FRONTIER_FACILITY_ARENA] = gText_BattleArena, - [MATCH_CALL_PIKE] = gText_BattlePike, - [MATCH_CALL_FACTORY] = gText_BattleFactory, - [FRONTIER_FACILITY_PYRAMID] = gText_BattlePyramid, + gText_BattleTower2, + gText_BattleDome, + gText_BattlePalace, + gText_BattleArena, + gText_BattlePike, + gText_BattleFactory, + gText_BattlePyramid, }; static void PopulateBattleFrontierFacilityName(int matchCallId, u8 *destStr) @@ -1909,7 +1899,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) switch (facilityId) { case FRONTIER_FACILITY_DOME: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.domeRecordWinStreaks); i++) + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1919,7 +1909,11 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_B_DOME - 1; break; - case MATCH_CALL_PIKE: + #ifdef BUGFIX + case FRONTIER_FACILITY_PIKE: + #else + case FRONTIER_FACILITY_FACTORY: + #endif for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++) { if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]) @@ -1928,7 +1922,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_B_PIKE - 1; break; case FRONTIER_FACILITY_TOWER: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.towerRecordWinStreaks); i++) + for (i = 0; i < 4; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1939,7 +1933,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; case FRONTIER_FACILITY_PALACE: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.palaceRecordWinStreaks); i++) + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1949,8 +1943,12 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; - case MATCH_CALL_FACTORY: - for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.factoryRecordWinStreaks); i++) + #ifdef BUGFIX + case FRONTIER_FACILITY_FACTORY: + #else + case FRONTIER_FACILITY_PIKE: + #endif + for (i = 0; i < 2; i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 2b6c71c8a..681a3dadf 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -438,14 +438,14 @@ static void EnableTextPrinters(void) gDisableTextPrinters = FALSE; } -static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 renderCmd) +static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 a1) { gDisableTextPrinters = TRUE; } static void DrawSongTextWindow(const u8 * str) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, str, 0, 1, 1, DisableTextPrinters); gDisableTextPrinters = TRUE; CopyWindowToVram(0, COPYWIN_FULL); diff --git a/src/menu.c b/src/menu.c index c4540942b..49baddded 100644 --- a/src/menu.c +++ b/src/menu.c @@ -542,9 +542,9 @@ void RemoveMapNamePopUpWindow(void) } } -void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)) +void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16)) { - gTextFlags.canABSpeedUpPrint = canSpeedUp; + gTextFlags.canABSpeedUpPrint = a1; AddTextPrinterParameterized2(0, FONT_NORMAL, gStringVar4, GetPlayerTextSpeedDelay(), callback, 2, 1, 3); } @@ -1245,9 +1245,9 @@ static void PrintMenuActionGridText(u8 windowId, u8 fontId, u8 left, u8 top, u8 } // Unused -static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 width, u8 height, u8 columns, u8 rows, const struct MenuAction *menuActions) +static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *menuActions) { - PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, width, height, columns, rows, menuActions); + PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, a2, a3, a4, a5, menuActions); } void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds) diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 7decd695c..e9f3e571f 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -153,7 +153,7 @@ void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data) gTasks[taskId].func = Task_CallYesOrNoCallback; } -void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 unused1, u8 unused2, u8 unused3, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) { CreateYesNoMenu(template, tileStart, palette, 0); sYesNo = *yesNo; @@ -176,18 +176,17 @@ static void Task_CallYesOrNoCallback(u8 taskId) } } -// Returns TRUE if the quantity was changed, FALSE if it remained the same -bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) +bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) { - s16 valBefore = *quantity; + s16 valBefore = (*arg0); - if (JOY_REPEAT(DPAD_ANY) == DPAD_UP) + if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP) { - (*quantity)++; - if (*quantity > max) - *quantity = 1; + (*arg0)++; + if ((*arg0) > arg1) + (*arg0) = 1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -197,13 +196,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_DOWN) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN) { - (*quantity)--; - if (*quantity <= 0) - *quantity = max; + (*arg0)--; + if ((*arg0) <= 0) + (*arg0) = arg1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -213,13 +212,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_RIGHT) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT) { - *quantity += 10; - if (*quantity > max) - *quantity = max; + (*arg0) += 10; + if ((*arg0) > arg1) + (*arg0) = arg1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } @@ -229,13 +228,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) return TRUE; } } - else if (JOY_REPEAT(DPAD_ANY) == DPAD_LEFT) + else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT) { - *quantity -= 10; - if (*quantity <= 0) - *quantity = 1; + (*arg0) -= 10; + if ((*arg0) <= 0) + (*arg0) = 1; - if (*quantity == valBefore) + if ((*arg0) == valBefore) { return FALSE; } diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index e0f789bcb..5f08c6294 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -19,8 +19,8 @@ extern ScrCmdFunc gMysteryEventScriptCmdTable[]; extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; -// 0x1 in FireRed, 0x2 in LeafGreen, 0x80 in Ruby, 0x100 in Sapphire -#define VERSION_MASK (1 << 9) +#define LANGUAGE_MASK 0x1 +#define VERSION_MASK 0x200 #define mScriptBase data[0] #define mOffset data[1] @@ -29,21 +29,18 @@ extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0}; -static bool32 CheckCompatibility(u16 unk0, u32 unk1, u16 unk2, u32 version) +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) { - // 0x1 in English FRLG, 0x2 in English RS, 0x4 in German RS - if (!(unk0 & 0x1)) + if (!(a1 & LANGUAGE_MASK)) return FALSE; - // Same as above - if (!(unk1 & 0x1)) + if (!(a2 & LANGUAGE_MASK)) return FALSE; - // 0x1 in FRLG, 0x4 in RS - if (!(unk2 & 0x4)) + if (!(a3 & 0x4)) return FALSE; - if (!(version & VERSION_MASK)) + if (!(a4 & VERSION_MASK)) return FALSE; return TRUE; @@ -177,18 +174,18 @@ bool8 MEScrCmd_end(struct ScriptContext *ctx) bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) { - u16 unk0; - u32 unk1; - u16 unk2; - u32 version; + u16 v1; + u32 v2; + u16 v3; + u32 v4; ctx->mOffset = ScriptReadWord(ctx); - unk0 = ScriptReadHalfword(ctx); - unk1 = ScriptReadWord(ctx); - unk2 = ScriptReadHalfword(ctx); - version = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); - if (CheckCompatibility(unk0, unk1, unk2, version) == TRUE) + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) ctx->mValid = TRUE; else SetIncompatible(); diff --git a/src/mystery_gift.c b/src/mystery_gift.c index 72fc2b377..1df6533d9 100755 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -506,13 +506,9 @@ static void IncrementCardStat(u32 statType) } if (stat == NULL) - { AGB_ASSERT(0); - } else if (++(*stat) > MAX_WONDER_CARD_STAT) - { *stat = MAX_WONDER_CARD_STAT; - } } } diff --git a/src/mystery_gift_client.c b/src/mystery_gift_client.c index 567751bad..adf3ce8a6 100644 --- a/src/mystery_gift_client.c +++ b/src/mystery_gift_client.c @@ -44,7 +44,8 @@ u32 MysteryGiftClient_Run(u16 * endVal) { *endVal = sClient->param; MysteryGiftClient_Free(sClient); - FREE_AND_SET_NULL(sClient); + Free(sClient); + sClient = NULL; } return result; } @@ -202,7 +203,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGiftLink_InitSend(&client->link, MG_LINKID_GAME_DATA, client->sendBuffer, sizeof(struct MysteryGiftLinkGameData)); break; case CLI_LOAD_TOSS_RESPONSE: - // param here is set by MG_STATE_CLIENT_ASK_TOSS or MG_STATE_CLIENT_ASK_TOSS_UNRECEIVED + // param here is set by MG_STATE_LINK_ASK_TOSS or MG_STATE_LINK_ASK_TOSS_UNRECEIVED MysteryGiftClient_InitSendWord(client, MG_LINKID_RESPONSE, client->param); break; case CLI_SAVE_CARD: @@ -229,7 +230,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGift_TrySaveStamp(client->recvBuffer); break; case CLI_SAVE_RAM_SCRIPT: - InitRamScript_NoObjectEvent(client->recvBuffer, sizeof(struct RamScriptData)); + InitRamScript_NoObjectEvent(client->recvBuffer, 1000); break; case CLI_RECV_EREADER_TRAINER: memcpy(&gSaveBlock2Ptr->frontier.ereaderTrainer, client->recvBuffer, sizeof(gSaveBlock2Ptr->frontier.ereaderTrainer)); diff --git a/src/mystery_gift_server.c b/src/mystery_gift_server.c index 891870659..0e0acb642 100644 --- a/src/mystery_gift_server.c +++ b/src/mystery_gift_server.c @@ -44,7 +44,8 @@ u32 MysterGiftServer_Run(u16 * endVal) { *endVal = sServer->param; MysteryGiftServer_Free(sServer); - FREE_AND_SET_NULL(sServer); + Free(sServer); + sServer = NULL; } return result; } diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index ff34c8853..3047a219e 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -207,7 +207,8 @@ void WonderCard_Destroy(void) if (sWonderCardData != NULL) { *sWonderCardData = (struct WonderCardData){}; - FREE_AND_SET_NULL(sWonderCardData); + Free(sWonderCardData); + sWonderCardData = NULL; } } @@ -659,7 +660,8 @@ void WonderNews_Destroy(void) if (sWonderNewsData != NULL) { *sWonderNewsData = (struct WonderNewsData){}; - FREE_AND_SET_NULL(sWonderNewsData); + Free(sWonderNewsData); + sWonderNewsData = NULL; } } diff --git a/src/new_game.c b/src/new_game.c index 077b86775..f22ca7940 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -203,6 +203,7 @@ void NewGameInitData(void) WipeTrainerNameRecords(); ResetTrainerHillResults(); ResetContestLinkResults(); + memset(&gSaveBlock2Ptr->follower, 0, sizeof(gSaveBlock2Ptr->follower)); } static void ResetMiniGamesRecords(void) diff --git a/src/overworld.c b/src/overworld.c index d4fbaf29d..ba83cec2d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -61,6 +61,7 @@ #include "scanline_effect.h" #include "wild_encounter.h" #include "frontier_util.h" +#include "follow_me.h" #include "constants/abilities.h" #include "constants/layouts.h" #include "constants/map_types.h" @@ -830,7 +831,7 @@ static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *, struct Obje static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); -static u8 (*const sLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { [MOVEMENT_MODE_FREE] = MovementEventModeCB_Normal, [MOVEMENT_MODE_FROZEN] = MovementEventModeCB_Ignored, @@ -842,7 +843,7 @@ static u8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *, struct Obje static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); // These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise. -static bool8 (*const sLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { FacingHandler_DoNothing, FacingHandler_DpadMovement, @@ -861,7 +862,7 @@ static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerObjectEvent *, static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent *, struct ObjectEvent *); // These handlers are run after an attempted movement. -static void (*const sMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = +static void (*const gMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = { // FALSE: MovementStatusHandler_EnterFreeMode, @@ -877,6 +878,7 @@ void DoWhiteOut(void) HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); + UpdateFollowerPokemonGraphic(); WarpIntoMap(); } @@ -926,6 +928,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 0); VarSet(VAR_ABNORMAL_WEATHER_LOCATION, ABNORMAL_WEATHER_NONE); } + + FollowMe_TryRemoveFollowerOnWhiteOut(); } static void UpdateMiscOverworldStates(void) @@ -1956,6 +1960,10 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys); } } + + // if stop running but keep holding B -> fix follower frame + if (PlayerHasFollower() && IsPlayerOnFoot() && IsPlayerStandingStill()) + ObjectEventSetHeldMovement(&gObjectEvents[GetFollowerObjectId()], GetFaceDirectionAnimNum(gObjectEvents[GetFollowerObjectId()].facingDirection)); } void CB1_Overworld(void) @@ -1991,6 +1999,20 @@ void CB2_Overworld(void) OverworldBasic(); if (fading) SetFieldVBlankCallback(); + + // Make sure follower's sprite is properly positioned when map reloads. + if (gSaveBlock2Ptr->follower.inProgress) + { + switch(gObjectEvents[gSaveBlock2Ptr->follower.objId].facingDirection) + { + case DIR_EAST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = -8; + break; + case DIR_WEST: + gSprites[gObjectEvents[gSaveBlock2Ptr->follower.objId].spriteId].x2 = 8; + break; + } + } } void SetMainCallback1(MainCallback cb) @@ -2173,6 +2195,7 @@ void CB2_ReturnToFieldWithOpenMenu(void) { FieldClearVBlankHBlankCallbacks(); gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu; + UpdateFollowerPokemonGraphic(); CB2_ReturnToField(); } @@ -2639,10 +2662,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2677,6 +2697,7 @@ static void InitObjectEventsLocal(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); TryRunOnWarpIntoMapScript(); + FollowMe_HandleSprite(); } static void InitObjectEventsReturnToField(void) @@ -2989,9 +3010,9 @@ static u16 KeyInterCB_ReadButtons(u32 key) return LINK_KEY_CODE_EMPTY; } -static u16 GetDirectionForDpadKey(u16 key) +static u16 GetDirectionForDpadKey(u16 a1) { - switch (key) + switch (a1) { case LINK_KEY_CODE_DPAD_RIGHT: return FACING_RIGHT; @@ -3110,7 +3131,7 @@ static u16 KeyInterCB_Ready(u32 keyOrPlayerId) } } -static u16 KeyInterCB_SetReady(u32 key) +static u16 KeyInterCB_SetReady(u32 a1) { SetKeyInterceptCallback(KeyInterCB_Ready); return LINK_KEY_CODE_READY; @@ -3560,9 +3581,9 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { // This is a hack to split this code onto two separate lines, without declaring a local variable. // C++ style inline variables would be nice here. - #define TEMP sLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) + #define TEMP gLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) - sMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); + gMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); // Clean up the hack. #undef TEMP @@ -3573,7 +3594,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) @@ -3584,7 +3605,7 @@ static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerOb // Identical to MovementEventModeCB_Normal static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) diff --git a/src/palette.c b/src/palette.c index 577257eff..9fec449bc 100644 --- a/src/palette.c +++ b/src/palette.c @@ -60,13 +60,13 @@ static void Task_BlendPalettesGradually(u8 taskId); // unaligned word reads are issued in BlendPalette otherwise ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; -static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; +EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 sFiller = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; -static const struct PaletteStructTemplate sDummyPaletteStructTemplate = { +static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { .id = 0xFFFF, .state = 1 }; @@ -237,63 +237,63 @@ static void PaletteStruct_Run(u8 a1, u32 *unkFlags) } } -static void PaletteStruct_Copy(struct PaletteStruct *palStruct, u32 *unkFlags) +static void PaletteStruct_Copy(struct PaletteStruct *a1, u32 *unkFlags) { s32 srcIndex; s32 srcCount; u8 i = 0; - u16 srcOffset = palStruct->srcIndex * palStruct->template->size; + u16 srcOffset = a1->srcIndex * a1->template->size; - if (!palStruct->template->pst_field_8_0) + if (!a1->template->pst_field_8_0) { - while (i < palStruct->template->size) + while (i < a1->template->size) { - gPlttBufferUnfaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; - gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; + gPlttBufferUnfaded[a1->destOffset] = a1->template->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; i++; - palStruct->destOffset++; + a1->destOffset++; srcOffset++; } } else { - while (i < palStruct->template->size) + while (i < a1->template->size) { - gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; + gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; i++; - palStruct->destOffset++; + a1->destOffset++; srcOffset++; } } - palStruct->destOffset = palStruct->baseDestOffset; - palStruct->countdown1 = palStruct->template->time1; - palStruct->srcIndex++; + a1->destOffset = a1->baseDestOffset; + a1->countdown1 = a1->template->time1; + a1->srcIndex++; - srcIndex = palStruct->srcIndex; - srcCount = palStruct->template->srcCount; + srcIndex = a1->srcIndex; + srcCount = a1->template->srcCount; if (srcIndex >= srcCount) { - if (palStruct->countdown2) - palStruct->countdown2--; - palStruct->srcIndex = 0; + if (a1->countdown2) + a1->countdown2--; + a1->srcIndex = 0; } - *unkFlags |= 1 << (palStruct->baseDestOffset >> 4); + *unkFlags |= 1 << (a1->baseDestOffset >> 4); } -static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags) +static void PaletteStruct_Blend(struct PaletteStruct *a1, u32 *unkFlags) { - if (gPaletteFade.active && ((1 << (palStruct->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) + if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) { - if (!palStruct->template->pst_field_8_0) + if (!a1->template->pst_field_8_0) { if (gPaletteFade.delayCounter != gPaletteFade_delay) { BlendPalette( - palStruct->baseDestOffset, - palStruct->template->size, + a1->baseDestOffset, + a1->template->size, gPaletteFade.y, gPaletteFade.blendColor); } @@ -302,13 +302,13 @@ static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags) { if (!gPaletteFade.delayCounter) { - if (palStruct->countdown1 != palStruct->template->time1) + if (a1->countdown1 != a1->template->time1) { - u32 srcOffset = palStruct->srcIndex * palStruct->template->size; + u32 srcOffset = a1->srcIndex * a1->template->size; u8 i; - for (i = 0; i < palStruct->template->size; i++) - gPlttBufferFaded[palStruct->baseDestOffset + i] = palStruct->template->src[srcOffset + i]; + for (i = 0; i < a1->template->size; i++) + gPlttBufferFaded[a1->baseDestOffset + i] = a1->template->src[srcOffset + i]; } } } @@ -352,7 +352,7 @@ void PaletteStruct_ResetById(u16 id) static void PaletteStruct_Reset(u8 paletteNum) { - sPaletteStructs[paletteNum].template = &sDummyPaletteStructTemplate; + sPaletteStructs[paletteNum].template = &gDummyPaletteStructTemplate; sPaletteStructs[paletteNum].active = FALSE; sPaletteStructs[paletteNum].baseDestOffset = 0; sPaletteStructs[paletteNum].destOffset = 0; diff --git a/src/party_menu.c b/src/party_menu.c index 016c359cb..e15d001c6 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4969,7 +4969,7 @@ static void Task_TryLearnNewMoves(u8 taskId) { u16 learnMove; - if (WaitFanfare(FALSE) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) + if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { RemoveLevelUpStatsWindow(); learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); @@ -5647,11 +5647,11 @@ static u8 GetBattleEntryLevelCap(void) case FACILITY_MULTI_OR_EREADER: return MAX_LEVEL; case FACILITY_UNION_ROOM: - return UNION_ROOM_MAX_LEVEL; + return 30; default: // Battle Frontier if (gSpecialVar_0x8004 == FRONTIER_LVL_50) - return FRONTIER_MAX_LEVEL_50; - return FRONTIER_MAX_LEVEL_OPEN; + return 50; + return MAX_LEVEL; } } diff --git a/src/player_pc.c b/src/player_pc.c index 0ca78dea8..bf8479ce1 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -97,84 +97,84 @@ struct ItemStorageMenu u8 swapLineSpriteIds[SWAP_LINE_LENGTH]; }; -static void InitPlayerPCMenu(u8); -static void PlayerPCProcessMenuInput(u8); -static void InitItemStorageMenu(u8, u8); +static void InitPlayerPCMenu(u8 taskId); +static void PlayerPCProcessMenuInput(u8 taskId); +static void InitItemStorageMenu(u8 taskId, u8 var); static u8 GetMailboxMailCount(void); static void Mailbox_CompactMailList(void); -static void Mailbox_DrawMailboxMenu(u8); -static void Mailbox_ProcessInput(u8); -static void Mailbox_PrintWhatToDoWithPlayerMailText(u8); +static void Mailbox_DrawMailboxMenu(u8 taskId); +static void Mailbox_ProcessInput(u8 taskId); +static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId); static void Mailbox_ReturnToPlayerPC(u8); -static void Mailbox_PrintMailOptions(u8); -static void Mailbox_MailOptionsProcessInput(u8); +static void Mailbox_PrintMailOptions(u8 taskId); +static void Mailbox_MailOptionsProcessInput(u8 taskId); -static void PlayerPC_ItemStorage(u8); -static void PlayerPC_Mailbox(u8); -static void PlayerPC_Decoration(u8); -static void PlayerPC_TurnOff(u8); +static void PlayerPC_ItemStorage(u8 taskId); +static void PlayerPC_Mailbox(u8 taskId); +static void PlayerPC_Decoration(u8 var); +static void PlayerPC_TurnOff(u8 taskId); -static void Mailbox_DoMailMoveToBag(u8); -static void Mailbox_DoMailRead(u8); -static void Mailbox_MoveToBag(u8); -static void Mailbox_Give(u8); -static void Mailbox_Cancel(u8); +static void Mailbox_DoMailMoveToBag(u8 taskId); +static void Mailbox_DoMailRead(u8 taskId); +static void Mailbox_MoveToBag(u8 taskId); +static void Mailbox_Give(u8 taskId); +static void Mailbox_Cancel(u8 taskId); -static void Mailbox_CancelMoveToBag(u8); -static void Mailbox_HandleConfirmMoveToBag(u8); -static void Mailbox_AskConfirmMoveToBag(u8); -static void Mailbox_DoGiveMailPokeMenu(u8); -static void Mailbox_NoPokemonForMail(u8); +static void Mailbox_CancelMoveToBag(u8 taskId); +static void Mailbox_HandleConfirmMoveToBag(u8 taskId); +static void Mailbox_AskConfirmMoveToBag(u8 taskId); +static void Mailbox_DoGiveMailPokeMenu(u8 taskId); +static void Mailbox_NoPokemonForMail(u8 taskId); -static void Mailbox_FadeAndReadMail(u8); +static void Mailbox_FadeAndReadMail(u8 taskId); static void Mailbox_ReturnToFieldFromReadMail(void); static void Mailbox_ReshowAfterMail(void); -static void Mailbox_HandleReturnToProcessInput(u8); +static void Mailbox_HandleReturnToProcessInput(u8 taskId); static void Mailbox_UpdateMailListAfterDeposit(void); -static void ItemStorage_Withdraw(u8); -static void ItemStorage_Deposit(u8); -static void ItemStorage_Toss(u8); -static void ItemStorage_Exit(u8); -static void ItemStorage_TossItemYes(u8); -static void ItemStorage_TossItemNo(u8); +static void ItemStorage_Withdraw(u8 taskId); +static void ItemStorage_Deposit(u8 taskId); +static void ItemStorage_Toss(u8 taskId); +static void ItemStorage_Exit(u8 taskId); +static void ItemStorage_TossItemYes(u8 taskId); +static void ItemStorage_TossItemNo(u8 taskId); static void ItemStorageMenuPrint(const u8 *); -static void ItemStorageMenuProcessInput(u8); +static void ItemStorageMenuProcessInput(u8 taskId); static void SetPlayerPCListCount(u8); -static void ItemStorage_HandleReturnToProcessInput(u8); +static void ItemStorage_HandleReturnToProcessInput(u8 taskId); -static void ItemStorage_Enter(u8, bool8); -static void ItemStorage_CreateListMenu(u8); -static void ItemStorage_ProcessInput(u8); -static void Task_ItemStorage_Deposit(u8); +static void ItemStorage_Enter(u8 taskId, bool8 toss); +static void ItemStorage_CreateListMenu(u8 taskId); +static void ItemStorage_ProcessInput(u8 taskId); +static void Task_ItemStorage_Deposit(u8 taskId); static void ItemStorage_ReshowAfterBagMenu(void); -static void ItemStorage_DoItemWithdraw(u8); -static void ItemStorage_DoItemToss(u8); -static void ItemStorage_HandleQuantityRolling(u8); -static void ItemStorage_ExitItemList(u8); -static void ItemStorage_StartItemSwap(u8); -static void ItemStorage_DoItemAction(u8); -static void ItemStorage_FinishItemSwap(u8, bool8); -static void ItemStorage_HandleRemoveItem(u8); -static void ItemStorage_HandleErrorMessageInput(u8); -static void ItemStorage_ReturnToListInput(u8); +static void ItemStorage_DoItemWithdraw(u8 taskId); +static void ItemStorage_DoItemToss(u8 taskid); +static void ItemStorage_HandleQuantityRolling(u8 taskid); +static void ItemStorage_ExitItemList(u8 taskId); +static void ItemStorage_StartItemSwap(u8 taskId); +static void ItemStorage_DoItemAction(u8 taskId); +static void ItemStorage_FinishItemSwap(u8 taskId, bool8 a); +static void ItemStorage_HandleRemoveItem(u8 taskId); +static void ItemStorage_HandleErrorMessageInput(u8 taskId); +static void ItemStorage_ReturnToListInput(u8 taskId); static const u8* ItemStorage_GetMessage(u16); -static void CopyItemName_PlayerPC(u8 *, u16); +static void CopyItemName_PlayerPC(u8 *string, u16 itemId); static void ItemStorage_Init(void); -static void ItemStorage_DrawSwapArrow(u8, u8, u8); +static void ItemStorage_DrawSwapArrow(u8 y, u8, u8 speed); static void ItemStorage_RemoveWindow(u8); static void ItemStorage_UpdateSwapLinePos(u8); -static void ItemStorage_ProcessItemSwapInput(u8); +static void ItemStorage_ProcessItemSwapInput(u8 taskId); static void ItemStorage_EraseItemIcon(void); -static void ItemStorage_DrawItemIcon(u16); -static void ItemStorage_PrintDescription(s32); -static void ItemStorage_EraseMainMenu(u8); -static void ItemStorage_MoveCursor(s32, bool8, struct ListMenu *); -static void ItemStorage_PrintMenuItem(u8, u32, u8); +static void ItemStorage_DrawItemIcon(u16 itemId); +static void ItemStorage_PrintDescription(s32 id); +static void ItemStorage_EraseMainMenu(u8 taskId); +static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu * thisMenu); +static void ItemStorage_PrintMenuItem(u8 windowId, u32 id, u8 yOffset); static EWRAM_DATA const u8 *sTopMenuOptionOrder = NULL; static EWRAM_DATA u8 sTopMenuNumOptions = 0; @@ -518,7 +518,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, textPtr, 0, 1, 0, 0); } @@ -572,7 +572,7 @@ void CB2_PlayerPCExitBagMenu(void) static void ItemStorage_ReshowAfterBagMenu(void) { LoadMessageBoxAndBorderGfx(); - DrawDialogueFrame(0, TRUE); + DrawDialogueFrame(0, 1); InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1); FadeInFromBlack(); } @@ -1241,7 +1241,7 @@ static void ItemStorage_ReturnToMenuSelect(u8 taskId) s16 *data = gTasks[taskId].data; if (!IsDma3ManagerBusyWithBgCopy()) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); // Select Withdraw/Toss by default depending on which was just exited if (!tInTossMenu) diff --git a/src/pokeball.c b/src/pokeball.c index f203633a5..a9ccd42d6 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -438,7 +438,7 @@ static void SpriteCB_BallThrow(struct Sprite *sprite) sprite->y2 = 0; sprite->data[5] = 0; ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId); sprite->sBattler = opponentBattler; sprite->data[7] = noOfShakes; @@ -752,7 +752,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAnim(sprite, 1); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId); sprite->callback = HandleBallAnimEnd; @@ -1000,50 +1000,37 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite) #undef sBattler -static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 subpriority) +static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) { - return AnimateBallOpenParticles(x, y, kindOfStars, subpriority, BALL_POKE); + return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE); } -static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u32 selectedPalettes) +static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2) { - return LaunchBallFadeMonTask(unFadeLater, spritePalNum, selectedPalettes, BALL_POKE); + return LaunchBallFadeMonTask(unFadeLater, battlerId, arg2, BALL_POKE); } -// Sprite data for the pokemon -#define sSpecies data[7] - -// Sprite data for the pokeball -#define sMonSpriteId data[0] -#define sDelay data[1] -#define sMonPalNum data[2] -#define sFadePalsLo data[3] -#define sFadePalsHi data[4] -#define sFinalMonX data[5] -#define sFinalMonY data[6] -#define sTrigIdx data[7] - // Pokeball in Birch intro, and when receiving via trade -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 delay, u32 fadePalettes, u16 species) +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); - spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subpriortiy); + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy); - gSprites[spriteId].sMonSpriteId = monSpriteId; - gSprites[spriteId].sFinalMonX = gSprites[monSpriteId].x; - gSprites[spriteId].sFinalMonY = gSprites[monSpriteId].y; + gSprites[spriteId].data[0] = monSpriteId; + gSprites[spriteId].data[5] = gSprites[monSpriteId].x; + gSprites[spriteId].data[6] = gSprites[monSpriteId].y; gSprites[monSpriteId].x = x; gSprites[monSpriteId].y = y; - gSprites[monSpriteId].sSpecies = species; + gSprites[monSpriteId].data[7] = species; - gSprites[spriteId].sDelay = delay; - gSprites[spriteId].sMonPalNum = monPalNum; - gSprites[spriteId].sFadePalsLo = fadePalettes; - gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = battlerId; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 0x10; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_PokeballReleaseMon; @@ -1052,103 +1039,92 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, static void SpriteCB_PokeballReleaseMon(struct Sprite *sprite) { - if (sprite->sDelay == 0) + if (sprite->data[1] == 0) { - u8 subpriority; - u8 spriteId = sprite->sMonSpriteId; - u8 monPalNum = sprite->sMonPalNum; - u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); + u8 r5; + u8 r7 = sprite->data[0]; + u8 battlerId = sprite->data[2]; + u32 r4 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); if (sprite->subpriority != 0) - subpriority = sprite->subpriority - 1; + r5 = sprite->subpriority - 1; else - subpriority = 0; + r5 = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); - // sDelay re-used to store task id but never read - sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r5); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4); sprite->callback = SpriteCB_ReleasedMonFlyOut; - gSprites[spriteId].invisible = FALSE; - StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_EMERGE); - AnimateSprite(&gSprites[spriteId]); - gSprites[spriteId].data[1] = 0x1000; - sprite->sTrigIdx = 0; + gSprites[r7].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[r7], BATTLER_AFFINE_EMERGE); + AnimateSprite(&gSprites[r7]); + gSprites[r7].data[1] = 0x1000; + sprite->data[7] = 0; } else { - sprite->sDelay--; + sprite->data[1]--; } } static void SpriteCB_ReleasedMonFlyOut(struct Sprite *sprite) { - bool8 emergeAnimFinished = FALSE; - bool8 atFinalPosition = FALSE; - u8 monSpriteId = sprite->sMonSpriteId; - u16 x, y; + bool8 r12 = FALSE; + bool8 r6 = FALSE; + u8 monSpriteId = sprite->data[0]; + u16 var1; + u16 var2; if (sprite->animEnded) sprite->invisible = TRUE; - if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAffineAnim(&gSprites[monSpriteId], BATTLER_AFFINE_NORMAL); - emergeAnimFinished = TRUE; + r12 = TRUE; } - - x = (sprite->sFinalMonX - sprite->x) * sprite->sTrigIdx / 128 + sprite->x; - y = (sprite->sFinalMonY - sprite->y) * sprite->sTrigIdx / 128 + sprite->y; - gSprites[monSpriteId].x = x; - gSprites[monSpriteId].y = y; - - if (sprite->sTrigIdx < 128) + var1 = (sprite->data[5] - sprite->x) * sprite->data[7] / 128 + sprite->x; + var2 = (sprite->data[6] - sprite->y) * sprite->data[7] / 128 + sprite->y; + gSprites[monSpriteId].x = var1; + gSprites[monSpriteId].y = var2; + if (sprite->data[7] < 128) { - s16 sine = -(gSineTable[(u8)sprite->sTrigIdx] / 8); + s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8); - sprite->sTrigIdx += 4; + sprite->data[7] += 4; gSprites[monSpriteId].x2 = sine; gSprites[monSpriteId].y2 = sine; } else { - gSprites[monSpriteId].x = sprite->sFinalMonX; - gSprites[monSpriteId].y = sprite->sFinalMonY; + gSprites[monSpriteId].x = sprite->data[5]; + gSprites[monSpriteId].y = sprite->data[6]; gSprites[monSpriteId].x2 = 0; gSprites[monSpriteId].y2 = 0; - atFinalPosition = TRUE; + r6 = TRUE; } - if (sprite->animEnded && emergeAnimFinished && atFinalPosition) + if (sprite->animEnded && r12 && r6) { - if (gSprites[monSpriteId].sSpecies == SPECIES_EGG) - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, TRUE, 0); + if (gSprites[monSpriteId].data[7] == SPECIES_EGG) + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); else - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, FALSE, 0); + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); DestroySpriteAndFreeResources(sprite); } } -#undef sSpecies -#undef sFinalMonX -#undef sFinalMonY -#undef sTrigIdx - - -#define sTimer data[5] - -u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 delay, u32 fadePalettes) +u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); - spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subPriority); - gSprites[spriteId].sMonSpriteId = monSpriteId; - gSprites[spriteId].sDelay = delay; - gSprites[spriteId].sMonPalNum = monPalNum; - gSprites[spriteId].sFadePalsLo = fadePalettes; - gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subPriority); + gSprites[spriteId].data[0] = a; + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = b; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 16; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_TradePokeball; return spriteId; @@ -1156,22 +1132,21 @@ u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPri static void SpriteCB_TradePokeball(struct Sprite *sprite) { - if (sprite->sDelay == 0) + if (sprite->data[1] == 0) { - u8 subpriority; - u8 monSpriteId = sprite->sMonSpriteId; - u8 monPalNum = sprite->sMonPalNum; - u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); + u8 r6; + u8 monSpriteId = sprite->data[0]; + u8 r8 = sprite->data[2]; + u32 r5 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); if (sprite->subpriority != 0) - subpriority = sprite->subpriority - 1; + r6 = sprite->subpriority - 1; else - subpriority = 0; + r6 = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); - // sDelay re-used to store task id but never read - sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r6); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); sprite->callback = SpriteCB_TradePokeballSendOff; #ifdef BUGFIX // FIX: If this is used on a sprite that has previously had an affine animation, it will not @@ -1184,7 +1159,7 @@ static void SpriteCB_TradePokeball(struct Sprite *sprite) } else { - sprite->sDelay--; + sprite->data[1]--; } } @@ -1192,16 +1167,15 @@ static void SpriteCB_TradePokeballSendOff(struct Sprite *sprite) { u8 monSpriteId; - sprite->sTimer++; - if (sprite->sTimer == 11) + sprite->data[5]++; + if (sprite->data[5] == 11) PlaySE(SE_BALL_TRADE); - - monSpriteId = sprite->sMonSpriteId; + monSpriteId = sprite->data[0]; if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAnim(sprite, 2); gSprites[monSpriteId].invisible = TRUE; - sprite->sTimer = 0; + sprite->data[5] = 0; sprite->callback = SpriteCB_TradePokeballEnd; } else @@ -1217,13 +1191,6 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } -#undef sMonSpriteId -#undef sDelay -#undef sMonPalNum -#undef sFadePalsLo -#undef sFadePalsHi -#undef sTimer - static void Unref_DestroySpriteAndFreeResources(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); diff --git a/src/pokedex.c b/src/pokedex.c index 9592aee9c..206782e59 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -840,7 +840,7 @@ static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); static const u8 sText_TenDashes[] = _("----------"); -ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); +ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" #include "data/pokemon/pokedex_entries.h" @@ -4138,7 +4138,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) if (owned) description = gPokedexEntries[num].description; else - description = sExpandedPlaceholder_PokedexDescription; + description = gExpandedPlaceholder_PokedexDescription; PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, 0xF0), 0x5F); } @@ -4428,37 +4428,37 @@ bool16 HasAllMons(void) return TRUE; } -static void ResetOtherVideoRegisters(u16 regBits) +static void ResetOtherVideoRegisters(u16 a) { - if (!(regBits & DISPCNT_BG0_ON)) + if (!(a & DISPCNT_BG0_ON)) { ClearGpuRegBits(0, DISPCNT_BG0_ON); SetGpuReg(REG_OFFSET_BG0CNT, 0); SetGpuReg(REG_OFFSET_BG0HOFS, 0); SetGpuReg(REG_OFFSET_BG0VOFS, 0); } - if (!(regBits & DISPCNT_BG1_ON)) + if (!(a & DISPCNT_BG1_ON)) { ClearGpuRegBits(0, DISPCNT_BG1_ON); SetGpuReg(REG_OFFSET_BG1CNT, 0); SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG1VOFS, 0); } - if (!(regBits & DISPCNT_BG2_ON)) + if (!(a & DISPCNT_BG2_ON)) { ClearGpuRegBits(0, DISPCNT_BG2_ON); SetGpuReg(REG_OFFSET_BG2CNT, 0); SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); } - if (!(regBits & DISPCNT_BG3_ON)) + if (!(a & DISPCNT_BG3_ON)) { ClearGpuRegBits(0, DISPCNT_BG3_ON); SetGpuReg(REG_OFFSET_BG3CNT, 0); SetGpuReg(REG_OFFSET_BG3HOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); } - if (!(regBits & DISPCNT_OBJ_ON)) + if (!(a & DISPCNT_OBJ_ON)) { ClearGpuRegBits(0, DISPCNT_OBJ_ON); ResetSpriteData(); diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c index ff32f8eef..4926c019d 100644 --- a/src/pokedex_area_region_map.c +++ b/src/pokedex_area_region_map.c @@ -63,7 +63,7 @@ void FreePokedexAreaMapBgNum(void) TRY_FREE_AND_SET_NULL(sPokedexAreaMapBgNum); } -void PokedexAreaMapChangeBgY(u32 move) +void PokedexAreaMapChangeBgY(u32 a0) { - ChangeBgY(*sPokedexAreaMapBgNum, move * 0x100, BG_COORD_SET); + ChangeBgY(*sPokedexAreaMapBgNum, a0 * 0x100, BG_COORD_SET); } diff --git a/src/pokemon.c b/src/pokemon.c index 170425391..61125e362 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2464,7 +2464,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) level = GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode); else if (lvl50) - level = FRONTIER_MAX_LEVEL_50; + level = 50; else level = src->level; @@ -5379,10 +5379,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } -static void BufferStatRoseMessage(s32 statIdx) +static void BufferStatRoseMessage(s32 arg0) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]); StringCopy(gBattleTextBuff2, gText_StatRose); BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose); } @@ -5798,13 +5798,13 @@ u16 GetLinkTrainerFlankId(u8 linkPlayerId) return flankId; } -s32 GetBattlerMultiplayerId(u16 id) +s32 GetBattlerMultiplayerId(u16 a1) { - s32 multiplayerId; - for (multiplayerId = 0; multiplayerId < MAX_LINK_PLAYERS; multiplayerId++) - if (gLinkPlayers[multiplayerId].id == id) + s32 id; + for (id = 0; id < MAX_LINK_PLAYERS; id++) + if (gLinkPlayers[id].id == a1) break; - return multiplayerId; + return id; } u8 GetTrainerEncounterMusicId(u16 trainerOpponentId) @@ -6587,12 +6587,12 @@ void SetWildMonHeldItem(void) u16 rnd = Random() % 100; u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0); u16 chanceNoItem = 45; - u16 chanceNotRare = 95; + u16 chanceCommon = 95; if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) { chanceNoItem = 20; - chanceNotRare = 80; + chanceCommon = 80; } if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE) { @@ -6600,7 +6600,7 @@ void SetWildMonHeldItem(void) if (alteringCaveId != 0) { // In active Altering Cave, use special item list - if (rnd < chanceNotRare) + if (rnd < chanceCommon) return; SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item); } @@ -6609,27 +6609,27 @@ void SetWildMonHeldItem(void) // In inactive Altering Cave, use normal items if (rnd < chanceNoItem) return; - if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + if (rnd < chanceCommon) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); } } else { - if (gBaseStats[species].itemCommon == gBaseStats[species].itemRare && gBaseStats[species].itemCommon != ITEM_NONE) + if (gBaseStats[species].item1 == gBaseStats[species].item2 && gBaseStats[species].item1 != ITEM_NONE) { // Both held items are the same, 100% chance to hold item - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); } else { if (rnd < chanceNoItem) return; - if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + if (rnd < chanceCommon) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); } } } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 32333ee67..f6aa82391 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -2205,7 +2205,7 @@ static bool32 AreLinkQueuesEmpty(void) return !gRfu.recvQueue.count && !gRfu.sendQueue.count; } -static int GetNumPlayersForBonus(u8 *atJumpPeak) +static int GetNumPlayersForBonus(u8 *arg0) { int i = 0; int flags = 0; @@ -2213,7 +2213,7 @@ static int GetNumPlayersForBonus(u8 *atJumpPeak) for (; i < MAX_RFU_PLAYERS; i++) { - if (atJumpPeak[i]) + if (arg0[i]) { flags |= 1 << i; count++; @@ -3612,6 +3612,7 @@ static u32 AddMessageWindow(u32 left, u32 top, u32 width, u32 height) static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) { struct WindowTemplate window; + u8 a = cursorPos; window.bg = BG_INTERFACE; window.tilemapLeft = left; @@ -3621,7 +3622,7 @@ static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) window.paletteNum = 2; window.baseBlock = 0x2B; - CreateYesNoMenu(&window, 1, 0xD, cursorPos); + CreateYesNoMenu(&window, 1, 0xD, a); } // "Points" for jump score and "times" for number of jumps in a row diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 008fae3c9..70d84b7e4 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -654,6 +654,7 @@ static void SetMovingMonPriority(u8); static void SpriteCB_HeldMon(struct Sprite *); static struct Sprite *CreateMonIconSprite(u16, u32, s16, s16, u8, u8); static void DestroyBoxMonIcon(struct Sprite *); +extern void UpdateFollowerPokemonGraphic(void); // Pokémon data static void MoveMon(void); @@ -1040,7 +1041,7 @@ static const struct BgTemplate sBgTemplates[] = }, }; -static const struct SpritePalette sWaveformSpritePalette = +static const struct SpritePalette gWaveformSpritePalette = { sWaveform_Pal, PALTAG_MISC_2 }; @@ -1695,6 +1696,7 @@ static void CB2_ExitPokeStorage(void) { sPreviousBoxOption = GetCurrentBoxOption(); gFieldCallback = FieldTask_ReturnToPcMenu; + UpdateFollowerPokemonGraphic(); SetMainCallback2(CB2_ReturnToField); } @@ -3844,7 +3846,7 @@ static bool8 InitPokeStorageWindows(void) static void LoadWaveformSpritePalette(void) { - LoadSpritePalette(&sWaveformSpritePalette); + LoadSpritePalette(&gWaveformSpritePalette); } static void InitPalettesAndSprites(void) @@ -5417,7 +5419,8 @@ static bool32 WaitForWallpaperGfxLoad(void) if (IsDma3ManagerBusyWithBgCopy()) return FALSE; - TRY_FREE_AND_SET_NULL(sStorage->wallpaperTiles); + if (sStorage->wallpaperTiles != NULL) + FREE_AND_SET_NULL(sStorage->wallpaperTiles); return TRUE; } @@ -8475,11 +8478,11 @@ static void MultiMove_ClearIconFromBg(u8 x, u8 y) } } -static void MultiMove_InitMove(u16 x, u16 y, u16 moveSteps) +static void MultiMove_InitMove(u16 x, u16 y, u16 arg2) { sMultiMove->bgX = x; sMultiMove->bgY = y; - sMultiMove->bgMoveSteps = moveSteps; + sMultiMove->bgMoveSteps = arg2; } static u8 MultiMove_UpdateMove(void) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index c25d58ae6..10c69a422 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -195,62 +195,62 @@ static bool8 LoadGraphics(void); static void CB2_InitSummaryScreen(void); static void InitBGs(void); static bool8 DecompressGraphics(void); -static void CopyMonToSummaryStruct(struct Pokemon*); -static bool8 ExtractMonDataToSummaryStruct(struct Pokemon*); +static void CopyMonToSummaryStruct(struct Pokemon* a); +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); static void SetDefaultTilemaps(void); -static void CloseSummaryScreen(u8); -static void Task_HandleInput(u8); -static void ChangeSummaryPokemon(u8, s8); -static void Task_ChangeSummaryMon(u8); -static s8 AdvanceMonIndex(s8); -static s8 AdvanceMultiBattleMonIndex(s8); -static bool8 IsValidToViewInMulti(struct Pokemon*); -static void ChangePage(u8, s8); -static void PssScrollRight(u8); -static void PssScrollRightEnd(u8); -static void PssScrollLeft(u8); -static void PssScrollLeftEnd(u8); +static void CloseSummaryScreen(u8 taskId); +static void Task_HandleInput(u8 taskId); +static void ChangeSummaryPokemon(u8 taskId, s8 a); +static void Task_ChangeSummaryMon(u8 taskId); +static s8 AdvanceMonIndex(s8 delta); +static s8 AdvanceMultiBattleMonIndex(s8 delta); +static bool8 IsValidToViewInMulti(struct Pokemon* mon); +static void ChangePage(u8 taskId, s8 a); +static void PssScrollRight(u8 taskId); +static void PssScrollRightEnd(u8 taskId); +static void PssScrollLeft(u8 taskId); +static void PssScrollLeftEnd(u8 taskId); static void TryDrawExperienceProgressBar(void); -static void SwitchToMoveSelection(u8); -static void Task_HandleInput_MoveSelect(u8); +static void SwitchToMoveSelection(u8 taskId); +static void Task_HandleInput_MoveSelect(u8 taskId); static bool8 HasMoreThanOneMove(void); -static void ChangeSelectedMove(s16 *, s8, u8 *); -static void CloseMoveSelectMode(u8); -static void SwitchToMovePositionSwitchMode(u8); -static void Task_HandleInput_MovePositionSwitch(u8); -static void ExitMovePositionSwitchMode(u8, bool8); -static void SwapMonMoves(struct Pokemon *, u8, u8); -static void SwapBoxMonMoves(struct BoxPokemon *, u8, u8); -static void Task_SetHandleReplaceMoveInput(u8); -static void Task_HandleReplaceMoveInput(u8); +static void ChangeSelectedMove(s16 *taskData, s8 direction, u8 *moveIndexPtr); +static void CloseMoveSelectMode(u8 taskId); +static void SwitchToMovePositionSwitchMode(u8 a); +static void Task_HandleInput_MovePositionSwitch(u8 taskId); +static void ExitMovePositionSwitchMode(u8 taskId, bool8 swapMoves); +static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); +static void Task_SetHandleReplaceMoveInput(u8 taskId); +static void Task_HandleReplaceMoveInput(u8 taskId); static bool8 CanReplaceMove(void); -static void ShowCantForgetHMsWindow(u8); -static void Task_HandleInputCantForgetHMsMoves(u8); +static void ShowCantForgetHMsWindow(u8 taskId); +static void Task_HandleInputCantForgetHMsMoves(u8 taskId); static void DrawPagination(void); -static void HandlePowerAccTilemap(u16, s16); -static void Task_ShowPowerAccWindow(u8); -static void HandleAppealJamTilemap(u16, s16, u16); -static void Task_ShowAppealJamWindow(u8); -static void HandleStatusTilemap(u16, s16); -static void Task_ShowStatusWindow(u8); -static void TilemapFiveMovesDisplay(u16 *, u16, bool8); -static void DrawPokerusCuredSymbol(struct Pokemon*); -static void DrawExperienceProgressBar(struct Pokemon*); -static void DrawContestMoveHearts(u16); +static void HandlePowerAccTilemap(u16 a, s16 b); +static void Task_ShowPowerAccWindow(u8 taskId); +static void HandleAppealJamTilemap(u16 a, s16 b, u16 c); +static void Task_ShowAppealJamWindow(u8 taskId); +static void HandleStatusTilemap(u16 a, s16 b); +static void Task_ShowStatusWindow(u8 taskId); +static void TilemapFiveMovesDisplay(u16 *dst, u16 palette, bool8 remove); +static void DrawPokerusCuredSymbol(struct Pokemon* mon); +static void DrawExperienceProgressBar(struct Pokemon* mon); +static void DrawContestMoveHearts(u16 move); static void LimitEggSummaryPageDisplay(void); static void ResetWindows(void); static void PrintMonInfo(void); static void PrintNotEggInfo(void); static void PrintEggInfo(void); -static void PrintGenderSymbol(struct Pokemon *, u16); +static void PrintGenderSymbol(struct Pokemon *mon, u16 a); static void PrintPageNamesAndStats(void); -static void PutPageWindowTilemaps(u8); -static void ClearPageWindowTilemaps(u8); -static void RemoveWindowByIndex(u8); -static void PrintPageSpecificText(u8); -static void CreateTextPrinterTask(u8); +static void PutPageWindowTilemaps(u8 a); +static void ClearPageWindowTilemaps(u8 a); +static void RemoveWindowByIndex(u8 a); +static void PrintPageSpecificText(u8 a); +static void CreateTextPrinterTask(u8 a); static void PrintInfoPageText(void); -static void Task_PrintInfoPage(u8); +static void Task_PrintInfoPage(u8 taskId); static void PrintMonOTName(void); static void PrintMonOTID(void); static void PrintMonAbilityName(void); @@ -258,7 +258,7 @@ static void PrintMonAbilityDescription(void); static void BufferMonTrainerMemo(void); static void PrintMonTrainerMemo(void); static void BufferNatureString(void); -static void GetMetLevelString(u8 *); +static void GetMetLevelString(u8 *a); static bool8 DoesMonOTMatchOwner(void); static bool8 DidMonComeFromGBAGames(void); static bool8 IsInGamePartnerMon(void); @@ -266,7 +266,7 @@ static void PrintEggOTName(void); static void PrintEggOTID(void); static void PrintEggState(void); static void PrintEggMemo(void); -static void Task_PrintSkillsPage(u8); +static void Task_PrintSkillsPage(u8 taskId); static void PrintHeldItemName(void); static void PrintSkillsPageText(void); static void PrintRibbonCount(void); @@ -276,18 +276,18 @@ static void BufferRightColumnStats(void); static void PrintRightColumnStats(void); static void PrintExpPointsNextLevel(void); static void PrintBattleMoves(void); -static void Task_PrintBattleMoves(u8); -static void PrintMoveNameAndPP(u8); +static void Task_PrintBattleMoves(u8 taskId); +static void PrintMoveNameAndPP(u8 a); static void PrintContestMoves(void); -static void Task_PrintContestMoves(u8); -static void PrintContestMoveDescription(u8); -static void PrintMoveDetails(u16); +static void Task_PrintContestMoves(u8 taskId); +static void PrintContestMoveDescription(u8 a); +static void PrintMoveDetails(u16 a); static void PrintNewMoveDetailsOrCancelText(void); static void AddAndFillMoveNamesWindow(void); -static void SwapMovesNamesPP(u8, u8); +static void SwapMovesNamesPP(u8 moveIndex1, u8 moveIndex2); static void PrintHMMovesCantBeForgotten(void); static void ResetSpriteIds(void); -static void SetSpriteInvisibility(u8, bool8); +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible); static void HidePageSpecificSprites(void); static void SetTypeIcons(void); static void CreateMoveTypeIcons(void); @@ -295,20 +295,20 @@ static void SetMonTypeIcons(void); static void SetMoveTypeIcons(void); static void SetContestMoveTypeIcons(void); static void SetNewMoveTypeIcon(void); -static void SwapMovesTypeSprites(u8, u8); -static u8 LoadMonGfxAndSprite(struct Pokemon *, s16 *); -static u8 CreateMonSprite(struct Pokemon *); +static void SwapMovesTypeSprites(u8 moveIndex1, u8 moveIndex2); +static u8 LoadMonGfxAndSprite(struct Pokemon *a, s16 *b); +static u8 CreateMonSprite(struct Pokemon *unused); static void SpriteCB_Pokemon(struct Sprite *); static void StopPokemonAnimations(void); -static void CreateMonMarkingsSprite(struct Pokemon *); -static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *); -static void CreateCaughtBallSprite(struct Pokemon *); +static void CreateMonMarkingsSprite(struct Pokemon *mon); +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); +static void CreateCaughtBallSprite(struct Pokemon *mon); static void CreateSetStatusSprite(void); -static void CreateMoveSelectorSprites(u8); -static void SpriteCb_MoveSelector(struct Sprite *); -static void DestroyMoveSelectorSprites(u8); -static void SetMainMoveSelectorColor(u8); -static void KeepMoveSelectorVisible(u8); +static void CreateMoveSelectorSprites(u8 idArrayStart); +static void SpriteCb_MoveSelector(struct Sprite *sprite); +static void DestroyMoveSelectorSprites(u8 firstArrayId); +static void SetMainMoveSelectorColor(u8 whichColor); +static void KeepMoveSelectorVisible(u8 firstSpriteId); static void SummaryScreen_DestroyAnimDelayTask(void); // const rom data @@ -2314,69 +2314,69 @@ u8 GetMoveSlotToReplace(void) static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen { - u16 *tilemap = Alloc(8 * PSS_PAGE_COUNT); + u16 *alloced = Alloc(32); u8 i; - for (i = 0; i < PSS_PAGE_COUNT; i++) + for (i = 0; i < 4; i++) { u8 j = i * 2; if (i < sMonSummaryScreen->minPageIndex) { - tilemap[j + 0] = 0x40; - tilemap[j + 1] = 0x40; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x50; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x50; + alloced[j + 0] = 0x40; + alloced[j + 1] = 0x40; + alloced[j + 8] = 0x50; + alloced[j + 9] = 0x50; } else if (i > sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x4A; - tilemap[j + 1] = 0x4A; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5A; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5A; + alloced[j + 0] = 0x4A; + alloced[j + 1] = 0x4A; + alloced[j + 8] = 0x5A; + alloced[j + 9] = 0x5A; } else if (i < sMonSummaryScreen->currPageIndex) { - tilemap[j + 0] = 0x46; - tilemap[j + 1] = 0x47; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x56; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x57; + alloced[j + 0] = 0x46; + alloced[j + 1] = 0x47; + alloced[j + 8] = 0x56; + alloced[j + 9] = 0x57; } else if (i == sMonSummaryScreen->currPageIndex) { if (i != sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x41; - tilemap[j + 1] = 0x42; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x51; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x52; + alloced[j + 0] = 0x41; + alloced[j + 1] = 0x42; + alloced[j + 8] = 0x51; + alloced[j + 9] = 0x52; } else { - tilemap[j + 0] = 0x4B; - tilemap[j + 1] = 0x4C; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5B; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5C; + alloced[j + 0] = 0x4B; + alloced[j + 1] = 0x4C; + alloced[j + 8] = 0x5B; + alloced[j + 9] = 0x5C; } } else if (i != sMonSummaryScreen->maxPageIndex) { - tilemap[j + 0] = 0x43; - tilemap[j + 1] = 0x44; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x53; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x54; + alloced[j + 0] = 0x43; + alloced[j + 1] = 0x44; + alloced[j + 8] = 0x53; + alloced[j + 9] = 0x54; } else { - tilemap[j + 0] = 0x48; - tilemap[j + 1] = 0x49; - tilemap[j + 2 * PSS_PAGE_COUNT] = 0x58; - tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x59; + alloced[j + 0] = 0x48; + alloced[j + 1] = 0x49; + alloced[j + 8] = 0x58; + alloced[j + 9] = 0x59; } } - CopyToBgTilemapBufferRect_ChangePalette(3, tilemap, 11, 0, PSS_PAGE_COUNT * 2, 2, 16); + CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); ScheduleBgCopyTilemapToVram(3); - Free(tilemap); + Free(alloced); } static void ChangeTilemap(const struct TilemapCtrl *unkStruct, u16 *dest, u8 c, bool8 d) @@ -2439,7 +2439,7 @@ static void Task_ShowPowerAccWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) + if (sMonSummaryScreen->currPageIndex == 2) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else @@ -2492,7 +2492,7 @@ static void Task_ShowAppealJamWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == PSS_PAGE_CONTEST_MOVES && FuncIsActiveTask(PssScrollRight) == 0) + if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); DrawContestMoveHearts(data[2]); } diff --git a/src/pokenav.c b/src/pokenav.c index 03f48ee36..f9a6614a8 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -37,16 +37,16 @@ struct PokenavCallbacks static u32 GetCurrentMenuCB(void); static u32 IsActiveMenuLoopTaskActive_(void); -static bool32 SetActivePokenavMenu(u32); +static bool32 SetActivePokenavMenu(u32 menuId); static bool32 AnyMonHasRibbon(void); -static void InitPokenavResources(struct PokenavResources *); +static void InitPokenavResources(struct PokenavResources *a0); static void InitKeys_(void); static void FreePokenavResources(void); static void VBlankCB_Pokenav(void); static void CB2_Pokenav(void); -static void Task_RunLoopedTask_LinkMode(u8); -static void Task_RunLoopedTask(u8); -static void Task_Pokenav(u8); +static void Task_RunLoopedTask_LinkMode(u8 a0); +static void Task_RunLoopedTask(u8 taskId); +static void Task_Pokenav(u8 taskId); static void CB2_InitPokenavForTutorial(void); const struct PokenavCallbacks PokenavMenuCallbacks[15] = @@ -557,7 +557,8 @@ void *GetSubstructPtr(u32 index) void FreePokenavSubstruct(u32 index) { - TRY_FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); + if (gPokenavResources->substructPtrs[index] != NULL) + FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); } u32 GetPokenavMode(void) diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index e0645bac0..94ed4e8d8 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -332,7 +332,7 @@ u8 *CopyStringLeftAlignedToConditionData(u8 *dst, const u8 *src, s16 n) return dst; } -static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) +static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 arg3) { u16 boxId, monId, gender, species, level, lvlDigits; struct BoxPokemon *boxMon; @@ -412,7 +412,7 @@ static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) str_ = ConvertIntToDecimalStringN(str_, level, STR_CONV_MODE_LEFT_ALIGN, 3); lvlDigits = str_ - txtPtr; *(str_++) = CHAR_SPACE; - if (!skipPadding) + if (!arg3) { lvlDigits = 3 - lvlDigits; while (lvlDigits-- != 0) diff --git a/src/pokenav_list.c b/src/pokenav_list.c index 350a78504..bdba1d2c0 100644 --- a/src/pokenav_list.c +++ b/src/pokenav_list.c @@ -40,7 +40,7 @@ struct PokenavListWindowState { struct PokenavListSub { struct PokenavListMenuWindow listWindow; - u32 printStart; + u32 unk10; u32 printIndex; u32 itemSize; void * listPtr; @@ -59,7 +59,7 @@ struct PokenavListSub struct PokenavList { - struct PokenavListSub sub; + struct PokenavListSub list; u8 tilemapBuffer[BG_SCREEN_SIZE]; struct PokenavListWindowState windowState; s32 eraseIndex; @@ -100,12 +100,12 @@ static EWRAM_DATA u32 sMoveWindowDownIndex = 0; // Read, but pointlessly bool32 CreatePokenavList(const struct BgTemplate *bgTemplate, struct PokenavListTemplate *listTemplate, s32 tileOffset) { - struct PokenavList *list = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); - if (list == NULL) + struct PokenavList *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); + if (structPtr == NULL) return FALSE; - InitPokenavListWindowState(&list->windowState, listTemplate); - if (!CopyPokenavListMenuTemplate(&list->sub, bgTemplate, listTemplate, tileOffset)) + InitPokenavListWindowState(&structPtr->windowState, listTemplate); + if (!CopyPokenavListMenuTemplate(&structPtr->list, bgTemplate, listTemplate, tileOffset)) return FALSE; CreateLoopedTask(LoopedTask_CreatePokenavList, 6); @@ -119,31 +119,31 @@ bool32 IsCreatePokenavListTaskActive(void) void DestroyPokenavList(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - DestroyListArrows(&list->sub); - RemoveWindow(list->sub.listWindow.windowId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + DestroyListArrows(&structPtr->list); + RemoveWindow(structPtr->list.listWindow.windowId); FreePokenavSubstruct(POKENAV_SUBSTRUCT_LIST); } static u32 LoopedTask_CreatePokenavList(s32 state) { - struct PokenavList *list; + struct PokenavList *structPtr; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - InitPokenavListBg(list); + InitPokenavListBg(structPtr); return LT_INC_AND_PAUSE; case 1: - InitPokenavListWindow(&list->sub.listWindow); + InitPokenavListWindow(&structPtr->list.listWindow); return LT_INC_AND_PAUSE; case 2: - InitListItems(&list->windowState, &list->sub); + InitListItems(&structPtr->windowState, &structPtr->list); return LT_INC_AND_PAUSE; case 3: if (IsPrintListItemsTaskActive()) @@ -156,24 +156,24 @@ static u32 LoopedTask_CreatePokenavList(s32 state) return LT_INC_AND_CONTINUE; } case 4: - CreateListArrowSprites(&list->windowState, &list->sub); + CreateListArrowSprites(&structPtr->windowState, &structPtr->list); return LT_FINISH; default: return LT_FINISH; } } -static void InitPokenavListBg(struct PokenavList *list) +static void InitPokenavListBg(struct PokenavList *a0) { - u16 tileNum = (list->sub.listWindow.fillValue << 12) | list->sub.listWindow.tileOffset; - BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(1), list->sub.listWindow.tileOffset, 1); - BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(4), list->sub.listWindow.tileOffset + 1, 1); - SetBgTilemapBuffer(list->sub.listWindow.bg, list->tilemapBuffer); - FillBgTilemapBufferRect_Palette0(list->sub.listWindow.bg, tileNum, 0, 0, 32, 32); - ChangeBgY(list->sub.listWindow.bg, 0, BG_COORD_SET); - ChangeBgX(list->sub.listWindow.bg, 0, BG_COORD_SET); - ChangeBgY(list->sub.listWindow.bg, list->sub.listWindow.y << 11, BG_COORD_SUB); - CopyBgTilemapBufferToVram(list->sub.listWindow.bg); + u16 tileNum = (a0->list.listWindow.fillValue << 12) | a0->list.listWindow.tileOffset; + BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(1), a0->list.listWindow.tileOffset, 1); + BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(4), a0->list.listWindow.tileOffset + 1, 1); + SetBgTilemapBuffer(a0->list.listWindow.bg, a0->tilemapBuffer); + FillBgTilemapBufferRect_Palette0(a0->list.listWindow.bg, tileNum, 0, 0, 32, 32); + ChangeBgY(a0->list.listWindow.bg, 0, BG_COORD_SET); + ChangeBgX(a0->list.listWindow.bg, 0, BG_COORD_SET); + ChangeBgY(a0->list.listWindow.bg, a0->list.listWindow.y << 11, BG_COORD_SUB); + CopyBgTilemapBufferToVram(a0->list.listWindow.bg); } static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) @@ -183,16 +183,16 @@ static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } -static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *subPtr) +static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *a1) { s32 numToPrint = windowState->listLength - windowState->windowTopIndex; if (numToPrint > windowState->entriesOnscreen) numToPrint = windowState->entriesOnscreen; - PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, subPtr); + PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, a1); } -static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 printStart, struct PokenavListSub *list) +static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 a4, struct PokenavListSub *list) { if (numItems == 0) return; @@ -202,7 +202,7 @@ static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemS list->listWindow.numPrinted = 0; list->listWindow.numToPrint = numItems; list->printIndex = topIndex; - list->printStart = printStart; + list->unk10 = a4; CreateLoopedTask(LoopedTask_PrintListItems, 5); } @@ -214,31 +214,31 @@ static bool32 IsPrintListItemsTaskActive(void) static u32 LoopedTask_PrintListItems(s32 state) { u32 row; - struct PokenavListSub *listSub = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - row = (listSub->listWindow.unkA + listSub->listWindow.numPrinted + listSub->printStart) & 0xF; - listSub->bufferItemFunc(listSub->listPtr, listSub->itemTextBuffer); - if (listSub->iconDrawFunc != NULL) - listSub->iconDrawFunc(listSub->listWindow.windowId, listSub->printIndex, row); + row = (structPtr->listWindow.unkA + structPtr->listWindow.numPrinted + structPtr->unk10) & 0xF; + structPtr->bufferItemFunc(structPtr->listPtr, structPtr->itemTextBuffer); + if (structPtr->iconDrawFunc != NULL) + structPtr->iconDrawFunc(structPtr->listWindow.windowId, structPtr->printIndex, row); - AddTextPrinterParameterized(listSub->listWindow.windowId, listSub->listWindow.fontId, listSub->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); - if (++listSub->listWindow.numPrinted >= listSub->listWindow.numToPrint) + AddTextPrinterParameterized(structPtr->listWindow.windowId, structPtr->listWindow.fontId, structPtr->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); + if (++structPtr->listWindow.numPrinted >= structPtr->listWindow.numToPrint) { // Finished printing items. If icons were being drawn, draw the // window tilemap and graphics. Otherwise just do the graphics - if (listSub->iconDrawFunc != NULL) - CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_FULL); + if (structPtr->iconDrawFunc != NULL) + CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_FULL); else - CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_GFX); + CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_GFX); return LT_INC_AND_PAUSE; } else { - listSub->listPtr += listSub->itemSize; - listSub->printIndex++; + structPtr->listPtr += structPtr->itemSize; + structPtr->printIndex++; return LT_CONTINUE; } case 1: @@ -251,42 +251,42 @@ static u32 LoopedTask_PrintListItems(s32 state) static bool32 ShouldShowUpArrow(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return (list->windowState.windowTopIndex != 0); + return (structPtr->windowState.windowTopIndex != 0); } static bool32 ShouldShowDownArrow(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; - return (windowState->windowTopIndex + windowState->entriesOnscreen < windowState->listLength); + return (subPtr->windowTopIndex + subPtr->entriesOnscreen < subPtr->listLength); } static void MoveListWindow(s32 delta, bool32 printItems) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; if (delta < 0) { - if (windowState->windowTopIndex + delta < 0) - delta = -1 * windowState->windowTopIndex; + if (subPtr->windowTopIndex + delta < 0) + delta = -1 * subPtr->windowTopIndex; if (printItems) - PrintListItems(windowState->listPtr, windowState->windowTopIndex + delta, delta * -1, windowState->listItemSize, delta, &list->sub); + PrintListItems(subPtr->listPtr, subPtr->windowTopIndex + delta, delta * -1, subPtr->listItemSize, delta, &structPtr->list); } else if (printItems) { - s32 index = sMoveWindowDownIndex = windowState->windowTopIndex + windowState->entriesOnscreen; - if (index + delta >= windowState->listLength) - delta = windowState->listLength - index; + s32 index = sMoveWindowDownIndex = subPtr->windowTopIndex + subPtr->entriesOnscreen; + if (index + delta >= subPtr->listLength) + delta = subPtr->listLength - index; - PrintListItems(windowState->listPtr, index, delta, windowState->listItemSize, windowState->entriesOnscreen, &list->sub); + PrintListItems(subPtr->listPtr, index, delta, subPtr->listItemSize, subPtr->entriesOnscreen, &structPtr->list); } - CreateMoveListWindowTask(delta, &list->sub); - windowState->windowTopIndex += delta; + CreateMoveListWindowTask(delta, &structPtr->list); + subPtr->windowTopIndex += delta; } static void CreateMoveListWindowTask(s32 delta, struct PokenavListSub *list) @@ -305,8 +305,8 @@ static u32 LoopedTask_MoveListWindow(s32 state) { s32 oldY, newY; bool32 finished; - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListSub *subPtr = &list->sub; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *subPtr = &structPtr->list; switch (state) { @@ -342,23 +342,23 @@ static u32 LoopedTask_MoveListWindow(s32 state) bool32 PokenavList_IsMoveWindowTaskActive(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(list->sub.loopedTaskId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(structPtr->list.loopedTaskId); } static struct PokenavListWindowState *GetPokenavListWindowState(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return &list->windowState; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return &structPtr->windowState; } int PokenavList_MoveCursorUp(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - if (windowState->selectedIndexOffset != 0) + if (structPtr->selectedIndexOffset != 0) { - windowState->selectedIndexOffset--; + structPtr->selectedIndexOffset--; return 1; } if (ShouldShowUpArrow()) @@ -371,13 +371,13 @@ int PokenavList_MoveCursorUp(void) int PokenavList_MoveCursorDown(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - if (windowState->windowTopIndex + windowState->selectedIndexOffset >= windowState->listLength - 1) + if (structPtr->windowTopIndex + structPtr->selectedIndexOffset >= structPtr->listLength - 1) return 0; - if (windowState->selectedIndexOffset < windowState->entriesOnscreen - 1) + if (structPtr->selectedIndexOffset < structPtr->entriesOnscreen - 1) { - windowState->selectedIndexOffset++; + structPtr->selectedIndexOffset++; return 1; } if (ShouldShowDownArrow()) @@ -391,20 +391,20 @@ int PokenavList_MoveCursorDown(void) int PokenavList_PageUp(void) { s32 scroll; - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); if (ShouldShowUpArrow()) { - if (windowState->windowTopIndex >= windowState->entriesOnscreen) - scroll = windowState->entriesOnscreen; + if (structPtr->windowTopIndex >= structPtr->entriesOnscreen) + scroll = structPtr->entriesOnscreen; else - scroll = windowState->windowTopIndex; + scroll = structPtr->windowTopIndex; MoveListWindow(scroll * -1, TRUE); return 2; } - else if (windowState->selectedIndexOffset != 0) + else if (structPtr->selectedIndexOffset != 0) { - windowState->selectedIndexOffset = 0; + structPtr->selectedIndexOffset = 0; return 1; } return 0; @@ -412,112 +412,112 @@ int PokenavList_PageUp(void) int PokenavList_PageDown(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); if (ShouldShowDownArrow()) { - s32 windowBottomIndex = windowState->windowTopIndex + windowState->entriesOnscreen; - s32 scroll = windowState->entriesOffscreen - windowState->windowTopIndex; + s32 windowBottomIndex = structPtr->windowTopIndex + structPtr->entriesOnscreen; + s32 scroll = structPtr->entriesOffscreen - structPtr->windowTopIndex; - if (windowBottomIndex <= windowState->entriesOffscreen) - scroll = windowState->entriesOnscreen; + if (windowBottomIndex <= structPtr->entriesOffscreen) + scroll = structPtr->entriesOnscreen; MoveListWindow(scroll, TRUE); return 2; } else { s32 cursor, lastVisibleIndex; - if (windowState->listLength >= windowState->entriesOnscreen) + if (structPtr->listLength >= structPtr->entriesOnscreen) { - cursor = windowState->selectedIndexOffset; - lastVisibleIndex = windowState->entriesOnscreen; + cursor = structPtr->selectedIndexOffset; + lastVisibleIndex = structPtr->entriesOnscreen; } else { - cursor = windowState->selectedIndexOffset; - lastVisibleIndex = windowState->listLength; + cursor = structPtr->selectedIndexOffset; + lastVisibleIndex = structPtr->listLength; } lastVisibleIndex -= 1; if (cursor >= lastVisibleIndex) return 0; - windowState->selectedIndexOffset = lastVisibleIndex; + structPtr->selectedIndexOffset = lastVisibleIndex; return 1; } } u32 PokenavList_GetSelectedIndex(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - return windowState->windowTopIndex + windowState->selectedIndexOffset; + return structPtr->windowTopIndex + structPtr->selectedIndexOffset; } u32 PokenavList_GetTopIndex(void) { - struct PokenavListWindowState *windowState = GetPokenavListWindowState(); + struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); - return windowState->windowTopIndex; + return structPtr->windowTopIndex; } void PokenavList_EraseListForCheckPage(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); } void PrintCheckPageInfo(s16 delta) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->windowState.windowTopIndex += delta; - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->windowState.windowTopIndex += delta; + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); } void PokenavList_ReshowListFromCheckPage(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->eraseIndex = 0; - list->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->eraseIndex = 0; + structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); } bool32 PokenavList_IsTaskActive(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(list->loopedTaskId); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(structPtr->loopedTaskId); } void PokenavList_DrawCurrentItemIcon(void) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *windowState = &list->windowState; - list->sub.iconDrawFunc(list->sub.listWindow.windowId, windowState->windowTopIndex + windowState->selectedIndexOffset, (list->sub.listWindow.unkA + windowState->selectedIndexOffset) & 0xF); - CopyWindowToVram(list->sub.listWindow.windowId, COPYWIN_MAP); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *subPtr = &structPtr->windowState; + structPtr->list.iconDrawFunc(structPtr->list.listWindow.windowId, subPtr->windowTopIndex + subPtr->selectedIndexOffset, (structPtr->list.listWindow.unkA + subPtr->selectedIndexOffset) & 0xF); + CopyWindowToVram(structPtr->list.listWindow.windowId, COPYWIN_MAP); } static u32 LoopedTask_EraseListForCheckPage(s32 state) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - ToggleListArrows(&list->sub, 1); + ToggleListArrows(&structPtr->list, 1); // fall-through case 1: - if (list->eraseIndex != list->windowState.selectedIndexOffset) - EraseListEntry(&list->sub.listWindow, list->eraseIndex, 1); + if (structPtr->eraseIndex != structPtr->windowState.selectedIndexOffset) + EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, 1); - list->eraseIndex++; + structPtr->eraseIndex++; return LT_INC_AND_PAUSE; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - if (list->eraseIndex != list->windowState.entriesOnscreen) + if (structPtr->eraseIndex != structPtr->windowState.entriesOnscreen) return LT_SET_STATE(1); - if (list->windowState.selectedIndexOffset != 0) - EraseListEntry(&list->sub.listWindow, list->eraseIndex, list->windowState.selectedIndexOffset); + if (structPtr->windowState.selectedIndexOffset != 0) + EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, structPtr->windowState.selectedIndexOffset); return LT_INC_AND_PAUSE; } @@ -525,9 +525,9 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - if (list->windowState.selectedIndexOffset != 0) + if (structPtr->windowState.selectedIndexOffset != 0) { - MoveListWindow(list->windowState.selectedIndexOffset, FALSE); + MoveListWindow(structPtr->windowState.selectedIndexOffset, FALSE); return LT_INC_AND_PAUSE; } return LT_FINISH; @@ -537,7 +537,7 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) if (PokenavList_IsMoveWindowTaskActive()) return LT_PAUSE; - list->windowState.selectedIndexOffset = 0; + structPtr->windowState.selectedIndexOffset = 0; return LT_FINISH; } return LT_FINISH; @@ -545,35 +545,35 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) static u32 LoopedTask_PrintCheckPageInfo(s32 state) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; switch (state) { case 0: - PrintCheckPageTrainerName(&list->windowState, &list->sub); + PrintCheckPageTrainerName(&structPtr->windowState, &structPtr->list); break; case 1: - PrintMatchCallFieldNames(&list->sub, 0); + PrintMatchCallFieldNames(&structPtr->list, 0); break; case 2: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_STRATEGY); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_STRATEGY); break; case 3: - PrintMatchCallFieldNames(&list->sub, 1); + PrintMatchCallFieldNames(&structPtr->list, 1); break; case 4: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_POKEMON); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_POKEMON); break; case 5: - PrintMatchCallFieldNames(&list->sub, 2); + PrintMatchCallFieldNames(&structPtr->list, 2); break; case 6: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_1); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_1); break; case 7: - PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_2); + PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_2); break; default: return LT_FINISH; @@ -583,30 +583,30 @@ static u32 LoopedTask_PrintCheckPageInfo(s32 state) static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { - struct PokenavList *list; + struct PokenavList *structPtr; struct PokenavListWindowState *windowState; - struct PokenavListSub *subPtr; + struct PokenavListSub *subPtr0; s32 r5, *ptr; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - windowState = &list->windowState; - subPtr = &list->sub; + structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + windowState = &structPtr->windowState; + subPtr0 = &structPtr->list; switch (state) { case 0: // Rewrite the name of the trainer whose check page was just being viewed. // This is done to erase the red background it had. - PrintMatchCallListTrainerName(windowState, subPtr); + PrintMatchCallListTrainerName(windowState, subPtr0); return LT_INC_AND_PAUSE; case 1: - ptr = &list->eraseIndex; - if (++(*ptr) < list->windowState.entriesOnscreen) + ptr = &structPtr->eraseIndex; + if (++(*ptr) < structPtr->windowState.entriesOnscreen) { - EraseListEntry(&subPtr->listWindow, *ptr, 1); + EraseListEntry(&subPtr0->listWindow, *ptr, 1); return LT_PAUSE; } @@ -617,7 +617,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex; r5 = -r4; - EraseListEntry(&subPtr->listWindow, r5, r4); + EraseListEntry(&subPtr0->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -629,7 +629,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex + windowState->entriesOnscreen - windowState->listLength; r5 = -r4; - EraseListEntry(&subPtr->listWindow, r5, r4); + EraseListEntry(&subPtr0->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -637,55 +637,55 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) } return LT_SET_STATE(4); case 2: - MoveListWindow(list->eraseIndex, FALSE); + MoveListWindow(structPtr->eraseIndex, FALSE); return LT_INC_AND_PAUSE; case 3: if (!PokenavList_IsMoveWindowTaskActive()) { - list->eraseIndex = 0; + structPtr->eraseIndex = 0; return LT_INC_AND_CONTINUE; } return LT_PAUSE; case 4: - PrintListItems(windowState->listPtr, windowState->windowTopIndex + list->eraseIndex, 1, windowState->listItemSize, list->eraseIndex, &list->sub); + PrintListItems(windowState->listPtr, windowState->windowTopIndex + structPtr->eraseIndex, 1, windowState->listItemSize, structPtr->eraseIndex, &structPtr->list); return LT_INC_AND_PAUSE; case 5: if (IsPrintListItemsTaskActive()) return LT_PAUSE; - if (++list->eraseIndex >= windowState->listLength || list->eraseIndex >= windowState->entriesOnscreen) + if (++structPtr->eraseIndex >= windowState->listLength || structPtr->eraseIndex >= windowState->entriesOnscreen) return LT_INC_AND_CONTINUE; return LT_SET_STATE(4); case 6: - ToggleListArrows(subPtr, 0); + ToggleListArrows(subPtr0, 0); return LT_FINISH; } return LT_FINISH; } -static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 offset, s32 entries) +static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 a1, s32 a2) { u8 *tileData = (u8*)GetWindowAttribute(listWindow->windowId, WINDOW_TILE_DATA); u32 width = listWindow->width * 64; - offset = (listWindow->unkA + offset) & 0xF; - if (offset + entries <= 16) + a1 = (listWindow->unkA + a1) & 0xF; + if (a1 + a2 <= 16) { - CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, entries * width); + CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, a2 * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } else { - u32 v3 = 16 - offset; - u32 v4 = entries - v3; + u32 v3 = 16 - a1; + u32 v4 = a2 - v3; - CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, v3 * width); + CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, v3 * width); CpuFastFill8(PIXEL_FILL(1), tileData, v4 * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } - for (entries--; entries != -1; offset = (offset + 1) & 0xF, entries--) - ClearRematchPokeballIcon(listWindow->windowId, offset); + for (a2--; a2 != -1; a1 = (a1 + 1) & 0xF, a2--) + ClearRematchPokeballIcon(listWindow->windowId, a1); CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } @@ -744,7 +744,7 @@ static void PrintMatchCallFieldNames(struct PokenavListSub *list, u32 fieldId) CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_GFX, 0, top << 1, list->listWindow.width, 2); } -static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState, struct PokenavListSub *list, u32 checkPageEntry) +static void PrintMatchCallFlavorText(struct PokenavListWindowState *a0, struct PokenavListSub *list, u32 checkPageEntry) { // lines 1, 3, and 5 are the field names printed by PrintMatchCallFieldNames static const u8 lineOffsets[CHECK_PAGE_ENTRY_COUNT] = { @@ -755,7 +755,7 @@ static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState, }; u32 r6 = (list->listWindow.unkA + lineOffsets[checkPageEntry]) & 0xF; - const u8 *str = GetMatchCallFlavorText(windowState->windowTopIndex, checkPageEntry); + const u8 *str = GetMatchCallFlavorText(a0->windowTopIndex, checkPageEntry); if (str != NULL) { @@ -894,8 +894,8 @@ static void ToggleListArrows(struct PokenavListSub *list, bool32 invisible) static void SpriteCB_RightArrow(struct Sprite *sprite) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - sprite->y2 = list->windowState.selectedIndexOffset << 4; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + sprite->y2 = structPtr->windowState.selectedIndexOffset << 4; } #define sTimer data[0] @@ -940,9 +940,9 @@ static void SpriteCB_UpArrow(struct Sprite *sprite) void PokenavList_ToggleVerticalArrows(bool32 invisible) { - struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - list->sub.upArrow->sInvisible = invisible; - list->sub.downArrow->sInvisible = invisible; + struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + structPtr->list.upArrow->sInvisible = invisible; + structPtr->list.downArrow->sInvisible = invisible; } #undef sTimer diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index 7d668c67f..318ed520d 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -105,7 +105,7 @@ static const u8 sHelpBarTextColors[3] = TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; -static const struct CompressedSpriteSheet sSpinningPokenavSpriteSheet[] = +static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] = { { .data = sSpinningPokenav_Gfx, @@ -114,7 +114,7 @@ static const struct CompressedSpriteSheet sSpinningPokenavSpriteSheet[] = } }; -static const struct SpritePalette sSpinningNavgearPalettes[] = +static const struct SpritePalette gSpinningNavgearPalettes[] = { { .data = sSpinningPokenav_Pal, @@ -583,10 +583,10 @@ static void InitPokenavMainMenuResources(void) u8 spriteId; struct Pokenav_MainMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU); - for (i = 0; i < ARRAY_COUNT(sSpinningPokenavSpriteSheet); i++) - LoadCompressedSpriteSheet(&sSpinningPokenavSpriteSheet[i]); + for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++) + LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]); - Pokenav_AllocAndLoadPalettes(sSpinningNavgearPalettes); + Pokenav_AllocAndLoadPalettes(gSpinningNavgearPalettes); menu->palettes = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0)); spriteId = CreateSprite(&sSpinningPokenavSpriteTemplate, 220, 12, 0); menu->spinningPokenav = &gSprites[spriteId]; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 2e8cc40b5..29dd62621 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -324,7 +324,7 @@ static const match_call_text_data_t sWallyTextScripts[] = { { NULL, 0xFFFF, 0xFFFF } }; -static const struct MatchCallLocationOverride sWallyLocationData[] = { +const struct MatchCallLocationOverride sWallyLocationData[] = { { FLAG_HIDE_MAUVILLE_CITY_WALLY, MAPSEC_VERDANTURF_TOWN }, { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, MAPSEC_NONE }, { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, MAPSEC_VICTORY_ROAD }, diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c index 828bd525d..16ba48070 100755 --- a/src/pokenav_region_map.c +++ b/src/pokenav_region_map.c @@ -146,7 +146,7 @@ static const struct WindowTemplate sMapSecInfoWindowTemplate = #include "data/region_map/city_map_entries.h" -static const struct OamData sCityZoomTextSprite_OamData = +const struct OamData sCityZoomTextSprite_OamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, diff --git a/src/record_mixing.c b/src/record_mixing.c index 4365f2cb3..6efded838 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -285,7 +285,7 @@ static void ReceiveExchangePacket(u32 multiplayerId) static void PrintTextOnRecordMixing(const u8 *src) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, src, 0, 1, 0, NULL); CopyWindowToVram(0, COPYWIN_FULL); } diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 951572636..fd2b3a06b 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -67,8 +67,6 @@ struct RecordedBattleSave u32 checksum; }; -STATIC_ASSERT(sizeof(struct RecordedBattleSave) <= SECTOR_DATA_SIZE, RecordedBattleSaveFreeSpace); - EWRAM_DATA u32 gRecordedBattleRngSeed = 0; EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0; EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0}; diff --git a/src/region_map.c b/src/region_map.c index a4db1cb04..09e2d69bf 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -64,7 +64,7 @@ struct MultiNameFlyDest // Static RAM declarations -static EWRAM_DATA struct RegionMap *sRegionMap = NULL; +static EWRAM_DATA struct RegionMap *gRegionMap = NULL; static EWRAM_DATA struct { void (*callback)(void); @@ -516,49 +516,49 @@ void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed) { - sRegionMap = regionMap; - sRegionMap->initStep = 0; - sRegionMap->zoomed = zoomed; - sRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; + gRegionMap = regionMap; + gRegionMap->initStep = 0; + gRegionMap->zoomed = zoomed; + gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; if (template != NULL) { - sRegionMap->bgNum = template->bg; - sRegionMap->charBaseIdx = template->charBaseIndex; - sRegionMap->mapBaseIdx = template->mapBaseIndex; - sRegionMap->bgManaged = TRUE; + gRegionMap->bgNum = template->bg; + gRegionMap->charBaseIdx = template->charBaseIndex; + gRegionMap->mapBaseIdx = template->mapBaseIndex; + gRegionMap->bgManaged = TRUE; } else { - sRegionMap->bgNum = 2; - sRegionMap->charBaseIdx = 2; - sRegionMap->mapBaseIdx = 28; - sRegionMap->bgManaged = FALSE; + gRegionMap->bgNum = 2; + gRegionMap->charBaseIdx = 2; + gRegionMap->mapBaseIdx = 28; + gRegionMap->bgManaged = FALSE; } } void ShowRegionMapForPokedexAreaScreen(struct RegionMap *regionMap) { - sRegionMap = regionMap; + gRegionMap = regionMap; InitMapBasedOnPlayerLocation(); - sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; - sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; } bool8 LoadRegionMapGfx(void) { - switch (sRegionMap->initStep) + switch (gRegionMap->initStep) { case 0: - if (sRegionMap->bgManaged) - DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); + if (gRegionMap->bgManaged) + DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); else LZ77UnCompVram(sRegionMapBg_GfxLZ, (u16 *)BG_CHAR_ADDR(2)); break; case 1: - if (sRegionMap->bgManaged) + if (gRegionMap->bgManaged) { if (!FreeTempTileDataBuffersIfPossible()) - DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); + DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); } else { @@ -570,54 +570,54 @@ bool8 LoadRegionMapGfx(void) LoadPalette(sRegionMapBg_Pal, 0x70, 0x60); break; case 3: - LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, sRegionMap->cursorSmallImage); + LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage); break; case 4: - LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, sRegionMap->cursorLargeImage); + LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage); break; case 5: InitMapBasedOnPlayerLocation(); - sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; - sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; - sRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(sRegionMap->mapSecId); - sRegionMap->mapSecType = GetMapsecType(sRegionMap->mapSecId); - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; + gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; + gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId); + gRegionMap->mapSecType = GetMapsecType(gRegionMap->mapSecId); + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); break; case 6: - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); } else { - sRegionMap->scrollX = sRegionMap->cursorPosX * 8 - 0x34; - sRegionMap->scrollY = sRegionMap->cursorPosY * 8 - 0x44; - sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; - sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; - CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; case 7: GetPositionOfCursorWithinMapSec(); UpdateRegionMapVideoRegs(); - sRegionMap->cursorSprite = NULL; - sRegionMap->playerIconSprite = NULL; - sRegionMap->cursorMovementFrameCounter = 0; - sRegionMap->blinkPlayerIcon = FALSE; - if (sRegionMap->bgManaged) + gRegionMap->cursorSprite = NULL; + gRegionMap->playerIconSprite = NULL; + gRegionMap->cursorMovementFrameCounter = 0; + gRegionMap->blinkPlayerIcon = FALSE; + if (gRegionMap->bgManaged) { - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, sRegionMap->charBaseIdx); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, sRegionMap->mapBaseIdx); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); - SetBgAttribute(sRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, gRegionMap->charBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, gRegionMap->mapBaseIdx); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); + SetBgAttribute(gRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); } - sRegionMap->initStep++; + gRegionMap->initStep++; return FALSE; default: return FALSE; } - sRegionMap->initStep++; + gRegionMap->initStep++; return TRUE; } @@ -629,23 +629,23 @@ void BlendRegionMap(u16 color, u32 coeff) void FreeRegionMapIconResources(void) { - if (sRegionMap->cursorSprite != NULL) + if (gRegionMap->cursorSprite != NULL) { - DestroySprite(sRegionMap->cursorSprite); - FreeSpriteTilesByTag(sRegionMap->cursorTileTag); - FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); } - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - DestroySprite(sRegionMap->playerIconSprite); - FreeSpriteTilesByTag(sRegionMap->playerIconTileTag); - FreeSpritePaletteByTag(sRegionMap->playerIconPaletteTag); + DestroySprite(gRegionMap->playerIconSprite); + FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); } } u8 DoRegionMapInputCallback(void) { - return sRegionMap->inputCallback(); + return gRegionMap->inputCallback(); } static u8 ProcessRegionMapInput_Full(void) @@ -653,26 +653,26 @@ static u8 ProcessRegionMapInput_Full(void) u8 input; input = MAP_INPUT_NONE; - sRegionMap->cursorDeltaX = 0; - sRegionMap->cursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && sRegionMap->cursorPosY > MAPCURSOR_Y_MIN) + gRegionMap->cursorDeltaX = 0; + gRegionMap->cursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) { - sRegionMap->cursorDeltaY = -1; + gRegionMap->cursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && sRegionMap->cursorPosY < MAPCURSOR_Y_MAX) + if (JOY_HELD(DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) { - sRegionMap->cursorDeltaY = +1; + gRegionMap->cursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && sRegionMap->cursorPosX > MAPCURSOR_X_MIN) + if (JOY_HELD(DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) { - sRegionMap->cursorDeltaX = -1; + gRegionMap->cursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && sRegionMap->cursorPosX < MAPCURSOR_X_MAX) + if (JOY_HELD(DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) { - sRegionMap->cursorDeltaX = +1; + gRegionMap->cursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -685,8 +685,8 @@ static u8 ProcessRegionMapInput_Full(void) } if (input == MAP_INPUT_MOVE_START) { - sRegionMap->cursorMovementFrameCounter = 4; - sRegionMap->inputCallback = MoveRegionMapCursor_Full; + gRegionMap->cursorMovementFrameCounter = 4; + gRegionMap->inputCallback = MoveRegionMapCursor_Full; } return input; } @@ -695,35 +695,35 @@ static u8 MoveRegionMapCursor_Full(void) { u16 mapSecId; - if (sRegionMap->cursorMovementFrameCounter != 0) + if (gRegionMap->cursorMovementFrameCounter != 0) return MAP_INPUT_MOVE_CONT; - if (sRegionMap->cursorDeltaX > 0) + if (gRegionMap->cursorDeltaX > 0) { - sRegionMap->cursorPosX++; + gRegionMap->cursorPosX++; } - if (sRegionMap->cursorDeltaX < 0) + if (gRegionMap->cursorDeltaX < 0) { - sRegionMap->cursorPosX--; + gRegionMap->cursorPosX--; } - if (sRegionMap->cursorDeltaY > 0) + if (gRegionMap->cursorDeltaY > 0) { - sRegionMap->cursorPosY++; + gRegionMap->cursorPosY++; } - if (sRegionMap->cursorDeltaY < 0) + if (gRegionMap->cursorDeltaY < 0) { - sRegionMap->cursorPosY--; + gRegionMap->cursorPosY--; } - mapSecId = GetMapSecIdAt(sRegionMap->cursorPosX, sRegionMap->cursorPosY); - sRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != sRegionMap->mapSecId) + mapSecId = GetMapSecIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - sRegionMap->mapSecId = mapSecId; - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); - sRegionMap->inputCallback = ProcessRegionMapInput_Full; + gRegionMap->inputCallback = ProcessRegionMapInput_Full; return MAP_INPUT_MOVE_END; } @@ -732,26 +732,26 @@ static u8 ProcessRegionMapInput_Zoomed(void) u8 input; input = MAP_INPUT_NONE; - sRegionMap->zoomedCursorDeltaX = 0; - sRegionMap->zoomedCursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && sRegionMap->scrollY > -0x34) + gRegionMap->zoomedCursorDeltaX = 0; + gRegionMap->zoomedCursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && gRegionMap->scrollY > -0x34) { - sRegionMap->zoomedCursorDeltaY = -1; + gRegionMap->zoomedCursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && sRegionMap->scrollY < 0x3c) + if (JOY_HELD(DPAD_DOWN) && gRegionMap->scrollY < 0x3c) { - sRegionMap->zoomedCursorDeltaY = +1; + gRegionMap->zoomedCursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && sRegionMap->scrollX > -0x2c) + if (JOY_HELD(DPAD_LEFT) && gRegionMap->scrollX > -0x2c) { - sRegionMap->zoomedCursorDeltaX = -1; + gRegionMap->zoomedCursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && sRegionMap->scrollX < 0xac) + if (JOY_HELD(DPAD_RIGHT) && gRegionMap->scrollX < 0xac) { - sRegionMap->zoomedCursorDeltaX = +1; + gRegionMap->zoomedCursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -764,8 +764,8 @@ static u8 ProcessRegionMapInput_Zoomed(void) } if (input == MAP_INPUT_MOVE_START) { - sRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; - sRegionMap->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; + gRegionMap->zoomedCursorMovementFrameCounter = 0; } return input; } @@ -776,29 +776,29 @@ static u8 MoveRegionMapCursor_Zoomed(void) u16 y; u16 mapSecId; - sRegionMap->scrollY += sRegionMap->zoomedCursorDeltaY; - sRegionMap->scrollX += sRegionMap->zoomedCursorDeltaX; - RegionMap_SetBG2XAndBG2Y(sRegionMap->scrollX, sRegionMap->scrollY); - sRegionMap->zoomedCursorMovementFrameCounter++; - if (sRegionMap->zoomedCursorMovementFrameCounter == 8) + gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; + gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; + RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY); + gRegionMap->zoomedCursorMovementFrameCounter++; + if (gRegionMap->zoomedCursorMovementFrameCounter == 8) { - x = (sRegionMap->scrollX + 0x2c) / 8 + 1; - y = (sRegionMap->scrollY + 0x34) / 8 + 2; - if (x != sRegionMap->zoomedCursorPosX || y != sRegionMap->zoomedCursorPosY) + x = (gRegionMap->scrollX + 0x2c) / 8 + 1; + y = (gRegionMap->scrollY + 0x34) / 8 + 2; + if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY) { - sRegionMap->zoomedCursorPosX = x; - sRegionMap->zoomedCursorPosY = y; + gRegionMap->zoomedCursorPosX = x; + gRegionMap->zoomedCursorPosY = y; mapSecId = GetMapSecIdAt(x, y); - sRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != sRegionMap->mapSecId) + gRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != gRegionMap->mapSecId) { - sRegionMap->mapSecId = mapSecId; - GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); + gRegionMap->mapSecId = mapSecId; + GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); } - sRegionMap->zoomedCursorMovementFrameCounter = 0; - sRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; + gRegionMap->zoomedCursorMovementFrameCounter = 0; + gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; return MAP_INPUT_MOVE_END; } return MAP_INPUT_MOVE_CONT; @@ -806,35 +806,35 @@ static u8 MoveRegionMapCursor_Zoomed(void) void SetRegionMapDataForZoom(void) { - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - sRegionMap->scrollY = 0; - sRegionMap->scrollX = 0; - sRegionMap->unk_040 = 0; - sRegionMap->unk_03c = 0; - sRegionMap->unk_060 = sRegionMap->cursorPosX * 8 - 0x34; - sRegionMap->unk_062 = sRegionMap->cursorPosY * 8 - 0x44; - sRegionMap->unk_044 = (sRegionMap->unk_060 << 8) / 16; - sRegionMap->unk_048 = (sRegionMap->unk_062 << 8) / 16; - sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; - sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; - sRegionMap->unk_04c = 0x10000; - sRegionMap->unk_050 = -0x800; + gRegionMap->scrollY = 0; + gRegionMap->scrollX = 0; + gRegionMap->unk_040 = 0; + gRegionMap->unk_03c = 0; + gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34; + gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44; + gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16; + gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16; + gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; + gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; + gRegionMap->unk_04c = 0x10000; + gRegionMap->unk_050 = -0x800; } else { - sRegionMap->unk_03c = sRegionMap->scrollX * 0x100; - sRegionMap->unk_040 = sRegionMap->scrollY * 0x100; - sRegionMap->unk_060 = 0; - sRegionMap->unk_062 = 0; - sRegionMap->unk_044 = -(sRegionMap->unk_03c / 16); - sRegionMap->unk_048 = -(sRegionMap->unk_040 / 16); - sRegionMap->cursorPosX = sRegionMap->zoomedCursorPosX; - sRegionMap->cursorPosY = sRegionMap->zoomedCursorPosY; - sRegionMap->unk_04c = 0x8000; - sRegionMap->unk_050 = 0x800; + gRegionMap->unk_03c = gRegionMap->scrollX * 0x100; + gRegionMap->unk_040 = gRegionMap->scrollY * 0x100; + gRegionMap->unk_060 = 0; + gRegionMap->unk_062 = 0; + gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); + gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16); + gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX; + gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY; + gRegionMap->unk_04c = 0x8000; + gRegionMap->unk_050 = 0x800; } - sRegionMap->unk_06e = 0; + gRegionMap->unk_06e = 0; FreeRegionMapCursorSprite(); HideRegionMapPlayerIcon(); } @@ -843,60 +843,60 @@ bool8 UpdateRegionMapZoom(void) { bool8 retVal; - if (sRegionMap->unk_06e >= 16) + if (gRegionMap->unk_06e >= 16) { return FALSE; } - sRegionMap->unk_06e++; - if (sRegionMap->unk_06e == 16) + gRegionMap->unk_06e++; + if (gRegionMap->unk_06e == 16) { - sRegionMap->unk_044 = 0; - sRegionMap->unk_048 = 0; - sRegionMap->scrollX = sRegionMap->unk_060; - sRegionMap->scrollY = sRegionMap->unk_062; - sRegionMap->unk_04c = (sRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); - sRegionMap->zoomed = !sRegionMap->zoomed; - sRegionMap->inputCallback = (sRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; - CreateRegionMapCursor(sRegionMap->cursorTileTag, sRegionMap->cursorPaletteTag); + gRegionMap->unk_044 = 0; + gRegionMap->unk_048 = 0; + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + gRegionMap->zoomed = !gRegionMap->zoomed; + gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; + CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); UnhideRegionMapPlayerIcon(); retVal = FALSE; } else { - sRegionMap->unk_03c += sRegionMap->unk_044; - sRegionMap->unk_040 += sRegionMap->unk_048; - sRegionMap->scrollX = sRegionMap->unk_03c >> 8; - sRegionMap->scrollY = sRegionMap->unk_040 >> 8; - sRegionMap->unk_04c += sRegionMap->unk_050; - if ((sRegionMap->unk_044 < 0 && sRegionMap->scrollX < sRegionMap->unk_060) || (sRegionMap->unk_044 > 0 && sRegionMap->scrollX > sRegionMap->unk_060)) + gRegionMap->unk_03c += gRegionMap->unk_044; + gRegionMap->unk_040 += gRegionMap->unk_048; + gRegionMap->scrollX = gRegionMap->unk_03c >> 8; + gRegionMap->scrollY = gRegionMap->unk_040 >> 8; + gRegionMap->unk_04c += gRegionMap->unk_050; + if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) { - sRegionMap->scrollX = sRegionMap->unk_060; - sRegionMap->unk_044 = 0; + gRegionMap->scrollX = gRegionMap->unk_060; + gRegionMap->unk_044 = 0; } - if ((sRegionMap->unk_048 < 0 && sRegionMap->scrollY < sRegionMap->unk_062) || (sRegionMap->unk_048 > 0 && sRegionMap->scrollY > sRegionMap->unk_062)) + if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) { - sRegionMap->scrollY = sRegionMap->unk_062; - sRegionMap->unk_048 = 0; + gRegionMap->scrollY = gRegionMap->unk_062; + gRegionMap->unk_048 = 0; } - if (sRegionMap->zoomed == FALSE) + if (gRegionMap->zoomed == FALSE) { - if (sRegionMap->unk_04c < (128 << 8)) + if (gRegionMap->unk_04c < (128 << 8)) { - sRegionMap->unk_04c = (128 << 8); - sRegionMap->unk_050 = 0; + gRegionMap->unk_04c = (128 << 8); + gRegionMap->unk_050 = 0; } } else { - if (sRegionMap->unk_04c > (256 << 8)) + if (gRegionMap->unk_04c > (256 << 8)) { - sRegionMap->unk_04c = (256 << 8); - sRegionMap->unk_050 = 0; + gRegionMap->unk_04c = (256 << 8); + gRegionMap->unk_050 = 0; } } retVal = TRUE; } - CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, sRegionMap->unk_04c >> 8, sRegionMap->unk_04c >> 8, 0); + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); return retVal; } @@ -907,42 +907,42 @@ static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, s32 var3; s32 var4; - sRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; - sRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; - sRegionMap->bg2pb = f * gSineTable[rotation] >> 8; - sRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; + gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; + gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; + gRegionMap->bg2pb = f * gSineTable[rotation] >> 8; + gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; var1 = (scrollX << 8) + (c << 8); - var2 = d * sRegionMap->bg2pb + sRegionMap->bg2pa * c; - sRegionMap->bg2x = var1 - var2; + var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c; + gRegionMap->bg2x = var1 - var2; var3 = (scrollY << 8) + (d << 8); - var4 = sRegionMap->bg2pd * d + sRegionMap->bg2pc * c; - sRegionMap->bg2y = var3 - var4; + var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c; + gRegionMap->bg2y = var3 - var4; - sRegionMap->needUpdateVideoRegs = TRUE; + gRegionMap->needUpdateVideoRegs = TRUE; } static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y) { - sRegionMap->bg2x = (x << 8) + 0x1c00; - sRegionMap->bg2y = (y << 8) + 0x2400; - sRegionMap->needUpdateVideoRegs = TRUE; + gRegionMap->bg2x = (x << 8) + 0x1c00; + gRegionMap->bg2y = (y << 8) + 0x2400; + gRegionMap->needUpdateVideoRegs = TRUE; } void UpdateRegionMapVideoRegs(void) { - if (sRegionMap->needUpdateVideoRegs) + if (gRegionMap->needUpdateVideoRegs) { - SetGpuReg(REG_OFFSET_BG2PA, sRegionMap->bg2pa); - SetGpuReg(REG_OFFSET_BG2PB, sRegionMap->bg2pb); - SetGpuReg(REG_OFFSET_BG2PC, sRegionMap->bg2pc); - SetGpuReg(REG_OFFSET_BG2PD, sRegionMap->bg2pd); - SetGpuReg(REG_OFFSET_BG2X_L, sRegionMap->bg2x); - SetGpuReg(REG_OFFSET_BG2X_H, sRegionMap->bg2x >> 16); - SetGpuReg(REG_OFFSET_BG2Y_L, sRegionMap->bg2y); - SetGpuReg(REG_OFFSET_BG2Y_H, sRegionMap->bg2y >> 16); - sRegionMap->needUpdateVideoRegs = FALSE; + SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa); + SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb); + SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc); + SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd); + SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x); + SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16); + SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y); + SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16); + gRegionMap->needUpdateVideoRegs = FALSE; } } @@ -950,10 +950,10 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y) { CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0); UpdateRegionMapVideoRegs(); - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - sRegionMap->playerIconSprite->x2 = -x; - sRegionMap->playerIconSprite->y2 = -y; + gRegionMap->playerIconSprite->x2 = -x; + gRegionMap->playerIconSprite->y2 = -y; } } @@ -996,22 +996,22 @@ static void InitMapBasedOnPlayerLocation(void) case MAP_TYPE_ROUTE: case MAP_TYPE_UNDERWATER: case MAP_TYPE_OCEAN_ROUTE: - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - sRegionMap->playerIsInCave = FALSE; + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = FALSE; mapWidth = gMapHeader.mapLayout->width; mapHeight = gMapHeader.mapLayout->height; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; - if (sRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || sRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) - sRegionMap->playerIsInCave = TRUE; + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) + gRegionMap->playerIsInCave = TRUE; break; case MAP_TYPE_UNDERGROUND: case MAP_TYPE_UNKNOWN: if (gMapHeader.allowEscaping) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->escapeWarp.x; @@ -1019,8 +1019,8 @@ static void InitMapBasedOnPlayerLocation(void) } else { - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = 1; mapHeight = 1; x = 1; @@ -1029,16 +1029,16 @@ static void InitMapBasedOnPlayerLocation(void) break; case MAP_TYPE_SECRET_BASE: mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - sRegionMap->playerIsInCave = TRUE; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->dynamicWarp.x; y = gSaveBlock1Ptr->dynamicWarp.y; break; case MAP_TYPE_INDOOR: - sRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (sRegionMap->mapSecId != MAPSEC_DYNAMIC) + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSecId != MAPSEC_DYNAMIC) { warp = &gSaveBlock1Ptr->escapeWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); @@ -1047,13 +1047,13 @@ static void InitMapBasedOnPlayerLocation(void) { warp = &gSaveBlock1Ptr->dynamicWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; } - if (IsPlayerInAquaHideout(sRegionMap->mapSecId)) - sRegionMap->playerIsInCave = TRUE; + if (IsPlayerInAquaHideout(gRegionMap->mapSecId)) + gRegionMap->playerIsInCave = TRUE; else - sRegionMap->playerIsInCave = FALSE; + gRegionMap->playerIsInCave = FALSE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; @@ -1064,29 +1064,29 @@ static void InitMapBasedOnPlayerLocation(void) xOnMap = x; - dimensionScale = mapWidth / gRegionMapEntries[sRegionMap->mapSecId].width; + dimensionScale = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; if (dimensionScale == 0) { dimensionScale = 1; } x /= dimensionScale; - if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) { - x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; } - dimensionScale = mapHeight / gRegionMapEntries[sRegionMap->mapSecId].height; + dimensionScale = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; if (dimensionScale == 0) { dimensionScale = 1; } y /= dimensionScale; - if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) { - y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; } - switch (sRegionMap->mapSecId) + switch (gRegionMap->mapSecId) { case MAPSEC_ROUTE_114: if (y != 0) @@ -1116,11 +1116,11 @@ static void InitMapBasedOnPlayerLocation(void) x++; break; case MAPSEC_UNDERWATER_MARINE_CAVE: - GetMarineCaveCoords(&sRegionMap->cursorPosX, &sRegionMap->cursorPosY); + GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); return; } - sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) @@ -1139,40 +1139,40 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap)) { case SS_TIDAL_LOCATION_SLATEPORT: - sRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; break; case SS_TIDAL_LOCATION_LILYCOVE: - sRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; break; case SS_TIDAL_LOCATION_ROUTE124: - sRegionMap->mapSecId = MAPSEC_ROUTE_124; + gRegionMap->mapSecId = MAPSEC_ROUTE_124; break; case SS_TIDAL_LOCATION_ROUTE131: - sRegionMap->mapSecId = MAPSEC_ROUTE_131; + gRegionMap->mapSecId = MAPSEC_ROUTE_131; break; default: case SS_TIDAL_LOCATION_CURRENTS: mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); - sRegionMap->mapSecId = mapHeader->regionMapSectionId; - dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[sRegionMap->mapSecId].width; + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width; if (dimensionScale == 0) dimensionScale = 1; x = xOnMap / dimensionScale; - if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) - x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; + if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) + x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; - dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[sRegionMap->mapSecId].height; + dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height; if (dimensionScale == 0) dimensionScale = 1; y = yOnMap / dimensionScale; - if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) - y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; + if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) + y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; break; } - sRegionMap->playerIsInCave = FALSE; - sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->playerIsInCave = FALSE; + gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static u8 GetMapsecType(u16 mapSecId) @@ -1300,20 +1300,20 @@ static void GetPositionOfCursorWithinMapSec(void) u16 y; u16 posWithinMapSec; - if (sRegionMap->mapSecId == MAPSEC_NONE) + if (gRegionMap->mapSecId == MAPSEC_NONE) { - sRegionMap->posWithinMapSec = 0; + gRegionMap->posWithinMapSec = 0; return; } - if (!sRegionMap->zoomed) + if (!gRegionMap->zoomed) { - x = sRegionMap->cursorPosX; - y = sRegionMap->cursorPosY; + x = gRegionMap->cursorPosX; + y = gRegionMap->cursorPosY; } else { - x = sRegionMap->zoomedCursorPosX; - y = sRegionMap->zoomedCursorPosY; + x = gRegionMap->zoomedCursorPosX; + y = gRegionMap->zoomedCursorPosY; } posWithinMapSec = 0; while (1) @@ -1333,13 +1333,13 @@ static void GetPositionOfCursorWithinMapSec(void) else { x--; - if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) { posWithinMapSec++; } } } - sRegionMap->posWithinMapSec = posWithinMapSec; + gRegionMap->posWithinMapSec = posWithinMapSec; } static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) @@ -1352,7 +1352,7 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) } for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) { - if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) { return TRUE; } @@ -1362,11 +1362,11 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) static void SpriteCB_CursorMapFull(struct Sprite *sprite) { - if (sRegionMap->cursorMovementFrameCounter != 0) + if (gRegionMap->cursorMovementFrameCounter != 0) { - sprite->x += 2 * sRegionMap->cursorDeltaX; - sprite->y += 2 * sRegionMap->cursorDeltaY; - sRegionMap->cursorMovementFrameCounter--; + sprite->x += 2 * gRegionMap->cursorDeltaX; + sprite->y += 2 * gRegionMap->cursorDeltaY; + gRegionMap->cursorMovementFrameCounter--; } } @@ -1386,20 +1386,20 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) template = sRegionMapCursorSpriteTemplate; sheet.tag = tileTag; template.tileTag = tileTag; - sRegionMap->cursorTileTag = tileTag; + gRegionMap->cursorTileTag = tileTag; palette.tag = paletteTag; template.paletteTag = paletteTag; - sRegionMap->cursorPaletteTag = paletteTag; - if (!sRegionMap->zoomed) + gRegionMap->cursorPaletteTag = paletteTag; + if (!gRegionMap->zoomed) { - sheet.data = sRegionMap->cursorSmallImage; - sheet.size = sizeof(sRegionMap->cursorSmallImage); + sheet.data = gRegionMap->cursorSmallImage; + sheet.size = sizeof(gRegionMap->cursorSmallImage); template.callback = SpriteCB_CursorMapFull; } else { - sheet.data = sRegionMap->cursorLargeImage; - sheet.size = sizeof(sRegionMap->cursorLargeImage); + sheet.data = gRegionMap->cursorLargeImage; + sheet.size = sizeof(gRegionMap->cursorLargeImage); template.callback = SpriteCB_CursorMapZoomed; } LoadSpriteSheet(&sheet); @@ -1407,46 +1407,46 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) spriteId = CreateSprite(&template, 0x38, 0x48, 0); if (spriteId != MAX_SPRITES) { - sRegionMap->cursorSprite = &gSprites[spriteId]; - if (sRegionMap->zoomed == TRUE) + gRegionMap->cursorSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == TRUE) { - sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); - sRegionMap->cursorSprite->x -= 8; - sRegionMap->cursorSprite->y -= 8; - StartSpriteAnim(sRegionMap->cursorSprite, 1); + gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); + gRegionMap->cursorSprite->x -= 8; + gRegionMap->cursorSprite->y -= 8; + StartSpriteAnim(gRegionMap->cursorSprite, 1); } else { - sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); - sRegionMap->cursorSprite->x = 8 * sRegionMap->cursorPosX + 4; - sRegionMap->cursorSprite->y = 8 * sRegionMap->cursorPosY + 4; + gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); + gRegionMap->cursorSprite->x = 8 * gRegionMap->cursorPosX + 4; + gRegionMap->cursorSprite->y = 8 * gRegionMap->cursorPosY + 4; } - sRegionMap->cursorSprite->data[1] = 2; - sRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; - sRegionMap->cursorSprite->data[3] = TRUE; + gRegionMap->cursorSprite->data[1] = 2; + gRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; + gRegionMap->cursorSprite->data[3] = TRUE; } } static void FreeRegionMapCursorSprite(void) { - if (sRegionMap->cursorSprite != NULL) + if (gRegionMap->cursorSprite != NULL) { - DestroySprite(sRegionMap->cursorSprite); - FreeSpriteTilesByTag(sRegionMap->cursorTileTag); - FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); } } // Unused static void SetUnkCursorSpriteData(void) { - sRegionMap->cursorSprite->data[3] = TRUE; + gRegionMap->cursorSprite->data[3] = TRUE; } // Unused static void ClearUnkCursorSpriteData(void) { - sRegionMap->cursorSprite->data[3] = FALSE; + gRegionMap->cursorSprite->data[3] = FALSE; } void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) @@ -1458,7 +1458,7 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) if (IsEventIslandMapSecId(gMapHeader.regionMapSectionId)) { - sRegionMap->playerIconSprite = NULL; + gRegionMap->playerIconSprite = NULL; return; } if (gSaveBlock2Ptr->playerGender == FEMALE) @@ -1469,49 +1469,49 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 0, 0, 1); - sRegionMap->playerIconSprite = &gSprites[spriteId]; - if (!sRegionMap->zoomed) + gRegionMap->playerIconSprite = &gSprites[spriteId]; + if (!gRegionMap->zoomed) { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; } else { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; } } static void HideRegionMapPlayerIcon(void) { - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - sRegionMap->playerIconSprite->invisible = TRUE; - sRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + gRegionMap->playerIconSprite->invisible = TRUE; + gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; } } static void UnhideRegionMapPlayerIcon(void) { - if (sRegionMap->playerIconSprite != NULL) + if (gRegionMap->playerIconSprite != NULL) { - if (sRegionMap->zoomed == TRUE) + if (gRegionMap->zoomed == TRUE) { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; - sRegionMap->playerIconSprite->invisible = FALSE; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + gRegionMap->playerIconSprite->invisible = FALSE; } else { - sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; - sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; - sRegionMap->playerIconSprite->x2 = 0; - sRegionMap->playerIconSprite->y2 = 0; - sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; - sRegionMap->playerIconSprite->invisible = FALSE; + gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; + gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; + gRegionMap->playerIconSprite->x2 = 0; + gRegionMap->playerIconSprite->y2 = 0; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + gRegionMap->playerIconSprite->invisible = FALSE; } } } @@ -1523,8 +1523,8 @@ static void UnhideRegionMapPlayerIcon(void) static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite) { - sprite->x2 = -2 * sRegionMap->scrollX; - sprite->y2 = -2 * sRegionMap->scrollY; + sprite->x2 = -2 * gRegionMap->scrollX; + sprite->y2 = -2 * gRegionMap->scrollY; sprite->sY = sprite->y + sprite->y2 + sprite->centerToCornerVecY; sprite->sX = sprite->x + sprite->x2 + sprite->centerToCornerVecX; if (sprite->sY < -8 || sprite->sY > DISPLAY_HEIGHT + 8 || sprite->sX < -8 || sprite->sX > DISPLAY_WIDTH + 8) @@ -1545,7 +1545,7 @@ static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite) static void SpriteCB_PlayerIcon(struct Sprite *sprite) { - if (sRegionMap->blinkPlayerIcon) + if (gRegionMap->blinkPlayerIcon) { if (++sprite->sTimer > 16) { @@ -1561,8 +1561,8 @@ static void SpriteCB_PlayerIcon(struct Sprite *sprite) void TrySetPlayerIconBlink(void) { - if (sRegionMap->playerIsInCave) - sRegionMap->blinkPlayerIcon = TRUE; + if (gRegionMap->playerIsInCave) + gRegionMap->blinkPlayerIcon = TRUE; } #undef sY @@ -1634,7 +1634,7 @@ static void GetMapSecDimensions(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *h bool8 IsRegionMapZoomed(void) { - return sRegionMap->zoomed; + return gRegionMap->zoomed; } bool32 IsEventIslandMapSecId(u8 mapSecId) @@ -2024,7 +2024,11 @@ static void CB_ExitFlyMap(void) { SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap); } - TRY_FREE_AND_SET_NULL(sFlyMap); + if (sFlyMap != NULL) + { + free(sFlyMap); + sFlyMap = NULL; + } FreeAllWindowBuffers(); } break; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index b854c899e..782a05c75 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -30,10 +30,10 @@ struct GFRomHeader u32 pokedexFlag; u32 mysteryEventFlag; u32 pokedexCount; - u8 playerNameLength; + u8 unk1; u8 unk2; - u8 pokemonNameLength1; - u8 pokemonNameLength2; + u8 unk3; + u8 unk4; u8 unk5; u8 unk6; u8 unk7; @@ -79,8 +79,8 @@ struct GFRomHeader u32 pcItemsOffset; u32 giftRibbonsOffset; u32 enigmaBerryOffset; - u32 enigmaBerrySize; - const u8 * moveDescriptions; + u32 mapViewOffset; + u32 unk19; u32 unk20; }; @@ -110,24 +110,23 @@ static const struct GFRomHeader sGFRomHeader = { .pokedexFlag = FLAG_RECEIVED_POKEDEX_FROM_BIRCH, .mysteryEventFlag = FLAG_SYS_MYSTERY_EVENT_ENABLE, .pokedexCount = NATIONAL_DEX_COUNT, - .playerNameLength = PLAYER_NAME_LENGTH, - .unk2 = 10, - .pokemonNameLength1 = POKEMON_NAME_LENGTH, - .pokemonNameLength2 = POKEMON_NAME_LENGTH, - // Two of the below 12s are likely move/ability name length, given their presence in this header - .unk5 = 12, - .unk6 = 12, - .unk7 = 6, - .unk8 = 12, - .unk9 = 6, - .unk10 = 16, - .unk11 = 18, - .unk12 = 12, - .unk13 = 15, - .unk14 = 11, - .unk15 = 1, - .unk16 = 8, - .unk17 = 12, + .unk1 = 0x07, + .unk2 = 0x0a, + .unk3 = 0x0a, + .unk4 = 0x0a, + .unk5 = 0x0c, + .unk6 = 0x0c, + .unk7 = 0x06, + .unk8 = 0x0c, + .unk9 = 0x06, + .unk10 = 0x10, + .unk11 = 0x12, + .unk12 = 0x0c, + .unk13 = 0x0f, + .unk14 = 0x0b, + .unk15 = 0x01, + .unk16 = 0x08, + .unk17 = 0x0c, .saveBlock2Size = sizeof(struct SaveBlock2), .saveBlock1Size = sizeof(struct SaveBlock1), .partyCountOffset = offsetof(struct SaveBlock1, playerPartyCount), @@ -160,7 +159,7 @@ static const struct GFRomHeader sGFRomHeader = { .pcItemsOffset = offsetof(struct SaveBlock1, pcItems), .giftRibbonsOffset = offsetof(struct SaveBlock1, giftRibbons), .enigmaBerryOffset = offsetof(struct SaveBlock1, enigmaBerry), - .enigmaBerrySize = sizeof(struct EnigmaBerry), - .moveDescriptions = NULL, + .mapViewOffset = offsetof(struct SaveBlock1, mapView), + .unk19 = 0x00000000, .unk20 = 0x00000000, // 0xFFFFFFFF in FRLG }; diff --git a/src/rotating_gate.c b/src/rotating_gate.c index e2fd575a1..f839d22c3 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -612,10 +612,12 @@ static const u8 sRotatingGate_ArmLayout[][4 * 2] = }, }; -static EWRAM_DATA u8 sRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; -static EWRAM_DATA const struct RotatingGatePuzzle *sRotatingGate_PuzzleConfig = NULL; -static EWRAM_DATA u8 sRotatingGate_PuzzleCount = 0; +// ewram +static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; +static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL; +static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; +// text static s32 GetCurrentMapRotatingGatePuzzleType(void) { if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FORTREE_CITY_GYM) && @@ -638,9 +640,9 @@ static void RotatingGate_ResetAllGateOrientations(void) s32 i; u8 *ptr = (u8 *)GetVarPointer(VAR_TEMP_0); - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - ptr[i] = sRotatingGate_PuzzleConfig[i].orientation; + ptr[i] = gRotatingGate_PuzzleConfig[i].orientation; } } @@ -681,12 +683,12 @@ static void RotatingGate_LoadPuzzleConfig(void) switch (puzzleType) { case PUZZLE_FORTREE_CITY_GYM: - sRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; - sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); + gRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); break; case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: - sRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; - sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); + gRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; + gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); break; case PUZZLE_NONE: default: @@ -694,7 +696,7 @@ static void RotatingGate_LoadPuzzleConfig(void) } for (i = 0; i < ROTATING_GATE_PUZZLE_MAX - 1; i++) - sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) @@ -708,15 +710,15 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 x3 = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 y3 = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 x3 = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 y3 = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && - sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) { - sRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); + gRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); } } } @@ -728,7 +730,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) u8 spriteId; s16 x, y; - const struct RotatingGatePuzzle *gate = &sRotatingGate_PuzzleConfig[gateId]; + const struct RotatingGatePuzzle *gate = &gRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) template = sSpriteTemplate_RotatingGateRegular; @@ -825,20 +827,20 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 xGate = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 yGate = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 xGate = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 yGate = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; - if (sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; if (xGate < x || xGate > x2 || yGate < y || yGate > y2) { - struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[i]]; + struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[i]]; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); - sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } } } @@ -860,9 +862,9 @@ static s32 RotatingGate_CanRotate(u8 gateId, s32 rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); - shape = sRotatingGate_PuzzleConfig[gateId].shape; - x = sRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; - y = sRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; + shape = gRotatingGate_PuzzleConfig[gateId].shape; + x = gRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; + y = gRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -889,15 +891,15 @@ static s32 RotatingGate_HasArm(u8 gateId, u8 armInfo) s32 isLongArm = armInfo % 2; s8 armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; - s32 shape = sRotatingGate_PuzzleConfig[gateId].shape; + s32 shape = gRotatingGate_PuzzleConfig[gateId].shape; return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm]; } static void RotatingGate_TriggerRotationAnimation(u8 gateId, s32 rotationDirection) { - if (sRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) { - struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[gateId]]; + struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]]; sprite->data[1] = rotationDirection; sprite->data[2] = RotatingGate_GetGateOrientation(gateId); } @@ -955,10 +957,10 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { @@ -993,10 +995,10 @@ bool8 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8 direction, s16 x, s if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < sRotatingGate_PuzzleCount; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { diff --git a/src/rotating_tile_puzzle.c b/src/rotating_tile_puzzle.c index 4581f6e5b..2e919f550 100644 --- a/src/rotating_tile_puzzle.c +++ b/src/rotating_tile_puzzle.c @@ -81,11 +81,14 @@ static const u8 sMovement_FaceUp[] = MOVEMENT_ACTION_STEP_END }; -static void SaveRotatingTileObject(u8, u8); -static void TurnUnsavedRotatingTileObject(u8, u8); +// This file's functions. +static void SaveRotatingTileObject(u8 eventTemplateId, u8 arg1); +static void TurnUnsavedRotatingTileObject(u8 eventTemplateId, u8 arg1); +// EWRAM vars EWRAM_DATA static struct RotatingTilePuzzle *sRotatingTilePuzzle = NULL; +// code void InitRotatingTilePuzzle(bool8 isTrickHouse) { if (sRotatingTilePuzzle == NULL) @@ -98,7 +101,8 @@ void FreeRotatingTilePuzzle(void) { u8 id; - TRY_FREE_AND_SET_NULL(sRotatingTilePuzzle); + if (sRotatingTilePuzzle != NULL) + FREE_AND_SET_NULL(sRotatingTilePuzzle); id = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); ObjectEventClearHeldMovementIfFinished(&gObjectEvents[id]); diff --git a/src/save.c b/src/save.c index 52cdaa5dd..dafc20868 100644 --- a/src/save.c +++ b/src/save.c @@ -73,12 +73,6 @@ struct SAVEBLOCK_CHUNK(struct PokemonStorage, 8), // SECTOR_ID_PKMN_STORAGE_END }; -// These will produce an error if a save struct is larger than the space -// alloted for it in the flash. -STATIC_ASSERT(sizeof(struct SaveBlock2) <= SECTOR_DATA_SIZE, SaveBlock2FreeSpace); -STATIC_ASSERT(sizeof(struct SaveBlock1) <= SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1), SaveBlock1FreeSpace); -STATIC_ASSERT(sizeof(struct PokemonStorage) <= SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1), PokemonStorageFreeSpace); - u16 gLastWrittenSector; u32 gLastSaveCounter; u16 gLastKnownGoodSector; diff --git a/src/scrcmd.c b/src/scrcmd.c index f76d09871..d8d543df4 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1179,7 +1179,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 graphicsId = ScriptReadByte(ctx); + u16 graphicsId = ScriptReadByte(ctx); u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); u32 y = VarGet(ScriptReadHalfword(ctx)); @@ -2383,4 +2383,4 @@ bool8 ScrCmd_checkfollower(struct ScriptContext *ctx) { CheckPlayerHasFollower(); return FALSE; -} +} \ No newline at end of file diff --git a/src/script.c b/src/script.c index 4728e739c..20d8d2ef3 100644 --- a/src/script.c +++ b/src/script.c @@ -447,3 +447,10 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), NO_OBJECT); } + +u8* ReadWord(u8 index) +{ + struct ScriptContext *ctx = &sScriptContext1; + + return (T1_READ_PTR(&ctx->data[index])); +} diff --git a/src/script_movement.c b/src/script_movement.c index 10517dfc8..92f36e92d 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -6,6 +6,7 @@ #include "constants/event_objects.h" #include "constants/event_object_movement.h" +// static functions static void ScriptMovement_StartMoveObjects(u8 priority); static u8 GetMoveObjectsTaskId(void); static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 objEventId, const u8 *movementScript); @@ -16,8 +17,10 @@ static void ScriptMovement_UnfreezeActiveObjects(u8 taskId); static void ScriptMovement_MoveObjects(u8 taskId); static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript); -static EWRAM_DATA const u8 *sMovementScripts[OBJECT_EVENTS_COUNT] = {0}; +// EWRAM_DATA +static EWRAM_DATA const u8 *gMovementScripts[OBJECT_EVENTS_COUNT] = {0}; +// text bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript) { u8 objEventId; @@ -164,12 +167,12 @@ static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId) static void SetMovementScript(u8 moveScrId, const u8 *movementScript) { - sMovementScripts[moveScrId] = movementScript; + gMovementScripts[moveScrId] = movementScript; } static const u8 *GetMovementScript(u8 moveScrId) { - return sMovementScripts[moveScrId]; + return gMovementScripts[moveScrId]; } static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript) diff --git a/src/siirtc.c b/src/siirtc.c index 0e598f717..5f4fc0a23 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -4,7 +4,6 @@ #include "gba/gba.h" #include "siirtc.h" -#include "config.h" #define STATUS_INTFE 0x02 // frequency interrupt enable #define STATUS_INTME 0x08 // per-minute interrupt enable diff --git a/src/slot_machine.c b/src/slot_machine.c index cb6a380d6..1dfa026e5 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1390,7 +1390,7 @@ static bool8 SlotTask_HandleBetInput(struct Task *task) // SLOTTASK_MSG_NEED_3_COINS static bool8 SlotTask_PrintMsg_Need3Coins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouDontHaveThreeCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NEED_3_COINS; @@ -1655,7 +1655,7 @@ static bool8 SlotTask_NoMatches(struct Task *task) // SLOTTASK_ASK_QUIT static bool8 SlotTask_AskQuit(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_QuitTheGame, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF); @@ -1687,7 +1687,7 @@ static bool8 SlotTask_HandleQuitInput(struct Task *task) // SLOTTASK_MSG_MAX_COINS static bool8 SlotTask_PrintMsg_MaxCoins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveGot9999Coins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_MAX_COINS; @@ -1708,7 +1708,7 @@ static bool8 SlotTask_WaitMsg_MaxCoins(struct Task *task) // SLOTTASK_MSG_NO_MORE_COINS static bool8 SlotTask_PrintMsg_NoMoreCoins(struct Task *task) { - DrawDialogueFrame(0, FALSE); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveRunOutOfCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NO_MORE_COINS; @@ -1756,10 +1756,14 @@ static bool8 SlotTask_FreeDataStructures(struct Task *task) FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Number); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Pokeball); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_DPad); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); - TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + if (sImageTable_ReelTimePikachu != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + if (sImageTable_ReelTimeMachineAntennae != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + if (sImageTable_ReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + if (sImageTable_BrokenReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); FREE_AND_SET_NULL(sMenuGfx); FREE_AND_SET_NULL(sSelectedPikaPowerTile); FREE_AND_SET_NULL(sReelOverlay_Tilemap); @@ -3861,15 +3865,21 @@ static void ReelTime_EndFailure(struct Task *task) static void LoadReelTimeWindowTilemap(s16 a0, s16 a1) { s16 i; + for (i = 4; i < 15; i++) + { LoadBgTilemap(1, &sReelTimeWindow_Tilemap[a1 + (i - 4) * 20], 2, 32 * i + a0); + } } static void ClearReelTimeWindowTilemap(s16 a0) { u8 i; + for (i = 4; i < 15; i++) + { LoadBgTilemap(1, sEmptyTilemap, 2, 32 * i + a0); + } } #undef tState @@ -4106,44 +4116,32 @@ static void CreateCreditPayoutNumberSprites(void) CreateCoinNumberSprite(x, 23, TRUE, i); } -#define sIsPayout data[0] -#define sDigitMin data[1] -#define sDigitMax data[2] -#define sCurNum data[3] // Only used to determine whether the sprite has already been updated to show the correct digit - -static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 digitMult) +static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 a3) { struct Sprite *sprite = &gSprites[CreateSprite(&sSpriteTemplate_CoinNumber, x, y, 13)]; sprite->oam.priority = 2; - sprite->sIsPayout = isPayout; - sprite->sDigitMin = digitMult; - sprite->sDigitMax = digitMult * 10; - sprite->sCurNum = -1; + sprite->data[0] = isPayout; + sprite->data[1] = a3; + sprite->data[2] = a3 * 10; + sprite->data[3] = -1; } static void SpriteCB_CoinNumber(struct Sprite *sprite) { u16 tag = sSlotMachine->coins; - if (sprite->sIsPayout) + if (sprite->data[0]) tag = sSlotMachine->payout; - if (sprite->sCurNum != tag) + if (sprite->data[3] != tag) { - // Convert total to current digit - sprite->sCurNum = tag; - tag %= (u16)sprite->sDigitMax; - tag /= (u16)sprite->sDigitMin; - - tag += GFXTAG_NUM_0; + sprite->data[3] = tag; + tag %= (u16)sprite->data[2]; + tag /= (u16)sprite->data[1]; + tag += 7; sprite->sheetTileStart = GetSpriteTileStartByTag(tag); SetSpriteSheetFrameTileNum(sprite); } } -#undef sIsPayout -#undef sDigitMin -#undef sDigitMax -#undef sCurNum - static void CreateReelBackgroundSprite(void) { u8 spriteId = CreateSprite(&sSpriteTemplate_ReelBackground, 88, 72, 15); @@ -4180,7 +4178,8 @@ static void CreateReelTimePikachuSprite(void) static void DestroyReelTimePikachuSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimePikachuSpriteId]); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + if (sImageTable_ReelTimePikachu != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); } static void SpriteCB_ReelTimePikachu(struct Sprite *sprite) @@ -4309,8 +4308,10 @@ static void DestroyReelTimeMachineSprites(void) for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeMachineSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeMachineSpriteIds[i]]); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + if (sImageTable_ReelTimeMachineAntennae != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + if (sImageTable_ReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeNumberSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeNumberSpriteIds[i]]); @@ -4327,7 +4328,8 @@ static void DestroyReelTimeShadowSprites(void) static void DestroyBrokenReelTimeMachineSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimeBrokenMachineSpriteId]); - TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + if (sImageTable_BrokenReelTimeMachine != NULL) + FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); } #define sDelayTimer data[0] diff --git a/src/start_menu.c b/src/start_menu.c index 11189ee83..90230c3dd 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -42,10 +42,9 @@ #include "text_window.h" #include "trainer_card.h" #include "window.h" -#include "union_room.h" -#include "constants/battle_frontier.h" -#include "constants/rgb.h" #include "constants/songs.h" +#include "union_room.h" +#include "constants/rgb.h" // Menu actions enum @@ -139,7 +138,7 @@ static bool8 FieldCB_ReturnToFieldStartMenu(void); static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8}; -static const u8* const sPyramidFloorNames[FRONTIER_STAGES_PER_CHALLENGE + 1] = +static const u8* const sPyramidFloorNames[] = { gText_Floor1, gText_Floor2, @@ -393,7 +392,7 @@ static void ShowSafariBallsWindow(void) static void ShowPyramidFloorWindow(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == FRONTIER_STAGES_PER_CHALLENGE) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == 7) sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_1); else sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2); diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 6a7589e36..3676006a6 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -537,7 +537,7 @@ const u16 *const gTilesetAnims_BattlePyramid_StatueShadow[] = { gTilesetAnims_BattlePyramid_StatueShadow_Frame2 }; -static const u16 *const sTilesetAnims_BattleDomeFloorLightPals[] = { +static const u16 *const gTilesetAnims_BattleDomeFloorLightPals[] = { gTilesetAnims_BattleDomePals0_0, gTilesetAnims_BattleDomePals0_1, gTilesetAnims_BattleDomePals0_2, @@ -1167,7 +1167,7 @@ static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer) static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) != TASK_NONE) { @@ -1178,7 +1178,7 @@ static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer) { - CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) == TASK_NONE) { BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); diff --git a/src/trade.c b/src/trade.c index 25614c91a..dd0851bbd 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2195,7 +2195,7 @@ static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void) sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT: - LoadSpritePalette(&sSpritePalette_TradeScreenText); + LoadSpritePalette(&gSpritePalette_TradeScreenText); sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT + 1: @@ -2435,7 +2435,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal) return FALSE; } -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal) +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal) { bool8 playerHasNationalDex = player.hasNationalDex; bool8 playerIsChampion = player.isChampion; @@ -2496,7 +2496,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_NONE; } -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal) +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, u8 isEventLegal) { bool8 hasNationalDex = player.hasNationalDex; @@ -3744,7 +3744,7 @@ static bool8 AnimateTradeSequenceCable(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4244,7 +4244,7 @@ static bool8 AnimateTradeSequenceWireless(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4813,7 +4813,7 @@ static void CheckPartnersMonForRibbons(void) { u8 i; u8 numRibbons = 0; - for (i = 0; i < (MON_DATA_UNUSED_RIBBONS - MON_DATA_CHAMPION_RIBBON); i ++) + for (i = 0; i < 12; i ++) { numRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE], MON_DATA_CHAMPION_RIBBON + i); } diff --git a/src/trainer_hill.c b/src/trainer_hill.c index dad6b97ea..39c6202a0 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -32,21 +32,23 @@ #include "constants/trainer_hill.h" #include "constants/trainer_types.h" +#define HILL_TAG_NORMAL 0 +#define HILL_TAG_VARIETY 1 +#define HILL_TAG_UNIQUE 2 +#define HILL_TAG_EXPERT 3 + #define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1 -struct FloorTrainers +// EWRAM +struct TrHillStruct2 { - u8 name[HILL_TRAINERS_PER_FLOOR][HILL_TRAINER_NAME_LENGTH]; - u8 facilityClass[HILL_TRAINERS_PER_FLOOR]; + u8 floorId; + struct TrHillTag tag; + struct TrHillFloor floors[NUM_TRAINER_HILL_FLOORS]; }; -static EWRAM_DATA struct { - u8 floorId; - struct TrainerHillChallenge challenge; - struct TrainerHillFloor floors[NUM_TRAINER_HILL_FLOORS]; -} *sHillData = NULL; - -static EWRAM_DATA struct FloorTrainers *sFloorTrainers = NULL; +static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL; +static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL; EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL; // This file's functions. @@ -67,7 +69,7 @@ static void GetGameSaved(void); static void SetGameSaved(void); static void ClearGameSaved(void); static void GetChallengeWon(void); -static void TrainerHillSetMode(void); +static void TrainerHillSetTag(void); static void SetUpDataStruct(void); static void FreeDataStruct(void); static void TrainerHillDummy(void); @@ -200,12 +202,12 @@ static const u16 *const *const sPrizeListSets[] = static const u16 sEReader_Pal[] = INCBIN_U16("graphics/trainer_hill/ereader.gbapal"); static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; -static const struct TrainerHillChallenge *const sChallengeData[NUM_TRAINER_HILL_MODES] = +static const struct TrHillTag *const sDataPerTag[] = { - [HILL_MODE_NORMAL] = &sChallenge_Normal, - [HILL_MODE_VARIETY] = &sChallenge_Variety, - [HILL_MODE_UNIQUE] = &sChallenge_Unique, - [HILL_MODE_EXPERT] = &sChallenge_Expert, + &sDataTagNormal, + &sDataTagVariety, + &sDataTagUnique, + &sDataTagExpert, }; // Unused. @@ -236,15 +238,15 @@ static void (* const sHillFunctions[])(void) = [TRAINER_HILL_FUNC_SET_GAME_SAVED] = SetGameSaved, [TRAINER_HILL_FUNC_CLEAR_GAME_SAVED] = ClearGameSaved, [TRAINER_HILL_FUNC_GET_WON] = GetChallengeWon, - [TRAINER_HILL_FUNC_SET_MODE] = TrainerHillSetMode, + [TRAINER_HILL_FUNC_SET_TAG] = TrainerHillSetTag, }; -static const u8 *const sModeStrings[NUM_TRAINER_HILL_MODES] = +static const u8 *const sTagMatchStrings[] = { - [HILL_MODE_NORMAL] = gText_NormalTagMatch, - [HILL_MODE_VARIETY] = gText_VarietyTagMatch, - [HILL_MODE_UNIQUE] = gText_UniqueTagMatch, - [HILL_MODE_EXPERT] = gText_ExpertTagMatch, + gText_NormalTagMatch, + gText_VarietyTagMatch, + gText_UniqueTagMatch, + gText_ExpertTagMatch, }; static const struct ObjectEventTemplate sTrainerObjectEventTemplate = @@ -259,17 +261,18 @@ static const struct ObjectEventTemplate sTrainerObjectEventTemplate = static const u32 sNextFloorMapNum[NUM_TRAINER_HILL_FLOORS] = { - [TRAINER_HILL_1F - 1] = MAP_NUM(TRAINER_HILL_2F), - [TRAINER_HILL_2F - 1] = MAP_NUM(TRAINER_HILL_3F), - [TRAINER_HILL_3F - 1] = MAP_NUM(TRAINER_HILL_4F), - [TRAINER_HILL_4F - 1] = MAP_NUM(TRAINER_HILL_ROOF) + MAP_NUM(TRAINER_HILL_2F), + MAP_NUM(TRAINER_HILL_3F), + MAP_NUM(TRAINER_HILL_4F), + MAP_NUM(TRAINER_HILL_ROOF) }; -static const u8 sTrainerPartySlots[HILL_TRAINERS_PER_FLOOR][PARTY_SIZE / 2] = +static const u8 sTrainerPartySlots[][PARTY_SIZE / 2] = { {0, 1, 2}, {3, 4, 5} }; +// code void CallTrainerHillFunction(void) { SetUpDataStruct(); @@ -284,7 +287,7 @@ void ResetTrainerHillResults(void) gSaveBlock2Ptr->frontier.savedGame = 0; gSaveBlock2Ptr->frontier.unk_EF9 = 0; gSaveBlock1Ptr->trainerHill.bestTime = 0; - for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) + for (i = 0; i < 4; i++) SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME); } @@ -297,7 +300,7 @@ u8 GetTrainerHillOpponentClass(u16 trainerId) { u8 id = trainerId - 1; - return gFacilityClassToTrainerClass[sFloorTrainers->facilityClass[id]]; + return gFacilityClassToTrainerClass[sRoomTrainers->facilityClass[id]]; } void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) @@ -306,7 +309,7 @@ void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) u8 id = trainerId - 1; for (i = 0; i < HILL_TRAINER_NAME_LENGTH; i++) - dst[i] = sFloorTrainers->name[id][i]; + dst[i] = sRoomTrainers->name[id][i]; } u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId) @@ -326,14 +329,15 @@ void InitTrainerHillBattleStruct(void) s32 i, j; SetUpDataStruct(); - sFloorTrainers = AllocZeroed(sizeof(*sFloorTrainers)); + sRoomTrainers = AllocZeroed(sizeof(*sRoomTrainers)); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++) - sFloorTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; - - sFloorTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; + { + sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; + } + sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; } SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); FreeDataStruct(); @@ -341,7 +345,8 @@ void InitTrainerHillBattleStruct(void) void FreeTrainerHillBattleStruct(void) { - TRY_FREE_AND_SET_NULL(sFloorTrainers); + if (sRoomTrainers != NULL) + FREE_AND_SET_NULL(sRoomTrainers); } static void SetUpDataStruct(void) @@ -350,20 +355,15 @@ static void SetUpDataStruct(void) { sHillData = AllocZeroed(sizeof(*sHillData)); sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F; - - // This copy depends on the floor data for each challenge being directly after the - // challenge header data, and for the field 'floors' in sHillData to come directly - // after the field 'challenge'. - // e.g. for HILL_MODE_NORMAL, it will copy sChallenge_Normal to sHillData->challenge and - // it will copy sFloors_Normal to sHillData->floors - CpuCopy32(sChallengeData[gSaveBlock1Ptr->trainerHill.mode], &sHillData->challenge, sizeof(sHillData->challenge) + sizeof(sHillData->floors)); + CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor)); TrainerHillDummy(); } } static void FreeDataStruct(void) { - TRY_FREE_AND_SET_NULL(sHillData); + if (sHillData != NULL) + FREE_AND_SET_NULL(sHillData); } void CopyTrainerHillTrainerText(u8 which, u16 trainerId) @@ -428,7 +428,7 @@ static void GiveChallengePrize(void) { u16 itemId = GetPrizeItemId(); - if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) + if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) { gSpecialVar_Result = 2; } @@ -456,7 +456,7 @@ static void CheckFinalTime(void) else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer) { SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer); - gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.mode] = gSaveBlock1Ptr->trainerHill.bestTime; + gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime; gSpecialVar_Result = 0; } else @@ -529,9 +529,9 @@ static void BufferChallengeTime(void) static void GetAllFloorsUsed(void) { SetUpDataStruct(); - if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS) + if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS) { - ConvertIntToDecimalStringN(gStringVar1, sHillData->challenge.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); gSpecialVar_Result = FALSE; } else @@ -592,9 +592,9 @@ void PrintOnTrainerHillRecordsWindow(void) AddTextPrinterParameterized3(0, FONT_NORMAL, x, 2, sRecordWinColors, TEXT_SKIP_DRAW, gText_TimeBoard); y = 18; - for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) + for (i = 0; i < 4; i++) { - AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sModeStrings[i]); + AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sTagMatchStrings[i]); y += 15; total = GetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i]); minutes = total / (60 * 60); @@ -637,23 +637,23 @@ void LoadTrainerHillObjectEventTemplates(void) return; SetUpDataStruct(); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; CpuFill32(0, gSaveBlock1Ptr->objectEventTemplates, sizeof(gSaveBlock1Ptr->objectEventTemplates)); floorId = GetFloorId(); - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { u8 bits; eventTemplates[i] = sTrainerObjectEventTemplate; eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); - eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; + eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF; + eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5; bits = i << 2; - eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; - eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; + eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; + eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF; eventTemplates[i].script = TrainerHill_EventScript_TrainerBattle; gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1; } @@ -669,14 +669,14 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void) return TRUE; } -static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floorWidth is always 16 +static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride is always 16 { bool8 impassable; u16 metatile; u16 elevation; - impassable = (sHillData->floors[floorId].map.collisionData[y] >> (15 - x) & 1); - metatile = sHillData->floors[floorId].map.metatileData[floorWidth * y + x] + NUM_METATILES_IN_PRIMARY; + impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1); + metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + NUM_METATILES_IN_PRIMARY; elevation = 3 << MAPGRID_ELEVATION_SHIFT; return ((impassable << MAPGRID_COLLISION_SHIFT) & MAPGRID_COLLISION_MASK) | elevation | (metatile & MAPGRID_METATILE_ID_MASK); @@ -684,7 +684,7 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floo void GenerateTrainerHillFloorLayout(u16 *mapArg) { - s32 y, x; + s32 i, j; u16 *src, *dst; u8 mapId = GetCurrentTrainerHillMapId(); @@ -705,25 +705,24 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg) mapId = GetFloorId(); src = gMapHeader.mapLayout->map; gBackupMapLayout.map = mapArg; - // Dimensions include border area loaded beyond map - gBackupMapLayout.width = HILL_FLOOR_WIDTH + 15; - gBackupMapLayout.height = HILL_FLOOR_HEIGHT + 14; + gBackupMapLayout.width = 31; + gBackupMapLayout.height = 35; dst = mapArg + 224; // First 5 rows of the map (Entrance / Exit) are always the same - for (y = 0; y < HILL_FLOOR_HEIGHT_MARGIN; y++) + for (i = 0; i < 5; i++) { - for (x = 0; x < HILL_FLOOR_WIDTH; x++) - dst[x] = src[x]; + for (j = 0; j < 16; j++) + dst[j] = src[j]; dst += 31; src += 16; } // Load the 16x16 floor-specific layout - for (y = 0; y < HILL_FLOOR_HEIGHT_MAIN; y++) + for (i = 0; i < 16; i++) { - for (x = 0; x < HILL_FLOOR_WIDTH; x++) - dst[x] = GetMetatileForFloor(mapId, x, y, HILL_FLOOR_WIDTH); + for (j = 0; j < 16; j++) + dst[j] = GetMetatileForFloor(mapId, j, i, 16); dst += 31; } @@ -813,8 +812,8 @@ u16 LocalIdToHillTrainerId(u8 localId) bool8 GetHillTrainerFlag(u8 objectEventId) { - u32 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; - u8 bitId = gObjectEvents[objectEventId].localId - 1 + trainerIndexStart; + u32 floorId = GetFloorId() * 2; + u8 bitId = gObjectEvents[objectEventId].localId - 1 + floorId; return gSaveBlock2Ptr->frontier.trainerFlags & gBitTable[bitId]; } @@ -822,24 +821,24 @@ bool8 GetHillTrainerFlag(u8 objectEventId) void SetHillTrainerFlag(void) { u8 i; - u8 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; + u8 floorId = GetFloorId() * 2; - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_A) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; break; } } if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { - for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) + for (i = 0; i < 2; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_B) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; break; } } @@ -862,14 +861,14 @@ static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId) u8 trId, level; s32 i, floorId, partySlot; - if (trainerId == 0 || trainerId > HILL_TRAINERS_PER_FLOOR) + if (trainerId == 0 || trainerId > 2) return; trId = trainerId - 1; SetUpDataStruct(); level = GetHighestLevelInPlayerParty(); floorId = GetFloorId(); - for (i = firstMonId, partySlot = 0; i < firstMonId + PARTY_SIZE / 2; i++, partySlot++) + for (i = firstMonId, partySlot = 0; i < firstMonId + 3; i++, partySlot++) { u8 id = sTrainerPartySlots[trId][partySlot]; struct Pokemon *mon = &gEnemyParty[i]; @@ -891,7 +890,7 @@ void FillHillTrainersParties(void) { ZeroEnemyPartyMons(); CreateNPCTrainerHillParty(gTrainerBattleOpponent_A, 0); - CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, PARTY_SIZE / 2); + CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, 3); } // This function is unused, but my best guess is @@ -936,7 +935,7 @@ u8 GetNumFloorsInTrainerHillChallenge(void) u8 floors; SetUpDataStruct(); - floors = sHillData->challenge.numFloors; + floors = sHillData->tag.numFloors; FreeDataStruct(); return floors; @@ -990,20 +989,16 @@ static void GetChallengeWon(void) gSpecialVar_Result = TRUE; } -static void TrainerHillSetMode(void) +static void TrainerHillSetTag(void) { - gSaveBlock1Ptr->trainerHill.mode = gSpecialVar_0x8005; + gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005; gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; } -// Determines which prize list to use from the set of prize lists. -static u8 GetPrizeListId(bool8 allowTMs) +static u8 GetPrizeListId(bool8 maxTrainers) { u8 prizeListId, i, modBy; - // The initial selection depends on the trainer numbers for the completed challenge. - // These don't change with the available challenge modes, so Normal/Unique will always - // have a prizeListId of 8, and Variety/Expert will have a prizeListId of 24. prizeListId = 0; for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { @@ -1011,10 +1006,8 @@ static u8 GetPrizeListId(bool8 allowTMs) prizeListId ^= sHillData->floors[i].trainerNum2 & 0x1F; } - // In practice, the conditional below is always true. - // The 2nd half of the lists in both sets of lists all have a TM as the "grand prize", while the 1st half do not, - // so taking the mod of the (total / 2) ensures that a prize list without a TM will be used. - if (allowTMs) + // Not possible to win TMs with fewer than 8 trainers + if (maxTrainers) modBy = NUM_TRAINER_HILL_PRIZE_LISTS; else modBy = NUM_TRAINER_HILL_PRIZE_LISTS / 2; @@ -1027,64 +1020,38 @@ static u16 GetPrizeItemId(void) { u8 i; const u16 *prizeList; - s32 trainerNumSum = 0, prizeListSetId, minutes, id; + s32 var = 0, prizeListSetId, minutes, id; - // First determine which set of prize lists to use. The sets of lists only differ in - // what TMs they can offer as the "grand prize" for a time under 12 minutes. - // Which set of lists gets used is based on the sum of all the trainer numbers for that - // challenge. These don't change with the available challenge modes, so Normal will always - // have a prizeListSetId of 0, and Unique/Variety/Expert will have a prizeListSetId of 1. for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { - trainerNumSum += sHillData->floors[i].trainerNum1; - trainerNumSum += sHillData->floors[i].trainerNum2; + var += sHillData->floors[i].trainerNum1; + var += sHillData->floors[i].trainerNum2; } - prizeListSetId = trainerNumSum / 256; - prizeListSetId %= (int)ARRAY_COUNT(sPrizeListSets); - // Now get which prize list to use from the set. See GetPrizeListId for details. - // The below conditional will always be true, because a Trainer Hill challenge can't be entered - // until the player has entered the Hall of Fame (FLAG_SYS_GAME_CLEAR is set) and because all - // of the available challenge modes have the full 8 trainers (NUM_TRAINER_HILL_TRAINERS). - if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->challenge.numTrainers == NUM_TRAINER_HILL_TRAINERS) + prizeListSetId = var / 256; + prizeListSetId %= 2; + if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->tag.numTrainers == NUM_TRAINER_HILL_TRAINERS) i = GetPrizeListId(TRUE); else i = GetPrizeListId(FALSE); - // 1 is added to Expert mode's prize list selection because otherwise it has the same prizes as Variety - if (gSaveBlock1Ptr->trainerHill.mode == HILL_MODE_EXPERT) + if (gSaveBlock1Ptr->trainerHill.tag == HILL_TAG_EXPERT) i = (i + 1) % NUM_TRAINER_HILL_PRIZE_LISTS; - // After the above (non-random) calculations, the following are the possible prize list selections: - // sPrizeListSets[0][8] (Normal) - // sPrizeListSets[1][4] (Variety) - // sPrizeListSets[1][8] (Unique) - // sPrizeListSets[1][5] (Expert) prizeList = sPrizeListSets[prizeListSetId][i]; - - // Which prize is given from the list depends on the time scored. - // The prize for any time after 12 minutes is the same in every list. - // The prizes for a time under 12 minutes are: - // - ITEM_TM11_SUNNY_DAY (Normal) - // - ITEM_ELIXIR (Variety) - // - ITEM_TM19_GIGA_DRAIN (Unique) - // - ITEM_TM31_BRICK_BREAK (Expert) - // As an additional note, if players were allowed to enter a Trainer Hill challenge before - // entering the Hall of Fame, there would be 1 additional prize possibility (ITEM_MAX_ETHER) - // as Normal / Unique modes would use sPrizeListSets[0][3] / sPrizeListSets[1][3] respectively. minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60); if (minutes < 12) - id = 0; // Depends on list + id = 0; else if (minutes < 13) - id = 1; // ITEM_ETHER + id = 1; else if (minutes < 14) - id = 2; // ITEM_MAX_POTION + id = 2; else if (minutes < 16) - id = 3; // ITEM_REVIVE + id = 3; else if (minutes < 18) - id = 4; // ITEM_FLUFFY_TAIL + id = 4; else - id = 5; // ITEM_GREAT_BALL + id = 5; return prizeList[id]; } diff --git a/src/tv.c b/src/tv.c index 2f3d17ee2..b9d064026 100644 --- a/src/tv.c +++ b/src/tv.c @@ -373,21 +373,21 @@ static const u8 *const sTV3CheersForPokeblocksTextGroup[] = { }; static const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = { - [BRAVOTOWER_STATE_INTRO] = BravoTrainerBattleTower_Text_Intro, - [BRAVOTOWER_STATE_NEW_RECORD] = BravoTrainerBattleTower_Text_NewRecord, - [BRAVOTOWER_STATE_LOST] = BravoTrainerBattleTower_Text_Lost, - [BRAVOTOWER_STATE_WON] = BravoTrainerBattleTower_Text_Won, - [BRAVOTOWER_STATE_LOST_FINAL] = BravoTrainerBattleTower_Text_LostFinal, - [BRAVOTOWER_STATE_SATISFIED] = BravoTrainerBattleTower_Text_Satisfied, - [BRAVOTOWER_STATE_UNSATISFIED] = BravoTrainerBattleTower_Text_Unsatisfied, - [BRAVOTOWER_STATE_UNUSED_1] = BravoTrainerBattleTower_Text_None1, - [BRAVOTOWER_STATE_UNUSED_2] = BravoTrainerBattleTower_Text_None2, - [BRAVOTOWER_STATE_UNUSED_3] = BravoTrainerBattleTower_Text_None3, - [BRAVOTOWER_STATE_UNUSED_4] = BravoTrainerBattleTower_Text_None4, - [BRAVOTOWER_STATE_RESPONSE] = BravoTrainerBattleTower_Text_Response, - [BRAVOTOWER_STATE_RESPONSE_SATISFIED] = BravoTrainerBattleTower_Text_ResponseSatisfied, - [BRAVOTOWER_STATE_RESPONSE_UNSATISFIED] = BravoTrainerBattleTower_Text_ResponseUnsatisfied, - [BRAVOTOWER_STATE_OUTRO] = BravoTrainerBattleTower_Text_Outro + gTVBravoTrainerBattleTowerText00, + gTVBravoTrainerBattleTowerText01, + gTVBravoTrainerBattleTowerText02, + gTVBravoTrainerBattleTowerText03, + gTVBravoTrainerBattleTowerText04, + gTVBravoTrainerBattleTowerText05, + gTVBravoTrainerBattleTowerText06, + gTVBravoTrainerBattleTowerText07, + gTVBravoTrainerBattleTowerText08, + gTVBravoTrainerBattleTowerText09, + gTVBravoTrainerBattleTowerText10, + gTVBravoTrainerBattleTowerText11, + gTVBravoTrainerBattleTowerText12, + gTVBravoTrainerBattleTowerText13, + gTVBravoTrainerBattleTowerText14 }; static const u8 *const sTVContestLiveUpdatesTextGroup[] = { @@ -723,7 +723,7 @@ static const u8 *const sTVInSearchOfTrainersTextGroup[] = { // Secret Base Secrets TV Show states for actions that can be taken in a secret base // The flags that determine whether or not the action was taken are commented -static const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = +const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = { SBSECRETS_STATE_USED_CHAIR, // SECRET_BASE_USED_CHAIR SBSECRETS_STATE_USED_BALLOON, // SECRET_BASE_USED_BALLOON @@ -1449,7 +1449,7 @@ static void InterviewAfter_BravoTrainerPokemonProfile(void) } } -void BravoTrainerPokemonProfile_BeforeInterview1(u16 move) +void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) { TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX]; InterviewBefore_BravoTrainerPkmnProfile(); @@ -1457,7 +1457,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 move) if (sCurTVShowSlot != -1) { DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX); - show->bravoTrainer.move = move; + show->bravoTrainer.move = a0; show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } } @@ -1490,9 +1490,9 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void) show->bravoTrainerTower.numFights = GetCurrentBattleTowerWinStreak(gSaveBlock2Ptr->frontier.towerLvlMode, 0); show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.towerBattleOutcome; if (gSaveBlock2Ptr->frontier.towerLvlMode == FRONTIER_LVL_50) - show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_50; + show->bravoTrainerTower.btLevel = 50; else - show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_OPEN; + show->bravoTrainerTower.btLevel = 100; show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004; StorePlayerIdInNormalShow(show); show->bravoTrainerTower.language = gGameLanguage; @@ -4371,9 +4371,6 @@ static void DoTVShowBravoTrainerPokemonProfile(void) ShowFieldMessage(sTVBravoTrainerTextGroup[state]); } -// This is the TV show triggered by accepting the reporter's interview in the lobby of Battle Tower. -// The reporter had asked the player if they were satisfied or not with the challenge, and then asked -// for a one word Easy Chat description of their feelings about the challenge. static void DoTVShowBravoTrainerBattleTower(void) { TVShow *show; @@ -4384,83 +4381,85 @@ static void DoTVShowBravoTrainerBattleTower(void) state = sTVShowState; switch(state) { - case BRAVOTOWER_STATE_INTRO: + case 0: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); - if (show->bravoTrainerTower.numFights >= FRONTIER_STAGES_PER_CHALLENGE) - sTVShowState = BRAVOTOWER_STATE_NEW_RECORD; + if (show->bravoTrainerTower.numFights >= 7) + sTVShowState = 1; else - sTVShowState = BRAVOTOWER_STATE_LOST; + sTVShowState = 2; break; - case BRAVOTOWER_STATE_NEW_RECORD: - // The TV show states a "new record" was achieved as long as all the battles in the challenge were attempted, - // regardless of any previous records or whether the final battle was won or lost. - if (show->bravoTrainerTower.btLevel == FRONTIER_MAX_LEVEL_50) + case 1: + if (show->bravoTrainerTower.btLevel == 50) + { StringCopy(gStringVar1, gText_Lv50); + } else + { StringCopy(gStringVar1, gText_OpenLevel); + } ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights); if (show->bravoTrainerTower.wonTheChallenge == TRUE) - sTVShowState = BRAVOTOWER_STATE_WON; + sTVShowState = 3; else - sTVShowState = BRAVOTOWER_STATE_LOST_FINAL; + sTVShowState = 4; break; - case BRAVOTOWER_STATE_LOST: + case 2: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights + 1); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_WON: + case 3: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_LOST_FINAL: + case 4: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_SATISFIED; + sTVShowState = 5; else - sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; + sTVShowState = 6; break; - case BRAVOTOWER_STATE_SATISFIED: + case 5: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNSATISFIED: + case 6: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNUSED_1: - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + case 7: + sTVShowState = 11; break; - case BRAVOTOWER_STATE_UNUSED_2: - case BRAVOTOWER_STATE_UNUSED_3: - case BRAVOTOWER_STATE_UNUSED_4: + case 8: + case 9: + case 10: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); - sTVShowState = BRAVOTOWER_STATE_RESPONSE; + sTVShowState = 11; break; - case BRAVOTOWER_STATE_RESPONSE: + case 11: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = BRAVOTOWER_STATE_RESPONSE_SATISFIED; + sTVShowState = 12; else - sTVShowState = BRAVOTOWER_STATE_RESPONSE_UNSATISFIED; + sTVShowState = 13; break; - case BRAVOTOWER_STATE_RESPONSE_SATISFIED: - case BRAVOTOWER_STATE_RESPONSE_UNSATISFIED: + case 12: + case 13: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = BRAVOTOWER_STATE_OUTRO; + sTVShowState = 14; break; - case BRAVOTOWER_STATE_OUTRO: + case 14: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); TVShowDone(); diff --git a/src/union_room.c b/src/union_room.c index 05b41a088..9a743dbab 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4318,7 +4318,7 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void) for (i = 0; i < gPlayerPartyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= UNION_ROOM_MAX_LEVEL + if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30 && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) count++; } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index f8513b9f4..9890bc1f8 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -2160,7 +2160,8 @@ static bool32 IsDisplaySubtask0Active(void) static void FreeDisplay(void) { FreeSprites(); - TRY_FREE_AND_SET_NULL(sDisplay); + if (sDisplay) + FREE_AND_SET_NULL(sDisplay); FreeAllWindowBuffers(); gScanlineEffect.state = 3; diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile index 8728fa8d0..b4244aa8d 100644 --- a/tools/gbagfx/Makefile +++ b/tools/gbagfx/Makefile @@ -1,10 +1,8 @@ CC = gcc CFLAGS = -Wall -Wextra -Werror -Wno-sign-compare -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK -CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz -LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c huff.c diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp index caa6f0ecd..d4d79f133 100644 --- a/tools/mid2agb/agb.cpp +++ b/tools/mid2agb/agb.cpp @@ -18,7 +18,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#include #include #include #include @@ -504,7 +503,7 @@ void PrintAgbTrack(std::vector& events) ResetTrackVars(); break; case EventType::Tempo: - PrintByte("TEMPO , %u*%s_tbs/2", static_cast(round(60000000.0f / static_cast(event.param2))), g_asmLabel.c_str()); + PrintByte("TEMPO , %u*%s_tbs/2", 60000000 / event.param2, g_asmLabel.c_str()); PrintWait(event.time); break; case EventType::InstrumentChange: diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index 92e44b545..0bc88a42b 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -1,10 +1,8 @@ CC ?= gcc CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK -CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz -LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c util.c font.c From 0b15d6500f50b2f66d9dc52bee8f03e826890a3d Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 09:10:16 -0700 Subject: [PATCH 45/71] Revert "Merge adjustments" This reverts commit a716f522f3599ecf073c7e302e3c72dbaac053c3. --- 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 b06a51ac6..e5b6ad8b9 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -141,6 +141,8 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8); static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); +static void LoadObjectEventPalette(u16); +static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); @@ -2128,7 +2130,7 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = z; + sprite->sVirtualObjElev = elevation; if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); From 372f786da570fa55a92030f05887c1b2cf361841 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 09:53:00 -0700 Subject: [PATCH 46/71] Reverting more commits --- .../scripts.inc | 2 +- .../palettes/followers/abomasnow.pal | 19 ++++++++++++++++++ .../object_events/palettes/followers/abra.pal | 19 ++++++++++++++++++ .../palettes/followers/alakazam.pal | 19 ++++++++++++++++++ .../palettes/followers/ambipom.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_bug.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_dark.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_dragon.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_electric.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_fighting.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_fire.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_flying.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_ghost.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_grass.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_ground.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_ice.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_normal.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_poison.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_psychic.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_rock.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_steel.pal | 19 ++++++++++++++++++ .../palettes/followers/arceus_water.pal | 19 ++++++++++++++++++ .../object_events/palettes/followers/aron.pal | 19 ++++++++++++++++++ .../palettes/followers/azelf.pal | 19 ++++++++++++++++++ .../palettes/followers/bastiodon.pal | 19 ++++++++++++++++++ .../palettes/followers/bellsprout.pal | 19 ++++++++++++++++++ .../palettes/followers/bibarel.pal | 19 ++++++++++++++++++ .../palettes/followers/bidoof.pal | 19 ++++++++++++++++++ .../palettes/followers/bonsly.pal | 19 ++++++++++++++++++ .../palettes/followers/bronzong.pal | 19 ++++++++++++++++++ .../palettes/followers/bronzor.pal | 19 ++++++++++++++++++ .../palettes/followers/budew.pal | 19 ++++++++++++++++++ .../palettes/followers/buizel.pal | 19 ++++++++++++++++++ .../palettes/followers/buneary.pal | 19 ++++++++++++++++++ .../palettes/followers/burmy.pal | 19 ++++++++++++++++++ .../palettes/followers/burmy_sand.pal | 19 ++++++++++++++++++ .../palettes/followers/burmy_trash.pal | 19 ++++++++++++++++++ .../palettes/followers/cacturne.pal | 19 ++++++++++++++++++ .../palettes/followers/carnivine.pal | 19 ++++++++++++++++++ .../palettes/followers/castform.pal | 19 ++++++++++++++++++ .../palettes/followers/chatot.pal | 19 ++++++++++++++++++ .../palettes/followers/cherrim.pal | 19 ++++++++++++++++++ .../palettes/followers/cherubi.pal | 19 ++++++++++++++++++ .../palettes/followers/chikorita.pal | 19 ++++++++++++++++++ .../palettes/followers/chimchar.pal | 19 ++++++++++++++++++ .../palettes/followers/chingling.pal | 19 ++++++++++++++++++ .../palettes/followers/clefairy.pal | 19 ++++++++++++++++++ .../palettes/followers/combee.pal | 19 ++++++++++++++++++ .../palettes/followers/cranidos.pal | 19 ++++++++++++++++++ .../palettes/followers/cresselia.pal | 19 ++++++++++++++++++ .../palettes/followers/croagunk.pal | 19 ++++++++++++++++++ .../palettes/followers/darkrai.pal | 19 ++++++++++++++++++ .../palettes/followers/dewgong.pal | 19 ++++++++++++++++++ .../palettes/followers/dialga.pal | 19 ++++++++++++++++++ .../palettes/followers/ditto.pal | 19 ++++++++++++++++++ .../palettes/followers/drapion.pal | 19 ++++++++++++++++++ .../palettes/followers/drifblim.pal | 19 ++++++++++++++++++ .../palettes/followers/drifloon.pal | 19 ++++++++++++++++++ .../palettes/followers/drowzee.pal | 19 ++++++++++++++++++ .../palettes/followers/dusknoir.pal | 19 ++++++++++++++++++ .../palettes/followers/electabuzz.pal | 19 ++++++++++++++++++ .../palettes/followers/electivire.pal | 19 ++++++++++++++++++ .../palettes/followers/electrode.pal | 19 ++++++++++++++++++ .../palettes/followers/empoleon.pal | 19 ++++++++++++++++++ .../palettes/followers/finneon.pal | 19 ++++++++++++++++++ .../palettes/followers/floatzel.pal | 19 ++++++++++++++++++ .../palettes/followers/froslass.pal | 19 ++++++++++++++++++ .../palettes/followers/gabite.pal | 19 ++++++++++++++++++ .../palettes/followers/gallade.pal | 19 ++++++++++++++++++ .../palettes/followers/garchomp.pal | 19 ++++++++++++++++++ .../palettes/followers/gastrodon_east.pal | 19 ++++++++++++++++++ .../palettes/followers/gastrodon_west.pal | 19 ++++++++++++++++++ .../palettes/followers/geodude.pal | 19 ++++++++++++++++++ .../palettes/followers/gible.pal | 19 ++++++++++++++++++ .../palettes/followers/giratina_normal.pal | 19 ++++++++++++++++++ .../palettes/followers/giratina_origin.pal | 19 ++++++++++++++++++ .../palettes/followers/glaceon.pal | 19 ++++++++++++++++++ .../palettes/followers/glameow.pal | 19 ++++++++++++++++++ .../palettes/followers/gliscor.pal | 19 ++++++++++++++++++ .../palettes/followers/grimer.pal | 19 ++++++++++++++++++ .../palettes/followers/grotle.pal | 19 ++++++++++++++++++ .../palettes/followers/growlithe.pal | 19 ++++++++++++++++++ .../palettes/followers/happiny.pal | 19 ++++++++++++++++++ .../palettes/followers/heatran.pal | 19 ++++++++++++++++++ .../palettes/followers/hippopotas.pal | 19 ++++++++++++++++++ .../palettes/followers/hippowdon.pal | 19 ++++++++++++++++++ .../palettes/followers/honchkrow.pal | 19 ++++++++++++++++++ .../palettes/followers/houndour.pal | 19 ++++++++++++++++++ .../palettes/followers/infernape.pal | 19 ++++++++++++++++++ .../palettes/followers/kakuna.pal | 19 ++++++++++++++++++ .../palettes/followers/kirlia.pal | 19 ++++++++++++++++++ .../palettes/followers/krabby.pal | 19 ++++++++++++++++++ .../palettes/followers/kricketot.pal | 19 ++++++++++++++++++ .../palettes/followers/kricketune.pal | 19 ++++++++++++++++++ .../palettes/followers/leafeon.pal | 19 ++++++++++++++++++ .../palettes/followers/lickilicky.pal | 19 ++++++++++++++++++ .../palettes/followers/lopunny.pal | 19 ++++++++++++++++++ .../palettes/followers/loudred.pal | 19 ++++++++++++++++++ .../palettes/followers/lucario.pal | 19 ++++++++++++++++++ .../palettes/followers/lumineon.pal | 19 ++++++++++++++++++ .../palettes/followers/lunatone.pal | 19 ++++++++++++++++++ .../palettes/followers/luxio.pal | 19 ++++++++++++++++++ .../palettes/followers/luxray.pal | 19 ++++++++++++++++++ .../palettes/followers/magmortar.pal | 19 ++++++++++++++++++ .../palettes/followers/magneton.pal | 19 ++++++++++++++++++ .../palettes/followers/magnezone.pal | 19 ++++++++++++++++++ .../palettes/followers/mamoswine.pal | 19 ++++++++++++++++++ .../palettes/followers/manaphy.pal | 19 ++++++++++++++++++ .../palettes/followers/mantyke.pal | 19 ++++++++++++++++++ .../palettes/followers/marill.pal | 19 ++++++++++++++++++ .../palettes/followers/marowak.pal | 19 ++++++++++++++++++ .../palettes/followers/mesprit.pal | 19 ++++++++++++++++++ .../palettes/followers/metagross.pal | 19 ++++++++++++++++++ .../palettes/followers/metapod.pal | 19 ++++++++++++++++++ .../palettes/followers/mime_jr.pal | 19 ++++++++++++++++++ .../palettes/followers/mismagius.pal | 19 ++++++++++++++++++ .../palettes/followers/monferno.pal | 19 ++++++++++++++++++ .../palettes/followers/mothim.pal | 19 ++++++++++++++++++ .../palettes/followers/munchlax.pal | 19 ++++++++++++++++++ .../palettes/followers/nidorino.pal | 19 ++++++++++++++++++ .../palettes/followers/oddish.pal | 19 ++++++++++++++++++ .../object_events/palettes/followers/onix.pal | 19 ++++++++++++++++++ .../palettes/followers/pachirisu.pal | 19 ++++++++++++++++++ .../palettes/followers/palkia.pal | 19 ++++++++++++++++++ .../palettes/followers/parasect.pal | 19 ++++++++++++++++++ .../palettes/followers/phione.pal | 19 ++++++++++++++++++ .../palettes/followers/piplup.pal | 19 ++++++++++++++++++ .../palettes/followers/plusle.pal | 19 ++++++++++++++++++ .../palettes/followers/poliwrath.pal | 19 ++++++++++++++++++ .../palettes/followers/porygonz.pal | 19 ++++++++++++++++++ .../palettes/followers/prinplup.pal | 19 ++++++++++++++++++ .../palettes/followers/probopass.pal | 19 ++++++++++++++++++ .../palettes/followers/psyduck.pal | 19 ++++++++++++++++++ .../palettes/followers/pupitar.pal | 19 ++++++++++++++++++ .../palettes/followers/purugly.pal | 19 ++++++++++++++++++ .../palettes/followers/ralts.pal | 19 ++++++++++++++++++ .../palettes/followers/rampardos.pal | 19 ++++++++++++++++++ .../palettes/followers/rapidash.pal | 19 ++++++++++++++++++ .../palettes/followers/regigigas.pal | 19 ++++++++++++++++++ .../palettes/followers/rhyhorn.pal | 19 ++++++++++++++++++ .../palettes/followers/rhyperior.pal | 19 ++++++++++++++++++ .../palettes/followers/riolu.pal | 19 ++++++++++++++++++ .../palettes/followers/roserade.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_base.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_fan.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_frost.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_heat.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_mow.pal | 19 ++++++++++++++++++ .../palettes/followers/rotom_wash.pal | 19 ++++++++++++++++++ .../palettes/followers/shaymin_land.pal | 19 ++++++++++++++++++ .../palettes/followers/shaymin_sky.pal | 19 ++++++++++++++++++ .../palettes/followers/shellos_east.pal | 19 ++++++++++++++++++ .../palettes/followers/shellos_west.pal | 19 ++++++++++++++++++ .../palettes/followers/shieldon.pal | 19 ++++++++++++++++++ .../palettes/followers/shinx.pal | 19 ++++++++++++++++++ .../palettes/followers/shuppet.pal | 19 ++++++++++++++++++ .../palettes/followers/silcoon.pal | 19 ++++++++++++++++++ .../palettes/followers/skitty.pal | 19 ++++++++++++++++++ .../palettes/followers/skorupi.pal | 19 ++++++++++++++++++ .../palettes/followers/skuntank.pal | 19 ++++++++++++++++++ .../palettes/followers/slugma.pal | 19 ++++++++++++++++++ .../palettes/followers/snover.pal | 19 ++++++++++++++++++ .../palettes/followers/spiritomb.pal | 19 ++++++++++++++++++ .../palettes/followers/staraptor.pal | 19 ++++++++++++++++++ .../palettes/followers/staravia.pal | 19 ++++++++++++++++++ .../palettes/followers/starly.pal | 19 ++++++++++++++++++ .../palettes/followers/staryu.pal | 19 ++++++++++++++++++ .../palettes/followers/steelix.pal | 19 ++++++++++++++++++ .../palettes/followers/stunky.pal | 19 ++++++++++++++++++ .../palettes/followers/swablu.pal | 19 ++++++++++++++++++ .../palettes/followers/tangrowth.pal | 19 ++++++++++++++++++ .../palettes/followers/togekiss.pal | 19 ++++++++++++++++++ .../palettes/followers/togetic.pal | 19 ++++++++++++++++++ .../palettes/followers/torchic.pal | 19 ++++++++++++++++++ .../palettes/followers/torterra.pal | 19 ++++++++++++++++++ .../palettes/followers/toxicroak.pal | 19 ++++++++++++++++++ .../palettes/followers/turtwig.pal | 19 ++++++++++++++++++ .../palettes/followers/unown.pal | 19 ++++++++++++++++++ .../object_events/palettes/followers/uxie.pal | 19 ++++++++++++++++++ .../palettes/followers/vespiquen.pal | 19 ++++++++++++++++++ .../palettes/followers/vileplume.pal | 19 ++++++++++++++++++ .../palettes/followers/weavile.pal | 19 ++++++++++++++++++ .../palettes/followers/weezing.pal | 19 ++++++++++++++++++ .../palettes/followers/wooper.pal | 19 ++++++++++++++++++ .../palettes/followers/wormadam.pal | 19 ++++++++++++++++++ .../palettes/followers/wormadam_sand.pal | 19 ++++++++++++++++++ .../palettes/followers/wormadam_trash.pal | 19 ++++++++++++++++++ .../palettes/followers/yanmega.pal | 19 ++++++++++++++++++ .../palettes/followers/zubat.pal | 19 ++++++++++++++++++ .../pics/pokemon/followers/abomasnow.png | Bin 0 -> 1052 bytes .../pics/pokemon/followers/ambipom.png | Bin 0 -> 1175 bytes .../pics/pokemon/followers/arceus.png | Bin 0 -> 1399 bytes .../pics/pokemon/followers/azelf.png | Bin 0 -> 767 bytes .../pics/pokemon/followers/bastiodon.png | Bin 0 -> 829 bytes .../pics/pokemon/followers/bibarel.png | Bin 0 -> 853 bytes .../pics/pokemon/followers/bidoof.png | Bin 0 -> 541 bytes .../pics/pokemon/followers/bonsly.png | Bin 0 -> 454 bytes .../pics/pokemon/followers/bronzong.png | Bin 0 -> 696 bytes .../pics/pokemon/followers/bronzor.png | Bin 0 -> 371 bytes .../pics/pokemon/followers/budew.png | Bin 0 -> 421 bytes .../pics/pokemon/followers/buizel.png | Bin 0 -> 719 bytes .../pics/pokemon/followers/buneary.png | Bin 0 -> 675 bytes .../pics/pokemon/followers/burmy.png | Bin 0 -> 552 bytes .../pics/pokemon/followers/burmy_sand.png | Bin 0 -> 504 bytes .../pics/pokemon/followers/burmy_trash.png | Bin 0 -> 505 bytes .../pics/pokemon/followers/carnivine.png | Bin 0 -> 759 bytes .../pics/pokemon/followers/chatot.png | Bin 0 -> 557 bytes .../pics/pokemon/followers/cherrim.png | Bin 0 -> 475 bytes .../pics/pokemon/followers/cherubi.png | Bin 0 -> 578 bytes .../pics/pokemon/followers/chimchar.png | Bin 0 -> 634 bytes .../pics/pokemon/followers/chingling.png | Bin 0 -> 554 bytes .../pics/pokemon/followers/combee.png | Bin 0 -> 527 bytes .../pics/pokemon/followers/cranidos.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/cresselia.png | Bin 0 -> 972 bytes .../pics/pokemon/followers/croagunk.png | Bin 0 -> 555 bytes .../pics/pokemon/followers/darkrai.png | Bin 0 -> 1058 bytes .../pics/pokemon/followers/dialga.png | Bin 0 -> 1686 bytes .../pics/pokemon/followers/drapion.png | Bin 0 -> 1059 bytes .../pics/pokemon/followers/drifblim.png | Bin 0 -> 611 bytes .../pics/pokemon/followers/drifloon.png | Bin 0 -> 411 bytes .../pics/pokemon/followers/dusknoir.png | Bin 0 -> 938 bytes .../pics/pokemon/followers/electivire.png | Bin 0 -> 1021 bytes .../pics/pokemon/followers/empoleon.png | Bin 0 -> 824 bytes .../pics/pokemon/followers/finneon.png | Bin 0 -> 595 bytes .../pics/pokemon/followers/floatzel.png | Bin 0 -> 928 bytes .../pics/pokemon/followers/froslass.png | Bin 0 -> 773 bytes .../pics/pokemon/followers/gabite.png | Bin 0 -> 799 bytes .../pics/pokemon/followers/gallade.png | Bin 0 -> 823 bytes .../pics/pokemon/followers/garchomp.png | Bin 0 -> 1162 bytes .../pics/pokemon/followers/gastrodon_east.png | Bin 0 -> 887 bytes .../pics/pokemon/followers/gastrodon_west.png | Bin 0 -> 896 bytes .../pics/pokemon/followers/gible.png | Bin 0 -> 615 bytes .../pokemon/followers/giratina_normal.png | Bin 0 -> 2291 bytes .../pokemon/followers/giratina_origin.png | Bin 0 -> 2017 bytes .../pics/pokemon/followers/glaceon.png | Bin 0 -> 729 bytes .../pics/pokemon/followers/glameow.png | Bin 0 -> 556 bytes .../pics/pokemon/followers/gliscor.png | Bin 0 -> 993 bytes .../pics/pokemon/followers/grotle.png | Bin 0 -> 689 bytes .../pics/pokemon/followers/happiny.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/heatran.png | Bin 0 -> 1128 bytes .../pics/pokemon/followers/hippopotas.png | Bin 0 -> 662 bytes .../pics/pokemon/followers/hippowdon.png | Bin 0 -> 739 bytes .../pics/pokemon/followers/honchkrow.png | Bin 0 -> 727 bytes .../pics/pokemon/followers/infernape.png | Bin 0 -> 1108 bytes .../pics/pokemon/followers/kricketot.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/kricketune.png | Bin 0 -> 847 bytes .../pics/pokemon/followers/leafeon.png | Bin 0 -> 741 bytes .../pics/pokemon/followers/lickilicky.png | Bin 0 -> 711 bytes .../pics/pokemon/followers/lopunny.png | Bin 0 -> 797 bytes .../pics/pokemon/followers/lucario.png | Bin 0 -> 787 bytes .../pics/pokemon/followers/lumineon.png | Bin 0 -> 763 bytes .../pics/pokemon/followers/luxio.png | Bin 0 -> 744 bytes .../pics/pokemon/followers/luxray.png | Bin 0 -> 796 bytes .../pics/pokemon/followers/magmortar.png | Bin 0 -> 1083 bytes .../pics/pokemon/followers/magnezone.png | Bin 0 -> 756 bytes .../pics/pokemon/followers/mamoswine.png | Bin 0 -> 880 bytes .../pics/pokemon/followers/manaphy.png | Bin 0 -> 553 bytes .../pics/pokemon/followers/mantyke.png | Bin 0 -> 644 bytes .../pics/pokemon/followers/mesprit.png | Bin 0 -> 803 bytes .../pics/pokemon/followers/mime_jr.png | Bin 0 -> 524 bytes .../pics/pokemon/followers/mismagius.png | Bin 0 -> 929 bytes .../pics/pokemon/followers/monferno.png | Bin 0 -> 809 bytes .../pics/pokemon/followers/mothim.png | Bin 0 -> 999 bytes .../pics/pokemon/followers/munchlax.png | Bin 0 -> 589 bytes .../pics/pokemon/followers/pachirisu.png | Bin 0 -> 532 bytes .../pics/pokemon/followers/palkia.png | Bin 0 -> 2116 bytes .../pics/pokemon/followers/phione.png | Bin 0 -> 569 bytes .../pics/pokemon/followers/piplup.png | Bin 0 -> 477 bytes .../pics/pokemon/followers/porygonz.png | Bin 0 -> 647 bytes .../pics/pokemon/followers/prinplup.png | Bin 0 -> 681 bytes .../pics/pokemon/followers/probopass.png | Bin 0 -> 1012 bytes .../pics/pokemon/followers/purugly.png | Bin 0 -> 765 bytes .../pics/pokemon/followers/rampardos.png | Bin 0 -> 904 bytes .../pics/pokemon/followers/regigigas.png | Bin 0 -> 1836 bytes .../pics/pokemon/followers/rhyperior.png | Bin 0 -> 994 bytes .../pics/pokemon/followers/riolu.png | Bin 0 -> 618 bytes .../pics/pokemon/followers/roserade.png | Bin 0 -> 956 bytes .../pics/pokemon/followers/rotom_base.png | Bin 0 -> 545 bytes .../pics/pokemon/followers/rotom_fan.png | Bin 0 -> 695 bytes .../pics/pokemon/followers/rotom_frost.png | Bin 0 -> 619 bytes .../pics/pokemon/followers/rotom_heat.png | Bin 0 -> 563 bytes .../pics/pokemon/followers/rotom_mow.png | Bin 0 -> 754 bytes .../pics/pokemon/followers/rotom_wash.png | Bin 0 -> 845 bytes .../pics/pokemon/followers/shaymin_land.png | Bin 0 -> 485 bytes .../pics/pokemon/followers/shaymin_sky.png | Bin 0 -> 1030 bytes .../pics/pokemon/followers/shellos_east.png | Bin 0 -> 603 bytes .../pics/pokemon/followers/shellos_west.png | Bin 0 -> 583 bytes .../pics/pokemon/followers/shieldon.png | Bin 0 -> 566 bytes .../pics/pokemon/followers/shinx.png | Bin 0 -> 567 bytes .../pics/pokemon/followers/skorupi.png | Bin 0 -> 686 bytes .../pics/pokemon/followers/skuntank.png | Bin 0 -> 752 bytes .../pics/pokemon/followers/snover.png | Bin 0 -> 750 bytes .../pics/pokemon/followers/spiritomb.png | Bin 0 -> 804 bytes .../pics/pokemon/followers/staraptor.png | Bin 0 -> 1180 bytes .../pics/pokemon/followers/staravia.png | Bin 0 -> 985 bytes .../pics/pokemon/followers/starly.png | Bin 0 -> 479 bytes .../pics/pokemon/followers/stunky.png | Bin 0 -> 597 bytes .../pics/pokemon/followers/tangrowth.png | Bin 0 -> 1042 bytes .../pics/pokemon/followers/togekiss.png | Bin 0 -> 733 bytes .../pics/pokemon/followers/torterra.png | Bin 0 -> 1245 bytes .../pics/pokemon/followers/toxicroak.png | Bin 0 -> 665 bytes .../pics/pokemon/followers/turtwig.png | Bin 0 -> 534 bytes .../pics/pokemon/followers/uxie.png | Bin 0 -> 770 bytes .../pics/pokemon/followers/vespiquen.png | Bin 0 -> 883 bytes .../pics/pokemon/followers/weavile.png | Bin 0 -> 663 bytes .../pics/pokemon/followers/wormadam.png | Bin 0 -> 703 bytes .../pics/pokemon/followers/wormadam_sand.png | Bin 0 -> 705 bytes .../pics/pokemon/followers/wormadam_trash.png | Bin 0 -> 731 bytes .../pics/pokemon/followers/yanmega.png | Bin 0 -> 1089 bytes spritesheet_rules.mk | 4 +++- src/event_object_movement.c | 3 +++ 311 files changed, 3579 insertions(+), 2 deletions(-) create mode 100644 graphics/object_events/palettes/followers/abomasnow.pal create mode 100644 graphics/object_events/palettes/followers/abra.pal create mode 100644 graphics/object_events/palettes/followers/alakazam.pal create mode 100644 graphics/object_events/palettes/followers/ambipom.pal create mode 100644 graphics/object_events/palettes/followers/arceus_bug.pal create mode 100644 graphics/object_events/palettes/followers/arceus_dark.pal create mode 100644 graphics/object_events/palettes/followers/arceus_dragon.pal create mode 100644 graphics/object_events/palettes/followers/arceus_electric.pal create mode 100644 graphics/object_events/palettes/followers/arceus_fighting.pal create mode 100644 graphics/object_events/palettes/followers/arceus_fire.pal create mode 100644 graphics/object_events/palettes/followers/arceus_flying.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ghost.pal create mode 100644 graphics/object_events/palettes/followers/arceus_grass.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ground.pal create mode 100644 graphics/object_events/palettes/followers/arceus_ice.pal create mode 100644 graphics/object_events/palettes/followers/arceus_normal.pal create mode 100644 graphics/object_events/palettes/followers/arceus_poison.pal create mode 100644 graphics/object_events/palettes/followers/arceus_psychic.pal create mode 100644 graphics/object_events/palettes/followers/arceus_rock.pal create mode 100644 graphics/object_events/palettes/followers/arceus_steel.pal create mode 100644 graphics/object_events/palettes/followers/arceus_water.pal create mode 100644 graphics/object_events/palettes/followers/aron.pal create mode 100644 graphics/object_events/palettes/followers/azelf.pal create mode 100644 graphics/object_events/palettes/followers/bastiodon.pal create mode 100644 graphics/object_events/palettes/followers/bellsprout.pal create mode 100644 graphics/object_events/palettes/followers/bibarel.pal create mode 100644 graphics/object_events/palettes/followers/bidoof.pal create mode 100644 graphics/object_events/palettes/followers/bonsly.pal create mode 100644 graphics/object_events/palettes/followers/bronzong.pal create mode 100644 graphics/object_events/palettes/followers/bronzor.pal create mode 100644 graphics/object_events/palettes/followers/budew.pal create mode 100644 graphics/object_events/palettes/followers/buizel.pal create mode 100644 graphics/object_events/palettes/followers/buneary.pal create mode 100644 graphics/object_events/palettes/followers/burmy.pal create mode 100644 graphics/object_events/palettes/followers/burmy_sand.pal create mode 100644 graphics/object_events/palettes/followers/burmy_trash.pal create mode 100644 graphics/object_events/palettes/followers/cacturne.pal create mode 100644 graphics/object_events/palettes/followers/carnivine.pal create mode 100644 graphics/object_events/palettes/followers/castform.pal create mode 100644 graphics/object_events/palettes/followers/chatot.pal create mode 100644 graphics/object_events/palettes/followers/cherrim.pal create mode 100644 graphics/object_events/palettes/followers/cherubi.pal create mode 100644 graphics/object_events/palettes/followers/chikorita.pal create mode 100644 graphics/object_events/palettes/followers/chimchar.pal create mode 100644 graphics/object_events/palettes/followers/chingling.pal create mode 100644 graphics/object_events/palettes/followers/clefairy.pal create mode 100644 graphics/object_events/palettes/followers/combee.pal create mode 100644 graphics/object_events/palettes/followers/cranidos.pal create mode 100644 graphics/object_events/palettes/followers/cresselia.pal create mode 100644 graphics/object_events/palettes/followers/croagunk.pal create mode 100644 graphics/object_events/palettes/followers/darkrai.pal create mode 100644 graphics/object_events/palettes/followers/dewgong.pal create mode 100644 graphics/object_events/palettes/followers/dialga.pal create mode 100644 graphics/object_events/palettes/followers/ditto.pal create mode 100644 graphics/object_events/palettes/followers/drapion.pal create mode 100644 graphics/object_events/palettes/followers/drifblim.pal create mode 100644 graphics/object_events/palettes/followers/drifloon.pal create mode 100644 graphics/object_events/palettes/followers/drowzee.pal create mode 100644 graphics/object_events/palettes/followers/dusknoir.pal create mode 100644 graphics/object_events/palettes/followers/electabuzz.pal create mode 100644 graphics/object_events/palettes/followers/electivire.pal create mode 100644 graphics/object_events/palettes/followers/electrode.pal create mode 100644 graphics/object_events/palettes/followers/empoleon.pal create mode 100644 graphics/object_events/palettes/followers/finneon.pal create mode 100644 graphics/object_events/palettes/followers/floatzel.pal create mode 100644 graphics/object_events/palettes/followers/froslass.pal create mode 100644 graphics/object_events/palettes/followers/gabite.pal create mode 100644 graphics/object_events/palettes/followers/gallade.pal create mode 100644 graphics/object_events/palettes/followers/garchomp.pal create mode 100644 graphics/object_events/palettes/followers/gastrodon_east.pal create mode 100644 graphics/object_events/palettes/followers/gastrodon_west.pal create mode 100644 graphics/object_events/palettes/followers/geodude.pal create mode 100644 graphics/object_events/palettes/followers/gible.pal create mode 100644 graphics/object_events/palettes/followers/giratina_normal.pal create mode 100644 graphics/object_events/palettes/followers/giratina_origin.pal create mode 100644 graphics/object_events/palettes/followers/glaceon.pal create mode 100644 graphics/object_events/palettes/followers/glameow.pal create mode 100644 graphics/object_events/palettes/followers/gliscor.pal create mode 100644 graphics/object_events/palettes/followers/grimer.pal create mode 100644 graphics/object_events/palettes/followers/grotle.pal create mode 100644 graphics/object_events/palettes/followers/growlithe.pal create mode 100644 graphics/object_events/palettes/followers/happiny.pal create mode 100644 graphics/object_events/palettes/followers/heatran.pal create mode 100644 graphics/object_events/palettes/followers/hippopotas.pal create mode 100644 graphics/object_events/palettes/followers/hippowdon.pal create mode 100644 graphics/object_events/palettes/followers/honchkrow.pal create mode 100644 graphics/object_events/palettes/followers/houndour.pal create mode 100644 graphics/object_events/palettes/followers/infernape.pal create mode 100644 graphics/object_events/palettes/followers/kakuna.pal create mode 100644 graphics/object_events/palettes/followers/kirlia.pal create mode 100644 graphics/object_events/palettes/followers/krabby.pal create mode 100644 graphics/object_events/palettes/followers/kricketot.pal create mode 100644 graphics/object_events/palettes/followers/kricketune.pal create mode 100644 graphics/object_events/palettes/followers/leafeon.pal create mode 100644 graphics/object_events/palettes/followers/lickilicky.pal create mode 100644 graphics/object_events/palettes/followers/lopunny.pal create mode 100644 graphics/object_events/palettes/followers/loudred.pal create mode 100644 graphics/object_events/palettes/followers/lucario.pal create mode 100644 graphics/object_events/palettes/followers/lumineon.pal create mode 100644 graphics/object_events/palettes/followers/lunatone.pal create mode 100644 graphics/object_events/palettes/followers/luxio.pal create mode 100644 graphics/object_events/palettes/followers/luxray.pal create mode 100644 graphics/object_events/palettes/followers/magmortar.pal create mode 100644 graphics/object_events/palettes/followers/magneton.pal create mode 100644 graphics/object_events/palettes/followers/magnezone.pal create mode 100644 graphics/object_events/palettes/followers/mamoswine.pal create mode 100644 graphics/object_events/palettes/followers/manaphy.pal create mode 100644 graphics/object_events/palettes/followers/mantyke.pal create mode 100644 graphics/object_events/palettes/followers/marill.pal create mode 100644 graphics/object_events/palettes/followers/marowak.pal create mode 100644 graphics/object_events/palettes/followers/mesprit.pal create mode 100644 graphics/object_events/palettes/followers/metagross.pal create mode 100644 graphics/object_events/palettes/followers/metapod.pal create mode 100644 graphics/object_events/palettes/followers/mime_jr.pal create mode 100644 graphics/object_events/palettes/followers/mismagius.pal create mode 100644 graphics/object_events/palettes/followers/monferno.pal create mode 100644 graphics/object_events/palettes/followers/mothim.pal create mode 100644 graphics/object_events/palettes/followers/munchlax.pal create mode 100644 graphics/object_events/palettes/followers/nidorino.pal create mode 100644 graphics/object_events/palettes/followers/oddish.pal create mode 100644 graphics/object_events/palettes/followers/onix.pal create mode 100644 graphics/object_events/palettes/followers/pachirisu.pal create mode 100644 graphics/object_events/palettes/followers/palkia.pal create mode 100644 graphics/object_events/palettes/followers/parasect.pal create mode 100644 graphics/object_events/palettes/followers/phione.pal create mode 100644 graphics/object_events/palettes/followers/piplup.pal create mode 100644 graphics/object_events/palettes/followers/plusle.pal create mode 100644 graphics/object_events/palettes/followers/poliwrath.pal create mode 100644 graphics/object_events/palettes/followers/porygonz.pal create mode 100644 graphics/object_events/palettes/followers/prinplup.pal create mode 100644 graphics/object_events/palettes/followers/probopass.pal create mode 100644 graphics/object_events/palettes/followers/psyduck.pal create mode 100644 graphics/object_events/palettes/followers/pupitar.pal create mode 100644 graphics/object_events/palettes/followers/purugly.pal create mode 100644 graphics/object_events/palettes/followers/ralts.pal create mode 100644 graphics/object_events/palettes/followers/rampardos.pal create mode 100644 graphics/object_events/palettes/followers/rapidash.pal create mode 100644 graphics/object_events/palettes/followers/regigigas.pal create mode 100644 graphics/object_events/palettes/followers/rhyhorn.pal create mode 100644 graphics/object_events/palettes/followers/rhyperior.pal create mode 100644 graphics/object_events/palettes/followers/riolu.pal create mode 100644 graphics/object_events/palettes/followers/roserade.pal create mode 100644 graphics/object_events/palettes/followers/rotom_base.pal create mode 100644 graphics/object_events/palettes/followers/rotom_fan.pal create mode 100644 graphics/object_events/palettes/followers/rotom_frost.pal create mode 100644 graphics/object_events/palettes/followers/rotom_heat.pal create mode 100644 graphics/object_events/palettes/followers/rotom_mow.pal create mode 100644 graphics/object_events/palettes/followers/rotom_wash.pal create mode 100644 graphics/object_events/palettes/followers/shaymin_land.pal create mode 100644 graphics/object_events/palettes/followers/shaymin_sky.pal create mode 100644 graphics/object_events/palettes/followers/shellos_east.pal create mode 100644 graphics/object_events/palettes/followers/shellos_west.pal create mode 100644 graphics/object_events/palettes/followers/shieldon.pal create mode 100644 graphics/object_events/palettes/followers/shinx.pal create mode 100644 graphics/object_events/palettes/followers/shuppet.pal create mode 100644 graphics/object_events/palettes/followers/silcoon.pal create mode 100644 graphics/object_events/palettes/followers/skitty.pal create mode 100644 graphics/object_events/palettes/followers/skorupi.pal create mode 100644 graphics/object_events/palettes/followers/skuntank.pal create mode 100644 graphics/object_events/palettes/followers/slugma.pal create mode 100644 graphics/object_events/palettes/followers/snover.pal create mode 100644 graphics/object_events/palettes/followers/spiritomb.pal create mode 100644 graphics/object_events/palettes/followers/staraptor.pal create mode 100644 graphics/object_events/palettes/followers/staravia.pal create mode 100644 graphics/object_events/palettes/followers/starly.pal create mode 100644 graphics/object_events/palettes/followers/staryu.pal create mode 100644 graphics/object_events/palettes/followers/steelix.pal create mode 100644 graphics/object_events/palettes/followers/stunky.pal create mode 100644 graphics/object_events/palettes/followers/swablu.pal create mode 100644 graphics/object_events/palettes/followers/tangrowth.pal create mode 100644 graphics/object_events/palettes/followers/togekiss.pal create mode 100644 graphics/object_events/palettes/followers/togetic.pal create mode 100644 graphics/object_events/palettes/followers/torchic.pal create mode 100644 graphics/object_events/palettes/followers/torterra.pal create mode 100644 graphics/object_events/palettes/followers/toxicroak.pal create mode 100644 graphics/object_events/palettes/followers/turtwig.pal create mode 100644 graphics/object_events/palettes/followers/unown.pal create mode 100644 graphics/object_events/palettes/followers/uxie.pal create mode 100644 graphics/object_events/palettes/followers/vespiquen.pal create mode 100644 graphics/object_events/palettes/followers/vileplume.pal create mode 100644 graphics/object_events/palettes/followers/weavile.pal create mode 100644 graphics/object_events/palettes/followers/weezing.pal create mode 100644 graphics/object_events/palettes/followers/wooper.pal create mode 100644 graphics/object_events/palettes/followers/wormadam.pal create mode 100644 graphics/object_events/palettes/followers/wormadam_sand.pal create mode 100644 graphics/object_events/palettes/followers/wormadam_trash.pal create mode 100644 graphics/object_events/palettes/followers/yanmega.pal create mode 100644 graphics/object_events/palettes/followers/zubat.pal create mode 100644 graphics/object_events/pics/pokemon/followers/abomasnow.png create mode 100644 graphics/object_events/pics/pokemon/followers/ambipom.png create mode 100644 graphics/object_events/pics/pokemon/followers/arceus.png create mode 100644 graphics/object_events/pics/pokemon/followers/azelf.png create mode 100644 graphics/object_events/pics/pokemon/followers/bastiodon.png create mode 100644 graphics/object_events/pics/pokemon/followers/bibarel.png create mode 100644 graphics/object_events/pics/pokemon/followers/bidoof.png create mode 100644 graphics/object_events/pics/pokemon/followers/bonsly.png create mode 100644 graphics/object_events/pics/pokemon/followers/bronzong.png create mode 100644 graphics/object_events/pics/pokemon/followers/bronzor.png create mode 100644 graphics/object_events/pics/pokemon/followers/budew.png create mode 100644 graphics/object_events/pics/pokemon/followers/buizel.png create mode 100644 graphics/object_events/pics/pokemon/followers/buneary.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy_sand.png create mode 100644 graphics/object_events/pics/pokemon/followers/burmy_trash.png create mode 100644 graphics/object_events/pics/pokemon/followers/carnivine.png create mode 100644 graphics/object_events/pics/pokemon/followers/chatot.png create mode 100644 graphics/object_events/pics/pokemon/followers/cherrim.png create mode 100644 graphics/object_events/pics/pokemon/followers/cherubi.png create mode 100644 graphics/object_events/pics/pokemon/followers/chimchar.png create mode 100644 graphics/object_events/pics/pokemon/followers/chingling.png create mode 100644 graphics/object_events/pics/pokemon/followers/combee.png create mode 100644 graphics/object_events/pics/pokemon/followers/cranidos.png create mode 100644 graphics/object_events/pics/pokemon/followers/cresselia.png create mode 100644 graphics/object_events/pics/pokemon/followers/croagunk.png create mode 100644 graphics/object_events/pics/pokemon/followers/darkrai.png create mode 100644 graphics/object_events/pics/pokemon/followers/dialga.png create mode 100644 graphics/object_events/pics/pokemon/followers/drapion.png create mode 100644 graphics/object_events/pics/pokemon/followers/drifblim.png create mode 100644 graphics/object_events/pics/pokemon/followers/drifloon.png create mode 100644 graphics/object_events/pics/pokemon/followers/dusknoir.png create mode 100644 graphics/object_events/pics/pokemon/followers/electivire.png create mode 100644 graphics/object_events/pics/pokemon/followers/empoleon.png create mode 100644 graphics/object_events/pics/pokemon/followers/finneon.png create mode 100644 graphics/object_events/pics/pokemon/followers/floatzel.png create mode 100644 graphics/object_events/pics/pokemon/followers/froslass.png create mode 100644 graphics/object_events/pics/pokemon/followers/gabite.png create mode 100644 graphics/object_events/pics/pokemon/followers/gallade.png create mode 100644 graphics/object_events/pics/pokemon/followers/garchomp.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_east.png create mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_west.png create mode 100644 graphics/object_events/pics/pokemon/followers/gible.png create mode 100644 graphics/object_events/pics/pokemon/followers/giratina_normal.png create mode 100644 graphics/object_events/pics/pokemon/followers/giratina_origin.png create mode 100644 graphics/object_events/pics/pokemon/followers/glaceon.png create mode 100644 graphics/object_events/pics/pokemon/followers/glameow.png create mode 100644 graphics/object_events/pics/pokemon/followers/gliscor.png create mode 100644 graphics/object_events/pics/pokemon/followers/grotle.png create mode 100644 graphics/object_events/pics/pokemon/followers/happiny.png create mode 100644 graphics/object_events/pics/pokemon/followers/heatran.png create mode 100644 graphics/object_events/pics/pokemon/followers/hippopotas.png create mode 100644 graphics/object_events/pics/pokemon/followers/hippowdon.png create mode 100644 graphics/object_events/pics/pokemon/followers/honchkrow.png create mode 100644 graphics/object_events/pics/pokemon/followers/infernape.png create mode 100644 graphics/object_events/pics/pokemon/followers/kricketot.png create mode 100644 graphics/object_events/pics/pokemon/followers/kricketune.png create mode 100644 graphics/object_events/pics/pokemon/followers/leafeon.png create mode 100644 graphics/object_events/pics/pokemon/followers/lickilicky.png create mode 100644 graphics/object_events/pics/pokemon/followers/lopunny.png create mode 100644 graphics/object_events/pics/pokemon/followers/lucario.png create mode 100644 graphics/object_events/pics/pokemon/followers/lumineon.png create mode 100644 graphics/object_events/pics/pokemon/followers/luxio.png create mode 100644 graphics/object_events/pics/pokemon/followers/luxray.png create mode 100644 graphics/object_events/pics/pokemon/followers/magmortar.png create mode 100644 graphics/object_events/pics/pokemon/followers/magnezone.png create mode 100644 graphics/object_events/pics/pokemon/followers/mamoswine.png create mode 100644 graphics/object_events/pics/pokemon/followers/manaphy.png create mode 100644 graphics/object_events/pics/pokemon/followers/mantyke.png create mode 100644 graphics/object_events/pics/pokemon/followers/mesprit.png create mode 100644 graphics/object_events/pics/pokemon/followers/mime_jr.png create mode 100644 graphics/object_events/pics/pokemon/followers/mismagius.png create mode 100644 graphics/object_events/pics/pokemon/followers/monferno.png create mode 100644 graphics/object_events/pics/pokemon/followers/mothim.png create mode 100644 graphics/object_events/pics/pokemon/followers/munchlax.png create mode 100644 graphics/object_events/pics/pokemon/followers/pachirisu.png create mode 100644 graphics/object_events/pics/pokemon/followers/palkia.png create mode 100644 graphics/object_events/pics/pokemon/followers/phione.png create mode 100644 graphics/object_events/pics/pokemon/followers/piplup.png create mode 100644 graphics/object_events/pics/pokemon/followers/porygonz.png create mode 100644 graphics/object_events/pics/pokemon/followers/prinplup.png create mode 100644 graphics/object_events/pics/pokemon/followers/probopass.png create mode 100644 graphics/object_events/pics/pokemon/followers/purugly.png create mode 100644 graphics/object_events/pics/pokemon/followers/rampardos.png create mode 100644 graphics/object_events/pics/pokemon/followers/regigigas.png create mode 100644 graphics/object_events/pics/pokemon/followers/rhyperior.png create mode 100644 graphics/object_events/pics/pokemon/followers/riolu.png create mode 100644 graphics/object_events/pics/pokemon/followers/roserade.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_base.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_fan.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_frost.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_heat.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_mow.png create mode 100644 graphics/object_events/pics/pokemon/followers/rotom_wash.png create mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_land.png create mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_sky.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellos_east.png create mode 100644 graphics/object_events/pics/pokemon/followers/shellos_west.png create mode 100644 graphics/object_events/pics/pokemon/followers/shieldon.png create mode 100644 graphics/object_events/pics/pokemon/followers/shinx.png create mode 100644 graphics/object_events/pics/pokemon/followers/skorupi.png create mode 100644 graphics/object_events/pics/pokemon/followers/skuntank.png create mode 100644 graphics/object_events/pics/pokemon/followers/snover.png create mode 100644 graphics/object_events/pics/pokemon/followers/spiritomb.png create mode 100644 graphics/object_events/pics/pokemon/followers/staraptor.png create mode 100644 graphics/object_events/pics/pokemon/followers/staravia.png create mode 100644 graphics/object_events/pics/pokemon/followers/starly.png create mode 100644 graphics/object_events/pics/pokemon/followers/stunky.png create mode 100644 graphics/object_events/pics/pokemon/followers/tangrowth.png create mode 100644 graphics/object_events/pics/pokemon/followers/togekiss.png create mode 100644 graphics/object_events/pics/pokemon/followers/torterra.png create mode 100644 graphics/object_events/pics/pokemon/followers/toxicroak.png create mode 100644 graphics/object_events/pics/pokemon/followers/turtwig.png create mode 100644 graphics/object_events/pics/pokemon/followers/uxie.png create mode 100644 graphics/object_events/pics/pokemon/followers/vespiquen.png create mode 100644 graphics/object_events/pics/pokemon/followers/weavile.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_sand.png create mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_trash.png create mode 100644 graphics/object_events/pics/pokemon/followers/yanmega.png diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index efa55aabb..e86635090 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -141,7 +141,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 addobject 7 - hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB + hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB setfollower 7, 0x7E updatefollowerpokemongraphic releaseall diff --git a/graphics/object_events/palettes/followers/abomasnow.pal b/graphics/object_events/palettes/followers/abomasnow.pal new file mode 100644 index 000000000..ddb58d170 --- /dev/null +++ b/graphics/object_events/palettes/followers/abomasnow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 65 +193 137 209 +121 121 153 +185 193 209 +49 73 57 +1 1 1 +217 217 233 +49 153 73 +161 169 201 +81 81 81 +233 233 249 +145 121 153 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/abra.pal b/graphics/object_events/palettes/followers/abra.pal new file mode 100644 index 000000000..dd409648b --- /dev/null +++ b/graphics/object_events/palettes/followers/abra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +1 1 1 +73 57 25 +145 121 97 +249 217 97 +121 97 57 +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/graphics/object_events/palettes/followers/alakazam.pal b/graphics/object_events/palettes/followers/alakazam.pal new file mode 100644 index 000000000..ba8f7100d --- /dev/null +++ b/graphics/object_events/palettes/followers/alakazam.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 169 49 +177 177 185 +105 81 57 +1 1 1 +249 241 193 +145 121 57 +73 57 25 +249 217 97 +233 233 249 +145 121 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ambipom.pal b/graphics/object_events/palettes/followers/ambipom.pal new file mode 100644 index 000000000..c4b6f24dc --- /dev/null +++ b/graphics/object_events/palettes/followers/ambipom.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 97 +217 201 145 +201 73 105 +97 81 65 +169 129 241 +185 201 225 +1 1 1 +153 105 201 +57 49 97 +105 65 153 +233 233 249 +97 97 97 +233 217 161 +201 177 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_bug.pal b/graphics/object_events/palettes/followers/arceus_bug.pal new file mode 100644 index 000000000..5b16119d2 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_bug.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 113 201 +121 129 145 +49 89 41 +145 217 121 +201 209 225 +89 97 113 +249 161 249 +41 97 41 +161 177 201 +113 161 57 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dark.pal b/graphics/object_events/palettes/followers/arceus_dark.pal new file mode 100644 index 000000000..411065d58 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_dark.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +16 136 0 +88 56 56 +32 40 48 +72 80 96 +200 208 224 +56 32 32 +0 142 15 +248 128 3 +160 176 200 +24 40 56 +16 48 64 +64 72 72 +112 120 144 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dragon.pal b/graphics/object_events/palettes/followers/arceus_dragon.pal new file mode 100644 index 000000000..5ba8310c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_dragon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 9 0 +96 136 120 +112 8 128 +176 80 216 +201 209 225 +64 104 88 +0 14 0 +192 128 3 +161 177 201 +144 32 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_electric.pal b/graphics/object_events/palettes/followers/arceus_electric.pal new file mode 100644 index 000000000..a3efd313c --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_electric.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +200 96 0 +136 128 88 +128 112 0 +248 232 88 +201 209 225 +112 96 56 +232 128 0 +192 128 3 +161 177 201 +216 192 56 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fighting.pal b/graphics/object_events/palettes/followers/arceus_fighting.pal new file mode 100644 index 000000000..c81b5a5b1 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_fighting.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +176 112 0 +121 129 145 +104 24 8 +192 88 32 +201 209 225 +89 97 113 +232 176 0 +192 128 3 +161 177 201 +152 56 32 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fire.pal b/graphics/object_events/palettes/followers/arceus_fire.pal new file mode 100644 index 000000000..f8b616e47 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_fire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +200 120 0 +144 96 88 +160 24 16 +240 96 16 +201 209 225 +128 32 32 +248 224 0 +192 128 3 +161 177 201 +208 48 16 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_flying.pal b/graphics/object_events/palettes/followers/arceus_flying.pal new file mode 100644 index 000000000..fceaad45d --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_flying.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +160 160 168 +121 129 145 +72 80 136 +144 152 208 +201 209 225 +89 97 113 +232 240 240 +40 128 152 +161 177 201 +104 112 168 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ghost.pal b/graphics/object_events/palettes/followers/arceus_ghost.pal new file mode 100644 index 000000000..d114a0e09 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ghost.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +160 32 0 +104 80 144 +88 40 144 +160 96 224 +201 209 225 +80 48 136 +232 64 0 +248 248 56 +161 177 201 +120 80 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_grass.pal b/graphics/object_events/palettes/followers/arceus_grass.pal new file mode 100644 index 000000000..410680501 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_grass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +192 176 0 +88 144 112 +40 104 48 +88 200 56 +201 209 225 +56 112 80 +248 224 0 +192 128 3 +161 177 201 +64 152 48 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ground.pal b/graphics/object_events/palettes/followers/arceus_ground.pal new file mode 100644 index 000000000..05cb67bd0 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ground.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 128 144 +136 112 80 +136 64 0 +192 136 56 +201 209 225 +104 88 56 +176 176 192 +192 128 3 +161 177 201 +168 104 24 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ice.pal b/graphics/object_events/palettes/followers/arceus_ice.pal new file mode 100644 index 000000000..ca2c82422 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_ice.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 128 136 +72 136 168 +40 96 128 +160 248 248 +201 209 225 +40 96 128 +224 224 232 +192 128 3 +161 177 201 +120 192 248 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_normal.pal b/graphics/object_events/palettes/followers/arceus_normal.pal new file mode 100644 index 000000000..27bb0d302 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 129 65 +121 129 145 +105 97 25 +233 209 25 +201 209 225 +89 97 113 +57 177 89 +241 65 65 +161 177 201 +177 153 25 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_poison.pal b/graphics/object_events/palettes/followers/arceus_poison.pal new file mode 100644 index 000000000..6822a6e3c --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_poison.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +192 96 208 +121 129 145 +80 24 96 +176 96 184 +201 209 225 +89 97 113 +240 160 232 +192 128 3 +161 177 201 +128 48 144 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_psychic.pal b/graphics/object_events/palettes/followers/arceus_psychic.pal new file mode 100644 index 000000000..ccbce5040 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_psychic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +128 9 0 +121 129 145 +152 0 3 +232 72 112 +201 209 225 +89 97 113 +0 14 0 +192 128 3 +161 177 201 +192 24 72 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_rock.pal b/graphics/object_events/palettes/followers/arceus_rock.pal new file mode 100644 index 000000000..0f0209f19 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_rock.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +176 152 80 +121 129 145 +96 88 48 +144 136 96 +201 209 225 +89 97 113 +216 192 120 +64 80 64 +161 177 201 +112 104 64 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_steel.pal b/graphics/object_events/palettes/followers/arceus_steel.pal new file mode 100644 index 000000000..0720ec239 --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_steel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +168 160 0 +121 129 145 +88 88 96 +192 192 208 +201 209 225 +89 97 113 +232 224 0 +96 104 96 +161 177 201 +128 128 136 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_water.pal b/graphics/object_events/palettes/followers/arceus_water.pal new file mode 100644 index 000000000..7abe36e2f --- /dev/null +++ b/graphics/object_events/palettes/followers/arceus_water.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +48 128 64 +72 112 192 +16 56 112 +24 128 232 +201 209 225 +40 104 136 +56 176 88 +240 64 64 +161 177 201 +16 120 184 +17 17 17 +65 73 73 +113 121 145 +233 233 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/aron.pal b/graphics/object_events/palettes/followers/aron.pal new file mode 100644 index 000000000..9e423f369 --- /dev/null +++ b/graphics/object_events/palettes/followers/aron.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 57 73 +233 233 249 +105 145 201 +89 89 89 +185 185 201 +65 97 129 +49 41 57 +161 161 177 +113 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/azelf.pal b/graphics/object_events/palettes/followers/azelf.pal new file mode 100644 index 000000000..300aab16d --- /dev/null +++ b/graphics/object_events/palettes/followers/azelf.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 33 +113 129 177 +33 65 113 +145 185 209 +169 41 1 +1 1 1 +249 169 153 +49 113 177 +73 73 89 +249 177 17 +233 233 249 +33 89 169 +233 65 33 +177 209 249 +73 129 209 diff --git a/graphics/object_events/palettes/followers/bastiodon.pal b/graphics/object_events/palettes/followers/bastiodon.pal new file mode 100644 index 000000000..7285edf74 --- /dev/null +++ b/graphics/object_events/palettes/followers/bastiodon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 105 73 +121 121 121 +225 169 33 +57 57 57 +1 1 1 +249 185 65 +97 97 97 +193 145 49 +201 201 201 +153 153 153 +73 73 73 +249 185 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bellsprout.pal b/graphics/object_events/palettes/followers/bellsprout.pal new file mode 100644 index 000000000..4084780e4 --- /dev/null +++ b/graphics/object_events/palettes/followers/bellsprout.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +97 153 57 +1 1 1 +81 65 49 +241 121 161 +137 217 81 +169 65 113 +121 9 5 +185 161 49 +241 225 73 +65 89 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bibarel.pal b/graphics/object_events/palettes/followers/bibarel.pal new file mode 100644 index 000000000..8c6e3b227 --- /dev/null +++ b/graphics/object_events/palettes/followers/bibarel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 65 +185 185 193 +1 1 1 +73 57 33 +137 137 137 +193 161 65 +89 81 65 +49 49 49 +233 233 249 +153 25 41 +233 209 129 +201 161 97 +177 137 57 +57 57 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bidoof.pal b/graphics/object_events/palettes/followers/bidoof.pal new file mode 100644 index 000000000..3d8d227c2 --- /dev/null +++ b/graphics/object_events/palettes/followers/bidoof.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 65 +185 185 193 +73 57 33 +1 1 1 +193 161 65 +89 81 65 +153 25 41 +233 233 249 +233 209 129 +201 161 97 +57 57 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bonsly.pal b/graphics/object_events/palettes/followers/bonsly.pal new file mode 100644 index 000000000..50e1d53b2 --- /dev/null +++ b/graphics/object_events/palettes/followers/bonsly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 113 73 +201 169 1 +193 97 161 +25 81 17 +1 1 1 +73 153 65 +89 65 17 +225 193 1 +185 153 89 +121 209 121 +113 89 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzong.pal b/graphics/object_events/palettes/followers/bronzong.pal new file mode 100644 index 000000000..978ed89dc --- /dev/null +++ b/graphics/object_events/palettes/followers/bronzong.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 113 105 +73 161 153 +33 57 49 +153 169 169 +129 49 57 +49 137 129 +49 97 89 +1 1 1 +145 193 201 +97 153 153 +41 73 65 +161 49 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzor.pal b/graphics/object_events/palettes/followers/bronzor.pal new file mode 100644 index 000000000..9db457be9 --- /dev/null +++ b/graphics/object_events/palettes/followers/bronzor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 145 17 +65 121 153 +41 65 65 +1 1 1 +33 81 97 +73 153 193 +233 201 1 +41 97 121 +89 177 209 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/budew.pal b/graphics/object_events/palettes/followers/budew.pal new file mode 100644 index 000000000..381d462e1 --- /dev/null +++ b/graphics/object_events/palettes/followers/budew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 9 +217 209 57 +33 57 17 +145 113 33 +1 1 1 +65 65 65 +145 201 105 +89 145 17 +201 153 17 +169 217 145 +33 81 9 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/buizel.pal b/graphics/object_events/palettes/followers/buizel.pal new file mode 100644 index 000000000..bed60a6b3 --- /dev/null +++ b/graphics/object_events/palettes/followers/buizel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +1 1 1 +161 97 41 +241 225 129 +249 193 33 +65 97 121 +177 193 209 +89 57 49 +73 137 193 +233 233 249 +217 185 73 +201 145 1 +113 113 113 +201 105 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/buneary.pal b/graphics/object_events/palettes/followers/buneary.pal new file mode 100644 index 000000000..1e81873ab --- /dev/null +++ b/graphics/object_events/palettes/followers/buneary.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 65 +233 217 169 +201 161 65 +57 49 33 +97 81 65 +209 121 121 +1 1 1 +145 81 89 +233 233 249 +185 145 89 +233 193 137 +81 81 73 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy.pal b/graphics/object_events/palettes/followers/burmy.pal new file mode 100644 index 000000000..3d8350f7d --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +81 169 25 +41 73 41 +1 1 1 +249 177 1 +49 49 49 +185 121 65 +137 209 57 +97 97 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_sand.pal b/graphics/object_events/palettes/followers/burmy_sand.pal new file mode 100644 index 000000000..b25ba769d --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy_sand.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 177 1 +153 145 97 +201 193 137 +97 81 65 +161 161 161 +49 49 49 +1 1 1 +233 217 137 +97 97 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy_trash.pal b/graphics/object_events/palettes/followers/burmy_trash.pal new file mode 100644 index 000000000..2471c2b33 --- /dev/null +++ b/graphics/object_events/palettes/followers/burmy_trash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 177 1 +97 97 97 +1 1 1 +97 49 65 +137 137 137 +49 49 49 +249 169 169 +169 57 105 +217 121 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cacturne.pal b/graphics/object_events/palettes/followers/cacturne.pal new file mode 100644 index 000000000..09c80452f --- /dev/null +++ b/graphics/object_events/palettes/followers/cacturne.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 137 65 +169 201 121 +41 65 41 +1 1 1 +129 169 65 +57 97 57 +249 217 89 +81 81 81 +105 169 97 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/carnivine.pal b/graphics/object_events/palettes/followers/carnivine.pal new file mode 100644 index 000000000..7eed39a29 --- /dev/null +++ b/graphics/object_events/palettes/followers/carnivine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +177 185 193 +41 73 17 +129 169 65 +81 97 41 +201 153 17 +73 145 25 +145 73 49 +233 233 249 +105 41 41 +1 1 1 +153 201 89 +57 57 57 +137 97 25 +105 137 49 diff --git a/graphics/object_events/palettes/followers/castform.pal b/graphics/object_events/palettes/followers/castform.pal new file mode 100644 index 000000000..057916921 --- /dev/null +++ b/graphics/object_events/palettes/followers/castform.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 145 +193 193 209 +65 65 81 +1 1 1 +233 233 249 +97 97 113 +161 161 177 +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/graphics/object_events/palettes/followers/chatot.pal b/graphics/object_events/palettes/followers/chatot.pal new file mode 100644 index 000000000..c61576eaf --- /dev/null +++ b/graphics/object_events/palettes/followers/chatot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 137 33 +33 129 201 +57 57 57 +129 121 121 +33 81 113 +233 233 249 +161 129 9 +217 129 177 +1 1 1 +145 57 113 +249 169 25 +89 89 89 +153 161 169 +177 57 129 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cherrim.pal b/graphics/object_events/palettes/followers/cherrim.pal new file mode 100644 index 000000000..4c7ecbf5d --- /dev/null +++ b/graphics/object_events/palettes/followers/cherrim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 97 17 +113 65 137 +81 41 57 +81 65 97 +81 153 25 +153 73 193 +185 73 121 +65 41 73 +1 1 1 +129 57 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cherubi.pal b/graphics/object_events/palettes/followers/cherubi.pal new file mode 100644 index 000000000..7aa77baf7 --- /dev/null +++ b/graphics/object_events/palettes/followers/cherubi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +41 73 17 +233 233 249 +129 57 89 +81 41 57 +1 1 1 +225 97 145 +73 153 17 +177 25 97 +185 73 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chikorita.pal b/graphics/object_events/palettes/followers/chikorita.pal new file mode 100644 index 000000000..6f6efef17 --- /dev/null +++ b/graphics/object_events/palettes/followers/chikorita.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 145 41 +169 185 209 +145 193 65 +57 105 17 +1 1 1 +169 41 41 +113 177 81 +233 233 249 +193 217 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/chimchar.pal b/graphics/object_events/palettes/followers/chimchar.pal new file mode 100644 index 000000000..1226c2a99 --- /dev/null +++ b/graphics/object_events/palettes/followers/chimchar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +105 57 41 +1 1 1 +241 57 41 +193 145 73 +193 193 193 +129 81 41 +185 97 17 +249 233 169 +249 193 1 +233 233 249 +217 185 113 +129 17 17 +209 81 65 +161 89 81 diff --git a/graphics/object_events/palettes/followers/chingling.pal b/graphics/object_events/palettes/followers/chingling.pal new file mode 100644 index 000000000..c027c84d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/chingling.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 41 +1 1 1 +65 65 65 +193 201 209 +137 105 33 +249 193 1 +225 233 241 +137 25 25 +249 249 153 +193 57 57 +89 89 89 +249 225 9 +233 233 249 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/clefairy.pal b/graphics/object_events/palettes/followers/clefairy.pal new file mode 100644 index 000000000..e207e246c --- /dev/null +++ b/graphics/object_events/palettes/followers/clefairy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +97 57 65 +233 233 249 +121 89 57 +169 169 169 +161 81 97 +185 105 129 +241 153 169 +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/palettes/followers/combee.pal b/graphics/object_events/palettes/followers/combee.pal new file mode 100644 index 000000000..53ea130b4 --- /dev/null +++ b/graphics/object_events/palettes/followers/combee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 25 +73 65 41 +153 185 233 +89 105 129 +249 217 121 +153 105 17 +1 1 1 +169 89 49 +49 49 49 +233 177 57 +201 217 233 +201 105 41 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cranidos.pal b/graphics/object_events/palettes/followers/cranidos.pal new file mode 100644 index 000000000..7a36c9215 --- /dev/null +++ b/graphics/object_events/palettes/followers/cranidos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +113 113 113 +201 201 201 +57 57 57 +89 129 233 +145 9 3 +1 1 1 +65 89 153 +233 233 249 +49 57 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/cresselia.pal b/graphics/object_events/palettes/followers/cresselia.pal new file mode 100644 index 000000000..549a1ca73 --- /dev/null +++ b/graphics/object_events/palettes/followers/cresselia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 73 +81 105 161 +89 145 225 +81 65 33 +249 233 169 +1 1 1 +161 73 113 +105 89 57 +105 41 57 +249 169 225 +233 233 249 +217 105 169 +241 193 97 +65 65 65 +0 0 0 diff --git a/graphics/object_events/palettes/followers/croagunk.pal b/graphics/object_events/palettes/followers/croagunk.pal new file mode 100644 index 000000000..6e43319e5 --- /dev/null +++ b/graphics/object_events/palettes/followers/croagunk.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 129 9 +129 129 129 +57 73 129 +193 89 1 +1 1 1 +249 217 57 +49 49 49 +193 153 1 +201 201 201 +89 129 209 +49 97 193 +49 49 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/darkrai.pal b/graphics/object_events/palettes/followers/darkrai.pal new file mode 100644 index 000000000..a379b5238 --- /dev/null +++ b/graphics/object_events/palettes/followers/darkrai.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 145 169 +65 65 81 +249 249 249 +49 153 193 +153 49 65 +249 73 65 +49 49 49 +1 1 1 +193 193 225 +97 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dewgong.pal b/graphics/object_events/palettes/followers/dewgong.pal new file mode 100644 index 000000000..0897c29ff --- /dev/null +++ b/graphics/object_events/palettes/followers/dewgong.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 185 +177 185 217 +49 49 81 +225 225 241 +1 1 1 +73 81 121 +233 233 249 +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/graphics/object_events/palettes/followers/dialga.pal b/graphics/object_events/palettes/followers/dialga.pal new file mode 100644 index 000000000..0a252f361 --- /dev/null +++ b/graphics/object_events/palettes/followers/dialga.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +17 17 17 +33 65 105 +185 201 217 +185 33 17 +97 161 193 +97 121 137 +217 233 249 +41 57 73 +241 81 65 +65 129 249 +137 161 177 +33 89 145 +57 121 177 +153 209 241 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ditto.pal b/graphics/object_events/palettes/followers/ditto.pal new file mode 100644 index 000000000..c366583be --- /dev/null +++ b/graphics/object_events/palettes/followers/ditto.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 177 +185 145 225 +113 81 145 +65 65 65 +1 1 1 +225 177 241 +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/graphics/object_events/palettes/followers/drapion.pal b/graphics/object_events/palettes/followers/drapion.pal new file mode 100644 index 000000000..5c02aa8d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/drapion.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +33 121 113 +105 65 113 +177 185 193 +49 41 57 +169 137 201 +41 161 153 +129 89 169 +73 49 81 +233 233 249 +1 1 1 +33 33 41 +121 129 137 +81 33 73 +145 97 161 +0 0 0 diff --git a/graphics/object_events/palettes/followers/drifblim.pal b/graphics/object_events/palettes/followers/drifblim.pal new file mode 100644 index 000000000..1cd025435 --- /dev/null +++ b/graphics/object_events/palettes/followers/drifblim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 57 +89 65 121 +153 121 225 +217 17 41 +49 49 49 +129 129 153 +129 97 185 +89 89 113 +233 233 249 +209 177 89 +1 1 1 +169 161 201 +105 17 25 +65 65 65 +105 105 129 diff --git a/graphics/object_events/palettes/followers/drifloon.pal b/graphics/object_events/palettes/followers/drifloon.pal new file mode 100644 index 000000000..57bb7a2ff --- /dev/null +++ b/graphics/object_events/palettes/followers/drifloon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 57 +169 137 225 +89 65 121 +225 177 89 +233 233 249 +129 97 185 +65 65 65 +169 161 201 +1 1 1 +89 89 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/drowzee.pal b/graphics/object_events/palettes/followers/drowzee.pal new file mode 100644 index 000000000..d19de6d0d --- /dev/null +++ b/graphics/object_events/palettes/followers/drowzee.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 41 +81 65 49 +233 233 249 +105 81 121 +1 1 1 +121 105 33 +49 49 49 +233 201 81 +89 81 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/dusknoir.pal b/graphics/object_events/palettes/followers/dusknoir.pal new file mode 100644 index 000000000..35fe7b837 --- /dev/null +++ b/graphics/object_events/palettes/followers/dusknoir.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 97 9 +121 121 121 +49 49 49 +1 1 1 +241 177 1 +145 33 33 +201 129 17 +209 97 97 +81 81 81 +161 161 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/electabuzz.pal b/graphics/object_events/palettes/followers/electabuzz.pal new file mode 100644 index 000000000..9c31f633c --- /dev/null +++ b/graphics/object_events/palettes/followers/electabuzz.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 17 +145 145 145 +65 57 33 +233 233 249 +73 81 81 +241 209 1 +1 1 1 +49 49 49 +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/palettes/followers/electivire.pal b/graphics/object_events/palettes/followers/electivire.pal new file mode 100644 index 000000000..85b21aa79 --- /dev/null +++ b/graphics/object_events/palettes/followers/electivire.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 17 +65 57 33 +145 145 145 +177 9 3 +89 89 89 +193 193 209 +49 49 49 +241 209 1 +249 233 121 +241 97 113 +233 233 249 +73 25 33 +113 89 25 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/electrode.pal b/graphics/object_events/palettes/followers/electrode.pal new file mode 100644 index 000000000..335df9141 --- /dev/null +++ b/graphics/object_events/palettes/followers/electrode.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +185 185 193 +105 105 105 +201 33 33 +217 217 217 +49 49 49 +161 161 161 +233 233 249 +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/palettes/followers/empoleon.pal b/graphics/object_events/palettes/followers/empoleon.pal new file mode 100644 index 000000000..8ebe2c905 --- /dev/null +++ b/graphics/object_events/palettes/followers/empoleon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 137 25 +81 129 161 +57 57 97 +121 193 241 +97 81 33 +1 1 1 +233 233 249 +41 41 41 +249 201 89 +65 73 145 +185 193 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/finneon.pal b/graphics/object_events/palettes/followers/finneon.pal new file mode 100644 index 000000000..b5bd33caf --- /dev/null +++ b/graphics/object_events/palettes/followers/finneon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 161 +49 57 65 +1 1 1 +73 97 97 +169 65 113 +161 209 217 +105 1 1 +241 121 161 +249 185 209 +49 73 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/floatzel.pal b/graphics/object_events/palettes/followers/floatzel.pal new file mode 100644 index 000000000..eccd4ed4b --- /dev/null +++ b/graphics/object_events/palettes/followers/floatzel.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 129 1 +129 65 33 +73 137 193 +89 89 89 +241 225 129 +161 97 1 +249 193 33 +1 1 1 +233 233 249 +57 49 41 +169 185 201 +209 185 97 +233 113 49 +65 97 121 +185 73 33 diff --git a/graphics/object_events/palettes/followers/froslass.pal b/graphics/object_events/palettes/followers/froslass.pal new file mode 100644 index 000000000..07f7c145f --- /dev/null +++ b/graphics/object_events/palettes/followers/froslass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 225 9 +57 121 153 +81 41 81 +193 201 217 +89 161 201 +65 65 65 +153 153 153 +41 73 89 +1 1 1 +193 57 33 +233 233 249 +129 73 129 +153 161 177 +113 121 137 +121 65 57 diff --git a/graphics/object_events/palettes/followers/gabite.pal b/graphics/object_events/palettes/followers/gabite.pal new file mode 100644 index 000000000..77ded75c3 --- /dev/null +++ b/graphics/object_events/palettes/followers/gabite.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 9 +153 153 153 +41 49 97 +233 233 249 +121 137 209 +105 105 105 +129 49 17 +1 1 1 +249 225 9 +81 113 185 +177 177 233 +57 81 121 +105 145 193 +185 65 25 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gallade.pal b/graphics/object_events/palettes/followers/gallade.pal new file mode 100644 index 000000000..7cd2a4e39 --- /dev/null +++ b/graphics/object_events/palettes/followers/gallade.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 145 49 +3 84 13 +137 137 153 +73 73 81 +129 33 57 +31 110 20 +105 201 225 +34 34 34 +1 1 1 +25 185 201 +205 205 219 +233 233 249 +25 105 97 +49 177 65 +185 49 73 diff --git a/graphics/object_events/palettes/followers/garchomp.pal b/graphics/object_events/palettes/followers/garchomp.pal new file mode 100644 index 000000000..3ef28d97b --- /dev/null +++ b/graphics/object_events/palettes/followers/garchomp.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 1 +185 65 25 +1 1 1 +201 201 209 +73 81 121 +49 49 81 +169 169 169 +97 113 161 +249 225 9 +129 49 17 +233 233 249 +121 153 201 +105 105 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_east.pal b/graphics/object_events/palettes/followers/gastrodon_east.pal new file mode 100644 index 000000000..bbaf701c0 --- /dev/null +++ b/graphics/object_events/palettes/followers/gastrodon_east.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 121 41 +49 113 129 +249 209 89 +1 1 1 +49 49 49 +145 121 49 +41 153 185 +49 81 49 +185 185 201 +201 161 1 +65 185 233 +89 161 65 +33 73 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_west.pal b/graphics/object_events/palettes/followers/gastrodon_west.pal new file mode 100644 index 000000000..ad3e3ec2d --- /dev/null +++ b/graphics/object_events/palettes/followers/gastrodon_west.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 49 +113 73 57 +201 121 169 +49 49 49 +1 1 1 +249 209 89 +153 97 129 +73 49 41 +201 161 1 +185 185 201 +233 153 217 +161 105 65 +81 41 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/geodude.pal b/graphics/object_events/palettes/followers/geodude.pal new file mode 100644 index 000000000..ef0621ad0 --- /dev/null +++ b/graphics/object_events/palettes/followers/geodude.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 169 129 +121 113 97 +233 233 249 +65 49 33 +1 1 1 +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/graphics/object_events/palettes/followers/gible.pal b/graphics/object_events/palettes/followers/gible.pal new file mode 100644 index 000000000..0f9c39f2b --- /dev/null +++ b/graphics/object_events/palettes/followers/gible.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 137 137 +137 193 217 +57 57 57 +1 1 1 +185 65 25 +105 169 169 +33 41 49 +153 153 153 +225 225 225 +49 89 89 +113 169 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_normal.pal b/graphics/object_events/palettes/followers/giratina_normal.pal new file mode 100644 index 000000000..81030443f --- /dev/null +++ b/graphics/object_events/palettes/followers/giratina_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 25 +105 97 25 +17 17 17 +169 49 65 +89 89 113 +249 249 209 +57 65 65 +137 137 169 +233 209 25 +241 81 65 +169 177 201 +113 113 145 +41 41 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_origin.pal b/graphics/object_events/palettes/followers/giratina_origin.pal new file mode 100644 index 000000000..5b5e3d16c --- /dev/null +++ b/graphics/object_events/palettes/followers/giratina_origin.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 153 25 +169 49 65 +145 145 145 +97 81 17 +249 249 209 +17 17 17 +57 57 57 +41 41 41 +233 209 25 +241 81 65 +185 185 185 +81 81 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/glaceon.pal b/graphics/object_events/palettes/followers/glaceon.pal new file mode 100644 index 000000000..37de2af57 --- /dev/null +++ b/graphics/object_events/palettes/followers/glaceon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 145 137 +113 201 225 +49 153 177 +49 65 81 +137 225 233 +1 1 1 +25 97 113 +209 225 233 +81 185 217 +41 153 169 +177 233 249 +33 105 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/glameow.pal b/graphics/object_events/palettes/followers/glameow.pal new file mode 100644 index 000000000..676585d12 --- /dev/null +++ b/graphics/object_events/palettes/followers/glameow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 41 +17 33 105 +153 153 153 +113 113 113 +129 129 129 +233 233 249 +49 49 49 +177 57 105 +209 97 177 +193 193 193 +1 1 1 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/gliscor.pal b/graphics/object_events/palettes/followers/gliscor.pal new file mode 100644 index 000000000..e9e50885f --- /dev/null +++ b/graphics/object_events/palettes/followers/gliscor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 1 +65 65 65 +1 1 1 +33 41 89 +137 137 209 +121 25 17 +97 97 97 +153 153 153 +249 217 57 +33 33 33 +153 169 225 +105 33 81 +169 41 25 +169 169 169 +97 97 113 diff --git a/graphics/object_events/palettes/followers/grimer.pal b/graphics/object_events/palettes/followers/grimer.pal new file mode 100644 index 000000000..fef0c2dba --- /dev/null +++ b/graphics/object_events/palettes/followers/grimer.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 57 65 +233 233 249 +105 81 121 +177 145 185 +129 105 137 +201 177 217 +121 97 153 +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/palettes/followers/grotle.pal b/graphics/object_events/palettes/followers/grotle.pal new file mode 100644 index 000000000..d646bba5d --- /dev/null +++ b/graphics/object_events/palettes/followers/grotle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 161 49 +169 177 201 +129 201 49 +81 73 57 +97 177 81 +153 113 57 +105 89 73 +201 145 25 +233 233 249 +161 225 113 +225 185 41 +1 1 1 +73 73 73 +57 81 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/growlithe.pal b/graphics/object_events/palettes/followers/growlithe.pal new file mode 100644 index 000000000..cc0737467 --- /dev/null +++ b/graphics/object_events/palettes/followers/growlithe.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 121 73 +73 49 25 +177 177 209 +89 89 89 +1 1 1 +145 73 33 +137 89 41 +201 153 81 +233 233 249 +225 193 145 +185 81 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/happiny.pal b/graphics/object_events/palettes/followers/happiny.pal new file mode 100644 index 000000000..2d1c97537 --- /dev/null +++ b/graphics/object_events/palettes/followers/happiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 129 161 +121 73 89 +169 185 209 +193 73 97 +1 1 1 +217 97 113 +97 33 41 +233 233 249 +249 177 193 +185 97 129 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/heatran.pal b/graphics/object_events/palettes/followers/heatran.pal new file mode 100644 index 000000000..d1a451452 --- /dev/null +++ b/graphics/object_events/palettes/followers/heatran.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 121 1 +49 57 81 +129 129 137 +241 81 65 +169 41 33 +97 65 65 +193 193 209 +65 25 41 +233 233 249 +1 1 1 +177 105 89 +233 153 1 +73 81 97 +41 41 41 +137 65 65 diff --git a/graphics/object_events/palettes/followers/hippopotas.pal b/graphics/object_events/palettes/followers/hippopotas.pal new file mode 100644 index 000000000..874dfa505 --- /dev/null +++ b/graphics/object_events/palettes/followers/hippopotas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 57 +185 185 193 +209 177 57 +73 57 33 +1 1 1 +137 137 137 +137 89 57 +185 121 81 +233 233 249 +225 201 113 +209 177 81 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/hippowdon.pal b/graphics/object_events/palettes/followers/hippowdon.pal new file mode 100644 index 000000000..70e70b15c --- /dev/null +++ b/graphics/object_events/palettes/followers/hippowdon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 57 +153 153 153 +73 73 73 +1 1 1 +201 201 209 +97 97 97 +49 49 49 +209 177 81 +193 57 81 +169 169 169 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/honchkrow.pal b/graphics/object_events/palettes/followers/honchkrow.pal new file mode 100644 index 000000000..5fa8b9fed --- /dev/null +++ b/graphics/object_events/palettes/followers/honchkrow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 129 1 +81 65 49 +33 41 49 +1 1 1 +113 113 113 +201 201 201 +169 1 1 +41 65 105 +249 225 9 +233 233 249 +169 169 177 +57 89 113 +121 17 17 +57 57 57 +49 57 73 diff --git a/graphics/object_events/palettes/followers/houndour.pal b/graphics/object_events/palettes/followers/houndour.pal new file mode 100644 index 000000000..f13881bf3 --- /dev/null +++ b/graphics/object_events/palettes/followers/houndour.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 137 97 +81 81 89 +225 185 161 +41 41 49 +137 129 145 +113 97 121 +233 233 249 +73 57 81 +1 1 1 +169 161 185 +137 97 65 +177 185 193 +57 57 65 +105 113 113 +0 0 0 diff --git a/graphics/object_events/palettes/followers/infernape.pal b/graphics/object_events/palettes/followers/infernape.pal new file mode 100644 index 000000000..52928407c --- /dev/null +++ b/graphics/object_events/palettes/followers/infernape.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 153 1 +25 89 177 +65 65 65 +1 1 1 +145 25 25 +193 65 33 +217 217 217 +201 57 89 +225 113 81 +249 209 1 +241 57 41 +129 57 33 +169 169 169 +233 233 249 +105 73 57 diff --git a/graphics/object_events/palettes/followers/kakuna.pal b/graphics/object_events/palettes/followers/kakuna.pal new file mode 100644 index 000000000..4dd491adc --- /dev/null +++ b/graphics/object_events/palettes/followers/kakuna.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 153 65 +97 73 41 +233 233 249 +249 209 65 +145 113 33 +1 1 1 +65 65 65 +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/graphics/object_events/palettes/followers/kirlia.pal b/graphics/object_events/palettes/followers/kirlia.pal new file mode 100644 index 000000000..5c4776a37 --- /dev/null +++ b/graphics/object_events/palettes/followers/kirlia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +233 233 249 +241 105 105 +1 1 1 +129 129 145 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/krabby.pal b/graphics/object_events/palettes/followers/krabby.pal new file mode 100644 index 000000000..6a430a736 --- /dev/null +++ b/graphics/object_events/palettes/followers/krabby.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 129 81 +201 201 209 +81 57 49 +1 1 1 +201 97 33 +233 233 249 +169 65 57 +193 169 129 +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/palettes/followers/kricketot.pal b/graphics/object_events/palettes/followers/kricketot.pal new file mode 100644 index 000000000..87aa0b9e7 --- /dev/null +++ b/graphics/object_events/palettes/followers/kricketot.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 73 +97 65 33 +105 105 105 +233 233 249 +81 41 25 +1 1 1 +145 73 25 +137 57 33 +241 209 145 +225 113 89 +225 161 81 +169 81 57 +57 57 57 +185 89 33 +0 0 0 diff --git a/graphics/object_events/palettes/followers/kricketune.pal b/graphics/object_events/palettes/followers/kricketune.pal new file mode 100644 index 000000000..ff9b89ab8 --- /dev/null +++ b/graphics/object_events/palettes/followers/kricketune.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 129 73 +97 65 33 +81 81 81 +233 233 249 +1 1 1 +81 41 25 +145 73 25 +225 113 89 +241 209 145 +137 57 33 +225 161 81 +105 105 105 +169 81 57 +57 57 57 +185 89 33 diff --git a/graphics/object_events/palettes/followers/leafeon.pal b/graphics/object_events/palettes/followers/leafeon.pal new file mode 100644 index 000000000..3bc4ad631 --- /dev/null +++ b/graphics/object_events/palettes/followers/leafeon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 145 81 +209 225 233 +129 193 97 +113 81 33 +97 161 97 +241 217 161 +81 49 25 +169 137 81 +1 1 1 +217 185 89 +153 105 49 +233 233 249 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lickilicky.pal b/graphics/object_events/palettes/followers/lickilicky.pal new file mode 100644 index 000000000..ca5da8adf --- /dev/null +++ b/graphics/object_events/palettes/followers/lickilicky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 145 +233 185 201 +81 81 81 +1 1 1 +193 81 113 +233 233 249 +73 49 49 +209 137 169 +153 65 89 +161 161 161 +201 201 209 +169 89 137 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lopunny.pal b/graphics/object_events/palettes/followers/lopunny.pal new file mode 100644 index 000000000..3439e8e36 --- /dev/null +++ b/graphics/object_events/palettes/followers/lopunny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 65 +1 1 1 +97 81 65 +209 121 121 +145 81 89 +201 169 105 +129 97 57 +57 50 34 +249 169 169 +233 217 169 +169 129 89 +81 81 74 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/loudred.pal b/graphics/object_events/palettes/followers/loudred.pal new file mode 100644 index 000000000..be3de9d8f --- /dev/null +++ b/graphics/object_events/palettes/followers/loudred.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 49 +105 73 33 +137 129 185 +81 73 105 +233 233 249 +105 97 153 +41 49 65 +233 209 105 +1 1 1 +169 177 193 +185 65 105 +137 41 65 +177 169 225 +105 113 137 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lucario.pal b/graphics/object_events/palettes/followers/lucario.pal new file mode 100644 index 000000000..c4f6ce113 --- /dev/null +++ b/graphics/object_events/palettes/followers/lucario.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 137 57 +49 57 89 +73 137 193 +97 97 97 +233 233 249 +153 25 49 +233 185 81 +121 97 41 +169 185 201 +41 41 41 +1 1 1 +57 105 145 +113 185 241 +73 73 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lumineon.pal b/graphics/object_events/palettes/followers/lumineon.pal new file mode 100644 index 000000000..4c230e65d --- /dev/null +++ b/graphics/object_events/palettes/followers/lumineon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 57 65 +73 97 97 +161 209 217 +169 65 113 +105 1 1 +97 145 185 +49 73 65 +89 105 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/lunatone.pal b/graphics/object_events/palettes/followers/lunatone.pal new file mode 100644 index 000000000..b3c10e691 --- /dev/null +++ b/graphics/object_events/palettes/followers/lunatone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 121 57 +65 73 89 +177 161 73 +97 81 33 +161 49 113 +1 1 1 +33 41 49 +209 193 97 +209 73 145 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luxio.pal b/graphics/object_events/palettes/followers/luxio.pal new file mode 100644 index 000000000..154c28461 --- /dev/null +++ b/graphics/object_events/palettes/followers/luxio.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 145 33 +73 65 25 +81 145 185 +89 89 89 +169 89 17 +1 1 1 +233 233 249 +41 41 41 +249 209 25 +113 177 217 +209 81 65 +65 65 65 +49 81 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/luxray.pal b/graphics/object_events/palettes/followers/luxray.pal new file mode 100644 index 000000000..1f68542b9 --- /dev/null +++ b/graphics/object_events/palettes/followers/luxray.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 113 17 +73 65 25 +65 129 169 +209 81 65 +33 81 105 +81 169 217 +185 33 17 +249 209 25 +1 1 1 +41 41 41 +209 145 33 +129 193 233 +65 65 65 +89 89 89 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magmortar.pal b/graphics/object_events/palettes/followers/magmortar.pal new file mode 100644 index 000000000..fa810f47e --- /dev/null +++ b/graphics/object_events/palettes/followers/magmortar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 153 17 +185 57 25 +145 145 145 +73 81 81 +193 193 209 +49 49 49 +169 105 1 +1 1 1 +241 209 1 +233 233 249 +137 73 89 +105 1 1 +193 97 105 +225 137 153 +241 73 33 diff --git a/graphics/object_events/palettes/followers/magneton.pal b/graphics/object_events/palettes/followers/magneton.pal new file mode 100644 index 000000000..041b62f37 --- /dev/null +++ b/graphics/object_events/palettes/followers/magneton.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 145 +193 209 217 +81 81 81 +73 137 233 +233 65 65 +153 169 185 +57 57 57 +1 1 1 +113 113 121 +233 233 249 +177 177 185 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/magnezone.pal b/graphics/object_events/palettes/followers/magnezone.pal new file mode 100644 index 000000000..e0a5e0a78 --- /dev/null +++ b/graphics/object_events/palettes/followers/magnezone.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 57 +105 129 145 +49 65 73 +185 185 193 +113 113 121 +217 1 1 +1 1 1 +153 153 153 +249 225 9 +57 57 57 +233 233 249 +185 73 73 +153 169 185 +81 81 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mamoswine.pal b/graphics/object_events/palettes/followers/mamoswine.pal new file mode 100644 index 000000000..13ed3cce7 --- /dev/null +++ b/graphics/object_events/palettes/followers/mamoswine.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 121 33 +130 137 145 +105 65 41 +185 193 209 +41 113 145 +201 169 105 +57 41 17 +73 169 217 +201 97 113 +233 233 249 +137 57 73 +137 89 57 +169 121 81 +1 1 1 +65 65 65 diff --git a/graphics/object_events/palettes/followers/manaphy.pal b/graphics/object_events/palettes/followers/manaphy.pal new file mode 100644 index 000000000..ff66198ec --- /dev/null +++ b/graphics/object_events/palettes/followers/manaphy.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 9 +81 129 233 +193 65 105 +1 1 1 +233 233 249 +25 73 161 +65 65 65 +129 161 241 +249 209 97 +65 97 201 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mantyke.pal b/graphics/object_events/palettes/followers/mantyke.pal new file mode 100644 index 000000000..599f852fb --- /dev/null +++ b/graphics/object_events/palettes/followers/mantyke.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +145 65 57 +113 193 241 +9 89 137 +185 225 249 +97 97 105 +17 49 97 +33 121 249 +233 233 249 +153 193 225 +17 97 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/marill.pal b/graphics/object_events/palettes/followers/marill.pal new file mode 100644 index 000000000..87cd5612b --- /dev/null +++ b/graphics/object_events/palettes/followers/marill.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +233 233 249 +57 113 161 +73 145 201 +49 57 65 +169 185 209 +185 49 41 +137 161 185 +113 177 241 +33 57 105 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/marowak.pal b/graphics/object_events/palettes/followers/marowak.pal new file mode 100644 index 000000000..2f8424f47 --- /dev/null +++ b/graphics/object_events/palettes/followers/marowak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 129 73 +193 193 193 +1 1 1 +129 129 129 +73 49 49 +217 225 225 +201 153 81 +225 193 145 +193 161 105 +73 73 73 +233 233 249 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mesprit.pal b/graphics/object_events/palettes/followers/mesprit.pal new file mode 100644 index 000000000..809362ce0 --- /dev/null +++ b/graphics/object_events/palettes/followers/mesprit.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 33 +73 73 89 +113 129 177 +145 73 113 +145 185 209 +169 41 1 +1 1 1 +225 113 145 +249 177 17 +233 65 33 +249 169 153 +233 233 249 +97 49 57 +177 209 249 +185 81 129 diff --git a/graphics/object_events/palettes/followers/metagross.pal b/graphics/object_events/palettes/followers/metagross.pal new file mode 100644 index 000000000..f94f7a361 --- /dev/null +++ b/graphics/object_events/palettes/followers/metagross.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 129 169 +193 193 193 +65 65 65 +105 145 209 +1 1 1 +153 217 241 +153 41 41 +145 145 161 +41 41 49 +65 97 121 +233 233 249 +145 193 233 +33 65 81 +153 153 161 +0 0 0 diff --git a/graphics/object_events/palettes/followers/metapod.pal b/graphics/object_events/palettes/followers/metapod.pal new file mode 100644 index 000000000..c070c1405 --- /dev/null +++ b/graphics/object_events/palettes/followers/metapod.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 137 49 +225 225 225 +161 217 73 +57 73 25 +1 1 1 +233 233 249 +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/graphics/object_events/palettes/followers/mime_jr.pal b/graphics/object_events/palettes/followers/mime_jr.pal new file mode 100644 index 000000000..31ae9fcab --- /dev/null +++ b/graphics/object_events/palettes/followers/mime_jr.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 65 129 +41 41 73 +233 233 249 +121 129 233 +209 65 89 +217 113 145 +65 65 65 +241 177 201 +97 33 57 +89 97 177 +169 169 169 +121 73 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/mismagius.pal b/graphics/object_events/palettes/followers/mismagius.pal new file mode 100644 index 000000000..9ff649019 --- /dev/null +++ b/graphics/object_events/palettes/followers/mismagius.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +177 97 1 +49 41 97 +153 41 89 +177 17 41 +145 121 193 +49 33 57 +97 81 145 +193 65 129 +225 177 41 +1 1 1 +105 33 81 +217 81 113 +73 33 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/monferno.pal b/graphics/object_events/palettes/followers/monferno.pal new file mode 100644 index 000000000..af39e8fd9 --- /dev/null +++ b/graphics/object_events/palettes/followers/monferno.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +153 153 153 +105 57 41 +249 233 169 +241 57 41 +185 121 65 +57 145 209 +185 97 33 +217 185 113 +249 193 1 +145 25 25 +233 233 249 +129 89 57 +1 1 1 +209 81 65 diff --git a/graphics/object_events/palettes/followers/mothim.pal b/graphics/object_events/palettes/followers/mothim.pal new file mode 100644 index 000000000..21d36fcee --- /dev/null +++ b/graphics/object_events/palettes/followers/mothim.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 41 +137 57 9 +137 137 137 +73 73 73 +65 49 41 +225 177 65 +145 97 17 +1 1 1 +201 201 201 +97 97 97 +249 129 41 +161 89 33 +49 49 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/munchlax.pal b/graphics/object_events/palettes/followers/munchlax.pal new file mode 100644 index 000000000..afed053d8 --- /dev/null +++ b/graphics/object_events/palettes/followers/munchlax.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 129 73 +193 193 201 +193 169 105 +41 73 73 +81 129 145 +249 201 121 +65 105 121 +41 49 49 +233 233 249 +145 153 145 +1 1 1 +65 81 81 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/nidorino.pal b/graphics/object_events/palettes/followers/nidorino.pal new file mode 100644 index 000000000..571d26a69 --- /dev/null +++ b/graphics/object_events/palettes/followers/nidorino.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +25 169 153 +233 233 249 +49 113 105 +177 121 201 +185 25 9 +177 177 193 +73 57 81 +1 1 1 +137 97 153 +217 153 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/oddish.pal b/graphics/object_events/palettes/followers/oddish.pal new file mode 100644 index 000000000..a707d037a --- /dev/null +++ b/graphics/object_events/palettes/followers/oddish.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 113 65 +17 161 49 +33 73 41 +1 1 1 +113 1 1 +65 113 153 +41 73 73 +137 193 129 +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/palettes/followers/onix.pal b/graphics/object_events/palettes/followers/onix.pal new file mode 100644 index 000000000..41933ba53 --- /dev/null +++ b/graphics/object_events/palettes/followers/onix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 129 +193 193 193 +81 73 73 +1 1 1 +49 49 49 +145 145 145 +233 233 249 +105 97 97 +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/palettes/followers/pachirisu.pal b/graphics/object_events/palettes/followers/pachirisu.pal new file mode 100644 index 000000000..8dc583b37 --- /dev/null +++ b/graphics/object_events/palettes/followers/pachirisu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 97 +225 185 89 +97 129 201 +49 81 113 +1 1 1 +121 161 217 +137 121 145 +233 233 249 +177 177 209 +89 89 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/palkia.pal b/graphics/object_events/palettes/followers/palkia.pal new file mode 100644 index 000000000..82c356424 --- /dev/null +++ b/graphics/object_events/palettes/followers/palkia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 137 145 +201 217 233 +201 137 193 +81 81 89 +177 185 193 +161 81 161 +17 17 17 +249 249 249 +241 81 65 +137 121 145 +241 161 153 +169 161 177 +209 193 217 +233 217 249 +0 0 0 diff --git a/graphics/object_events/palettes/followers/parasect.pal b/graphics/object_events/palettes/followers/parasect.pal new file mode 100644 index 000000000..b07e4319f --- /dev/null +++ b/graphics/object_events/palettes/followers/parasect.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +225 161 33 +169 81 17 +169 169 169 +97 41 25 +233 201 89 +217 97 113 +249 113 25 +233 233 249 +1 1 1 +169 49 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/phione.pal b/graphics/object_events/palettes/followers/phione.pal new file mode 100644 index 000000000..8e5afccd1 --- /dev/null +++ b/graphics/object_events/palettes/followers/phione.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +193 65 105 +177 201 249 +25 73 161 +81 129 233 +65 97 201 +65 65 65 +233 233 249 +129 161 241 +17 113 177 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/piplup.pal b/graphics/object_events/palettes/followers/piplup.pal new file mode 100644 index 000000000..38fad9d50 --- /dev/null +++ b/graphics/object_events/palettes/followers/piplup.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 185 25 +81 145 185 +41 89 169 +57 57 73 +233 233 249 +121 121 121 +121 177 241 +121 105 65 +1 1 1 +65 105 225 +177 185 217 +57 65 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/plusle.pal b/graphics/object_events/palettes/followers/plusle.pal new file mode 100644 index 000000000..f04c4f314 --- /dev/null +++ b/graphics/object_events/palettes/followers/plusle.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 137 105 +113 89 49 +233 233 249 +249 225 137 +201 169 97 +185 73 89 +137 41 65 +1 1 1 +225 113 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/poliwrath.pal b/graphics/object_events/palettes/followers/poliwrath.pal new file mode 100644 index 000000000..0937b8faa --- /dev/null +++ b/graphics/object_events/palettes/followers/poliwrath.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +201 201 201 +73 97 185 +49 49 49 +121 129 233 +33 41 57 +161 161 161 +233 233 249 +177 177 209 +89 89 89 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/porygonz.pal b/graphics/object_events/palettes/followers/porygonz.pal new file mode 100644 index 000000000..73e36b7d5 --- /dev/null +++ b/graphics/object_events/palettes/followers/porygonz.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 145 49 +41 121 169 +17 65 97 +89 185 217 +169 65 105 +97 25 49 +249 209 57 +241 161 169 +169 113 49 +1 1 1 +145 233 249 +225 97 113 +65 153 193 +113 49 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/prinplup.pal b/graphics/object_events/palettes/followers/prinplup.pal new file mode 100644 index 000000000..af3fe885f --- /dev/null +++ b/graphics/object_events/palettes/followers/prinplup.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 153 1 +1 1 1 +41 89 169 +121 201 241 +97 81 33 +121 121 121 +113 153 185 +57 113 177 +49 57 97 +233 233 249 +249 193 25 +169 177 201 +65 113 201 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/probopass.pal b/graphics/object_events/palettes/followers/probopass.pal new file mode 100644 index 000000000..d952dc1fb --- /dev/null +++ b/graphics/object_events/palettes/followers/probopass.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 185 +41 57 97 +1 1 1 +113 25 41 +193 57 89 +113 177 233 +41 49 57 +153 153 153 +65 89 137 +193 201 217 +209 81 73 +161 33 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/psyduck.pal b/graphics/object_events/palettes/followers/psyduck.pal new file mode 100644 index 000000000..4990fa0d6 --- /dev/null +++ b/graphics/object_events/palettes/followers/psyduck.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 145 65 +241 233 185 +233 185 65 +201 185 137 +105 97 65 +1 1 1 +233 233 249 +249 217 105 +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/palettes/followers/pupitar.pal b/graphics/object_events/palettes/followers/pupitar.pal new file mode 100644 index 000000000..5ea18eb79 --- /dev/null +++ b/graphics/object_events/palettes/followers/pupitar.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 41 41 +161 185 201 +185 49 49 +33 57 73 +233 233 249 +121 161 177 +137 193 201 +57 65 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/purugly.pal b/graphics/object_events/palettes/followers/purugly.pal new file mode 100644 index 000000000..37ec1eaa4 --- /dev/null +++ b/graphics/object_events/palettes/followers/purugly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +89 57 137 +153 153 153 +201 105 9 +193 193 193 +249 185 33 +137 73 185 +65 65 65 +1 1 1 +177 121 233 +49 49 49 +233 233 249 +185 73 113 +81 81 81 +0 0 0 diff --git a/graphics/object_events/palettes/followers/ralts.pal b/graphics/object_events/palettes/followers/ralts.pal new file mode 100644 index 000000000..5c4776a37 --- /dev/null +++ b/graphics/object_events/palettes/followers/ralts.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +41 129 57 +169 169 177 +17 65 33 +73 177 89 +129 33 57 +233 233 249 +241 105 105 +1 1 1 +129 129 145 +201 201 217 +73 73 81 +105 201 129 +185 49 73 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rampardos.pal b/graphics/object_events/palettes/followers/rampardos.pal new file mode 100644 index 000000000..66eeea4da --- /dev/null +++ b/graphics/object_events/palettes/followers/rampardos.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +153 153 153 +129 65 81 +185 185 185 +233 105 121 +89 129 233 +97 97 97 +57 57 57 +1 1 1 +65 89 153 +225 225 225 +121 161 249 +113 113 113 +49 57 81 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rapidash.pal b/graphics/object_events/palettes/followers/rapidash.pal new file mode 100644 index 000000000..aa197a10a --- /dev/null +++ b/graphics/object_events/palettes/followers/rapidash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 161 25 +73 57 41 +241 225 169 +81 97 129 +185 169 113 +249 81 33 +113 97 65 +185 201 121 +161 49 9 +233 233 249 +153 57 81 +1 1 1 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/regigigas.pal b/graphics/object_events/palettes/followers/regigigas.pal new file mode 100644 index 000000000..dffde944b --- /dev/null +++ b/graphics/object_events/palettes/followers/regigigas.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 153 73 +65 161 153 +41 65 49 +249 209 41 +209 73 49 +81 81 105 +121 121 137 +233 233 249 +1 1 1 +41 105 73 +169 169 193 +169 137 41 +97 81 41 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyhorn.pal b/graphics/object_events/palettes/followers/rhyhorn.pal new file mode 100644 index 000000000..67ea3d889 --- /dev/null +++ b/graphics/object_events/palettes/followers/rhyhorn.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 145 +201 201 201 +65 65 65 +1 1 1 +137 33 57 +233 233 249 +113 113 113 +177 177 177 +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/palettes/followers/rhyperior.pal b/graphics/object_events/palettes/followers/rhyperior.pal new file mode 100644 index 000000000..38c0117a5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rhyperior.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 145 153 +145 73 17 +89 81 73 +65 41 25 +193 193 201 +113 113 113 +137 33 57 +1 1 1 +233 233 249 +209 73 33 +49 49 49 +137 113 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/riolu.pal b/graphics/object_events/palettes/followers/riolu.pal new file mode 100644 index 000000000..5de18e81d --- /dev/null +++ b/graphics/object_events/palettes/followers/riolu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +49 57 89 +97 97 97 +233 233 249 +73 137 193 +153 25 49 +121 97 41 +57 105 145 +169 185 201 +41 41 41 +113 185 241 +73 73 73 +81 89 113 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/roserade.pal b/graphics/object_events/palettes/followers/roserade.pal new file mode 100644 index 000000000..6204afc14 --- /dev/null +++ b/graphics/object_events/palettes/followers/roserade.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 41 +161 177 177 +17 65 25 +97 169 73 +201 217 217 +41 105 153 +233 185 65 +1 1 1 +201 65 113 +137 17 73 +81 169 233 +169 129 57 +73 73 73 +233 233 249 +145 193 105 diff --git a/graphics/object_events/palettes/followers/rotom_base.pal b/graphics/object_events/palettes/followers/rotom_base.pal new file mode 100644 index 000000000..313955303 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_base.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 153 73 +17 73 113 +145 73 17 +105 185 217 +217 113 49 +65 65 65 +49 129 161 +185 89 33 +177 233 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_fan.pal b/graphics/object_events/palettes/followers/rotom_fan.pal new file mode 100644 index 000000000..a5f3ba2f5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_fan.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 145 65 +249 201 81 +65 65 65 +1 1 1 +209 161 49 +185 89 33 +113 57 9 +241 153 73 +249 249 153 +217 113 49 +153 185 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_frost.pal b/graphics/object_events/palettes/followers/rotom_frost.pal new file mode 100644 index 000000000..40548eeb1 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_frost.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 113 49 +73 17 113 +193 161 217 +49 49 49 +241 153 73 +89 89 89 +145 73 17 +217 217 241 +1 1 1 +121 97 161 +185 89 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_heat.pal b/graphics/object_events/palettes/followers/rotom_heat.pal new file mode 100644 index 000000000..81477472a --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_heat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 113 49 +145 73 17 +129 33 25 +1 1 1 +185 89 33 +41 41 41 +241 153 73 +73 73 73 +249 217 129 +217 89 49 +161 41 17 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_mow.pal b/graphics/object_events/palettes/followers/rotom_mow.pal new file mode 100644 index 000000000..124db71d5 --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_mow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +81 129 73 +25 89 17 +193 193 225 +113 113 113 +153 217 41 +145 73 17 +241 153 73 +217 113 49 +217 249 137 +1 1 1 +233 233 249 +65 65 65 +185 89 33 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_wash.pal b/graphics/object_events/palettes/followers/rotom_wash.pal new file mode 100644 index 000000000..b2ad20e2f --- /dev/null +++ b/graphics/object_events/palettes/followers/rotom_wash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 153 73 +65 65 65 +17 73 113 +105 161 233 +185 89 33 +113 57 9 +1 1 1 +81 81 81 +177 233 241 +65 97 161 +217 113 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_land.pal b/graphics/object_events/palettes/followers/shaymin_land.pal new file mode 100644 index 000000000..01a77716c --- /dev/null +++ b/graphics/object_events/palettes/followers/shaymin_land.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 193 1 +129 129 153 +233 233 249 +65 65 65 +49 153 73 +169 169 209 +1 1 1 +193 89 129 +161 209 113 +241 129 169 +121 153 113 +41 89 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_sky.pal b/graphics/object_events/palettes/followers/shaymin_sky.pal new file mode 100644 index 000000000..59b7b2681 --- /dev/null +++ b/graphics/object_events/palettes/followers/shaymin_sky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 129 1 +49 53 39 +1 1 1 +177 225 97 +89 89 113 +143 27 31 +49 153 73 +41 89 57 +177 177 217 +233 233 249 +249 41 49 +121 169 49 +59 65 49 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_east.pal b/graphics/object_events/palettes/followers/shellos_east.pal new file mode 100644 index 000000000..0fbe31e03 --- /dev/null +++ b/graphics/object_events/palettes/followers/shellos_east.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 153 9 +81 137 153 +89 145 81 +49 89 105 +233 233 249 +129 185 89 +89 169 209 +1 1 1 +249 217 57 +49 49 49 +153 153 177 +73 105 129 +169 201 89 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_west.pal b/graphics/object_events/palettes/followers/shellos_west.pal new file mode 100644 index 000000000..bcd1ca01e --- /dev/null +++ b/graphics/object_events/palettes/followers/shellos_west.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 1 +113 113 113 +129 129 129 +185 185 201 +89 49 73 +249 89 209 +1 1 1 +49 49 49 +249 209 89 +249 137 201 +233 233 249 +193 105 145 +145 33 105 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shieldon.pal b/graphics/object_events/palettes/followers/shieldon.pal new file mode 100644 index 000000000..4bc877c4c --- /dev/null +++ b/graphics/object_events/palettes/followers/shieldon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 73 +201 201 201 +57 49 41 +193 161 73 +105 81 49 +153 153 153 +73 73 73 +121 121 121 +233 233 249 +1 1 1 +89 89 89 +57 57 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shinx.pal b/graphics/object_events/palettes/followers/shinx.pal new file mode 100644 index 000000000..e99f3c9de --- /dev/null +++ b/graphics/object_events/palettes/followers/shinx.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 145 33 +81 121 185 +65 65 65 +209 81 65 +145 185 233 +89 89 89 +1 1 1 +225 185 25 +233 233 249 +113 161 217 +105 89 41 +49 81 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/shuppet.pal b/graphics/object_events/palettes/followers/shuppet.pal new file mode 100644 index 000000000..045c51318 --- /dev/null +++ b/graphics/object_events/palettes/followers/shuppet.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 161 49 +97 105 129 +1 1 1 +65 73 97 +81 129 201 +41 49 65 +129 129 161 +161 161 193 +49 81 153 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/silcoon.pal b/graphics/object_events/palettes/followers/silcoon.pal new file mode 100644 index 000000000..f256a8be4 --- /dev/null +++ b/graphics/object_events/palettes/followers/silcoon.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 129 137 +81 81 81 +185 185 169 +129 33 57 +1 1 1 +241 105 105 +225 225 209 +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/graphics/object_events/palettes/followers/skitty.pal b/graphics/object_events/palettes/followers/skitty.pal new file mode 100644 index 000000000..c43022e02 --- /dev/null +++ b/graphics/object_events/palettes/followers/skitty.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +209 161 73 +97 57 57 +249 225 129 +129 105 73 +249 137 153 +177 81 89 +57 57 89 +1 1 1 +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/palettes/followers/skorupi.pal b/graphics/object_events/palettes/followers/skorupi.pal new file mode 100644 index 000000000..d4dad9ff4 --- /dev/null +++ b/graphics/object_events/palettes/followers/skorupi.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +33 121 113 +25 193 177 +121 129 209 +73 73 145 +41 161 153 +177 185 193 +57 57 81 +121 129 137 +233 233 249 +1 1 1 +153 161 225 +89 97 177 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/skuntank.pal b/graphics/object_events/palettes/followers/skuntank.pal new file mode 100644 index 000000000..fb06f0e0d --- /dev/null +++ b/graphics/object_events/palettes/followers/skuntank.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +185 161 97 +89 81 49 +185 185 201 +65 49 65 +233 209 97 +137 89 145 +161 41 33 +41 41 41 +233 233 249 +193 97 65 +105 49 113 +113 113 113 +233 217 145 +1 1 1 +0 0 0 diff --git a/graphics/object_events/palettes/followers/slugma.pal b/graphics/object_events/palettes/followers/slugma.pal new file mode 100644 index 000000000..8697071e3 --- /dev/null +++ b/graphics/object_events/palettes/followers/slugma.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +201 145 17 +161 57 25 +73 1 1 +1 1 1 +217 97 65 +193 73 41 +121 25 17 +233 209 105 +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/palettes/followers/snover.pal b/graphics/object_events/palettes/followers/snover.pal new file mode 100644 index 000000000..d0b29e37a --- /dev/null +++ b/graphics/object_events/palettes/followers/snover.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +49 121 65 +161 161 193 +65 57 25 +121 121 153 +129 105 41 +217 217 233 +65 65 65 +169 137 57 +1 1 1 +185 193 209 +49 153 73 +97 81 57 +233 233 249 +49 73 57 +0 0 0 diff --git a/graphics/object_events/palettes/followers/spiritomb.pal b/graphics/object_events/palettes/followers/spiritomb.pal new file mode 100644 index 000000000..aa86da120 --- /dev/null +++ b/graphics/object_events/palettes/followers/spiritomb.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 169 73 +105 81 25 +145 201 89 +121 57 105 +169 113 169 +73 57 33 +201 145 209 +97 89 97 +209 241 121 +1 1 1 +65 113 65 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/staraptor.pal b/graphics/object_events/palettes/followers/staraptor.pal new file mode 100644 index 000000000..737f9bd0f --- /dev/null +++ b/graphics/object_events/palettes/followers/staraptor.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 113 1 +145 145 145 +225 49 33 +33 33 33 +73 65 65 +201 201 201 +145 129 129 +1 1 1 +233 233 249 +105 17 25 +105 97 97 +57 57 57 +217 217 217 +73 73 73 diff --git a/graphics/object_events/palettes/followers/staravia.pal b/graphics/object_events/palettes/followers/staravia.pal new file mode 100644 index 000000000..1f40137a8 --- /dev/null +++ b/graphics/object_events/palettes/followers/staravia.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 185 153 +193 113 1 +145 129 105 +225 217 209 +169 153 129 +209 201 201 +65 65 65 +33 33 33 +233 233 249 +89 89 89 +1 1 1 +185 185 177 +121 121 121 +0 0 0 diff --git a/graphics/object_events/palettes/followers/starly.pal b/graphics/object_events/palettes/followers/starly.pal new file mode 100644 index 000000000..adca8581c --- /dev/null +++ b/graphics/object_events/palettes/followers/starly.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +249 169 33 +193 113 1 +185 185 185 +81 65 65 +97 97 89 +217 217 217 +49 49 49 +1 1 1 +233 233 249 +105 105 105 +73 73 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/staryu.pal b/graphics/object_events/palettes/followers/staryu.pal new file mode 100644 index 000000000..47f9daf31 --- /dev/null +++ b/graphics/object_events/palettes/followers/staryu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +169 121 33 +57 49 17 +177 145 25 +105 25 25 +121 81 9 +1 1 1 +225 97 73 +233 177 33 +185 41 41 +89 73 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/steelix.pal b/graphics/object_events/palettes/followers/steelix.pal new file mode 100644 index 000000000..cac012566 --- /dev/null +++ b/graphics/object_events/palettes/followers/steelix.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +89 121 145 +161 185 201 +49 65 81 +1 1 1 +233 233 249 +193 209 225 +193 57 57 +129 153 169 +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/palettes/followers/stunky.pal b/graphics/object_events/palettes/followers/stunky.pal new file mode 100644 index 000000000..baa8f838a --- /dev/null +++ b/graphics/object_events/palettes/followers/stunky.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 137 105 +89 81 49 +233 217 145 +89 65 97 +185 185 201 +49 49 49 +185 169 113 +113 113 113 +233 233 249 +137 81 137 +185 81 57 +1 1 1 +65 41 65 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/swablu.pal b/graphics/object_events/palettes/followers/swablu.pal new file mode 100644 index 000000000..0af595d67 --- /dev/null +++ b/graphics/object_events/palettes/followers/swablu.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 129 145 +225 225 233 +89 145 177 +73 81 105 +113 177 209 +65 113 153 +1 1 1 +249 249 249 +169 177 193 +49 81 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/tangrowth.pal b/graphics/object_events/palettes/followers/tangrowth.pal new file mode 100644 index 000000000..902f72d07 --- /dev/null +++ b/graphics/object_events/palettes/followers/tangrowth.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +121 121 121 +41 65 89 +169 185 209 +25 33 49 +201 65 113 +1 1 1 +57 105 153 +129 49 73 +57 137 201 +233 233 249 +49 81 113 +49 49 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/togekiss.pal b/graphics/object_events/palettes/followers/togekiss.pal new file mode 100644 index 000000000..bf54ff014 --- /dev/null +++ b/graphics/object_events/palettes/followers/togekiss.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +105 121 129 +169 185 209 +41 169 249 +233 65 73 +1 1 1 +65 65 65 +233 233 249 +145 153 177 +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/palettes/followers/togetic.pal b/graphics/object_events/palettes/followers/togetic.pal new file mode 100644 index 000000000..bf8df7baf --- /dev/null +++ b/graphics/object_events/palettes/followers/togetic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +129 145 145 +233 233 249 +41 49 89 +97 169 225 +41 41 41 +1 1 1 +217 81 89 +161 177 217 +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/palettes/followers/torchic.pal b/graphics/object_events/palettes/followers/torchic.pal new file mode 100644 index 000000000..a9c540b8d --- /dev/null +++ b/graphics/object_events/palettes/followers/torchic.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +241 129 17 +233 233 249 +1 1 1 +121 81 17 +161 145 81 +233 169 17 +249 209 97 +209 97 1 +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/palettes/followers/torterra.pal b/graphics/object_events/palettes/followers/torterra.pal new file mode 100644 index 000000000..2e6475344 --- /dev/null +++ b/graphics/object_events/palettes/followers/torterra.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +161 121 65 +209 209 217 +81 65 49 +89 185 65 +41 97 41 +1 1 1 +49 49 49 +153 153 153 +65 153 89 +89 89 89 +121 1 1 +105 209 65 +233 233 249 +121 97 49 +65 177 81 diff --git a/graphics/object_events/palettes/followers/toxicroak.pal b/graphics/object_events/palettes/followers/toxicroak.pal new file mode 100644 index 000000000..92634817e --- /dev/null +++ b/graphics/object_events/palettes/followers/toxicroak.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 161 1 +57 81 169 +49 49 49 +129 129 129 +41 41 73 +169 49 57 +89 129 209 +113 25 33 +249 217 57 +1 1 1 +217 89 65 +49 97 193 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/turtwig.pal b/graphics/object_events/palettes/followers/turtwig.pal new file mode 100644 index 000000000..9d65ea4dd --- /dev/null +++ b/graphics/object_events/palettes/followers/turtwig.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +73 121 65 +81 73 57 +137 201 177 +249 233 113 +153 113 57 +81 153 105 +105 89 73 +73 73 73 +209 177 41 +233 233 249 +49 49 49 +1 1 1 +57 81 57 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/unown.pal b/graphics/object_events/palettes/followers/unown.pal new file mode 100644 index 000000000..d729ca129 --- /dev/null +++ b/graphics/object_events/palettes/followers/unown.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +65 73 89 +233 233 249 +41 49 65 +185 185 185 +97 105 145 +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/graphics/object_events/palettes/followers/uxie.pal b/graphics/object_events/palettes/followers/uxie.pal new file mode 100644 index 000000000..ff01f4a61 --- /dev/null +++ b/graphics/object_events/palettes/followers/uxie.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +137 121 89 +113 129 177 +169 41 1 +241 201 89 +73 65 57 +145 185 209 +1 1 1 +193 153 89 +233 65 33 +177 209 249 +249 169 153 +73 73 89 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vespiquen.pal b/graphics/object_events/palettes/followers/vespiquen.pal new file mode 100644 index 000000000..3d1fab3b5 --- /dev/null +++ b/graphics/object_events/palettes/followers/vespiquen.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +233 153 25 +73 65 41 +161 185 225 +105 105 105 +161 33 57 +169 89 49 +1 1 1 +217 225 233 +49 49 49 +249 201 57 +249 49 105 +177 105 33 +233 233 249 +201 105 41 +0 0 0 diff --git a/graphics/object_events/palettes/followers/vileplume.pal b/graphics/object_events/palettes/followers/vileplume.pal new file mode 100644 index 000000000..503e1333c --- /dev/null +++ b/graphics/object_events/palettes/followers/vileplume.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 153 +169 81 17 +1 1 1 +33 57 105 +217 97 113 +169 49 73 +121 33 17 +217 185 145 +249 137 73 +49 81 113 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weavile.pal b/graphics/object_events/palettes/followers/weavile.pal new file mode 100644 index 000000000..c28ce413c --- /dev/null +++ b/graphics/object_events/palettes/followers/weavile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +113 121 129 +49 57 89 +105 121 177 +137 1 1 +161 41 65 +241 177 65 +65 97 161 +169 185 201 +233 233 249 +1 1 1 +57 73 113 +201 49 73 +153 9 3 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/weezing.pal b/graphics/object_events/palettes/followers/weezing.pal new file mode 100644 index 000000000..84a071158 --- /dev/null +++ b/graphics/object_events/palettes/followers/weezing.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +145 129 41 +137 129 209 +89 81 121 +57 41 57 +161 161 129 +233 233 249 +129 73 81 +1 1 1 +121 105 193 +169 169 209 +105 57 65 +201 185 121 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wooper.pal b/graphics/object_events/palettes/followers/wooper.pal new file mode 100644 index 000000000..b0ebb5db6 --- /dev/null +++ b/graphics/object_events/palettes/followers/wooper.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +1 1 1 +33 65 121 +145 201 249 +73 145 201 +177 113 209 +97 41 97 +57 113 161 +233 233 249 +113 177 241 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam.pal b/graphics/object_events/palettes/followers/wormadam.pal new file mode 100644 index 000000000..840dfcdfa --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 121 25 +185 201 153 +81 169 25 +33 65 33 +1 1 1 +137 209 57 +73 73 73 +49 49 49 +233 233 249 +41 121 73 +97 97 97 +41 169 49 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_sand.pal b/graphics/object_events/palettes/followers/wormadam_sand.pal new file mode 100644 index 000000000..bb5b4ce40 --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam_sand.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +193 145 65 +81 65 49 +233 233 249 +201 193 137 +145 105 41 +193 57 41 +57 33 17 +1 1 1 +97 97 97 +201 113 97 +49 49 49 +233 217 137 +153 145 97 +73 73 73 +0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_trash.pal b/graphics/object_events/palettes/followers/wormadam_trash.pal new file mode 100644 index 000000000..247aa23fb --- /dev/null +++ b/graphics/object_events/palettes/followers/wormadam_trash.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +217 121 153 +73 73 73 +49 49 49 +233 233 249 +217 57 137 +1 1 1 +153 33 89 +97 97 97 +161 97 129 +249 169 169 +97 49 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/palettes/followers/yanmega.pal b/graphics/object_events/palettes/followers/yanmega.pal new file mode 100644 index 000000000..3bda62edf --- /dev/null +++ b/graphics/object_events/palettes/followers/yanmega.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +57 129 25 +65 65 65 +153 153 153 +209 57 49 +89 9 1 +1 1 1 +73 97 113 +233 233 249 +33 49 25 +81 169 49 +185 185 185 +49 97 33 +161 17 9 +249 73 49 +0 0 0 diff --git a/graphics/object_events/palettes/followers/zubat.pal b/graphics/object_events/palettes/followers/zubat.pal new file mode 100644 index 000000000..548a44a6a --- /dev/null +++ b/graphics/object_events/palettes/followers/zubat.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +161 177 129 +65 113 121 +1 1 1 +97 65 129 +137 97 185 +81 185 177 +17 57 65 +161 129 177 +185 185 193 +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/followers/abomasnow.png b/graphics/object_events/pics/pokemon/followers/abomasnow.png new file mode 100644 index 0000000000000000000000000000000000000000..141b529f7d2d9042323a30cf791f58668dcbb1bb GIT binary patch literal 1052 zcmV+%1mpXOP)K)Uj{dMid8N0);qmBM`BI#tdDuB#0BD z)>P;sR?Lz^BUw%tDIqDxTUy$OP+c@M7P2|9#nM`ANERJxi`}x+^^fZvd3TaoGi}kS zK%M{spPul0Pe+N8^tnFQ|D)#VRX#0plwOs;@v8Ec7N<%Sk!zvv%8nz|imY6T&W)Co zMPwm&cM%miJfZdrjiYNj=PfBo(#P@3WLadlF~E2qcmHc}wzRypMky;6{-H z9b+7SJudK~v5362yu2l;kC)^XcZ)prY2f?Qo2?8Mc!^dk=S^1{;K>B3W)42d(zo4%$0L<0Xnn+2X4_;7MKiC6v1 z^>m^flR$(;VBVx=#t+XY@17%*tr#(b%!=VA@RquL<+A>a8JTII|JCgY#^on`K+Yrp znSfEqRRv) zuiE^M=1c;79Uz2UL;ocmux1+28_oK9D>&ZLBO_bD3^Q97bjuI5tLY`i;(tv&!I!VO zNr0y72117ZutEbb)=UF>BdZbCLEV^xovgny?Z2qi@bdRpI)AbunMW+2T&(RHU-U#5%JDQ_>A`Z8)5C&%J4gr%G4qu>`IqNIrqkA3r((Y*Ke~XyVYI3KiwBk zj@2?-;9M;e2dpm#-x#jlu2+V=E;F#(K$uiXtu}+egk|Ap)auIBUghTpu+6^_Y!Pqr z{)>CJfO9w=sT#L>&2%R?cXpk&*w|_BI?fqvi@tU?8qRIew;gJg^-EB#!g5dLPaoNa zs(P-eYfq!KZ0V*qZM#${U;7BLEe1Md!6zkWEw5FscGvt*%ISW>e_2qroqv`7U+Pc7 W3M#%^h;@4a0000KmOqQ!Mi__R;><+b*%(r#@HRdd=VlG( zCgDO1*KH?O-mhQ?%B`1?6ug8pLbC#cFc@hR92UYM?R)^cNj^cUxUnIYi_1bt5q*Zt ztC?9z*>iFxDWhW9M>BeUnpdy>0Q|rG^G4hcANi1t&JO#+Ry#YS|K3kV*IplWg>B&8 zqZ^~kui<^mB?ni3z0(nP0>Aj|>Z?l!klCI01dgjuHXUInaQt(%x!{l@PFJ2HGlf(wYjHP-slNCo3b~fXyEQL3K<^6!ig&3+;9_^ zIrjZ|N2nN1s>TJ$UiE3xh&4L8gjPNOB?8Ql?k9Wek9Czx-a#YlVvGv&g(3M>V+a! zJf$=!)g_QZi>E<>w~bjLAj@ZRGr>ynTDL;QgtqS=x~B4s$}rHccv?8IJVTmOT|y$( z`I_^@tkB{-U+2=^F!*ce34I}NY(ML~;HdB!ODQ+ZDYBq#3HdV1MPgQHiS;t$x`cAV zq%ZU)OX_C@bT*!y?k`2l0@>sdkytcaQWl#PmJB(uguZwCLMtx{!Fqlf`t(+BPw@0s zv;``#=^5RABvFdY^b)Ogo_2*+8pvzd_d~Ew``-k9-U*Z)kW#-pp5h)YA&mBgob7&h p?0$;$_x$bn&gb8M@I83>?N9Ysmc=E)ys7{I002ovPDHLkV1fdXB)|Xw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/arceus.png b/graphics/object_events/pics/pokemon/followers/arceus.png new file mode 100644 index 0000000000000000000000000000000000000000..a24917d592396d2f3aab991aebf0333e650f2a10 GIT binary patch literal 1399 zcmV--1&I2IP)CqX<(cxKPaXGPB@j*eMvB|NS84(c?K}kt*d6DVq`2YX_d1)nz00009 za7bBm000ie000ie0hKEb8vpKrFQoe zLm|GUs37W?k~VHbmY$Y9?5#gxy(l1@n1aI=tQ-XP2JCT-NaF>?j#$|4!L-RC;DWK3 z-_RMamr^p{Oe41}EqV{Kl4qpvd-Zx4jS)(fDpjgfsZym%l`2)LRH;&>N|ow=AU$}$ zd}&4T`{hgPzivQx>|iNQ=~8@YEp1>@PR=i7SN;t?FW|cJ22^}nPs~@2Mx&ABS{0wG z(O={N^g31=Whp1`5<_jskv z<|K;f)G#vc)_wv$7q;p733dF$e0$3D7{pp&3seI(~v%7O96Nk2Q=z}$+yyKo`d}Nv$;eU;SyK;ou$3E&E>C}8}{n$g7*EA09&b8tuA;TUa$8E6z1!oCiw?1`!I6*1b>(|sbbC3Khht5Px zfr6v;AKHC78qrztgAGvu71uV4cx;+Se*0Mb02ExO*R`v{rg!C(Z-h&Mf}^&t<>UG^ zYGtwb2`V^C$bVfZJiu^*QjX~^ePQN`N0zmkgrhbw`!S`_%p_t13eFNLt`oA+h7*)> z{QGw^$9h(@EPE{pN9|_Q;|+G3O|bzL&uRs)KJ6B=S|W}sdo|u5-4ZXjDvr8d>*HR1 zI((MzdP#WOGz$;Plh*~)6dO=*TnRfC`-)JbBJ5Aa5%x3^uI?O?Y*+jQ6r3eQek)Hd z37nvm>uX{7S)oy+H(v_-Q*nfU%$Mz*RcF$AA~vAlETMkMu?I6a!G39c1ad^2*v+>* z3hkOzyxZvW4MUyIa^eOQ9D8USkB_1w1SQD$pagP6%5ms^$AU216LW*Wo|q*RTDAVHV;w>X zGOh;@N9fA=f;H&zuZjq-j4gk`!HwC#Cd4U0lpACmHu#hEEB4s|;vK8DI0zLw0h`|h zh2lM%?y}A}*I@%8FCf_x4s0LG4Dvf;_}9}F_toM6Rws*3=!(cB)3lf+MIv;Of&|jYJ&tWKbOkjzb=(Ql~e{3=nvFN?WZ2fI4A%B002ovPDHLk FV1mIDn0o*K literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/azelf.png b/graphics/object_events/pics/pokemon/followers/azelf.png new file mode 100644 index 0000000000000000000000000000000000000000..3926c82f6340ff2edfd57b99601e020d5ada8a3a GIT binary patch literal 767 zcmVSDFFci0r{z!F>$d;Nm==^5$WmqAz7*EK_Rix`ALD%do?`P00009 za7bBm000xO000xO0b}Nl!vFvRbxA})R7i>Kk}-?hFc^l#g&On+I^N)>rd~?G6bdb* z7$uyB%T(wsUT*6jXcl*hag9LBbuHY_D3oruwErNKb~z~Ff`@?mNtT?%jW2LV zmy&OL{6_C1DMDyJ``OR`GePfeylXmgeka~JeJOjl=OEZTP?KRpQz<96=0MT9ufZ^H zq?B`Z6Q|QwRu4@)R zZdm92-xuYac=%yr1eUEJDg@>~W%)zkqF`ER7+E2XT@rdpb*(Bltn<#|u$;RLdo-@j zXV?l+bWGuvQn(*{Oqdp0wn7Ar&{q}eTyvG9;K6dv;djGfRcM$SA#w)PDP~16<9INv zgqE$)$*B+_uL@OeSm#i+T)<|dZ$@Ca7UFIeUGdTIe8vjD5*kjda6IB&?>tO&A>@_^ zrXoJ03`H-QeKr->!YC6o8j*x%`otit*$4$4lQ5w|7wTMdmBXC%niCB&h_ zU;&E{s1X`QR_L%OB#M2T8#Wc=FoK6-H*DBj2@}`no+n(N86i3V&QUEyi2D8uWC~Rd z9NHWXne#++>pso-nh?Q*Vhjm;BoG4Qbs@{Lab1|W9&l`P^|#{O<*Pnme_i<3#5&_E xp{KUBDy))ty#dFY6`R6cv!!s?G==|e{s85vzfxLgmy`ei002ovPDHLkV1ffUUM2tl literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bastiodon.png b/graphics/object_events/pics/pokemon/followers/bastiodon.png new file mode 100644 index 0000000000000000000000000000000000000000..1829639ab9949e7863ef38071f48c4ab81065ef8 GIT binary patch literal 829 zcmV-D1H$}?P)K)jw<7KokJ*8>Goop`YL?VS?6n@?u|c_;h;1&h`2MsWd7YApSyU^vfml z?@*ibw_@Fg-(WaTNLj$ZrSGh&2Xg3U9iO4PB~;od3OMP)SRcCXC0o-r=SzQHyfxVC zx9VTB)j&Eqr2#u5d_<+oiQ2#BMuLvrcO*5rPcV1hpnC9Nu%ic6s|wVv?*{4E{W`vI zEk2^A?~`~;CdV_RU~Y@5vx!qrD7zW#jWRvh)Hjr9fG^Hw^wOP~ZBD<(*2p`VDb+wS zG_!%De2LH$)RDfi8(nrF#rGn{Cra{00009 za7bBm000XU000XU0RWnu7ytkQ%Sl8*R7i>KmA`8nF%-uSbVJt1X-L6q*K&%ECMk~b z^^Q_#=>HH1@es(+LSzaFE);r8GK9|gBTDGv$vC6tbh06JiM?2VLnYlWNzFB(c+BH4 ze00|Lt9yD+^1P>biWS9LHn0b>Y_CvF+-~SP3cQ=;c z`O(eIa+L-v|}Z> z8#ZyJf7TmV17*9al$uF(Ing;!8kthhPt&fqdHl0)^426b^a1WM7(w|-h{phccgGc{ zlA+?1b7hGW#(I5=3qu4DP%3{)0hc)j>1PEU;40@4D2@w`_2+XwmbKkm6x`CR4V9o4h-(9zWe&B0SMz$7RUG5pTu|2bbYOE& zpKyMV*L69={*;x=m0-AxINQ!=hPBnl;La8usv>B!EjT;D2x@8JR8Ku^JqY9LU7TN<{@2^Pg fFN3D(SgaKVL3T5000000000000000O9SF000009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K)GyrC+Pt?w3`*Pysc8jlFMNiL2YBFtVsE{FLs_Cza&{UWy+K(Q~pr|8?!`0 z;41Au)Spq7HijBhtCKz-)DzmLjbR2b(@CS?@k5&{9F$1=q68D3GU7C-=G%mu9TApv zsZ2cuEN)a%DV*(uwvkkbyh^%Nc0s7(ElX^%nc&pWBHzQI zk2hS-Usew^ZDL*&>U~nX#A~47vkuh=300000NkvXXu0mjfPXp_y literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bonsly.png b/graphics/object_events/pics/pokemon/followers/bonsly.png new file mode 100644 index 0000000000000000000000000000000000000000..013d39187ee28d0e7f3420625651dfce66c1da2c GIT binary patch literal 454 zcmV;%0XhDOP)Kld*1tFc5|rVlj7!Qq-wq)v0fgA*s|% zAl0Po;DL#u$U&JqFfvq$)iq*Z>=H$Oxx#gbIckV3bqe3)@BY)BY=LEsjEsz25tD_v z5A_1i<=ohZdSPi?g{D5#3$-OHqlKZ9`m7Ga-mr=oi{iPNllt6V!0>`eb@171bujcL zJ+J=Dn^${DX|@W@-1f`0It_b+A7vtCu9=g#YCjQjsI46_qlTWcGCc3@I*^H6B)u-Q z{?1saX4o5Sk>~lY&ucVp?|tUYlngmQ_SwVcv&Wl(8YjCC>ZloVAiWL5+ceR;QxDWQ zpXRL$I}phGr^l1q<3fCCJopx(P&4F!SKP^)!ZmWQkn+^Z+71x7vY8L{{<1xCu09** wTqYOhT;gnd#Gk1}I)8>mFU~0**D3rbKUrSlah=yMFaQ7m07*qoM6N<$g3GJNc>n+a literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/bronzong.png b/graphics/object_events/pics/pokemon/followers/bronzong.png new file mode 100644 index 0000000000000000000000000000000000000000..845bc18dd75c4601f5c24b1653cfe91e7dcff3aa GIT binary patch literal 696 zcmV;p0!RIcP)K)G=$@Ko|z#122M3Qo(NVR28IVb1YCC zdu@M0rcQA|4%CZXauW3-OK>{nrZy0wZY4vBr?wd^P-jp5Q9bDt-}#brif4b5pL^~1 zJFpM{``OQa>cKz@cX$4CvrRStT87i>-HkSuKQsUl%&w;4u69V=5!+Nb`x&GW3Aw%ym97(r6?skX)Vp zriDh%7uK!{%cE1>pXg^iugw<1c1l_SFOyvTExO@P^;W2~skd~)e%xp@ONrsHL+V&` zbvCsiG-0STG<|yXxY1uTj;s+6C093sD+pJ7=|c}q(^EKEtzu*eq2zMNpYdosE<&Z3 z^v1TrCheem86(?`sz0bGU_x+i|6gW|Z_Y?cY@>96QMN!nwEbxddW?dz@+XZ+M)}JUD!5rbMzNLl>D@gPTC$%1&X(@#4DB-RZ~Oli z*h%l>VY8a+xBT~F9{;=dua&uO-L;r~2iu)@o`+^tt>QcQ?82HoWwSF@XTAA+c|qh& zwuLXluI3%~Z%&(;QSZF*OsR(1!apV%)9e>NX;5`*QJUE6eTujFU7p3fGH)HjePR1f zxcz%#&X6bFxAtq2>bDg;!Vg9!D8Jr2mp_kNJuf-2bM69-)@{OdQYP95r+krT+@k-L zfBwpu)6Ut1edV{0s#YsiH>>CURl6(#=(tx;_A-Pq1@x*g@pL$0>(TzU){~aJz9qw3k#*8n2$7piaamL#r(%-Lf?=o?LLU zYm^n;zu>I!le^aMx!Ci*->=)bdwP+Hr%?CNq>VT7mCheNdrgP`u19S*bQ3_Qb4lj-4l!J#Awl*Ua-zqpWJzoY{LPBD8Gg`Q#OI>`KZ!Gy+y$ zPhYPmZ`Iw)uz>r^3ibueJ2!sv%&sb&_MJI)-?ixu?^~p+uSCV0$ni7F&U;(WEqkK( zZvK~_(T_hCsPdgRlM<bP0l+XkKfO@a$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/buizel.png b/graphics/object_events/pics/pokemon/followers/buizel.png new file mode 100644 index 0000000000000000000000000000000000000000..65a181148863f2c0d9e08f7b7e5832adf2714170 GIT binary patch literal 719 zcmV;=0xKl)q}*Kpe+~Cau3q2nq!u$#Np7IjGYi zLnu^aFl4hac<>TGLZ3iVY|s!488h|)T1fHc&BoxtPY~!JO`-)oLr!UzV`M1l;+p-U+0fyLFeBZ#=C-!$nyLj`p1DBpo@YaQfm37nu08V zR6vXPb^HoJT03AxKX6-)tici=19 z&rXE75atc{BY>!1`earnU8k|a4Gh~}v*7%^NH6t+gZCchLYN13V*sPc1u_pE$2waf zJ|mvDWtHU}T=eqSeraMZgn2`Y{H3+Z7G>5Nj%8h4aKUm$h}Yf<4%ymCZw^Lk3%nIR z1ycBU2niQRtln8*UGclCSu+CU*xa7bXBN1;d^q<-HWHf${s8!j1tP20?7Mh4HcP&H zLm@c&%@iI%U%e~uMZv~-*^r{GzW_Ym`co{7JTEZ}Uro0|_b zD;u!w%}qN){jg^qd5$~cd=h%jiOE@uvuT0_G|kWv(EE`aQk2-ZA5lS|u=x}Ps?)>` z@jOjK6SL}0QGjZ*NxXm!Xu|q@%&ewees1LX`UN|Q;TXg9u)+WU002ovPDHLkV1f|X BMAHBO literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/buneary.png b/graphics/object_events/pics/pokemon/followers/buneary.png new file mode 100644 index 0000000000000000000000000000000000000000..23ab75b7daeaaac7b639c43a685b8b33de3a4c55 GIT binary patch literal 675 zcmV;U0$lxxP)w_dkx^Oc>G`>lS?R%vQBg?%0000000000CoaSs00009 za7bBm000XU000XU0RWnu7ytkQ8A(JzR9J=W)xU4rKokdX4_DoM5(tTOsfAQ2Yze4? z7aMF@!b=E7%$?d1D@hO0xl6XL*+5XI*D2ts`R590e7^VWN0p(fD)HSu_wMeU&-}2g zV~#oIm}CC`F!!+kdZN~0=kX8tP%RJhtIcfN1>?wiyzRcC%rPC!UJ<Z!Pn&vG;G4pV@A;d#7vI30WUFYqtnT`-c9dZh+nExEBA>Cd_6vc(=&U z@$BFvBh2jE>u^<^51F;!r2bsR7U5X~+-=Fv4O4GDrab%THP&`i)}3Wu09Y>l5dN|Y=AA)LJ&^WT-3q7(8i)vH3)O>wFr$`*@845iu%;7A(I8u zNkdBTgfB6Z@W!!qq;x6EK-5E{!HdjA05-Sce=*UfW^Ab`8&gWDAA=eXx^C40*a*+-6!Xd-8x9*Ds$b(;Y2bIlKMwqh`~pFc@J27#^CAEM002ov JPDHLkV1h)uKp_AC literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/burmy.png b/graphics/object_events/pics/pokemon/followers/burmy.png new file mode 100644 index 0000000000000000000000000000000000000000..5c95ed87d30a7616fc037c08fab053d4528a2b77 GIT binary patch literal 552 zcmV+@0@wYCP)mnLF}Zm`iP1S>VPOCO00000000000000000000-A_Oo00009 za7bBm000XU000XU0RWnu7ytkPo=HSOR7i>K)Im?eFcb&ynJt{{gWx>2GiJxNC5kr` zGQ&skrnsn_NxX04z}1K({kC?4(AO#wiQe`<@!MXEhMm36(u2P zeQwOhcT$M?wpP1uT*Y5xOO+OhZSx-eIPaGsGY+*GtS!1Jkf^h5=DOa%&!?+N+qG%P zf%3RCX2?EJQoz7$){c?u+=MiyXOltXv@1X_34j_t-^<9n1(j z8SL=2jAr;N97=lmX!rM?uYq-5u^F{ZXwNc`tph@CaYJpqw@#+-HAsK3&)dmPOVUHP qt1Q3#yL*0exP58YJohvE*L(sv;CEJGZ%q>b0000EamT z(fRhWVfG;h5%v!}2Y>Ud3wxEf#?Jg=)68fl*`-d-+X8a4o@xKM78daS_P3&m_x6TQ zR@@T(@AmsizxRtfp3lC#%y+g~{frqqCkv&0Ss8IPHm&@$w0hZu<)us3e?I+lDq~GX zyYA7jZ${t$ikHp&FJ)C%H_P-}P_CzB`NYaOUuWOiUt3?cym+?pOqs-M7am5ewVz}3 zPKjIQ-h&l0|GwPGe#!6qa`s1`nnJkTt~72w%2X=T-sifAVXjlIi`fD8rOEvDk_$7o zOv~6C(&b}bw%wF<{_!QRMI@S&moP7osEAZJv%6u#_W0$x7kAy!uv^I!6dfQ@uj4a6 zWuFcI@tJyaZZO``c*&4&?$`IacB{FE)t{yv3p^r=85p>QL70(Y)*J~22F83(7sn8f z&bOBjW*u@6V0&s4TEl-@s_g#qxSu62lXy3)ef6@s`|75&_T;k4mb+3n zlC)yp)XyvbQ@C5{%jKotTUVHVWO^u))6{rR>oUWdfL#(^w~p!0lZaKUV2+ggw|L*S z);A`tKTErtW~YUzhdt2Y=G}byAw%YFKaS%1=xl}ef0-+t)eCCACYLN*EXt^)U@kj1 zPk8rPwg}}m=0(4Augy8Dzxy?pd1E7ASjL;uKjkYg#EBm*zs2gD*l2iw{RZD=%Y4^u z6K*h6i@j6YntoutX9C9_wL7t&3V3!Tq#ib8Et_d4vAIGkvs>1F!xry#Zl}Y7F8xd} o}!6``*fvG`JVJXR(5lN95kx4P>>G^3XDFFcinaNo>IXQ`88EJ_zaz0kV00009 za7bBm000ie000ie0hKEb8vpKls#zMKoo!<99^o(IN%{$@sg=>PsXkV z6-E~*WYCay%8;#N!FbTn(QCj^x@Bk~6gm{Fa5ZT;XxEadT{?Em63E~mNaI0$C)<+l ze6oj51wVoC_x|5I`2e=EmH$JCz?a1f`QHmnBY@$!kT-=>>aJrDJU$ZQcq}3_1Kgv6 z*K-jHlNw`zE1-x0zD=DS##lX$%na6}Dq|0_u2g@%oI@u`9}6+!@-P4SvG~` z&L?}g)4ghX1{#0bPa585Ms`N8u@~kq6Y4B$#;0!>JAE75Mz+{9eB|rE#Gn6s!D^zu zJRzM?$lWLog3;aB%ob-fX2IC;g^5Yn{`geqILFf4z4@sd}$lc*P$q(Rre*+*SBI47-taa}7KU zccptJ<4%<4O2X)0&il)XyVtq>fpwv9qtUhT%S271+m-w7hR6eC8aC_&LyIms@dxj0 z=`SntK`tQ{bX&Q*o)R=VP1F#Z!s6}q{G};ja_iU&o-6&nz3|71uSn0&DxBk>O@}JS zO#CEaCQj3_*E!_vSdlz+GBb_{PLJvF3Iov!0M!eq9kzNI%Mr;3s>VAlP~}XW2=40> py<2BqjVGFYRYBL{M*po8%U>rCcNBczxFY}n002ovPDHLkV1nb%V_pCN literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chatot.png b/graphics/object_events/pics/pokemon/followers/chatot.png new file mode 100644 index 0000000000000000000000000000000000000000..ce96be737307ce03988942bbba1a42b6a7c27dd9 GIT binary patch literal 557 zcmV+|0@D47P)K)iFy0F%$>zgPSsnldIw$IIWyqUHX>7 zEg~H{TMB}ioZKB891auP2Gh;iT^!rxAlpHqgOiJcAHrUQHurjoI5-IXZ@-t^%cbev z1;HkpY_iG!386ld42>c$A~U}Q^;xv5)3M9a#A}jfJ_~3EKAVQr=bskP;B{G|)Mqi_ zfzu=sQeD5drIeAx`!+|gX$-dT%cHyMwjF{Aa4 z6CKa&e+Y8fknxXqYtc22+5C-hhX+M8yVwqwEwRm>*-5ic-Hsb_5WCD7WA_n{1Bc6y z8SBqIKHQUhpE?{qUd!F?>e0nEk*_bA$KmPD)|u1fp%dG)3Ga0AqdZ*u9t4)ya;E3Oot~ABnx2e|jE$C&K!wO)u0@*ykk47*5n0T@z%2~Ij105pNH8!k270nmz&PL_~HV`W;Whm);n9y=YM^pbuKqDvRd_MySVP-n)H0t z&4N{zjn0*S^Qz38>wW2qWBZb~&$s0){do49)9I%XC#~ME*!)~u`^CxFNX=qtmObj_ zsY`jXlVZO=S+^$SjK2EOsI$@sXEsTG)bM_r%aOiv7WcuvCgTpJH-Y~oIT&<8i|2JT zHGSXEwB%a!^TXGE9oUiT*s<=cmK%4{CWU3(Gnf^lvmGMSgZqD7lz+Yiiuh9Rk_diJe|G58^^x?mgW9Fn+a000000000000000RP|8w00009 za7bBm000XU000XU0RWnu7ytkPxJg7oR7i>Kl+9{`P!NShs(Yn`ELEt@i=>6DQfM0L z$^>!)E|bQgcNZ7szCq|dM(R`cs#RxhY6+#?IgrISGoCXif11`;Uw!q}*KbPq{#ejc z1ogdh?&*~;{EY57olN&fil8oR)xaGJXC#t#MP*U2t+3^MFQ^X_O(|c9M4&s|lG{YO zE151xeya`k45yV-=CQK~i8Vlm7G=$}Y+(%?$~EePp&&Q=3KtK!$sk0`3Z6A+Oqsp+ z$%5ntMnaH_C6h#z!%~}3Heg!Qe5WsbG&QD}4Oif_n(;unYA%*HtzgNwFS{B5yu}J_ z&v%%kCq@odxoR@LZUifiAgv8D9>r1Ex&t6KKQ`AS{Kv)~qg$(H_6k8GSn+YvYz3+0 zQ)`g%dCSHDd=mZu-WuKdbrTURdDnh$W+a)n;~+)+3_!w5j^SR3FsFhg!*3Fm*sGI@h9ekAm$3Fu@&Q55zYUZ4$ zKXRUTu@U4)@`k8foiwK3tl4-HUOH#N9nmr;EA6bzQ0=hG=ju@Xr~BXf1TluN&NM}p Qvj6}907*qoM6N<$f?IR-z5oCK literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chimchar.png b/graphics/object_events/pics/pokemon/followers/chimchar.png new file mode 100644 index 0000000000000000000000000000000000000000..9db06cd98ac94b51d7bf44516116066362c9e013 GIT binary patch literal 634 zcmV-=0)_pFP)8bg_0qN=a*|~9n5fRZ*L7`buJ@ljb00009 za7bBm000ie000ie0hKEb8vpK)IW&YP#g#F@ZQk*c^pj#Au+>6&=T_q z8gO(HTuy`xnF`%Hv|9^Zq7~ob;5oTCIUENL$E~-VBAg)H(LZCBPAy3HZp{mA{pFdL z7E0j;zf(THU;O>_sZo?e4msqIhm*n|jI<1AHh)If{=q0GED+2~K`z^*D>pKQo6Y?N z1=7{BYzH|@W~>JU-Yh!asglH77L7@u9?4vZ00)ZZ(Fr4P>%P@MW=x3M1qUWNuGL6X zrE=?$iIHx^ui-Z$n8zJQwWEn8bv&?`Zv9Dg4bD?EPwC5=jBdA@%#0}nsX*55; z#~+Gp{_119t%Y;2ojbfwEN~dLkKw=^t@Xi?RP)Vq`0q3$KmOe})$&CPOyh1Q7hrvT z^A-#!y;|QGu%BsJ&~z z1(dNy@&hQyr?v(Q1zJCa{Z9FPvS0qR>pPwu!X|Rs3G+~~pkV8-``CV&_1gcOAEAY; U!lePS0000007*qoM6N<$f|Q9N-2eap literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/chingling.png b/graphics/object_events/pics/pokemon/followers/chingling.png new file mode 100644 index 0000000000000000000000000000000000000000..ced46d317a63a24b268019a4a3540b0f89de5c49 GIT binary patch literal 554 zcmV+_0@eMAP)G=Qv00000THles00009 za7bBm000XU000XU0RWnu7ytkPph-kQR7i>KR55G9Ko~u8^ar#MCkruJ2+|?uXycI0 zLM4-lq?3!3Zg%QW=~xR5{)2#1J5(I~2MTpM|3QCD?*e+?U97d(4uw3(aCu+e_udN$ zLOF8e$dTjUqW+5T*#1R9!Y(WXv43y74~^XoXvTJZ+-Jk}J24;ogJJXWYXki^+Z}^> zOEIG^#8u{KQWiJLj^_|Dq#D50i@}pG<}2`7j?BU_tEB$|?v$bcn8+A#EU#{^6A>vb z*HagwGOMHk6r*A?(p%zz_|kTvNK}kEYo5#qk>x7NLcYNRjUd$NC8J&o(9J;%4M6^& z5ItLx7#S)H8G3k~jtP;py z(M7mQlhB*k73+DT2{@;~Eb_JFxS+!kwKB+`e=H6O=#M2LQlF{7EnP|iwRQkMWRq87 zZ01X+_XK(mzYXKo|z_qln?g1W_9tnhXs>w@%`s z=+-&kKy*zzGzeX~gu0~`TGO~hTzYhK%9suoLqC)~-h}%@63|V|I|P1B`#w)DMW~*7 z>Zzxm|2hX(Kl}mq*|o^>!k!$UIP6;F$^h(}W=m)z8djMInS6j~2%a|t!}Cu1kBh6X9X;;CoHtQ+qoQ|O!R2tRQPGRdMWeJyIb(fhTh}> z$usDmSXF-1qeYn&*B$WpWW$H!Q>W6?W~m$Ay$~)N#&v&h*L9?O@+G?4^Q2+n{0000000000000004G(I600009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K)G=#=Ko|z#8xEYcfzFCx=oSbBIvHa) z$XvmHP_h|wscFa1ki$Qay$wYCmGum1zPtF{)~UWzo_oE|Qz3-(>C>mrzX=WNnufRu zscUryw5hueob1zeh?`jZG$V*j-S5C{k{m+ZM4BKrb=P@JB#Gc5W@1T$V=1oG?#^=H zMC?;>dnb2h(!ASL{svF0yG<;b#Hi`G5~7@iout{<0Xl z&b_7WfKK-%Z;tzFa$a}=Vyjr%u+x1>FdgJ3vkm8%t;kn8-7@qc$VVY=YqvQJGt9IY z#^B;R%MC}{R=bwR^G{{7W|@d__~k8^abM{p z--o^QP0UvgtXnSG87;tKgJucdkTV8*&e`oibOiooWMcUJt^8Sw$0ij88X<0dGDLMJ6;pyr5*=ecq!C^r`K>z>%zcj%100009 za7bBm000ie000ie0hKEb8vpK*3C=XU>pbV=TKT65FsKm86HeoVX*el zz{X$)g(?i@VKBV~qSCky6;Eav*>RhL2~mgbBe7Sp_z&zb@MK7NE*)C&@PJcLy!3C_ zlb9!OOX@av*kQjz;ggr|_sP=~3c&yQS0;5Umm+7QrZYBj8{c#_UC{Fv-7R+YMELAa zrj@Ouk**deyZPpVa_dOyYH_lQ;c9p}Q3H?`?+i_K^N~2&PPP#VjQSS}h$yxb4fj?_ za8IHJAhXcgS|f9b2GgWPT2g{no|>V+sOh{}IBD#XS4&Bzf!`tp0gn#89wLYS$*Adq z_a^MXXFCa|_mFJ9H3H(Dnm8mRuz^w2zyosJG)db`Fi3Gj**w<|Vx1ameYOKLiXL)c zv}N)^Q&!vBQoLzkpHK`Gq`5w{&JD1qxw}TlNJeX_K?9(ufr4%2?RKyrWEwb#5DT!R{}ULrDWY&7d?uyf5 z|4e5eV0O7<4FL8;bd1gRQM+yE362EP*BGk^Y1n;@Q{#(5;Zif%<&HZ`7<+jDEsN!a zDb+gwuMOe@!4`&RJb&fy$#gFZZa}zXg>(ChyihDirW9|uE2tYqp3i}J zSFPUrhN__gyxvBr^kyHgA)&wuH`SS}An=uCw=m7j0mgQlN%gJ)2&~yr+iLgxfJU4GuEw}K%HY=oem_XBmf%7Jo zKyXr{9OwU+p@r1rZXv{2?mZKVo%Fo(Te1rmZL>oAp(BA%Gef2grBb5pqKjGilom^F up<}l&HW13-H|OFsROtA+@DBt3+WY|WK@CXRFz*-u0000*H0000000000SBp`K00009 za7bBm000XU000XU0RWnu7ytkPp-DtRR7i>Kl)p>EKorNb+?J)FxCb1B4#E-q(d=EL z@mXxLilCEd4e0Ej;82`ZNXC$%xelcvQ|^y47iseD+5{;$2>EWG`|`f;y$d-_>(r@J zr%wMz#LMhfcFblbAbD#nG!B!GZJC^gv6Qc{kRB9Tv~UsxVH1x-#_-50|EfU?lOSMh zjuue3lq(A2?N~I!fhzwLh?V2*I8VgLhn1&txz*nF?dRpa-Nc&9iXz+qar%-Jm%gYx zmCL~1)AQF&&u(JPVTDX>Bj>Mo3P$?u+stIZSY&Tza=ar2s$44bX7BjVB7!~S zA2IfTeZecA_e?fGfdxlO13lsZIr{SX9DvtF`ryj<->@$@TKVA3PjDc()=X|dhUb*_ z>#jOmQo8?GjjT_W(`nzW{aCQKV%?1oa3Eoh#N`Zzk=21@C>Ux#OAUjL>IM^P7*=(K z8FTtL%{5brMIr^TP#~lL6yG^Df%2L;g|zmwp=05+iwTuj1o#Ub@Bu7z-n+a000000000000000oYh!s00009 za7bBm000ie000ie0hKEb8vpKmOXFVJP^l;Eas{%PC69?3bOth9a?lO zV8zI;w0NdOXi7E{LsaHfo4eHN76V06eah$fBI?Cg+}|K0JZFSa9m`ThlZfJ?7IyMth5Gn4v>~{2SR#l0kpo9T~+-$Q=qc zdd%B&*vZgrtK-zW3G5xZd`|8*r!m=(76k5cM!{z=cDPOcjN7R*=a71Bp*sc<{Smr( zuERV85jo}v_h<9r6$Yl!rD1sV?#x}GpHe0w`x&8+KBP>?X{{57IidIdemcR(VB!r^ zRHeWDC5I(^26j8R-{SsR)1Y|m9pEFf+X@xI(@8LJh%V|8g$CQJpy(cvy@^@qC_!o$ z3w!J&3EhcKaI2DF$2vLCbmf*-1cC#IOuYkF2<-C4-71#H*C}$SAE_M`CRH`C?W$sK zMTG`Gf8M~NbPo6~vU%_|FhJj9M$gb8c!!C>^#hrG+dMScItfNj{$}lNjcxVtZf)8J zw{Y7=uG=eLBUAl%-)!2#gew!QW8tr%x}KL=RwcnHle)dZrg{Cgx(zj(FqN#%FS6(P zh2aX>mWi2k8Rr+T-(;tGC)n{->MFDQyt>amsl43jLkz6^l`r$#}IMREM}Kgt9hIf`Oq;`WT}8sOF$PD1DHrv~1C~ zj9Ybxt7Y+_6)Fh^E?H_*0+uc<*lINceTWGtJkFR34ng(@YN}@eir2zLk7_jeKdu~wQ@UBfg^X@tbEtRG(i_4955qCZYd$1WrU3Xe3sbA6NJas>MDtS)vmuEu2Ucq;|kThbjf2XEMdCdrNA&mkn>!s??8RB$2sGL9Lq2L)5S zSR_nI4B`(K1N(hO6oMRKeA{A8dk6UXA95$DpJIwXE;z>ipTICWGUhO*D^sTOY5x21 cbc)Bv{|gl!w;a+E!~g&Q07*qoM6N<$f*0oM{Qv*} literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/dialga.png b/graphics/object_events/pics/pokemon/followers/dialga.png new file mode 100644 index 0000000000000000000000000000000000000000..2cef990b3c970c35e665b9b5f26ee6534b6903e9 GIT binary patch literal 1686 zcmV;H25I?;P)p8hHm8M z_;1*IcAdfeo?fHus9%B-^7+a7e5LoKXGajyN-M3j(n>3>w9-l|t+digE3LHBN=p#H zE&2bUkhu-N%h{X9rCW0BSC4Or=b+z<-`}(! zxJ1vZNnSz@Hif&koxwknaX~MlVc07(1M;{act1_vs|ObeIoJe!+wR2#i06X7dpe9x zVghiu;Eg8V9J$NP03415kzI%l5X%MKh=x(9vjcFrHW~L+SF@`LIoL8#A0dSqfWw8- zax{t}?P)?TO(NnqEHDIl{PqF%rh-c>K@OLCQKY&Dkv&MpXM&?JK0qA5T>x;Zz6@1& z*+%r643Co*-#8sbNNFeJpKKe^^D!o)l_T))$0f<&jkVRg!&>vlbI|ssQ?o?G#FD$S(8S|n5HxC?6IDKGH=4om zVgL@urMl*-WtsO}MgR_%+COfrmC31T)GN)!CJq;|Rn6D8^Ge$b0?H8La9m4PkqGWt zi~u}dyt8rAz|R=Z>+Zawq~vgH*w7_O(v>FFkH?AN!w&go2Z-kxaXnn?dSba`9l4bC z3XhA8vMx)qt~+!;9v49OVW->aSj?pehvPS#p(z<&%inUhXd!uAYVI0vT`t#HlQ5P8 zIjiSk4(9R-loIf%Ae0P*28Vn3S^_Sr&)_=#g3L)c=hSBraGw=}tmEX`yY4{(P7WaJ zE*35a)3L{N05ugdkjN6lL39I11)#F&rqpXpabf|CSNp zn!lkMfHi4#JqlM%jsD>kj|<>8Z*7QB{|Op+UI8tvIWRxPGoWvesT?>bqj$k}-XDz> z>Rm)JCNqBirbrdgPNQiJSOMmo^|6FrYK>2kjmAhrsJGaqm(Ebwx6v7ugOYLeu6uvg zk4A54f}l8xW_+yC0~lzC^&W@x3&`gJI7Z{1jnF01ph;;0$76K2fG@(B#(^}tsC0h+ zrTb#^o*rN_=WpqQxP|&y@DW1Po45e3d6gBwI4j8ONP7S!>VglPje8JJBkdB>IG9}2 zg8R9)H+oMULejsSCD?l$4NZjTk6Q40&glV3%Y%X`L-`BHxJI8BOi6~U1~7?CZ?{x~ z(O=a4<*V~4-(Us!AlMA(BMg*-T3kS3`lvMlQDn>_0)WJ7z=BY7N^$_R^!qr>bqHq# zoC`J_#{OBS78j7bL=)n0AO{)Ouz4~Cj0P;&78@RLayhDip34>qX9mQAqiDDyGfx1N z2xkQ(W_1#7wq;^w0}&+uK~Zv9T0Y?C@PVZaGawesJc!N(nR*AoYr$*I44~JY%zVql ztcIB&5m9`40AHDLdcdjR#??6zwUvX9_117^ZGV0 gT#4VA$8TEy0IlnjH+lskC;$Ke07*qoM6N<$f&%{_ivR!s literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/drapion.png b/graphics/object_events/pics/pokemon/followers/drapion.png new file mode 100644 index 0000000000000000000000000000000000000000..f84879346d42370132fa658398faf5a04f8c3d40 GIT binary patch literal 1059 zcmV+;1l;?HP) zd2wk$ak06G=Tx0U;qNd4Y*hAxV*8p#T5?N&)1100009 za7bBm000XU000XU0RWnu7ytkRnMp)JR7i>Km9cB&Mihsqm?F$UV2!JE9tOP89$Q?t z2<8f*n~+5ZTSZs6SU8R}DN+TTTz5u=kl~tK5mG6#oEtw26(+^Oc8M$3*CvIs8;lD5 z4S6GtRD5wau{Q+va=152DB_x^%xWW@>f&Na9dm(o+>U2ojg>9znNGSy1PVy3gd5C`c@dPWd1{2z@A$Z3Z#5Tj z(hGZj(hU%79Lyanq2adfSEt1)2 z?6?t5am&G*vG_3|t*}lyW)brAk0(o2OX!5irK&?9X)2n)I-xg_@{yI$uolt*t|vX> z4sO9#hz$*^gMGaC=X)nBv!QE*$O2~Z5LDbgOM1Zh&F}Ajvl1HCLOS4h`gO2}=@^%U zdbpbnd%6MM>^ojo#+~r|My8olzE)xTa11z_-X0!;mC$gC0?M&YGcGd21BVI3sAvga3PW$16 zJa~I@a^?07o@yraF~{X#w>T^3=ll{yve@A1y~DCS9<_?Dy&@~PhnGS0ngzPRRQ0?gxLl#bS{1E%6^ zu?X`7=n-KPmgJdcZX#mc87|(5JZTX~o*_G(!5cXF6?u?%LVB>5$;pevr+3DeL d`RGQ&zX8gO3}KkD#>M~u002ovPDHLkV1lUO`*HvP literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/drifblim.png b/graphics/object_events/pics/pokemon/followers/drifblim.png new file mode 100644 index 0000000000000000000000000000000000000000..69e8ab561a5ee51bfe8c4180126fe9c86652f1d7 GIT binary patch literal 611 zcmV-p0-XJcP)G{#ISpfk7siDbf5g9>2L1}4$eyw>900009 za7bBm000XU000XU0RWnu7ytkP*-1n}R7i>K(XmScQ5*+wmmoNDXl!se0wKx9ocjw} zbZBXEvdM-g1tJu9K{fl}2nxa>h|@tq#kT11VbLED)*_`{5HuCh{Z8@je%^a0Zh_z7 z@bkW3?>r0yW|`&RM9GOguLvAOB{tlTwiTiKlyBu#b(hHSdl*$|PGG82#<6i~Lbpq7 zD@VFYX`AmprMg=1cK?`Cm7UogvXzFeQ?(^BRe27YpPgfDh!kPwE0;Ba%^$_FbgVOa z=O~e_Gg4=2k7xqxtj@8N?lV`34C%&5qY%z#1+Lc#$K6;Om2O*S2eI^PHIo&XkUYo2 za+vaNY<<5k*@nio43@nu z6%XNQc8P4At#*rh*+-3Q`Gt_E>}_fB#9bmog5~JS#Y?0!IvCj5%d)!%4^eW$9GB48 z%=7o}`O?QtXtWu)3{%lO#>FDUVa^XovM#jjX3m*oAM5m%d$tzcbs!_ELg3u&r!ibi{%cN_&e?xrbi(kf;I$CZ~8H1 z+45$~PPM0Je%?~N|MUMGgJ~WrLW?W6l=PQY@7OoN_8O~|=EdE8_V0pj7=GF(ean=m zb;=7y#Vt?MuPk-g$S!>VMf2=6~N-JUM)u`KPDXKQBE}{&C&BHxt(TxtKq< zxx!kvPyAKHC7Wxkb^P2*y=EQX<*=4V^lb9o#EAE0rJ^4WO!_Z;E{1*6)tr5NyMpH1 z%(kBSn0b3mY#`9~A8Qxxo?LnF^0U*^-uOMUjA@wvLMDCQ{^$c|&8_kazn^W`s5@J1 zn}7G)7kA$NVm{pF`=M$5%@;L657yaxuv9W7eO@txrS38lCp}GA<2Oe(P3dxQBk3xp#T5?000000000000000lqnw$00009 za7bBm000XU000XU0RWnu7ytkRAW1|)R7i>Km9dWFHV}pxh|P6Tb`J}+l#qj5*&>U` zl`RrD(A^b_dw>K%THh82y~RlsV2n$9o7GchNK>*zc(cG=lK>fDf&E6q{~r!Ti;(~0 z-xBf9Kf-TS6Y|sJryt z^mQgw_H1!huP_Qm3pl2P?1aVj$iBkU7$M`rwD0@#Vsn#GP(`dirBt>@Ozm3ZdE*RG z(9&e+Arm6cHg(?I=Glm0P?QmSFT(M$Nl7!k%UZmbt+k2 zoRmL$;aOU?f{T}yG3YZ8m=PrmYz;}Iek*Wbe3TOblc?_2;?FXdXF<-)mvq64pm#vQi+Qo z2gB`OcUds<#c-Fk{kcDPqd~xGt@Qi5*1S)Y6Qp9~o!B_RvZ(>~z=xM$;EP5D;&|e# zQ846P3wl-aa$ia(sMgZ6_7@2SAK(y!7*Eaf#V~3T$sryEL&mpOni7B;?SBfubH&n& zgoYTJ1jeb(nSM;Rb#m>Pe!PEZOfztFVusha<@%{`f@tWOx9sd{WDEe!-Dogp3W{%= za{P$tPKx9X296+K(!(KnICPN}w1%EZnVXA5VmrPc6av;P}ks+Uu{PwE#5f} z``Rp>pfwygD!z>~nM^3)s$^2=>x9xa=FQbEYg; zT3qcb)}j8S9UCRMi(v)%gs)uyEMH^VDPEe%_LP{hZ>ikO8D?CX=>`H;bk+`j0rg}; zKHdcxqh`ph($ M07*qoM6N<$f~+j9E&u=k literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/electivire.png b/graphics/object_events/pics/pokemon/followers/electivire.png new file mode 100644 index 0000000000000000000000000000000000000000..35320b0517b68a26c1633d1f8c7fbd2c1aeb5df7 GIT binary patch literal 1021 zcmV3Q*Cap~##Nf{w=Ss4KV0RR910F7~f00009 za7bBm000ie000ie0hKEb8vpK)j^BfMid9|K?HotfCP)xg9k|$yNBqS zTiHw5O9@$s@t$-p^kQw-$OI}F!{V2VpgpypAm5<$GlU+ph0@&Ikp;^u^FLdLZR>(1mvrAmuQ>f6lx!^ zc#iWa$5taVHY2o5D&Vnzg8cgCyiFV#1L+3ZT9vwiWgOXHJwnUv)!_m$dGV|b9GO&W zn&|~uIY~~8Bcs`s;%!#y5n9HH;JAE+Jkb-fje!j=xW%8W&duE+Q-H%!u|&KTe#SQIx;d{QP^i~ZJ|^RY?FrHXatisaBM;jA%FQE;Mr^6 zi%(5gPN);N;03CIZ4&N3DEK>~1IH%hu?MS*?fzy1;oApXU3<_~I8RPZzrM)uOXFu< z;Mj!R6+UD>&ww|-DL)xJYa1}G^L(Kj*rvZI`uw?R(E0biK^Qgyqy$!YKK^Yve6ZI( z$F3~SmdndVx|{OUq+xu~{5e~byk%$ixv|3+jLDzBkwWa?nvgjRRt@J>>dH&kJ(KP< zQ5!h+wR-ai$?nAsP3e0a$syEb-J!^N~pM4C>gtV;9-2B+=6gvBnb zn!-#3&7&9&y)ls1>bcL$5L5&3jN66|kE*2JtaAL+8_10#H9~a-gM`Vdy8+@9uoSX4 z20C~Ce#==9`}lsV`N0v&v!HEAWJxg*^M(y{rcy^l47gk-rD+fYXPe#>@AEss#Pkqg z7FyyJDHH4uoQ}T6!8FWVn+;5~gDw!4T+Qm-)j;j6$O%f^VWxqq} z;`th1U)=_1rtJ3DM}J8fk)dK)-yfUMr(d)S`%*#gz8xB7`RRGpu&Z~O8<3-N;-@J) rKF}^0*EsNB&QmEzC*?yc{+s#-Ym1{1iw~L_00000NkvXXu0mjfCB5rt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/empoleon.png b/graphics/object_events/pics/pokemon/followers/empoleon.png new file mode 100644 index 0000000000000000000000000000000000000000..cf127f9bdb9a62c8e62216ac2083c7608375875d GIT binary patch literal 824 zcmV-81IPS{P)K*1b>LKo|yaOBJV6HwF-4YZQ55t0gN+ zx5%=hOt4f5)7iONj+wf24&b_unKEDzwyNNoV?;tx`_J`!=a2Ixu3Bg}US;{^k)QW$ zVFg8bnV0!j1D@lp!+Iz?n<;v_(NVonHapMw5Iof|t{2K?=lRgu5zq8jhOy<;7u3xz zxSG04^c%;H(`dL1;@Seq?1KHN*Fw#hY^CN7Xn=k@$}d_0aCtptRSWY*yM z-q$!4+GNuKtT1S_!wLhm+4Jabx3)ks9ozaee*e)%O~&+z5P~-w9z}OvP~DzvcEOwL zski8$Cflsg-fVdJrRAE!0?F9`v(;+tnvI50Rv2#f*46g~Hj^@xolS(DWsJR9qY0Y^ z&zHM>Re0#K>48Ynw``N7jVAlqr@?mHaNHD?b+WSq^|0FUdc~1o?zGHLFVovaROQ@x zerAN^G^z?^D}az_)gSzbNdDlw!l=kkFa6I8AC}FSr?S8~K9lp8be){W9m~xqqM!37ND9#exIf z5KRlrR~PsA1ndUuqeE^*N3K7S#cC_9< zz7^i{m4+v0m9ud*+ntGDg!ZJ1{xF9VS}62UYg)ZuvG&&fYk=EG%mXt$K>+~)Nnv5BL2;qc*=Yd*@p+;7xzRC6K>z>%000000000000000+C)>e00009 za7bBm000ie000ie0hKEb8vp(R7i>Kl`&6)KorL>cb}j~OgbK@jp+oXGBC<5 zvb7Zl$2Mu4?WCiLhOg052l(JY7D%;t63CV?ho)ImO^|rtAb8B=T&I1vgptgjfJ?+9e%A+?E6K#CB}t$3(8< z4F3$gZ6-K|Al!3F4WvJjZM@fdhZPF04fqWVt2x4w2Y7*uLsvKk<1@BF5UtoSynvpy zQJ0r&(I)8V61rkIvQWo$5S>g<)Opi{CEI~v5NWrCiD1F2eRdG!T1WBDT3duA?s~{g z7DYHY92lQD2SJ?dU>(*$9PguPo(FZ8ADH~hUY_S$WZ(m1Lo8VFxDMj=CrtkE-VO#P zS6hD2@d6tH&wdarca&PgLlC{iOP>eYG?S^DXF>1(YayiaWO$*dAUg;y?Am600009 za7bBm000XU000XU0RWnu7ytkR7D+@wR7i>K)-h|_KokIA(Mf1?ha_YvIVd&4saNA6 z|H5F5L&#E0HfM3jQrnQk2sK(d1|kb$i^Hjx{sM!c1i6OLLMc83%~CRS2pEKjdp$`f z>8wcd(6N2nckk}K=aU5Hxc~9bgz%SM8P{sM->tB)!rZmJ!s!FR73PG6ooYV+J;e~B zTQ$Wbv;|Pptl!$nh6`jam~_aYNkPQiSk&H+D(y0N5;ea-7$Ga(0&)u;2Ztl}4ot?AiIrji zz;=QaG}}dHSTJh$0KS;bF0Dih59^J_b35Mc$;S&5zX}RQ?L>e09(}p&t4Ze08YG%r ztogyG%OO4s3P$Y~lr8k_@k~uJ->8GF#t|29UN&yJjc}T%$uI66Rne?m57wxmpVtrb z$OKFS&wieV-SzPBQ*#5cesVKz9sBRDK%JwTWH2P(4%UJ@YJ1Mng=e`}!7yD)`T!==xNr1;17{%7q~g-Vx$EDKt5-uatI6d#xHR*zxV>*JPtD z8*Br|ryI23{N~MhK@%ap0pi-71Ok(lTE4WH?`01X%x9FTg{Ljuch@s*zzsmJ_A`&i zB{lGQn=yH>fw5N|fo76ho7l#7CdoVydu@OX|Dg&%tO3T(4)Rce9$Isp4cyBp54d#@ zSlD;G77PeQ9cn-f4d9YVL9(*+?KvC5hC)Zj)z_NM3R;NX^ zER)wDyWjcWps{(0TMoVxS%})*)MWC_r}? C?y0Z< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/froslass.png b/graphics/object_events/pics/pokemon/followers/froslass.png new file mode 100644 index 0000000000000000000000000000000000000000..741b66a3b1d18542868447c9107a74c378a66665 GIT binary patch literal 773 zcmV+g1N!`lP)K)xm4pP#g#FoPvSf#{Pj|M}#sccqwkX z>{To-86AC~w@^YP2X`FwRs_M)4T7C^nKSo#@lYqogB`XVcJSmxCL@+c|Z@_66hd(UU&xSP7E|Ds}ttL>LjU*TBgz^J<)3|A82xzOGOE8DT? z0N|(hvYqd1ESD@Z6bJ21cuB}tIv{KTUl8&ho6+VCY^zinv_C;2q(ldV&Dq4QDHm<6 zw$?~fY0zHP5@)Gup6!Mg*o(G+O5#x`STeN#Y}&a0v1gl1Pe>+ClxW}D%!o&%y9|TA zoRIDJJ9GdrLYX*1(SEy0D(-%kONRC*JW4(Obe1%kMo5yv4FVr0z4MZngV2|Ow>#Ml zx&biCNKza{`xt#m5qS_a0QT$0oknlxA=?wlEhXBTypfa#!EX!NFZ;u*?e*yjdw~q| z-&mkGCXn$y8hfLGR!MhC=c4b_UJ@Q@1v`Wf6YawUK|FN1-iP33kX@M~j0RaK|;R#W3xv{b7IZ=6Ok-@n^82|tPFaD(e00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmAh`+FcgLba3~+4dzT=SQ1&9I^dn^I z*cS*gHiH8rC=?4w2}6E?juBA12liBCYBvpK6?t+7BQU29-t-J5tqYHts0Cc0Q~pUG zDgOWAMU>|~>QRsSZ({5pn22bn(`AqN41f`TUw(N#-SKnT3uUg!an1o8D$jxOlrFUk)_1pb;q?Eezt((hQiCiePPGmRF^_UK(x?U!%q08I0 zxTn-Ih`Je+f)3UNkFM8k-#y-neNyTR>t+rRK=v??^<2NLqxNl=s{v1Y%Zsd=X`ZfT z(Zf7m{**UU(r&BETam;0-Id?Tj27vtzyVvXiX?CmiYROiUDgtUz6LnOiH0LlpJqDr zlU^XbcGk=@Ob)6@@*W^gZ8?o*H6WGLBwrRma;K4frgJn zla~e|Ksu@ob>P%+9M%<)&8cP^KsNfSni4#R;m5K(KWan8?T@lNJ7`Gw6to&c6KFUh zb(v)ILMdcOejOURlz<%Fs01cuIY5Te zFxn@*0wLIgK`L&$nG^{&WFt`kKGx*(q~9N$_+3nMK3it?OS{J>Gl>l~2StEZ$a|g+ zCj8I_TxEkv_{@X$mTk$r zh<6Mb#|xx2)aDd5ndeKi>0I&*|7WS-S%LzGD6DFb&VB9lyKOYW^;dJi{UUY--)s1* di2rBq)Njkb-_w{^ChhFN0yX<;$3LAfzW1E<=L00009 za7bBm000XU000XU0RWnu7ytkQtw}^dR7i>K(>-h3Ko|#bA>2Vj1{o467mQ`xv~o%) zw2SegA&bz`euKu)KtF*=z?nKUo8*|JR|OZ35qM~t#azCCiAy`R&`^pzwAkQ-3>g9) zdM8`Dmq;!&rBj~mclX@?IZ3u8-PBF}v-DuTJW#@U)NVQ(~ z(b%W&L^LTE1sxPPsoq1AF8YydrM`_2qJg5xQcFia>nJFJWRrn7kh=i2T*rAR7YB+a zfrBCm96so$7!M?Y>;;P0fa7dVbP@Sd+-c4 z)AgIvraf~MC^>f3t6KDl zM#Schgq7lDL zS%TTOK*02S6)r4eT2}^4&!iy1{L+7D=p002ovPDHLkV1iOX Bb>jd4 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/garchomp.png b/graphics/object_events/pics/pokemon/followers/garchomp.png new file mode 100644 index 0000000000000000000000000000000000000000..faae844f780ecf293a98559c41386c3b9a2a1e94 GIT binary patch literal 1162 zcmV;51ajQK_k^VR51P;R%5;5$Wmqd6~&+X=wle00000EV8yV00009 za7bBm000XU000XU0RWnu7ytkS07*naR7i>KmcNVSHWbGNBI>sZT)1kAD^e*acD&16 zmHY#XkuYHjAI4fUJ6DBWrcI1}f=rV#kZJ=V45UgENEMb@W7s{(j$+p5!Iu|AtNQ_w#?&Z&Lm~)`T#PfAW9Fv}v+*q&H_~IjfA(WchHK4X{0G zlC&q8P_3s1Gp=M>?yPMJndK+hcDy@wTzg)51~;omOEPCt+7#wnTdxlJDXwIj0UlM8 zoo1Yzj{=@Cbb#I?bcP70Tw0kykC7pO3A1O5;=y3X?v>9jpPgNbr&y2#1$hWy z!lh| zEJ+>)XH5TunenYux1At944D)9{qKZ){v}3b%y`>6re9$e^kORtqr?3(WBSLA)Ann< zR$kB>BG+VTz#y`m#HKMV_Yq@89WM_~g#HToB=#XVO!%X1a<8}F?eB~ibcP1`wm2p? zASUl&MXCzMUBr-4$Mm4Q#@Yx-X?NczxUQ2Ci(>ahyV&2o@Pf|p7WvJxE^z(R3|`-W zpl}gKR&<=C-BzxzYPh`8U7x~wtIfcyNld(0EMC0XI6*MHYLOEY;kq*!LD?@MCg~!M z<)P*7UsLB$AhBXHpIZ9g`&* zRD7voD3L065A&Sk7(S6w4@M~$44N{>kRk0WQ3{imrBoz101nJF6Y}!tld(C(quvuBSvi!e-n;|fSc5J`WDN$gq%YFkz+ObK)7^8 zG3tO?8`ufb(H9MWjtoKYs3zm=sL(KU{O!^avko!5K;CUr!785&0*_y!Vmkb8#|NAK c06*FO0lnWrzacW&@&Et;07*qoM6N<$g7EJdF#rGn literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_east.png b/graphics/object_events/pics/pokemon/followers/gastrodon_east.png new file mode 100644 index 0000000000000000000000000000000000000000..75801c316244de14f05a8e4d0618e0be62272105 GIT binary patch literal 887 zcmV--1Bm>IP)KmAh-(Kpe-fAc2-b4_n3rO$Wvy(80Jv z2_CE>C#GbuM3fim;2}^l8d^c1U_%6^c+J*DO-w=c5(+8AU5xDx>J7!vG5<@?58W#$ zLm^Aa4;%Bj$M#_cq(z@M;jJLo?9JiI~KMU2x1U0qat5-07xzk7$YLc$o z7Wqk|7Y*8Ws?eJd!3#_Ul2CO!Q$Ef;Fd9H8BZzT4?LA8qb|$1hKcdSLg_;+a_`m>P z=wd$T=>v@W1`Uvf9UVu5Jf!`iu!9M(FwMX?Yy+WsBO(YfZIy*uhfIR(oJFBW1Xh)H zsu<%-OBC!(DpRs$I!G1*824v9gpggpmvU@=llvqAy7zOmK!e!4sCm6 zc3qaG8`(VLPR^>(^Yfnk_UW94-SaeSdCOSU3t@Jvd5oAcl2kJE)_#>fa4d2D2^D61Q= zf+MzMS7I^(=7!gh{lD)Bw@BbMC)oNXuoI3eBN#T)80^85;Y~9~8)RX3>juZyb-E>O z&Oh0$=!C|&9Kn7XYkTnPa2VzeQiNJz?Z;pc>+4B>uw*JEXJm|Erk}>zQS;02dw7xv zWT94QR`9RV@p=ja6_p_@Z#utM{B*_id0vQo-#_gaQiLFAX3AxFoUE7#7R&@Q6qOM| ze^&ekEjbYa2NiuEp)?@~=C}4*fgXvoV8kw}kBTiszRMPM3CO1b+vpZOpB1Zg!fY;_ zu>cfB(PtL8-WZC85;jUVZ`*3IS&p`2fJRNUs!`?>0PC{RLP9QVo|FQWXFI N002ovPDHLkV1n$Yg1-O& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_west.png b/graphics/object_events/pics/pokemon/followers/gastrodon_west.png new file mode 100644 index 0000000000000000000000000000000000000000..4abd6c42aa27fa6d1103ab30359abbba77324fa4 GIT binary patch literal 896 zcmV-`1AqL9P)KmcMJ;KorMCIDux9C0laH#Q`lv1(BiP zTx8UwDj3D0DR>GbG?2}Pi-$lc863!@I4zY46lW4riRl|U6g>5R={b&cKU{Uo zQt~i}@9FOQc~9@|u%6aW?Io06lOxSA9wF~=}Yv5=t*BpG|3CAo_NH2m?d2snk0 zrUHO;2rv*blz|#CAs(idfyTL$`Ymk9s_ za2_atpn90X9xnER0%QZ21(y;KeSu48akDKLw=)Hx2Zvk!F5g@#&<&=5*584Md}jdu z&b1EOnbKvA_@+hp92H1*m|u<8Edh0NXo2ueg3SanrOR&X3eqbvLm7w~%&#i+Km_Vr zzMlk*qTJS13RT>Y&K?PTY!M+t6{t@Ee7*$K&BzRKJL47LMj+_ff@pMoDP*Vs8Nd|* zvVI#`DJE&2v);qNdX!2v)K={0wdGPEy9@b~&6zHMUJqLdel{r6#%ASW zbQ3MTDgheZO2XQ>cvPY_ME5b?Kk(`$+UUl%ZLbXq0|ls^RxE7c#S;#=*BmgR@jj*W z*MojTXZmNpfYOd_Q_3@xfm*-E4%X^X4w!xdrfI#qtnV@zzpRnN^(_?BE z+rpbnffH^(<2e4r4L6*rwgv67`L6dcg6ytKZQJd<$R}(&jWF~$VEg5S(%)QfI3A@Q zH`GI>8~ifVL%rj)*yBNmO)cy=&9E@gr`I{+3#wr?WWQx@aIZBUdZ_$!Q1$%4W5pjq W`fSlCi{y6z0000K(?Lt)Koke?fPn#TZ(c7i;xz? zQ`pY7wpR^!jmQX|GFUp8ehOjt1B3)e#?zh(`sM62CYel~ltmUi^nd%!EALG@GnTc@ zHrs6Tb%Hkd)0rjR{`3Ym4cK7DtWI0#k$1X#0Ak=;9hOUu+ilLxMza{y9qX2%4kTSh zLK~nM%}DIE=Cv)CSmpp{W+y2ZiOI`;;40hEE%(d80XIv`rXDbZ5s6)<^wTXf{~;S5 zC1z&;+~8euLw)7Mbj$p_&PZHbg=Pc5zQIFsBYfq=bg$N)PRZ@bV`wx7|GR7O@b-+o za%F&Kndvyuzdy1EWnt-OC`acp&j_Q7@*Yt3MKnXCJ;D zDfQCjRkVi$pt%5RmP_;rJNsu@-4IGwTSj6IE*zx%L+@OU`Cr(8U;lVV8!+z=;g z-ska*FSW~b)Ao=WA(zY^b_!E+%dFP>vQ2f^4aS172YX-_9lH(`eB2NwpyRT%haAkN zR8Y|W(%*ZsZ0YHzq(e^y{|1|kKGJ*NuYSMx(~}it6Pwt?CN{B&O>ANlo7luAHnE9K zY+@6e_`i-I_P4f3^Z2nKjsNHCmyu^I8}eW$`0>DwPiChSXnyRFpH>iFUr}2b(!d`3e0O;u zX+Yx9|JVM)3fghq;%>+j4*e8Qqko4x_} z@=)MjC@`!L#K4k=t2mhge>p*I>U`za!UPE?Jt#h6n{Jq!30) zmjr4HEyZp5aa=C)H4Xw*YUyeHYfdb}PLM9NP}KVLuis3*n-Ed-@eHe!3y5(LNa8mj zY^$Wq^;LBxC6Kq(#hM2}Y6&QWeCHldc43iPsDm}9jK~}W3I}etT>a>6xM*VnmHnA$ zn=1}&)w+xi683$SGzvvR*3X654dMetTtk+C(x`p}0>vUGjHMl{Ih2?sK`sz#Lj9!7 z-jx3+mPtb3zq@IE5LXb08&H2_GG@Y~Hb^$9P%&F^(JAH4M5pfV92dXlU6PQL!X&4O z+ZzeAmHLN2Z5RJl=Sw&tP`#wWK*U8K*q_A&hOO^uv1u5Mosi322nu^c`dth-N}}acS(>%5aavZM2cX7+1(|zYtvuM zFDvd7SfF>a#02e5y9)-E+_w%o?c@Z6_Z3n&^Sn2u4rEa3Kjy$j5DEjF> z4k@r#JYd)w1%Z7+j)|qWyQGaRf{3e^Z8A$5&;sa0TJ`C~ICROA{QgW!COCj1Vs^x# z$Li7>m1_HTZs%LayBWJhcwu_6l#$$7Wk6ZGsqxxHTi{ESVx+ zM2p;n3=PAoPZg8z|dxJTB2_G@U5f3TdUXNeK-VyO`P~OL zVaB!RdDqu{{AZDeI0!ThchUlZ?{wTioGY?{#n2({&*qmqZ(A7x2N55kzj~<63vXl? z@I`S0D~@#_F3^Uzh0=fvywX$pWS)-G(UGX}X9g~CxZ)0Opzni_)kpO`#1-u? z^+JiX#w~B`VG1AM>d*TZ*Dnn7SKc`;@bo<5gA&G@eKLR=AM{CKy=qFuac4F(sU=L{(J5Q0WUTOsccGYq`A zy=^+q&~e6&=N%ngW%CP+GkWTL*6W>`XIE$jERPL1cNj%E7swasdFJ)j2>4BwK_x#l zt>^z3TQ41lH9_FH%ne3v1s_{S2K^8x#Vs``#gXef{XlxX&Q0 zGShqh_p__pTljJYX%z-%%zF->7Q#Uw{Wu8Bp;JansPK5iIL|T&0{fnEbUt({C~rI- zS)6AXgc>-zE>Z8WX~0*@NcSq{9X|g7&gsL)NpUXFVu5d!w+yVt)uBL zNoA1H#hl+)InOc(HR60(8ajohF&q^L(rZtFnS(D&=HRf@PjN2r5r0*nW)m+VYEsTK z403^wpvzEd7`Oq$q?~6N1PNQW{qoBnhx`jWrT+3q*4Vl=`3I2*0>x2y@j(rcQm8x2 zAQ$+|IHIbNv4)I(p7Sh&;vSknEs}8xKMao|lYj0Js8)-34VS7R&oBrAm8N$Mdw={% z%a045VNfXSg9%*`U&sjjFq|Vk*#ebJ0pXxo2Dw1hlbf@24)8345cNlvT7-?P_(HDc zhv6LY$rkuvWD8J~v+@1c-p{!NF?z-n{4hV~zn1#`k^Wu({rG#we*m_s!vVHB>r(&# N002ovPDHLkV1j#SN9h0n literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/giratina_origin.png b/graphics/object_events/pics/pokemon/followers/giratina_origin.png new file mode 100644 index 0000000000000000000000000000000000000000..14043a68083814d7afa85cc678ed6bab80c86c68 GIT binary patch literal 2017 zcmV<72Oju|P)VNntJ`Oy&(5ji=cMo@RNV<3kyg^O$5DoYjLzhe9XE|2I$6KcMEn?>Z_YIQ*O29-Mr13YsmUas=b$s2cQL+owSx|$VVCzGCdmWNw`pi(2s&`V!2yfL$`qv#;2O1L zm%?o?GZN2Ax7kdj2l+||9Y!1)RyiLf$=`ecf8#CPfw!Dk9cVrDe?Nc#Q+2gSLBwGS7PANpjN1u^hP!7|R@#I9zIVeADNBpL5}W&NObW5DEr?tJO8Sw+3x4 zyT0W6k-_oar3c_ZjYby&V=C@k`tPDDnMZ``QEngBL0_L_j~e24zD}LStKjM zZvVG?-Jfx%SBntUMhYi-kXeKtWD!RF7KIWwAu3#^yI#=1TEUDf;M!>rs|@<&`n99M zC)g#;A`BJIs8IsoL6}7t_3K5zn93~kbGQaF`nk&2}}`@z)Ti_E5gJG8OL-ptCZ|t+u$2p)Ybxu_e*srkByN5cJ2dEW zXfhB8YYIu+ScI&qSZjI9oe5gEL=nn6aklj+JY-szL0~!xnS$h z4ioim@nFocd}2KT9n7Gxv9apXosYi^J`y=3W86FxUNankoOtF9UAK8+`^lu3lPdKV z|87vsR%4%%Ii|1C0vNU-wtRHgb?*&s#Y`?aaQi2ubdqzgn^iEaFv>vP|xY4F*UF+p~?Rk(THCH~1UT}aZIKl*ls1-yC;IsVP!Om94R zdnuQr3kE0t6#oLc#G7{C^k5>+lQe}-u5*6$)%)=3%e^2-(&h;&to&G+)_wpg;!eHs z!QlGw@wKBy{Ugixh5QbGA*xjD1Lpb`aYD9IFG+{Zvl%!Cw4T%9sP|6XVF$tb-Q$~TYVU_;ngFIt>3ppXRChQXK=&YGQ(`Y8c^LONavKwHIfBn#2WknpfvPUpS z^T2N(=<7QPukNsYHyx#*O{mmoDd3QzC*CjV`A;_zYn2sou~nU>Z<6Hn!L+&l7kre@ z$@ao);KNK{I&DmHCC3!qffPSJb|2cRtcVk_Rh_;W;V&mUBV&Ch;KWH@ze&%Aqf^#g zq`fDG16Oj9q7)R)h{K3EcmXHkG#5Yi7C_-}WUT)LoH+bj&tv=P56Rc}pWFIC0Vj{e zDPz|J6LOs6u?IGMWUl`N+~M2L{z_hZPm;jtzXvCdhx+F8)fI5@4D-Ajw)LNYJ8OVn zybhiW>_1Q!akvZ7nUC_-6>(u9i>G^zO<)lRfe_^m`MzU+vxtKQL68q8;A6{;|J59` z8b#(hP{98?yCVKY90lfll1;?_cPsk;MV5P)K)xC<_Ko9`nEtc(%{5-%Va1UT(Hz^cO zR*<67GB|EFSRNyts+>b!Afyi{f>kX9QkTN!Kvx>W1wB-xoTdFa%L(L?%F}%s?+*Jn zM(7l$IK}@8UHko)zlva|d>|!#+yZyXeBL7$AWSU~$$5Zd#=1OObv>b4KyY;&%ifT- z$D$e`Gn7ZGu1e-fw-+1S2e(hw^so`mulv^RrMu{N%z^q`5aTjF5V)shXI z0wko}0>y-lonk$nHpim)vcC=upzU<3t0foi!g1WIb_*0ENSv87PTMh($%{|x>D!`B zs;(zI+f3dVlkd;yVI%B+bDY?12S_Hv-pBDRzvimzPhX!`w*twtIa4;*4w`)E zt)^v)n#a%0!woNb!&2o5tF%%Xho0NJM z>_U6Tot9p*x3yWWqI$c``vR>oZw7cUzrKb(>M(JM72E*^ZljEhy+=3hfCW0jaVp#7 z1?>J8fX}bAE+fn$#?QF67d3CmoNNcNSL){eR<(}#IlLbQ#qHuX?Q-?*!ps-8&}UH; z)25icOIi6NQJnK@jlh@{#l)apMivVr@u^#NfyR2UvlwG-dT;3u#e#PeUpwN=H1ke_ zpNRz?_}8+)6T2PGz!Uow&U2|7%Eo!DTTIATu;ku`v&0r#IJWgnp723lENCT~;R`l$ z&62w_vNb|QL-pm)^MQ-7vE|kSO122e1JqC_JeCLb_k_yB|7H9HKSnHz=hs;o00000 LNkvXXu0mjfEO1jJ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/glameow.png b/graphics/object_events/pics/pokemon/followers/glameow.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba92443e9749049ed11c1676372c12e3f2ff0b8 GIT binary patch literal 556 zcmV+{0@MA8P)Kl|f6xFc^k&5OT=Pi)VjB3KPBAKp8oE z+I_-y32ZaC{sO%^aCc!7y#&ncA%D(h>)L#2GDNB%>^+n|Yx{lg7v5wD9d*=Ee@KTxs(T(3{`ar zvmfeq$PG>tVWLciYh&ha1HkwuSFY5#*1M^;LOdES3YSRv|y6~nVY-&6X` zmAGEjbNyW!$IbQPg()TlxYC$;8CJwGU+~)At_mjiP3o(5n*9rnVFgS**PI0A(^S+X(3UmDH*A$sbOJp*JR!r00009 za7bBm000XU000XU0RWnu7ytkRS4l)cR7i>KmO*RVFc^l#tX=XC!Y)HO7;-XJ+>UiH zgYCg)SYeh1C5OUFd)vhw2y)G3KO>}vfv<6P5&H*Ym%=Xn3p*{%x%(v9iWQa(vK{-; zQl3bDAH7NlMd*I+=YNcs>OVNybN%lEsSHmT?+q^4g1kFC5EM z*10Tp2oaDQ=`db+?^F6>a){U%C z@1rPE%W@g$KyP7%Ueh5fs3UMWuY)#Vqy%_jg}M=>Sb+*Wsx4!wD`fm=;p98)jqAl! zKd_kA>K5{DKx_iXin$5Qm-axBZk#R0pRc?5no}#_`Qqy2QJ(jUE179Q;29y(jUdqD zVBiH(fu3B(tuTW<2m`!74{Tt=d29u&xIO9TFZ*o8AVf84g{qMXL?eE;W&u)xc+85a z5l-2dA@oq)W+$-a+6uB&qB<{WvW5n#Q7cr9R3LovIZKeI0&zjj)&!dnnsQAOf|v~L$x5GLX6;3Oo)gSAC_bQ_u`%OC0}m>4Iga;i1_6I z_7_Bu$GTBSjF6~CC?vk140;_3LV&?Yv>^1A520s2`0;5c&~UyH48;ddFU}$+CXbs& zMyMMhPl$5Bq7fWGT&n$tLJXA97s6yv%4yySRGhJ;W%TI-&))KkiCNRA73xMkzw|{I zg>Y~&RO>xKE|swKC++*nUO0ikDJv|Zs;WkuJ*}#lZDfSH5t{n~ZX0f15WS&CLbcaR?P#LuP(cRz$F=O z7|v8>ujclZUL$Ou?^R?thhNKcBdl!T-AZ%=w;2wJ8S2d}KF~taS)XB6ZPwvH^J?Bn zhzc>OP?vp&VN!>-gfN-2p+cB-*OQ@r!wpw1tAN-+yv5t=4ySQ4BeUJC15erB4BuAk zxN{-fY!0+MjrZnk%f8KOj`>}@FJsP}wQV*p-rnxdfBc`KojCqC-Z{Sj6%Wp982a2< P00000NkvXXu0mjfSF*)6 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/grotle.png b/graphics/object_events/pics/pokemon/followers/grotle.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9b25c30c724bff89ac7257addd660c9b1bf95a GIT binary patch literal 689 zcmV;i0#5yjP)G`4IapAcs0RaI?Nl7_TIRF3vp8e|O00009 za7bBm000ie000ie0hKEb8vpR7i>K)G=$@Koke?8#>B@Lt~BREE$B>pvkBK z&)SSfcX11WfQN3u-~-8>y0vSULbnVCr64=D5a=vYN{JvANHv1c2z`d0Wm}SuI|_kL z^&1Sod%E{OpNs)G*0GLttpBCN7zhC5&o%%!KAcE-EjQeyD8~Y+(#p1^&O4{cb-$F^z%p0aR)i7;RW3IzFSs2z1 zP`Bur*H~`Kvh6Tkgob1TT5;V#ByTciJN(fMd`oo1muS*0=4xnTx*tA&GIn|AS)@#4#8TsvXmWfjm} zK16{Lvz?FN3TvB9}vfdBvi000000000000000OO8X_00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>K)G=>@Ko|yKLvra1k-<)QXbNlN;Hm-X zNEBk-jr{{!Vn=Kn95FHR+&VOk{K~?az}+Wz?b4)!@8ol@-yO$5qjAkO*Ie_Df`70y z3YNQAN)4G6zJ<1l+{My|A+x;$f9I@_lOZ#m$PAh77N|KZNB)&S(}}Ls@(bR5^25-1 zkT;fl>dg_{Fat4io1kDY<0I+ibT5Vutozt&r^n*+_< zlqEEMZSgLNcW+`p#26=Tz0p0!R?;)d68Jn|V$*WPcKS)u6M524Hj81kTj4oldgoE{ zK4dO6&h0P`oW-2$bC*5xmX6CjFbbTDZw2zgX~g&@3a2jDuV5clec*=NeycFxzg&4j jxX?iUuY2T6%0JIHPPDgs&!K(P00000NkvXXu0mjfGXD7i literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/heatran.png b/graphics/object_events/pics/pokemon/followers/heatran.png new file mode 100644 index 0000000000000000000000000000000000000000..caae4d45f2bab509e0ed054e534f3552dcc2ed5e GIT binary patch literal 1128 zcmV-u1eg1XP)yswQGtPp@lipkDIsA&LBYY%K^ZCO>G=Tx0kLUW>6rmZQDG@5DTzTr&i`Sa00009 za7bBm000ie000ie0hKEb8vpKmCtJ`R}{zZs)T_ECA*rE(C%L8+gLKq z$mFfN=pXQQfs`qjg^MY@JjJFUw9=5e3@!>%U(wv45?nOAlXl3u!Yj28o4|-Xp^LyX z1i=hWliT}iG}l@g83MeL6YI zY~{iE`aZ7WOmRNmVBG>=^! zr*d~Z&oV+4x(r8e-wEY8d*cdP+05IUm5wjy+{1%K{OzUD!WdjJmKYL^K{kKi_hS;RcpU$?Pds7t{TRa}h;?!8OD zjYD%OuO^ojlzg+qx1iKA&r-ggZp4qA+Ym;YX_hcPYh#;~WC5bMYKn2*`X#5w0U95Z zCDB6mor>hW*d{;IR|ij1lnYYY4Pm7H_!nv6cH2JpM_f=d(h13xKZrOqlMEoY3)HEJ z2l{nK@Th8Ta6j#j4vf4H4wZtl%oK_9Sv!OOOhS_jYUQ}%7h=*Qor}7E495<=T6x2G z@zSP}Nx#GMt@eTO4O6r79W=$XBhO4r57$4%nNQaIlTEQD5by{o$5+&+baWNvjw6Hg zNU-WC@}YZP0Xp=-lLa{Y$3x%As{-Y?^~F!_tLI-P;RUY;FBNY$#hEb2B_>Bn62ums zItjt`s}->YHTP1dd72xf<&@Rj$GsiT8>IK-4l&0G(~iY5hBe$`ie;;*cw2PD9VfY9 z;sa>#{3$$=EIUHz;siX#+rbr2YX3l;;rFX@hu~$xH8UCWd~1i#Woaj-Sarl4yX^U! z^Y?dbnSUf%cElpksJL$b5`I>eAIHJy`0$n5A*AH%Xf-@9J7SkR zHeRoy_blDMRRyl?+FM)riLA#Ru~8-LQ#NWSLUi$)jp)R&%6~5NiK#r&)+p~3l`N{> zGo|FvU{QH72uCuGE<}U`jZPe^ynGP{uVa~K3dF97r-|KHI%T8FqVh78j>Fctqr|*C u?@0Uz0zryTChK2~p6&&kb}jY*0000G|QwanZ3+F)=X!0000000000E$>;@00009 za7bBm000XU000XU0RWnu7ytkQ3`s;mR7i>K)w^!nFcb!04%F7gNY$pzQv|YL!(Nm| ziiviiqcA4W$s3L^Q1iw0AW^*lLv4`{@Qy$Tg*@)xc?uMn14Qx~TWl4UmviK4}LwgVS#K z!KHc6h(`r|1 zMx3`()DW}Hvg=;m(2)(fZ@1u$w`^`U>hSw(RIpzjHhSHV@rQ|TbzDsN1Iw||i!tZ3 zyqJ2MS6}z4VT(+%fp2x(WCzZj-=h$CHU$$@azDx*1gcKool(`CWOjbX5SC_ase=iL8Ac z_WteZ(g#;cxy+eMNU8Y6f{<6$0M3bQcw8N9r?GUjB_U^S5Djr`nK(*s%Z7adUxGT)j^^#A|>07*qoM6N<$f^Fa|&psQ>@~000000000000000@~Kmd}oxFc8LlK=Rot68jpF(fSIq1!}K- zgdo%2phnDIbBZ4z+9%k&X9o1Ubm8xO-cggoOJ&-h=VluEwhhxN7A zMY7M2M!-?<9PctA08o)H_#osf3TmG0F`+NkM&1KUe%PR9_QJfBmwXUG*_T8VJ4|Se zFFgga$1avt`(&CKuFt&9cbHIxM~Ww0F`;M%T9?%}cY+u*1D_9@ATTeAc4aNM8A^jk zmM|JF`S2Y9v$pA$bhXI_V(f}gm_cyK#5lpJ#B)}FyKOiLE}4*=r?_&FVn}Jp!64X> zEe_7yPJ&|1Sn`PHxN?=kwf2&a4BAtdPAFPk8nI>+WQ~5awk_(xV8I7%Z1l;(+a+pC z-IiFkCHI2wo#5@$V8%pdUCO+b$rhvFRhKL(GAOdTS}{f)-hNqI+{SNn$#Q60&%om* z6W8A{%VP<#tYO8Nv51=5UK)smJHdjxl62vh$m6VxqwgqaVlBl9R*ZriQk;%;KK7jv zj$trJRiAN_CR^NOsFsG2XjN$%I%l9xu={d&4ntc2I35jC7D~<)W62iNjHfJ0BV#~7 zxaLl<>1T_&e>j8thvUJJ$dE+*`kdc>J$|R-Pa}NdNUd`wMo& VWAd?4X!`&F002ovPDHLkV1j-%OSS+2 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/honchkrow.png b/graphics/object_events/pics/pokemon/followers/honchkrow.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d45e6106fda9ec671802b2ed47a4e4a6788cbf GIT binary patch literal 727 zcmV;|0x127P)K)iH}2K@$Ggcur0vQx6`*X@dK=9d#lxC^AX#d0Zd@Islo*KNA28*73`&kJhv>JV_%%?-z4 z(k!Ay^)6=nnAJG(k)pVs>_0y%qy=$EHu<_+I@b8{oi9gNX&I>>W2G0HlFv_He) zT9due$kq8pwF4!nN6Y{haBFp`gm4lgRKA}Xn zyDh6kb*9tpeBPSsJidq~!vCH-7g=i;6gAuoq2_8!YH~Z*HXXNIrsAuFTe#EczAL;t z`4L$8E$NQir_>P#DBXFsmUpGRyOv+SPZupo12-z9lE3Bk@f(#!y3c;oXLkSq002ov JPDHLkV1icDOSb?3 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/infernape.png b/graphics/object_events/pics/pokemon/followers/infernape.png new file mode 100644 index 0000000000000000000000000000000000000000..f227dfa83063c23672e9e36d0b52c2d8750a46ba GIT binary patch literal 1108 zcmV-a1grarP)4l+SD1W*Em`kaRX)Oh&^XGzn$&vLy2A zF?X3_36Gc>8HO%?VUSfA0xM>?U>GEYoy-mk8^PdRf=kUh>5zlbMek{}W>3QGD+hx1#Iq9S4eZJrC`^v8o`rnjBqfq*n^#$u6m@#DX#1yjv zvx%7(j3Mjq3I6Q>Dzk}g#*sGsOCBVc^ee4HW4Xih4JHt6$mY?6GCUHY#0JE;LyZWQ zNe^Jg0Ok=&S_d0ect%30tYJf=1O#HjT?>LiD7LUs0<3v?LdKebiCZPe7J-SeW)c_? zmuVIVw&51BWp~1_C=kOWuA&B+5DRV@+a{p|Y@0T~?hxn;CNc1sIqd3n!u&pK(SCvf z`~5E5l3-`MHZ*iM1Sha*8zHY`39+r{#C^upC*`u@ub+tB#YyZL5JK&cm?39G;yHv( zk4=lZXI$;{c;zUwIEfKwyBhC;0TMBnITJ-6ZPrbzLOl;69AWIt3; z9CKfvoE}?|p3j*2#C+?cS7&Dr?zg0PMr%8nY`3 zSoRZr@bHiAn+N(N<}3A+tvWOSy!P$mmp6)$Aj|$hQJ?MSd(tFE#kyNP6wCS4-ZT9G zq-EHvL~5D*w>koqk zg(Wx2uo~(WrmhVjyMl|WZ+@Oa%VUFi{Lym5zFN1VDH#C)0g*`=i8&$h(UIYCS>d5ksZlvOIXSsmApigXm)Sj+00009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K)GIAokoj58*MjIzBS1g;#}p~PCLZz2;&!)t5dNM z=VFoVqC|`$>}GHIaWB64-oZX6?xeg7odv@wQz-~U8ErS*R9epq(+tZXEt{rIE+E~m zh_z?`*^qJJ!(jigd6Hona9Lf~h<8Y*>XOs9H2(uAd(YpR^^WOpr48IZw-H3T*%>s4 zL?Laj@aC>xJ~+-WZQ(*A+U*O|eAUOBGTJ{kvioJ(U&`s&x?gBqBlK=Xo43tb&tD$0 zmz;6-WsTY1RS?VV+{to9UR`8>a!MQ+O3)dp(y~&MBfw%tFTD)zNmhO1L!IR!OU>+NHdib6XAa*^s>;2L{e~ zs099V(GfkbZRR|JFi-{+`WJG~LMOqa*m-bw)WKio8^_}Sh)0F6MF0Q*07*qoM6N<$ Ef`)qhU;qFB literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/kricketune.png b/graphics/object_events/pics/pokemon/followers/kricketune.png new file mode 100644 index 0000000000000000000000000000000000000000..d80a28757f2cbbcbbcaec5573ad786fb984f2f7c GIT binary patch literal 847 zcmV-V1F-ywP)FN0a0Rd4d8IegD;c;2<(UFNcA>pA>X=!PxQ8_s|Ik{OOt7Xo~00009 za7bBm000XU000XU0RWnu7ytkQ#Ysd#R7i>Kls{|RKp4i4fHVjy=-Md+3LTm*CXk`Y z+#!R&$PL0Wx7ZjJb?e;8;v!H#Lly^N(5EPd4yHqkRFR@!FoIBIeTLrY{z@Ss33O`S zLGZihz2|w)+!=tUdaD1WjPtvB(OG*agT!kacGy6;ISwDq09>H<$Q@3a4Ut&u8pQcI z``kYuQx6chAuytW*bz5;dVWtGcVsg)j__1TGy*MJBr`pHB;$dnmTE{?Q9%ri(>!+o z?=gagMGMgpYU`M#g&WSG8bG)mpdo~2!r-B-ba*M>4zo7%W>(qGF!%7$oh zbA$>@>Xfs`g%&cX3e^>8-52=|?TM4wI$j=TFN!cxV^t(2`sc zUQ68mQpB4Kv|(+JD*IM8SG6;$zN@;U=zINAJ>E`-$$)RI4-kJC8jKyT+h5ln+$_aZ zaf-R*e;qr8T@4hs{U7}n6T_wcJJVLqZ5)mCGxuFlu zGO4zB1|L#gE8V=XOQ!3BGrs@0Ck^!onsrYNz&2WPbvXviaDp$ocU8=BFXZ~-`3s@r zRn2R7!uS8F<-;PeD$_Q{wjnnpHMSkAtq&|!AGCEx2((Fe+AkSDCD1L+dVqdIzS;lJ Z>MyPdz)WqoSkM3f002ovPDHLkV1n%Xe)|9b literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/leafeon.png b/graphics/object_events/pics/pokemon/followers/leafeon.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1e959f661eab1d956dc0918ec9f364d2d6b56e GIT binary patch literal 741 zcmV4CvvaZw>*p<(gap;0jzsfkem0Rh>$S(#}u>FN0Z00000000003@{H>00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>K)lYBJFcbiA->e=hRI$Pb;J`6NRXzYn z9H)|1`2q$q4zAkB`E%kh(r%YjOaC}MO;q{goj8n^eLB+8rnZ?oB*p=0@Ahkx_g-FX z2Y|DodN$Nl9vfX@jmRz+rIG1=p?8!vkLkIDjDLxjHQ{dEB^65P|P4&4NuB725a1}^KG3HRRIt~JTG zP7t!m>oOPAEZ&eC6I_%tU2q*r2JZQ&G2;t_4Qp3mV)t{05&^W{%L}}^wX^?eY7cKO$c<)hc3x%7?Y1Oli-ddcvSCqgat|cfUrgAL zu?w<2kt=i81CJrQz-rIfw3A178z$`9XRH83G9LlGF6LNmmt|S5a*eu-F>b)6bIzNp z13KqV5BQwULeB2F?+>ub(9BmZHK)jw<7KokJ*8w@u;urO}7(4k|7EbU~M z6GrYN&_f)a@(pB=IE!Q|89aEXLBiZ8C~>Dk^9>5kkPp?T|0jbkq$QpFH2w5W@10I3 ziLrB>;~f7j)HCLh-Opa{M^>|SXf=n(YR2~yyWwE<+!=wNobm;0&9?6u?;1Qx^p(qQ5pT*lW;tb;3CFQkVUVhNpi01|$C( z;5ryK7Hd9i7ihdQ8#G-o2XF(65gZ(}a(x<)Z9#rw#+6%K;I;RZmR=~s6uo?BuAY7s z44X8+?VGWWkO>tFzgbl71cmo+E^GT?j(F(uSh;!=HoM2)0#P;_pWpUP@c~wwr^g$= zc`WPN)5~T8#f-4aJC(}`@b}xhJm{=7kvwY$<00009 za7bBm000XU000XU0RWnu7ytkQlSxEDR7i>K*1u}oKpY3~Lt1XgkhEY-C;3DrqhxSw zaExD}Tc@m6Kn>cWKu*LNln8P{et-_yEV!5(leQ9Ehtje1p?Z#;_;fx88t72SZ}Lay z``#ZNk^p$E*ZN-y0mFK^GbK$m0I;;&>cxgpZSXaVnv@CQ$uq{5JKkuxD-XVIafOqF zOsbcf?8=i_H!x6j7{!NoXoJOqNQ9*&DZaw>K-IutNCbZLrW-5*{V4h*45MDAp&KJxic<|hFJd!ZvFT|???FjjUOKmx-h?3Lc2;q! z0T>QZILUo)*wK6c+#houg(q4=9#Q|>Dp0l95k^Th$;xY1=p8bjbAA`HBb^D)nR8aG z7NB?$C}xD^0aS~?a)T!oMUPE71JGv$x#9eC%4kRDA*1emK!-7%KUA5xVeDy7RL?sc zZMk2{J+btT-a#8<96NeXzTfaFTm`BIW+3+R_r=8zGo(j)`vBp{GW0gadu4pSygwQP zvk`8?9n@-qcfnhYVI%P22(^xlAZTj*Fjy`Hsy1n3`+9bn(WKERG=_8(w0b1ncSgZX z=N)8QIi<-mPqo<7e&M-Q>DhE~@Kt+#+8W?^-=RZG<1}sdx_0;!s9Fq}7tYi{)MlC1 zMm~iENOpIS)`19#Sv}Oy=PYq~m?X|_Ba%R?Jn(9TD7`5YP zY#hXcNOnBH-R18sTG%*RJ>7%}?$)1n09^M@64{rh{hCvfZuFI%9;8y6@afuHxpkb@ zY-S@%w$rS4fmvhKZgwBevy>LpX7kYD`1uR)jnZy3Yt!*-jZPD&RsSfN7y6rar5UaL b`ybXH2^Fgy?6_C600000NkvXXu0mjfKqzb( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lucario.png b/graphics/object_events/pics/pokemon/followers/lucario.png new file mode 100644 index 0000000000000000000000000000000000000000..61a299f7a648179a7919e92b9ae2b449ee4f599c GIT binary patch literal 787 zcmV+u1MK{XP)G_!%G3mKcd0{E3xydOhDFFciIcbq`x$#L!NdN!K)G=$@KokIAp{e+wP%k$1V&uhCZUzeq zt!xj$Q$sU16#5^!b@kR_D0FEHfgsWh!3x5b(t>@i2779($;oD9f@2Dmn)?ma$@Sgo zY{}42=#Yn(@80RXr;{Z?xQ*NRKSJE#8%H6Z?69SH18;8dFpqzKYtb>I<8r=vgV8wJ zfOD|oPJla3w4C704Zw6FPbUd>C%zl+L+hNqy%h%+)KtHwCfHSXs*^ZF+!aWv{Ueu>A3@yef)Iz(SK?h)Mps#xf+2l-khXeT^=Jg-@ zWJKP!hYVzRsJ+gj^5`HaNJi!zHucqm-F=lDI&a(dPaK_26*W{4@^$*ec;j2vtQu0< ztvCZ@mK=!=#ThCp?2+?aHNGw1x`MNK%g5<-R?n~Zokp&s*<_j(A20IY zlTp(Ik&MS1FZtl@UK7xQqtNusXW&h-DboBP^fKQ`TZdwyOv-hdYKwJHpk2&9&&sr* zkDVuPBQT5UK~`cKhF<0+$@U7BAsJal{WI1$wi=ChOu=?&Hs5#bNFIC1(xB^AB#EBU z&;A)}yyPJCYm{WO+>bSIWK&|Q&7c!8-clM!CHCuCk|ZZ$SuMpI&TO_CLXypWO@&}V zX4ha|i0mz RiZlQK002ovPDHLkV1gV@bNc`Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/lumineon.png b/graphics/object_events/pics/pokemon/followers/lumineon.png new file mode 100644 index 0000000000000000000000000000000000000000..476d27f2b22455f787e2df77e7c47d5ff6619507 GIT binary patch literal 763 zcmVKmA|gqFcgPvPaR{2irg(RRItLKBI~^% zF;|tU`vQG{kf_j&kO6nREVOUi96Rx!RNM!s@b<;d_d7mG96}!BF&^VF{@=mU!3BAr zspuB7EV?U{p^!cemNIY)81I?ui=%Q8VMR1vKbt^lDwHme{|N&`=F3s|)fZ-lg%M`6 zWq#Q9#BdEm$#%sggFU)btY?GXye$6~Xd#&%8*%%Y<(C&?0u>;GGJ)72 zbqWIJ0c#=igl$id6nunm+kRNMtHiH}EE zMj>w53fTp+CKq5Ulza|w=KZTn4~DxyHeCSt^&fW3QZ18=upB8dktoNz4!V$o;6%M(5W(h#8&ixIuJ@RaC%4^Gq>O?**iQ_h~XT9aD z1Xzo{$7F1{@Ptj?3(;ZNlsH+#9xB10%h$Yethao=037G`W1#}seWz?sm5OF|&$ASn znZVJiJjQFG&fWBo^$m3euuE)((y(+wlGKE`d4k-XSEJ(fS{KS5Mnl#W7T;Ez?_*bC zjhy&G8ifZUwcDdVUf*tsI~tIGC;m~<3bQZU?MLByTp+u^c6=C|jvn)0^-Xxw$UIyw zNmA`<;P)nO00000I&q;G00009 za7bBm000XU000XU0RWnu7ytkQUP(kjR7i>K)iG<^Koke?!-LSG!7Z_=C&eM99Xbh0 zD9su=WNEiT2L(IFQRMHSQaFzGx&#vNSOT_jlJ5|(5yITyU=SwY@6va2uOjbcG)CH?f<9W+N- z67e`~8!acyhAlB`j;O^@Fu+T!Hc;IeAEl8HJhm8ue>H9gt>QH-8!bPIloaVwv^X=pAVe-*Dhq^xp4OoA4rzyk8zb)^RPR8}N^vjKuE}27Iflz;w&|3sI^|9G aTk;Rsn1UV0;>1}100004)-h`vF%$q`kxd6(G6mA%@D#{+&0znH zPR<%=N&iEKLWZLT*6b*mT#Ve+Y%VdRwuK2y9ZLRwT4^ zu>#ZTWQLP#?RI_p`(fJRW(H_PW#;)q%eQ5nP_){8oIKU;*z`8n+uXE#<*u4b88JJ0 zBN1V7V|hMr61rl^=d{gr!r!hXJifLuAHKf;APstcjR$*|x^fvmrEP8!PV0nI8}rc@ zrOe_h@;$kl?km?0Jb_l%k$L_-h}cb~gq+MN3Z5_AwK_cjyBTF{x<*0RaK=(E;h{`H4wcX#oMjVQJxsnej;>h-r&u00009 za7bBm000XU000XU0RWnu7ytkRu}MThR7i>Kl}&5hMi_u~=wS|XkuUbrK-l+E6^jn! z()@(}gZfwsT}1JrF0{L$KI|&ko?>N%a%lyD{EQe<2So>4Zj~(bwA6`jErv7;nM*fx z;qB;SMju{p4!!iyfn9iJr00F->y=^r-~J>P)*gn)$?LYmG?Pw8#oJd{{Kb z1)En)o|Y6eKaT=Rz4GZDaAjGBq}p$YXt$#x@PCJgTT!xbz5n&UMdg~8gq zc8+o;jR@2h;r)qyJujrNw#^MDozP_Si53=IPe;B0QYftJIFc&@5YLTh8Pm`Nw1pNH z%<2Im!Z3V@RwZaKT@c8cRo;ab(|{qywdu7uTM#LHi)c}MDU*dfL;!3^=Sw+8M5vvb zHXFn?{7g8c)^ZjJlWT%jnO2L*=L`izm9E9I2a^{dggq^{t~9(0`+e{Ev&7eHQm|{)11z5G^}ZPYgi6rl zSU|Gh>+u*ww1mma+3TraouYzqSOtjDI-bpDua8(MXt4vfYjF-tqK79H3_`D`i{8fgXl*b56B;M0Jt&!%Uh!Va(K{*3;x2|v}bu9k)h!3`v zKyfY@1p|lOOP=|bbLYqG`B3vtUX^3B=VD@b>TW4kt27EXobI=LzdLX`8+pKrGr_@n z-@~y#_7?}aa1?0nuMe|YeG?sSd#v2nHX8?>zPED|Sg?B#=7R7C#dk8nUVrclTFBYo zr@2rDEIH|alLcV-X3!g7VpIlT_}9Ms{8E&h3E~~Zx53w^xljfyxe$;oe$IUK{mp64 z@_EI4E8jAF^r&;gMOFL&=bc?H54$>6Tm0e!DO~?Z3l!%9gVR@*+%yhHG>+CNYhq^?M(7!?2j002ovPDHLkV1f?q B1p@#8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/magnezone.png b/graphics/object_events/pics/pokemon/followers/magnezone.png new file mode 100644 index 0000000000000000000000000000000000000000..c66eac73488c64e30d7e9b2307818e72c083e54b GIT binary patch literal 756 zcmV6Q2+n{=r2I)00009 za7bBm000ie000ie0hKEb8vpK)iG<^KokJr0}lf2r6l8N5VQ!)X%M7n zYiMbvk_Z_WGW7?jcEv%9yctZkjOnDbF-{Nc!O7OObVxc$gP?HW#S}dFH}s^FEbDqM zMDFM}obQu#@14%}9RR!7#V(2<;Wk!D^{!}kWp95QU!GU%i)I5ZK5gT#7uAHK0Z{fH zZ{v689@uOJv!>_eorgQU^jny3#qXbc;NX%pvrY}O_^@AngR1>Q4_&`*eQvT&9RqOC ze{|Md%P3fJ8^2EagLbUAwG0~m%T~WzCj85;oj8NOOReKt2G9J~zzNDJi?&TRz;Rq^ z+RZvPk6t(qrg4!`v_h#(iPIjlk3?=nea8tRxf}5Q6~-q)tmO+L7%0&+rdQu?$8j`G zWHzW~Bp9=n>JlUE?U*Kqfe!hUMFZ>U8{N42`F*UjPE%qCb!bq^S}1d%-x-PJLfzoM zDbb)~P7!|c<4*6O8|29h5r!;T2Wc_~unPm)g&m{E3zVMmB|;{J7RJbkktOj6mexad zf8E)V!tO1NO_(?{Q1vqZ5^#s65n(K`N=Bs#+lDI+(8y!W+w%Ys@P**Pg2NQA{VvM~>dlJf=j!Vstk+fjQ zofQP?;5g7sqpL3Yl3$;F$-OKJgu^V+Fw6@GPQzc!SKC*bwYOO21zE!3D4=XL^A#fD zgu7TFmXM!+R5KhgeYl mOnFaCxOr5~`0oiH7JmTj^yTko{Rj>K0000K)-h|_KokJr+q_+IA<5E7PVo|K+JhVc zRRQBH8XOvI@D|d+-HKxkN2p1lbjUAg=^8wFsK*W+HF&u=f50ljHWd_Clr-HOt9Pf9 zVoS2y1~L@#hLG?1?!D)8EI8)$iJi zJ+^rC?b{ljbN9e<-(>#Pe;&YJZ+*F?!S}zjW!cFdOZFEyct_R(-+6=3@=)Qkh}EE= zmS`|KpIaX@q``(>vQ@c(YKaD;jYxxyXoCyy+Oj;4_7*rOXo`o&2rXYPpIys@on(-r zSM4)JX}2cb1V8v;Q2#CUSpzR-Rbr8n(0l>Rvw~t|O3jm8 z%m93?zHMLo2{B>Rpn0`ZeN!x)R*I8)+)!Z!c}4cqY~*4FaC7CfI1vNWE{U5JT;D&d zR;qiQ@Y4Z>1{*S+JXAFx<`_tk!Dj zmw99-nwOd>7`2gpnDG-To;Stf&(OiE=^ENRSY5-m7qcj+cG(W~ropT|zYjSW=|AGE;YN&evweXL4)GiD${`?7}f!?y? zW@myl1EC>8{v`<|kiQ@5EoF)jMhIy$Hh98cP|Q!+dW2kWy)@@-VU}T6I3W(k{#OfN zzwv}C|1EHpoWqI-^|;wcgcxDM%j8@ZiM42)G0000A^v10RaK&>G>H+p+P}GfuZsF(P2Sh$p8QV0000000000000000BE%}00009 za7bBm000ie000ie0hKEb8vpK)Im$bFcb&y976jA1kc8>)*d~2N=vY{ zpTMg!ChRmyF~gf<(6_HKhDtuAX_PeyzIYNm?0@R7P2NjdQbJBS<&;zYRn#wz&Q)=n zqzYCsN3$rjig~Qp67*la2o+NLboMJaGs zV?o69!4#Z3s}1~h^ZfDYEaqCjOU%pVV(uG_$#;Sphp0000000000000007HVv100009 za7bBm000ie000ie0hKEb8vpKmA{MIFcin7NvlPBi8*cg7j6l3Itbj5 zDT7P?3>ykE@nq8AM>XA_kfHQ&r$CBD-al8#mg2K(=g88@U!371`~B3DLdc{^lO|32 zUt$3vG#=-F#Dn_+q&XpBG0rUMI+Sp_FF=?#zaeHZp&7OgEo*h|)yJf~#lku~4Rcx$ zp#kRpon-*k^+yFFzr~f5Suo65#WHvTuvjiDGR*b& zr%$lw)i|eMRK$ZE=BOcpz2EabTcu$RIfUK;%W4+BjnbBEp2{zHZX6cRW((i|&b-go zp%w)cDs(AR;n-~h)39GG&ExyZJjV?sHsh0IBDu z3li|K*lw@8DnWPHOf5i`X2z@;JTqjDRULq$E!jxnHK1E)d`L7ILp%9>4xxna>lOTX za~WUWYKGGFOrSmhY?V7r6g|6=nau!S+Lj}9SX|1V5BTSyES*8(_~^S@qK+bkW$XfY z_LH0;sMWCzu+|->3E#X%o7W9b+=}DtL3sR)Mi*}~_w2v_hIlUD9UBv{!-ULc(brip z%Jk7XJO-m|0?b=$Qv#k}$a}HfZYOUt;;(p|1!5;*xn7a3KDg`%<2=5><~r@(*Z2M( ed??Dt-uwmh3@JM!qQJ!f0000FN1lF*&i(`MFVn#8S(x00009 za7bBm000xO000xO0b}Nl!vFvRnMp)JR7i>Kl0R$PKp2M)1*%D7*CI}c+tMJ_)zr=4 zDWsfG1R1=PEG=!0Q^j>DAw%O^T+yL)3E7;F(9cntwDHhjD0I!#QZJ5se`QCF2^b0; z{PXm@ul;+@IsvfCDyyvW-^63DmuK&seY&=6upEteb+IgaLq2Jfxn+Yz+!5!zI$x3{ zOggi+CX4J(#$q-lOR+bWwzGQKWO<g$l8`<0Ae9Gqp4VI%0ub%Dk z-sWQNi_ZeS^YJI&8utM-+a}Ars;-{Cm~yg^`NecHT)#TOlZSFmuD{FXYmlj7TB0tc0TQ!l7|Qy>nFvac&u7*>U!uDo~ryJlBPW zkr4uS8#^I}FoVu^u7#GBP!u|W;1s&5upHE!4b(lOHuagDn>*563!Ro( z78<5nILL!8Y9;F_Qia7XEi}{eiGGn-7ZXtK)^C~ST3GrJm)(qFKO|aMvlJG)1mYq~ z1*<|=?lp&rZdm_*nFEyiR-kw$bW*nvKPcE5HbR#OCJZQ{D0E4gW|CE5xna3wDvGp( z4zdR}oXmvc#!!;LI3h*})&vK@3O4}2QS=y?Lb(^5+PyeKfGBL$eTsuQAz(fr1R(pD zgix?!g|4U~zF&Z~-0l;>%FN1-f$7mfS=n)sK|w+BvB_Z}Iay(`si~=XNm&2@00000k?%jh00009 za7bBm000XU000XU0RWnu7ytkPf=NU{R7i>K(!Wc?Koke?99>GMT$O}2QyRM1CGF`H zoODp|Ke)-!Zoxqmgboh=1(pf{>mpGcnv&@z!T&+(Ut@Az?p}JYE`me8+vmN<<$lDn z>eQ)I=l|q>i}8WxL~lYDmE#HOEdzHa`ZTm&(?|$gh&_!r~do;vMcEEmt zi!=hM-J)iW#K?+w6ufL_6GUB8n(IXqi!249sTb2iaz~-t+~b<%W2a^Cb^WCcOM0 zw>LT+4@6ISFzEHE_GhyrVVhk(y1~x)bPy>ELd($jF?A{CoSRHKo&Hj}PUv;qbR45* z%xH4uEz~=QmU(y1zcJ6s O0000#xAu#{|00000=8lx<00009 za7bBm000XU000XU0RWnu7ytkR7fD1xR7i={mcee?Fc`?3v1gZNhXzCKhHn5Jq#NR?VK;MOyqRRGe&woq6uOQQfD=^^xT($%P1jZY%x{_=8CgeRtQBCm zokM)@I1R{O9p@34$y`BF&VW|3ENB)uj$iBw)EJM?&R_zKshmCQ_Wkvj3YLQDvD0nu z7DZ=9$R$jmap?G?V?x?~u=(S3Mn-EIb-R<)dR-rl+cKIob`#Rs?8noHkVz^Am5l6_ zkSsne8phAU> z$Xg0ImV{UFgO~F(`yj0CKc;gjm~>@D(IDbAOxm^(a%C&|flN*=E-WFOP1ETt=M;Il zEQl}3q>^P*c$^MpPQQxth};s7k+WpeRys>VJMt_#w25d}GP;rrR*o-z6`T1Q&)Lc5 zXPxCJ?DZqjo>ek-?>4;M-8!2EB_s|OukTx(OUGr|6~(NYao8(vFUWM^(n?0`NeYr( z-|H+TpMOM?r?`%>A3D>-^=Tc?$$0=?UOLP1eqPMyem&!6e&0g1%(}b<&jX!h=LO^O z@BkxREKofglqyH0&g)0RgG{ZKU(beUDbYI1VO{ga0mhc#P(!)kG05;NtPzwy3&l;Q z{P_EYA7IVU?8u#L4gT`cPr;fq1X)dpjQHgjG#r*(Z)o=9PLDx?Q#*!7?$N0bFkxwU z9Row$DS6jty5T#CO(h}zp4-+6 z9Mh|u4OcsfZfLF?8o0p17^`;#yW=Pc(Q3*@*$na!@}A*nA$NigD$E*+UwEVSDVB!m z3^F$1#b?j(vHSqOQT;+SUwIF~s8AUF6Tf*k{-4Jm%#EjeFi1}Y00000NkvXXu0mjf Dh;ys+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/monferno.png b/graphics/object_events/pics/pokemon/followers/monferno.png new file mode 100644 index 0000000000000000000000000000000000000000..93b07258760e6c13a08cce667e7385493a9b1484 GIT binary patch literal 809 zcmV+^1J?YBP)FN1_Svdg#0nt%G{BIJS00009 za7bBm000ie000ie0hKEb8vpK)G=t=KokH_fkqR-p+&Sf5ISYEYp5?2 zdr6iK&E~}(1EDE6OA2yF^&ni6Mi3HAJVZ+|7(yW#3?YFI&X9H~aSM(KZ4juq3e?x3 zL$fsPU2L7sLP}{uJNa+#{^{S>=}wX~jA0DpzlD55|1pw@8(2UFIoHNz2-L9<8#8i}jiZbteG0C7!72F)5WSV44^wP?G6Zi1#kFdfoN zJIW4w1gPOwN`u`5&4wPjv}N3#j`C!$V7Pk){Vx%=uOfQ^SQJyrw?Hz!oLoMqD zAhhGywiIgiK>1i-(DjxTKxu#U_7xWw}_^;49hI%R8I*PC|2XTED zPt1q?n8KZ*IL`(DQ!I-=mT2`hzJ;IJ%e42)>`MzD`8=-Uf15!`1CU=lA)1 zSR?C}`;uF}bd6Wc)L!gWcf~yOD=(kQtR$pZeoNw}x4>VJ&R<>nNWPxh`GWLRpl6K+jL&!zirU>q13l-bre%UVs@mrH zM<1w17f<_kmJpIgntXj3Jx++GGcsU&%q;u&z%s_i;whWIvty{LS>*Z6d1~bJD=1Bz zI{(!6?=CcfDVjzbR5moi3ldkWtZGMo9^xj%gtwG+nLR3H057oWHw?|iQPFHjot?qL z2t>0p;vW~npXV9D8EVMgv2cnASs9hr$l&j^TOKmd#5WK^Vq|rHfL`;gu%!um?>WC^V;T z4;t!84^kA?&_X9>%RU=MXz^-oU5iwl+GI#HJm(tUF^AY(b;TG^YJ?K zhvWOV3e+d6AFoNoh?PLQbg_>UYSy>zITyQ41Qi_LYB_$St3}j0S^J^Jkf^9pLQiCNzLt5bg*^!d2ubUEJlqYKC0D?G0$Gq(+vnF=94(eOPcx~uX<^PgB|$Rz8xA$`p?s_%@SGCFbX5i>9GHt zsl)cuxaFN9Bd*bVQ2mpu|31~e|7l=}G-;qPEj8%_xLf9pGh!pKoPhjR-4mW9+GcQm-A6n10HWT58`e+m9|{RO)_ VeqN}VdKCZw002ovPDHLkV1kACxC{UQ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/munchlax.png b/graphics/object_events/pics/pokemon/followers/munchlax.png new file mode 100644 index 0000000000000000000000000000000000000000..f76da3270b2b85b10ffa956a6989ef30107b6cee GIT binary patch literal 589 zcmV-T0G_eFkpTe#K~Yfv0000000000RevFV00009 za7bBm000XU000XU0RWnu7ytkP!%0LzR7i>K)Gv#}bbhNQQI>DYUCNxG5rT6|E_xi-<&MKa{y^=)JqP5h6O}ZNL0;_wKIgZEaOm zRaI5}PX#~tw?({Si)TTE;V!E_2J8%#>`!;u&>Wv#djp z+5rl6^NJ{?R#47_MzoEVtb5Tk8$g3{-p(epe3|JMO&K5HmUGq&7|8CrdDY;FwjR9# z^CQ{daqEFvXhPkK0k_n?@iw~-*_g(9zuDIobmfG)#g+<9KR zJb>;#TCHYYp?BEnoS-unX3JGX4HFzC=dS1ZvuPUmpQW2OfQfk=%X5o_WrO%C^DD|1 z&Sx1+(>cCKbn{&eee=|%%eLcYW`7`89K$??c$vq-`4N$iqsT?Kk8aT*1qUFJj=5*j zR(9rKuQzcF=7KyE;_RkPP|t{j+4~HC=iG9eFN2gvC&ysc>n+a000000000000000Y)sBX00009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K(mhXuKo|$`8@Pq7A3+lrSCo{Ep)xq3 z0+y~8Vw}1dJZ4J|Rzi50NEGY!Q;Mxp?(9*M#!3DI$?u-Khr0s+`t<43=O0Db%9%?`1f=CFyq*EwW;jN&6Zhj76eQK+5}tU zu-t8!;lOd-?SUA7Ex?#=K--SA%TV9#&$;Jr7L;JO*SS8$(Xr0AO(cbIJdQAay^FH% zhOF1QI$6w*biU!cJfwc(mPvxcL?M~Z@n!*eLRE*wu{@k`EQW*pMj?gH@h1Li<+mHu zp0#aD%7o|Dppx=pyC2r;9jD2eVlT*D}p@>Uf_`AggDu^geYJwOnmUx+-azC>PA z7neCn+8@kAMM7T?0Jo3Kkt&axV*4gtpP;4=Q{SW}SEB)(~QBhg3xxt}Pp%D=g`T6R+WQ;Y+#Rl9Kbbz zaN0wiL_k0aNM%=@QQhCLJ5jVP-jR&krvduDh~npT_x=8OJRX%wjWp6oBaJlDNF$9j z(nuqXG}1^TjWp8#vBuEe#jglmk_SpBjFZHFw#LYdz4LFVeR@eA=uSRoJ2Q@n59FUUSbsIuI5(i8K9b z!qDG{86%1J1wcGcgS_zk7-=^AgXVuk1y15jHz(|hEbcy;1E50ofsi=CfTuN76?bv? zle@=0>#n%KNt_wf?aF+V!6d$AR{($(ssiLUNrRzU`+Qxayei_U^iM8If&5tAJr)j- z#HnTt+tygS5;X(hBSI zaz@uP7!RiUEAoEGHk7|52D{YZ@`-Lw z=yGNWBQ#v#B;K#k#PW|szaCw|7{0Yjh!tb-LcksJ-!J$cwyyluuq%X+MR;F#HH5Jv z<`Bvv&MI{4*~E`06Gv)P1>^Xq|0IfKFMoMxJQN!22lV+y?&UXp2iC(`SzacjTUJ{4 zfri4XeZb+-43q_&RcPZ`Wn!Xo6j{L-E?xb5M*#*ixF9sx59sq-3fUD5K-XBE7I=p! zq$^(s;Ro`7cS$ElJ`r$Mq3xLmlk(^9MpiI}OLS=EafRHxcVd4fFxU?m@ErBQ1xQH{ zW0Q21w%$|j%W@WkJo}k3dV36Ah%V?QiI3i_6~25 z1w7}9H~_VX%jD``9+4KE<8`l{=lGNM%P)4X_3m?=RcH$2PUwC9_U(uY#_`lnXa980 zxpqvl|61zu25ErlbN&?(u5-*G4e&P_03pvsj)1pc?tXKvXK|cWsJlX#!Q&zkS1^uC zs~Ad|^t3vPRZH@MTez%8go1dz&|x!v(xi_Q?w+Y|8iJ69jQ*DGC-c~3=rL(z3*8gN{i?M$mHI@_x( z6jkL|4V4grA$}4zn6B^inoj0MCUYa(Y!WMMP;!R&Hn$5n8|Xv2j80hv>M&2ga<2xP zw33}-mE+}>1)+758hilgLD_@D)T^}(cJ{C>e&mwKo*-0h2l?ggF-2c$b?;<_3wa3)ir zlbmn{lXxJgdWu&n;evzdI)Ahh#-MyO(?T3)2GiR92f$eP!(vt4LA@74B`$fVhY$=n z0$jjUn$Rh(Ic$z&I?2N;cp?v^enPJ_+%I5$yOyHG%h3-PY*a5*HwW2a=SjI!0Qtj{E-B z)`fVxwjJWWK?HSOUo2JsJarh}Z$eU=dN|;MfGIj3>$o;UJ8czLu>-9MUN?|aLxsf z*dXZpD+exuMf$peaRYH{osVe%j{63gv}Q~6#sZ-ia8ba(Aa0pfRk%^G(8_=d0}gtz z0J!Vj27o0%Tsz59DK6j@0f*2*#O$NrFujF8jx{V_grBBN2LbQ4{J}5XrmxCP{73j z2hBIgNOzYYN*I_X%2v53Yx`rvB7>opRa%$i(-RywzT1Wle_t-N;Na! z!hi#%XBQDNV=hrt18Hs!75o2Ai4FPz`+W5ubAkZWAlhy|H`nl{xhe`^n#F*N0-lZY z8&q3~n`03Tr17~W|E$>HAYk9hoGzF`%phHz>EZ?#!h2aJ2o~3UE)IC+V+onFaRDM4 zNaN#yE1|*jfESyF3_`lLHTI>5|CM0M=i-28&Ggrc;tmoTz_XJ=gBMRi;Q;KeqD#bn u?BI+?1dQ+fG7ZEnl7IFptzNB{OXz<>>8ON(;jsDu0000=G`P)FN1_q45!Mu>b%7000000000000000;JQ0M00009 za7bBm000ie000ie0hKEb8vpK)In>5Fcb%H0|l=Jre*ymyRFc!uv><& zVsDOWueHodKfo@%NgGP~4f-vYxT<-DghCnY;Jf|u*Y`|B9jC9p`s(Zd)a2FfM{59~ z)sGLLPgXnBv-pnflbG3ksLUoWVOg%R*AA}yP_3;7W_He*5E1sNMEzY({gcf={m5j( z>98yWcFfTO`2u3@Sqn`x`&n?=HwaZw4Ah{;Xv-k+1$wXaS$xSij0`#{ceiu!4 zW7ROyEsl-d>$L?#ZU@#4G5gyyLQ=Y)+a1 zS2qLe8y4RHduBE;QGvmQxCpKWFb`WB;EYDF7+LJAhRDDg4`2@vN>J=(pei?CO=pSr zX%J;c%kz-sdam5yeFQM>vevX)3ex#9gRGtCZl&j4!vGSWrgJT4K5cWdU5@oX6DhIl z9S=Vu+MPiF(tg*_PlgcDRL?=nH*@q+Ih*tg_jic5{mj?Y5&e6s@d zU)U6QV7=+L85*ce@6FvjMMvTW_*Y!l;1Lff4#~|c_|y6UlnKUX(5gUz00000NkvXX Hu0mjfaXG^qid3mw%d1*lb0Rcg2;jy{dIYDUv0000000000&8mOG00009 za7bBm000XU000XU0RWnu7ytkPQ%OWYR7i>K)ICeXKo|$`3|Rtxis0gWI#h26n#uh^ zt#iIXOF+5^4uT!xOQqT|f_OM3bO?2jDi}gOly~Rg-4pMq0S6)fslWU8-qI4s>C&Z3 zmoEP&ZWy+=8wRMHQj-Ij@w#YpnV@XR_{PUBt7&ec$ z&9q&AW%oqC9=4pY)qiBrGuygB41M)_*m43uJcJ{&b8)ERXHSO!>VnvE!aO>Fs4zPx zEF}hCLImm~!Iqg#4q=v9ObFRA*qcv|Q{`WS{WZ8ay(nycA=K#GMNZTMV~d2etTzLT z-&p!?vUfwMc3Nad{P5K?`xw|p@^MrAE7>c&R=TY&qs8 literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/porygonz.png b/graphics/object_events/pics/pokemon/followers/porygonz.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7308c858c87fe2b1157a5a5337fcdbf82cc89d GIT binary patch literal 647 zcmV;20(kw2P)tX;bCz>nZa=}Q2+n{8Gv@100009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>Kld(zzK@f%)7EN)fuad1G|d{Hm;+cbfa=2YhVj%I1x#_x4)C#D3w72 z_HdlP9+pRRA~q}x0EZLN#7Vw+c&mEoeI|OdcW^`}V&YuED`+B`nCn4LYeq^m{hEpF zp7jWFIMIs4;-X6pLfx0Yf=Ba-cvSM;uTR8_iGKKs#LwGUbDbq#Aobu!x27^~`ZAo! z#e*_bM>2{^zN<$iXW|PxjC~L3R_+fE-gL0IkmP=%$8nI$l6zZ-Tf>sGXFr%_a77_LGH+3w9!FnEg(aOtXUbA@{aQ&c>Vl96reO8Pdfv?Pq~I7x0h5^_+`A1-C2e zk)_8=KO-)&roV%T)p4C+%89lW$~816lxkaI->=s}oqqIi;zw`U!1LG8eGHd$QG;v^ hO;^6+6Z}_oeFGxZ8t#!s0}=oL002ovPDHLkV1kQPCvyM* literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/prinplup.png b/graphics/object_events/pics/pokemon/followers/prinplup.png new file mode 100644 index 0000000000000000000000000000000000000000..d69eb020c764fdf6dfaab66b50edee8bbb6e76cf GIT binary patch literal 681 zcmV;a0#^NrP)K(lKk>KokdXA@HEl22Ea6kzh;^6x0qH zv^ZBnT?|R7C!sH40z!~ZUerx>8f4LE3tc)n;4G$JBC;qN-goKgLf-OB^rTC{cH3rMD;F8WZudOXmr zj(I8+NM;XM0K$TQ@s+pg;CCXsnlm53GY+)BS}jnv<7&R^>!KSs`%H(TYwUOHgFeRP zve{%y^6ppM?7Jlt%LcdFJ`^2PAeqg{&rjZi(QM1}J-@-8z6L-GW!DRTET4n|$yTB3 z(BRXjhY>vUOm;OI47#0>v$dL4o}nDBd?@!@`$!k^Y{&Z+sLcEn89)I5F}k1nrQi(# z7Z*ro3vzht=J0y^25K892grGWU=3VwBmNJN%`TPp=-lC7A*&tp+yxMF=1svmgK~-r zsPm~*a7#wyJS!XBw;^||{nmyj@ZRP>pf;q1$aIqDZ$mO9v)`Lq?K5*0Zu8K#ZD+#s zer2o9wd(;H;DT$huv%dB2q70n?`6S++1wWNLpz!}A4dbc)zC-<}vTTx6U zxe0E9ST$;^Ms1Vl^C(Ji&b-MJauI|nUzpHBY<8v~2tw>cau`J^_B{F$;+ut#J}a)L zXKJTnrIvo}2>Cn}9?<3}H`}Hn+-w?(Jm$_7Rk+F2q%);Bm!95T_CMzjW_w4R)n++Q P00000NkvXXu0mjf_O~}Q literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/probopass.png b/graphics/object_events/pics/pokemon/followers/probopass.png new file mode 100644 index 0000000000000000000000000000000000000000..779bc079608cab1994bbadd3ba5daf1b1373b175 GIT binary patch literal 1012 zcmVZ{0000000000)~ccK00009 za7bBm000XU000XU0RWnu7ytkRYDq*vR7i>Kls|9VMi|Bk(?FIkCjv2UtI5IUCh~*` zgf#>(0ilpqPtKASP-mONg+-<;$$BDSpbm>9M zbML*s=XojeJn#SY&(=>u{HwaVg!p?;A8+e=^9=By{)08I>*lqyvA5#_-TJ{q`-x@y zUjK0;0qb7iLH&sUUH_Rh*meW2VPm}mxInjl5Wq=1n}MEn4E(iB^sN_oPZU8s&WG%#|=^8w&^Zd__fotg2od9m)$#tI3-gFJb!_}2|2I$tE z0B+)m07KC=fb&9J_5GAvV_$&cezK?vn>)J`lX z+D$xFiFd#$oFA8AVRVL*ck#y$pUVs@qR)&@DpP;ODWxSdbuW$8L_8d}K$$qQ&* zb2!g$k=aO=uTH+wKfbW^R2vMe4op2+tSDtTWhQ_zGyx<~Cce?fy;1%6rQ~<4WO~D2 zRrq(BPbsd(sv|3`E{D2)itZK*&Z1SN16aeL1yTvriT!Q!NbeSJ*?_BlFJ={H#r*OH zSEn4F;}H+6#!Fpih#~k@Ox7WQHPiuGp!T2CVp<}E@CjG_Ubc!bDz^6kJmb*e^TO(~ z(sg7ER2>3XLj~9Ywf{vUrZ?K4)Dz3$L(1&E8I|HZ`v>5hlw}F6e4JFVg#Op3s iLqsxsPX7?_->vW4jT!d`j(ukU0000FN2oNpVq8Q2+n{k~)5n00009 za7bBm000XU000XU0RWnu7ytkQb4f%&R7i>K)iG<^Koke?8!ZkB2Mwue(3+v6@nBN? zC5oUBPEm4}sQfMa6_*lxQiT7}^e9G8CJd;u0b9K0|eKD%~k} zB~a+(=Ry8q-T%EijD*m(wzaMQR)PO_|7+poqjX?zuC6clUFsh7l*XOs=~e4=q)vMk z@45*!}pO^+@Wpm$(_xY@(2QK0l%0wq?vH4R_meCw00fHV}>XS}s5w zJK2Py(P@hSF;>L#~_8&M)5+<9Ok#tbu8o%?L^Dkk4Nh-|RuD zBsbe~_~`|CXnpm4g@dEu;NZlS`_=JFa~UOhH-Sa7Ezf?vA@|=#0hT&>EV+-*&i3s; zk0;TG^JgYZ<}tnrEIM7`t>+iuDy_vA4RapJt<~XY)NeRHx^kym*1c+-mh&SJjkJE1 zo>Yc;1Hp6{d50fY50Jv_Om=iicgk2{gnKS2J0m1_iF%c*hLZ&r%@*`cSU(x5JtXvl zt}=$2c~o_>6U0y#%xaMQ?Vfhkc63rEw!*lwZ(h|PJ3(AoH;0^AO~z((#2F_ZaDg77 zD?{lifoKBx&(jbl6A*Tw=~R3NVM=wLFdhTnAaR^Y3um?0+QMtLf>1lacf$3pkVL3TD0RaI)S()MC;d!C?adB}mIZ*%r000006jrXF00009 za7bBm000XU000XU0RWnu7ytkQ{z*hZR7i>K)xm1pFc=4L-R#49_+TN)$a}Pu?jd^c z)=>5UyE!aHZgC-QS7aOK5QbL^>ca@5U7n&Q8%~D?gl=b%qVXE&VLweBTk=O>y5Z;7t}oV5mqPH&Bsx&-w$oQ5%&mbY*I=tmAQ2z zgz<5_Z>1R9&F0r|Cu$GX8!@GYvgCCm6waQC0xDIH2KF30QMk%a4K(FCK9ighXR<}2F~-A%-Wm5m^&Uz+F?rF zk>0o))3&X(;WB_;sx>lLjxo!%MlQsYo~<`#8L)49n~OHfJGodgDXnfx-VpRg2R+7E zhP5UO>K-Q9LR?>31{!6*K!>$nw1snkNSHTVM1Br0tAO1$Hxq%YhV=l?lSU@t{UCb%zS_Bj2SP`f zH_TZc#e3EFtqa0(8MtZ)mI!F=_Pj_5;3pHHMPADv9iIX03G;?Nc79B+tLgctJM1Wd ztzG^H#g^DM2Uc>COe`fJ{K(&vzO*^((?ojyf%?wn;@-hx0mN|`!>)WIA#+E47CtB_y&H?f;pf^>7qGMpTvik`79Jfu3)}S) ewi{RVaQp%@mf!%PHTqNl0000FN0a0Rbs#NvWy9sfj6JQ7Hfb00000a{edu00009 za7bBm000ie000ie0hKEb8vpK)l!9JDcEcmjyw7Mna&`@)N|h>As#K{`rAn15RjO2}Ql(0jDpjiN_x~!tx8MKu zPdVX#?JR5c;UAyIjXc-o48OOwtVW4J83*=|UGS}CS?mI^9DXV{HpY<~)6)sgah~Kk2!y$Uw{&RD9G**)o!vXDb?+vQqBs_9*o%dR{hOPEuiNY z&xD}h`US{y_L@RKU_CP5gf~?A206#s1hv`7sCs4-0VnsXtf^U&+Jf^!-ffDWq zE7EPOI^Ke^Y@P9Lo#YF0!9?bBvP%mB&{@ChvtzcNs0A)cIY?Ht-Rkp#lU|eVqN0E+ z^CZtb`kr)GX#(+%(iMhDu#*aAf<^wCI�HvwkUi|aCbCf1z9FNm#!jt zbi*t1yZ~6?vA^5gLcFJRkKtgtk_u*mGLJiWC$Eung+CZ_YZ>eQtr9I{ubkP zW8J`buupG$(p8`}khvrXRy{YFZWw>P-@j*kx{(TIf-+B{RzaZY&ZntO{g|%Q0_~)P zvw|`G<0%dr>l8ozAN3*b=lKLfnM;CT8#R-7(_{^K2JPusDwqj&^4w3_?n3TyF^8;R zijzPsV7ToP&I@`!{rV!HG=25`cMgF)C-<43cr8fsyddb#y|(8;2wNEU*cZo@3TA>) zo;yva8x=ahc97B(L!H1yQ_p$9q4(=kJYDTJ`04k~g*&qBV}YerkDlc@kOjvHAwv({ z6+{k@3vxl36Owd_E#UNRz~1SBulXo(q2-5yw_kkKU+pG8e=%@C%paL|oIgPQVV=u^ z2JmBIcnN+5F@`U2QYK=}uUwlH}Wo?nx06NJjKNR#Ps5{-v z(cqa7I6jC3zql2=?-T?N@u17jnLz{#&ybJhWNA$XiK?Jz8CZ3kM81NHf}k6{=mzQh zRm=-+Ku<-^2Ra8Zzu zChEri9PxtFZ9gwCVIQEFpx|vnWI?&$93f>x520?E-~>8M0Qz&a0O-LH6L1m*7X|&; zLsfgW)0>|UXazjJqiq%5*HNQV<)5}_@Q7sTVSHzBOU{sH#LG_-~^PQj_wehM1-be zgcLti%L;;T5b8JxdC1F-aDa~j*|$s(an8ngK9mGM6l@YUKJnoHRi9SAhU~uujJGv{ z1{rtg7-?<*UuG1fO{Cg?S;1=)q2E|9Lll&Le8|7e1Udf!A@fEOJQn2q8bZ#Cxi%rZ z;anq_9fnK*J=7WaaVGFwfq22|@a61=4}2(iT7V0(X|89#*KUlHpO1=y8UL-OdVTnV z7+)jEM+D^MH_z3KkIZiF%MjHxd+e$<3&UZq;7I`?2x{!YOMO8d&yBAX%*L3_LLCzh zvza+l3@#=JXXeKgFlV)Y#>>Yy1j??_<|hE} ziRKO%WGD{CGX>aI1gc*Toa5)l7sxbqzj_dpT$$!&nc>G2(B&LIH-3glX@CBB`nXB{ aJNX+q7qIANK_Yel0000G{z~Au%yAiE(KF0000000000ZHXpe00009 za7bBm000ie000ie0hKEb8vpKl|PT$HW-Hq^acT%ii4-yR1IowW zp3WKsRa=lCz~zIqMF-cC8&>i+NG8{V!(>oScY$!!RJnk!=7;J_Qj{Da4$uw-0vs3P zG0o>kzx;>LV|#3m?W<{Y_GLzN@Xfzrn{&!G=qRh-KVjbNzq0-8T4bw(zyU+EBF0$w z1-@czb)4_cM7G(Xql{3x4T4}hJIYD$gt^mWY>Qg#XfGVFT_DR9`!liix(Rm7HLoW@ z5MOj<9WWOn2wB|a57^$L6F2_wZ5_Bu2!S0#pB4&e+k=2Z<|DCPfiUNMz=a8*(fYUN zDGO&(IAj==x=QGpIrR*)u}32jxjPmo*jK)u+W=9Wf6u}f(c5!R2Us1~z;$7Hu@s8X zlR}OTxGvD$XtZ_TG-;gpO4u`ROY~>1xeMbEi_ zz`N1QS8uj#(^jNsQ_=hEo%r$m+WSQdWuV~<#@K&nn~4$ujVN)k8t)(w8(ye*PsM=@_#nNqqx+flky!khOUs|nUqN(fY(kW>k8 zUBgK%`NRdm(q|LVr~u#{O`H2agz(#d%LG?1N*sv2=IvDR?-R{UFx^cAfe$6DryZ;Q zlQmvU_V@2aL-Ll%Q^A=KnCgHBoMN2d3nLVlnv+Y-_;wv)OoDZ;d7rjisu@~tFqLcG zkfqxBz=7Na4W{~>qLM_xMQ{-r;RDVThwVw>G+IH$Sx9vMjIl zmBhJnt~?`LP){+gw7~it+q*>y zNsh5k%XY>Vt`uW){lb1MvCk20w>}7Y$qUN}?D3eu->OVMs%Ql~9-DsbR|%$e_e#>- z0_J8soZSLyg1Tm(;#?kqP6!XI&Cw?fxPNvjEk4s<9X`|6CvP^T=znYf09ABSvF7hR Qs{jB107*qoM6N<$f|kz5>;M1& literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/riolu.png b/graphics/object_events/pics/pokemon/followers/riolu.png new file mode 100644 index 0000000000000000000000000000000000000000..a49e6e01eb1fbff2dffbf41776f53170880e0e72 GIT binary patch literal 618 zcmV-w0+s!VP)FN1NiNTo}F?nGrIcbrpxydOhDRH^+Nl8gjS#baW00000?%<=m00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)IV$7Fc=1K+f$Z+<-^2n6gU|I9Dwq^N(dZX&L&Hf+!HXHss5tD4O1LTs}@7PSml zv|mVm3d@j9V%a8t%x$5|138O7fHLgvr3xu);&x&-EFIpKH#2xA*d|mJ_*|1!0 zzujxb`$Ft)Ouzf}^+<y98>#J)F zKBp_Obqu{Z-#V^7Jsg=*H3Vz1P5zWx$FLyRI{DoDM`_zUpM30JPzA6NyUk5BX);(a zoiq&mSp3wsc|Kj-SfHZaF=*Rhp=DE$RALGXvPzWTuff|LS7Z2BVZ2aw6^RNQIX$=C zjZM=C7O*r+;d~M&rPD0SPZ(GomnW7@Xk_17Fk}k)BF?Q9ew@GVA0`ojlZvL6y9MFn zBlP0Xo@R&r0Rn9u&ePw%{KR$tiXSpG0`K4n=ly@V1Mqs~+!1OfSpWb407*qoM6N<$ Ef^&8hM*si- literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/roserade.png b/graphics/object_events/pics/pokemon/followers/roserade.png new file mode 100644 index 0000000000000000000000000000000000000000..77ce4ef4d770a1fe8dea1a6ecd83feeac437919e GIT binary patch literal 956 zcmV;t14I0YP)u@ONTVW~;U+1V*+nd!Mf0RaKYL2-!@Nl~fksew63NlEGH`H{hC{Wej-00009 za7bBm000XU000XU0RWnu7ytkRGD$>1R9J=W(=kXJQ5XQ=2e;gEL%aw#RebfpC35Fo zA%#+jXKA+JlLszl4296G;ONDuoK|twfV+k|6+%Huhc43T2&7o$3bkZC5ChuDzF_X| zy_a{c?ckg8{qMd1|KFbkfXDT?9@pdgKb8^%4;lo4pKgUa%zJRff507#nQh)mIb2G0 z(8f$f-h(L41!-0SsN|#iDOj`+-bh=&MQ5a*?p;ORSLX03vp2Qn;5X5@u z3$27mhcKWnvyL7NA)-?-?u233g<*V&cW?h;W(tYYO<3U?UM=(rMuwE^b zih6f3+U32Dbd16jub0EFj;G>oc}G2CRHjm}mNEH^@MN^hdzBQN3b8A+jB$90^u^>d z>$qofBT2zpA-@`oP`t}qCSPhu{jeDK50i!_ed;pp``~InhLJCJ`zZmO&PB(Etiv)n zEq0syV-PtW<>q}~5MoTiFemn^X+dbI$;f$6lZoI3u>+V3`njTlyaxqIC}_uj4$gAs z&a&<@ZaiY%v;Be-DK^J?qto%*hCP_e)A`bsnqukY^4;C?Zv&(l*bu*h4iJ0y=H1B1 zNZj3!?|U8}AAh}aE4J)E+grKWTu|IJ=go;(wVvX&Z@%O|d>QcvR@55`pGeOF}psJVNcEzI0j zT4Gl#wSw(rwPr(PrSfsCmi)Yj94%A3dfxO!mYZJBbZoWcRa~Jf-kdr&XU};}kuR!W zZp}>cWZuz(GwSZ2#(~ftFl#f{nhFMA(U7HVE$e6ngR)(SywO@)bEui~jwfyxi${kk zwlup`vy#)6)^jLJX5QAUB&lRtHK#uC#+&?1QA+L-+r2tpAAo$xsc$6>0AuYsu>_=T zmugy)PYpoXl27Y^ZV=?R-GOBnyl|;P#Ai$(ihted@6iFqGBY%Z%fOpGpXWD+0{t~K e6~UPP!TJlLJoAZ>R)D_%0000G1#n00000000000000000000F5OSa00009 za7bBm000xO000xO0b}Nl!vFvQmq|oHR7i>Kl`(IFFc5{=ZqCr(5M`!GvxBf0tH>>x zLs7e-_Nr6nh={o&iukw1*ch7#C82GGirYS(!|iApHST=ddn|LN=Vi zx81vZ69e$>)4`0c?cU{^7~p)xhBA2Ea_{m@48WVO%!gMoy4;#cmt{k{rP<;&3|{1B zhI^Om`p70cdKkvIe7xg3rhl%6?WwIN{Ls3dGM{kX!#J-FT!s4mB>RPB5PTihvpDT% zUR4j{%YpN!@Td)H_DkE~{quR+9zc?*)icf`Q?FU-_%`EwPpC7mnUVRclfTKLg|El9 zEd=YPgr4WNUa`_4nC81Ug{B?Fju8TsEZ8h!Y~G5(qu^~p7wMR|Njo9QzPV5VOA7Kl zrjn_t7LrwPXZ6>7ubWYfW&{wj6qAGjs^qtY4$SV@a jVxrTP{mW(Tia)Gx>tOjFm!-DP00000NkvXXu0mjfkaYn( literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rotom_fan.png b/graphics/object_events/pics/pokemon/followers/rotom_fan.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d5587af103e3f779fb2cee2a604674ce87d7a1 GIT binary patch literal 695 zcmV;o0!aOdP)Kl(BBxFcd|_KhR^-8f_=O2+%GXDA3Ke z;0peL0^L&y$Y=#+sxL6Ibx4P<7Alup{;gCO5$1?)FJ6#7QN*`x$%|7KfeI%Dn0G zlwQ9mqreRaOF1{pQ1C+6(;N!?9#82W^XWu;F?Rxpr43{P=>sWM;To!3zHfO#_qgzQ z5wE%(`$t}O0SGgl%LrvrwT8rmh9`871LH+f*?>AQsm|<)IEEFi&gDC6Xt=Ioqw9TN zues3$3-@PE01(eRrcTc)Jii_oUgz|{V^L~7IFvnoekiSuK))&9m|E6>k=!^non>2@ zETzhfVU|b9DpDD6Vf1*_*W*qHq=3j8)`6S?psVpZ%jc-lMQcdB4J0uahI2X4&mA2C zYNfV@fI<0!7==k-!8%hajfF8ZOpWD8>ilYbv3+}I4QrdON@_U!YUmltA$(=>gUS@^Lp510mGb+zyx%~Q*d*FRps<9TX%9qK=c drN*+1c>{0Reeop}AQh000000000000000oRW#!00009 za7bBm000xO000xO0b}Nl!vFvQ;Ymb6R7i>Kl(A03Fc5}4dt<2j3Kgq|1kbzxL)8~R z>?n#N#F&kaAfdL4B`@F?2sAIp`F!WNQPV`N*m~QS-}nEQToNI!b**c0$xC?burF&a z;IYF#Gt=ku*kQQhY*{#WCL<&>_u1c)Qe~l(Ig2GiH*=ryQdQ07RS_=AgyjU?W*#7o z@*_ukcxKDhY`$DkgX!3BYfQJLhr&o2nwbMb!}4av4PQF4%*_P7TmcluzQq7!4ipv} zpr8S6Oy&vadV*fA03e_?91vLZ0#XC*cjTBY@@bt79WOlw@Jo-Rl*KNCQ^p_8XF`4mYL)}-Z2M+pc15oh5%&z7gz=O^lVQ{Y2b~NRe|H?nH-HWM+x`BQ8idruT8krwUZ+5v8k)lZm3;U*tFXvW zI%X%17VNMbFQ#D`IiXFz9X6Y2xU|JLm$0ylb1LX@B)F`x;=o z`vrLK0(y)M_(WdxAfF8Qd^rs0F*Q`LhX#GV@D5HHAb&hP?gn^5fN&dMTQk7YZ9eYr zH(Pg<-M2s7?UXq6hYqY03{8WKXOn^ZJgNFEXIT7K{Q<-848WQ7`>6l`002ovPDHLk FV1j=U5~ctE literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/rotom_heat.png b/graphics/object_events/pics/pokemon/followers/rotom_heat.png new file mode 100644 index 0000000000000000000000000000000000000000..df8ce752d06cdfb3f5d3c459546c1e0c1823ce0d GIT binary patch literal 563 zcmV-30?hr1P)Km9cJvFc5~>J&_KmD@qiJH%RABbZQDi zI#(!bS$KnrwL_LOI zwa8f^U+2N1pcv!OGE-vQC(5}5nxN&TJVx;Y0$7~$WKtEpT2)c1RU{z z;w>wjf&6FRPi>!A`<|-qF*}Wc(|2w8+k6JaMYY?cyG;FG zDj85xI8+cX1$ScIn0Kv z1}N%1`H2Am0qN=aK|w*eSs?%b00000&UT^m00009 za7bBm000xO000xO0b}Nl!vFvRXh}ptR7i>Km9cKyFc5~rH_!#RqBYQ=TOXkh(6NgK z8nDo%gH<7D=4Q$2Fh(*YK!GkD49Koa$W!KSL0|~-nn8fyB}Y-BcubsTuW$QA>i>U{ zC-UH6U;EnEe^UYgp5qtG>>5ESWwe_GL~MG(Y5xM zh%@=s%pl-h3B5+aq~@EL&+%v(tzQzqE(E8f<})!n^s;IVikxgd<#MGVhQRQAmYhHMQ?!bNZ3GXNIlk_2^S1p#x* z)&R3}f(s{TdBXm5N_eJJ_sNeK^W~b}S?6tYV_~_l24CJW!Irn%dDQ*5SggtPTveSw zZu!>nvZC@08g32#yjObJ2-;D{FzO8Q&Gk=p{i_!YxG*cCRME0XEZf5ZmumX4OkHBb zpBl#48LSRptHZZ_Ld(72YHP}!K4{qvi{wM0E*2(nbNUkJmPc-Wp|>|Tf9t{-aOQ$W z!}81$=%N#h9M81wFFi3J)Ox1jX$}NK7BHwvAi?(Zwam^UbAN&N=n)T$q29@$XU&ZW kJ%?B3Kg#+=JNcP<0OAy?ZPI%MT>t<807*qoM6N<$f<|RqeE}5CQBhH`>G45fq1kaU0000000000000003A2Fg00009 za7bBm000xO000xO0b}Nl!vFvR!%0LzR7i>Kl|66UFc5}0W#Gmk0t#nvE_Zb`mwb?3O9Ae5CiXU4=5l=oLzWF< z&pCEk2T<*`$Llga6UNF7^TYv$HD!a6F}JW?))`hetKR2I5W<=6F^_E`d6{)qA~fUl z7&57?Ki>)TnFgP1A`~w%4ZgAsW83EbyKDsq&usAAGU)OtgKN-h8+6$UUSF^`7qT(v zG7TiQ{Amo@OoQJ)Tkd-dnR)v8ql8~#>P2;2T{nTWvFmX>!g}q01G_;e>T~0`a5un} zlxZr%gbTEwbH@hdH4joNsH`BKvYI(ME`Fu5ECIN&7LJ|6TBqvPEL56k{aB!(W9Xre zLIk0Dc=(}06f}lA7T;0uGE@+u5Ths3=4xCtP^t7eA4)L5*B}_~*o>a200a5O_uoq^ zxSkuwnTLXldi@|shwZo!%W^t?JHPbho#E)YR*s>ELh`B-j8G7Ua9oDC!nqZUgsz@K z!@7QJ$8tLUzy$~vYf&54j6M2^UdgfV`<0;4!m+%;J#ZyMD@f;74>`2V>m|AkmGsSG z7>VjL63dBY*fiJ!W9ZZhDioyfr1i97Rc(@K7RvCh*nMX7eHKZWj;!llr*2mA-hY?R z@DW-=lLJq|5PJ-^Oq81B1_f~jy~=^rtlovoEJ`D&q_x5FJc<;uI|?Q@7{$)e(rSiV zwz})p%%<#r%v#FpjZZ-k3Yv4Z9Og4y>~d8@tE9)ov X>lU>#7C}JS00000NkvXXu0mjf&x(Zw literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_land.png b/graphics/object_events/pics/pokemon/followers/shaymin_land.png new file mode 100644 index 0000000000000000000000000000000000000000..68c97d6f0e61478cad411f018f8b1e60554b2716 GIT binary patch literal 485 zcmVK(!WlFP!tAm29ho;jy!^nZ3u}oktZM~ zhKV)|PEGpfHYrcQ#(2C;UDVXAgSo=M!hpRG<-Ij6aKcqnqZ8lu-!GGm%`>UMs^UcvZY)z{urBIw}4mmU%u|@U(KntafgSo;6FlesFmMa+pljViV z@0SdKT`9~NTtHeEVvCh)kfD*vtLH@cN#P2>1jtWy*y4fPZDJ<$(f`7rw80Y52kEH| zSzfw}#g&KHSJ|uNiOO!v^QIiK<2%9rEZk+gx8{Pj%L>FhDS4*{<7`{{^*@0v6K$-K zHGG*Wor#Z{<=viH_pw)*ug4*_%!1e>+g?nSUS}c-FYW7?FnTJ)KAg%~jzi+sc7^9n z--My7@L)FFc>DTz*oWv7Lgq~iPTF&~J$LK59+1ch>O$QK=7FQNLo}Sh^v838Zy+7_ b|5-i&q9q$gYXp?200000NkvXXu0mjfB;?z$ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_sky.png b/graphics/object_events/pics/pokemon/followers/shaymin_sky.png new file mode 100644 index 0000000000000000000000000000000000000000..22165842aece9d1afb2cad8cb6568be34dcf6225 GIT binary patch literal 1030 zcmV+h1o``kP)R9J=WmO+c-HWbI*F&c8|vCw14CkQB6HqP9l zLntW(Qo&l?+p=N1^9kBhpc!x%UrI2oe5`A_e#~vyx%jrpf;;4}U!dQml4DCxE}gd5 zl6U+0y{G@*PqGrvJI6WBagKBRFM})zUp`vEm*mj`Cv;_RqucDWn*UaiB%yTH?+Ox` zgqHt7faD(c;`e>-iDj$j#rq*zu`5UtnKJ*SGjr7yEo*@-QwETLW^xkH5AyiHqBji^Xt}QMF?OJN z)7$V5GI5WX(h%bXvj#{ge>N%)p z=!_tRjLppi2xP&?Fa`LEu@3;$2yAO^40(gJV2d}!py{R*Gy|p0$d!TAOhEG-PvkU# zLK#3?peC}lOw;1P(t=unw~8Bq+JRt;d|+1dsOB~svzhYxhe^iTT+z8^)JwvMRd^yw z!!Q-MYQeSVvTY~H;Q@cgn0fK5I;B=$aRg{0W=Y7uNX^Ho4j4q1iM)M~U*B5+%~%i) z4`@@@FA)bnsiiiyRx?0`?4Kf1w!Y1bpK%I^{om5!yQwu$^AkG}0=Iw+T)#scWB^BO zKymf`u&aOh>Ie`R1KuZ}$B2E^6g;s_H6ugo0N@w9*mbGc^nxh%6!j{O%D);YBPd|# zaBexsMTVPdzO%)5Y0qrD(}A$T?3(j1S<$pU=DW^=kipX+KH^E6X5uArw)_p{R@2P zZ+OmjD%=E%UVoS^UCKg#v%+l}XjdST~sj3Ej4 z$iQsm{(;Ex3@?Y|!*e(PJL33;j$7h11zbU|a}VfzkGlL=bPfI2{J)Ps0YmD+veZy%`2YX_07*qoM6N<$f&v2L A$p8QV literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shellos_east.png b/graphics/object_events/pics/pokemon/followers/shellos_east.png new file mode 100644 index 0000000000000000000000000000000000000000..adae89d4ea0299eb68d6fa086b07be30454d9f06 GIT binary patch literal 603 zcmV-h0;K(kP)G^@VSy`#k0RaK|**P&WF`1dMNoj$p$yopZ00000yVg3s00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>KlRZnrP!xtUWC+sb7V&HArBIy(5hr_1 zNeV8CqT(b%!NI{0ISvj@5e?dAK?WIQkpGkU`1`wMnde=_iORQG&|b%T_g+ z`Tsy;bN5wbC9Hh^(vUe_U`@AgW>dHrt%OH(KHhF$i58sRo)hdRGD5?urtpvuVj_{P pQ^RU&r*A|30^jE@3|ncOoOk{=xD1%09_Ii6002ovPDHLkV1fks1NQ&` literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/shellos_west.png b/graphics/object_events/pics/pokemon/followers/shellos_west.png new file mode 100644 index 0000000000000000000000000000000000000000..673be6447347c9bca54aa9ceeef77a275ec92ced GIT binary patch literal 583 zcmV-N0=WH&P)xw*+%F-iGZ(E$MgF)=au(OLP4$?56&!D*3^A!z^r00000VCMxu00009 za7bBm000XU000XU0RWnu7ytkPy-7qtR7i>Kl(9?0Kp4fdgmdX|s7N7`{s{`YO5I%A zp)C!`*c6091J+2 zyUT?bMy5=eGW{Qwi+}Ss<}W_f1Qe+Carv6fm~L=e)&y#OT>fh_LY0Qs@W4|XsPj#? z?7~^hQddo{>9x`Wb$+Gp)!{5=sg4M^00B5q=i^z-QY2*Iqoz>jcgAeY;ARj@<>EMg z)fDP{Jd0Us&KL{d(gU5PUtI6wSG=Tx0a;mDIXO810000000000^XkR700009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K(>+VWKo|$`gWz&@Nt;1Jr%WOpltc%e zLa&>f>EdRgOK}g>&8g5YAh@)OsAmRospK-m;$rVUl-JkXU7A$rB;>#SdN0pCcPRix ziWDhQx#?M1Spfk7;kg;<>G^S?*=boRF;Q^<0000000000uV_7000009 za7bBm000XU000XU0RWnu7ytkPtw}^dR7i>K)G=$qKoke?gA6yssUS$*TC89l(gw`n zr%-qZX}3aL4@0~nE-gq4P93^*3>6`Du#?g*5-I`dhw4RJyu0R-f=dVgxcqW=@8!u6 zg!b8IpMCyQrWxKf`Y_!)=kYbw%Q;i8qb#}~Ysy(To?CknRiZQ{XGNLNe+(I}j zJB~)p6nm{z(~f{B?DZ$YVcBtNUe{3D0}t4bBpZjVDt}gX{D@eku|bvY*(HFAO_Ci2 z5O39gR%LHSzLfp~!JPmAY(LpKs5IkV^Y2?BdtGp_1XvD;%6JtQj8LN4)+XDk7lz4> zbDd`+mkLB>6pjG=1xoY>E10JSI-4eYJ#wDC5gZVe^}8_eKezh@uNseV*uB!~3U5Y! zfW}j#^!&y(O>O|e_+?;^9mhoqZ$=)%#qC0ATl5L#AEkI^ zxj|oP+VPM1g0flk8KpD60rNX&twtS7Y3;2_yKQc@K5-rKTZNBIOL#)f^D@8gI8Iw> zeCld0zucMOn)ETGNDh`7*2D(F3sGr1!|#GwksAK_+!wU~(mx#3iyZ&}002ovPDHLk FV1l4e_f7x+ literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skorupi.png b/graphics/object_events/pics/pokemon/followers/skorupi.png new file mode 100644 index 0000000000000000000000000000000000000000..032584f56662f821c4405e9e922911aa4cb87a3f GIT binary patch literal 686 zcmV;f0#W^mP) zd2t!Rv3Y^fNlB3@p_#F{!8timd4Y-P>G=Tx0hyuUSz)mN0000000000f1ydZ00009 za7bBm000XU000XU0RWnu7ytkQBuPX;R7i>Kls{|SFc^om2}GtYh0sqC(-xd;J-A@J zwOhwPQ$hzrj#CkuQ|Je1;UBFkFC@5{v=BX z9qLerI@JGCM9@m@Rq(T%F7_$JpX}eu9m40=uku{%5+;c@B_twwFdBfB+$CIF!VL+@ zW%A&*iUrx*(aS`bCQ8}YEQy4RxJ5*(@!MEPGP{?6MCj}0G$D}?(aQ@~z!IiEQ-NMpJ05IAFfdyYd`1_-B zbCEXe+7r7rdI7aXyIMkNs?AK4EXrc4!X|rRSp*?|ecayDiid_f#xN{;ox$m9mA9GL z%r5mzH>}?kC!FXe2#-$gPHkg!SksOh+y5HX7nAp^<%f3{VlyLbRGv#7ttrcM)*=7? z!`dceAz#YAqlJEvoxDzW^i5C zbZCiL$Gl6#zF4J9DZ}WLA0w;J{Oi?l)G&A+Hi-xhHahA=I%ZuW%oGJP>pyG95)6!P z24ZgL{F{m<@Eo6vwUh367_TLx@n{At5eRqi<4DN!=<-VLsxd2+T+V9k?%rSh19ZPj UG{nmCK>z>%07*qoM6N<$f}9yRlmGw# literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/skuntank.png b/graphics/object_events/pics/pokemon/followers/skuntank.png new file mode 100644 index 0000000000000000000000000000000000000000..1e31df863a8d9e854f7554646db251a144c4caff GIT binary patch literal 752 zcmVMk)bIeDJd!G>G{E7L1{5@adC0!*^vPO0RR91_i`PQ00009 za7bBm000XU000XU0RWnu7ytkQW=TXrR7i>K(!q+_Ko|$`VcA2V5EyGqAnf3_JqQJ1 zPra209s<(9p85t-5PX4Nq67(~&9zYa5-wpI_+TEOH_t_J+zm*Hz43v8HJrRbL3ZOr^%r}8}cyBUpiRUDQ^M` zoH8PQlw)hlXq?=M|0Q?o?d=a|7|&*Szw)uSfjLWAE)^VEThe>4Trj44uV=Gq;`=<2 zuYAJW1FJQ;T1f#%PL?syyJR6uA>Ld6itBk7I#a%~CHaF1q99x2t4u05a>BYao=62O zrqJG7|MKf|4$v_nk{z{o-dxJV={zVd_=%L<0&W(F;=fT!)nwGfXHCYx?9$#WvJTF~9ujD7xYvnH;UVbSjIExaI izCe$rQ25mS74sKK7Pl2|fk2x80000G?59IRF3vaMQaf00009 za7bBm000ie000ie0hKEb8vpKlfi4+P#nh}S+hRx6kkE`~H5v_Y43FEws==|Bq;CHpg-^SSG?qHcN$`Jd5c>NAhL5 z=ADLQvy>_Hc*&nZA>8f(KYk+L@}!Y$24)kTuH?_N8{}ZjlScAbd7<7H&it7+S@L1J z3gh@NB%69>9@w3e^9k6&hM8jPKo-L8?wnj02V&k7n@iQ}5cd1hTugT%gxLL&Y>Lst z^?qAa=Hjy0g@U-|gprJjp>R8WJ|CCY`%tf84G1sL&jd;+!vi%O9 zN#MT4$fpj4pk5te4TPW&A7KrEW^5IIye{4zG|P{6){*mg%C^6t-@&$w?fur8X46gL}BH{A^) zFB&YymQGX2Km9cBvKorI`92rU%;TR3xJY>oej1k#H zc&E!Me6J2^;SD&W=Y1$jrQ%k3`ZXRjKco3IDMOsQtv_A#0o4>I134Eez zWs!&?9Z(r3v2z4t_(a-L6!XTuBAM;yry&baRPg{!si{vb5>X_hwA>hMuH$y1bZ;0L zTy4V81|*!23N}Pn@0d3_9VIk$0fVjpZ9u2XeSo4`Grt35NE1_@T-Y*szbzX-r(@Q! z)%8A5UDn)>l3=4q4U!!>=JGZ!MruTjm9R%=O)i9^+ed06U?BbsY zE?~wwj-;FtNkkifJU~_78L|cmm0R+d%Uj$P!_2-`%>>#*Ccv1>!am~~`G-$cQ>Ggv zo3b3$4v9dsW~Z)7HVG1^{cDS{MjN08I{1*)e4-A?$U_oAfr$N>5{jX@%IJ0KS*{;g3!m~A_O9glOYia}|LoTy-1)k-gX_nK%-=Zy)|I%* z&l%~H{Ja;7@tGe0TzBgZuAY6p7>`*OzZT=?Kk1KW%n$TYwr i{&&4zv+x7`w(B=hvG}>gi-JS|0000KmN9SKHWbIXaL{n*XQ;QJ$dsvrH!qob z3lj-A!IKXN;4KK!0LgeL1ze3oYS|KS>V1Hs{RUkMD3#DBz!?NbfM^dL>;SQ+-f)AV zl6<62ItLDdc56Ah{h`hz1oFL8xIqXT!B4 zH*bj<2f!_uonG^UO@V{MAFY6hhSrgrn54cE@NjWGX&uq&NlQF}Jl5UhI0u*fs_Zo? z{Zg z?rTTF0>;G0dE~sADpJg93yeD@S;2hzsJxnU6*>5jFM^k!>m+g>4@u z;yFNJiB$qAP%Vwxc)Ujj_mcQNq2uur`^K4RQ6*3kn)rSw&!Z6_Bfls{>ppkH)0Cx_ zSkLfjYiB%`D+L+IWA?}jpd&-0j)xSGdcHlKR5}VtC*Kcji!Hko*%a)BdbHP0Q&S@2 z$j~Y<$5%~0uonzE>I}NO@ii}Z+2o>oom+`nF?56ics^(A&%`>qV>rAp3267$Be#EU u^rqUy=;*Ey!`%d*8Xx;@^|>qlo$)sWWxXs1_a%}50000n+aN7ZI500009 za7bBm000XU000XU0RWnu7ytkRPf0{UR7i>KR=sQ6Kor-gBU<_|bjVmJow6TB0dL(} zx`be296ERCkiiX4NG%2jp~EKsMS_G(P>F3$)irCI((Dax^*8i%ANq1gTar%g8xs57 zyWhvXcb6E(|M+JD-EqAUWVD_;z9IJ~>kTn*y`H>CT19Pw+t#IG5~#1HakeH0c}@$k zS%Ox#tV_itjz%}F>Y5fn%Tc;=R07Gp$`L6Qqh9Q2SmMsw1X&z60JI|_lU5iyYL69< zDo2x9so3v@s+gCo5m<4)Y63t50EGaNs%25>2+fjGu|FthC(BE@I#8bH*L48tNCOxd z0J!S2$rUI^ldx2b1`%Vj0&V82HbIu}yj*F3Y@{7cs9L9-0Mt5l`^pg-$XuZ~9Weew z6l`qfamZQ(XAd7~QtI@TBh=TRDaY4cX71@oI`U&L(TdYqk1^2%Yy3TqL(;Uc@OJj! zXaJ7`2uJ?R(*yy4-eSSwNILSts}wJ}2+@S}!I#Bzm^KK^#fPWQ7E}W)BjG4LrJhUy zA>feUK&^NB!cp3@y;AXXKag|=8*jbf%Z)Rl^z!l6XPPJgClZd*NNpi|q;L@Q<(SN| zEgVsdlTz`7r>08b#T6&;YWNnw+xH*K9Q7u`Q8tw=FnhLBD2C3S^owoj2-}t72?5Y} zh?`O8C1Va#pwtV7(t-)8aFkNH#qHVRNN8su4ryZu($UbZ6h}ez7NAR@bpi`_=JfTe z`4V@<_YKZpIPyRMSn)2%BN-0ly|a{~ZlxH)8lw3lSk?(>r$6t0`ignev<0tlq&#OK z?w*r09W!jJQD(xCx>rImXH2UjIsWGFg2!~9>ESkV@V0|GPr}5osGbAis3hQuhc>Ac z^SSeTc&aDWbot|BCHxzT^&kjG>T^)sPwQkR4qF|pbW~G}@ix_pi#Y1wsV>OevKE0$if9s7mYCQ#z8l#viBh$vG^4CX-P>*000000000000000F2@3m00009 za7bBm000XU000XU0RWnu7ytkPRY^oaR7i>K(lJiMFcb!0Z}G|zm^c8aL17I_PJlWS z$%ss)l-RUO6%aPq3c`GJ867T^O@C&T+5InXeGjl)XpG&G|vs zNjSSn2Dm3H6U6e!Wh_(cHRyUrSFhK%FBxhYnnn@swi-SrQ6blj&~;(oJw7?lP}9De z2-QdIh|>!x+|Ad()uT&(#~%XJGzgRoLd;Kd70SlVhc=PEdlpPv9DWwKM{j;08mrLN zmPfwNTRnTm?TqX`=qjn=mK~8=uM8EpE*=+Y!>O|SL~36m6AC91^@H`Tx~&KQm@og{ V+o@CmZQ}p{002ovPDHLkV1keW%;*3B literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/stunky.png b/graphics/object_events/pics/pokemon/followers/stunky.png new file mode 100644 index 0000000000000000000000000000000000000000..52afca9ed4e2b0441e9cd4fd1b9bf9662811d64e GIT binary patch literal 597 zcmV-b0;>IqP)G_FKiMdfZ0RaI)DM0`L00000lM=}400009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K(>+VWKo|$`BZE`&9YPc`*vS)4eAzmM zbQg4R5Z#+XrL~{Jv6Hk=IFrfMp=eR4DV*&=A>Mr#udz0Fp_dlAIP^aRe!brF+$DDa zY_rWa+x(yK72Y`1F80Qm*hRK(zz#3)>R6qq$QHV}JuC3W4NO=MP7Ay`w0B4pcNCi) z2*U!e(E#NdsHUP|muS6nB_596;*C&L;{{GcK}>XZc5U&1EuCj8x~|u*iPlB~!(&|4 z*g^L;FkqEvoED7T(tv1fP*JcuUT!0RZ?Cqy*mB-!IC}q(Upf^&lU(vz4c}gF1EQ1h zL9nQocN+7#9=u2e+04>7qf^SIaW2f}-Vb1NiqKv~Lo)`GKYvV~h ztCx40?*|CmL~koW4JI!@_^;vTa;(M45jz#`ZR$#PR1oMP-({>Ji7 z3%cQB*mJZ7boe$@PMKuWbB7p5qs8t#cYwXjX-dN<9NT&)AsZ-GmeP!ofE%)T=2?8#HivQx^&SzoML j`8Q$8?6s0>xc0ms1Q`<~d4D|Z00000NkvXXu0mjfsWJ+Z literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/tangrowth.png b/graphics/object_events/pics/pokemon/followers/tangrowth.png new file mode 100644 index 0000000000000000000000000000000000000000..9075975691909497f884286d0cd87c5d95826db8 GIT binary patch literal 1042 zcmV+t1nv8YP)Kl|gGGHx$R`F!VVaT;8R8Y_ z87=?zS$ceC%7xGO^PSd!su4V7h%XikR@V(L!O!EdmZ>4To`#Tx8)Ha?62*Swa0iM zmkVw(O?x}mM;YY6L%ZYfdMSE{3D%oI=fH z-m7aw=D__6e6fV`>K~%!Q7sr6Fz^_A*knWy#!t3*pcqaZugYv1ZfLAPk~9W1hW>!D zqu_RSMaZ1gcN|d1k;f>(lbFD7N>|kgc3f{*GXe!?&5@W9N+ZX&!ygG@q#ra0`5j|y zI-?F@@kzrG>yZ9g^I~0hMj)|!3$_bJAm6R1HJpqX>$`~nrp)8Ybvk0@z?+|i^{1B& zhOaU2ooJQ$dSXGkonDT1$rL`*>7G6u2>uiMf{*9@@72OR2mYt{7v-ud6&>Wh&;S4c M07*qoM6N<$f@28ZiU0rr literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/togekiss.png b/graphics/object_events/pics/pokemon/followers/togekiss.png new file mode 100644 index 0000000000000000000000000000000000000000..64cd1f5295f9ee8322c52d5f27a259f4ef4ab6aa GIT binary patch literal 733 zcmV<30wVp1P)W0RcflLFwuFk(sdo0000000000000000000000000lwOfA00009 za7bBm000XU000XU0RWnu7ytkQQ%OWYR7i>Kl|ggbFc5`BXXG#6+S<{D?kQ&+&@JlDUl?>$Uvg|Ilmt>GYr`k3H+)C)10Vov2{_O5c$OLHr!W@ zrD@d0V4tXfAW-)yY#@pZ1#0c0qmdA0iAUJhU)MN8I4-bTr4X@I$_7bmArLJ~d$6!d zBdT&ROo+0?pHM!1Bfa_EF+bu2Xuv6n&!KNs5ZJ2FlRnA&Iyw|K5KZmb#0{-nlbqi7 z8|35Dj|TlFagCFXNa8FkIOvl@cR{TKkp_D%ans_?xAXocThK^bf(Tv2rAFu7@Q|tY z+Fla7U8#G+aM<(2>wTDd6T_*iK;Ul#QFcRI=#B_NCJt_*QA$+8%|d_F$I$1AIcSXl zuhA)G=Ennko}2!zgY-nA1LB|*VADAI>kO0#L~auLlf)J62)w9GWWad+|#j#$3&N-6EBGY<0d9zfoRx6Ye0%w|6CNbr9>pkDDi#t zDEnh4;{LQUB04xt9lalIAUYCyy%t{M>(|&$KQzdR=;$Z!-#|1F)?~1W=eZ8||C(AR zFTae4)3cfwuG^qKF+s6Wh=K+r00009 za7bBm000ie000ie0hKEb8vplS{DF|nIrwreT--Ag-|X9YPy0ra0l161xQk(EncMx=1NSnw`0cl+ao#Jc zW{zSlkHgtxeq-n)-14}^3S*AifX?l}dVz5@U(Yk=KRp7yW>*HeqGBgxFtr0}wzB87 zgPJOnm?_<5wYbHnPUW&7!GE24FfFt~urkcDSRw z!wQxSv60Ppl&;kYH%XnjXGmt&XpO94QxK(qfd@J;dU=Dc-%!VF2o&~kU0-V(7QsYGb&hN zgOH61?qOxd*JjEi7Bl0ya&X9N;tZ-LrwAR?_~>MhS>udX|3WK2_)k#u7P2+43oMwi zbeIIuO?XM{OS@RL?##)9A>j%#yIbY1$E}e=kxA+ZWB+k z*+KOAql;=L+Mt$O`-Y;Wc(gSrj)0i)V7Q;Oc*G-%GjWPmPSF=DFca4w2FAP(UwJc5f=GjDc)GHZMA=o?jx;cTrWS+-ZN;O#?>1#at;2StP1re> zGkpzk>*xgUgwTg%;>78}l!7!i>r=R1+UckDH^bwA46H2F-X zZ)1!}gaHwMoXM3RPv}{M!PG2_8O>!Y3)glcJ!4RrPpz3KZ@m9I+;t6#-P8i`osxEk z-&DkPF||^Q@TXt)q)RDjcjPITJpB-%qX*>DyWzmM>lOU?Ps3^=3xDlj_x-NCuCL9R z2ks|0J<~6Op?8JP=NG^*O6T+VD|a#eeAdelslu1O!ETED(dzt4>fd?!-zGe#hG$?m zjdK*|%8lWUrH1FecU{A0={_OpeyZrZL?_Ne2bxhZlrGnv8BC#D57EZf7`M775kAX^?w^|8M*YCBo*?tOjA>00000NkvXX Hu0mjfk$_jt literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/toxicroak.png b/graphics/object_events/pics/pokemon/followers/toxicroak.png new file mode 100644 index 0000000000000000000000000000000000000000..cbfdfb632d3c5d4854719a138375b6379eb6dffa GIT binary patch literal 665 zcmV;K0%rY*P)~0000000000V0Pi900009 za7bBm000XU000XU0RWnu7ytkQ4@pEpR7i>Kl)sDHFdW4VhZp?`9TmJ7PfmMK)!W_F zDY%4##VcR`e&h&8ByQ>ZndGOGP<`d$c@}hek!BVPK4a(ZnK@8%0YH-d64yjvYVUFN4YFV zInJ`Z83tJ|NCiI3j&YWav0K_6`@KKT^De3}c)v(u`0?K`a zF;gA9!>#Z7g)o1G7i8fx@F{Pr>-TEg`oNZZvB~un zHvE>IwqW7UjWG8$XW&a#Pd$CZjndniZJz+23_jzzwcroa7#74!>ROAKJ8Wr8ioF+p zjyoTHF;ActS;CQ9?m!`H#m9Wa=?f2z{73x(5!E>Aq~b~K00000NkvXXu0mjf=LIf< literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/turtwig.png b/graphics/object_events/pics/pokemon/followers/turtwig.png new file mode 100644 index 0000000000000000000000000000000000000000..a5246fa1ee76f220f1f5d2bfa69d28446d93b4b7 GIT binary patch literal 534 zcmV+x0_pvUP)K)G*Lq)D?}FMq?KrNKlrd}DKp2Lv0paBqLky-{-C`{o)6&w( zPw)`3^$!R^brAHUdUyIxk`W0w)azb3AE zZd$epw=~77aLC(u=U^|puRpvZRyxb`Y%imz$n5I@G5gokqNGAtv)Y3#pGgewfakz6 zcQ@9@zIB6NMj%kE1VK@1pEtz3ad1&kDFjAJsJVQ{{L3m~LyBdtZTf*Xq*(XE>U_XT zh=MC0VLOdy2wyFz6e?Ci{?Cxc{L7VvBCoj0k$tmx!Mmg763$yO10m|o{a&%XyxcN8 zUsgiJO4!SNXXdf0P~^ZeN5~n8%?3X}09*_4I16ssYI(nMdWAl#9UZ22upvx@FKsIg)*01<)ZNJc8Qpm)dInd z5PLn!7trv;2O%(0!X6F0geVPL%xMk9midO0#E2+;}W9MwXEe8c#P zpitzTJ(crA<}515b)V$CB}Dw4P>M=*BrfEP+d`UU>$)%+>6}BA^IS9|>VU>jK1|05I>G{cNDF6Tfm|+7W00009 za7bBm000XU000XU0RWnu7ytkQ=}AOER7i>KmAz}*Kp2M)V|r*jP-ARDsRJd8HyILd zadV(5lu`=q&@N4fmO=-KD3xQhr4VPci9o&J#U{bz$m+c=h2Ww!-3ukq|Duvkx;wdc z3M!e}cd?$c?)T{4(+2?m>)$A7#y`%D30eoSreo$5Lg#u0ALHm&r<)27qa(tFe<~ZB z*K)C;eIUf!Z`8T49`ZUDvb8`lE6WgP17{f&HK*|d|6JQi1jV{zgsj_jKEni$fvto2 z47bicWdspJ*`Z_W&Ld>&8;M{oVIdga8?T&5f(-A{QKsoJw+=IF8dcG%2+$Kwgh1J% z!xc&mFrQyMA7NAB{bc+gBWTj$6FSfrG1#t9O3};t44+bJ>mrb`CWK*GmD4dr=0b*6 z5KN>t+(IEQrGIWy+Li?|<4o5eIvo#6i@9~6;*xaNLRZDhX#)IS!N!@!0~za`%o28& zp52zVokYCH&*-)~9u6NCKF~V!Fn>(o7-7960vYdQ1Z4Ny)g=#92xCGLF2ntXp&ck? zA#51ysjzUVV!bQ^8EXv@9|rc8t`JEBdj^QOt2Egh<;#($ZPt&xsSs+LLim2| z@nAwp^KKr7#I@+a;Cl>-UT#Yql{Gy+4=96t^$TNgr^l*^ba?;(002ov JPDHLkV1oB2k+uK; literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/weavile.png b/graphics/object_events/pics/pokemon/followers/weavile.png new file mode 100644 index 0000000000000000000000000000000000000000..faff523c7a8a55efaae7ae93474a885849c45d02 GIT binary patch literal 663 zcmV;I0%-k-P)G=Tx0Xa!=$uUWp2?GEC00000Y9bh800009 za7bBm000ie000ie0hKEb8vpK)3J)%Fc=4LVKN!~0KLiBK78aZOH|Gs z&DADQd`qyFlA8*B0EH{9!vUQ}lwXNhh#lV^+j3swk^E@;Y z5>;=R9H<&3tO;bH))hi1)!Jcf{n+a<7$8>h&nnV6Mls@Fjg9PTy%hpg0}#ik`d+P2 z9QKULx|fB`%YwO(L?$=7}xukkp29A@9`8s>R0)0;pD1C8BR@M(;? zK-IjW$pw6ipZQU!apdwq==J*x#12ZkBT>yO`SaxGHT-?HyIXs%C(XpS{dR{R0$O%y zs(B5f#XWwvC?lG>&nNnv4ODXB340000000000L%xng00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K(@ksQKo|$`EJX0?#zXIgz3XV$-Xa-y zrFamUaYS+p2>k$JikE_v%6eKB`~=M<`%olgTtORoKHqpNstF|IAA! zQIbCDqyF1!KAw@+HJA159?!_@n#+35@^ejd$yoDncz^z;S=_Lsr@6M@pVu`@k_>5& z3^_}9Qt;^<7f&p1NGC)Zo{WzdTiD=@rG|UNM(AAXCjOxno01#;p~C@vFA~|o(z#OVy3?^$)nkd__oRA%xV6FAIN;z%a)4`d)x-&Bl@~r zE$zM$r4QCfoag#>Wp9Rg4w%#Y)75e{_wKSgiR~!d9ifSCZP)h3(op)LygJKOYr9#1 zEWb;fNU^TAX8r{v_NM$xkim^=PH#Z3(hF8rxxX#$ff?o-#O9ueO&IL==5+rPR$65X zcFL`P+5hS%uP1ky|IJy!uG&|-J+0D!t_UhDckdUSA0al8OaCx3rU1P8ha?P;k6!t9`lan&UAY lUhcZ)xWu8eT-W?h>o4GGEw!?hsp0?t002ovPDHLkV1n=SN^t-H literal 0 HcmV?d00001 diff --git a/graphics/object_events/pics/pokemon/followers/wormadam_sand.png b/graphics/object_events/pics/pokemon/followers/wormadam_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..5086fbb24686b4ba2a404ad65ce72b23c7905ca7 GIT binary patch literal 705 zcmV;y0zUnTP)Dh^ykzq+mNdN!Kkw0tOKpcie78y*31WYul#ibeAFHw%v z#A=6tspim0B%lGnn8~8;499N~ZqL2a+2EeYHK zhl0~0tQuhn5$e8WUp>oo-kBpbOAOss$f}+QyY7c}BqYyc6ONw9bP+Pu)5JzuVoZg2 zDRN_>SaV(wZrGc#&>0~#j9*cdS|O{nAHpm2Zrw_3giUqA`LVEhh296Tuu|($R-#wJ z!s7*UgGeY;T27O2!&V92Yt9xk^+=9&g#WBFroylIPTFN2|If(%Q0hu9LVPRpRVS)LnsbMie000000000000000pMTr~00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>KlTC}-Kp4jdgh0tDECh@j`o9E)@BaG6$2H1e2{yO8GvL47Yl!0$R;jlue5;^IIb9wStDe(m8Pl8uYB4g zq&vwkJ;^y&Pz5WjK|&7g^43*mv9m{nkR`ICOwUc(x4ml&pamhxVqHvAne|VcyLXpo{vj;TQUF#I|%!|&L@go-k^=AFM^-vI5R*g4rpm$obqpBU`6lx zzC()-#2L-0^hfn~0ku$IQFIuj6Yz`RXPg-rQXXMpAWr#ppBnfRQe$Hei-DYx6G{S_ z|3oPY=&PT<%~)`h8yH%ApphFG#3?tUw4OuDE}uPT-+q$50rO-~(+XR~+t&pb2F5Ga zWNZopy5J0&G&J4vnR9Mc1(>R_S~a6OW|j@Z$P8zB&Lx=hsoZRsb}1-S}5C0ZCzT>FN0)F&R;*F}b<9F<~L05efN8F#rGn;KmQRb@Mi|BiK?Q>BL5Daf^@93lGg-G~ z4}p9Eqa~EmKyujIf~v*}3-Kj~Si#UkFBX_CS|1i>S3USrs7Wt-h_@&$acE7I$Onh) zLJsT05@;^fXXuRnOI8Few5QI&)=$sO^UP>8GeYS9^52vd`CkrLoUcH2pru-sj8s&` z3xDHn*0UIh&=fzbWFDg`rUAa3=UgBXYFMh`e-MykB#0kLmAsEh6&t(x9vie2GXWcN3n<&dpSIGr%wl|2cK~5N=N_Xedj`&(l^q3=^$A)e^Q4t^2;Bi;) zrp#&yvokmLR+@6epfqE{8jcN_9&xB6UBeHtp;1FDSTT1K4h_XGrO1#|=x@NmRiL-M z8m`aOL=RaDbo9X%H1x(JpoVbYT4vTj-kaiy1)(AR3wcdxLa1N$rr7%})k6+-vT4TyaT4Qq*M zgC_LJKqH6Wz%ANf?UvsOx%ahCUxf|-k51pFJwEJp{8$e;(1p=xD7r5mH|FytY74y?BD(#54WuMG1hEC?13(qa_i*m^lkB1jGp`3Xc+4PZED0b9B<`N57H;r*-1BdmV znPKk6>&fMj`0L5_a^?ZqtL?hQB>{54kdBB3^sXm)JRJ9qdujfa*4@uUQBqo8$)(Ij zKo?eS1dJ1hAmC;$fCi=kxOKYilG)ZtG;2ksh8O6!%<2T>D-4#m00000NkvXX Hu0mjfSYiHG literal 0 HcmV?d00001 diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 18ef68000..909fa8be1 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1715,7 +1715,6 @@ $(OBJEVENTGFXDIR)/pokemon/followers/deoxys_defense.4bpp: %.4bpp: %.png $(OBJEVENTGFXDIR)/pokemon/followers/deoxys_speed.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 - @@ -1932,6 +1931,9 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 1 + +graphics/door_anims/battle_tower_multi_corridor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 $(FLDEFFGFXDIR)/expanding_sparkle.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 diff --git a/src/event_object_movement.c b/src/event_object_movement.c index e5b6ad8b9..3e4978d32 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8731,6 +8731,9 @@ static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite * if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; + + if (gSaveBlock2Ptr->follower.inProgress && objEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId] && objEvent->invisible == TRUE) + return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) From 2873b75645afc58d7515291fe9f16e16f1ed1979 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 20:11:02 -0700 Subject: [PATCH 47/71] Fixed messed up commits and applied proper changes This SHOULD be a fixed commit, where pret is properly merged, the bug fixes relating to the follower and saves, bikes, and ground effects, and the improved dynamic palette system is present. --- INSTALL.md | 19 +- Makefile | 2 +- asm/macros/trainer_hill.inc | 8 +- data/battle_anim_scripts.s | 546 +++--- .../scripts.inc | 8 +- .../scripts.inc | 3 +- data/maps/BattleFrontier_Lounge2/scripts.inc | 26 +- .../scripts.inc | 2 +- data/maps/TrainerHill_Entrance/scripts.inc | 2 +- data/scripts/gift_altering_cave.inc | 2 +- data/text/contest_strings.inc | 141 +- data/text/pc_transfer.inc | 3 +- data/text/pokedex_rating.inc | 2 +- data/text/surf.inc | 3 +- data/text/tv.inc | 30 +- gflib/bg.h | 2 +- gflib/sprite.c | 9 +- gflib/sprite.h | 2 +- gflib/text.c | 8 +- graphics/door_anims/abandoned_ship.png | Bin 420 -> 306 bytes graphics/door_anims/abandoned_ship_room.png | Bin 419 -> 305 bytes graphics/door_anims/battle_arena.png | Bin 509 -> 394 bytes graphics/door_anims/battle_arena_lobby.png | Bin 408 -> 293 bytes graphics/door_anims/battle_dome.png | Bin 394 -> 279 bytes graphics/door_anims/battle_dome_corridor.png | Bin 462 -> 347 bytes graphics/door_anims/battle_dome_lobby.png | Bin 486 -> 374 bytes graphics/door_anims/battle_factory.png | Bin 366 -> 251 bytes graphics/door_anims/battle_frontier.png | Bin 421 -> 306 bytes .../door_anims/battle_frontier_sliding.png | Bin 390 -> 277 bytes graphics/door_anims/battle_palace_lobby.png | Bin 432 -> 319 bytes graphics/door_anims/battle_tent.png | Bin 544 -> 429 bytes graphics/door_anims/battle_tent_interior.png | Bin 504 -> 389 bytes graphics/door_anims/battle_tower.png | Bin 467 -> 352 bytes graphics/door_anims/battle_tower_elevator.png | Bin 398 -> 283 bytes .../battle_tower_multi_corridor.png | Bin 554 -> 413 bytes graphics/door_anims/battle_tower_old.png | Bin 458 -> 343 bytes graphics/door_anims/birchs_lab.png | Bin 402 -> 287 bytes graphics/door_anims/cable_club.png | Bin 368 -> 253 bytes graphics/door_anims/contest.png | Bin 452 -> 337 bytes graphics/door_anims/cycling_road.png | Bin 441 -> 328 bytes graphics/door_anims/fallarbor_light_roof.png | Bin 432 -> 317 bytes graphics/door_anims/general.png | Bin 425 -> 310 bytes graphics/door_anims/gym.png | Bin 404 -> 289 bytes graphics/door_anims/lilycove.png | Bin 426 -> 311 bytes graphics/door_anims/lilycove_dept_store.png | Bin 430 -> 315 bytes graphics/door_anims/lilycove_wooden.png | Bin 401 -> 286 bytes graphics/door_anims/mauville.png | Bin 432 -> 317 bytes graphics/door_anims/mossdeep_space_center.png | Bin 509 -> 394 bytes graphics/door_anims/pacifidlog.png | Bin 452 -> 337 bytes graphics/door_anims/petalburg_gym.png | Bin 0 -> 289 bytes graphics/door_anims/poke_center.png | Bin 419 -> 304 bytes graphics/door_anims/pokemon_league.png | Bin 445 -> 332 bytes graphics/door_anims/rustboro_gray.png | Bin 440 -> 325 bytes graphics/door_anims/rustboro_tan.png | Bin 440 -> 325 bytes graphics/door_anims/safari_zone.png | Bin 458 -> 343 bytes graphics/door_anims/sootopolis.png | Bin 435 -> 322 bytes .../door_anims/sootopolis_peaked_roof.png | Bin 435 -> 322 bytes .../trainer_hill_lobby_elevator.png | Bin 348 -> 231 bytes .../door_anims/unused_battle_frontier.png | Bin 0 -> 394 bytes .../maps_expert/floor_0/collision.bin | Bin 0 -> 32 bytes .../maps_expert/floor_0/metatiles.bin | 1 + .../maps_expert/floor_1/collision.bin | Bin 0 -> 32 bytes .../maps_expert/floor_1/metatiles.bin | 1 + .../maps_expert/floor_2/collision.bin | 1 + .../maps_expert/floor_2/metatiles.bin | 1 + .../maps_expert/floor_3/collision.bin | Bin 0 -> 32 bytes .../maps_expert/floor_3/metatiles.bin | 1 + .../maps_jp/floor_0/collision.bin | 1 + .../maps_jp/floor_0/metatiles.bin | 1 + .../maps_jp/floor_1/collision.bin | Bin 0 -> 32 bytes .../maps_jp/floor_1/metatiles.bin | 1 + .../maps_normal/floor_0/collision.bin | 1 + .../maps_normal/floor_0/metatiles.bin | 1 + .../maps_normal/floor_1/collision.bin | 1 + .../maps_normal/floor_1/metatiles.bin | 1 + .../maps_normal/floor_2/collision.bin | Bin 0 -> 32 bytes .../maps_normal/floor_2/metatiles.bin | 1 + .../maps_normal/floor_3/collision.bin | Bin 0 -> 32 bytes .../maps_normal/floor_3/metatiles.bin | 1 + .../maps_unique/floor_0/collision.bin | Bin 0 -> 32 bytes .../maps_unique/floor_0/metatiles.bin | 1 + .../maps_unique/floor_1/collision.bin | Bin 0 -> 32 bytes .../maps_unique/floor_1/metatiles.bin | 1 + .../maps_unique/floor_2/collision.bin | Bin 0 -> 32 bytes .../maps_unique/floor_2/metatiles.bin | 1 + .../maps_unique/floor_3/collision.bin | Bin 0 -> 32 bytes .../maps_unique/floor_3/metatiles.bin | 1 + .../maps_variety/floor_0/collision.bin | Bin 0 -> 32 bytes .../maps_variety/floor_0/metatiles.bin | 1 + .../maps_variety/floor_1/collision.bin | Bin 0 -> 32 bytes .../maps_variety/floor_1/metatiles.bin | 1 + .../maps_variety/floor_2/collision.bin | Bin 0 -> 32 bytes .../maps_variety/floor_2/metatiles.bin | 1 + .../maps_variety/floor_3/collision.bin | Bin 0 -> 32 bytes .../maps_variety/floor_3/metatiles.bin | 1 + include/battle_anim.h | 28 +- include/battle_controllers.h | 14 +- include/battle_gfx_sfx_util.h | 2 +- include/battle_interface.h | 4 +- include/battle_setup.h | 2 +- include/battle_util.h | 2 +- include/constants/battle.h | 2 +- include/constants/battle_anim.h | 17 + include/constants/battle_frontier.h | 10 + include/constants/battle_pike.h | 2 + include/constants/battle_pyramid.h | 7 + include/constants/battle_string_ids.h | 2 + include/constants/battle_tent.h | 6 + include/constants/flags.h | 2 +- include/constants/metatile_labels.h | 2 +- include/constants/trainer_hill.h | 27 +- include/constants/tv.h | 17 + include/constants/union_room.h | 2 + include/contest.h | 9 +- include/decompress.h | 2 +- include/digit_obj_util.h | 4 +- include/ereader_helpers.h | 2 +- include/event_scripts.h | 30 +- include/evolution_graphics.h | 2 +- include/field_camera.h | 8 +- include/field_player_avatar.h | 38 +- include/field_special_scene.h | 8 +- include/fldeff.h | 4 +- include/fldeff_misc.h | 6 +- include/gba/m4a_internal.h | 2 +- include/global.h | 17 +- include/intro_credits_graphics.h | 6 +- include/link.h | 2 +- include/list_menu.h | 8 +- include/main_menu.h | 2 +- include/mauville_old_man.h | 4 +- include/menu.h | 14 +- include/menu_helpers.h | 6 +- include/menu_specialized.h | 2 +- include/overworld.h | 6 +- include/pokeball.h | 4 +- include/pokemon.h | 14 +- include/pokemon_storage_system.h | 4 +- include/pokenav.h | 14 +- include/region_map.h | 2 +- include/scanline_effect.h | 2 +- include/trade.h | 4 +- include/trainer_card.h | 2 +- include/trainer_hill.h | 42 +- ld_script.txt | 43 +- spritesheet_rules.mk | 7 +- src/agb_flash_1m.c | 2 +- src/bard_music.c | 4 +- src/battle_ai_switch_items.c | 57 +- src/battle_anim_dragon.c | 4 +- src/battle_anim_effects_1.c | 96 +- src/battle_anim_effects_2.c | 2 +- src/battle_anim_effects_3.c | 247 ++- src/battle_anim_fire.c | 274 +-- src/battle_anim_ghost.c | 6 +- src/battle_anim_mons.c | 40 +- src/battle_anim_normal.c | 44 +- src/battle_anim_psychic.c | 4 +- src/battle_anim_smokescreen.c | 66 +- src/battle_anim_sound_tasks.c | 16 +- src/battle_anim_status_effects.c | 6 +- src/battle_anim_throw.c | 10 +- src/battle_anim_utility_funcs.c | 17 +- src/battle_bg.c | 8 +- src/battle_controller_player.c | 30 +- src/battle_controllers.c | 26 +- src/battle_dome.c | 146 +- src/battle_factory.c | 44 +- src/battle_factory_screen.c | 10 +- src/battle_gfx_sfx_util.c | 12 +- src/battle_interface.c | 94 +- src/battle_main.c | 9 +- src/battle_message.c | 6 +- src/battle_pike.c | 32 +- src/battle_pyramid.c | 90 +- src/battle_pyramid_bag.c | 6 +- src/battle_script_commands.c | 2 +- src/battle_setup.c | 23 +- src/battle_tent.c | 40 +- src/battle_tower.c | 102 +- src/battle_transition.c | 4 +- src/battle_util.c | 2 +- src/berry_blender.c | 6 +- src/berry_crush.c | 6 +- src/coins.c | 2 +- src/contest.c | 50 +- src/contest_util.c | 46 +- src/credits.c | 6 +- .../battle_pyramid_open_level_wild_mons.h | 2 +- src/data/battle_frontier/trainer_hill.h | 1389 ++++----------- src/data/field_effects/field_effect_objects.h | 2 +- src/data/pokemon/base_stats.h | 1548 ++++++++--------- src/data/trade.h | 6 +- src/data/trainer_graphics/back_pic_anims.h | 30 +- src/decompress.c | 6 +- src/decoration.c | 4 +- src/dodrio_berry_picking.c | 8 +- src/easy_chat.c | 11 +- src/ereader_helpers.c | 124 +- src/event_data.c | 6 +- src/event_object_movement.c | 31 +- src/evolution_graphics.c | 162 +- src/evolution_scene.c | 6 +- src/field_camera.c | 14 +- src/field_door.c | 83 +- src/field_effect.c | 46 +- src/field_message_box.c | 2 +- src/field_player_avatar.c | 148 +- src/field_region_map.c | 5 +- src/field_screen_effect.c | 2 +- src/field_special_scene.c | 204 ++- src/field_specials.c | 50 +- src/field_weather.c | 8 +- src/field_weather_effect.c | 79 +- src/fieldmap.c | 42 +- src/follow_me.c | 19 +- src/frontier_util.c | 103 +- src/hall_of_fame.c | 26 +- src/intro.c | 4 +- src/intro_credits_graphics.c | 3 +- src/item_menu.c | 2 +- src/item_menu_icons.c | 31 +- src/item_use.c | 44 +- src/landmark.c | 16 +- src/libisagbprn.c | 10 +- src/link.c | 12 +- src/list_menu.c | 8 +- src/m4a_1.s | 8 +- src/main.c | 6 +- src/main_menu.c | 57 +- src/map_name_popup.c | 39 +- src/match_call.c | 46 +- src/mauville_old_man.c | 4 +- src/menu.c | 8 +- src/menu_helpers.c | 47 +- src/mystery_event_script.c | 35 +- src/mystery_gift.c | 4 + src/mystery_gift_client.c | 7 +- src/mystery_gift_server.c | 3 +- src/mystery_gift_view.c | 6 +- src/overworld.c | 25 +- src/palette.c | 62 +- src/party_menu.c | 8 +- src/player_pc.c | 114 +- src/pokeball.c | 187 +- src/pokedex.c | 16 +- src/pokedex_area_region_map.c | 4 +- src/pokemon.c | 38 +- src/pokemon_jump.c | 7 +- src/pokemon_storage_system.c | 11 +- src/pokemon_summary_screen.c | 196 +-- src/pokenav.c | 13 +- src/pokenav_conditions.c | 4 +- src/pokenav_list.c | 318 ++-- src/pokenav_main_menu.c | 10 +- src/pokenav_match_call_data.c | 2 +- src/pokenav_region_map.c | 2 +- src/record_mixing.c | 2 +- src/recorded_battle.c | 2 + src/region_map.c | 602 ++++--- src/rom_header_gf.c | 49 +- src/rotating_gate.c | 70 +- src/rotating_tile_puzzle.c | 10 +- src/save.c | 6 + src/script_movement.c | 9 +- src/siirtc.c | 1 + src/slot_machine.c | 72 +- src/start_menu.c | 7 +- src/tileset_anims.c | 6 +- src/trade.c | 12 +- src/trainer_hill.c | 227 +-- src/tv.c | 117 +- src/union_room.c | 2 +- src/union_room_chat.c | 3 +- tools/gbagfx/Makefile | 2 + tools/mid2agb/agb.cpp | 3 +- tools/rsfont/Makefile | 2 + 277 files changed, 4772 insertions(+), 5020 deletions(-) create mode 100644 graphics/door_anims/petalburg_gym.png create mode 100644 graphics/door_anims/unused_battle_frontier.png create mode 100644 graphics/trainer_hill/maps_expert/floor_0/collision.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_0/metatiles.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_1/collision.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_1/metatiles.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_2/collision.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_2/metatiles.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_3/collision.bin create mode 100644 graphics/trainer_hill/maps_expert/floor_3/metatiles.bin create mode 100644 graphics/trainer_hill/maps_jp/floor_0/collision.bin create mode 100644 graphics/trainer_hill/maps_jp/floor_0/metatiles.bin create mode 100644 graphics/trainer_hill/maps_jp/floor_1/collision.bin create mode 100644 graphics/trainer_hill/maps_jp/floor_1/metatiles.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_0/collision.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_0/metatiles.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_1/collision.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_1/metatiles.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_2/collision.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_2/metatiles.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_3/collision.bin create mode 100644 graphics/trainer_hill/maps_normal/floor_3/metatiles.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_0/collision.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_0/metatiles.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_1/collision.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_1/metatiles.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_2/collision.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_2/metatiles.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_3/collision.bin create mode 100644 graphics/trainer_hill/maps_unique/floor_3/metatiles.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_0/collision.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_0/metatiles.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_1/collision.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_1/metatiles.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_2/collision.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_2/metatiles.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_3/collision.bin create mode 100644 graphics/trainer_hill/maps_variety/floor_3/metatiles.bin diff --git a/INSTALL.md b/INSTALL.md index f6434c07b..7f1d47879 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -451,13 +451,6 @@ Replace `` with the number that the `nproc` command returned. `nproc` is not available on macOS. The alternative is `sysctl -n hw.ncpu` ([relevant Stack Overflow thread](https://stackoverflow.com/questions/1715580)). -## Debug info - -To build **pokeemerald.elf** with enhanced debug info: -```bash -make DINFO=1 -``` - ## devkitARM's C compiler This project supports the `arm-none-eabi-gcc` compiler included with devkitARM. If devkitARM (a.k.a. gba-dev) has already been installed as part of the platform-specific instructions, simply run: @@ -534,7 +527,7 @@ devkitARM is now installed. devkitARM is now installed. -## Installing devkitARM on Arch Linux +### Installing devkitARM on Arch Linux 1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages. 2. Install `gba-dev`: run the following command as root. @@ -552,7 +545,7 @@ devkitARM is now installed. devkitARM is now installed. -## Other toolchains +### Other toolchains To build using a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain, which must contain the subdirectory `bin`. ```bash @@ -564,6 +557,14 @@ make TOOLCHAIN="/usr/local/arm-none-eabi" ``` To compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present. +### Building with debug info under a modern toolchain + +To build **pokeemerald.elf** with debug symbols under a modern toolchain: +```bash +make modern DINFO=1 +``` +Note that this is not necessary for a non-modern build since those are built with debug symbols by default. + # Useful additional tools * [porymap](https://github.com/huderlem/porymap) for viewing and editing maps diff --git a/Makefile b/Makefile index 6283a87fe..c36cc8e93 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ LIBPATH := -L ../../tools/agbcc/lib LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall else CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast ROM := $(MODERN_ROM_NAME) OBJ_DIR := $(MODERN_OBJ_DIR_NAME) LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))" diff --git a/asm/macros/trainer_hill.inc b/asm/macros/trainer_hill.inc index 65c8c6bef..988e2867a 100644 --- a/asm/macros/trainer_hill.inc +++ b/asm/macros/trainer_hill.inc @@ -100,9 +100,9 @@ special CallTrainerHillFunction .endm - @ Set the challenge mode to HILL_TAG_* (Normal, Variety, Unique, or Expert) - .macro trainerhill_settag tag:req - setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_TAG - copyvar VAR_0x8005, \tag + @ Set the challenge mode to HILL_MODE_* (Normal, Variety, Unique, or Expert) + .macro trainerhill_setmode mode:req + setvar VAR_0x8004, TRAINER_HILL_FUNC_SET_MODE + copyvar VAR_0x8005, \mode special CallTrainerHillFunction .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 1cfc5230c..eff53de84 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -763,7 +763,7 @@ Move_TAKE_DOWN: setalpha 12, 8 createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 delay 35 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 @@ -783,14 +783,14 @@ Move_TAKE_DOWN: Move_DOUBLE_EDGE: loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish delay 10 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish @@ -802,7 +802,7 @@ Move_DOUBLE_EDGE: createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 @@ -860,7 +860,7 @@ Move_FIRE_BLAST: call FireBlastRing call FireBlastRing delay 24 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB_BLACK waitforvisualfinish delay 19 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 20, 1 @@ -882,7 +882,7 @@ Move_FIRE_BLAST: delay 3 call FireBlastCross waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 2, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 8, 0, RGB_BLACK waitforvisualfinish end FireBlastRing: @@ -941,17 +941,17 @@ Move_MEGA_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -984,18 +984,18 @@ Move_MEGA_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1054,21 +1054,21 @@ SonicBoomHit: Move_THUNDER_SHOCK: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -44, 0 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1076,7 +1076,7 @@ Move_THUNDERBOLT: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 24, -52, 0 @@ -1088,9 +1088,9 @@ Move_THUNDERBOLT: createvisualtask AnimTask_ElectricBolt, 5, 0, -60, 1 playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3 @@ -1104,20 +1104,20 @@ Move_THUNDERBOLT: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK waitforvisualfinish delay 20 waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1125,7 +1125,7 @@ Move_THUNDER_WAVE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -48, 0 @@ -1138,7 +1138,7 @@ Move_THUNDER_WAVE: delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end @@ -1247,10 +1247,10 @@ Move_REVERSAL: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 2, 0, 10, RGB_WHITE delay 10 playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 @@ -1264,7 +1264,7 @@ Move_REVERSAL: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 8 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 @@ -1348,7 +1348,7 @@ Move_PSYCH_UP: delay 4 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 9, 2, 2, 10, 0, RGB_YELLOW + createvisualtask AnimTask_BlendBattleAnimPal, 9, F_PAL_ATTACKER, 2, 10, 0, RGB_YELLOW delay 30 clearmonbg ANIM_ATK_PARTNER blendoff @@ -1446,18 +1446,18 @@ FuryCutterRight: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto FuryCutterContinue FuryCutterMedium: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrong: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 FuryCutterStrongest: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 @@ -1466,7 +1466,7 @@ Move_SELF_DESTRUCT: call SelfDestructExplode call SelfDestructExplode waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 9, 0, RGB_RED end SelfDestructExplode: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER @@ -1623,7 +1623,7 @@ RisingWaterHitEffect: Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 @@ -1632,9 +1632,9 @@ Move_EXPLOSION: call Explosion1 call Explosion1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 1, 16, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB_WHITE delay 50 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 16, 0, RGB_WHITE end Explosion1: playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER @@ -1678,16 +1678,16 @@ Move_PROTECT: Move_DETECT: loadspritegfx ANIM_TAG_SPARKLE_4 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 9, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE delay 18 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 9, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 9, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_WHITE waitforvisualfinish end @@ -1709,7 +1709,7 @@ Frustration_Continue: Frustration_Strongest: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1740,12 +1740,12 @@ Frustration_Strongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue Frustration_Strong: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 0, 9, 31 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1766,7 +1766,7 @@ Frustration_Strong: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 3, 9, 0, 31 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue Frustration_Medium: playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER @@ -1808,7 +1808,7 @@ Move_SAFEGUARD: createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -1864,13 +1864,13 @@ Move_GUILLOTINE: playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_BLACK delay 9 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 delay 46 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 8, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -1900,7 +1900,7 @@ Move_PAY_DAY: Move_OUTRAGE: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 - createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, RGB(14, 13, 0) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 2, 5, 3, 8, RGB(14, 13, 0) createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 @@ -1946,25 +1946,25 @@ Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 @@ -1976,14 +1976,14 @@ Move_SPARK: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, RGB(31, 31, 22) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, -31, 2, 0, 6, RGB(31, 31, 22) call ElectricityEffect waitforvisualfinish end @@ -2014,7 +2014,7 @@ Move_ATTRACT: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, RGB(31, 25, 27) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) end Move_GROWTH: @@ -2024,7 +2024,7 @@ Move_GROWTH: waitforvisualfinish end GrowthEffect: - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return @@ -2084,12 +2084,12 @@ Move_MEAN_LOOK: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET, 15, 4 waitplaysewithpan SE_M_LEER, SOUND_PAN_TARGET, 85 createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2 delay 120 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 30 clearmonbg ANIM_DEF_PARTNER waitforvisualfinish @@ -2229,7 +2229,7 @@ Move_ICY_WIND: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 0, 4, RGB_BLACK fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 @@ -2246,7 +2246,7 @@ Move_ICY_WIND: clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadeout - createvisualtask AnimTask_BlendBattleAnimPal, 10, 11, 4, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 4, 0, RGB_BLACK waitbgfadein end IcyWindSwirlingSnowballs: @@ -2601,9 +2601,9 @@ Move_EARTHQUAKE: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end Move_FISSURE: @@ -2614,11 +2614,11 @@ Move_FISSURE: delay 8 call FissureDirtPlumeFar delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeClose delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeFar delay 50 @@ -2846,7 +2846,7 @@ SkullBashAttack: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish playse SE_BANG - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 @@ -2892,7 +2892,7 @@ Move_GLARE: createvisualtask AnimTask_GlareEyeDots, 5, 0 playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 @@ -2901,7 +2901,7 @@ Move_GLARE: delay 2 createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 0, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK end Move_BARRAGE: @@ -2926,17 +2926,17 @@ SkyAttackSetUp: jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner SkyAttackSetUpAgainstOpponent: - createvisualtask AnimTask_BlendBattleAnimPal, 10, 27, 1, 0, 12, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 loopsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER, 4, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 25, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -2945,13 +2945,13 @@ SkyAttackSetUpAgainstPartner: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 1, 8, 0, RGB_BLACK waitforvisualfinish @@ -2963,7 +2963,7 @@ SkyAttackUnleash: loadspritegfx ANIM_TAG_BIRD call SetSkyBg monbg ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE delay 4 createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 waitforvisualfinish @@ -2975,7 +2975,7 @@ SkyAttackUnleash: delay 20 createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATTACKER call UnsetSkyBg @@ -3025,7 +3025,7 @@ Move_SUPER_FANG: createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2 playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 7, 12, 1 waitforvisualfinish blendoff @@ -3113,7 +3113,7 @@ Move_SPITE: playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish @@ -3198,7 +3198,7 @@ Move_ENDURE: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -3332,9 +3332,9 @@ MagnitudeIntense: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd Move_RAPID_SPIN: @@ -3361,7 +3361,7 @@ Move_MOONLIGHT: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3484,12 +3484,12 @@ Move_HEAT_WAVE: Move_HAIL: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_Hail, 5 loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 3, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end Move_TORMENT: @@ -3567,7 +3567,7 @@ Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -3591,7 +3591,7 @@ Move_CHARGE: createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff end @@ -3721,13 +3721,13 @@ BrickBreakNormal: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3747,7 +3747,7 @@ BrickBreakShatteredWall: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0 @@ -3759,7 +3759,7 @@ BrickBreakShatteredWall: createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12 playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET end @@ -3798,7 +3798,7 @@ Move_ENDEAVOR: Move_ERUPTION: loadspritegfx ANIM_TAG_WARM_ROCK - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 @@ -3818,7 +3818,7 @@ Move_ERUPTION: createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60 loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED end Move_SKILL_SWAP: @@ -3873,13 +3873,13 @@ Move_CAMOUFLAGE: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER setalpha 16, 0 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 delay 16 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 waitforvisualfinish createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 waitforvisualfinish @@ -3891,13 +3891,13 @@ Move_TAIL_GLOW: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, ANIM_ATTACKER delay 18 loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER, 16, 6 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 @@ -3955,15 +3955,15 @@ Move_MIST_BALL: waitforvisualfinish playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 10, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_LoadMistTiles, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 3, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE delay 8 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 delay 70 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE end Move_FEATHER_DANCE: @@ -4133,7 +4133,7 @@ Move_AROMATHERAPY: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 0, 7, RGB(13, 31, 12) delay 1 monbg ANIM_ATTACKER delay 1 @@ -4151,7 +4151,7 @@ Move_AROMATHERAPY: waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 7, 0, RGB(13, 31, 12) delay 1 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 1 @@ -4162,7 +4162,7 @@ Move_AROMATHERAPY: createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end @@ -4223,13 +4223,13 @@ Move_ODOR_SLEUTH: waitforvisualfinish clearmonbg ANIM_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end Move_GRASS_WHISTLE: loadspritegfx ANIM_TAG_MUSIC_NOTES - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish @@ -4260,19 +4260,19 @@ Move_GRASS_WHISTLE: delay 4 waitforvisualfinish createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, RGB(18, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB(18, 31, 12) waitforvisualfinish end Move_TICKLE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK waitforvisualfinish delay 20 createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, ANIM_ATTACKER @@ -4351,7 +4351,7 @@ Move_AERIAL_ACE: playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER delay 5 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_TARGET @@ -4361,7 +4361,7 @@ Move_AERIAL_ACE: Move_IRON_DEFENSE: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end @@ -4414,7 +4414,7 @@ Move_VOLT_TACKLE: loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 8, RGB_BLACK waitforvisualfinish createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4451,7 +4451,7 @@ Move_VOLT_TACKLE: delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 8, 0, RGB_BLACK waitforvisualfinish end @@ -4547,7 +4547,7 @@ Move_SHOCK_WAVE: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER @@ -4561,10 +4561,10 @@ Move_SHOCK_WAVE: playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 18, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 5, 1, 3, 16, 0, RGB_WHITE - createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 16, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 5, 4, 0, 0, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -4629,7 +4629,7 @@ Move_MIND_READER: createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5 delay 40 playsewithpan SE_M_LEER, SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 1, 2, 0, 10, RGB_BLACK call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -4665,8 +4665,8 @@ Move_ICE_PUNCH: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB(12, 26, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(12, 26, 31) delay 20 playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 0 @@ -4688,9 +4688,9 @@ Move_ICE_PUNCH: delay 15 call IceCrystalEffectShort delay 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 9, 0, RGB(12, 26, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -4712,7 +4712,7 @@ Move_CONFUSION: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1 @@ -4729,7 +4729,7 @@ Move_PSYCHIC: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB(31, 23, 0) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) waitforvisualfinish loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 @@ -4754,7 +4754,7 @@ FutureSight: call SetPsychicBackground setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -4767,7 +4767,7 @@ Move_THUNDER: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1 waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET @@ -4811,7 +4811,7 @@ Move_THUNDER: delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout @@ -4825,7 +4825,7 @@ Move_THUNDER_PUNCH: loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK waitforvisualfinish playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 @@ -4845,7 +4845,7 @@ Move_THUNDER_PUNCH: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish clearmonbg ANIM_TARGET @@ -4931,7 +4931,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 21, 1 @@ -4951,7 +4951,7 @@ Move_DRAGON_BREATH: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -5031,17 +5031,17 @@ Move_LIGHT_SCREEN: end SpecialScreenSparkle: - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, TRUE delay 5 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, TRUE delay 7 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE return Move_MIRROR_COAT: @@ -5064,11 +5064,11 @@ Move_REFLECT: waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_BLUE_LIGHT_WALL delay 20 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, TRUE waitforvisualfinish delay 1 blendoff @@ -5135,7 +5135,7 @@ Move_SMOG: call SmogCloud delay 120 loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(26, 0, 26) delay 10 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish @@ -5269,14 +5269,14 @@ Move_DRAGON_RAGE: Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -5347,7 +5347,7 @@ Move_ICE_BEAM: splitbgprio ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 4, 4, 0, 10 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 @@ -5356,7 +5356,7 @@ Move_ICE_BEAM: call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -5372,9 +5372,9 @@ Move_ICE_BEAM: waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, RGB(0, 20, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -5437,7 +5437,7 @@ SolarBeamEnd: SolarBeamSetUp: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 1, 4, 0, 11, RGB(31, 31, 11) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call SolarBeamAbsorbEffect waitforvisualfinish @@ -5482,7 +5482,7 @@ SolarBeamUnleash: delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 10, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 @@ -5497,7 +5497,7 @@ SolarBeamUnleash: call SolarBeamUnleash1 call SolarBeamUnleash1 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 10, 0, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 10, 0, RGB(25, 31, 0) call UnsetSolarBeamBg goto SolarBeamEnd SolarBeamUnleash1: @@ -5572,7 +5572,7 @@ BlizzardAgainstPlayer: Move_POWDER_SNOW: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK waitforvisualfinish panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call PowderSnowSnowballs @@ -5584,7 +5584,7 @@ Move_POWDER_SNOW: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 20 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_BLACK end PowderSnowSnowballs: createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1 @@ -5665,7 +5665,7 @@ Move_SIGNAL_BEAM: call SignalBeamOrbs call SignalBeamOrbs createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 25, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs @@ -5698,7 +5698,7 @@ Move_ABSORB: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 @@ -5711,7 +5711,7 @@ Move_ABSORB: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5751,7 +5751,7 @@ Move_MEGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 @@ -5764,7 +5764,7 @@ Move_MEGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5812,7 +5812,7 @@ Move_GIGA_DRAIN: monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 @@ -5825,7 +5825,7 @@ Move_GIGA_DRAIN: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5891,14 +5891,14 @@ Move_LEECH_LIFE: delay 2 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish call AbsorbEffect waitforvisualfinish delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -5906,7 +5906,7 @@ Move_LEECH_LIFE: Move_SYNTHESIS: loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, RGB(27, 31, 18) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish @@ -5948,7 +5948,7 @@ Move_SLUDGE: createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) call PoisonBubblesEffect waitforvisualfinish end @@ -5966,7 +5966,7 @@ Move_SLUDGE_BOMB: call SludgeBombProjectile call SludgeBombProjectile createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 @@ -6010,7 +6010,7 @@ Move_ACID: delay 15 createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 @@ -6060,7 +6060,7 @@ Move_BONE_CLUB: delay 12 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -6124,7 +6124,7 @@ MegahornContinue: createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 waitforvisualfinish createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 delay 3 @@ -6266,7 +6266,7 @@ Move_CRABHAMMER: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 0 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 @@ -6362,14 +6362,14 @@ Move_WHIRLPOOL: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1 call WhirlpoolEffect call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -6469,7 +6469,7 @@ Move_CROSS_CHOP: createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 40 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 createsprite gCrossImpactSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 20 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 waitforvisualfinish @@ -6721,7 +6721,7 @@ Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE waitforvisualfinish panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay @@ -6729,7 +6729,7 @@ Move_SUNNY_DAY: call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6929,7 +6929,7 @@ Move_MIST: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -6945,9 +6945,9 @@ Move_HAZE: playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x780, 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK end Move_FIRE_PUNCH: @@ -6956,7 +6956,7 @@ Move_FIRE_PUNCH: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 9, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 0 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 64 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 128 @@ -6970,7 +6970,7 @@ Move_FIRE_PUNCH: delay 4 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 0, 9, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7099,7 +7099,7 @@ Move_POISON_GAS: createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 28, 6 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 6, 2, 0, 12, RGB(26, 0, 26) waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -7133,7 +7133,7 @@ Move_PSYBEAM: call PsybeamRings call PsybeamRings createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, ANIM_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) call PsybeamRings call PsybeamRings call PsybeamRings @@ -7158,7 +7158,7 @@ Move_HYPNOSIS: call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) waitforvisualfinish delay 1 call UnsetPsychicBackground @@ -7178,7 +7178,7 @@ Move_PSYWAVE: createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, RGB(31, 18, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31) call PsywaveRings call PsywaveRings call PsywaveRings @@ -7314,7 +7314,7 @@ Move_NIGHT_SHADE: createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7376,7 +7376,7 @@ Move_FOCUS_ENERGY: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -7389,7 +7389,7 @@ Move_BIDE: end BideSetUp: loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish end @@ -7399,7 +7399,7 @@ BideUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 @@ -7418,7 +7418,7 @@ BideUnleash: delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 2, 11, 0, RGB_RED + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -7429,7 +7429,7 @@ Move_STRING_SHOT: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call StringShotThread @@ -7461,7 +7461,7 @@ Move_STRING_SHOT: clearmonbg ANIM_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end StringShotThread: @@ -7474,7 +7474,7 @@ Move_SPIDER_WEB: loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish splitbgprio ANIM_TARGET loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 @@ -7498,7 +7498,7 @@ Move_SPIDER_WEB: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end SpiderWebThread: @@ -7566,7 +7566,7 @@ Move_RECOVER: monbg ANIM_ATK_PARTNER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, RGB(31, 31, 11) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7608,7 +7608,7 @@ Move_MIMIC: setarg 7, 0xFFFF waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish clearmonbg_static ANIM_DEF_PARTNER blendoff @@ -7655,7 +7655,7 @@ CurseGhost: createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -7673,7 +7673,7 @@ CurseStats: CurseStats1: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5 - createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED return Move_SOFT_BOILED: @@ -7688,7 +7688,7 @@ Move_SOFT_BOILED: delay 120 delay 7 playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 @@ -7703,7 +7703,7 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING - createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 0, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 0, 0, 10, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_LoadMusicNotesPals, 5 createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 @@ -7741,12 +7741,12 @@ Move_HEAL_BELL: loadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_SHINY, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 10, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 10, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 10, 0, RGB_WHITE createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end HealBellRing: createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 8, 0, RGB(12, 24, 30) - createvisualtask AnimTask_BlendBattleAnimPal, 10, 10, 3, 2, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 2, 10, RGB_WHITE createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return @@ -7759,12 +7759,12 @@ Move_FAKE_OUT: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE end Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 @@ -7776,7 +7776,7 @@ Move_SCARY_FACE: waitforvisualfinish createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK waitforvisualfinish end @@ -7920,7 +7920,7 @@ PresentHeal: Move_BATON_PASS: loadspritegfx ANIM_TAG_POKEBALL playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, RGB(31, 22, 30) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 2, 0, 11, RGB(31, 22, 30) createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end @@ -7946,13 +7946,13 @@ Move_PERISH_SONG: delay 20 panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 delay 100 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 @@ -8027,7 +8027,7 @@ Move_TRI_ATTACK: delay 20 createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 6, 0, 7 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 loadspritegfx ANIM_TAG_FIRE createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 @@ -8063,7 +8063,7 @@ Move_TRI_ATTACK: waitforvisualfinish loadspritegfx ANIM_TAG_ICE_CRYSTALS call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish end @@ -8149,7 +8149,7 @@ Move_TRICK: Move_WISH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40 @@ -8158,19 +8158,19 @@ Move_WISH: loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3 call GrantingStarsEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK waitforvisualfinish end Move_STOCKPILE: loadspritegfx ANIM_TAG_GRAY_ORB playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE createvisualtask AnimTask_StockpileDeformMon, 5 call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE end StockpileAbsorb: createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 @@ -8288,7 +8288,7 @@ Move_MORNING_SUN: loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -8305,7 +8305,7 @@ Move_MORNING_SUN: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect @@ -8324,7 +8324,7 @@ Move_SWEET_SCENT: call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan SOUND_PAN_TARGET - createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, RGB(31, 21, 21) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, RGB(31, 21, 21) call SweetScentEffect waitforvisualfinish end @@ -8355,7 +8355,7 @@ SweetScentEffect: Move_HYPER_BEAM: loadspritegfx ANIM_TAG_ORBS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK waitforvisualfinish delay 10 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER @@ -8371,7 +8371,7 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 11, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(25, 25, 25) call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -8393,9 +8393,9 @@ Move_HYPER_BEAM: call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 11, 0, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 16, 0, RGB_BLACK end HyperBeamOrbs: createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 @@ -8450,17 +8450,17 @@ CreateFlatterConfetti: Move_ROLE_PLAY: monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 16, RGB_WHITE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_DETECT, SOUND_PAN_ATTACKER, 30 createvisualtask AnimTask_RolePlaySilhouette, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE delay 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK end Move_REFRESH: @@ -8473,7 +8473,7 @@ Move_REFRESH: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, RGB(12, 24, 30) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end @@ -8485,13 +8485,13 @@ Move_BLAZE_KICK: setalpha 12, 8 playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 30 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 30 playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 14, 1 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 call FireSpreadEffect waitforvisualfinish clearmonbg ANIM_TARGET @@ -8510,7 +8510,7 @@ Move_HYPER_VOICE: end HyperVoiceEffect: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, RGB_YELLOW + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 8, 0, RGB_YELLOW createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 @@ -8521,14 +8521,14 @@ HyperVoiceEffect: Move_SAND_TOMB: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish end @@ -8627,7 +8627,7 @@ Move_DRAGON_CLAW: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 0, 8, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB(31, 19, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 15, 1 call DragonClawFireSpiral call DragonClawFireSpiral @@ -8664,7 +8664,7 @@ Move_DRAGON_CLAW: createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 4, 8, 0, RGB(31, 19, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 8, 0, RGB(31, 19, 0) waitforvisualfinish end DragonClawFireSpiral: @@ -8747,7 +8747,7 @@ Move_REVENGE: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 4, 2, 8, RGB_RED waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE @@ -8777,7 +8777,7 @@ Move_POISON_FANG: delay 10 createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, RGB(26, 0, 26) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 4, 0, 12, RGB(26, 0, 26) call PoisonBubblesEffect waitforvisualfinish end @@ -8793,7 +8793,7 @@ Move_FRENZY_PLANT: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 0, 5, RGB_BLACK waitforvisualfinish createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER @@ -8841,7 +8841,7 @@ Move_FRENZY_PLANT: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 5, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -8983,7 +8983,7 @@ ReturnStrong: createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto ReturnContinue ReturnStrongest: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER @@ -9040,7 +9040,7 @@ ReturnStrongest: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 0 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 6, 0, RGB_BLACK goto ReturnContinue ReturnStrongestHit: createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, ANIM_ATTACKER @@ -9170,7 +9170,7 @@ Move_SILVER_WIND: createvisualtask AnimTask_StartSlidingBg, 5, 1536, 0, 0, -1 SilverWindContinue: delay 0 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 1, 0, 4, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 4, 4, RGB_BLACK waitbgfadein createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 @@ -9284,7 +9284,7 @@ Move_OVERHEAT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 18 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0) waitforvisualfinish createvisualtask AnimTask_AllocBackupPalBuffer, 5 waitforvisualfinish @@ -9295,7 +9295,7 @@ Move_OVERHEAT: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER @@ -9341,12 +9341,12 @@ Move_OVERHEAT: playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, -1, 0, 13, RGB(18, 18, 18) createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1 waitforvisualfinish createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, RGB(28, 0, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9354,7 +9354,7 @@ Move_OVERHEAT: delay 15 createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, RGB(18, 18, 18) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18) waitforvisualfinish createvisualtask AnimTask_FreeBackupPalBuffer, 5 waitforvisualfinish @@ -9498,7 +9498,7 @@ Move_WATER_PULSE: monbg ANIM_TARGET splitbgprio ANIM_TARGET playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 7, RGB(0, 25, 28) delay 10 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1 @@ -9518,7 +9518,7 @@ Move_WATER_PULSE: delay 13 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, RGB(0, 25, 28) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB(0, 25, 28) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end @@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST: createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 6 - createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 2, 8, 0, 10, RGB_BLACK delay 0 splitbgprio ANIM_ATTACKER setalpha 8, 8 @@ -9558,7 +9558,7 @@ Move_KNOCK_OFF: playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 @@ -9576,7 +9576,7 @@ Move_DOOM_DESIRE: delay 1 monbg ANIM_ATK_PARTNER createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK waitforvisualfinish setalpha 8, 8 playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -9584,7 +9584,7 @@ Move_DOOM_DESIRE: waitforvisualfinish delay 20 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -9836,7 +9836,7 @@ Move_WEATHER_BALL: waitforvisualfinish delay 15 playsewithpan SE_M_DETECT, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish createvisualtask AnimTask_GetWeather, 2 delay 1 @@ -10218,7 +10218,7 @@ UnsetSolarBeamBg: Status_Poison: loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, RGB(30, 0, 31) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 12, RGB(30, 0, 31) end Status_Confusion: @@ -10320,13 +10320,13 @@ General_StatsChange: General_SubstituteFade: monbg ANIM_ATTACKER createvisualtask AnimTask_SubstituteFadeToInvisible, 5 - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE waitforvisualfinish delay 1 clearmonbg ANIM_ATTACKER delay 2 blendoff - createvisualtask AnimTask_BlendBattleAnimPal, 10, 2, 0, 0, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 0, RGB_WHITE createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end @@ -10389,13 +10389,13 @@ Status_Whirlpool: splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(0, 13, 23) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish stopsound clearmonbg ANIM_DEF_PARTNER @@ -10420,13 +10420,13 @@ Status_Clamp: Status_SandTomb: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, RGB(19, 17, 0) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish stopsound end @@ -10448,7 +10448,7 @@ General_HeldItemEffect: call GrantingStarsEffect waitforvisualfinish playsewithpan SE_SHINY, SOUND_PAN_ATTACKER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, RGB(17, 31, 25) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end @@ -10492,11 +10492,11 @@ General_SmokeballEscape: end General_FocusBand: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 @@ -10505,13 +10505,13 @@ General_FocusBand: General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 0, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end @@ -10595,7 +10595,7 @@ General_FutureSightHit: General_DoomDesireHit: createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 createvisualtask AnimTask_DoomDesireLightBeam, 5 @@ -10622,7 +10622,7 @@ General_DoomDesireHit: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE waitforvisualfinish end @@ -10631,7 +10631,7 @@ General_FocusPunchSetUp: playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 @@ -10644,7 +10644,7 @@ General_IngrainHeal: loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish delay 3 call AbsorbEffect @@ -10652,7 +10652,7 @@ General_IngrainHeal: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, RGB(13, 31, 12) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -10660,7 +10660,7 @@ General_IngrainHeal: General_WishHeal: loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect @@ -10669,7 +10669,7 @@ General_WishHeal: loadspritegfx ANIM_TAG_BLUE_STAR call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, RGB_BLACK + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK end SnatchMoveTrySwapFromSubstitute: diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 406ab46ae..def903b1d 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -5,6 +5,10 @@ .set LOCALID_PLAYER, 13 .set LOCALID_OPPONENT, 15 +.set NO_DRAW, 0 +.set DRAW_TRAINER, 1 +.set DRAW_TUCKER, 2 + BattleFrontier_BattleDomeBattleRoom_MapScripts:: map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_OnTransition map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_OnFrame @@ -12,10 +16,6 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_OnResume .byte 0 - .set NO_DRAW, 0 - .set DRAW_TRAINER, 1 - .set DRAW_TUCKER, 2 - BattleFrontier_BattleDomeBattleRoom_OnTransition: dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index 320e12d99..3e729e212 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -364,7 +364,8 @@ BattleFrontier_BattlePikeLobby_Text_AwardYouTheseBattlePoints2: @ Unused BattleFrontier_BattlePikeLobby_Text_ReachedBattlePointLimit: .string "You appear to have reached the limit\n" - .string "for Battle Points…\pPlease exchange some Battle Points\n" + .string "for Battle Points…\p" + .string "Please exchange some Battle Points\n" .string "for prizes, then return…$" BattleFrontier_BattlePikeLobby_Text_FailedToSaveBeforeQuitting: diff --git a/data/maps/BattleFrontier_Lounge2/scripts.inc b/data/maps/BattleFrontier_Lounge2/scripts.inc index 8efc17293..12eda4a5e 100644 --- a/data/maps/BattleFrontier_Lounge2/scripts.inc +++ b/data/maps/BattleFrontier_Lounge2/scripts.inc @@ -22,18 +22,20 @@ BattleFrontier_Lounge2_EventScript_AlreadyMetManiac:: end BattleFrontier_Lounge2_EventScript_GiveAdvice:: - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 0, BattleFrontier_Lounge2_EventScript_BufferSingle - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 1, BattleFrontier_Lounge2_EventScript_BufferDouble - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 2, BattleFrontier_Lounge2_EventScript_BufferMulti - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BufferMultiLink - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_BufferBattleDome - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 5, BattleFrontier_Lounge2_EventScript_BufferBattleFactory - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 6, BattleFrontier_Lounge2_EventScript_BufferBattlePalace - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 7, BattleFrontier_Lounge2_EventScript_BufferBattleArena - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 8, BattleFrontier_Lounge2_EventScript_BufferBattlePike - call_if_eq VAR_FRONTIER_MANIAC_FACILITY, 9, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid - call_if_le VAR_FRONTIER_MANIAC_FACILITY, 3, BattleFrontier_Lounge2_EventScript_BattleTowerNews - call_if_ge VAR_FRONTIER_MANIAC_FACILITY, 4, BattleFrontier_Lounge2_EventScript_FacilityNews + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_SINGLES, BattleFrontier_Lounge2_EventScript_BufferSingle + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_DOUBLES, BattleFrontier_Lounge2_EventScript_BufferDouble + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_MULTIS, BattleFrontier_Lounge2_EventScript_BufferMulti + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BufferMultiLink + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_BufferBattleDome + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_FACTORY, BattleFrontier_Lounge2_EventScript_BufferBattleFactory + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PALACE, BattleFrontier_Lounge2_EventScript_BufferBattlePalace + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_ARENA, BattleFrontier_Lounge2_EventScript_BufferBattleArena + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PIKE, BattleFrontier_Lounge2_EventScript_BufferBattlePike + call_if_eq VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_PYRAMID, BattleFrontier_Lounge2_EventScript_BufferBattlePyramid +@ <= FRONTIER_MANIAC_TOWER_LINK is any Battle Tower mode + call_if_le VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_TOWER_LINK, BattleFrontier_Lounge2_EventScript_BattleTowerNews +@ >= FRONTIER_MANIAC_DOME is any facility other than Battle Tower + call_if_ge VAR_FRONTIER_MANIAC_FACILITY, FRONTIER_MANIAC_DOME, BattleFrontier_Lounge2_EventScript_FacilityNews special ShowFrontierManiacMessage waitmessage waitbuttonpress diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index e86635090..efa55aabb 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -141,7 +141,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_AgreeToSeeRival:: clearflag FLAG_HIDE_ROUTE_101_BOY setvar VAR_BIRCH_LAB_STATE, 3 addobject 7 - hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB + hideobjectat 7, MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB setfollower 7, 0x7E updatefollowerpokemongraphic releaseall diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index 8989883e4..2dd001a3b 100644 --- a/data/maps/TrainerHill_Entrance/scripts.inc +++ b/data/maps/TrainerHill_Entrance/scripts.inc @@ -157,7 +157,7 @@ TrainerHill_Entrance_EventScript_ChooseChallenge:: switch VAR_RESULT case 4, TrainerHill_Entrance_EventScript_CancelEntry case MULTI_B_PRESSED, TrainerHill_Entrance_EventScript_CancelEntry - trainerhill_settag VAR_RESULT + trainerhill_setmode VAR_RESULT setvar VAR_TRAINER_HILL_IS_ACTIVE, 1 setvar VAR_TEMP_5, 0 special HealPlayerParty diff --git a/data/scripts/gift_altering_cave.inc b/data/scripts/gift_altering_cave.inc index 65ff87068..0ea69aac0 100644 --- a/data/scripts/gift_altering_cave.inc +++ b/data/scripts/gift_altering_cave.inc @@ -12,7 +12,7 @@ MysteryGiftScript_AlteringCave_: release end -sText_MysteryGiftAlteringCave:: +sText_MysteryGiftAlteringCave: .string "Thank you for using the MYSTERY\n" .string "GIFT System.\p" .string "There appears to be a rumor about\n" diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index e57e76a52..948c19922 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -4,145 +4,192 @@ gText_HighlyAppealingMove:: .string "A highly appealing move.$" gText_UserMoreEasilyStartled:: - .string "After this move, the user is\nmore easily startled.$" + .string "After this move, the user is\n" + .string "more easily startled.$" gText_GreatAppealButNoMoreToEnd:: - .string "Makes a great appeal, but\nallows no more to the end.$" + .string "Makes a great appeal, but\n" + .string "allows no more to the end.$" gText_UsedRepeatedlyWithoutBoringJudge:: - .string "Can be repeatedly used\nwithout boring the JUDGE.$" + .string "Can be repeatedly used\n" + .string "without boring the JUDGE.$" gText_AvoidStartledByOthersOnce:: - .string "Can avoid being startled\nby others once.$" + .string "Can avoid being startled\n" + .string "by others once.$" gText_AvoidStartledByOthers:: - .string "Can avoid being startled\nby others.$" + .string "Can avoid being startled\n" + .string "by others.$" gText_AvoidStartledByOthersLittle:: - .string "Can avoid being startled\nby others a little.$" + .string "Can avoid being startled\n" + .string "by others a little.$" gText_UserLessLikelyStartled:: - .string "After this move, the user is\nless likely to be startled.$" + .string "After this move, the user is\n" + .string "less likely to be startled.$" gText_SlightlyStartleFrontMon:: - .string "Slightly startles the\nPOKéMON in front.$" + .string "Slightly startles the\n" + .string "POKéMON in front.$" gText_SlightlyStartleAppealed:: - .string "Slightly startles those\nthat have made appeals.$" + .string "Slightly startles those\n" + .string "that have made appeals.$" gText_StartleAppealedBeforeUser:: - .string "Startles the POKéMON that\nappealed before the user.$" + .string "Startles the POKéMON that\n" + .string "appealed before the user.$" gText_StartleAllAppealed:: - .string "Startles all POKéMON that\nhave done their appeals.$" + .string "Startles all POKéMON that\n" + .string "have done their appeals.$" gText_BadlyStartleFrontMon:: - .string "Badly startles the\nPOKéMON in front.$" + .string "Badly startles the\n" + .string "POKéMON in front.$" gText_BadlyStartleAppealed:: - .string "Badly startles those that\nhave made appeals.$" + .string "Badly startles those that\n" + .string "have made appeals.$" gText_StartleAppealedBeforeUser2:: - .string "Startles the POKéMON that\nappealed before the user.$" + .string "Startles the POKéMON that\n" + .string "appealed before the user.$" gText_StartleAllAppealed2:: - .string "Startles all POKéMON that\nhave done their appeals.$" + .string "Startles all POKéMON that\n" + .string "have done their appeals.$" gText_ShiftJudgesAttentionFromOthers:: - .string "Shifts the JUDGE's\nattention from others.$" + .string "Shifts the JUDGE's\n" + .string "attention from others.$" gText_StartleMonHasJudgesAttention:: - .string "Startles the POKéMON that\nhas the JUDGE's attention.$" + .string "Startles the POKéMON that\n" + .string "has the JUDGE's attention.$" gText_JamOthersMissesTurn:: - .string "Jams the others, and misses\none turn of appeals.$" + .string "Jams the others, and misses\n" + .string "one turn of appeals.$" gText_StartleMonsMadeSameTypeAppeal:: - .string "Startles POKéMON that\nmade a same-type appeal.$" + .string "Startles POKéMON that\n" + .string "made a same-type appeal.$" gText_BadlyStartleCoolAppeals:: - .string "Badly startles POKéMON\nthat made COOL appeals.$" + .string "Badly startles POKéMON\n" + .string "that made COOL appeals.$" gText_BadlyStartleBeautyAppeals:: - .string "Badly startles POKéMON\nthat made BEAUTY appeals.$" + .string "Badly startles POKéMON\n" + .string "that made BEAUTY appeals.$" gText_BadlyStartleCuteAppeals:: - .string "Badly startles POKéMON\nthat made CUTE appeals.$" + .string "Badly startles POKéMON\n" + .string "that made CUTE appeals.$" gText_BadlyStartleSmartAppeals:: - .string "Badly startles POKéMON\nthat made SMART appeals.$" + .string "Badly startles POKéMON\n" + .string "that made SMART appeals.$" gText_BadlyStartleToughAppeals:: - .string "Badly startles POKéMON\nthat made TOUGH appeals.$" + .string "Badly startles POKéMON\n" + .string "that made TOUGH appeals.$" gText_MakeMonAfterUserNervous:: - .string "Makes one POKéMON after\nthe user nervous.$" + .string "Makes one POKéMON after\n" + .string "the user nervous.$" gText_MakeAllMonsAfterUserNervous:: - .string "Makes all POKéMON after\nthe user nervous.$" + .string "Makes all POKéMON after\n" + .string "the user nervous.$" gText_WorsenConditionOfThoseMadeAppeals:: - .string "Worsens the condition of\nthose that made appeals.$" + .string "Worsens the condition of\n" + .string "those that made appeals.$" gText_BadlyStartleMonsGoodCondition:: - .string "Badly startles POKéMON in\ngood condition.$" + .string "Badly startles POKéMON in\n" + .string "good condition.$" gText_AppealGreatIfPerformedFirst:: - .string "The appeal works great if\nperformed first.$" + .string "The appeal works great if\n" + .string "performed first.$" gText_AppealGreatIfPerformedLast:: - .string "The appeal works great if\nperformed last.$" + .string "The appeal works great if\n" + .string "performed last.$" gText_AppealAsGoodAsThoseBeforeIt:: - .string "Makes the appeal as good\nas those before it.$" + .string "Makes the appeal as good\n" + .string "as those before it.$" gText_AppealAsGoodAsOneBeforeIt:: - .string "Makes the appeal as good\nas the one before it.$" + .string "Makes the appeal as good\n" + .string "as the one before it.$" gText_AppealBetterLaterItsPerformed:: - .string "The appeal works better\nthe later it is performed.$" + .string "The appeal works better\n" + .string "the later it is performed.$" gText_AppealVariesDependingOnTiming:: - .string "The appeal's quality varies\ndepending on its timing.$" + .string "The appeal's quality varies\n" + .string "depending on its timing.$" gText_WorksWellIfSameTypeAsBefore:: - .string "Works well if it's the same\ntype as the one before.$" + .string "Works well if it's the same\n" + .string "type as the one before.$" gText_WorksWellIfDifferentTypeAsBefore:: - .string "Works well if different in\ntype than the one before.$" + .string "Works well if different in\n" + .string "type than the one before.$" gText_AffectedByAppealInFront:: - .string "Affected by how well the\nappeal in front goes.$" + .string "Affected by how well the\n" + .string "appeal in front goes.$" gText_UpsConditionHelpsPreventNervousness:: - .string "Ups the user's condition.\nHelps prevent nervousness.$" + .string "Ups the user's condition.\n" + .string "Helps prevent nervousness.$" gText_AppealWorksWellIfConditionGood:: - .string "The appeal works well if the\nuser's condition is good.$" + .string "The appeal works well if the\n" + .string "user's condition is good.$" gText_NextAppealMadeEarlier:: - .string "The next appeal can be\nmade earlier next turn.$" + .string "The next appeal can be\n" + .string "made earlier next turn.$" gText_NextAppealMadeLater:: - .string "The next appeal can be\nmade later next turn.$" + .string "The next appeal can be\n" + .string "made later next turn.$" gText_TurnOrderMoreEasilyScrambled:: - .string "Makes the next turn's order\nmore easily scrambled.$" + .string "Makes the next turn's order\n" + .string "more easily scrambled.$" gText_ScrambleOrderOfNextAppeals:: - .string "Scrambles the order of\nappeals on the next turn.$" + .string "Scrambles the order of\n" + .string "appeals on the next turn.$" gText_AppealExcitesAudienceInAnyContest:: - .string "An appeal that excites the\naudience in any CONTEST.$" + .string "An appeal that excites the\n" + .string "audience in any CONTEST.$" gText_BadlyStartlesMonsGoodAppeals:: - .string "Badly startles all POKéMON\nthat made good appeals.$" + .string "Badly startles all POKéMON\n" + .string "that made good appeals.$" gText_AppealBestMoreCrowdExcited:: - .string "The appeal works best the\nmore the crowd is excited.$" + .string "The appeal works best the\n" + .string "more the crowd is excited.$" gText_TemporarilyStopCrowdExcited:: - .string "Temporarily stops the\ncrowd from growing excited.$" + .string "Temporarily stops the\n" + .string "crowd from growing excited.$" @ Unused move names diff --git a/data/text/pc_transfer.inc b/data/text/pc_transfer.inc index 53a82c8f1..3fa255340 100644 --- a/data/text/pc_transfer.inc +++ b/data/text/pc_transfer.inc @@ -5,7 +5,8 @@ gText_PkmnTransferredSomeonesPC:: .string "BOX “{STR_VAR_1}.â€�$" gText_PkmnTransferredLanettesPC:: - .string "{STR_VAR_2} was transferred to\nLANETTE'S PC.\p" + .string "{STR_VAR_2} was transferred to\n" + .string "LANETTE'S PC.\p" .string "It was placed in \n" .string "BOX “{STR_VAR_1}.â€�$" diff --git a/data/text/pokedex_rating.inc b/data/text/pokedex_rating.inc index fcb26bc7d..175aaccc6 100644 --- a/data/text/pokedex_rating.inc +++ b/data/text/pokedex_rating.inc @@ -3,7 +3,7 @@ gBirchDexRatingText_AreYouCurious:: .string "Are you curious about how your\n" .string "POKéDEX is coming along?$" -gBirchDexRatingText_Cancel: +gBirchDexRatingText_Cancel:: .string "Hm? Oh, you haven't caught enough\n" .string "POKéMON to make it worthwhile.$" diff --git a/data/text/surf.inc b/data/text/surf.inc index 453a3d5b1..13854f7aa 100644 --- a/data/text/surf.inc +++ b/data/text/surf.inc @@ -1,5 +1,6 @@ gText_WantToUseSurf:: - .string "The water is dyed a deep blue…\nWould you like to SURF?$" + .string "The water is dyed a deep blue…\n" + .string "Would you like to SURF?$" gText_PlayerUsedSurf:: .string "{STR_VAR_1} used SURF!$" diff --git a/data/text/tv.inc b/data/text/tv.inc index 68b842158..6cfc289d2 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -166,7 +166,7 @@ BattleFrontier_BattleTowerLobby_Text_LookingForwardToNextBattle:: .string "I'll be looking forward to your\n" .string "next battle!$" -gTVBravoTrainerBattleTowerText00:: +BravoTrainerBattleTower_Text_Intro:: .string "Yeah!\n" .string "It's BRAVO TRAINER time!\p" .string "Today, we're going to profile {STR_VAR_1},\n" @@ -174,12 +174,12 @@ gTVBravoTrainerBattleTowerText00:: .string "For the challenge, {STR_VAR_1} entered\n" .string "one wicked {STR_VAR_2}.$" -gTVBravoTrainerBattleTowerText01:: +BravoTrainerBattleTower_Text_NewRecord:: .string "The pair set a new record of {STR_VAR_2} wins\n" .string "in a row in {STR_VAR_1} competition!\l" .string "Bravo, TRAINER!$" -gTVBravoTrainerBattleTowerText02:: +BravoTrainerBattleTower_Text_Lost:: .string "The twosome finally succumbed to\n" .string "{STR_VAR_1} in match number {STR_VAR_2}.\l" .string "Nice try, TRAINER!\p" @@ -188,7 +188,7 @@ gTVBravoTrainerBattleTowerText02:: .string "We asked the TRAINER for impressions\n" .string "on the match with {STR_VAR_1}.$" -gTVBravoTrainerBattleTowerText03:: +BravoTrainerBattleTower_Text_Won:: .string "The twosome won it all by defeating\n" .string "{STR_VAR_1}'s {STR_VAR_2} thoroughly.\l" .string "Bravo, TRAINER!\p" @@ -197,7 +197,7 @@ gTVBravoTrainerBattleTowerText03:: .string "We asked the TRAINER for impressions\n" .string "on the moment of glory.$" -gTVBravoTrainerBattleTowerText04:: +BravoTrainerBattleTower_Text_LostFinal:: .string "After a string of wins, the pair finally\n" .string "succumbed to {STR_VAR_1}'s {STR_VAR_2},\l" .string "their final hurdle.\p" @@ -208,7 +208,7 @@ gTVBravoTrainerBattleTowerText04:: .string "We asked the TRAINER for impressions\n" .string "on battling the celebrity pair.$" -gTVBravoTrainerBattleTowerText05:: +BravoTrainerBattleTower_Text_Satisfied:: .string "This is what the TRAINER had to say:\n" .string "“I'm satisfied!â€�\p" .string "Now isn't that a refreshing reply?\n" @@ -218,7 +218,7 @@ gTVBravoTrainerBattleTowerText05:: .string "I found out exactly how satisfied\n" .string "when I heard the TRAINER say this:$" -gTVBravoTrainerBattleTowerText06:: +BravoTrainerBattleTower_Text_Unsatisfied:: .string "This is what the TRAINER had to say:\n" .string "“I'm not satisfied…â€�\p" .string "Our TRAINER was obviously a little down\n" @@ -228,22 +228,22 @@ gTVBravoTrainerBattleTowerText06:: .string "Anyway, I found out how dissatisfied\n" .string "our TRAINER was when I heard this:$" -gTVBravoTrainerBattleTowerText07:: +BravoTrainerBattleTower_Text_None1:: .string "None$" -gTVBravoTrainerBattleTowerText08:: +BravoTrainerBattleTower_Text_None2:: .string "None$" -gTVBravoTrainerBattleTowerText09:: +BravoTrainerBattleTower_Text_None3:: .string "None$" -gTVBravoTrainerBattleTowerText10:: +BravoTrainerBattleTower_Text_None4:: .string "None$" -gTVBravoTrainerBattleTowerText11:: +BravoTrainerBattleTower_Text_Response:: .string "“{STR_VAR_1}.â€�$" -gTVBravoTrainerBattleTowerText12:: +BravoTrainerBattleTower_Text_ResponseSatisfied:: .string "“{STR_VAR_1}.â€�\n" .string "Now isn't that great?\p" .string "It really expresses {STR_VAR_2}'s joy,\n" @@ -252,7 +252,7 @@ gTVBravoTrainerBattleTowerText12:: .string "end… It really was what you'd call\l" .string "“{STR_VAR_1}â€�!$" -gTVBravoTrainerBattleTowerText13:: +BravoTrainerBattleTower_Text_ResponseUnsatisfied:: .string "“{STR_VAR_1}.â€�\n" .string "Now isn't that fitting?\p" .string "That battle with {STR_VAR_3} at the\n" @@ -261,7 +261,7 @@ gTVBravoTrainerBattleTowerText13:: .string "{STR_VAR_2}'s disappointment comes across\n" .string "loud and clear, I'd say!$" -gTVBravoTrainerBattleTowerText14:: +BravoTrainerBattleTower_Text_Outro:: .string "Bravo, {STR_VAR_1}!\n" .string "Bravo, {STR_VAR_2}!\p" .string "I hope we can count on seeing\n" diff --git a/gflib/bg.h b/gflib/bg.h index d8b5a5404..02ff07369 100644 --- a/gflib/bg.h +++ b/gflib/bg.h @@ -76,7 +76,7 @@ s32 ChangeBgY(u8 bg, s32 value, u8 op); s32 ChangeBgY_ScreenOff(u8 bg, s32 value, u8 op); s32 GetBgY(u8 bg); void SetBgAffine(u8 bg, s32 srcCenterX, s32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle); -u8 Unused_AdjustBgMosaic(u8 a1, u8 a2); +u8 Unused_AdjustBgMosaic(u8 val, u8 mode); void SetBgTilemapBuffer(u8 bg, void *tilemap); void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); diff --git a/gflib/sprite.c b/gflib/sprite.c index 411e7d3b8..aaf9c5fa3 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -96,7 +96,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC static u8 IndexOfSpriteTileTag(u16 tag); static void AllocSpriteTileRange(u16 tag, u16 start, u16 count); static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset); -static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2); +static void UpdateSpriteMatrixAnchorPos(struct Sprite*, s32, s32); typedef void (*AnimFunc)(struct Sprite *); typedef void (*AnimCmdFunc)(struct Sprite *); @@ -634,14 +634,11 @@ void DestroySprite(struct Sprite *sprite) } } -void ResetOamRange(u8 a, u8 b) +void ResetOamRange(u8 start, u8 end) { u8 i; - - for (i = a; i < b; i++) - { + for (i = start; i < end; i++) gMain.oamBuffer[i] = *(struct OamData *)&gDummyOamData; - } } void LoadOam(void) diff --git a/gflib/sprite.h b/gflib/sprite.h index e53737981..f7ef16532 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -270,7 +270,7 @@ u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 sub u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); void DestroySprite(struct Sprite *sprite); -void ResetOamRange(u8 a, u8 b); +void ResetOamRange(u8 start, u8 end); void LoadOam(void); void SetOamMatrix(u8 matrixNum, u16 a, u16 b, u16 c, u16 d); void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 affineMode); diff --git a/gflib/text.c b/gflib/text.c index 557c11704..c400c0582 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -326,14 +326,14 @@ void RunTextPrinters(void) { if (sTextPrinters[i].active) { - u16 temp = RenderFont(&sTextPrinters[i]); - switch (temp) + u16 renderCmd = RenderFont(&sTextPrinters[i]); + switch (renderCmd) { case RENDER_PRINT: CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, COPYWIN_GFX); case RENDER_UPDATE: - if (sTextPrinters[i].callback != 0) - sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp); + if (sTextPrinters[i].callback != NULL) + sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, renderCmd); break; case RENDER_FINISH: sTextPrinters[i].active = FALSE; diff --git a/graphics/door_anims/abandoned_ship.png b/graphics/door_anims/abandoned_ship.png index e46aca9ba94b1b66552d49666d925b87b1dfea1d..0030246b4e08aace30276066cf61d1510e8c2712 100644 GIT binary patch delta 290 zcmV+-0p0$j1F`~;8Gi!+008Fy?~?!k05DKYR7C&)07^mg{ds5z{VzjjXtgJcz|6;*#<;nm60KG{>K~yM_z0ffV!Y~xZ@mwKU z3Izjsi{LrDf@djo$xQ^a6f&fD@c^!c4z7;%CHbOQX+coG>3>J2yua9E;vEep4%iwb z77@beU4jo+zz1O0w+ZfSU!j4`soMfglMxDzfYb$H1p`poTLPKNP7Fm+45Fx3C`yuo zuqS@eM`}MhAk5)%ABLUb@<2C-{s5{TGRX7^e0?>gKHR|OKKz6}WJ(|UTc7yLWz=5< o-*YzyJUM07*qoM6N<$f`l}GNB{r; literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IEi7Q8@egp~$Bq#cnfoLFB0AesmJ-~bw$k^lQ;uxZF ze(wc)u0sYQ$3L3yvJ%-<#qj=;Im<4W4{DKIw%y?$WSUNEyJ(bno=f=mXHi6^V?h1o zcAv_4tK=_za*KtxvGuzegnOxL++*r$^uDb6VsB+DYhL>|t}nH0;xdf++!d^*1~Yw| zcqT7oP!D8O3Y4|<{G@V2c>jyXYgd^ZD1LEA{lJ+G)eGhxu46F2CTV2C`S4d~(EJMr zp4dI)tWD9VeUe}MNPoIvo#?}DJd81o4C@>i!W9k_&9~0m?BaiY#VIkMKU7OxBT7;d zOH!?pi&B9UgOP!efv$m}u90DgfvJ_TrInG1wt<0_fkFNZD=!ocx%nxXX_dG&$Q^C^ P1`0AyS3j3^P6mg{ds5z{VzjjXtgJcz|6;*#<;nm60K7>=K~yM_z0ffV!Y~xZ@mwKU z3Izjsi{Lpti&rRg$xQ^a6f&fD@c^!c4z7;%CHbOQY(Y@J>3>J2yuWBLvB%bMz}`S& z5h0A;CHQa!d;oTRo8Zp&6&l!_x-HN&8KK|^NL>(CFaVXkC6KA?#84E)Ac|^*q9iE@ zd*T;;r1ql&!W=I5Vb~ci4|H?r51{HHgG`^m*H=^O!wqci!%yf#ru3n|^@+b+M*UUr nZ5afp0s>S40UD}+faN}SsrAO?ff1I$-}jNP6tjv*T7 z_g*mMI%FVn>|@V5zSebe2X=qqZPXLo<2lV~{ewuG_6MK11i4}-8UL766R5LIVa5F~ z%E9;Izs|5q&bCO*7udkD$ZIx>Z?uDOLFO)&&D+-(9C&*nu5sV_1x?BVF^p>$u&M3# ze2}=w>w%@$0hz0s=RF+_za7#4#j;$R`GSnvcflKyW&B%;ckn+rZq?kb=D2Qt$SY;u zoOjCpFAh7uJY4@;xPE8P$JG;V8%ca%<@v$HR>R1Ay7t|SC`b9FGq;HYy`fs-8c~vx zSdwa$T$Bo=7>o>z40H_)b&U)|3{0(zEv-z}I6;98E>g5EdT|jb2ya<8tgxIhE#{_{P+DQPOZ*6@W8T4sueFI*k ztz}~nB19rN&WESZw}vUTD_DC~=61PPQz4-l+UKK>+}oo zQ-TkM5Ywn3>T@~+VyEkLV?+$|0OPVE_S+20+9KBd2B{{3U_S8xAMee_tCG)Gk literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G`Msst;e?TFDPV&9*H$8=og>^lXcknxhr8iYIoJXtCIo$u3tkA4@9dF7a6T zL+DfTf%-T6XIKM|@+2wnM_gxly~;qyRFWl7WZU}CuR9NJ zbqyiHjpp*@4gMU@ghNg~uk0(Vyez!$SVj7!2%#qtMt{0g!1AZLTaov#h6ul|nz!6^7JBH+@Ady{}6rCQ<|QIe8al4_M)lnSI6 zj0}tnbPWu3jSNE!Osz}|tPBjb4S=M?7F+jU4KoV;AZO3t`pHB`Uk|g zD&$0$u!nsn(^P?{3e1|BK@2A?1;~V>=R@QU+=nP=i(lXrq4Cif#R|llQHP{5hUxI0 zfs@G_B+m`lGG!kq%$t3n!}pPw?Hj&?vQJ#c8EvmWk7lxuSV0S-Vh79k>WrYh({63| b!9p+WZ#l8r2o9sd00000NkvXXu0mjf|I3L( literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G`zU3V@`9L9o z_or>@kMQJPl*E4e$*Z0PdoSnZen04>ANu@o{{JujTYzp?Epd$~Nl7e8wMs5Z1yT$~ z21W+D28Oyuh9L%~Rwf2kh9=qu237_JCYH<(P&DM`r(~v8;@04rvO5N-fx*+&&t;uc GLK6T^XOOG_ diff --git a/graphics/door_anims/battle_dome.png b/graphics/door_anims/battle_dome.png index 729385b3fc7063eb1f781ecfe03d58bd183868e3..4bc9fab94b53c414908c14401b996d133fb93213 100644 GIT binary patch delta 262 zcmV+h0r~!l1D67j8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0HR4mK~yM_&CtOK0x=K;(5cD_ zmhE810@j%Y58g~VvKq02c=V*H!TC-^Jncd}_#w=LB#?YMw|`J4?lCV^DrPNIO7)aN zzK}}xz`Pnw2W;IoG>zujIfhft`=JAAZa8imR2rBUAOR&YV>VM_!NZh$Yx!9}WA>~@ zGMfX;0cDnNuxBMCfPQfOkNUA!95eo&7J##W;XAmcfOJCw`oX)OCqy=@mZ6Cva{vGU M07*qoM6N<$f<&Tr>;M1& literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G`t2Ubxw}3(d$%%etAR34jfEWx?4=`T^G8TEdIEHAP zKYQUICzGK7>xE3ks!uOU6vC3-BlG22&g@{dxO{Mv=#8nLeO+wcI@$bCJkzW)p~h-k zfcmylxenp9q$EGVw60c_NxaYEGWH~7e_v2I>4dJq{Gxs5WF@=~|Gc;0+Jk)zs{@P# z%LP@{!byW>wLzl8$j2pmbgZgq$HN4S|t~y0x1R~10w@n14CUS!w>^gD-#1N pQwwba11kfA^2_OYC>nC}Q!>*kacf}fyMGB3FrKb{F6*2UngECmgDU_4 diff --git a/graphics/door_anims/battle_dome_corridor.png b/graphics/door_anims/battle_dome_corridor.png index 198ad9acca356dd0b5025adcdb576b26ba046fd1..78e77869ea6752f126873b250962606ec13f34b9 100644 GIT binary patch delta 309 zcmV-50m}Z)1KR?S8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|K8Q+d#sC# z&8(d6&5NA0oV3NP&DFgr5Z+24|6(!!-h;|31}*>q0Om%y|M?OR@geoe~I}pfx;#Tx(6=Ha{3Vc7>ULS^m*)DOX z){!~adWLzPnEQDSEX#xWx-5GrbGITfmmknnd`3k8TOs1R?jjf8CDL{|wi!FF2+q7= zXhr|a2kj%D5iQpx-WIXe9aSYKo zzxKjL!Da&<)_}DWM2)y}uLNG&#a*0YamqnGe2#T?+Y4oRrRgnNS{JMZPSjiqE6Ehy zv5l+7?pFN#Wu8~{3e}eeZe3E+wog9f`9A)VyS`s%zvJ}F{gUcHd%r?$lZR>^fr z)26It*l_xhqeDx`1aF3q3JOkICsaTDuh}DSXHlh}E+JF=;8_LRjg3L2PxKR9rOXch zYhJzfM!<`>#yuAvY>3@-)o1bI3070&`i}RBdrCe&V)cus4d`Rl64!{5l*E!$tK_0o zAjM#0U}T_cV5n*WnyS$XsT^sU}a!X+moDyq9HdwB{QuOw+5bzx37T$*VEO{ JWt~$(69C{dqW=H@ diff --git a/graphics/door_anims/battle_dome_lobby.png b/graphics/door_anims/battle_dome_lobby.png index bd4e4e895baef67bd6e8104f8b3d248b6496ae70..631cdeccedb5b1fd7973a1ba8127945ff9bc2544 100644 GIT binary patch delta 358 zcmV-s0h#{h1NH)t8Gi!+008Fy?~?!k05DKYR7L*)|58$Fl$4~+y~Y3k|K8Q+d#sC# z&8(d6&5NA0oV3NP&DFgr5Z+24|6(!!-h;|31}*>q0Rc%wK~yM_z0f^Q12GT<;CBT( zijWm3Y$_V01R9c(Tp%U!DX8`w=BIF-q}dL6x7v!Hh6B)W0DsQFjAtbyVWmR6#-C)5 zta(_EK?PSiYutY2T;o#kiL;NK_kz>6oL8tZh>?#NE4ULpW7`I$bbEl`XY}wLW9YH! z_|1^88b$_|vAT)$&*U1U^ix zU~3urP~Zi$sb5UfrhkY(@&7o zRIm|Dk6|vD6jUCYNC^a4kfsDQ<#K9R2+j+%!2a&%8>gJ=K|q%GkN^Mx07*qoM6N<$ Eg75LGzW@LL literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hx^*@SJoq$3D$%%etAR34jfEWx?4=`T^GX8nGIEHAP z-+RH(kJ(Uw^+G)>pTl9sj2A1n-P-zMn`h8&jt9j#M>Sf_O zUu3R%w2sO8Y(}EB+vTLYA7{HI-tE~CK5w1f?fC^FZsK!4@0_}@FX_|^QL`q=L#EEs zcU0Ye9WwZ^{BVQ)o&JZ)FSx|!397S(IZXDNttP7R=E?)FK#IZ0z{o(?z);u7FvP&r%EZvh*izfTz{x~Hq3%Q~loCIA+?tFr(A diff --git a/graphics/door_anims/battle_factory.png b/graphics/door_anims/battle_factory.png index 7ed6c876b89fcf6701668add452862a571c62fec..1d74d8b58076856ad87d26e8ece5299f0ce5747c 100644 GIT binary patch delta 234 zcmVLkH5R->Q_=JO~ kQsM%E7{3$4pi=k%0C!q#D)xyq5dZ)H07*qoM6N<$f=U2l%>V!Z literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HR`Tu-%@<1VhtT-`M>4Be@h*jZkp~0#Sb3O*?Ii5pHm!(lynfn%?Z#_|^Ts9XST1gE z;OWp#Q?R+gXjtjda-K`zs%wmbz~k~Hi4ZP%hEsp~zfJS|tOInBYKdz^NlIc#s#S7P zDv)9@GB7gGH89jQG7K>=wK6fXGB(sUFt9Q(P`LP;9YsTKeoAIqC2kFYJK~yM_#n7=4!ypU=Q16sJ zTPRF`e92uXQRhK2f@jGJZquO|f{-8%@j0bcy*mW=`2*VwJAZiEY#foz;6Y~tX!BVn z3K*D2!EMI7VXk;6@Tx#gWhb7(vMh>JkdIiApGy_okOU-2U!d*shIxLONL6|VLJQ|o8^>Bk+{&pOXP$n64o oQ)}trd+6ua@Ebk!1a|s?H@mc}+g#W~-2eap07*qoM6N<$g45WB+W-In literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HRgOK~qZa^V{nh_rEHD^&M-s%LqarEi$r zi`zLe3(ro7NN2wIY;%vtM2573xjo^BBMJkL>{e>hwtnb(uew$Hg!_UM=XY{t6fjL$ zQq&zdaq>b14;vlBC*5{ji~mSvsiy&(F4{*A4|A z4f_3XbP0l+XkKzsQrc diff --git a/graphics/door_anims/battle_frontier_sliding.png b/graphics/door_anims/battle_frontier_sliding.png index a43cf519dda91ceaa86aa2b89c4b73e978aabc88..1359f4725b8d6061a5088ffd6efa5677705df3eb 100644 GIT binary patch delta 260 zcmV+f0sH=j1C;`h8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0H8@kK~yM_)zGmGgD?~XP|re> z0Vr4iDHEJL!8d&pVTpwzF-um+3Yj5%`w;O@aEo#UdeUK#&wafZSHXk%QANf*neF9o z1g7>KeN6LwFA!D;F~UMDM&Q=>=MM;QZQE|c(%{lGr}FO!U~01*woi=QXGI7D_krgu z7Gj~7_uMB#6x=648~A_R$3PDad7tG%c@_h)NKFB;$W1!6x6d0NH`N|xMv)c(0000< KMNUMnLSTY0w{xNZ literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0I6<&#y$H-SO|$%%etAR34jfEWx?4=`T^GUj=@IEHAP zzj|RKZ?l02OThXGq7jXe6E+2?EN+qe&$(u{f)ICrfrC_8W4^r7KhG71MPGQfJKB{e z-eJso=KWMM-0=75`5b31mVYVCo|WCW!LdV3Ea@WC_r!{Qjt$36dabXq-L=_&YQK6z z;r|`|-|wV5bJ%`&e4-ucvYrMLXY>mdKI;Vst06Rr|u>b%7 diff --git a/graphics/door_anims/battle_palace_lobby.png b/graphics/door_anims/battle_palace_lobby.png index f106ae960d99172907dbf1fa3ca61e9ecb42222c..a4aa998d46eeb4322e164473076d799205e5b7ca 100644 GIT binary patch delta 303 zcmV+~0nq-i1HS^08Gi!+008Fy?~?!k05DKYR7C&)08&zFl$4~+y~Y3k{{R30ltE&o zVuQVlq|LM`=EYKbDG;PN7|lu`|6(!!-h(7-*tP%w0Ln>3K~yM_t&lMegD?;T_W|Tr zG|=R8G)9Wt(BLL7h{OjhrH$g_2Xtwi=3@I4T!2texN5vwdw+ckBE_tT@KD^^4IJT#s>2cp$KNAu^0pj%yU#fR$$x940nN3ZYX0}%i;aZ5gX}C*k%4RVhKO=^8x)~B)9D+DvSUC002ovPDHLkV1itn BhQ0s* literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0I63upOXra&QqxVj{_jU(+AI`l!<9bnreee;lUovJh%iYdA?60$P`FbOh z{TY7|&`+u*t`Q|Ei6yC4$wjF^iowXh$UxV?P}j&X#K6?b#MsKzOxwV~%D~{v?d1k2 c8glbfGSez?YuMW+-vbIhPgg&ebxsLQ00^m%=>Px# diff --git a/graphics/door_anims/battle_tent.png b/graphics/door_anims/battle_tent.png index a0a88e4c5fba405715e0b1441841074fbdef9119..b278e33109f5c138e7da2d54e3ef3f1fc3357411 100644 GIT binary patch delta 414 zcmV;P0b%~21g!&*8Gi!+008j2^br6605DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0XRuSK~y-6#n7>8!!QsA;ClrX z8fYOyJ?3pXNFieeopE+skhkbyg909!A;I@H89n$F`V76(sefq;t?5#780!O_Y~2q> zlWGO@Bh}5Q%FU&$%{)w0ipt}MaH-gYsq5uE@ literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr0wfq7@kRd!QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`gjG}BTtlYW=Al(AViGF1u8i*Bu7z|PmFkfY0V6^abaSX9I zee}Y{tiuKZY!9ki_cgKiSI#y*If1W@HS^q@yZo**%?+i&%(zN^2&$9M+s;Thi&c$}8rXb6tPamq(` zTskAaXWpsi`cn&bDx71@Tz7u$|1;^CZ_BdcB6t6m3{8G(@bq%jY2i;#)lZ1zK4+Q3 zxLB{@@k<%@BN!DUSN`LE>z+zf9h7V8d;DMS3j3^P6xOMr+wdN=JT3g+d;LRy&di6o8z<)7GA@zX9~Ck%>kT#Y3=2O5XV4xf#thn?;Iu)C z7@Ri9rig4xmu~l6U2c$dL`44^nulmN_vZug{Ym{P@AMd?Knz3$0nsTYCPd;9reJU* zNazteC+o0$>qx<(yXXEtU*)}j5GAUj?6-$Vb^!S$^oDK`CD)xOXZfG-eVOWRS01*$ Ti^=MU00000NkvXXu0mjf7)Py+ literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr0wfq7@kRd!QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`gjG}BTS_}U0dIE(6k`w*PKr|3505KS(9$>!8z`!Wr>Eak- zaeD71!@R==JgfopT%C{IadX@x#SvKfLRTo@u5O2&L%?SpTi3Q8TW3%2Q0^-RlNLTq zu=kku#Z_X5Sj{!2m8|kxuU)Xq`yHVB;of`yUj{O5sc!_FootxI7W96ZZk6Ovkas!W z>iL1(_3O94Ep_uS-nV?u_Wsht+g9aP@JG!P`}cnDzlHYIi!R^kWxlwfCsx7Bo%Neb zmGfDf!-u{bN^fEBI@h>OJuP>F(vda1n>5pAUwZmDWV&>LtfR``wr7cQ&;IS{++)Ae z{^?tJX0Zj0I~BT8jje1Lnt)xo3(R- zb;D&Lx5HaHCcXBXviXw#kBvUQ@fOjpg&TLW@&W@%wZt`|BqgyV)hf9t6-Y4{85kMp z8W`#t8HN~`Ss9pE8Cz-_7+4t?2piwZM$wR)pOTqYiCaTbUea|?GMmPXTQ@hK~Q_=VM4Em`J(?>uX3{ iLtjJU8qQbX8vX!lNHy}x-WW4rtaSYKo ze{_Ox7n7kt>wVE8hWF8e>G|e6_+2lHXWY@A!dTAtm{G*(oI&W^Z|xjS98t4tmIzh6 zcQ)pgYh2Fg`&sJD>GuV@3(xUApLghu!Fzo(e)Xn>pGPx12d#z`u)=>kM0Ru&=DitF6D?|4zAV z%X~SxDWS?oU`c~nsIBj2p&4?|^bUV9_@0!%rAXa_^~#J_7pHa^*=lht7X4bp{#b3r ze5P9^JhJT57a&i^aVu5Z+24|6(!!-h7Aq}96QGbla-v@uhz4Q>AO?ff1I$-}jAfoKjv*T7 z_g*mMI&8qh8Zh_T?7ddz9xoKFrcao+z}#T2t;mv#7aXmebyGT=jY~2%(PTcPcT19cJX zM`d~1KK5&zYt@yQSfz6KlH(TMm47$LId7f6M!Me1{$QG=kn4F)(Xs^o^(REXUFJJF zk7>hJ#|gQQ_y7LM@OWxi6Z^MM?m!o-mbgZgq$HN4S|t~y0x1R~10w@n14CUS!w>^g tD-%;I0~2in11kdqxm_o$P&DM`r(~v8;?|J=yr2yfIG(P4F6*2UngCQTf;s>I diff --git a/graphics/door_anims/battle_tower_multi_corridor.png b/graphics/door_anims/battle_tower_multi_corridor.png index 145dea7a50ceb37a94d18775bcdfa610be88964a..cb32fbc70b8323bbb77195d14fc529dd8b81feb1 100644 GIT binary patch literal 413 zcmV;O0b>4%P)|NsBq)#m^IoB-~N0KJQIbAwuHv~!Eay(tjhN+ADYG5_9!)HKb>0003f zNkl_(H;Cvh*Hqa}$zlHfN z$^vM#t8;0WXn|L2O}7JSR=X|7p;I%<_4f_UOg5HDs5u6VO#})7epi)o@B*Ng100000NkvXX Hu0mjfq_nO+ literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^0ziC#1xPTw4GWwMq*&4&eH|GXHuiJ>Nn{1`nUcKS zT^RVSjO-QzdF&;gzOL*~7)9CG%s-xC76J+hBq#cnfoLFB0AesmJ-~dGfq~J<)5S5w z;`H7td$X7gc^DGx*KV))>brg3&h{5FJQumYh+3s{oLKD3`pr1xlmDzIQ5n+fnwt5W zQzONe->X`2UCy5ATfoxxQ;hfH4cgC(W@|=rZI95qs%ianOF`gzx9wjHiNxW025PT^14vC26hlq(Mytg0oh5hW>!C8<`)MX5lF!N|bK zK-a)f*T^u$z|0DWOpLV+46F`Vp1Vj&_|fXPKRU=QYE4bF4dJw43?9T@mv-hcc(3FC8MO1PW?Q^M#N zm=a3#FexF65txpM%$9BY3HBSaX6uj$sg)+f)`1#__pVy1 z;@VyZa=UUnArgS8A_6=(STWu$ACft$%%etAR34jfEWx?4=`T^G9G!lIEHAP zKRRJACzGQ<>vC4Z?d;M9yN)pNZ4`*y&?K46dndxOX6ucX8Tq{Dim%(+o@J4h_>pk$ zkFDo)&m=D?f8pRurPF3i^7>Msr}$gQHiJ`g>WhP?S6z{rwe!`s%qKVWLd$c1bBbkO z&3h`qv2d#1;Zu!L?cdi$t$K7Tj=gAip|zq=!(>G!8@s0Ci(UBbKen@8zaS^2Qq$dE z%TRZ?UL}RY|AEx)_lIJ0G-4+T7~MI_R^tDF`7V>ZM>xa%duR4KEwC+UZaI5k|DTmh z*B_MIts_7Ge--0lfky&7&Nuel{L~=ryKcS3sm+gNfxcBOag8WRNi0dVN-jzTQVd20 zMh3bDhPpy@RBzdxL|EVrqLq zN@^)FTBOzHYQ4qo?)J^q?wp*obF4XY#iZT6gUSE^0IEquK~yM_#n90a!XOL=;Otc0 z0G+@e-h3)_0$?H?&lyZ4;2CRuZ0@-GE-4g#a;JlnMbmMbWPcH~C}~mEdUw8Yajmvc z+P4eU0{95U{o3(ZMM{eKY%xZkyT*b27fG;GmLQ^LFnEGcrPCickXr_U_Q|L6t^MsE zQpapj`lxtCwBW~QC<0n6(ozJ?hg)m;VDEg)eYP=ny`{SVW7`L-?5wo_=8{ VgMp($0{{R300>D%PDHLkV1ft0fJ*=X literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H>r5EZ;P6CAlk`w*PKr|3505KS(9$>x-WUTUZaSYKo zfAqpd!9xl>Y!B8vsIU@z$xICB mtnJ&QpXpYEfDi-(^>YXRg4W{~fJGeu0000-HI7IBY;8z$%%etAR34jfEWx?4=`T^GCDk6978nD zpS^UEm&uTa`NEk)3~P>atvR6M;nQ$K;qHN%4=*JI2hM%RtjJftx8EaoO@u*NYFI(q zn?pQvW*BZZ{8OdPG%qvXBBjs%knQIU4G&&)-{WaA-WF_sadxKhtIzY9nuG=BG)(AT z{7bM(bVXf<{fp<(1=qM6*&}anPq)9k){5~UC&#OFMyD%kwwjlY1_0fpTH+c}l9E`G zYL#4+3Zxi}42%qP4GeXS3_}b|txP~j+rYrez`&;cYzc~n-29Zxv`X9>d~cPW0D0fj L)z4*}Q$iB}idS`c diff --git a/graphics/door_anims/contest.png b/graphics/door_anims/contest.png index dc466be116c595fa1ceeed0f4542a215f7d211c3..8719b23ad4a989fea0a6a63f2261d8460621bcd8 100644 GIT binary patch delta 321 zcmV-H0lxmk1JMGI8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0NhDLK~yM_&Co##gD?;U(7A%R z5Rc)~gUk`)z8izyLR`o|_JTJFvs6XFj^uN^G$!ACZMig&;qlfT$qQZrn$gL z(ULSkxzEy;Ue`64vBrsW!%t%QVLmH9qvo>!gCzI}M+9TMZb>#p3_Z^o^zNSJ?AiQ$n$vs?n7_$ TyLB{700000NkvXXu0mjf5N(pO literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H>%Os~AO?ff1I$-}j60q#jv*T7 z&t7okYBmsHy|B~iyi$em!PuQ(=wG{hSuXIl~a0!x6Ck~xclFo z(gVBpC9p*uz1P8W+UsrOaxMj>DGtI5p^^Cd;Qn{G&yiU{S@yQ0Lh7USfVR%=7ci=$qdD@12m;QR<&g1>3>=Aw|}^EiTYC4*kV(vs=8u} z)wp5r@IIwvs^$bVm$3A9!dV{!Kmzb_As9!3xIC7lrS(jf8Q3zz(F%Dgr4c`Mp zn*bN;Gqe-kM=?tKm-i|5`3~DuN`_~VC8!c8{1H?M^^;5h literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hh4vCF+cYs0y$%%etAR34jfEWx?4=`T^GA??$IEHAP zKRe+p?_mX=)<{Mp#&?>}*IZEDHuqf{v&)r8^aWr4E|374xTJGN%GpHQuv+<(wIitQ-FqyyQ$54s*X z*hiP8oj$jwWs%AWFRMC+Hce(d6OkEFr_|kkPyZS6yQV!?E52>x5h*9$l0Sk@yicC2 z^#5tYP?50xlQCO^Fwk?VC9V-ADTyViR>?)FK#IZ0z{o(?z);u7FvP&r%EZjdz(U)= lz{Wt~$(69BShk-q={ diff --git a/graphics/door_anims/fallarbor_light_roof.png b/graphics/door_anims/fallarbor_light_roof.png index 4c81ba10e737a9ef27c55d401bca577134b96764..a4c959f8831a985f7279cde06d6b0dda4bb62eaa 100644 GIT binary patch delta 301 zcmV+|0n+}k1HA%}8Gi!+008Fy?~?!k05DKYR7DsmQr_mIw8e9joKky(L4$*fVq$wi zN@^)FT3W2EgT>ze%~Ix^G2VM1oMI_+#iU?vN;Uuh0LV#1K~yM_&CtsY!Y~X5;LOr) zP%{CJV1asrh7)kAnoF6Cj*t^@WrfZ_?YON7&lAFurB89H)PKLZcDpOL3CC^VHhs76 zxlQnG;5NOM@me!BTE=QU!E|};<)9jXuuxb8h_IL|ARk8x5VU8EIGiBDFF&KfERV2I zWDH08C=rzw`La|!W7_Mt`S=xJ z*&iwLn|1q1^Y%HnQ;zCAHruINoHsdBa<%E>6{$_vgng#_hw;r~^ayu#Sk%!lw`o`5 z5(USdhdSQQQhM{$SnJL14u{0onek1GWN?8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0KrK_K~yM_#n8n39DfXRj8W!*b$mc|94tA| zae)1CB9HvmBzUYiSF8O~yQ`r+Po^vTu0WW0*UzZxPAqj{fZv`L)CnG_ScvNCo zunK75PwI!``x?xn!G9z8mjbWZP&S8Ktv5i0>%pHljI9<}8phTSEY{Do>t{T#pKYFh skkbWnr`FQL^&imBZ{d3A3jF8?-aRpK)BF=v3IG5A07*qoM6N<$g0l*Se*gdg literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hh>*a~@r+`8N$%%etAR34jfEWx?4=`T^G7fsWIEHAP zKYHOT?_mWV)(2}6^7f`J@44VuWbCfAwQFWWRrfvXkX#-U)xc^Vp-bu?zgIXjFwAv6 zY}B{-T;r)945uw3x^f;f{C?cg_+)Kp;p_~}8CvVuc1d%@+<+vbd6)CQ(?5B*=cKWZ1!32^?=#xKrnyHGLzTYu2{=S?@9?e0&= z(zOX+a*O}`+WDo|{jJu|&z)C);j(1a@~fAWzil|5FIatp>;H@P`>ZD2zD8wC3xJ+c zEpd$~Nl7e8wMs5Z1yT$~21W+D28Oyuh9L%~Rwiavrk2_U237_JcXr9lMbVI(pOTqY XiCe?k=SviU8W=oX{an^LB{Ts5POKvCk*}rXS0nnfl3$C7*!K zEpXHV9AO?ff1I$-}j5VGvjv*T7 z&t5pld00V&Eg}2`*WHy5oEW9Q-m_@@Bg_$bz?uET(%oP7{^&R&<>ddizT#(x#;?_@ zU1C+ZCh_&S_)gljY*__+%F3A}y9xm%$SlE;)#KKX)V6EQZ#{O<5qm<~stqdlw zj@r%tGrLZy-tCpUF9vB^d%C+C%&;PHVb$>iyZYV|NsB?oZjAhtgLGPq&XP?txEs^0K!Q`K~yM_#n8bG!!QT{Kz7Lp z86n7>!0`aJ$uF-IrtP=C?oeZ!MzPv_gM@Sc+2D-aEnVN?*|RIt8qJR*Op{~RBT_TT}FG$b#Zg7e@(v|@XG z@u+JBxaK}09G$Ch1|&nPkYVk?)Y^G&?P+f98Ksh!-wdH3@o@IsE_t002ovPDHLkV1nMDkG22+ literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IM72~4hI-rn1a-v@uhz4Q>AO?ff1I$-}j61-6&Xirzgxy4r2!lc(&5 zLmqsdlQJV{ufJaHZvQ>M?C#q9-&j8N>=&Jl?e85yxU6OV_fC1=nl%$lD}Po3eWP09 z8c~vxSdwa$T$Bo=7>o>z40H_)b&U)|3{0&|%&m;gv<(cb3=Ej#`Oczf$jwj5OsmAL Up@?Z)At>NHUHx3vIVCg!0No&ubpQYW diff --git a/graphics/door_anims/lilycove_dept_store.png b/graphics/door_anims/lilycove_dept_store.png index 4f036c51db1cce8e59a6a6ce35f7560c15925720..7c64ab6da82eed8da704b662546b4b02ddad9b5c 100644 GIT binary patch delta 299 zcmV+`0o4Ak1G@r{8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1&=A_=ugVnTZ&74wm#iS7?mT&+70LDo~K~yM_)zHBWgD?yQ(9D9= z2|_0zU7!#}7&pAMy5; z*D{sX4xE-*w9NCd$g{mdEj|#D56pQ+>~l6LO^COY4#Bw#Vn+wAu=b4DS}PbCRdtHt zNqiN+tTxS_TLx9`7k28VZE}$|scl x{ta;$3h0Ugx+HS}D7Ya2g)|tTC=I`p&kJi%4I^GgaY+CG002ovPDHLkV1n6Zgs=br literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0IM!?^YBQ-MMP$%%etAR34jfEWx?4=`T^GLCt=IEHAP zzk1;yZ?gdp>xDNLJhjqJwlWqa2rU-<&v4El&R9x6ms_-PiagOE-K}1%9g2+lg21G45DW9rOU4jg^ z8O2%!6>&x%-VrPoY=&U@VDo&^S3cpqe8%_u1K)6fCzDua#2GUDh&V$!xX1@z7X3$o Ua2+mB00000Ne4wvM6N<$f+}Kn761SM literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G+2VO0$cBWnD%(#)KYk_ w7?@g_SXddGY8x0>85kVi<9`=LLvDUbW?Cg~4VxZ*PXvXJr>mdKI;Vst0Py&PT>t<8 diff --git a/graphics/door_anims/mauville.png b/graphics/door_anims/mauville.png index 63167408ad65d2c4447ed7ad1cb220a02a51ea0f..fec5f344fba4ee8727b153750c52898ef5dff8f5 100644 GIT binary patch delta 301 zcmV+|0n+}k1HA%}8Gi!+008Fy?~?!k05DKYR7HEVz5oBT?(SOE)j_?qN`r%oVq$wi zN@^)FTGiFnq@=9o#rD;U-osI7A7p_Z(CdM_6CGYK(Mn|~_+h(K*TfTuQI%Q(w5 zyn*ANDBqibm`X-uz*KgDWf3U*eLq{?Z(@a6tuUXh+@^AyV!)C&0ab2wb$--Ymt_N{=>Qg=s5v!-9+T@v)00000NkvXXu0mjfr0tBG literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0G+-S#h6U4TLY$%%etAR34jfEWx?4=`T^GER89IEHAP zKRe+p?_mX=)<{Mp#&?>}*IZEDhu;c&>XRz4+3CmWjEqbwV+M1dweX(!Gat8uu zYd0`>oyW9lO=)SJiFgc$Q*6F-(3W`tTl9{8`du^OorLHdrijKTdmVDTSpH|V#;)D4 zdeZEm#;H|*n7E{wb+?$@a67qt%7^JcOMch1CwJ*Dj_~5&$!__NXD54M#j9XDeuG`1 zHPig`P6Pd|3fCO~mu9Lz|5h=vnNfh*TABAFu$ojztj5Ewj$&5RaJ(leB z^wY5%tb%o#d2_I3<}dtBJ{9MYNH2luk!102 Y0_M|E?x({8D*ylh07*qoM6N<$f}$C=tpET3 literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0Hn-ldI4&H{x5k`w*PKr|3505KS(9$>!8z`!W#>Ealo zasKQ@$Gm0(0oDta;@>4!TQ=wxP6%s0BGw%dXqIyzkiVgbanUc9sZ|X*MQ#5KFQ}DV z4Yih@cZ{vyK1AJdY3HjFkC%&Pd|M&4LT7WPy3qNYSk0C;!*kodEaE-x|7DJJgO01b zcVJA{u65P5`dyEz{d<}{4hVhrTaxJftW4DMo{Zr+!S@WzChyiI-|#kQt8zo?GyOllcFj*FdgwR4oOnL8&_!zL zq1~w`@0XfvSoQUU`^D-f&9)2kC!FWn6M9tF$!(Vg-wF1WN92~z4|_8I>i_vQw|++c zm9n}S*ZBJgKYk_7?@g_SXvnxYa19?85r<(i!DLXkei>9nO2EgL(R2y5}>&7boFyt I=akR{07nnK>;M1& diff --git a/graphics/door_anims/pacifidlog.png b/graphics/door_anims/pacifidlog.png index 3e05288255cf4fb19527b03c2878df97f06632ce..841c31658d649c60888ccb6ba2b517e797ccdb9f 100644 GIT binary patch delta 321 zcmV-H0lxmk1JMGI8Gi!+008Fy?~?!k05DKYR7C&)0N&=Lw7q+rq+)}MN?KwmVq$wi zN@^e=QtsxY?!{uwoH?X>7=uzVgM*7wYSnC2)-eD80NhDLK~yM_&Cs!N!!Qg5Q0ydW z0zwnWTp>xtQqlxAPABh?QCM&Q7ICi%GngPDosT*fX>$1u-hTlN`JovwrE8#Tu{CIh zR~Sr8KmiWW+M&O6)&OE}?FBIb`!q9bgJ{5NfXXBw4cz7!>HdfrG2RuA9X~sQ!e|?zrzLOfHm-^{Y=wbYRQNvc!e)WpD$QyjQeT) zQn>9vAi>DIdOAf~)fl;kt8v{+c;C+xkCU2H Tl_fKQ00000NkvXXu0mjfJF<;- literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0HnotH1JOa=-GBq#cnfoLFB0AesmJ-~bw$hhO_;uxZF z{_KT~y@w5WSOeA_I90pu0)v*xske#B4^o+qFI^QAHo>-WC1(zQ=^_{D#wP7cEI)bW zPq_Ws;5%ni&W1I6-1;snE2*n(Xi$$hY|`)DaloeCz)1bWoHVx^Gn83)17@-;X`Fvg zBFkUx@Qkp+TOYR`){0@9sBKYy-NJ8gHJj#|#eN^WuT46TeE;OjrjFj6K5;n*-aT9A zzuv09HD!jnMXR>Qe0_`S65lQt1pj!}pn9<3hNWxN)2NiC88I)}C)%x?KWBR3bdH+3 z;#I8KKctwieK6Il=KTNtGyA5)NoU>eZ7%})Q?2OC7#SED=o%R6 z8X1Ndm|B@wTA7$=8yHv_7&M$w^Fz^)o1c=IR*74~$BFYkfr8Z2)z4*}Q$iB}Hm9I~ diff --git a/graphics/door_anims/petalburg_gym.png b/graphics/door_anims/petalburg_gym.png new file mode 100644 index 0000000000000000000000000000000000000000..42a1e1dfde2db2157bd42c50b25674799c68eca1 GIT binary patch literal 289 zcmV++0p9+JP)KhL>^uRK(%$3ulnyX;06ya- zOzo5LhKS0Us^ypc=!N^yOYXRa4{(m*D*?Xj1*!#b8v&aEREt2{@bUlY=NmYPrGDU- nQ!N5s0yhVE3EJSPcl|s88&4S*v2toa00000NkvXXu0mjfj5&aT literal 0 HcmV?d00001 diff --git a/graphics/door_anims/poke_center.png b/graphics/door_anims/poke_center.png index 8658107149024abb90fd59b85dbae29fda13df90..8bf5cb146dd19441ed4d034c632a843feb8911e3 100644 GIT binary patch delta 288 zcmV+*0pI?k1F!;+8Gi!+008Fy?~?!k05DKYR7DsmQvd(|-sbMT&E}l6-h+dSVq$wi zN@^)FT64YjVyy1}y@T$QbKYuV%|TLg#iX8JIZ6Nk0J}*R< z1Gu20io^s~Ca}|`0F+29gp@THB@z{Q2I8|xf+bKo_|;RsE`PfFiJ2Rb0g{L`1KbS) zyQ|_R0Ad&*SK2{hjXWTA9{Vz8M(Ii5N$AO^&V7Gb3x0tdEk;m8i+C!_{Q`t|1lZ0P z8$1-nW`4zl>8d~5r|W!#6=1G?AFOSE|H5vKTr+uE5JY|BPgBK|P0000 z>o=#Mbc2%+gGp-+ufq1dN$g4q8YP9u_k85}=H&9e)XE6%nnoE@ z_W+l(HLrfZW;#+Mw)4D%^gf=$$#q9tUaqpgy?j+oi>O0Rt^B*1X&hY_j+gK2Zxq?* z-)45_?_0amziZn6t>0REjQyq#qsYYB<^e6HKd&sWowr76`n=}-wShoysFt`!l%yn< zq*^5xr2;7iBLgD?T?0d1Bf}5_Q!5ioD^nwF0|P4q1O08nuTV7P=BH$)RpQnV_j+|0 PD8xKn{an^LB{Ts5Hm8kG diff --git a/graphics/door_anims/pokemon_league.png b/graphics/door_anims/pokemon_league.png index cac740f561669701a81214107f4b3424fa7f3113..34419ac0ada256811ab19aece7d6f5b2fcea3344 100644 GIT binary patch delta 316 zcmV-C0mJ^i1Iz-D8Gi!+008Fy?~?!k05DKYR7DsmQuf7r?wnf9b19@+F@uAPVq$wi zN@^)FT7$*jVw|-9|L)%2#l^*>q^x`Y|8tR1rgi`T0M|)GK~yM_)zC2tgD?~Z;9MaW z@K&KGNV?Unq0*kCv(Po1XE~iYaH_|EtQkQqVSuYz2Xw7-6&Z1IFFcz>ZzEu zrPhVD3C3KtJ{bcjH9?9A;%n6PO^9<{CwPAs;^KXp9;TwLu@ZhIpAt)96A%vq0u%xQ zB;HIoiZ$d0Vl@O(K`sf12Lb(4KJP*Ks6Bwk?+A!x3Ax6wvw+;-b3QLXcx-WL))haSYKo zfAxYP*I@+_wgls}?g>l1*_OZ4i{*}UJi)o-d4}i4=v|@y0eeFA9!UQB=c44f;Oz}N zk9+LDMCy-OuIKt?_-hWc#NuZwLRI@GerJ80D*X7u<$2XhZuLsc;xswrz9M;T!=|uT z9ub0CUh^dTU5o2woa6mLQL%* zwqsMn{RhQ%`iyS{3#Z-wm=wK6rZ rGBnXPFt9Q(_`3a$0*Z#*{FKbJO57S+UZubP0l+XkK*mRX; diff --git a/graphics/door_anims/rustboro_gray.png b/graphics/door_anims/rustboro_gray.png index 2cf62b6dacfa9512b7ee585484155237b91cc865..99211c11a9641b89217ec37f97c6ff2b039671b1 100644 GIT binary patch delta 309 zcmV-50m}Zk1H}T68Gi!+008Fy?~?!k05DKYR7G>er2qf_-rnAR0001U#iU-u!}|aL0MJQ9K~yM_&C*>CgCGn5VD5x* z2e6R~47~t92avVbU!heNmhEv_4dDy4#x@#jE!1Tu-sr1oNz%x-WL)rcaSYKo zfA&%=U$X)aLqgwuKK=veStrCYG_%i`=)87IsMz$kg^|1uxwjlMn{_Sf?ddmLzM48L z&yHu_bn$BE<~^A+YNw_@*z-w>O($%{HN!nh#}=*VJ`lb~A#DAIS;72MG&Z=#SsYxH z(ZIw0mQhym^1~-Q&*li5SY4DjA@ywf=ao`_jRoeEGet;TdBnI}!&6}Gvx>6^BZ~|6 zaUSX^cYP?F6}O6`b2Zaf?%7JYM)T)<%ztM5Z~pf8Kl|d2#1^F2>ip~~Xf^o{B<>Vk zUH;RCammd;e>C2gM*#h%TH+c}l9E`GYL#4+3Zxi}42%qP4GeXS3_}b|txOH9j4ZSb m46Fer2qf_)z!VUw3M8jdxL|EVq$wi zN@^)FTFuqwi?r45=Dpt4ti7yitdwGN#iR;hAvOR20MJQ9K~yM_&C*>CgCGn5VD5x* z2e6R~47~t92avVbU!heNmhEv_4dDy4#x@#jE!1Tu-sr1oNz%AO?ff1I$-}j0>JFjv*T7 z&t8hx5W_X7(8qo!4#&6`TIHFp~En_m*R3v#v$GJ^g0OS5t@O z+40PqE?({2yeD%;?bP%Kdp=3A>4dGgX1GV`*rFBP2g3I#gstB&E0}+Z#s=3oi-U_Y z8hF^>GRi7me)xpv*&JaLtBVpRq@GRxyi)3~vA~>irU;2Ej~JJ0cnYk2R&n-VWO2bh z&O<%rt`CK?;#P5Vu4ekmJzFW)X#Sj!`Ol31&ENk1XJ6cr*n;$0ou6F=ttS70#GQhx z%YWK1F1h*VkH-7*2%z6oOI#yLQW8s2t&)pUffR$0fsui(fuXLEVTggLm8pT1v4ysQ lft7(lfzd`y6b-rgDVb@NxHT~5b4~>Xqo=E%%Q~loCIJ13ngIX+ diff --git a/graphics/door_anims/safari_zone.png b/graphics/door_anims/safari_zone.png index 89807f843f88cad27155dcd008a5f9c7f2fc6cb3..eae6a0e3e519dee004143f9dc4ba0e149691c7f4 100644 GIT binary patch delta 327 zcmV-N0l5Ck1J?qO8Gi!+008Fy?~?!k05DKYR7C&)0Osb+-rlsmy_}?+gM))wVq!r- zN@^)FT64YjVyy1H&F0O`q;tijL9~Mylxl3pMf?B&0OCnRK~yM_)sVpn0x=Lpr-k6j zGGr9-ymlZVES}>QAZF?i@sJjB_q4Uxi}RDXyWrwk2SOe{e}6K}r!{kfLnEx42Inh$ zblF;DYR$mD7Cmc?Fg!^ud?X<$%%etAR34jfEWx?4=`T^G9G!lIEHAP zzdGR{CzGLo>vFN|o0Gq9nb6!(>LbQ|VNNP%qIJP}C98-wbx+=N{*Tr@cofO*Bxhf5 zbY}VL6AjM7G3|`cwQEX_Moq~&dtjrOZkDfsU7>Exi5~u5!8F6RoGOF+la`h?3g=$x z+UZ@sNi5;*>`zAh3QPilJ3g!n&zQB8yM5Wg0QpxJHXY@#pTn>BM47>`#dYH==`{?o zO3?@WxNP#m&)R8Z*yy#*epZ|)@4Wt}PHd0V1ir6a|EKzElzTsCx-Hpo{O$K#wphdF zcQVD(xdhWVBx@Qcu+FG$RXQ@WW}dR~zukq0Cu{=xR<*=6q9i4;B-JXpC>2OC7#SED z=o%R68X1Ndm|B?{SeY7W8yHv_7zpV;e}JMPH$NpatrE9}er2qf_?(Wsz-n6u|l!JqdVq$wi zN@^)FS^xk50001-q?~($dtz#0Qd&{~000Ye(r zA~tn^>IOc0HVx(C%>)jznFDkPstfd`GYGtgR@%gy@js9+ynjIHFE$)8N3n~k#Ay|? z77b0x1^8uupyLHV6|ptuGQF_n2*dHv*cqz=M(nN;_`n;Xf4GQq@9qIj**ixV9FLHJ zI3(Z;Lx8bf0kXCc8o>MIMvA!@@vnM%kZbHvF9WDc6Z{G;!Fo_Z@NGxr3PF8}}l07*qoM6N<$ Ef+e_whyVZp literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H{j^}rS4giG&k`w*PKr|3505KS(9$>x-WSsVNaSYKo zfA+#b-a`r^Yzbi*apEgdJNO=?RWux#E$$_C{_D=hGKSf^I>gfjD)`r4IkNa4`=?fM zjlV~yDo>kn&anB${p7qwi%mg6J9-b--4eP!|nM` zXkU37wLJ1G&|9h{t`Q|Ei6yC4$wjF^iowXh$UxV?P}j&X#K6?b)X>VnLfgQ=%D_Od g{_YnP4Y~O#nQ4`{H6$pddVoUE)78&qol`;+0Qeb`NdN!< diff --git a/graphics/door_anims/sootopolis_peaked_roof.png b/graphics/door_anims/sootopolis_peaked_roof.png index b4ccfb5f993ba33e06842e571e7cfb1813b871f5..7d8ea1f33e1710294ddbb02bdc8084127df55687 100644 GIT binary patch delta 306 zcmV-20nPri1HuB38Gi!+008Fy?~?!k05DKYR7G>er2qf_?(Wsz-n6u|l!JqdVq$wi zN@^)FS^xk50001-q?~($dtz#0Qd&{~000YeGj{qbeYWZzH=|4n+a07*qoM6N<$ Ef{~wn*#H0l literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H{k)<<(_Hcs7ogGU8*)`Ib6BqR&cj%`uKS-RQ+3|AySILRjRYAW@p9aNme!MOO(?^+g(!2R#k|F-J~a8}LS z!MKWNUdtY?>bAo|3t6r1YhWYqJ_cJ)z4*}Q$iB}FRzdh diff --git a/graphics/door_anims/trainer_hill_lobby_elevator.png b/graphics/door_anims/trainer_hill_lobby_elevator.png index aeb7eaf26050aff021cc812dde0faf71a994fab5..bdd1c3b271d0d3c4ddd895e12fa82735e2f33258 100644 GIT binary patch delta 214 zcmcb^^qg^mWIZzj1H-fb?C_g1^}vu%3o-_)eQb|>+}g##%UOlyuf zh9t5#ee~lw;!y*Z_VQ9VmcTvVi9@$9LB&ZT=}W=^UD1|`SOI^arBk!d&b%YHEeB{l NgQu&X%Q~loCIE-4SabjY literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H{HEZs8exQ&*a-v@uhz4Q>AO?ff1I$-}j1o^5#}JM4 z$ve1Nd3G;sFgd2B;m|Rsk*RHSxq`sK3U*eWr%y|3_2*5Wt}M~iRP;H{PDEr0JM+zN z>qm=0&Aagv_0?^NS>!)D{*4m{k_~tJlj6JY`&l`&{HXJ%)83q z!L)tN6@O*tePCo*^IE^XaJs4_(01GbWneJ>!!2N19Pgg&ebxsLQ0F3HsQ~&?~ diff --git a/graphics/door_anims/unused_battle_frontier.png b/graphics/door_anims/unused_battle_frontier.png new file mode 100644 index 0000000000000000000000000000000000000000..811c086a8f6b3c083105e8cfac0945035f7ce5af GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#Mp0H1W_v%`exQ&*a-v@uhz4Q>AO?ff1I$-}j76RX&+%m#oGVCoKb;3Bo7i_131i2m0Cs z70s)#OUzWg=GAAvCfE3$=BzVmp*x?Sd^7Fy$_FLSOO!YsJmhFN&A!7XYHxv;UCtHj zo_0pg@Mo9qAD+%RdP`(kYX@0Ff!0JFw`|N3^6dZGBvU? pFxECOure_C;cvu?q9HdwB{QuOw}wuku8p98@pScbS?83{1OV$lfhhn0 literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_expert/floor_0/collision.bin b/graphics/trainer_hill/maps_expert/floor_0/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..ca6e4ca28beaf070d34dedbd697149620da6ea68 GIT binary patch literal 32 ecmZo0f}Z{gu?&-0mT0byZ`_I literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin new file mode 100644 index 000000000..a89a14c69 --- /dev/null +++ b/graphics/trainer_hill/maps_expert/floor_1/metatiles.bin @@ -0,0 +1 @@ +1;;;9989:;;;‘FFFFFFFFFFFFFx‘F›|›››}›|›{›z›‘F}FFFFFFFFFFFF‘F›~›››}›~›³›››‘FFFFFFFFFFFFF›‘F›}›|›{›z›|›››‘F›FFFFFFFFFFFF‘F›|›}›~›››}›~›‘FFFFFFFFFFFFF³‘Ö–››–ÖÛÖ–››–Ö›Ö–››–ÖÛÛÛÖ–››–Ö–››–ÖÛÛÛÛÛÖ–››–Ö–››–ÖÛÛÛÖ–››–Ö‘Ö–››–ÖÛÖ–››–Ö› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/collision.bin b/graphics/trainer_hill/maps_expert/floor_2/collision.bin new file mode 100644 index 000000000..891a7f2c1 --- /dev/null +++ b/graphics/trainer_hill/maps_expert/floor_2/collision.bin @@ -0,0 +1 @@ +�áñù>ù>}~=x½=x}~y>ù>ñá \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin new file mode 100644 index 000000000..7164f059d --- /dev/null +++ b/graphics/trainer_hill/maps_expert/floor_2/metatiles.bin @@ -0,0 +1 @@ +ÑÛÛÛÙÙ˜™š›››ÑÛÛÛÕÕÃù†Ž•››››ÑÛÛÕËËËû‹‹‹•›››ÑÛÕËËËËû‹‹‹‹•››ÑÛËËËËËû‹‹‹‹‹››ÑÕËËËËËûŒ‹‹‹‹•›ÑËËËËÌÌûûŒ‹‹‹‹›ÑÌÌÌÌûõûõû‹‹‹‹›ÑÕÕÕÕûìûìû‹‹‹‹›ÑËËËËõõûûõ‹‹‹‹›ÑÌËËËËËûû‹‹‹‹Œ›ÑÛËËËËËûõ‹‹‹‹››ÑÛÌËËËËû‹‹‹‹Œ››ÑÛÛÌËËËû‹‹‹Œ›››ÑÛÛÛÌÌËûŒŒŒ››››ÑÛÛÛÛÛÌû››››››› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_expert/floor_3/collision.bin b/graphics/trainer_hill/maps_expert/floor_3/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..3d25428f1569114f61521dfb75a0b10efeaee5ba GIT binary patch literal 32 kcmZoFHg#WXcI6&M*f6*M(2iYam&WCO_n09tVcFaQ7m literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin b/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin new file mode 100644 index 000000000..f2200b713 --- /dev/null +++ b/graphics/trainer_hill/maps_expert/floor_3/metatiles.bin @@ -0,0 +1 @@ +1;;;9999:;;;–ûöýööûFûööýöû›û›ûöûûûFûûûöû›ûöû›ûûFF›FFûû›ûöýöû›F66›66F›ûöýöûûF›FFÛFF›FûûööûF6F›ÛÖÛ›F6FûöûûF6›ÛÖÖÖÛ›6Fûû–››››ÖÖ–ÖÖÛ›››–ûûF6›ÛÖÖÖÛ›6FûûöûF6F›ÛÖÛ›F6FûööûûF›FFÛFF›Fûûöýöû›F66›66F›ûöýöû›ûûFF›FFûû›ûöû›ûöûûûFûûûöû›û–ûöýööûFûööýöû› \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/collision.bin b/graphics/trainer_hill/maps_jp/floor_0/collision.bin new file mode 100644 index 000000000..817f4f54c --- /dev/null +++ b/graphics/trainer_hill/maps_jp/floor_0/collision.bin @@ -0,0 +1 @@ +�ÁoAcA`ADAUAUÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin new file mode 100644 index 000000000..8d1787efd --- /dev/null +++ b/graphics/trainer_hill/maps_jp/floor_0/metatiles.bin @@ -0,0 +1 @@ +155;&&%9:;;;1++;44++43????;1++;;;44;3???;;1++55555;3???;?1+444+44;,???;;1+;5;+;5;5;???;1+;+;+;+;+;???;14;+;4;+5+;;?;;1;;4;;;444?;;;? \ No newline at end of file diff --git a/graphics/trainer_hill/maps_jp/floor_1/collision.bin b/graphics/trainer_hill/maps_jp/floor_1/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..58f80b49bb1ab2c9e27f9e8c19f3cfa17b6dcdfe GIT binary patch literal 32 bcmZo?HC#Uv;AiWLNEXT<6#hZ literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin b/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin new file mode 100644 index 000000000..951723792 --- /dev/null +++ b/graphics/trainer_hill/maps_jp/floor_1/metatiles.bin @@ -0,0 +1 @@ +1;5;9&%9:;5;1;+;;+++++;;;+;1;+;;+++++>>;+;1;+;;+++++;;;+;?;+;;+++++;>>+;1;+;;++,++;;;+;1?+;;,,;,,>>;+;1;+5555;55555+;?;,,,,,;,,,,,,;1;??;55;55555551???;++5+++++++1??;;++++++++++1;;;?,,,,,,,,,, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/collision.bin b/graphics/trainer_hill/maps_normal/floor_0/collision.bin new file mode 100644 index 000000000..80213aaae --- /dev/null +++ b/graphics/trainer_hill/maps_normal/floor_0/collision.bin @@ -0,0 +1 @@ +�å?í½%„½ß!~A } ÷Aùyÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin new file mode 100644 index 000000000..658a5ace6 --- /dev/null +++ b/graphics/trainer_hill/maps_normal/floor_0/metatiles.bin @@ -0,0 +1 @@ +1;55&&%&:;5;1;,,,+$$$$,;;,;-;;;;+;;;;5;55;3;2!0+;2!0+;,+;35;;;,5;;;+;;+;4,;2!0+20;+20,;15;;5;,;;5,;;551,20+205;+2!0,,15;;+;;+;,;5;;;1,20+20+;20+20;1555+;;+;;5+;551+,,,20+20,,;,,1+;;5;;+;;5;;;;1,20+;;,20,20;51;;;,;;;;;;;;;, \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/collision.bin b/graphics/trainer_hill/maps_normal/floor_1/collision.bin new file mode 100644 index 000000000..fb3f6aec0 --- /dev/null +++ b/graphics/trainer_hill/maps_normal/floor_1/collision.bin @@ -0,0 +1 @@ +�ûs @ @ëQ‹S»Q‹QëQ‹Q»QPPÿÿ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin new file mode 100644 index 000000000..52af9cfdc --- /dev/null +++ b/graphics/trainer_hill/maps_normal/floor_1/metatiles.bin @@ -0,0 +1 @@ +ÑÕÕÕÙÙÅÆÎÕÛÕÑËÄÄÛÛÄÄÄÌÌÌËÛËÑËÛÛÛÛÛÛÛËÛËÑËÛÕÕÕÕÕßËÛËÑËÛËËËÄÄÛËÛËÑËÛËÛÛÄËËßÕÕËÛËÑËÛËÛÛÛËËÛÄÄËÛËÑËÛËÛÛÛËËÕÕßËÛËÑËÛËÛÛÛËËÄÄÛËÛËÑËÛËÛÛÛËËßÕÕËÛËÑËÛËÛÛÛÄÄÛÄÄÄÛËÑËÛË››››››ÛÕÕÕËÑÄÛËÛÛÛÛÛ›ÛËËËËÑÛÛËÛÛÛÛÛ›ÛËËËËÑÛÛÄÛÛÛÛÛ›ÛÄÄÄÄ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_2/collision.bin b/graphics/trainer_hill/maps_normal/floor_2/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..b3ccacdd4c25fee4cf227fac1346ee02b189d8c2 GIT binary patch literal 32 acmZoeskKr|x*BLe_r>jg#t literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin b/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin new file mode 100644 index 000000000..bf2b52c32 --- /dev/null +++ b/graphics/trainer_hill/maps_normal/floor_2/metatiles.bin @@ -0,0 +1 @@ +1555&&8&.55;icddddqqqrdddcsicssssssssssscsicssssssssssscsicCA@ABAAJBAAcsicsssssssdssscsicACKCCABB@A@csicssdsssssssscsicA@BBAABJBABcsicsssssssdssscsicABACKAAA@CAcsicssssdsssssscsicA@CABBAJBABcsidsssssssdsssdsiCCABBACAA@BABsiBsssssssssssBs \ No newline at end of file diff --git a/graphics/trainer_hill/maps_normal/floor_3/collision.bin b/graphics/trainer_hill/maps_normal/floor_3/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..f4c47254c56adb7e19d0d6ed491a13178b73c526 GIT binary patch literal 32 ncmZoUbL@H$@m!0ULkk4!I2@pp3%k8wKCK(G#-c@Lu*4B1sMhZ{|5lD4+_)( literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin b/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin new file mode 100644 index 000000000..66840137c --- /dev/null +++ b/graphics/trainer_hill/maps_unique/floor_3/metatiles.bin @@ -0,0 +1 @@ +ñûûûùùåæîõûûíõõõûûìììëìììûûôìììûûûûûëûûûûûñõõõõõõõûëûõõõõñëìììëììûìûììììñëûûûëûõûõûûûûûñëûõûëûëûëõõõûûñëûëûëûëûëìììûûñëûëûëûëûëûõõõõñëûëûëûëûëûììììñëûëûëûëûëûûûûûñëûëûëûëûëõõõõûñìûëûìûëûìììììûñûûëûûûëûûûûûûûñûûìûûûìûûûûûûû \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_0/collision.bin b/graphics/trainer_hill/maps_variety/floor_0/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..24fc2ea1e6b203d760a554f6b02de209bdeadb1e GIT binary patch literal 32 McmZo+m literal 0 HcmV?d00001 diff --git a/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin b/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin new file mode 100644 index 000000000..c5a9aa5d4 --- /dev/null +++ b/graphics/trainer_hill/maps_variety/floor_1/metatiles.bin @@ -0,0 +1 @@ +1;;;9989:;;;‘›œ–@@–›–@@–›œ›œ›–@ÛÛ@–@ÛÛB–››‘–@ÛÛÛÛÛÛÛÛÛB–œ‘BÛÛÖÖÖÛÖÖÖÛÛB›–BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÖÖÖÖÖÖÖÖÖÛB––BÛÛÖÖÖÖÖÖÖÛÛB–‘–BÛÛÖÖÖÖÖÛÛB–›‘›–BÛÛÖÖÖÛÛB–›œœ››–BÛÛÖÛÛB–›››–›››–AÛÛÛB–››œ–Ö–œ››–AÛB–›››–֖֜›œ›–@–›œ›–Öœ \ No newline at end of file diff --git a/graphics/trainer_hill/maps_variety/floor_2/collision.bin b/graphics/trainer_hill/maps_variety/floor_2/collision.bin new file mode 100644 index 0000000000000000000000000000000000000000..606249b2a0085c18fc9fea19f02a98713c93233a GIT binary patch literal 32 RcmZodata[3] = gBattleAnimArgs[3]; sprite->callback = AnimOverheatFlame_Step; for (i = 0; i < 7; i++) - gUnusedOverheatData[i] = sprite->data[i]; + sUnusedOverheatData[i] = sprite->data[i]; } static void AnimOverheatFlame_Step(struct Sprite *sprite) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index d460b9236..c590572b9 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -128,7 +128,7 @@ static void AnimHornHit_Step(struct Sprite *); static void AnimSuperFang(struct Sprite *); static void AnimWavyMusicNotes(struct Sprite *); static void AnimWavyMusicNotes_Step(struct Sprite *); -static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); static void AnimFlyingMusicNotes(struct Sprite *); static void AnimFlyingMusicNotes_Step(struct Sprite *); static void AnimBellyDrumHand(struct Sprite *); @@ -4343,7 +4343,7 @@ static void AnimLockOnTarget_Step4(struct Sprite* sprite) sprite->data[1] = 0; } - BlendPalettes(GetBattleBgPalettesMask(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB(31, 31, 31)); + BlendPalettes(GetBattlePalettesMask(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE), sprite->data[1], RGB(31, 31, 31)); if (sprite->data[1] == 16) { int pal; @@ -4998,7 +4998,7 @@ static void AnimMoonlightSparkle_Step(struct Sprite* sprite) void AnimTask_MoonlightEndFade(u8 taskId) { - int a = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; int b; int c; int d; @@ -5279,79 +5279,87 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) DestroyAnimVisualTask(taskId); } +#define sMoveTimer data[0] +#define sBlendTableIdx data[1] +#define sBlendTimer data[2] +#define sBlendCycleTime data[3] +#define sX data[4] +#define sY data[5] +#define sVelocX data[6] +#define sVelocY data[7] + static void AnimWavyMusicNotes(struct Sprite* sprite) { u8 index; - u8 a; - u8 b; + u8 x, y; SetSpriteCoordsToAnimAttackerCoords(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = 0; - sprite->data[3] = gBattleAnimArgs[2]; + sprite->sBlendTableIdx = gBattleAnimArgs[1]; + sprite->sBlendTimer = 0; + sprite->sBlendCycleTime = gBattleAnimArgs[2]; if (IsContest()) { - a = 48; - b = 40; + x = 48; + y = 40; } else { - a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->data[4] = sprite->x << 4; - sprite->data[5] = sprite->y << 4; - AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40); + sprite->sX = sprite->x << 4; + sprite->sY = sprite->y << 4; + AnimWavyMusicNotes_CalcVelocity(x - sprite->x, y - sprite->y, &sprite->sVelocX, &sprite->sVelocY, 40); sprite->callback = AnimWavyMusicNotes_Step; } -static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16* c, s16* d, s8 e) +static void AnimWavyMusicNotes_CalcVelocity(s16 x, s16 y, s16* velocX, s16* velocY, s8 xSpeedFactor) { - int f; - int g; - if (a < 0) - e = -e; + int x2; + int time; + if (x < 0) + xSpeedFactor = -xSpeedFactor; - f = a << 8; - g = f / e; - if (g == 0) - g = 1; + x2 = x * 256; + time = x2 / xSpeedFactor; + if (time == 0) + time = 1; - *c = f / g; - *d = (b << 8) / g; + *velocX = x2 / time; + *velocY = (y * 256) / time; } static void AnimWavyMusicNotes_Step(struct Sprite* sprite) { - s16 y, yDelta; + s16 y, trigIdx; u8 index; - sprite->data[0]++; - yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->x = sprite->data[4] >> 4; - sprite->y = sprite->data[5] >> 4; - sprite->y2 = Sin(yDelta, 15); + sprite->sMoveTimer++; + trigIdx = sprite->sMoveTimer * 5 - ((sprite->sMoveTimer * 5 / 256) << 8); + sprite->sX += sprite->sVelocX; + sprite->sY += sprite->sVelocY; + sprite->x = sprite->sX >> 4; + sprite->y = sprite->sY >> 4; + sprite->y2 = Sin(trigIdx, 15); y = sprite->y; - if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128) + if (sprite->x < -16 || sprite->x > DISPLAY_WIDTH + 16 || y < -16 || y > DISPLAY_HEIGHT - 32) { DestroySpriteAndMatrix(sprite); } else { - if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + if (sprite->sBlendCycleTime && ++sprite->sBlendTimer > sprite->sBlendCycleTime) { - sprite->data[2] = 0; - if (++sprite->data[1] > 3) - sprite->data[1] = 0; + sprite->sBlendTimer = 0; + if (++sprite->sBlendTableIdx > (int)ARRAY_COUNT(gParticlesColorBlendTable) - 1) + sprite->sBlendTableIdx = 0; - index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->data[1]][0]); + index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[sprite->sBlendTableIdx][0]); if (index != 0xFF) sprite->oam.paletteNum = index; } @@ -5467,7 +5475,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) static void AnimThoughtBubble(struct Sprite* sprite) { - u8 a; + u8 animNum; u8 battler; if (gBattleAnimArgs[0] == 0) battler = gBattleAnimAttacker; @@ -5475,10 +5483,10 @@ static void AnimThoughtBubble(struct Sprite* sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = a + 2; - StartSpriteAnim(sprite, a); + sprite->data[1] = animNum + 2; + StartSpriteAnim(sprite, animNum); StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); sprite->callback = RunStoredCallbackWhenAnimEnds; } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 101b255df..9764d5522 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3116,7 +3116,7 @@ static void AnimTask_FakeOut_Step2(u8 taskId) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); + BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB(31, 31, 31)); } else if (gTasks[taskId].data[10] > 4) { diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index f73393de4..3b4f6729f 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1213,7 +1213,7 @@ void AnimTask_SmokescreenImpact(u8 taskId) SmokescreenImpact( GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, - 0); + FALSE); DestroyAnimVisualTask(taskId); } @@ -3717,6 +3717,26 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1; } +#define IDX_ACTIVE_SPRITES 2 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_SquishAndSweatDroplets +#define tState data[0] +#define tTimer data[1] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tNumSquishes data[3] +#define tBaseX data[4] +#define tBaseY data[5] +#define tSubpriority data[6] +// data[7]-data[15] used by PrepareAffineAnimInTaskData +#define tBattlerSpriteId data[15] + +// Sprite data for AnimFacadeSweatDrop +#define sTimer data[0] +#define sVelocX data[1] +#define sVelocY data[2] +#define sTaskId data[3] +#define sActiveSpritesIdx data[4] + // Squishes the mon vertically and emits sweat droplets a few times. // arg 0: battler // arg 1: num squishes @@ -3728,20 +3748,20 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) if (!gBattleAnimArgs[1]) DestroyAnimVisualTask(taskId); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = gBattleAnimArgs[1]; + task->tState = 0; + task->tTimer = 0; + task->tActiveSprites = 0; + task->tNumSquishes = gBattleAnimArgs[1]; if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); - task->data[6] = GetBattlerSpriteSubpriority(battler); - task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); + task->tBaseX = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->tSubpriority = GetBattlerSpriteSubpriority(battler); + task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); task->func = AnimTask_SquishAndSweatDroplets_Step; } @@ -3749,37 +3769,40 @@ static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - task->data[1]++; - if (task->data[1] == 6) + task->tTimer++; + if (task->tTimer == 6) CreateSweatDroplets(taskId, TRUE); - if (task->data[1] == 18) + if (task->tTimer == 18) CreateSweatDroplets(taskId, FALSE); if (!RunAffineAnimFromTaskData(task)) { - if (--task->data[3] == 0) + if (--task->tNumSquishes == 0) { - task->data[0]++; + // Animation is finished + task->tState++; } else { - task->data[1] = 0; - PrepareAffineAnimInTaskData(task, task->data[15], gFacadeSquishAffineAnimCmds); + // Animation continues, more droplet sprites to create + task->tTimer = 0; + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, gFacadeSquishAffineAnimCmds); } } break; case 1: - if (task->data[2] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void CreateSweatDroplets(u8 taskId, bool8 arg1) +static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) { u8 i; s8 xOffset, yOffset; @@ -3788,7 +3811,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) s16 yCoords[2]; task = &gTasks[taskId]; - if (!arg1) + if (!lowerDroplets) { xOffset = 18; yOffset = -20; @@ -3799,39 +3822,54 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) yOffset = 20; } - xCoords[0] = task->data[4] - xOffset; - xCoords[1] = task->data[4] - xOffset - 4; - xCoords[2] = task->data[4] + xOffset; - xCoords[3] = task->data[4] + xOffset + 4; - yCoords[0] = task->data[5] + yOffset; - yCoords[1] = task->data[5] + yOffset + 6; + xCoords[0] = task->tBaseX - xOffset; + xCoords[1] = task->tBaseX - xOffset - 4; + xCoords[2] = task->tBaseX + xOffset; + xCoords[3] = task->tBaseX + xOffset + 4; + yCoords[0] = task->tBaseY + yOffset; + yCoords[1] = task->tBaseY + yOffset + 6; for (i = 0; i < 4; i++) { - u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->tSubpriority - 5); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = i < 2 ? -2 : 2; - gSprites[spriteId].data[2] = -1; - gSprites[spriteId].data[3] = taskId; - gSprites[spriteId].data[4] = 2; - task->data[2]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sVelocX = i < 2 ? -2 : 2; // First two travel left, remaining travel right + gSprites[spriteId].sVelocY = -1; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } } static void AnimFacadeSweatDrop(struct Sprite *sprite) { - sprite->x += sprite->data[1]; - sprite->y += sprite->data[2]; - if (++sprite->data[0] > 6) + sprite->x += sprite->sVelocX; + sprite->y += sprite->sVelocY; + if (++sprite->sTimer > 6) { - gTasks[sprite->data[3]].data[sprite->data[4]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tActiveSprites +#undef tNumSquishes +#undef tBaseX +#undef tBaseY +#undef tSubpriority +#undef tBattlerSpriteId +#undef sTimer +#undef sVelocX +#undef sVelocY +#undef sTaskId +#undef sActiveSpritesIdx + // Blends the mon sprite's color with a rotating set of colors. // arg 0: battler // arg 1: duration @@ -3927,6 +3965,26 @@ static void AnimRoarNoiseLine_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } +#define IDX_ACTIVE_SPRITES 10 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_GlareEyeDots +#define tState data[0] +#define tTimer data[1] +#define tPairNum data[2] +#define tPairMax data[5] +#define tDotOffset data[6] +#define tIsContest data[7] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tStartX data[11] +#define tStartY data[12] +#define tEndX data[13] +#define tEndY data[14] + +// Sprite data for AnimGlareEyeDot +#define sTimer data[0] +#define sTaskId data[1] +#define sActiveSpritesIdx data[2] + // Makes a series of dots in a trail from the attacker to the target. // arg 0: unused void AnimTask_GlareEyeDots(u8 taskId) @@ -3935,25 +3993,25 @@ void AnimTask_GlareEyeDots(u8 taskId) if (IsContest()) { - task->data[5] = 8; - task->data[6] = 3; - task->data[7] = 1; + task->tPairMax = 8; + task->tDotOffset = 3; + task->tIsContest = TRUE; } else { - task->data[5] = 12; - task->data[6] = 3; - task->data[7] = 0; + task->tPairMax = 12; + task->tDotOffset = 3; + task->tIsContest = FALSE; } if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->tStartY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tEndX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->tEndY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); task->func = AnimTask_GlareEyeDots_Step; } @@ -3963,103 +4021,122 @@ static void AnimTask_GlareEyeDots_Step(u8 taskId) s16 x, y; struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 3) + // Wait to create next pair of dots + if (++task->tTimer > 3) { - task->data[1] = 0; + task->tTimer = 0; GetGlareEyeDotCoords( - task->data[11], - task->data[12], - task->data[13], - task->data[14], - task->data[5], - task->data[2], + task->tStartX, + task->tStartY, + task->tEndX, + task->tEndY, + task->tPairMax, + task->tPairNum, &x, &y); + // Create dot pair for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); if (spriteId != MAX_SPRITES) { - if (task->data[7] == 0) + if (!task->tIsContest) { if (i == 0) - gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->tDotOffset; else - gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->tDotOffset; } else { if (i == 0) { - gSprites[spriteId].x2 = -task->data[6]; - gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = -task->tDotOffset; + gSprites[spriteId].y2 = task->tDotOffset; } else { - gSprites[spriteId].x2 = task->data[6]; - gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = task->tDotOffset; + gSprites[spriteId].y2 = -task->tDotOffset; } } - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = taskId; - gSprites[spriteId].data[2] = 10; - task->data[10]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } - if (task->data[2] == task->data[5]) - task->data[0]++; + if (task->tPairNum == task->tPairMax) + task->tState++; - task->data[2]++; + task->tPairNum++; } break; case 1: - if (task->data[10] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) +static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 pairMax, u8 pairNum, s16 *x, s16 *y) { int x2; int y2; - if (arg5 == 0) + if (pairNum == 0) { - *x = arg0; - *y = arg1; + *x = startX; + *y = startY; return; } - if (arg5 >= arg4) + if (pairNum >= pairMax) { - *x = arg2; - *y = arg3; + *x = endX; + *y = endY; return; } - arg4--; - x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); - y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); + pairMax--; + x2 = (startX << 8) + pairNum * (((endX - startX) << 8) / pairMax); + y2 = (startY << 8) + pairNum * (((endY - startY) << 8) / pairMax); *x = x2 >> 8; *y = y2 >> 8; } static void AnimGlareEyeDot(struct Sprite *sprite) { - if (++sprite->data[0] > 36) + if (++sprite->sTimer > 36) { - gTasks[sprite->data[1]].data[sprite->data[2]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tPairNum +#undef tPairMax +#undef tDotOffset +#undef tIsContest +#undef tActiveSprites +#undef tStartX +#undef tStartY +#undef tEndX +#undef tEndY +#undef sTimer +#undef sTaskId +#undef sActiveSpritesIdx + // Moves a pawprint in a straight line. // arg 0: initial x position // arg 1: initial y position diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 8ecb60713..b523a3771 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -26,18 +26,18 @@ static void AnimFireCross(struct Sprite *); static void AnimFireSpiralOutward(struct Sprite *); static void AnimFireSpiralOutward_Step1(struct Sprite *); static void AnimFireSpiralOutward_Step2(struct Sprite *); -static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); -static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3); +static void AnimTask_EruptionLaunchRocks_Step(u8); +static void CreateEruptionLaunchRocks(u8, u8, u8); static void AnimEruptionLaunchRock(struct Sprite *); -static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId); -static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y); +static u16 GetEruptionLaunchRockInitialYPos(u8); +static void InitEruptionLaunchRockCoordData(struct Sprite *, s16, s16); static void UpdateEruptionLaunchRockPos(struct Sprite *); static void AnimEruptionFallingRock(struct Sprite *); static void AnimEruptionFallingRock_Step(struct Sprite *); static void AnimWillOWispOrb(struct Sprite *); static void AnimWillOWispOrb_Step(struct Sprite *); static void AnimWillOWispFire(struct Sprite *); -static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId); +static void AnimTask_MoveHeatWaveTargets_Step(u8); static const union AnimCmd sAnim_FireSpiralSpread_0[] = { @@ -355,7 +355,7 @@ const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate = .callback = AnimEruptionLaunchRock, }; -static const s16 sEruptionLaunchRockCoords[][2] = +static const s16 sEruptionLaunchRockSpeeds[][2] = { {-2, -5}, {-1, -1}, @@ -770,22 +770,43 @@ static void AnimFireSpiralOutward_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } +#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites + +#define tState data[0] +#define tTimer1 data[1] +#define tTimer2 data[2] +#define tTimer3 data[3] +#define tAttackerY data[4] +#define tAttackerSide data[5] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +// data[8]-data[15] used by PrepareEruptAnimTaskData / UpdateEruptAnimTask +#define tAttackerSpriteId data[15] + +#define sSpeedDelay data[0] +#define sLaunchStage data[1] +#define sX data[2] +#define sY data[3] +#define sSpeedX data[4] +#define sSpeedY data[5] +#define sTaskId data[6] +#define sActiveSpritesIdx data[7] + // Animates first stage of Eruption where the attacker squishes and launches rocks away from themself void AnimTask_EruptionLaunchRocks(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = gSprites[task->data[15]].y; - task->data[5] = GetBattlerSide(gBattleAnimAttacker); - task->data[6] = 0; + task->tState = 0; + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tAttackerY = gSprites[task->tAttackerSpriteId].y; + task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker); + task->tActiveSprites = 0; - PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); + PrepareBattlerSpriteForRotScale(task->tAttackerSpriteId, ST_OAM_OBJ_NORMAL); task->func = AnimTask_EruptionLaunchRocks_Step; } @@ -794,102 +815,102 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - PrepareEruptAnimTaskData(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 32); - task->data[0]++; + PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32); + task->tState++; case 1: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; + task->tTimer1 = 0; - if (++task->data[2] & 0x1) - gSprites[task->data[15]].x2 = 3; + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].x2 = 3; else - gSprites[task->data[15]].x2 = -3; + gSprites[task->tAttackerSpriteId].x2 = -3; } - if (task->data[5] != B_SIDE_PLAYER) + if (task->tAttackerSide != B_SIDE_PLAYER) { - if (++task->data[3] > 4) + if (++task->tTimer3 > 4) { - task->data[3] = 0; - gSprites[task->data[15]].y++; + task->tTimer3 = 0; + gSprites[task->tAttackerSpriteId].y++; } } if(!UpdateEruptAnimTask(task)) { - SetBattlerSpriteYOffsetFromYScale(task->data[15]); - gSprites[task->data[15]].x2 = 0; + SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId); + gSprites[task->tAttackerSpriteId].x2 = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[0]++; + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 2: - if (++task->data[1] > 4) + if (++task->tTimer1 > 4) { - if (task->data[5] != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 6); + if (task->tAttackerSide != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6); else - PrepareEruptAnimTaskData(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 6); + PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6); - task->data[1] = 0; - task->data[0]++; + task->tTimer1 = 0; + task->tState++; } break; case 3: if (!UpdateEruptAnimTask(task)) { - CreateEruptionLaunchRocks(task->data[15], taskId, 6); - task->data[0]++; + CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES); + task->tState++; } break; case 4: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; + task->tTimer1 = 0; - if (++task->data[2] & 1) - gSprites[task->data[15]].y2 += 3; + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 += 3; else - gSprites[task->data[15]].y2 -= 3; + gSprites[task->tAttackerSpriteId].y2 -= 3; } - if (++task->data[3] > 0x18) + if (++task->tTimer3 > 24) { - if (task->data[5] != B_SIDE_PLAYER) - PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 8); + if (task->tAttackerSide != B_SIDE_PLAYER) + PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8); else - PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 8); + PrepareEruptAnimTaskData(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8); - if (task->data[2] & 1) - gSprites[task->data[15]].y2 -= 3; + if (task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 -= 3; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[0]++; + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 5: - if (task->data[5] != B_SIDE_PLAYER) - gSprites[task->data[15]].y--; + if (task->tAttackerSide != B_SIDE_PLAYER) + gSprites[task->tAttackerSpriteId].y--; if (!UpdateEruptAnimTask(task)) { - gSprites[task->data[15]].y = task->data[4]; - ResetSpriteRotScale(task->data[15]); - task->data[2] = 0; - task->data[0]++; + gSprites[task->tAttackerSpriteId].y = task->tAttackerY; + ResetSpriteRotScale(task->tAttackerSpriteId); + task->tTimer2 = 0; + task->tState++; } break; case 6: - if (!task->data[6]) + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; default: @@ -897,7 +918,7 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) } } -static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3) +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx) { u16 i, j; s8 sign; @@ -907,12 +928,12 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3) if(!GetBattlerSide(gBattleAnimAttacker)) { - x -= 0xC; + x -= 12; sign = 1; } else { - x += 0x10; + x += 16; sign = -1; } @@ -920,18 +941,18 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3) { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); - if (spriteId != 0x40) + if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.tileNum += j * 4 + 0x40; if (++j >= 5) j = 0; - InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]); - gSprites[spriteId].data[6] = taskId; - gSprites[spriteId].data[7] = a3; + InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]); + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx; - gTasks[taskId].data[a3]++; + gTasks[taskId].data[activeSpritesIdx]++; } } } @@ -942,7 +963,7 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite) if (sprite->invisible) { - gTasks[sprite->data[6]].data[sprite->data[7]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } @@ -959,46 +980,71 @@ static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) return y; } -static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y) +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY) { - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = (u16)sprite->x * 8; - sprite->data[3] = (u16)sprite->y * 8; - sprite->data[4] = x * 8; - sprite->data[5] = y * 8; + sprite->sSpeedDelay = 0; + sprite->sLaunchStage = 0; + sprite->sX = (u16)sprite->x * 8; + sprite->sY = (u16)sprite->y * 8; + sprite->sSpeedX = speedX * 8; + sprite->sSpeedY = speedY * 8; } static void UpdateEruptionLaunchRockPos(struct Sprite *sprite) { - int var1; - if (++sprite->data[0] > 2) + int extraLaunchSpeed; + if (++sprite->sSpeedDelay > 2) { - sprite->data[0] = 0; - ++sprite->data[1]; - var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; - sprite->data[3] += var1; + sprite->sSpeedDelay = 0; + ++sprite->sLaunchStage; + extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage; + sprite->sY += extraLaunchSpeed; } - sprite->data[2] += sprite->data[4]; - sprite->x = sprite->data[2] >> 3; - sprite->data[3] += sprite->data[5]; - sprite->y = sprite->data[3] >> 3; + sprite->sX += sprite->sSpeedX; + sprite->x = sprite->sX >> 3; + sprite->sY += sprite->sSpeedY; + sprite->y = sprite->sY >> 3; - if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120) + if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120) sprite->invisible = TRUE; } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer1 +#undef tTimer2 +#undef tTimer3 +#undef tAttackerY +#undef tAttackerSide +#undef tActiveSprites +#undef tAttackerSpriteId +#undef sSpeedDelay +#undef sLaunchStage +#undef sX +#undef sY +#undef sSpeedX +#undef sSpeedY +#undef sTaskId +#undef sActiveSpritesIdx + +#define sState data[0] +#define sBounceTimer data[1] +#define sBounceDir data[2] +#define sEndTimer data[3] +#define sFallDelay data[6] +#define sTargetY data[7] + static void AnimEruptionFallingRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; + sprite->sState = 0; + sprite->sBounceTimer = 0; + sprite->sBounceDir = 0; + sprite->sFallDelay = gBattleAnimArgs[2]; + sprite->sTargetY = gBattleAnimArgs[3]; sprite->oam.tileNum += gBattleAnimArgs[4] * 16; sprite->callback = AnimEruptionFallingRock_Step; @@ -1006,47 +1052,51 @@ static void AnimEruptionFallingRock(struct Sprite *sprite) static void AnimEruptionFallingRock_Step(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: - if (sprite->data[6] != 0) + // Wait to begin falling + if (sprite->sFallDelay != 0) { - sprite->data[6]--; + sprite->sFallDelay--; return; } - sprite->data[0]++; + sprite->sState++; // fall through case 1: + // Rock is falling sprite->y += 8; - if (sprite->y >= sprite->data[7]) + if (sprite->y >= sprite->sTargetY) { - sprite->y = sprite->data[7]; - sprite->data[0]++; + sprite->y = sprite->sTargetY; + sprite->sState++; } break; case 2: - if (++sprite->data[1] > 1) + // Bounce up and down on landing spot + if (++sprite->sBounceTimer > 1) { - sprite->data[1] = 0; - if ((++sprite->data[2] & 1) != 0) - { + sprite->sBounceTimer = 0; + if ((++sprite->sBounceDir & 1) != 0) sprite->y2 = -3; - } else - { sprite->y2 = 3; - } } - if (++sprite->data[3] > 16) - { + if (++sprite->sEndTimer > 16) DestroyAnimSprite(sprite); - } break; } } +#undef sState +#undef sBounceTimer +#undef sBounceDir +#undef sEndTimer +#undef sFallDelay +#undef sTargetY + static void AnimWillOWispOrb(struct Sprite *sprite) { switch (sprite->data[0]) diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 02b89b965..a59e54900 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -653,9 +653,9 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) startLine = 0; if (position == 1) - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, 1); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); else - task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, 1); + task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, SCANLINE_EFFECT_REG_BG2HOFS, TRUE); task->data[15]++; break; @@ -1004,7 +1004,7 @@ static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId) right = DISPLAY_WIDTH; top = 0; bottom = 112; - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2; } diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index a03196ee1..2fbe858d7 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -908,13 +908,17 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } +#define BG_ANIM_PAL_1 8 +#define BG_ANIM_PAL_2 9 +#define BG_ANIM_PAL_CONTEST 14 + void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { if (IsContest()) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = 14; + out->paletteId = BG_ANIM_PAL_CONTEST; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -923,7 +927,7 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = 8; + out->paletteId = BG_ANIM_PAL_1; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; @@ -936,7 +940,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = 14; + out->paletteId = BG_ANIM_PAL_CONTEST; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; @@ -949,7 +953,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId) { out->bgTiles = gBattleAnimBgTileBuffer; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; - out->paletteId = 9; + out->paletteId = BG_ANIM_PAL_2; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -962,21 +966,21 @@ void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battlerId) out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; if (IsContest()) { - out->paletteId = 14; + out->paletteId = BG_ANIM_PAL_CONTEST; out->bgId = 1; out->tilesOffset = 0; out->unused = 0; } else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - out->paletteId = 8; + out->paletteId = BG_ANIM_PAL_1; out->bgId = 1; out->tilesOffset = 0x200; out->unused = 0; } else { - out->paletteId = 9; + out->paletteId = BG_ANIM_PAL_2; out->bgId = 2; out->tilesOffset = 0x300; out->unused = 0; @@ -1361,14 +1365,14 @@ void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static u16 ArcTan2_(s16 a, s16 b) +static u16 ArcTan2_(s16 x, s16 y) { - return ArcTan2(a, b); + return ArcTan2(x, y); } -u16 ArcTan2Neg(s16 a, s16 b) +u16 ArcTan2Neg(s16 x, s16 y) { - u16 var = ArcTan2_(a, b); + u16 var = ArcTan2_(x, y); return -var; } @@ -1401,7 +1405,7 @@ void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7) +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2) { u32 selectedPalettes = 0; u32 shift; @@ -1409,7 +1413,7 @@ u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 atta if (battleBackground) { if (!IsContest()) - selectedPalettes = 0xe; + selectedPalettes = 0xe; // Palettes 1, 2, and 3 else selectedPalettes = 1 << GetBattleBgPaletteNum(); } @@ -1439,17 +1443,17 @@ u32 GetBattleBgPalettesMask(u8 battleBackground, u8 attacker, u8 target, u8 atta selectedPalettes |= 1 << shift; } } - if (a6) + if (anim1) { if (!IsContest()) - selectedPalettes |= 0x100; + selectedPalettes |= 1 << BG_ANIM_PAL_1; else - selectedPalettes |= 0x4000; + selectedPalettes |= 1 << BG_ANIM_PAL_CONTEST; } - if (a7) + if (anim2) { if (!IsContest()) - selectedPalettes |= 0x200; + selectedPalettes |= 1 << BG_ANIM_PAL_2; } return selectedPalettes; } diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index ebf9a588f..a92428f83 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -304,7 +304,7 @@ static void AnimConfusionDuck_Step(struct Sprite *sprite) // arg 4: blend color static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = TRUE; sprite->callback = AnimSimplePaletteBlend_Step; @@ -312,23 +312,23 @@ static void AnimSimplePaletteBlend(struct Sprite *sprite) // Unpacks a bitfield and returns a bitmask of its selected palettes. // Bits 0-6 of the selector parameter result in the following palettes being selected: -// 0: battle background palettes (BG palettes 1, 2, and 3) -// 1: gBattleAnimAttacker OBJ palette -// 2: gBattleAnimTarget OBJ palette -// 3: gBattleAnimAttacker partner OBJ palette -// 4: gBattleAnimTarget partner OBJ palette -// 5: BG palette 4 -// 6: BG palette 5 -u32 UnpackSelectedBattleBgPalettes(s16 selector) +// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3) +// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette +// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette +// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette +// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette +// 5: F_PAL_ANIM_1, BG palette 8 (or 14, if in Contest) +// 6: F_PAL_ANIM_2, BG palette 9 +u32 UnpackSelectedBattlePalettes(s16 selector) { - u8 battleBackground = selector & 1; - u8 attacker = (selector >> 1) & 1; - u8 target = (selector >> 2) & 1; - u8 attackerPartner = (selector >> 3) & 1; - u8 targetPartner = (selector >> 4) & 1; - u8 arg5 = (selector >> 5) & 1; - u8 arg6 = (selector >> 6) & 1; - return GetBattleBgPalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); + bool8 battleBackground = selector & 1; + bool8 attacker = (selector >> 1) & 1; + bool8 target = (selector >> 2) & 1; + bool8 attackerPartner = (selector >> 3) & 1; + bool8 targetPartner = (selector >> 4) & 1; + bool8 anim1 = (selector >> 5) & 1; + bool8 anim2 = (selector >> 6) & 1; + return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2); } static void AnimSimplePaletteBlend_Step(struct Sprite *sprite) @@ -350,7 +350,7 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = TRUE; sprite->callback = AnimComplexPaletteBlend_Step1; @@ -375,7 +375,7 @@ static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite) return; } - selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -392,7 +392,7 @@ static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite) if (!gPaletteFade.active) { - selectedPalettes = UnpackSelectedBattleBgPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } @@ -442,7 +442,7 @@ void AnimTask_BlendColorCycle(u8 taskId) static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gTasks[taskId].tPalSelector); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector); BeginNormalPaletteFade( selectedPalettes, gTasks[taskId].tDelay, @@ -721,7 +721,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index a7faa7658..aebf76cc0 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -583,9 +583,9 @@ static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - int arg3 = gBattleAnimArgs[3]; + bool32 ignoreOffsets = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (arg3 == 0) + if (!ignoreOffsets) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index 0819796d2..c7be8d41c 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -7,8 +7,13 @@ #include "util.h" #include "constants/battle_palace.h" -static void SmokescreenImpact_Callback(struct Sprite *); -static void SpriteCB_DestroySprite(struct Sprite *sprite); +#define TAG_SMOKESCREEN 55019 + +#define PALTAG_SHADOW 55039 +#define GFXTAG_SHADOW 55129 + +static void SpriteCB_SmokescreenImpactMain(struct Sprite *); +static void SpriteCB_SmokescreenImpact(struct Sprite *); // The below data for smokescreen starts and ends with some data that belongs to battle_gfx_sfx_util.c @@ -43,12 +48,12 @@ const u8 gBattlePalaceNatureToMoveTarget[NUM_NATURES] = static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = { - .data = gSmokescreenImpactTiles, .size = 0x180, .tag = 55019 + .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN }; static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = { - .data = gSmokescreenImpactPalette, .tag = 55019 + .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN }; static const struct OamData sOamData_SmokescreenImpact = @@ -110,18 +115,18 @@ static const union AnimCmd *const sAnims_SmokescreenImpact[] = static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate = { - .tileTag = 55019, - .paletteTag = 55019, + .tileTag = TAG_SMOKESCREEN, + .paletteTag = TAG_SMOKESCREEN, .oam = &sOamData_SmokescreenImpact, .anims = sAnims_SmokescreenImpact, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_DestroySprite + .callback = SpriteCB_SmokescreenImpact }; const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow = { - .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = 55129 + .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW }; static const struct OamData sOamData_EnemyShadow = @@ -143,8 +148,8 @@ static const struct OamData sOamData_EnemyShadow = const struct SpriteTemplate gSpriteTemplate_EnemyShadow = { - .tileTag = 55129, - .paletteTag = 55039, + .tileTag = GFXTAG_SHADOW, + .paletteTag = PALTAG_SHADOW, .oam = &sOamData_EnemyShadow, .anims = gDummySpriteAnimTable, .images = NULL, @@ -152,7 +157,12 @@ const struct SpriteTemplate gSpriteTemplate_EnemyShadow = .callback = SpriteCB_SetInvisible }; -u8 SmokescreenImpact(s16 x, s16 y, u8 a3) +#define sActiveSprites data[0] +#define sPersist data[1] + +#define sMainSpriteId data[0] + +u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) { u8 mainSpriteId; u8 spriteId1, spriteId2, spriteId3, spriteId4; @@ -164,54 +174,58 @@ u8 SmokescreenImpact(s16 x, s16 y, u8 a3) LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); } - mainSpriteId = CreateInvisibleSpriteWithCallback(SmokescreenImpact_Callback); + mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); mainSprite = &gSprites[mainSpriteId]; - mainSprite->data[1] = a3; + mainSprite->sPersist = persist; + // Top left sprite spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); - gSprites[spriteId1].data[0] = mainSpriteId; - mainSprite->data[0]++; + gSprites[spriteId1].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; AnimateSprite(&gSprites[spriteId1]); + // Top right sprite spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2); - gSprites[spriteId2].data[0] = mainSpriteId; - mainSprite->data[0]++; + gSprites[spriteId2].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId2], 1); AnimateSprite(&gSprites[spriteId2]); + // Bottom left sprite spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2); - gSprites[spriteId3].data[0] = mainSpriteId; - mainSprite->data[0]++; + gSprites[spriteId3].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId3], 2); AnimateSprite(&gSprites[spriteId3]); + // Bottom right sprite spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2); - gSprites[spriteId4].data[0] = mainSpriteId; - mainSprite->data[0]++; + gSprites[spriteId4].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId4], 3); AnimateSprite(&gSprites[spriteId4]); return mainSpriteId; } -static void SmokescreenImpact_Callback(struct Sprite *sprite) +static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite) { - if (!sprite->data[0]) + if (sprite->sActiveSprites == 0) { FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag); FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag); - if (!sprite->data[1]) + if (!sprite->sPersist) DestroySprite(sprite); else sprite->callback = SpriteCallbackDummy; } } -static void SpriteCB_DestroySprite(struct Sprite *sprite) +static void SpriteCB_SmokescreenImpact(struct Sprite *sprite) { if (sprite->animEnded) { - gSprites[sprite->data[0]].data[0]--; + gSprites[sprite->sMainSpriteId].sActiveSprites--; DestroySprite(sprite); } } diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index 6b14d3863..f329ea210 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -135,10 +135,12 @@ void SoundTask_PlayCryHighPitch(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - #ifndef UBFIX + // Destroying the task twice (here and at end of function) + // results in an incorrect value for gAnimVisualTaskCount + #ifndef BUGFIX else - DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. - #endif + DestroyAnimVisualTask(taskId); + #endif } else { @@ -181,10 +183,12 @@ void SoundTask_PlayDoubleCry(u8 taskId) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) species = gContestResources->moveAnim->species; - #ifndef UBFIX + // Destroying the task twice (here and at end of function) + // results in an incorrect value for gAnimVisualTaskCount + #ifndef BUGFIX else - DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice. - #endif + DestroyAnimVisualTask(taskId); + #endif } else { diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 9be3d65dc..f56d04ccd 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -248,7 +248,7 @@ static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] = {ARRAY_COUNT(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites}, }; -static const struct SpriteTemplate gFrozenIceCubeSpriteTemplate = +static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CUBE, .paletteTag = ANIM_TAG_ICE_CUBE, @@ -389,7 +389,7 @@ void AnimTask_FrozenIceCube(u8 taskId) x -= 6; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); - spriteId = CreateSprite(&gFrozenIceCubeSpriteTemplate, x, y, 4); + spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4); if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) gSprites[spriteId].invisible = TRUE; SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable); @@ -549,7 +549,7 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId) gBattleAnimAttacker = battlerId; gBattleAnimTarget = battlerId; - LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, 0); + LaunchBattleAnimation(gBattleAnims_StatusConditions, statusAnimId, FALSE); taskId = CreateTask(Task_DoStatusAnimation, 10); gTasks[taskId].data[0] = battlerId; } diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index bf95a319c..2f095a043 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -690,7 +690,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); gTasks[taskId].data[11] = LaunchBallFadeMonTask(FALSE, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; @@ -2018,24 +2018,24 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) #define tPaletteHi data[11] #define tBallId data[15] -u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) +u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 spritePalNum, u32 selectedPalettes, u8 ballId) { u8 taskId; taskId = CreateTask(Task_FadeMon_ToBallColor, 5); gTasks[taskId].tBallId = ballId; - gTasks[taskId].tPalOffset = battler; + gTasks[taskId].tPalOffset = spritePalNum; gTasks[taskId].tPaletteLo = selectedPalettes; gTasks[taskId].tPaletteHi = selectedPalettes >> 16; if (!unfadeLater) { - BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); + BlendPalette(spritePalNum * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); gTasks[taskId].tdCoeff = 1; } else { - BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); + BlendPalette(spritePalNum * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); gTasks[taskId].tCoeff = 16; gTasks[taskId].tdCoeff = -1; gTasks[taskId].func = Task_FadeMon_ToNormal; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index e2c674c57..b5455a19c 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -47,7 +47,7 @@ const u8 gBattleAnimBgCntGet[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFS void AnimTask_BlendBattleAnimPal(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); selectedPalettes |= GetBattleMonSpritePalettesMask((gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, @@ -62,7 +62,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattleBgPalettes(1); + selectedPalettes = UnpackSelectedBattlePalettes(F_PAL_BG); switch (gBattleAnimArgs[0]) { case 2: @@ -105,7 +105,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleBgPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -594,8 +594,7 @@ static void StatsChangeAnimation_Step3(u8 taskId) if (gTasks[taskId].data[6] == 1) gSprites[gTasks[taskId].data[7]].oam.priority++; - Free(sAnimStatsChangeData); - sAnimStatsChangeData = NULL; + FREE_AND_SET_NULL(sAnimStatsChangeData); DestroyAnimVisualTask(taskId); break; } @@ -607,7 +606,7 @@ void AnimTask_Flash(u8 taskId) SetPalettesToColor(selectedPalettes, RGB_BLACK); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; SetPalettesToColor(selectedPalettes, RGB_WHITEALPHA); gTasks[taskId].data[15] = selectedPalettes; @@ -923,7 +922,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -950,7 +949,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; @@ -977,7 +976,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) if (gBattleAnimArgs[0] == 0) { - selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); while ((selectedPalettes & 1) == 0) { selectedPalettes >>= 1; diff --git a/src/battle_bg.c b/src/battle_bg.c index f739a002f..ed32c009c 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -159,7 +159,7 @@ const struct BgTemplate gBattleBgTemplates[] = }, }; -static const struct WindowTemplate gStandardBattleWindowTemplates[] = +static const struct WindowTemplate sStandardBattleWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -380,7 +380,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gBattleArenaWindowTemplates[] = +static const struct WindowTemplate sBattleArenaWindowTemplates[] = { [B_WIN_MSG] = { .bg = 0, @@ -594,8 +594,8 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] = const struct WindowTemplate * const gBattleWindowTemplates[] = { - [B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates, - [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates, + [B_WIN_TYPE_NORMAL] = sStandardBattleWindowTemplates, + [B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates, }; static const struct BattleBackground sBattleTerrainTable[] = diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 5b69030df..954192f0a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -96,8 +96,8 @@ static void PlayerCmdEnd(void); static void PlayerBufferRunCommand(void); static void HandleInputChooseTarget(void); static void HandleInputChooseMove(void); -static void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1); -static void MoveSelectionDestroyCursorAt(u8 cursorPos); +static void MoveSelectionCreateCursorAt(u8, u8); +static void MoveSelectionDestroyCursorAt(u8); static void MoveSelectionDisplayPpNumber(void); static void MoveSelectionDisplayPpString(void); static void MoveSelectionDisplayMoveType(void); @@ -106,18 +106,18 @@ static void HandleMoveSwitching(void); static void SwitchIn_HandleSoundAndEnd(void); static void WaitForMonSelection(void); static void CompleteWhenChoseItem(void); -static void Task_LaunchLvlUpAnim(u8 taskId); -static void Task_PrepareToGiveExpWithExpBar(u8 taskId); -static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); -static void Task_GiveExpWithExpBar(u8 taskId); -static void Task_UpdateLvlInHealthbox(u8 taskId); +static void Task_LaunchLvlUpAnim(u8); +static void Task_PrepareToGiveExpWithExpBar(u8); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8); +static void Task_GiveExpWithExpBar(u8); +static void Task_UpdateLvlInHealthbox(u8); static void PrintLinkStandbyMsg(void); -static u32 CopyPlayerMonData(u8 monId, u8 *dst); -static void SetPlayerMonData(u8 monId); -static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit); +static u32 CopyPlayerMonData(u8, u8 *); +static void SetPlayerMonData(u8); +static void StartSendOutAnim(u8, bool8); static void DoSwitchOutAnimation(void); static void PlayerDoMoveAnimation(void); -static void Task_StartSendOutAnim(u8 taskId); +static void Task_StartSendOutAnim(u8); static void EndDrawPartyStatusSummary(void); static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = @@ -1507,11 +1507,11 @@ static void MoveSelectionDisplayMoveType(void) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } -static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) +static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) { u16 src[2]; - src[0] = arg1 + 1; - src[1] = arg1 + 2; + src[0] = baseTileNum + 1; + src[1] = baseTileNum + 2; CopyToBgTilemapBufferRect_ChangePalette(0, src, 9 * (cursorPosition & 1) + 1, 55 + (cursorPosition & 2), 1, 2, 0x11); CopyBgTilemapBufferToVram(0); @@ -1527,7 +1527,7 @@ static void MoveSelectionDestroyCursorAt(u8 cursorPosition) CopyBgTilemapBufferToVram(0); } -void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) +void ActionSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) { u16 src[2]; src[0] = 1; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 7d2717e2c..369f735f2 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1168,13 +1168,13 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); } -void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1) +void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder) { s32 i; sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; - for (i = 0; i < 3; i++) - sBattleBuffersTransferData[1 + i] = arg1[i]; + for (i = 0; i < PARTY_SIZE / 2; i++) + sBattleBuffersTransferData[1 + i] = battlePartyOrder[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1309,12 +1309,12 @@ void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); } -void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2) +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16) { sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES; - sBattleBuffersTransferData[1] = arg1; - sBattleBuffersTransferData[2] = arg2; - sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = ret8; + sBattleBuffersTransferData[2] = ret16; + sBattleBuffersTransferData[3] = (ret16 & 0xFF00) >> 8; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -1329,20 +1329,20 @@ void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battleP PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); } -void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1) +void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE; - sBattleBuffersTransferData[1] = arg1; - sBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = ret; + sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b) +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret) { sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE; - sBattleBuffersTransferData[1] = b; - sBattleBuffersTransferData[2] = (b & 0xFF00) >> 8; + sBattleBuffersTransferData[1] = ret; + sBattleBuffersTransferData[2] = (ret & 0xFF00) >> 8; sBattleBuffersTransferData[3] = 0; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } diff --git a/src/battle_dome.c b/src/battle_dome.c index aadd85afd..cbd9d0b6b 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -73,40 +73,43 @@ struct TourneyTreeLineSection #define tMode data[2] #define tPrevTaskId data[3] -// This file's functions. -static u8 GetDomeTrainerMonIvs(u16 trainerId); -static void SwapDomeTrainers(int id1, int id2, u16 *statsArray); -static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats); -static void CreateDomeOpponentMons(u16 tournamentTrainerId); -static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 arg1); -static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 arg1); -static int GetTypeEffectivenessPoints(int move, int species, int arg2); -static int SelectOpponentMonsFromParty(int *arr, bool8 arg1); -static void Task_ShowTourneyInfoCard(u8 taskId); -static void Task_HandleInfoCardInput(u8 taskId); -static u8 Task_GetInfoCardInput(u8 taskId); +#define EFFECTIVENESS_MODE_GOOD 0 +#define EFFECTIVENESS_MODE_BAD 1 +#define EFFECTIVENESS_MODE_AI_VS_AI 2 + +static u8 GetDomeTrainerMonIvs(u16); +static void SwapDomeTrainers(int, int, u16 *); +static void CalcDomeMonStats(u16, int, int, u8, u8, int *); +static void CreateDomeOpponentMons(u16); +static int SelectOpponentMons_Good(u16, bool8); +static int SelectOpponentMons_Bad(u16, bool8); +static int GetTypeEffectivenessPoints(int, int, int); +static int SelectOpponentMonsFromParty(int *, bool8); +static void Task_ShowTourneyInfoCard(u8); +static void Task_HandleInfoCardInput(u8); +static u8 Task_GetInfoCardInput(u8); static void SetFacilityTrainerAndMonPtrs(void); -static int TrainerIdToTournamentId(u16 trainerId); +static int TrainerIdToTournamentId(u16); static u16 TrainerIdOfPlayerOpponent(void); -static void Task_ShowTourneyTree(u8 taskId); -static void Task_HandleStaticTourneyTreeInput(u8 taskId); +static void Task_ShowTourneyTree(u8); +static void Task_HandleStaticTourneyTreeInput(u8); static void CB2_TourneyTree(void); static void VblankCb_TourneyInfoCard(void); -static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); -static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId); +static void DisplayMatchInfoOnCard(u8, u8); +static void DisplayTrainerInfoOnCard(u8, u8); static int BufferDomeWinString(u8, u8*); static u8 GetDomeBrainTrainerPicId(void); static u8 GetDomeBrainTrainerClass(void); -static void CopyDomeBrainTrainerName(u8 *str); -static void CopyDomeTrainerName(u8 *str, u16 trainerId); +static void CopyDomeBrainTrainerName(u8 *); +static void CopyDomeTrainerName(u8 *, u16); static void HblankCb_TourneyTree(void); static void VblankCb_TourneyTree(void); -static u8 UpdateTourneyTreeCursor(u8 taskId); -static void DecideRoundWinners(u8 roundId); -static u8 GetOpposingNPCTournamentIdByRound(u8 tournamentId, u8); +static u8 UpdateTourneyTreeCursor(u8); +static void DecideRoundWinners(u8); +static u8 GetOpposingNPCTournamentIdByRound(u8, u8); static void DrawTourneyAdvancementLine(u8, u8); -static void SpriteCb_HorizontalScrollArrow(struct Sprite *sprite); -static void SpriteCb_VerticalScrollArrow(struct Sprite *sprite); +static void SpriteCb_HorizontalScrollArrow(struct Sprite *); +static void SpriteCb_VerticalScrollArrow(struct Sprite *); static void InitDomeChallenge(void); static void GetDomeData(void); static void SetDomeData(void); @@ -130,7 +133,6 @@ static void BufferLastDomeWinnerName(void); static void InitRandomTourneyTreeResults(void); static void InitDomeTrainers(void); -// EWRAM variables. EWRAM_DATA u32 gPlayerPartyLostHP = 0; // never read static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; @@ -2080,7 +2082,6 @@ static const u8 sTourneyTreeLineSectionArrayCounts[DOME_TOURNAMENT_TRAINERS_COUN {ARRAY_COUNT(sLineSectionTrainer16Round1), ARRAY_COUNT(sLineSectionTrainer16Round2), ARRAY_COUNT(sLineSectionTrainer16Semifinal), ARRAY_COUNT(sLineSectionTrainer16Final)}, }; -// code void CallBattleDomeFunction(void) { sBattleDomeFunctions[gSpecialVar_0x8004](); @@ -2592,28 +2593,33 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId) } } +// Returns a bitmask representing which 2 of the trainer's 3 pokemon to select. +// The choice is calculated solely depending on the type effectiveness of their +// movesets against the player's pokemon. +// There is a 50% chance of either a "good" or "bad" selection mode being used. +// In the good mode movesets are preferred which are more effective against the +// player, and in the bad mode the opposite is true. If all 3 pokemon tie, the +// other mode will be tried. If they tie again, the pokemon selection is random. int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { int selectedMonBits; if (Random() & 1) { - selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, TRUE); } else { - selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMons_Bad(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMons_Good(tournamentTrainerId, TRUE); } return selectedMonBits; } -// Could probably use a better name once GetTypeEffectivenessPoints is clarified -// Personality seems to be used to select a different weighting system for type effectiveness points -static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 allowRandom) +static int SelectOpponentMons_Good(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2628,12 +2634,12 @@ static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 all if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_GOOD); } } } @@ -2641,8 +2647,8 @@ static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 all return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -// See above function, identical but uses MON_DATA_OT_ID -static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRandom) +// Identical to function above, but uses EFFECTIVENESS_MODE_BAD +static int SelectOpponentMons_Bad(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2657,12 +2663,12 @@ static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRando if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); } else { partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), EFFECTIVENESS_MODE_BAD); } } } @@ -2735,7 +2741,7 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) #define TYPE_x2 40 #define TYPE_x4 80 -static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) +static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) { int defType1, defType2, defAbility, moveType; int i = 0; @@ -2751,11 +2757,20 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) { - if (arg2 == 1) + // They likely meant to return here, as 8 is the number of points normally used in this mode for moves with no effect. + // Because there's no return the value instead gets interpreted by the switch, and the number of points becomes 0. + if (mode == EFFECTIVENESS_MODE_BAD) + { typePower = 8; + #ifdef BUGFIX + return; + #endif + } } else { + // Calculate a "type power" value to determine the benefit of using this type move against the target. + // This value will then be used to get the number of points to assign to the move. while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) @@ -2767,33 +2782,30 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) { // BUG: the value of TYPE_x2 does not exist in gTypeEffectiveness, so if defAbility is ABILITY_WONDER_GUARD, the conditional always fails #ifndef BUGFIX - if (TYPE_EFFECT_DEF_TYPE(i) == defType1) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) - typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; - if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD) - typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + #define WONDER_GUARD_EFFECTIVENESS TYPE_x2 #else + #define WONDER_GUARD_EFFECTIVENESS TYPE_MUL_SUPER_EFFECTIVE + #endif if (TYPE_EFFECT_DEF_TYPE(i) == defType1) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2) - if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD) + if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == WONDER_GUARD_EFFECTIVENESS) || defAbility != ABILITY_WONDER_GUARD) typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; - #endif } i += 3; } } - switch (arg2) + switch (mode) { - case 0: + case EFFECTIVENESS_MODE_GOOD: + // Weights moves that more effective. switch (typePower) { - case TYPE_x0_50: - case TYPE_x0_25: case TYPE_x0: + case TYPE_x0_25: + case TYPE_x0_50: default: typePower = 0; break; @@ -2808,22 +2820,24 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) break; } break; - case 1: + case EFFECTIVENESS_MODE_BAD: + // Weights moves that are less effective. + // Odd that there's no limit on this being used, even the Frontier Brain could end up using this. switch (typePower) { - default: - case TYPE_x1: - typePower = 0; + case TYPE_x0: + typePower = 8; break; case TYPE_x0_25: typePower = 4; break; - case TYPE_x0: - typePower = 8; - break; case TYPE_x0_50: typePower = 2; break; + default: + case TYPE_x1: + typePower = 0; + break; case TYPE_x2: typePower = -2; break; @@ -2832,7 +2846,9 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) break; } break; - case 2: + case EFFECTIVENESS_MODE_AI_VS_AI: + // Used as part of calculating the winner in a battle between two AIs. + // Weights moves that are more effective much more strongly in both directions. switch (typePower) { case TYPE_x0: @@ -5847,7 +5863,7 @@ static void InitRandomTourneyTreeResults(void) DOME_TRAINERS[i].forfeited = FALSE; } - monLevel = 50; + monLevel = FRONTIER_MAX_LEVEL_50; for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { monTypesBits = 0; @@ -5990,7 +6006,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, 2); + gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; @@ -6013,7 +6029,7 @@ static void DecideRoundWinners(u8 roundId) for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, 2); + gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, EFFECTIVENESS_MODE_AI_VS_AI); } } species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; diff --git a/src/battle_factory.c b/src/battle_factory.c index d88ed37f9..a68ef8180 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -12,15 +12,15 @@ #include "constants/battle_factory.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" +#include "constants/battle_tent.h" #include "constants/frontier_util.h" #include "constants/layouts.h" #include "constants/trainers.h" #include "constants/moves.h" +#include "constants/items.h" -// IWRAM bss static bool8 sPerformedRentalSwap; -// This file's functions. static void InitFactoryChallenge(void); static void GetBattleFactoryData(void); static void SetBattleFactoryData(void); @@ -212,7 +212,7 @@ static void InitFactoryChallenge(void) } sPerformedRentalSwap = FALSE; - for (i = 0; i < 6; i++) + for (i = 0; i < ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); i++) gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) gFrontierTempParty[i] = 0xFFFF; @@ -310,11 +310,12 @@ static void GenerateOpponentMons(void) u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u32 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; - u32 challengeNum = winStreak / 7; + u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; gFacilityTrainers = gBattleFrontierTrainers; do { + // Choose a random trainer, ensuring no repeats in this challenge trainerId = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -324,27 +325,32 @@ static void GenerateOpponentMons(void) } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum); gTrainerBattleOpponent_A = trainerId; - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId; i = 0; while (i != FRONTIER_PARTY_SIZE) { u16 monId = GetFactoryMonId(lvlMode, challengeNum, FALSE); + + // Unown (FRONTIER_MON_UNOWN) is forbidden on opponent Factory teams. if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - for (j = 0; j < 6; j++) + // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player + for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { if (gFacilityTrainerMons[monId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != 6) + if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) continue; + // "High tier" pokemon are only allowed on open level mode if (lvlMode == FRONTIER_LVL_50 && monId > FRONTIER_MONS_HIGH_TIER) continue; + // Ensure this species hasn't already been chosen for the opponent for (k = firstMonId; k < firstMonId + i; k++) { if (species[k] == gFacilityTrainerMons[monId].species) @@ -353,14 +359,16 @@ static void GenerateOpponentMons(void) if (k != firstMonId + i) continue; + // Ensure held items don't repeat on the opponent's team for (k = firstMonId; k < firstMonId + i; k++) { - if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != firstMonId + i) continue; + // Successful selection species[i] = gFacilityTrainerMons[monId].species; heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; gFrontierTempParty[i] = monId; @@ -406,15 +414,15 @@ static void SetPlayerAndOpponentParties(void) if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT) { gFacilityTrainerMons = gSlateportBattleTentMons; - monLevel = 30; + monLevel = TENT_MIN_LEVEL; } else { gFacilityTrainerMons = gBattleFrontierMons; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - monLevel = 100; + monLevel = FRONTIER_MAX_LEVEL_OPEN; else - monLevel = 50; + monLevel = FRONTIER_MAX_LEVEL_50; } if (gSpecialVar_0x8005 < 2) @@ -618,9 +626,9 @@ static void GetOpponentMostCommonMonType(void) // Determine which are the two most-common types. // The second most-common type is only updated if // its count is equal to the most-common type. - mostCommonTypes[0] = TYPE_NORMAL; - mostCommonTypes[1] = TYPE_NORMAL; - for (i = TYPE_FIGHTING; i < NUMBER_OF_MON_TYPES; i++) + mostCommonTypes[0] = 0; + mostCommonTypes[1] = 0; + for (i = 1; i < NUMBER_OF_MON_TYPES; i++) { if (typeCounts[mostCommonTypes[0]] < typeCounts[i]) mostCommonTypes[0] = i; @@ -765,15 +773,15 @@ void FillFactoryBrainParty(void) if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - if (monLevel == 50 && monId > FRONTIER_MONS_HIGH_TIER) + if (monLevel == FRONTIER_MAX_LEVEL_50 && monId > FRONTIER_MONS_HIGH_TIER) continue; - for (j = 0; j < 6; j++) + for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { if (monId == gSaveBlock2Ptr->frontier.rentalMons[j].monId) break; } - if (j != 6) + if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) continue; for (k = 0; k < i; k++) @@ -786,7 +794,7 @@ void FillFactoryBrainParty(void) for (k = 0; k < i; k++) { - if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (k != i) diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 787dc4740..14c63b7b8 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1131,8 +1131,7 @@ static void CB2_InitSelectScreen(void) switch (gMain.state) { case 0: - if (sFactorySelectMons != NULL) - FREE_AND_SET_NULL(sFactorySelectMons); + TRY_FREE_AND_SET_NULL(sFactorySelectMons); SetHBlankCallback(NULL); SetVBlankCallback(NULL); CpuFill32(0, (void *)VRAM, VRAM_SIZE); @@ -4221,17 +4220,12 @@ static void Task_OpenMonPic(u8 taskId) return; break; default: - #ifndef UBFIX DestroyTask(taskId); - #endif - // UB: Should not use the task after it has been deleted. + // Accessing data of destroyed task. Task data isn't reset until a new task needs that task id. if (gTasks[taskId].tIsSwapScreen == TRUE) Swap_CreateMonSprite(); else Select_CreateMonSprite(); - #ifdef UBFIX - DestroyTask(taskId); - #endif return; } task->tState++; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 2a690d129..d547dec0f 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -353,12 +353,12 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) } } -static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 arg1) +static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless) { sprite->animPaused = TRUE; sprite->callback = SpriteCallbackDummy; - if (!arg1) + if (!pointless) StartSpriteAffineAnim(sprite, 1); else StartSpriteAffineAnim(sprite, 1); @@ -590,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -653,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + battlerId * 16; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); } @@ -783,7 +783,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) return retVal; } -void LoadBattleBarGfx(u8 arg0) +void LoadBattleBarGfx(u8 unused) { LZDecompressWram(gBattleInterfaceGfx_BattleBar, gMonSpritesGfxPtr->barFontGfx); } @@ -973,7 +973,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform) if (targetSpecies == SPECIES_CASTFORM) { gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies]; - LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]); + LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32); } diff --git a/src/battle_interface.c b/src/battle_interface.c index 26209fe2d..dbcab4a9c 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -158,36 +158,36 @@ enum HEALTHBOX_GFX_FRAME_END_BAR, }; -static const u8 *GetHealthboxElementGfxPtr(u8 elementId); -static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId); +static const u8 *GetHealthboxElementGfxPtr(u8); +static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *, u32, u32, u32, u32 *); static void RemoveWindowOnHealthbox(u32 windowId); -static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); -static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId); +static void UpdateHpTextInHealthboxInDoubles(u8, s16, u8); +static void UpdateStatusIconInHealthbox(u8); -static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth); -static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); -static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth); -static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2); +static void TextIntoHealthboxObject(void *, u8 *, s32); +static void SafariTextIntoHealthboxObject(void *, u8 *, u32); +static void HpTextIntoHealthboxObject(void *, u8 *, u32); +static void FillHealthboxObject(void *, u32, u32); -static void Task_HidePartyStatusSummary_BattleStart_1(u8 taskId); -static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId); -static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId); +static void Task_HidePartyStatusSummary_BattleStart_1(u8); +static void Task_HidePartyStatusSummary_BattleStart_2(u8); +static void Task_HidePartyStatusSummary_DuringBattle(u8); -static void SpriteCB_HealthBoxOther(struct Sprite *sprite); -static void SpriteCB_HealthBar(struct Sprite *sprite); -static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *sprite); -static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *sprite); -static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *sprite); -static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *sprite); -static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *sprite); +static void SpriteCB_HealthBoxOther(struct Sprite *); +static void SpriteCB_HealthBar(struct Sprite *); +static void SpriteCB_StatusSummaryBar_Enter(struct Sprite *); +static void SpriteCB_StatusSummaryBar_Exit(struct Sprite *); +static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *); +static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *); +static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *); -static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId); -static s32 CalcNewBarValue(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5); -static u8 GetScaledExpFraction(s32 currValue, s32 receivedValue, s32 maxValue, u8 scale); -static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar); -static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale); -static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *arg1, u16 *arg2); +static u8 GetStatusIconForBattlerId(u8, u8); +static s32 CalcNewBarValue(s32, s32, s32, s32 *, u8, u16); +static u8 GetScaledExpFraction(s32, s32, s32, u8); +static void MoveBattleBarGraphically(u8, u8); +static u8 CalcBarFilledPixels(s32, s32, s32, s32 *, u8 *, u8); +static void Debug_TestHealthBar_Helper(struct TestingBar *, s32 *, u16 *); static const struct OamData sOamData_64x32 = { @@ -814,11 +814,11 @@ static void Debug_DrawNumber(s16 number, u16 *dest, bool8 unk) } // Unused -static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *arg2) +static void Debug_DrawNumberPair(s16 number1, s16 number2, u16 *dest) { - arg2[4] = 0x1E; - Debug_DrawNumber(number2, arg2, 0); - Debug_DrawNumber(number1, arg2 + 5, 1); + dest[4] = 0x1E; + Debug_DrawNumber(number2, dest, FALSE); + Debug_DrawNumber(number1, dest + 5, TRUE); } // Because the healthbox is too large to fit into one sprite, it is divided into two sprites. @@ -1420,7 +1420,7 @@ void SwapHpBarsWithHpText(void) #define tIsBattleStart data[10] #define tBlend data[15] -u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart) +u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart) { bool8 isOpponent; s16 bar_X, bar_Y, bar_pos2_X, bar_data0; @@ -1429,7 +1429,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 ballIconSpritesIds[PARTY_SIZE]; u8 taskId; - if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) + if (!skipPlayer || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { @@ -1442,7 +1442,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { isOpponent = TRUE; - if (!arg2 || !IsDoubleBattle()) + if (!skipPlayer || !IsDoubleBattle()) bar_X = 104, bar_Y = 40; else bar_X = 104, bar_Y = 16; @@ -2383,7 +2383,7 @@ static s32 CalcNewBarValue(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *c return ret; } -static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale) +static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *pixelsArray, u8 scale) { u8 pixels, filledPixels, totalPixels; u8 i; @@ -2397,7 +2397,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 totalPixels = scale * 8; for (i = 0; i < scale; i++) - arg4[i] = 0; + pixelsArray[i] = 0; if (maxValue < totalPixels) pixels = (*currValue * totalPixels / maxValue) >> 8; @@ -2408,7 +2408,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 if (filledPixels == 0 && newValue > 0) { - arg4[0] = 1; + pixelsArray[0] = 1; filledPixels = 1; } else @@ -2417,11 +2417,11 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 { if (pixels >= 8) { - arg4[i] = 8; + pixelsArray[i] = 8; } else { - arg4[i] = pixels; + pixelsArray[i] = pixels; break; } pixels -= 8; @@ -2433,7 +2433,7 @@ static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 // Unused // These two functions seem as if they were made for testing the health bar. -static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *arg2, s32 arg3) +static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 *dest, s32 unused) { s16 ret, var; @@ -2441,31 +2441,31 @@ static s16 Debug_TestHealthBar(struct TestingBar *barInfo, s32 *currValue, u16 * barInfo->oldValue, barInfo->receivedValue, currValue, B_HEALTHBAR_PIXELS / 8, 1); - Debug_TestHealthBar_Helper(barInfo, currValue, arg2); + Debug_TestHealthBar_Helper(barInfo, currValue, dest); if (barInfo->maxValue < B_HEALTHBAR_PIXELS) var = *currValue >> 8; else var = *currValue; - DummiedOutFunction(barInfo->maxValue, var, arg3); + DummiedOutFunction(barInfo->maxValue, var, unused); return ret; } -static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *arg2) +static void Debug_TestHealthBar_Helper(struct TestingBar *barInfo, s32 *currValue, u16 *dest) { - u8 sp8[6]; - u16 sp10[6]; + u8 pixels[6]; + u16 src[6]; u8 i; CalcBarFilledPixels(barInfo->maxValue, barInfo->oldValue, - barInfo->receivedValue, currValue, sp8, B_HEALTHBAR_PIXELS / 8); + barInfo->receivedValue, currValue, pixels, B_HEALTHBAR_PIXELS / 8); for (i = 0; i < 6; i++) - sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]); + src[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + pixels[i]); - CpuCopy16(sp10, arg2, sizeof(sp10)); + CpuCopy16(src, dest, sizeof(src)); } static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 scale) @@ -2546,9 +2546,9 @@ static void RemoveWindowOnHealthbox(u32 windowId) RemoveWindow(windowId); } -static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2) +static void FillHealthboxObject(void *dest, u32 valMult, u32 numTiles) { - CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP); + CpuFill32(0x11111111 * valMult, dest, numTiles * TILE_SIZE_4BPP); } static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth) diff --git a/src/battle_main.c b/src/battle_main.c index 9a0de4199..5e5243ff7 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1498,8 +1498,7 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - Free(sMultiPartnerPartyBuffer); - sMultiPartnerPartyBuffer = NULL; + FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); } } else if (gReceivedRemoteLinkPlayers == 0) @@ -1507,8 +1506,7 @@ static void CB2_PreInitMultiBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - Free(sMultiPartnerPartyBuffer); - sMultiPartnerPartyBuffer = NULL; + FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); } break; } @@ -1544,8 +1542,7 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void) gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; SetMainCallback2(CB2_InitBattleInternal); - Free(sMultiPartnerPartyBuffer); - sMultiPartnerPartyBuffer = NULL; + FREE_AND_SET_NULL(sMultiPartnerPartyBuffer); } break; } diff --git a/src/battle_message.c b/src/battle_message.c index 9d1b88ba7..2776c952b 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1035,7 +1035,7 @@ const u16 gFirstTurnOfTwoStringIds[] = }; // Index copied from move's index in gTrappingMoves -const u16 gWrappedStringIds[] = +const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] = { STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP @@ -1253,7 +1253,7 @@ const u16 gCaughtMonStringIds[] = [B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL, }; -const u16 gTrappingMoves[] = +const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = { MOVE_BIND, MOVE_WRAP, @@ -1261,7 +1261,7 @@ const u16 gTrappingMoves[] = MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, - 0xFFFF + 0xFFFF // Never read }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); diff --git a/src/battle_pike.c b/src/battle_pike.c index dcdabb5dc..59955ea72 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -684,7 +684,7 @@ static void SetBattlePikeData(void) static void IsNextRoomFinal(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > 14) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > NUM_PIKE_ROOMS) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; @@ -1117,20 +1117,20 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate) if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) { monLevel = GetHighestLevelInPlayerParty(); - if (monLevel < 60) + if (monLevel < FRONTIER_MIN_LEVEL_OPEN) { - monLevel = 60; + monLevel = FRONTIER_MIN_LEVEL_OPEN; } else { monLevel -= wildMons[headerId][pikeMonId].levelDelta; - if (monLevel < 60) - monLevel = 60; + if (monLevel < FRONTIER_MIN_LEVEL_OPEN) + monLevel = FRONTIER_MIN_LEVEL_OPEN; } } else { - monLevel = 50 - wildMons[headerId][pikeMonId].levelDelta; + monLevel = FRONTIER_MAX_LEVEL_50 - wildMons[headerId][pikeMonId].levelDelta; } if (checkKeenEyeIntimidate == TRUE && !CanEncounterWildMon(monLevel)) @@ -1158,11 +1158,11 @@ u8 GetBattlePikeWildMonHeaderId(void) u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; - if (winStreak <= 280) + if (winStreak <= 20 * NUM_PIKE_ROOMS) headerId = 0; - else if (winStreak <= 560) + else if (winStreak <= 40 * NUM_PIKE_ROOMS) headerId = 1; - else if (winStreak <= 840) + else if (winStreak <= 60 * NUM_PIKE_ROOMS) headerId = 2; else headerId = 3; @@ -1392,10 +1392,10 @@ static void PrepareOneTrainer(bool8 difficult) if (!difficult) battleNum = 1; else - battleNum = 6; + battleNum = FRONTIER_STAGES_PER_CHALLENGE - 1; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; do { trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); @@ -1409,7 +1409,7 @@ static void PrepareOneTrainer(bool8 difficult) gTrainerBattleOpponent_A = trainerId; gFacilityTrainers = gBattleFrontierTrainers; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; } @@ -1418,7 +1418,7 @@ static void PrepareTwoTrainers(void) int i; u16 trainerId; u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; + u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; gFacilityTrainers = gBattleFrontierTrainers; do @@ -1433,7 +1433,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 14) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= NUM_PIKE_ROOMS) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A; do @@ -1448,7 +1448,7 @@ static void PrepareTwoTrainers(void) gTrainerBattleOpponent_B = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < NUM_PIKE_ROOMS) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B; } @@ -1456,7 +1456,7 @@ static void ClearPikeTrainerIds(void) { u8 i; - for (i = 0; i < 14; i++) + for (i = 0; i < NUM_PIKE_ROOMS; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 9039f60f2..a885f1c8e 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -83,18 +83,18 @@ static void ClearPyramidPartyHeldItems(void); static void SetPyramidFloorPalette(void); static void BattlePyramidStartMenu(void); static void RestorePyramidPlayerParty(void); -static void InitPyramidBagItems(u8 lvlMode); +static void InitPyramidBagItems(u8); static u8 GetPyramidFloorTemplateId(void); static u8 GetPostBattleDirectionHintTextIndex(int *, u8, u8); -static void Task_SetPyramidFloorPalette(u8 taskId); -static void MarkPyramidTrainerAsBattled(u16 trainerId); -static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets); +static void Task_SetPyramidFloorPalette(u8); +static void MarkPyramidTrainerAsBattled(u16); +static void GetPyramidFloorLayoutOffsets(u8 *); static void GetPyramidEntranceAndExitSquareIds(u8 *, u8 *); static void SetPyramidObjectPositionsUniformly(u8); static bool8 SetPyramidObjectPositionsInAndNearSquare(u8, u8); static bool8 SetPyramidObjectPositionsNearSquare(u8, u8); -static bool8 TrySetPyramidObjectEventPositionInSquare(u8 arg0, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); -static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 objectEventId); +static bool8 TrySetPyramidObjectEventPositionInSquare(u8, u8 *, u8, u8); +static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8, u8, u8, u8 *, u8, u8); // Const rom data. #define ABILITY_RANDOM 2 // For wild mons data. @@ -279,9 +279,9 @@ static const u8 sPyramidFloorTemplateOptions[][2] = {100, 15} }; -static const u8 sFloorTemplateOffsets[] = +static const u8 sFloorTemplateOffsets[FRONTIER_STAGES_PER_CHALLENGE] = { - 0, 4, 9, 14, 19, 24, 29, 0 + 0, 4, 9, 14, 19, 24, 29 }; static const u16 sPickupItemsLvl50[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] = @@ -406,7 +406,7 @@ static const u8 sPickupItemSlots[][2] = {100, 9}, }; -static const u8 sPickupItemOffsets[] = {0, 9, 18, 27, 36, 45, 54}; +static const u8 sPickupItemOffsets[FRONTIER_STAGES_PER_CHALLENGE] = {0, 9, 18, 27, 36, 45, 54}; static const struct PyramidTrainerEncounterMusic sTrainerClassEncounterMusic[54] = { @@ -963,7 +963,7 @@ static void SeedPyramidFloor(void) { int i; - for (i = 0; i < 4; i++) + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.pyramidRandoms); i++) gSaveBlock2Ptr->frontier.pyramidRandoms[i] = Random(); gSaveBlock2Ptr->frontier.pyramidTrainerFlags = 0; @@ -977,7 +977,7 @@ static void SetPickupItem(void) u8 id; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7) % TOTAL_ROUNDS; + u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1016,8 +1016,8 @@ static void HidePyramidItem(void) { // Rather than using event flags to hide the item object event, // it moves them far off the map bounds. - events[i].x = 0x7FFF; - events[i].y = 0x7FFF; + events[i].x = SHRT_MAX; + events[i].y = SHRT_MAX; break; } i++; @@ -1063,7 +1063,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_ITEMS: for (i = 0; i < GetNumBattlePyramidObjectEvents(); i++) { - if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != 0x7FFF && events[i].y != 0x7FFF) + if (events[i].graphicsId == OBJ_EVENT_GFX_ITEM_BALL && events[i].x != SHRT_MAX && events[i].y != SHRT_MAX) textIndex++; } i = 1; @@ -1071,7 +1071,7 @@ static void ShowPostBattleHintText(void) case HINT_REMAINING_TRAINERS: id = GetPyramidFloorTemplateId(); textIndex = sPyramidFloorTemplates[id].numTrainers; - for (i = 0; i < 8; i++) + for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) { if (gBitTable[i] & gSaveBlock2Ptr->frontier.pyramidTrainerFlags) textIndex--; @@ -1326,7 +1326,7 @@ static void MarkPyramidTrainerAsBattled(u16 trainerId) { int i; - for (i = 0; i < 8; i++) + for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) gSaveBlock2Ptr->frontier.pyramidTrainerFlags |= gBitTable[i]; @@ -1345,7 +1345,7 @@ void GenerateBattlePyramidWildMon(void) const struct PyramidWildMon *wildMons; u32 id; u32 lvl = gSaveBlock2Ptr->frontier.lvlMode; - u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_ROUNDS; + u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / FRONTIER_STAGES_PER_CHALLENGE) % TOTAL_ROUNDS; if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; @@ -1488,13 +1488,13 @@ static u16 GetUniqueTrainerId(u8 objectEventId) int i; u16 trainerId; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; - u32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - if (battleNum == 7) + u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; + u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + if (floor == FRONTIER_STAGES_PER_CHALLENGE) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, floor); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1506,7 +1506,7 @@ static u16 GetUniqueTrainerId(u8 objectEventId) { do { - trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, floor); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1523,11 +1523,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio int y, x; int i; u8 entranceSquareId, exitSquareId; - u8 *floorLayoutOffsets = AllocZeroed(16); + u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); GetPyramidEntranceAndExitSquareIds(&entranceSquareId, &exitSquareId); - for (i = 0; i < 16; i++) + for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) { u16 *map; int yOffset, xOffset; @@ -1535,11 +1535,11 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio const u16 *layoutMap = mapLayout->map; gBackupMapLayout.map = backupMapData; - gBackupMapLayout.width = mapLayout->width * 4 + MAP_OFFSET_W; - gBackupMapLayout.height = mapLayout->height * 4 + MAP_OFFSET_H; + gBackupMapLayout.width = mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE + MAP_OFFSET_W; + gBackupMapLayout.height = mapLayout->height * PYRAMID_FLOOR_SQUARES_HIGH + MAP_OFFSET_H; map = backupMapData; - yOffset = ((i / 4 * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; - xOffset = (i % 4 * mapLayout->width) + MAP_OFFSET; + yOffset = ((i / PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->height) + MAP_OFFSET) * gBackupMapLayout.width; + xOffset = (i % PYRAMID_FLOOR_SQUARES_WIDE * mapLayout->width) + MAP_OFFSET; map += yOffset + xOffset; for (y = 0; y < mapLayout->height; y++) { @@ -1553,8 +1553,8 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio { if (i == entranceSquareId && setPlayerPosition == FALSE) { - gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + x; - gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + y; + gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % PYRAMID_FLOOR_SQUARES_WIDE)) + x; + gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / PYRAMID_FLOOR_SQUARES_WIDE)) + y; } map[x] = (layoutMap[x] & (MAPGRID_ELEVATION_MASK | MAPGRID_COLLISION_MASK)) | METATILE_BattlePyramid_Floor; } @@ -1563,7 +1563,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio map[x] = layoutMap[x]; } } - map += MAP_OFFSET_W + (mapLayout->width * 4); + map += MAP_OFFSET_W + (mapLayout->width * PYRAMID_FLOOR_SQUARES_WIDE); layoutMap += mapLayout->width; } } @@ -1577,7 +1577,7 @@ void LoadBattlePyramidObjectEventTemplates(void) u8 id; u8 entranceSquareId, exitSquareId; - for (i = 0; i < 8; i++) + for (i = 0; i < MAX_PYRAMID_TRAINERS; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; id = GetPyramidFloorTemplateId(); @@ -1633,13 +1633,13 @@ void LoadBattlePyramidFloorObjectEventScripts(void) static void GetPyramidEntranceAndExitSquareIds(u8 *entranceSquareId, u8 *exitSquareId) { - *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % 16; - *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % 16; + *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % NUM_PYRAMID_FLOOR_SQUARES; + *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % NUM_PYRAMID_FLOOR_SQUARES; if (*entranceSquareId == *exitSquareId) { - *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % 16; - *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + 15) % 16; + *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % NUM_PYRAMID_FLOOR_SQUARES; + *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + NUM_PYRAMID_FLOOR_SQUARES - 1) % NUM_PYRAMID_FLOOR_SQUARES; } } @@ -1651,10 +1651,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) int squareId; u32 bits = 0; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(16); + u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); - squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16; + squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES; if (objType == OBJ_TRAINERS) { numObjects = sPyramidFloorTemplates[id].numTrainers; @@ -1682,10 +1682,10 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) if (gBitTable[squareId] & gSaveBlock2Ptr->frontier.pyramidRandoms[3]) bits |= 2; } - if (++squareId >= 16) + if (++squareId >= NUM_PYRAMID_FLOOR_SQUARES) squareId = 0; - if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16) + if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % NUM_PYRAMID_FLOOR_SQUARES) { if (bits & 1) bits |= 6; @@ -1709,7 +1709,7 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) int numPlacedObjects = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(16); + u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1775,7 +1775,7 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId) int r8 = 0; int numObjects; u8 id = GetPyramidFloorTemplateId(); - u8 *floorLayoutOffsets = AllocZeroed(16); + u8 *floorLayoutOffsets = AllocZeroed(NUM_PYRAMID_FLOOR_SQUARES); GetPyramidFloorLayoutOffsets(floorLayoutOffsets); if (objType == OBJ_TRAINERS) @@ -1900,7 +1900,7 @@ static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets) int rand = (gSaveBlock2Ptr->frontier.pyramidRandoms[0]) | (gSaveBlock2Ptr->frontier.pyramidRandoms[1] << 16); u8 id = GetPyramidFloorTemplateId(); - for (i = 0; i < 16; i++) + for (i = 0; i < NUM_PYRAMID_FLOOR_SQUARES; i++) { layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[rand & 0x7]; rand >>= 3; @@ -1931,7 +1931,7 @@ u8 GetNumBattlePyramidObjectEvents(void) u8 i; struct ObjectEventTemplate *events = gSaveBlock1Ptr->objectEventTemplates; - for (i = 0; i < 16; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { if (events[i].localId == 0) break; @@ -1959,7 +1959,7 @@ u16 GetBattlePyramidPickupItemId(void) int rand; u32 i; u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7); + int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); if (round >= TOTAL_ROUNDS) round = TOTAL_ROUNDS - 1; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index d1b946146..66b4cd97d 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -1410,7 +1410,7 @@ void TryStoreHeldItemsInPyramidBag(void) memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); if (heldItem != ITEM_NONE && !AddBagItem(heldItem, 1)) @@ -1426,10 +1426,8 @@ void TryStoreHeldItemsInPyramidBag(void) } heldItem = ITEM_NONE; - for (i = 0; i < 3; i++) - { + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) SetMonData(&party[i], MON_DATA_HELD_ITEM, &heldItem); - } gSpecialVar_Result = 0; Free(newItems); Free(newQuantities); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3c8bbfdee..4f31f0f01 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2596,7 +2596,7 @@ void SetMoveEffect(bool8 primary, u8 certain) for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++) { - if (gBattleCommunication[MULTISTRING_CHOOSER] > 4) + if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_TRAPPING_MOVES - 1) break; if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove) break; diff --git a/src/battle_setup.c b/src/battle_setup.c index ecb5ad9b9..0bfc65c8f 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -701,21 +701,22 @@ static u8 GetBattleTransitionTypeByMap(void) PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + if (GetFlashLevel()) return TRANSITION_TYPE_FLASH; - if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) + return TRANSITION_TYPE_WATER; + + switch (gMapHeader.mapType) { - switch (gMapHeader.mapType) - { - case MAP_TYPE_UNDERGROUND: - return TRANSITION_TYPE_CAVE; - case MAP_TYPE_UNDERWATER: - return TRANSITION_TYPE_WATER; - default: - return TRANSITION_TYPE_NORMAL; - } + case MAP_TYPE_UNDERGROUND: + return TRANSITION_TYPE_CAVE; + case MAP_TYPE_UNDERWATER: + return TRANSITION_TYPE_WATER; + default: + return TRANSITION_TYPE_NORMAL; } - return TRANSITION_TYPE_WATER; } static u16 GetSumOfPlayerPartyLevel(u8 numMons) diff --git a/src/battle_tent.c b/src/battle_tent.c index 53c91c871..dba9e6e8a 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -56,10 +56,8 @@ static void GenerateInitialRentalMons(void); * */ -// IWRAM bss -static u16 sRandMonSetId; +static u16 sRandMonId; -// const rom data void static (*const sVerdanturfTentFuncs[])(void) = { [VERDANTURF_TENT_FUNC_INIT] = InitVerdanturfTentChallenge, @@ -357,7 +355,7 @@ static void GenerateOpponentMons(void) const u16 *monSet; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - s32 monId = 0; + s32 numMons = 0; gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -366,6 +364,7 @@ static void GenerateOpponentMons(void) { do { + // Choose a random trainer, ensuring no repeats in this challenge trainerId = Random() % NUM_BATTLE_TENT_TRAINERS; for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { @@ -376,48 +375,53 @@ static void GenerateOpponentMons(void) gTrainerBattleOpponent_A = trainerId; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; - while (monSet[monId] != 0xFFFF) - monId++; - if (monId > 8) + while (monSet[numMons] != 0xFFFF) + numMons++; + if (numMons > 8) break; - monId = 0; + numMons = 0; } - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < TENT_STAGES_PER_CHALLENGE - 1) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; i = 0; while (i != FRONTIER_PARTY_SIZE) { - sRandMonSetId = monSet[Random() % monId]; - for (j = 0; j < 6; j++) + sRandMonId = monSet[Random() % numMons]; + + // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player + for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { - if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) + if (gFacilityTrainerMons[sRandMonId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) break; } - if (j != 6) + if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) continue; + // Ensure this species hasn't already been chosen for the opponent for (k = 0; k < i; k++) { - if (species[k] == gFacilityTrainerMons[sRandMonSetId].species) + if (species[k] == gFacilityTrainerMons[sRandMonId].species) break; } if (k != i) continue; + // Ensure held items don't repeat on the opponent's team for (k = 0; k < i; k++) { - if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]) break; } if (k != i) continue; - species[i] = gFacilityTrainerMons[sRandMonSetId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId]; - gFrontierTempParty[i] = sRandMonSetId; + // Successful selection + species[i] = gFacilityTrainerMons[sRandMonId].species; + heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]; + gFrontierTempParty[i] = sRandMonId; i++; } } diff --git a/src/battle_tower.c b/src/battle_tower.c index 989412e9e..354a087c4 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -27,6 +27,7 @@ #include "constants/battle_dome.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" +#include "constants/battle_tent.h" #include "constants/battle_tent_mons.h" #include "constants/battle_tent_trainers.h" #include "constants/battle_tower.h" @@ -687,7 +688,7 @@ struct { u32 facilityClass; const u8 *const *strings; -} const sPartnerTrainerTextTables[] = +} static const sPartnerTrainerTextTables[] = { {FACILITY_CLASS_LASS, sPartnerTextsLass}, {FACILITY_CLASS_YOUNGSTER, sPartnerTextsYoungster}, @@ -769,7 +770,7 @@ struct u8 nature; u8 evs[NUM_STATS]; u16 moves[MAX_MON_MOVES]; -} const sStevenMons[MULTI_PARTY_SIZE] = +} static const sStevenMons[MULTI_PARTY_SIZE] = { { .species = SPECIES_METANG, @@ -1060,7 +1061,7 @@ static void SetNextFacilityOpponent(void) u16 id; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u16 winStreak = GetCurrentFacilityWinStreak(); - u32 challengeNum = winStreak / 7; + u32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; SetFacilityPtrsGetLevel(); if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS) @@ -1095,7 +1096,7 @@ static void SetNextFacilityOpponent(void) gTrainerBattleOpponent_A = id; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 7) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < FRONTIER_STAGES_PER_CHALLENGE) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } } @@ -1107,7 +1108,7 @@ u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) if (challengeNum <= 7) { - if (battleNum == 6) + if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges trainerId = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1136,7 +1137,7 @@ static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, if (challengeNum <= 7) { - if (battleNum == 6) + if (battleNum == FRONTIER_STAGES_PER_CHALLENGE - 1) { // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges range = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; @@ -1326,19 +1327,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j]) break; } - if (j == 4) + if (j == TRAINER_ID_LENGTH) { for (k = 0; k < PLAYER_NAME_LENGTH; k++) { - #ifdef BUGFIX - if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k]) + // Incorrect index being used + #ifdef BUGFIX + #define INDEX k + #else + #define INDEX j + #endif + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[INDEX] != newRecord->name[INDEX]) break; - if (newRecord->name[k] == EOS) - #else - if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j]) - break; - if (newRecord->name[j] == EOS) - #endif + if (newRecord->name[INDEX] == EOS) { k = PLAYER_NAME_LENGTH; break; @@ -1634,7 +1635,7 @@ static void FillTentTrainerParty(u8 monsCount) static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; - u16 chosenMonIndices[4]; + u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; @@ -1650,7 +1651,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + 3; i++) + for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1675,7 +1676,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) else { // Apprentice. - for (i = firstMonId; i < firstMonId + 3; i++) + for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) CreateApprenticeMon(&gEnemyParty[i], &gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE], i - firstMonId); return; } @@ -1691,7 +1692,10 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) while (i != monCount) { u16 monId = monSet[Random() % bfMonCount]; - if ((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) + + // "High tier" pokemon are only allowed on open level mode + // 20 is not a possible value for level here + if ((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) continue; // Ensure this pokemon species isn't a duplicate. @@ -1767,11 +1771,11 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) fixedIV = 9; if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) - level = 100; + level = FRONTIER_MAX_LEVEL_OPEN; else - level = 50; + level = FRONTIER_MAX_LEVEL_50; - for (i = 0; i != 3; i++) + for (i = 0; i != FRONTIER_PARTY_SIZE; i++) { CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8); friendship = MAX_FRIENDSHIP; @@ -1802,8 +1806,10 @@ u16 GetRandomFrontierMonFromSet(u16 trainerId) do { + // "High tier" pokemon are only allowed on open level mode + // 20 is not a possible value for level here monId = monSet[Random() % numMons]; - } while((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); + } while((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); return monId; } @@ -1831,18 +1837,18 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); // By mistake Battle Tower's Level 50 challenge number is used to determine the IVs for Battle Factory. #ifdef BUGFIX - u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; + u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; #else - u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / 7; + u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / FRONTIER_STAGES_PER_CHALLENGE; #endif - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) fixedIV = GetFactoryMonFixedIV(challengeNum, FALSE); else fixedIV = GetFactoryMonFixedIV(challengeNum, TRUE); // Last trainer in challenge uses higher IVs } else if (trainerId == TRAINER_EREADER) { - for (i = firstMonId; i < firstMonId + 3; i++) + for (i = firstMonId; i < firstMonId + FRONTIER_PARTY_SIZE; i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]); return; } @@ -1882,7 +1888,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) { u8 i, j; u8 friendship; - u8 level = 30; + u8 level = TENT_MIN_LEVEL; u8 fixedIV = 0; u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); @@ -2043,7 +2049,7 @@ void DoSpecialTrainerBattle(void) break; case SPECIAL_BATTLE_EREADER: ZeroEnemyPartyMons(); - for (i = 0; i < 3; i++) + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.ereaderTrainer.party); i++) CreateBattleTowerMon(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]); gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_EREADER_TRAINER; gTrainerBattleOpponent_A = 0; @@ -2189,7 +2195,7 @@ static void SaveTowerChallenge(void) { u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); + s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) SaveBattleTowerRecord(); @@ -2279,7 +2285,7 @@ static void LoadMultiPartnerCandidatesData(void) objEventTemplates = gSaveBlock1Ptr->objectEventTemplates; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); level = SetFacilityPtrsGetLevel(); @@ -2338,7 +2344,7 @@ static void LoadMultiPartnerCandidatesData(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -2377,7 +2383,7 @@ static void LoadMultiPartnerCandidatesData(void) checksum += record[j]; } - if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / 7 <= challengeNum + if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / FRONTIER_STAGES_PER_CHALLENGE <= challengeNum && gSaveBlock2Ptr->frontier.towerRecords[i].lvlMode == lvlMode && recordHasData && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum) @@ -2458,7 +2464,7 @@ static void ShowPartnerCandidateMessage(void) s32 monId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); - s32 challengeNum = winStreak / 7; + s32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k]; @@ -2517,7 +2523,7 @@ static void ShowPartnerCandidateMessage(void) gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[0]; gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[1]; } - for (k = 0; k < 14; k++) + for (k = 0; k < FRONTIER_STAGES_PER_CHALLENGE * 2; k++) { while (1) { @@ -2576,7 +2582,7 @@ static void LoadLinkMultiOpponentsData(void) case 0: if (battleMode == FRONTIER_MODE_LINK_MULTIS) { - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; if (IsLinkTaskFinished()) { SendBlock(BitmaskAllOtherLinkPlayers(), &challengeNum, sizeof(challengeNum)); @@ -2596,7 +2602,7 @@ static void LoadLinkMultiOpponentsData(void) challengeNum = gBlockRecvBuffer[0][0]; else challengeNum = gBlockRecvBuffer[1][0]; - for (i = 0; i < 14; i++) + for (i = 0; i < FRONTIER_STAGES_PER_CHALLENGE * 2; i++) { do { @@ -2737,8 +2743,8 @@ u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode) { u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; - if (winStreak > 9999) - return 9999; + if (winStreak > MAX_STREAK) + return MAX_STREAK; else return winStreak; } @@ -2840,7 +2846,7 @@ static void FillEReaderTrainerWithPlayerData(void) ereaderTrainer->winStreak = 1; j = 7; - for (i = 0; i < 6; i++) + for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++) { ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; ereaderTrainer->farewellPlayerLost[i] = j; @@ -2848,7 +2854,7 @@ static void FillEReaderTrainerWithPlayerData(void) j++; } - for (i = 0; i < 3; i++) + for (i = 0; i < (int)ARRAY_COUNT(ereaderTrainer->party); i++) ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); @@ -3246,12 +3252,12 @@ u8 GetFrontierEnemyMonLevel(u8 lvlMode) { default: case FRONTIER_LVL_50: - level = 50; + level = FRONTIER_MAX_LEVEL_50; break; case FRONTIER_LVL_OPEN: level = GetHighestLevelInPlayerParty(); - if (level < 60) - level = 60; + if (level < FRONTIER_MIN_LEVEL_OPEN) + level = FRONTIER_MIN_LEVEL_OPEN; break; } @@ -3321,7 +3327,7 @@ static u16 GetBattleTentTrainerId(void) static u8 SetTentPtrsGetLevel(void) { - u8 level = 30; + u8 level = TENT_MIN_LEVEL; u32 facility = VarGet(VAR_FRONTIER_FACILITY); if (facility == FRONTIER_FACILITY_FACTORY) @@ -3346,8 +3352,8 @@ static u8 SetTentPtrsGetLevel(void) } level = GetHighestLevelInPlayerParty(); - if (level < 30) - level = 30; + if (level < TENT_MIN_LEVEL) + level = TENT_MIN_LEVEL; return level; } @@ -3369,7 +3375,7 @@ static void SetNextBattleTentOpponent(void) gTrainerBattleOpponent_A = trainerId; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 3) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < TENT_STAGES_PER_CHALLENGE) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; } diff --git a/src/battle_transition.c b/src/battle_transition.c index 1e421b5e4..c523cbe7b 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -4762,10 +4762,8 @@ static bool8 FrontierSquaresScroll_End(struct Task *task) BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); DestroyTask(FindTaskIdByFunc(task->func)); + task->tState++; // Changing value of a destroyed task -#ifndef UBFIX - task->tState++; // UB: changing value of a destroyed task -#endif return FALSE; } diff --git a/src/battle_util.c b/src/battle_util.c index 6bb6d9ae4..f34c39eb0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1190,7 +1190,7 @@ u8 DoFieldEndTurnEffects(void) s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE)) SwapTurnOrder(i, j); } } diff --git a/src/berry_blender.c b/src/berry_blender.c index 27ea641ce..bdf7858ce 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1188,9 +1188,9 @@ static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSp #undef sXSpeed #undef sYDownSpeed -static void CreateBerrySprite(u16 a0, u8 playerId) +static void CreateBerrySprite(u16 itemId, u8 playerId) { - u8 spriteId = CreateSpinningBerrySprite(a0 + FIRST_BERRY_INDEX - 10, 0, 80, playerId & 1); + u8 spriteId = CreateSpinningBerrySprite(ITEM_TO_BERRY(itemId) - 1, 0, 80, playerId & 1); SetBerrySpriteData(&gSprites[spriteId], sBerrySpriteData[playerId][0], sBerrySpriteData[playerId][1], @@ -2238,7 +2238,7 @@ static void CB2_PlayBlender(void) UpdatePaletteFade(); } -static void Blender_DummiedOutFunc(s16 a0, s16 a1) +static void Blender_DummiedOutFunc(s16 bgX, s16 bgY) { } diff --git a/src/berry_crush.c b/src/berry_crush.c index e7a5df951..e6e2d8742 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -2254,7 +2254,7 @@ static u32 Cmd_PrintMessage(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); if (args[1] & F_MSG_EXPAND) { StringExpandPlaceholders(gStringVar4, sMessages[args[0]]); @@ -3241,7 +3241,7 @@ static u32 Cmd_SaveGame(struct BerryCrushGame *game, u8 *args) case 2: if (!IsLinkTaskFinished()) return 0; - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, 0, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); CreateTask(Task_LinkFullSave, 0); @@ -3389,7 +3389,7 @@ static u32 Cmd_StopGame(struct BerryCrushGame *game, u8 *args) switch (game->cmdState) { case 0: - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); if (game->playAgainState == PLAY_AGAIN_NO_BERRIES) AddTextPrinterParameterized2(0, FONT_NORMAL, sMessages[MSG_NO_BERRIES], game->textSpeed, 0, 2, 1, 3); else diff --git a/src/coins.c b/src/coins.c index 17fd147b7..4c4739999 100644 --- a/src/coins.c +++ b/src/coins.c @@ -8,7 +8,7 @@ #include "international_string_util.h" #include "constants/coins.h" -EWRAM_DATA u8 sCoinsWindowId = 0; +static EWRAM_DATA u8 sCoinsWindowId = 0; void PrintCoinsString(u32 coinAmount) { diff --git a/src/contest.c b/src/contest.c index ced9f90cd..da57d9e28 100644 --- a/src/contest.c +++ b/src/contest.c @@ -93,7 +93,7 @@ static void Task_ContestReturnToField(u8); static void FieldCB_ContestReturnToField(void); static bool8 IsPlayerLinkLeader(void); static void PrintContestantTrainerName(u8); -static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1); +static void PrintContestantTrainerNameWithColor(u8, u8); static void PrintContestantMonName(u8); static void PrintContestantMonNameWithColor(u8, u8); static u8 CreateJudgeSprite(void); @@ -352,7 +352,7 @@ EWRAM_DATA u16 gSpecialVar_ContestRank = 0; EWRAM_DATA u8 gNumLinkContestPlayers = 0; EWRAM_DATA u8 gHighestRibbonRank = 0; EWRAM_DATA struct ContestResources *gContestResources = NULL; -EWRAM_DATA u8 sContestBgCopyFlags = 0; +static EWRAM_DATA u8 sContestBgCopyFlags = 0; EWRAM_DATA struct ContestWinner gCurContestWinner = {0}; EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0; EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0; @@ -625,7 +625,7 @@ static const struct SpriteTemplate sSpriteTemplate_ApplauseMeter = .callback = SpriteCallbackDummy }; -const struct OamData sOam_Judge = +static const struct OamData sOam_Judge = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -639,7 +639,7 @@ const struct OamData sOam_Judge = .paletteNum = 2, }; -const struct SpriteTemplate sSpriteTemplate_Judge = +static const struct SpriteTemplate sSpriteTemplate_Judge = { .tileTag = TAG_JUDGE, .paletteTag = TAG_JUDGE, @@ -650,7 +650,7 @@ const struct SpriteTemplate sSpriteTemplate_Judge = .callback = SpriteCallbackDummy }; -const struct CompressedSpriteSheet sSpriteSheet_Judge = +static const struct CompressedSpriteSheet sSpriteSheet_Judge = { .data = gContestJudgeGfx, .size = 0x800, @@ -664,13 +664,13 @@ static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = .tag = TAG_JUDGE_SYMBOLS_GFX }; -const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = +static const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = { .data = gContestJudgeSymbolsPal, .tag = TAG_CONTEST_SYMBOLS_PAL }; -const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = +static const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = { .tileTag = TAG_JUDGE_SYMBOLS_GFX, .paletteTag = TAG_CONTEST_SYMBOLS_PAL, @@ -876,7 +876,7 @@ static const struct SpritePalette sSpritePalettes_ContestantsTurnBlinkEffect[CON } }; -const struct OamData sOam_ContestantsTurnBlinkEffect = +static const struct OamData sOam_ContestantsTurnBlinkEffect = { .y = 0, .affineMode = ST_OAM_AFFINE_DOUBLE, @@ -891,13 +891,13 @@ const struct OamData sOam_ContestantsTurnBlinkEffect = .affineParam = 0, }; -const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = +static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_END }; -const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = +static const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = { AFFINEANIMCMD_FRAME(3, 3, 0, 15), AFFINEANIMCMD_FRAME(-3, -3, 0, 15), @@ -906,13 +906,13 @@ const union AffineAnimCmd sAffineAnim_ContestantsTurnBlinkEffect_1[] = AFFINEANIMCMD_END }; -const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = +static const union AffineAnimCmd *const sAffineAnims_ContestantsTurnBlinkEffect[] = { sAffineAnim_ContestantsTurnBlinkEffect_0, sAffineAnim_ContestantsTurnBlinkEffect_1 }; -const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = +static const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTANT_COUNT] = { { .tileTag = TAG_BLINK_EFFECT_CONTESTANT0, @@ -952,7 +952,7 @@ const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTA } }; -static const s8 gContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = +static const s8 sContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] = { [CONTEST_CATEGORY_COOL] = { [CONTEST_CATEGORY_COOL] = +1, @@ -3186,14 +3186,14 @@ static u16 GetMoveEffectSymbolTileOffset(u16 move, u8 contestant) return offset; } -static void PrintContestMoveDescription(u16 a) +static void PrintContestMoveDescription(u16 move) { u8 category; u16 categoryTile; u8 numHearts; // The contest category icon is implemented as a 5x2 group of tiles. - category = gContestMoves[a].contestCategory; + category = gContestMoves[move].contestCategory; if (category == CONTEST_CATEGORY_COOL) categoryTile = 0x4040; else if (category == CONTEST_CATEGORY_BEAUTY) @@ -3209,27 +3209,27 @@ static void PrintContestMoveDescription(u16 a) ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01); // Appeal hearts - if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF) + if (gContestEffects[gContestMoves[move].effect].appeal == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; + numHearts = gContestEffects[gContestMoves[move].effect].appeal / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_APPEAL_HEART, 0x15, 0x1f, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_APPEAL_HEART, 0x15, 0x1f, numHearts, 0x01, 0x11); // Jam hearts - if (gContestEffects[gContestMoves[a].effect].jam == 0xFF) + if (gContestEffects[gContestMoves[move].effect].jam == 0xFF) numHearts = 0; else - numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; + numHearts = gContestEffects[gContestMoves[move].effect].jam / 10; if (numHearts > MAX_CONTEST_MOVE_HEARTS) numHearts = MAX_CONTEST_MOVE_HEARTS; ContestBG_FillBoxWithTile(0, TILE_EMPTY_JAM_HEART, 0x15, 0x20, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11); ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11); FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0)); - Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]); + Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[move].effect]); Contest_PrintTextToBg0WindowStd(WIN_SLASH, gText_Slash); } @@ -4537,14 +4537,14 @@ static void CalculateAppealMoveImpact(u8 contestant) eContestantStatus[contestant].contestantAnimTarget = i; } -void SetContestantEffectStringID(u8 a, u8 b) +void SetContestantEffectStringID(u8 contestant, u8 effectStringId) { - eContestantStatus[a].effectStringId = b; + eContestantStatus[contestant].effectStringId = effectStringId; } -void SetContestantEffectStringID2(u8 a, u8 b) +void SetContestantEffectStringID2(u8 contestant, u8 effectStringId) { - eContestantStatus[a].effectStringId2 = b; + eContestantStatus[contestant].effectStringId2 = effectStringId; } void SetStartledString(u8 contestant, u8 jam) @@ -4744,7 +4744,7 @@ static void UpdateApplauseMeter(void) s8 Contest_GetMoveExcitement(u16 move) { - return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; + return sContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; } static u8 StartApplauseOverflowAnimation(void) diff --git a/src/contest_util.c b/src/contest_util.c index 1ca217526..d8726d860 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -77,7 +77,10 @@ enum { #define TAG_CONFETTI 3017 #define TAG_WIRELESS_INDICATOR_WINDOW 22222 -#define MAX_BAR_LENGTH 87 +// Length of the score bar on the results screen +#define NUM_BAR_SEGMENTS 11 +#define BAR_SEGMENT_LENGTH 8 // Each segment of the results bar is a single tile, so 8 pixels long +#define MAX_BAR_LENGTH (NUM_BAR_SEGMENTS * BAR_SEGMENT_LENGTH) // Starting x/y for the sliding results screen text box #define TEXT_BOX_X (DISPLAY_WIDTH + 32) @@ -96,7 +99,7 @@ struct ContestResultsInternal u8 winnerMonSpriteId; bool8 destroyConfetti; bool8 pointsFlashing; - s16 unkC[CONTESTANT_COUNT]; + s16 barLength[CONTESTANT_COUNT]; u8 numBarsUpdating; }; @@ -1748,7 +1751,7 @@ static void CalculateContestantsResultData(void) if ((*sContestResults->monResults)[i].lostPoints) barLengthRound2 *= -1; - if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH + 1) + if (barLengthPreliminary + barLengthRound2 == MAX_BAR_LENGTH) { if (barLengthRound2 > 0) (*sContestResults->monResults)[i].barLengthRound2--; @@ -1841,47 +1844,52 @@ static void Task_UpdateContestResultBar(u8 taskId) s16 target = gTasks[taskId].tTarget; s16 decreasing = gTasks[taskId].tDecreasing; + // Has the results bar reached the limit? if (decreasing) { - if (sContestResults->data->unkC[monId] <= 0) + if (sContestResults->data->barLength[monId] <= 0) minMaxReached = TRUE; } else { - if (sContestResults->data->unkC[monId] > MAX_BAR_LENGTH) + if (sContestResults->data->barLength[monId] >= MAX_BAR_LENGTH) minMaxReached = TRUE; } - if (sContestResults->data->unkC[monId] == target) + if (sContestResults->data->barLength[monId] == target) targetReached = TRUE; if (!targetReached) { + // Target length has not been reached, update bar length if (minMaxReached) - sContestResults->data->unkC[monId] = target; + sContestResults->data->barLength[monId] = target; else if (decreasing) - sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] - 1; + sContestResults->data->barLength[monId]--; else - sContestResults->data->unkC[monId] = sContestResults->data->unkC[monId] + 1; + sContestResults->data->barLength[monId]++; } + // Update the tiles of the results bar if it's still changing if (!minMaxReached && !targetReached) { - u8 var0; + u8 tileOffset; u16 tileNum; - for (i = 0; i < 11; i++) + for (i = 0; i < NUM_BAR_SEGMENTS; i++) { - if (sContestResults->data->unkC[monId] >= (i + 1) * 8) - var0 = 8; - else if (sContestResults->data->unkC[monId] >= i * 8) - var0 = sContestResults->data->unkC[monId] % 8; + if (sContestResults->data->barLength[monId] >= (i + 1) * BAR_SEGMENT_LENGTH) + tileOffset = 8; // Bar segment is full + else if (sContestResults->data->barLength[monId] >= i * BAR_SEGMENT_LENGTH) + tileOffset = sContestResults->data->barLength[monId] % 8; // Bar segment is between full and empty else - var0 = 0; + tileOffset = 0; // Bar segment is empty - if (var0 < 4) - tileNum = 0x504C + var0; + // The first 4 bar segment tiles are not adjacent in the tileset to the + // remaining bar segment tiles; choose the base tile number accordingly. + if (tileOffset < 4) + tileNum = 0x504C + tileOffset; else - tileNum = 0x5057 + var0; + tileNum = 0x5057 + tileOffset; FillBgTilemapBufferRect_Palette0(2, tileNum, i + 7, monId * 3 + 6, 1, 1); } diff --git a/src/credits.c b/src/credits.c index 43c8d6628..33362fb38 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1285,18 +1285,18 @@ static void ResetCreditsTasks(u8 taskId) gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY; } -static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 palOffset) +static void LoadTheEndScreen(u16 tileOffsetLoad, u16 tileOffsetWrite, u16 palOffset) { u16 baseTile; u16 i; - LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0)); + LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + tileOffsetLoad)); LoadPalette(gIntroCopyright_Pal, palOffset, sizeof(gIntroCopyright_Pal)); baseTile = (palOffset / 16) << 12; for (i = 0; i < 32 * 32; i++) - ((u16 *) (VRAM + arg1))[i] = baseTile + 1; + ((u16 *) (VRAM + tileOffsetWrite))[i] = baseTile + 1; } static u16 GetLetterMapTile(u8 baseTiles) diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h index 8738b0de6..f09448b82 100644 --- a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h +++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h @@ -1038,7 +1038,7 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round20[] = } }; -static const struct PyramidWildMon *const sOpenLevelWildMonPointers[] = +static const struct PyramidWildMon *const sOpenLevelWildMonPointers[TOTAL_ROUNDS] = { sOpenLevelWildMons_Round1, sOpenLevelWildMons_Round2, diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h index 75785b258..c13e6a8c9 100644 --- a/src/data/battle_frontier/trainer_hill.h +++ b/src/data/battle_frontier/trainer_hill.h @@ -1,20 +1,23 @@ -#define TRAINER_HILL_OTID 0x10000000 - // NOTE: Each of these macros turn data into one byte. Therefore ranges for all arguments is 0-15 -// See struct TrHillDisplay for more info about each +// See struct TrainerHillFloorMap for more info about each #define COORDS_XY(x,y) ((y<<4)|(x)) #define TRAINER_DIRS(a, b) (((a-1)<<4)|(b-1)) #define TRAINER_RANGE(a, b) ((a<<4)|(b)) -static const struct TrHillTag sDataTagJPDefault = { +// WARNING: While not referenced directly, the floor data in this file is referenced by virtue +// of coming after its corresponding challenge (see SetUpDataStruct in trainer_hill.c). +// Do not insert data between a pair of 'sChallenge_Mode' and 'sFloors_Mode'. + +// Unused +static const struct TrainerHillChallenge sChallenge_JPDefault = { .numTrainers = NUM_TRAINER_HILL_TRAINERS_JP, .unused1 = 1, .numFloors = NUM_TRAINER_HILL_FLOORS_JP, .checksum = 0x0 }; - -static const struct TrHillFloor sDataTagJPDefault_Floors[] = { +// Unused +static const struct TrainerHillFloor sFloors_JPDefault[] = { [0] = { .trainerNum1 = 0, .trainerNum2 = 0, @@ -22,7 +25,7 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { [0] = { .name = __("シゲノブ$$$$ "), .facilityClass = FACILITY_CLASS_YOUNGSTER, - .unused = 0x1, + .unused = TRUE, .speechBefore = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_EXCL, EC_WORD_THEY_WERE, EC_WORD_OPPONENT, EC_WORD_CAN }, .speechWin = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_WEAK, EC_WORD_OF, EC_WORD_WERE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechLose = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_STRONG, EC_WORD_HEY_QUES, EC_WORD_EXCL, EC_WORD_EXCL }, @@ -32,13 +35,10 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .species = SPECIES_ZIGZAGOON, .heldItem = ITEM_SITRUS_BERRY, .moves = { MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_GROWL, MOVE_TAIL_WHIP }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, .speedEV = 100, - .spAttackEV = 0, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -50,18 +50,14 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("ジグザグマ$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [1] = { .species = SPECIES_SHROOMISH, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_POISON_POWDER, MOVE_GROWTH }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 120, - .attackEV = 0, .defenseEV = 120, - .speedEV = 0, .spAttackEV = 150, .spDefenseEV = 120, .otId = TRAINER_HILL_OTID, @@ -74,19 +70,15 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キノココ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [2] = { .species = SPECIES_SANDSHREW, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_SCRATCH, MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SWIFT }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, - .spAttackEV = 0, .spDefenseEV = 200, .otId = TRAINER_HILL_OTID, .hpIV = 5, @@ -98,35 +90,32 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("サンド$$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, - [3] = NULL_BATTLE_TOWER_POKEMON, - [4] = NULL_BATTLE_TOWER_POKEMON, - [5] = NULL_BATTLE_TOWER_POKEMON + [3] = DUMMY_HILL_MON, + [4] = DUMMY_HILL_MON, + [5] = DUMMY_HILL_MON } }, [1] = { .name = __("アカリ$$$$$ "), .facilityClass = FACILITY_CLASS_PARASOL_LADY, - .unused = 0x1, + .unused = TRUE, .speechBefore = { EC_WORD_SHE, EC_WORD_EVERY, EC_WORD_TYPE, EC_WORD_ADORE, EC_WORD_FOR, EC_WORD_EXCL }, .speechWin = { EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_WONDER, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_EXCL }, .speechLose = { EC_WORD_OH_QUES, EC_MOVE(EARTHQUAKE), EC_WORD_EXISTS, EC_WORD_OF, EC_WORD_WITHOUT, EC_WORD_EXCL }, .speechAfter = { EC_WORD_YOU_RE, EC_WORD_PROBABLY, EC_WORD_END, EC_WORD_UNTIL, EC_WORD_GOING, EC_WORD_ANYWHERE }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_WINGULL, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_WATER_GUN, MOVE_WING_ATTACK, MOVE_GROWL, MOVE_SUPERSONIC }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -139,18 +128,15 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("キャモメ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_NUMEL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_EMBER, MOVE_DIG, MOVE_TACKLE, MOVE_FOCUS_ENERGY }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 110, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -163,18 +149,15 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ドンメル$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_SURSKIT, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_BUBBLE_BEAM, MOVE_MUD_SHOT, MOVE_QUICK_ATTACK, MOVE_AGILITY }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -187,34 +170,17 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("アメタマ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, }, - .display = { - .metatileData = { - 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x08, - 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, - 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, - 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x08, - 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08, - 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, - 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08, - 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x08, - 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = { 0x0381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }, - .coords = { COORDS_XY(8,2), COORDS_XY(8,7) }, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(2, 3) + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_0/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_0/collision.bin"), + .trainerCoords = { COORDS_XY(8,2), COORDS_XY(8,7) }, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(2, 3) } }, [1] = { @@ -224,7 +190,7 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { [0] = { .name = __("シゲゾウ$$$$ "), .facilityClass = FACILITY_CLASS_NINJA_BOY, - .unused = 0x1, + .unused = TRUE, .speechBefore = { EC_WORD_WIN, EC_WORD_UNTIL, EC_WORD_DAUGHTER, EC_MOVE(CONSTRICT), EC_WORD_OF, EC_WORD_WERE }, .speechWin = { EC_MOVE(CONSTRICT), EC_WORD_UNTIL, EC_WORD_LESS, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_EXCL }, .speechLose = { EC_WORD_YET, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_URGH, EC_WORD_ALMOST, EC_WORD_POWER, EC_WORD_NONE }, @@ -234,14 +200,10 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .species = SPECIES_ELECTRIKE, .heldItem = ITEM_CHERI_BERRY, .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 120, .attackEV = 120, - .defenseEV = 0, .speedEV = 120, .spAttackEV = 150, - .spDefenseEV = 0, .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, @@ -252,18 +214,15 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("ラクライ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [1] = { .species = SPECIES_CORPHISH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_KNOCK_OFF, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_PROTECT }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 100, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -276,18 +235,15 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 1, .personality = 0x96, .nickname = __("ヘイガニ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [2] = { .species = SPECIES_BALTOY, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYBEAM, MOVE_ROCK_TOMB, MOVE_MUD_SLAP, MOVE_HARDEN }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -300,35 +256,32 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ヤジロン$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, - [3] = NULL_BATTLE_TOWER_POKEMON, - [4] = NULL_BATTLE_TOWER_POKEMON, - [5] = NULL_BATTLE_TOWER_POKEMON, + [3] = DUMMY_HILL_MON, + [4] = DUMMY_HILL_MON, + [5] = DUMMY_HILL_MON, } }, [1] = { .name = __("ナミコ$$$$$ "), .facilityClass = FACILITY_CLASS_BEAUTY, - .unused = 0x1, + .unused = TRUE, .speechBefore = { EC_WORD_SISTER, EC_WORD_ALTHOUGH, EC_WORD_KIND, EC_WORD_MATCH, EC_WORD_PLEASE, EC_WORD_WITHOUT }, .speechWin = { EC_WORD_KIND, EC_WORD_ELLIPSIS, EC_WORD_INSTEAD, EC_WORD_DEEP, EC_WORD_WEAK, EC_WORD_QUES }, .speechLose = { EC_WORD_AWFUL, EC_WORD_GWAH, EC_WORD_HOPELESS, EC_WORD_CAN_T_WIN, EC_WORD_IS, EC_WORD_NONE }, .speechAfter = { EC_WORD_AWW, EC_EMPTY_WORD, EC_EMPTY_WORD, EC_WORD_ALMOST, EC_WORD_GOOD, EC_WORD_ANYWHERE }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = { MOVE_ICE_BALL, MOVE_BODY_SLAM, MOVE_WATER_GUN, MOVE_ENCORE }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 100, .defenseEV = 100, - .speedEV = 0, .spAttackEV = 110, .spDefenseEV = 100, .otId = TRAINER_HILL_OTID, @@ -341,16 +294,13 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("タマザラシ$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_SPOINK, .heldItem = ITEM_PERSIM_BERRY, .moves = { MOVE_PSYWAVE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_MAGIC_COAT }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, - .attackEV = 0, .defenseEV = 100, .speedEV = 100, .spAttackEV = 110, @@ -365,14 +315,12 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 1, .personality = 0xf, .nickname = __("ãƒ�ãƒ�ブー$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_POOCHYENA, .heldItem = ITEM_PECHA_BERRY, .moves = { MOVE_BITE, MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_SCARY_FACE }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 70, .attackEV = 80, .defenseEV = 80, @@ -389,39 +337,22 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ãƒ�ãƒ�エナ$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, }, - .display = { - .metatileData = { - 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x08, - 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, - 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, - 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, - 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x08, - 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08, - 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08, - 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x08, - 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x08, - 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x08, - 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, - 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08, - 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = { 0x0381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff }, - .coords = { COORDS_XY(7,6), COORDS_XY(7,10) }, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(3, 3) + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_jp/floor_1/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_jp/floor_1/collision.bin"), + .trainerCoords = { COORDS_XY(7,6), COORDS_XY(7,10) }, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3) } }, }; -static const struct TrHillTag sDataTagNormal = +static const struct TrainerHillChallenge sChallenge_Normal = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 2, @@ -429,7 +360,7 @@ static const struct TrHillTag sDataTagNormal = .checksum = 0x00051E05 }; -static const struct TrHillFloor sDataTagNormal_Floors[] = +static const struct TrainerHillFloor sFloors_Normal[] = { [0] = { @@ -441,7 +372,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("ALAINA"), .facilityClass = FACILITY_CLASS_HEX_MANIAC, - .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_CHOOSE, EC_WORD_NOT, EC_WORD_TO, EC_WORD_BELIEVE}, .speechWin = {EC_WORD_A, EC_WORD_SUPER, EC_WORD_NATURAL, EC_WORD_POWER, EC_WORD_HAS, EC_WORD_COME}, .speechLose = {EC_WORD_THIS, EC_WORD_MUST_BE, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_EXCL, EC_EMPTY_WORD}, @@ -453,8 +383,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_MISDREAVUS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY}, - .level = 0, - .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -468,15 +396,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MISDREAVUS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_SOLROCK, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, - .level = 0, - .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -491,15 +417,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SOLROCK"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_CLAYDOL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .defenseEV = 135, .spDefenseEV = 120, @@ -513,15 +437,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xC, .nickname = _("CLAYDOL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_WEEZING, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_DESTINY_BOND}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -542,8 +464,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_LUNATONE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_CALM_MIND}, - .level = 0, - .ppBonuses = 0, .hpEV = 200, .defenseEV = 100, .spAttackEV = 110, @@ -558,15 +478,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("LUNATONE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_FLYGON, .heldItem = ITEM_CHOICE_BAND, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_FLAMETHROWER}, - .level = 0, - .ppBonuses = 0, .attackEV = 155, .speedEV = 255, .spAttackEV = 100, @@ -580,7 +498,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x83, .nickname = _("FLYGON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -588,7 +506,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("ALFONSO"), .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_TAKE, EC_WORD_A, EC_WORD_TRAIN, EC_EMPTY_WORD}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(SUPERSONIC), EC_WORD_ON, EC_WORD_MY, EC_WORD_BIKE}, .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL, EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_IT}, @@ -600,8 +517,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_SEALEO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_ICE_BALL, MOVE_ENCORE, MOVE_HAIL}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -614,15 +529,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("SEALEO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_AMPHAROS, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -635,15 +548,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("AMPHAROS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_MACHOKE, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MUD_SLAP, MOVE_COUNTER, MOVE_SCARY_FACE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -656,15 +567,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOKE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_FLAREON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_BLAST, MOVE_BITE, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -677,15 +586,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x28, .nickname = _("FLAREON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_MAGNETON, .heldItem = ITEM_MAGNET, .moves = {MOVE_ZAP_CANNON, MOVE_THUNDER_WAVE, MOVE_SCREECH, MOVE_METAL_SOUND}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -698,15 +605,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x0, .nickname = _("MAGNETON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_PINSIR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK}, - .level = 0, - .ppBonuses = 0, .hpEV = 200, .defenseEV = 155, .spDefenseEV = 155, @@ -720,35 +625,18 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x85, .nickname = _("PINSIR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x08, - 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x08, - 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x08, - 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x08, - 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x08, - 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x08, - 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x08, - 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x08, - 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x08, - 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x08, - 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x08, - 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, - 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, - 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x08, - 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x3FE5, 0x0401, 0xBDED, 0x8425, 0xDFBD, 0x0221, 0x7E7F, 0x0941, 0x7F7D, 0x0911, 0x7FF7, 0x4101, 0x79F9, 0x0803, 0xFFFF}, - .coords = {COORDS_XY(11,1), COORDS_XY(13,2)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .range = TRAINER_RANGE(2, 1), - } + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_0/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_0/collision.bin"), + .trainerCoords = {COORDS_XY(11,1), COORDS_XY(13,2)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(2, 1), + } }, [1] = { @@ -760,7 +648,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("THEODORE"), .facilityClass = FACILITY_CLASS_BLACK_BELT, - .unused = 0, .speechBefore = {EC_WORD_MY, EC_WORD_POWER, EC_WORD_WILL, EC_MOVE2(STOMP), EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AT, EC_WORD_IT, EC_WORD_TOO, EC_WORD_HARD}, @@ -772,8 +659,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_MEDITITE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -787,15 +672,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x80, .nickname = _("MEDITITE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_HERACROSS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -809,15 +692,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 1, .personality = 0x80, .nickname = _("HERACROSS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_HITMONTOP, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -831,15 +712,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONTOP"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_MACHOP, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -853,15 +732,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x4E, .nickname = _("MACHOP"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_PINSIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -875,15 +752,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x80, .nickname = _("PINSIR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -897,7 +772,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -905,7 +780,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("JAYDEN"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, - .unused = 0, .speechBefore = {EC_WORD_SOME, EC_WORD_THINGS, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_DO, EC_WORD_ALONE}, .speechWin = {EC_WORD_YOU, EC_WORD_WIN, EC_WORD_AS, EC_WORD_A, EC_WORD_GROUP, EC_EMPTY_WORD}, .speechLose = {EC_WORD_WE, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_TOGETHER, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -917,8 +791,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_VULPIX, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_TAIL_WHIP, MOVE_OVERHEAT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -932,15 +804,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("VULPIX"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDER_WAVE, MOVE_CHARM, MOVE_ENCORE, MOVE_SPARK}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -954,15 +824,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TOXIC, MOVE_LEECH_SEED, MOVE_SWEET_SCENT, MOVE_GIGA_DRAIN}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -976,15 +844,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 1, .personality = 0xF, .nickname = _("ROSELIA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_MR_MIME, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_SAFEGUARD, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -998,15 +864,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x82, .nickname = _("MR. MIME"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_HELPING_HAND, MOVE_THUNDER}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -1020,15 +884,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x5, .nickname = _("PLUSLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_TOGEPI, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOLLOW_ME, MOVE_METRONOME}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -1042,35 +904,18 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 1, .personality = 0x37, .nickname = _("TOGEPI"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x08, - 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x08, - 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x08, - 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, - 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08, - 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF}, - .coords = {COORDS_XY(4,11), COORDS_XY(9,14)}, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), - .range = TRAINER_RANGE(3, 5), - } + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_1/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_1/collision.bin"), + .trainerCoords = {COORDS_XY(4,11), COORDS_XY(9,14)}, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_EAST), + .trainerRanges = TRAINER_RANGE(3, 5), + } }, [2] = { @@ -1082,7 +927,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("SALVADORE"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, - .unused = 0, .speechBefore = {EC_WORD_LET_S, EC_MOVE2(WRAP), EC_WORD_THINGS, EC_WORD_UP, EC_WORD_HERE, EC_WORD_HEY_QUES}, .speechWin = {EC_WORD_WOULD, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SORRY, EC_WORD_FRIEND}, @@ -1094,8 +938,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_VAPOREON, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_HAZE, MOVE_HELPING_HAND, MOVE_TICKLE, MOVE_WATER_PULSE}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1116,8 +958,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_DODRIO, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_HAZE, MOVE_TRI_ATTACK, MOVE_TAUNT, MOVE_TORMENT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -1138,8 +978,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_OMASTAR, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HAZE, MOVE_HYDRO_PUMP, MOVE_TICKLE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1153,15 +991,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x14, .nickname = _("OMASTAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_LICKITUNG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1175,15 +1011,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LICKITUNG"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_SLOWBRO, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_BELLY_DRUM, MOVE_MUD_SLAP, MOVE_SWAGGER, MOVE_AMNESIA}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1204,8 +1038,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_LINOONE, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -1219,7 +1051,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x8, .nickname = _("LINOONE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -1227,7 +1059,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("VERONICA"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, - .unused = 0, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_STRONG, EC_WORD_BEAUTY, EC_WORD_AROUND, EC_WORD_HERE}, .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL}, @@ -1239,8 +1070,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_SKITTY, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PSYCH_UP, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_IRON_TAIL}, - .level = 0, - .ppBonuses = 0, .attackEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -1253,15 +1082,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xCB, .nickname = _("SKITTY"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MEDICHAM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -1282,8 +1109,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_STANTLER, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCH_UP, MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -1304,8 +1129,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_NIDOQUEEN, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SUPERPOWER, MOVE_BITE, MOVE_CHARM, MOVE_FLATTER}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -1326,8 +1149,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_NINETALES, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_QUICK_ATTACK, MOVE_SPITE, MOVE_TAIL_WHIP}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1341,15 +1162,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xD7, .nickname = _("NINETALES"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_CHARIZARD, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_OVERHEAT, MOVE_BEAT_UP, MOVE_SCARY_FACE, MOVE_GROWL}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -1363,35 +1182,18 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x28, .nickname = _("CHARIZARD"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x08, - 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08, - 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08, - 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x08, - 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x08, - 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x08, - }, - .collisionData = {0x0381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1}, - .coords = {COORDS_XY(5,2), COORDS_XY(9,2)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(3, 3), - } + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_2/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_2/collision.bin"), + .trainerCoords = {COORDS_XY(5,2), COORDS_XY(9,2)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(3, 3), + } }, [3] = { @@ -1403,7 +1205,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("KEENAN"), .facilityClass = FACILITY_CLASS_PSYCHIC_M, - .unused = 0, .speechBefore = {EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_HURRIED, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechWin = {EC_WORD_TOO, EC_WORD_BAD, EC_EMPTY_WORD, EC_WORD_TIME, EC_WORD_IS, EC_WORD_UP}, .speechLose = {EC_WORD_DOES, EC_WORD_THE, EC_WORD_TIME, EC_WORD_WORRY, EC_WORD_YOU, EC_WORD_QUES}, @@ -1415,8 +1216,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_ALAKAZAM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_REFLECT}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1429,15 +1228,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x41, .nickname = _("ALAKAZAM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_BLISSEY, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SKILL_SWAP, MOVE_EGG_BOMB, MOVE_THUNDERBOLT, MOVE_SING}, - .level = 0, - .ppBonuses = 0, .defenseEV = 255, .spAttackEV = 155, .spDefenseEV = 100, @@ -1451,15 +1248,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 1, .personality = 0xF, .nickname = _("BLISSEY"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_REST}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spAttackEV = 200, @@ -1473,15 +1268,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GRUMPIG"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_PROTECT}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1494,15 +1287,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 1, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_VENOMOTH, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKILL_SWAP, MOVE_SIGNAL_BEAM, MOVE_SLEEP_POWDER, MOVE_TOXIC}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1515,15 +1306,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x80, .nickname = _("VENOMOTH"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_SKILL_SWAP, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1536,7 +1325,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0xF, .nickname = _("ESPEON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -1544,7 +1333,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .name = _("KRISTINA"), .facilityClass = FACILITY_CLASS_AROMA_LADY, - .unused = 0, .speechBefore = {EC_WORD_IT_S, EC_WORD_HOT, EC_WORD_ELLIPSIS, EC_WORD_WHAT, EC_WORD_A, EC_WORD_STENCH}, .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_OFFENSIVE, EC_WORD_STENCH}, .speechLose = {EC_WORD_I, EC_MOVE2(COVET), EC_WORD_ANY, EC_WORD_STRONG, EC_WORD_STENCH, EC_EMPTY_WORD}, @@ -1556,8 +1344,6 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .species = SPECIES_WEEZING, .heldItem = ITEM_POISON_BARB, .moves = {MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_SMOKESCREEN, MOVE_HAZE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1570,15 +1356,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x3, .nickname = _("WEEZING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_GLOOM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_PETAL_DANCE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1591,15 +1375,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x8C, .nickname = _("GLOOM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_MUK, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SCREECH, MOVE_DISABLE, MOVE_SLUDGE_BOMB, MOVE_ACID_ARMOR}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -1612,15 +1394,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x3, .nickname = _("MUK"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_TROPIUS, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_SWEET_SCENT, MOVE_AERIAL_ACE}, - .level = 0, - .ppBonuses = 0, .attackEV = 120, .speedEV = 255, .spAttackEV = 135, @@ -1634,15 +1414,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x83, .nickname = _("TROPIUS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_BELLOSSOM, .heldItem = ITEM_MENTAL_HERB, .moves = {MOVE_SWEET_SCENT, MOVE_PETAL_DANCE, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1655,15 +1433,13 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x6, .nickname = _("BELLOSSOM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_MEGANIUM, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_RAZOR_LEAF, MOVE_BODY_SLAM, MOVE_LEECH_SEED, MOVE_SYNTHESIS}, - .level = 0, - .ppBonuses = 0, .attackEV = 200, .speedEV = 110, .spAttackEV = 200, @@ -1677,39 +1453,22 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = .abilityNum = 0, .personality = 0x1F, .nickname = _("MEGANIUM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, - 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x08, - 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08, - 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x08, - 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x08, - 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x08, - 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x08, - 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x08, - 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x08, - 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x0401, 0x1, 0x8401, 0x8465, 0x0445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF}, - .coords = {COORDS_XY(7,4), COORDS_XY(7,10)}, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(3, 3), - } + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_normal/floor_3/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_normal/floor_3/collision.bin"), + .trainerCoords = {COORDS_XY(7,4), COORDS_XY(7,10)}, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3), + } }, }; -static const struct TrHillTag sDataTagVariety = +static const struct TrainerHillChallenge sChallenge_Variety = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -1717,7 +1476,7 @@ static const struct TrHillTag sDataTagVariety = .checksum = 0x00054C15 }; -static const struct TrHillFloor sDataTagVariety_Floors[] = { +static const struct TrainerHillFloor sFloors_Variety[] = { [0] = { .trainerNum1 = 41, @@ -1728,7 +1487,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("TERRANCE"), .facilityClass = FACILITY_CLASS_GENTLEMAN, - .unused = 0, .speechBefore = {EC_WORD_GOOD, EC_WORD_CHILDREN, EC_WORD_WILL, EC_WORD_GET, EC_WORD_A, EC_MOVE2(PRESENT)}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_IS, EC_WORD_YOUR, EC_MOVE2(PRESENT)}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_TO, EC_WORD_YOU, EC_EMPTY_WORD}, @@ -1740,8 +1498,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_DELIBIRD, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SPLASH, MOVE_HAIL, MOVE_PROTECT}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1754,15 +1510,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("DELIBIRD"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_CLEFAIRY, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_MOONLIGHT}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1775,15 +1529,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CLEFAIRY"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_PIKACHU, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_AGILITY}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1796,15 +1548,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("PIKACHU"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_MARILL, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_ENDURE}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1817,15 +1567,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 1, .personality = 0x8A, .nickname = _("MARILL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_SING, MOVE_DISABLE, MOVE_REST}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1838,15 +1586,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("JIGGLYPUFF"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_TOGETIC, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_PRESENT, MOVE_CHARM, MOVE_SWEET_KISS, MOVE_WISH}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1859,7 +1605,7 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 1, .personality = 0x26, .nickname = _("TOGETIC"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -1867,7 +1613,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("ELIZABETH"), .facilityClass = FACILITY_CLASS_LADY, - .unused = 0, .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SENSE, EC_WORD_ME, EC_MOVE(FOCUS_ENERGY), EC_WORD_QUES}, .speechWin = {EC_WORD_THAT_S, EC_WORD_ABOUT, EC_WORD_RIGHT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_THINK}, .speechLose = {EC_WORD_THINGS, EC_WORD_DON_T, EC_WORD_ALWAYS, EC_WORD_WORK, EC_WORD_OUT, EC_EMPTY_WORD}, @@ -1879,8 +1624,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_WIGGLYTUFF, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SING, MOVE_DREAM_EATER}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1893,15 +1636,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xC1, .nickname = _("WIGGLYTUFF"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_SABLEYE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1914,15 +1655,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SABLEYE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_GRUMPIG, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_BOUNCE, MOVE_FUTURE_SIGHT}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1935,15 +1674,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("GRUMPIG"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_CORSOLA, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_BUBBLE_BEAM, MOVE_ROCK_BLAST, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1956,15 +1693,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x12, .nickname = _("CORSOLA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_CLAMPERL, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_WHIRLPOOL, MOVE_IRON_DEFENSE, MOVE_ENDURE, MOVE_CONFUSE_RAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1977,15 +1712,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("CLAMPERL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_DIVE, MOVE_ICY_WIND, MOVE_SWIFT, MOVE_SKILL_SWAP}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -1998,34 +1731,17 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x08, - 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x08, - 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x08, - 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x08, - 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x08, - 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x08, - }, - .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1}, - .coords = {COORDS_XY(5,8), COORDS_XY(9,8)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_0/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_0/collision.bin"), + .trainerCoords = {COORDS_XY(5,8), COORDS_XY(9,8)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(3, 3), } }, [1] = @@ -2038,7 +1754,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("ANNABELL"), .facilityClass = FACILITY_CLASS_PARASOL_LADY, - .unused = 0, .speechBefore = {EC_WORD_HI, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_UPBEAT, EC_WORD_QUES}, .speechWin = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_WELL, EC_WORD_QUES, EC_EMPTY_WORD}, .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_SEE, EC_WORD_YOU_RE, EC_WORD_FEELING, EC_WORD_GREAT}, @@ -2050,8 +1765,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_JIGGLYPUFF, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SING, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2068,15 +1781,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JIGGLYPUFF"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_JYNX, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_PERISH_SONG, MOVE_FAKE_TEARS, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2093,15 +1804,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("JYNX"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HOWL, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2118,15 +1827,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("EXPLOUD"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_ABSOL, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2143,15 +1850,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("ABSOL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_PIDGEOTTO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_FEATHER_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2168,15 +1873,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("PIDGEOTTO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 85, .attackEV = 85, .defenseEV = 85, @@ -2193,7 +1896,7 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("ALTARIA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -2201,7 +1904,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("COLEMAN"), .facilityClass = FACILITY_CLASS_COLLECTOR, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_SOMEONE, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL}, .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(HEAL_BELL), EC_WORD_TO_ME, EC_WORD_EXCL}, @@ -2213,8 +1915,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_CHIMECHO, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2228,15 +1928,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("CHIMECHO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_WHISMUR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2250,15 +1948,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("WHISMUR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_YANMA, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2272,15 +1968,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("YANMA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2294,15 +1988,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ILLUMISE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_SPHEAL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -2316,15 +2008,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SPHEAL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_VIGOROTH, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -2338,34 +2028,17 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("VIGOROTH"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x08, - 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x08, - 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x08, - 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x08, - 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, - 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, - 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08, - 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x08, - 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x08, - 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x08, - 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x08, - 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x08, - 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x08, - 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, - .coords = {COORDS_XY(3,8), COORDS_XY(11,8)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(7, 7), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_1/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_1/collision.bin"), + .trainerCoords = {COORDS_XY(3,8), COORDS_XY(11,8)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(7, 7), } }, [2] = @@ -2378,7 +2051,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("ENRIQUE"), .facilityClass = FACILITY_CLASS_RICH_BOY, - .unused = 0, .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_TIME}, .speechWin = {EC_WORD_HEY, EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_WHAT_S_UP_QUES, EC_EMPTY_WORD, EC_EMPTY_WORD}, .speechLose = {EC_WORD_AWW, EC_WORD_COULDN_T, EC_WORD_YOU, EC_WORD_LET_ME_WIN, EC_WORD_QUES, EC_EMPTY_WORD}, @@ -2390,8 +2062,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_WOOPER, .heldItem = ITEM_FIGY_BERRY, .moves = {MOVE_RAIN_DANCE, MOVE_YAWN, MOVE_SURF, MOVE_HAZE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2405,15 +2075,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("WOOPER"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_POLIWAG, .heldItem = ITEM_WIKI_BERRY, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_MIST, MOVE_HYPNOSIS}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -2427,15 +2095,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 1, .personality = 0x3, .nickname = _("POLIWAG"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_PSYDUCK, .heldItem = ITEM_AGUAV_BERRY, .moves = {MOVE_HYPNOSIS, MOVE_SURF, MOVE_DISABLE, MOVE_SEISMIC_TOSS}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -2449,15 +2115,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("PSYDUCK"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_RHYDON, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2478,8 +2142,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_RHYHORN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2500,8 +2162,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_CUBONE, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2523,7 +2183,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("COLLEEN"), .facilityClass = FACILITY_CLASS_LADY, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_OUT}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ROCK, EC_WORD_THING, EC_WORD_EXCL}, .speechLose = {EC_WORD_GO_AHEAD, EC_WORD_AND, EC_WORD_CRUSH, EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ELLIPSIS}, @@ -2535,8 +2194,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_MAGNEMITE, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_ZAP_CANNON, MOVE_SPARK, MOVE_THUNDER_SHOCK}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2550,15 +2207,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MAGNEMITE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_ELECTABUZZ, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_SHOCK_WAVE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -2572,15 +2227,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x41, .nickname = _("ELECTABUZZ"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_FLAAFFY, .heldItem = ITEM_MAGNET, .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_SHOCK_WAVE, MOVE_THUNDER_SHOCK}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .spAttackEV = 130, .otId = TRAINER_HILL_OTID, @@ -2593,15 +2246,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("FLAAFFY"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_BALTOY, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2622,8 +2273,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_PINECO, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -2644,8 +2293,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_VOLTORB, .heldItem = ITEM_SILK_SCARF, .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -2664,29 +2311,12 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08, - 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08, - 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x08, - }, - .collisionData = {0x0381, 0x0381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1}, - .coords = {COORDS_XY(9,1), COORDS_XY(14,1)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(4, 4), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_2/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_2/collision.bin"), + .trainerCoords = {COORDS_XY(9,1), COORDS_XY(14,1)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(4, 4), } }, [3] = @@ -2699,7 +2329,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("KIMBERLY"), .facilityClass = FACILITY_CLASS_POKEFAN_F, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_WORKING, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_KID, EC_WORD_IT, EC_WORD_SEEMS}, @@ -2711,8 +2340,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2725,15 +2352,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x202, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_UNOWN, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2746,15 +2371,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x10001, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_UNOWN, .heldItem = ITEM_BLACK_BELT, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2767,15 +2390,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x102, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2789,15 +2410,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x88FE980F, .nickname = _("SPINDA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_PLUSLE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2810,15 +2429,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PLUSLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_VOLBEAT, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_SIGNAL_BEAM, MOVE_SOLAR_BEAM, MOVE_MOONLIGHT}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2831,7 +2448,7 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("VOLBEAT"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -2839,7 +2456,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .name = _("FRANCISCO"), .facilityClass = FACILITY_CLASS_POKEFAN_M, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO, EC_EMPTY_WORD}, .speechWin = {EC_WORD_SO, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_LOSE, EC_EMPTY_WORD}, .speechLose = {EC_WORD_NO, EC_WORD_WONDER, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_BEAT, EC_WORD_YOU}, @@ -2851,8 +2467,6 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .species = SPECIES_SPINDA, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -2866,15 +2480,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xE2880098, .nickname = _("SPINDA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MINUN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2887,15 +2499,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("MINUN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_ILLUMISE, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_HELPING_HAND, MOVE_WISH, MOVE_THUNDERBOLT, MOVE_MOONLIGHT}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2908,15 +2518,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ILLUMISE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_UNOWN, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2929,15 +2537,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x302, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_UNOWN, .heldItem = ITEM_SOFT_SAND, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2950,15 +2556,13 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x203, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_UNOWN, .heldItem = ITEM_TWISTED_SPOON, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -2971,39 +2575,22 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { .abilityNum = 0, .personality = 0x301, .nickname = _("UNOWN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, - 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, - 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08, - 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x08, - 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x08, - 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x08, - 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x08, - 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, - 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x08, - 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x08, - 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x08, - 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08, - 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x08, - 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF}, - .coords = {COORDS_XY(10,2), COORDS_XY(14,2)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_variety/floor_3/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_variety/floor_3/collision.bin"), + .trainerCoords = {COORDS_XY(10,2), COORDS_XY(14,2)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(3, 3), } }, }; -static const struct TrHillTag sDataTagUnique = +static const struct TrainerHillChallenge sChallenge_Unique = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 3, @@ -3011,7 +2598,7 @@ static const struct TrHillTag sDataTagUnique = .checksum = 0x000652F3 }; -static const struct TrHillFloor sDataTagUnique_Floors[] = { +static const struct TrainerHillFloor sFloors_Unique[] = { [0] = { .trainerNum1 = 49, @@ -3022,7 +2609,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("MEREDITH"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, - .unused = 0, .speechBefore = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_I, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, .speechWin = {EC_WORD_OH, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_UM, EC_WORD_ELLIPSIS, EC_WORD_YAY}, .speechLose = {EC_WORD_UM, EC_WORD_ELLIPSIS, EC_EMPTY_WORD, EC_WORD_WAAAH, EC_WORD_ELLIPSIS, EC_EMPTY_WORD}, @@ -3034,8 +2620,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_SUNFLORA, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_PETAL_DANCE, MOVE_GRASS_WHISTLE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .defenseEV = 155, .spDefenseEV = 100, @@ -3049,15 +2633,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("SUNFLORA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_TANGELA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_AMNESIA, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3070,15 +2652,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x91, .nickname = _("TANGELA"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_VENUSAUR, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 100, .attackEV = 110, .defenseEV = 100, @@ -3094,15 +2674,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x1F, .nickname = _("VENUSAUR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_LANTURN, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_SPARK, MOVE_WATER_PULSE, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3115,15 +2693,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("LANTURN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_MANECTRIC, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_THUNDERBOLT, MOVE_HEADBUTT, MOVE_BITE, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3136,15 +2712,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("MANECTRIC"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_RAIKOU, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDER, MOVE_CRUNCH, MOVE_ROAR, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3157,7 +2731,7 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("RAIKOU"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -3165,7 +2739,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("BERNARD"), .facilityClass = FACILITY_CLASS_KINDLER, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_HOT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_COOL, EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_QUES}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_PERSON}, @@ -3177,8 +2750,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_MUD_SPORT, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .hpEV = 155, .defenseEV = 100, .spDefenseEV = 255, @@ -3192,15 +2763,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x2F, .nickname = _("RELICANTH"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_GOLDUCK, .heldItem = ITEM_LAX_INCENSE, .moves = {MOVE_SURF, MOVE_PSYBEAM, MOVE_BRICK_BREAK, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3213,15 +2782,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GOLDUCK"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_BLASTOISE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_MIRROR_COAT, MOVE_RAIN_DANCE}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3234,15 +2801,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLASTOISE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_MAGCARGO, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_HEAT_WAVE, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spDefenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -3255,15 +2820,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0x93, .nickname = _("MAGCARGO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_RAPIDASH, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3276,15 +2839,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("RAPIDASH"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_MOLTRES, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_SKY_ATTACK, MOVE_AERIAL_ACE, MOVE_ROAR, MOVE_SUNNY_DAY}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -3297,34 +2858,17 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("MOLTRES"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x08, - 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, - 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x08, - 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x08, - 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x08, - 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, - 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x08, - 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x08, - 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF}, - .coords = {COORDS_XY(4,3), COORDS_XY(7,3)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(2, 2), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_0/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_0/collision.bin"), + .trainerCoords = {COORDS_XY(4,3), COORDS_XY(7,3)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(2, 2), } }, [1] = @@ -3337,7 +2881,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("ABRAHAM"), .facilityClass = FACILITY_CLASS_RUIN_MANIAC, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST}, .speechWin = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_GREAT, EC_WORD_POKEMON, EC_WORD_IT, EC_WORD_IS}, .speechLose = {EC_WORD_I, EC_WORD_CONFUSED, EC_WORD_A, EC_WORD_MOVE, EC_WORD_WITH, EC_WORD_ANOTHER}, @@ -3349,8 +2892,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IMPRISON}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -3364,15 +2905,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_REST, MOVE_THUNDER_WAVE, MOVE_FLAMETHROWER, MOVE_IMPRISON}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3386,15 +2925,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x87, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_EXPLOSION}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 6, .speedEV = 252, @@ -3408,15 +2945,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_IMPRISON}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3430,15 +2965,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_IMPRISON}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3452,15 +2985,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_SMEARGLE, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_DESTINY_BOND}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3474,7 +3005,7 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("SMEARGLE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -3482,7 +3013,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("LUC"), .facilityClass = FACILITY_CLASS_TUBER_M, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_RARE, EC_WORD_MOVE}, .speechWin = {EC_WORD_MY, EC_WORD_RARE, EC_WORD_MOVE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES}, .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_MOVE, EC_WORD_QUES}, @@ -3494,8 +3024,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_STARYU, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CAMOUFLAGE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3509,15 +3037,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARYU"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MEOWTH, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PAY_DAY, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3531,15 +3057,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xD, .nickname = _("MEOWTH"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_BLAZIKEN, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_BLAZE_KICK, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -3553,15 +3077,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("BLAZIKEN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_CUBONE, .heldItem = ITEM_THICK_CLUB, .moves = {MOVE_BONEMERANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .spDefenseEV = 252, @@ -3575,15 +3097,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0x16, .nickname = _("CUBONE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_BEEDRILL, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_TWINEEDLE, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .otId = TRAINER_HILL_OTID, @@ -3596,15 +3116,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x8A, .nickname = _("BEEDRILL"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_RATICATE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SUPER_FANG, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -3618,34 +3136,17 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("RATICATE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, - 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x08, - 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x08, - 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x08, - 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x08, - 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x08, - 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x08, - 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x08, - 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x08, - 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x08, - 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x08, - 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x08, - 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x08, - 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x7C1, 0x8AA1, 0x0209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF}, - .coords = {COORDS_XY(9,6), COORDS_XY(13,6)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_1/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_1/collision.bin"), + .trainerCoords = {COORDS_XY(9,6), COORDS_XY(13,6)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(3, 3), } }, [2] = @@ -3658,7 +3159,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("BREYDEN"), .facilityClass = FACILITY_CLASS_YOUNGSTER, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CARE, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_A_LOT}, .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_CAN, EC_WORD_DO, EC_WORD_IT, EC_WORD_ALL}, .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_LIKE, EC_WORD_WE, EC_WORD_ALWAYS, EC_WORD_WIN}, @@ -3670,8 +3170,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_CHARMELEON, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_FIRE_SPIN, MOVE_DRAGON_RAGE, MOVE_FLAMETHROWER, MOVE_SLASH}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -3692,8 +3190,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_WARTORTLE, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_HYDRO_PUMP, MOVE_SKULL_BASH, MOVE_RAIN_DANCE, MOVE_PROTECT}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .otId = TRAINER_HILL_OTID, @@ -3713,8 +3209,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_IVYSAUR, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SYNTHESIS, MOVE_GROWTH, MOVE_SWEET_SCENT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spAttackEV = 252, @@ -3735,8 +3229,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_BAYLEEF, .heldItem = ITEM_MIRACLE_SEED, .moves = {MOVE_SOLAR_BEAM, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .attackEV = 130, .spAttackEV = 130, @@ -3757,8 +3249,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_CROCONAW, .heldItem = ITEM_MYSTIC_WATER, .moves = {MOVE_SCARY_FACE, MOVE_SLASH, MOVE_HYDRO_PUMP, MOVE_SCREECH}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .speedEV = 6, @@ -3779,8 +3269,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_QUILAVA, .heldItem = ITEM_CHARCOAL, .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_FLAME_WHEEL, MOVE_SWIFT}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3802,7 +3290,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("ANIYA"), .facilityClass = FACILITY_CLASS_TUBER_F, - .unused = 0, .speechBefore = {EC_WORD_SOMEONE, EC_WORD_GOT, EC_WORD_ME, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_EGG}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NEW, EC_WORD_AT, EC_WORD_THIS, EC_WORD_EXCL}, .speechLose = {EC_WORD_OH, EC_WORD_BUT, EC_WORD_ELLIPSIS, EC_WORD_WHY, EC_WORD_WHY, EC_WORD_QUES_EXCL}, @@ -3814,8 +3301,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_SMOOCHUM, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_SWEET_KISS, MOVE_FAKE_TEARS}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3836,8 +3321,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_AZURILL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SURF, MOVE_SING, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3858,8 +3341,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_ELEKID, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3880,8 +3361,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_CLEFFA, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SWEET_KISS, MOVE_SING, MOVE_METRONOME}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -3902,8 +3381,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_WYNAUT, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -3924,8 +3401,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_MAGBY, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_FIRE_BLAST, MOVE_CONFUSE_RAY, MOVE_THUNDER_PUNCH, MOVE_BARRIER}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -3944,29 +3419,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x08, - 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x08, - 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, - 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x08, - 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x08, - 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x08, - 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, - 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, - 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, - 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08, - 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, - 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x08, - 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x08, - 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF}, - .coords = {COORDS_XY(6,9), COORDS_XY(8,9)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(1, 1), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_2/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_2/collision.bin"), + .trainerCoords = {COORDS_XY(6,9), COORDS_XY(8,9)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(1, 1), } }, [3] = @@ -3979,7 +3437,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("DANE"), .facilityClass = FACILITY_CLASS_BIRD_KEEPER, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_VACATION}, .speechWin = {EC_WORD_IT_S, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_TRAVEL, EC_WORD_AND, EC_WORD_BATTLE}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_MY, EC_WORD_RARE, EC_WORD_POKEMON, EC_WORD_EXCL}, @@ -3991,8 +3448,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_SUDOWOODO, .heldItem = ITEM_SITRUS_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_BLOCK, MOVE_TOXIC, MOVE_EXPLOSION}, - .level = 0, - .ppBonuses = 0, .hpEV = 100, .attackEV = 255, .spDefenseEV = 155, @@ -4006,15 +3461,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SUDOWOODO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_DISABLE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -4027,15 +3480,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0x8C, .nickname = _("SLOWKING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_ENTEI, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_FIRE_SPIN, MOVE_ROAR}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4048,15 +3499,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ENTEI"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_HITMONCHAN, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_PUNCH, MOVE_DETECT, MOVE_COUNTER, MOVE_SKY_UPPERCUT}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4069,15 +3518,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONCHAN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_MANTINE, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_AERIAL_ACE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .defenseEV = 255, .otId = TRAINER_HILL_OTID, @@ -4090,15 +3537,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0x6, .nickname = _("MANTINE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ZAPDOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_AGILITY}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4111,7 +3556,7 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x18, .nickname = _("ZAPDOS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -4119,7 +3564,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .name = _("STEPHANIE"), .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, - .unused = 0, .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_HOW, EC_WORD_NOW, EC_WORD_QUES}, .speechLose = {EC_WORD_YES, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_DO, EC_WORD_IT}, @@ -4131,8 +3575,6 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .species = SPECIES_HITMONLEE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .attackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4145,15 +3587,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("HITMONLEE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_PORYGON2, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_LOCK_ON, MOVE_BLIZZARD, MOVE_CONVERSION_2, MOVE_PSYCHIC}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4166,15 +3606,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("PORYGON2"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_SUICUNE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_SURF, MOVE_CALM_MIND, MOVE_MIRROR_COAT, MOVE_MIST}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4187,15 +3625,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("SUICUNE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_HOUNDOOM, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_ROAR, MOVE_WILL_O_WISP}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4208,15 +3644,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("HOUNDOOM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_STANTLER, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_CONFUSE_RAY, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_TAKE_DOWN}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -4229,15 +3663,13 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("STANTLER"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ARTICUNO, .heldItem = ITEM_NEVER_MELT_ICE, .moves = {MOVE_BLIZZARD, MOVE_SHEER_COLD, MOVE_MIST, MOVE_AERIAL_ACE}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -4250,39 +3682,22 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ARTICUNO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x08, - 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, - 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, - 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, - 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x08, - 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x08, - 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF}, - .coords = {COORDS_XY(8,2), COORDS_XY(11,5)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_unique/floor_3/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_unique/floor_3/collision.bin"), + .trainerCoords = {COORDS_XY(8,2), COORDS_XY(11,5)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3), } }, }; -static const struct TrHillTag sDataTagExpert = +static const struct TrainerHillChallenge sChallenge_Expert = { .numTrainers = NUM_TRAINER_HILL_TRAINERS, .unused1 = 1, @@ -4290,7 +3705,7 @@ static const struct TrHillTag sDataTagExpert = .checksum = 0x00061F3F }; -static const struct TrHillFloor sDataTagExpert_Floors[] = { +static const struct TrainerHillFloor sFloors_Expert[] = { [0] = { .trainerNum1 = 57, @@ -4301,7 +3716,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("ALFRED"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, - .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_CAN, EC_WORD_TAKE, EC_WORD_ON, EC_WORD_ANY, EC_WORD_TYPE}, .speechWin = {EC_WORD_WE, EC_WORD_DID, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_OKAY, EC_WORD_EXCL}, .speechLose = {EC_WORD_OUR, EC_WORD_STRATEGY, EC_WORD_ISN_T, EC_WORD_ANY, EC_WORD_GOOD, EC_WORD_ELLIPSIS}, @@ -4313,8 +3727,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_SNORLAX, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .defenseEV = 252, @@ -4328,15 +3740,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x35, .nickname = _("SNORLAX"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MILTANK, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_MILK_DRINK}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -4350,15 +3760,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MILTANK"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spAttackEV = 6, @@ -4372,15 +3780,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("URSARING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_SLAKING, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_REST}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .spDefenseEV = 252, @@ -4394,15 +3800,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("SLAKING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_KANGASKHAN, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_FAKE_OUT}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -4416,15 +3820,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("KANGASKHAN"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ZANGOOSE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_ROAR}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -4438,7 +3840,7 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("ZANGOOSE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -4446,7 +3848,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("EDIE"), .facilityClass = FACILITY_CLASS_PSYCHIC_F, - .unused = 0, .speechBefore = {EC_WORD_WE, EC_WORD_WILL_BE_HERE, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_TRAINER, EC_WORD_CHALLENGE}, .speechWin = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION, EC_WORD_EXCL}, .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THAT, EC_WORD_WON_T, EC_WORD_DO}, @@ -4458,8 +3859,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_SLOWKING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_SKILL_SWAP}, - .level = 0, - .ppBonuses = 0, .hpEV = 200, .defenseEV = 110, .spAttackEV = 200, @@ -4473,15 +3872,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("SLOWKING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_ESPEON, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_CALM_MIND, MOVE_REFLECT}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4495,15 +3892,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x28, .nickname = _("ESPEON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4517,15 +3912,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 1, .personality = 0xF, .nickname = _("STARMIE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4539,15 +3932,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GENGAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_GARDEVOIR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_MAGICAL_LEAF, MOVE_DESTINY_BOND}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4561,15 +3952,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("GARDEVOIR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_RECOVER, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4583,34 +3972,17 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("ALAKAZAM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08, - 0x31, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x3B, 0x08, - 0x69, 0x73, 0x08, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x08, 0x69, 0x73, 0x08, - 0x40, 0x3B, 0x08, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x08, 0x31, 0x41, 0x08, - 0x69, 0x41, 0x08, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x08, 0x41, 0x73, 0x08, - 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, - 0x69, 0x3B, 0x08, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x08, 0x31, 0x73, 0x08, - 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08, - 0x69, 0x41, 0x08, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x08, 0x41, 0x73, 0x08, - 0x40, 0x3B, 0x08, 0x08, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x08, 0x08, 0x31, 0x41, 0x08, - 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x08, - 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x08, - 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x08, - 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x0201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF}, - .coords = {COORDS_XY(4,7), COORDS_XY(10,7)}, - .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST), - .range = TRAINER_RANGE(5, 5), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_0/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_0/collision.bin"), + .trainerCoords = {COORDS_XY(4,7), COORDS_XY(10,7)}, + .trainerDirections = TRAINER_DIRS(DIR_WEST, DIR_EAST), + .trainerRanges = TRAINER_RANGE(5, 5), } }, [1] = @@ -4623,7 +3995,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("RODERICK"), .facilityClass = FACILITY_CLASS_COOLTRAINER_M, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_CAN, EC_WORD_WIN, EC_WORD_WITHOUT, EC_WORD_A, EC_MOVE2(HELPING_HAND)}, .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_THAT, EC_WORD_I, EC_WORD_WIN}, .speechLose = {EC_WORD_LOSING, EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SMALL, EC_WORD_ELLIPSIS}, @@ -4635,8 +4006,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_FACADE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4650,15 +4019,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("SWELLOW"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_MACHAMP, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_LOW_KICK, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4672,15 +4039,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("MACHAMP"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_URSARING, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4694,15 +4059,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("URSARING"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_KINGLER, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_RETURN, MOVE_PROTECT, MOVE_CRABHAMMER, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4716,15 +4079,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("KINGLER"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_TYRANITAR, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .defenseEV = 6, @@ -4738,15 +4099,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("TYRANITAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_DRAGONITE, .heldItem = ITEM_PERSIM_BERRY, .moves = {MOVE_BODY_SLAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .attackEV = 252, .spDefenseEV = 6, @@ -4760,7 +4119,7 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x80, .nickname = _("DRAGONITE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -4768,7 +4127,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("ALICIA"), .facilityClass = FACILITY_CLASS_COOLTRAINER_F, - .unused = 0, .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND), EC_WORD_EXCL}, .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_UNBELIEVABLE, EC_MOVE2(STRUGGLE), EC_WORD_THAT_WAS, EC_WORD_EXCL}, @@ -4780,8 +4138,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_JOLTEON, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SWAGGER}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4795,15 +4151,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("JOLTEON"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_ALAKAZAM, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_ATTRACT, MOVE_SWAGGER}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4817,15 +4171,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xA, .nickname = _("ALAKAZAM"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_STARMIE, .heldItem = ITEM_SCOPE_LENS, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_SWAGGER}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4839,15 +4191,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 1, .personality = 0xA, .nickname = _("STARMIE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_PURSUIT, MOVE_PROTECT, MOVE_ATTRACT, MOVE_WILL_O_WISP}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4861,15 +4211,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x82, .nickname = _("DUSCLOPS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_OVERHEAT, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_ATTRACT}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .speedEV = 252, .spAttackEV = 252, @@ -4883,15 +4231,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xD2, .nickname = _("NINETALES"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spDefenseEV = 6, @@ -4905,34 +4251,17 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("BANETTE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x08, - 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x08, - 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, - 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x08, - 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x08, - 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x08, - 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08, - 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x08, - 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x08, - 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, - 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, - 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x08, - 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08, - 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - }, - .collisionData = {0x0381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF}, - .coords = {COORDS_XY(7,10), COORDS_XY(7,14)}, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_1/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_1/collision.bin"), + .trainerCoords = {COORDS_XY(7,10), COORDS_XY(7,14)}, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3), } }, [2] = @@ -4945,7 +4274,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("TERRENCE"), .facilityClass = FACILITY_CLASS_EXPERT_M, - .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_THIS, EC_WORD_MATCH, EC_WORD_IS, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_EMPTY_WORD, EC_EMPTY_WORD}, @@ -4957,8 +4285,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_WOBBUFFET, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MIRROR_COAT, MOVE_COUNTER, MOVE_SAFEGUARD, MOVE_ENCORE}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -4972,15 +4298,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x94, .nickname = _("WOBBUFFET"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_EXPLOUD, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_HYPER_VOICE, MOVE_COUNTER, MOVE_REST, MOVE_ROCK_SLIDE}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -5001,8 +4325,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_CROBAT, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_TOXIC}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -5016,15 +4338,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x0, .nickname = _("CROBAT"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_DUGTRIO, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_RETURN, MOVE_SLUDGE_BOMB}, - .level = 0, - .ppBonuses = 0, .hpEV = 6, .attackEV = 252, .speedEV = 252, @@ -5038,15 +4358,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 1, .personality = 0xD, .nickname = _("DUGTRIO"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_PETAYA_BERRY, .moves = {MOVE_TORMENT, MOVE_MIRROR_COAT, MOVE_THUNDERBOLT, MOVE_LIGHT_SCREEN}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 252, .spAttackEV = 6, @@ -5067,8 +4385,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_GENGAR, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spDefenseEV = 6, @@ -5082,7 +4398,7 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("GENGAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -5090,7 +4406,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("CARLOTTA"), .facilityClass = FACILITY_CLASS_EXPERT_F, - .unused = 0, .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_WE, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PARTY, EC_WORD_LATER}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_DISAPPOINT, EC_WORD_YOU}, @@ -5102,8 +4417,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_LAPRAS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PERISH_SONG, MOVE_SING}, - .level = 0, - .ppBonuses = 0, .hpEV = 250, .defenseEV = 130, .spDefenseEV = 130, @@ -5124,8 +4437,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_ABSOL, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_PERISH_SONG, MOVE_DOUBLE_EDGE, MOVE_PROTECT, MOVE_TORMENT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .defenseEV = 6, .speedEV = 252, @@ -5146,8 +4457,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_ALTARIA, .heldItem = ITEM_KINGS_ROCK, .moves = {MOVE_PERISH_SONG, MOVE_PROTECT, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -5168,8 +4477,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_DEWGONG, .heldItem = ITEM_CHESTO_BERRY, .moves = {MOVE_ICE_BEAM, MOVE_SIGNAL_BEAM, MOVE_REST, MOVE_PERISH_SONG}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 252, .spAttackEV = 6, @@ -5190,8 +4497,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_POLITOED, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_MIND_READER, MOVE_PERISH_SONG}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .spAttackEV = 6, .spDefenseEV = 252, @@ -5212,8 +4517,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_MAROWAK, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_PERISH_SONG, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_PROTECT}, - .level = 0, - .ppBonuses = 0, .hpEV = 252, .speedEV = 6, .spDefenseEV = 252, @@ -5232,29 +4535,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { }, }, }, - .display = { - .metatileData = { - 0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, - 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x08, - 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, - 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, - 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, - 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08, - 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x08, - 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, - 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08, - }, - .collisionData = {0x0381, 0x0201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201}, - .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_2/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_2/collision.bin"), + .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3), } }, [3] = @@ -5267,7 +4553,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("NORA"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, - .unused = 0, .speechBefore = {EC_WORD_WAAAH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_WON}, .speechLose = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_LOST}, @@ -5279,8 +4564,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_FORRETRESS, .heldItem = ITEM_QUICK_CLAW, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_SPIKES}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .attackEV = 200, .spDefenseEV = 200, @@ -5294,15 +4577,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("FORRETRESS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_ELECTRODE, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5315,15 +4596,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 1, .personality = 0xC, .nickname = _("ELECTRODE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_EXEGGUTOR, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_EXPLOSION, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_SOLAR_BEAM}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5336,15 +4615,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x7F, .nickname = _("EXEGGUTOR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -5358,15 +4635,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x93, .nickname = _("DUSCLOPS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_NINETALES, .heldItem = ITEM_WHITE_HERB, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_OVERHEAT, MOVE_CONFUSE_RAY}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5379,15 +4654,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0xF, .nickname = _("NINETALES"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_THUNDER}, - .level = 0, - .ppBonuses = 0, .hpEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5400,7 +4673,7 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x96, .nickname = _("BANETTE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, @@ -5408,7 +4681,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .name = _("GAV"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, - .unused = 0, .speechBefore = {EC_WORD_WAHAHAHA, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_STOP, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_WOWEE, EC_WORD_EXCL, EC_EMPTY_WORD, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_COOL}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL}, @@ -5420,8 +4692,6 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .species = SPECIES_SALAMENCE, .heldItem = ITEM_SHELL_BELL, .moves = {MOVE_ROCK_SLIDE, MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5434,15 +4704,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x95, .nickname = _("SALAMENCE"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [1] = { .species = SPECIES_GENGAR, .heldItem = ITEM_LUM_BERRY, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, - .level = 0, - .ppBonuses = 0, .speedEV = 255, .spAttackEV = 255, .otId = TRAINER_HILL_OTID, @@ -5455,15 +4723,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x8C, .nickname = _("GENGAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [2] = { .species = SPECIES_GYARADOS, .heldItem = ITEM_BRIGHT_POWDER, .moves = {MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_BITE, MOVE_EARTHQUAKE}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -5476,15 +4742,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GYARADOS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [3] = { .species = SPECIES_GENGAR, .heldItem = ITEM_SALAC_BERRY, .moves = {MOVE_EXPLOSION, MOVE_MEAN_LOOK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, - .level = 0, - .ppBonuses = 0, .attackEV = 255, .speedEV = 255, .otId = TRAINER_HILL_OTID, @@ -5497,15 +4761,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x3, .nickname = _("GENGAR"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [4] = { .species = SPECIES_DUSCLOPS, .heldItem = ITEM_LEFTOVERS, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL}, - .level = 0, - .ppBonuses = 0, .hpEV = 110, .defenseEV = 200, .spDefenseEV = 200, @@ -5519,15 +4781,13 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x14, .nickname = _("DUSCLOPS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, [5] = { .species = SPECIES_MISDREAVUS, .heldItem = ITEM_FOCUS_BAND, .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_PERISH_SONG, MOVE_SHADOW_BALL}, - .level = 0, - .ppBonuses = 0, .hpEV = 180, .defenseEV = 180, .spDefenseEV = 150, @@ -5541,34 +4801,17 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { .abilityNum = 0, .personality = 0x85, .nickname = _("MISDREAVUS"), - .friendship = 255, + .friendship = MAX_FRIENDSHIP, }, }, }, }, - .display = { - .metatileData = { - 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08, - 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, - 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, - 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, - 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, - 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, - 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, - 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, - 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x08, - 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08, - 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08, - 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08, - 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08, - 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08, - 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08, - 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08, - }, - .collisionData = {0x0381, 0x0101, 0x0101, 0x6C1, 0x0821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x0821, 0x6C1, 0x0101, 0x101}, - .coords = {COORDS_XY(7,6), COORDS_XY(7,10)}, - .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), - .range = TRAINER_RANGE(3, 3), + .map = { + .metatileData = INCBIN_U8("graphics/trainer_hill/maps_expert/floor_3/metatiles.bin"), + .collisionData = INCBIN_U16("graphics/trainer_hill/maps_expert/floor_3/collision.bin"), + .trainerCoords = {COORDS_XY(7,6), COORDS_XY(7,10)}, + .trainerDirections = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH), + .trainerRanges = TRAINER_RANGE(3, 3), } }, }; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index cf547a5d8..94a2c697a 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -1319,7 +1319,7 @@ static const union AnimCmd *const sAnimTable_RayquazaSpotlightEffect[] = { sAnim_RayquazaSpotlightEffect, }; -const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { +static const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), }; diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index d851dfbe1..6b6ab12aa 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -20,8 +20,8 @@ .evYield_Speed = 2, \ .evYield_SpAttack = 2, \ .evYield_SpDefense = 2, \ - .item1 = ITEM_NONE, \ - .item2 = ITEM_NONE, \ + .itemCommon = ITEM_NONE, \ + .itemRare = ITEM_NONE, \ .genderRatio = MON_GENDERLESS, \ .eggCycles = 120, \ .friendship = 0, \ @@ -56,8 +56,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -88,8 +88,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -120,8 +120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -152,8 +152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -184,8 +184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -216,8 +216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -248,8 +248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -280,8 +280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -312,8 +312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -344,8 +344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -376,8 +376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -408,8 +408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_SILVER_POWDER, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -440,8 +440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -472,8 +472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -504,8 +504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_POISON_BARB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -536,8 +536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -568,8 +568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -600,8 +600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -632,8 +632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -664,8 +664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -696,8 +696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -728,8 +728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SHARP_BEAK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -760,8 +760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -792,8 +792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -824,8 +824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_ORAN_BERRY, - .item2 = ITEM_LIGHT_BALL, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_LIGHT_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -856,8 +856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_ORAN_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -888,8 +888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_QUICK_CLAW, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -920,8 +920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_QUICK_CLAW, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -952,8 +952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -984,8 +984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1016,8 +1016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -1048,8 +1048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1080,8 +1080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1112,8 +1112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -1144,8 +1144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_LEPPA_BERRY, - .item2 = ITEM_MOON_STONE, + .itemCommon = ITEM_LEPPA_BERRY, + .itemRare = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1176,8 +1176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_LEPPA_BERRY, - .item2 = ITEM_MOON_STONE, + .itemCommon = ITEM_LEPPA_BERRY, + .itemRare = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -1208,8 +1208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1240,8 +1240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -1272,8 +1272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1304,8 +1304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -1336,8 +1336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1368,8 +1368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -1400,8 +1400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1432,8 +1432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1464,8 +1464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1496,8 +1496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_TINY_MUSHROOM, - .item2 = ITEM_BIG_MUSHROOM, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1528,8 +1528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_TINY_MUSHROOM, - .item2 = ITEM_BIG_MUSHROOM, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1560,8 +1560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1592,8 +1592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1624,8 +1624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1656,8 +1656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1688,8 +1688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1720,8 +1720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1752,8 +1752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1784,8 +1784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1816,8 +1816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1848,8 +1848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1880,8 +1880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1912,8 +1912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -1944,8 +1944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -1976,8 +1976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2008,8 +2008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2040,8 +2040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_TWISTED_SPOON, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2072,8 +2072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_TWISTED_SPOON, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2104,8 +2104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_TWISTED_SPOON, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_TWISTED_SPOON, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2136,8 +2136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2168,8 +2168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2200,8 +2200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -2232,8 +2232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2264,8 +2264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2296,8 +2296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2328,8 +2328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2360,8 +2360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2392,8 +2392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_EVERSTONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2424,8 +2424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_EVERSTONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2456,8 +2456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_EVERSTONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_EVERSTONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -2488,8 +2488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2520,8 +2520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2552,8 +2552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2584,8 +2584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2616,8 +2616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2648,8 +2648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -2680,8 +2680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_STICK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_STICK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2712,8 +2712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SHARP_BEAK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2744,8 +2744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SHARP_BEAK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SHARP_BEAK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2776,8 +2776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2808,8 +2808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2840,8 +2840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NUGGET, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2872,8 +2872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NUGGET, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NUGGET, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2904,8 +2904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_PEARL, - .item2 = ITEM_BIG_PEARL, + .itemCommon = ITEM_PEARL, + .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2936,8 +2936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_PEARL, - .item2 = ITEM_BIG_PEARL, + .itemCommon = ITEM_PEARL, + .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -2968,8 +2968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3000,8 +3000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3032,8 +3032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3064,8 +3064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3096,8 +3096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3128,8 +3128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3160,8 +3160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3192,8 +3192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3224,8 +3224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3256,8 +3256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3288,8 +3288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3320,8 +3320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3352,8 +3352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_THICK_CLUB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3384,8 +3384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_THICK_CLUB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_THICK_CLUB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3416,8 +3416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3448,8 +3448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -3480,8 +3480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3512,8 +3512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SMOKE_BALL, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3544,8 +3544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SMOKE_BALL, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SMOKE_BALL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3576,8 +3576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3608,8 +3608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3640,8 +3640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_LUCKY_EGG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -3672,8 +3672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3704,8 +3704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -3736,8 +3736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3768,8 +3768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3800,8 +3800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3832,8 +3832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -3864,8 +3864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_STARDUST, - .item2 = ITEM_STAR_PIECE, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3896,8 +3896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_STARDUST, - .item2 = ITEM_STAR_PIECE, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -3928,8 +3928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_LEPPA_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3960,8 +3960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -3992,8 +3992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_ASPEAR_BERRY, - .item2 = ITEM_ASPEAR_BERRY, + .itemCommon = ITEM_ASPEAR_BERRY, + .itemRare = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -4024,8 +4024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4056,8 +4056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -4088,8 +4088,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -4120,8 +4120,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, @@ -4152,8 +4152,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4184,8 +4184,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, @@ -4216,8 +4216,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -4248,8 +4248,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_POWDER, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_POWDER, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4280,8 +4280,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4312,8 +4312,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4344,8 +4344,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4376,8 +4376,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4408,8 +4408,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -4440,8 +4440,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4472,8 +4472,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4504,8 +4504,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4536,8 +4536,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -4568,8 +4568,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -4600,8 +4600,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_LEFTOVERS, - .item2 = ITEM_LEFTOVERS, + .itemCommon = ITEM_LEFTOVERS, + .itemRare = ITEM_LEFTOVERS, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -4632,8 +4632,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4664,8 +4664,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4696,8 +4696,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -4728,8 +4728,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4760,8 +4760,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4792,8 +4792,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -4824,8 +4824,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -4856,8 +4856,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_LUM_BERRY, - .item2 = ITEM_LUM_BERRY, + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -4888,8 +4888,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4920,8 +4920,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4952,8 +4952,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -4984,8 +4984,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5016,8 +5016,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5048,8 +5048,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5080,8 +5080,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5112,8 +5112,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5144,8 +5144,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -5176,8 +5176,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_ORAN_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5208,8 +5208,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_ORAN_BERRY, - .item2 = ITEM_SITRUS_BERRY, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5240,8 +5240,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5272,8 +5272,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5304,8 +5304,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5336,8 +5336,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5368,8 +5368,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5400,8 +5400,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5432,8 +5432,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -5464,8 +5464,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_YELLOW_SHARD, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5496,8 +5496,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_YELLOW_SHARD, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_YELLOW_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5528,8 +5528,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_ORAN_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5560,8 +5560,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_LEPPA_BERRY, - .item2 = ITEM_MOON_STONE, + .itemCommon = ITEM_LEPPA_BERRY, + .itemRare = ITEM_MOON_STONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, @@ -5592,8 +5592,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -5624,8 +5624,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5656,8 +5656,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, @@ -5688,8 +5688,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5720,8 +5720,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5752,8 +5752,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5784,8 +5784,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5816,8 +5816,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5848,8 +5848,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5880,8 +5880,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5912,8 +5912,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, @@ -5944,8 +5944,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -5976,8 +5976,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6008,8 +6008,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6040,8 +6040,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6072,8 +6072,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6104,8 +6104,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6136,8 +6136,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6168,8 +6168,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6200,8 +6200,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6232,8 +6232,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6264,8 +6264,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6296,8 +6296,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, @@ -6328,8 +6328,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 35, @@ -6360,8 +6360,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6392,8 +6392,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6424,8 +6424,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_SPELL_TAG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -6456,8 +6456,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 70, @@ -6488,8 +6488,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6520,8 +6520,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_PERSIM_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6552,8 +6552,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6584,8 +6584,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6616,8 +6616,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6648,8 +6648,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6680,8 +6680,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6712,8 +6712,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6744,8 +6744,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -6776,8 +6776,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6808,8 +6808,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6840,8 +6840,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_ORAN_BERRY, - .item2 = ITEM_ORAN_BERRY, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6872,8 +6872,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -6904,8 +6904,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_QUICK_CLAW, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -6936,8 +6936,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -6968,8 +6968,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7000,8 +7000,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7032,8 +7032,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7064,8 +7064,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7096,8 +7096,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7128,8 +7128,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_RED_SHARD, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_RED_SHARD, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -7160,8 +7160,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7192,8 +7192,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7224,8 +7224,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7256,8 +7256,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7288,8 +7288,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -7320,8 +7320,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7352,8 +7352,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -7384,8 +7384,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7416,8 +7416,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7448,8 +7448,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7480,8 +7480,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -7512,8 +7512,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7544,8 +7544,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -7576,8 +7576,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7608,8 +7608,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, @@ -7640,8 +7640,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_ASPEAR_BERRY, - .item2 = ITEM_ASPEAR_BERRY, + .itemCommon = ITEM_ASPEAR_BERRY, + .itemRare = ITEM_ASPEAR_BERRY, .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, @@ -7672,8 +7672,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7704,8 +7704,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, @@ -7736,8 +7736,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_MOOMOO_MILK, - .item2 = ITEM_MOOMOO_MILK, + .itemCommon = ITEM_MOOMOO_MILK, + .itemRare = ITEM_MOOMOO_MILK, .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, @@ -7768,8 +7768,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_LUCKY_EGG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_LUCKY_EGG, .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, @@ -7800,8 +7800,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7832,8 +7832,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7864,8 +7864,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -7896,8 +7896,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7928,8 +7928,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7960,8 +7960,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -7992,8 +7992,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8024,8 +8024,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_SACRED_ASH, - .item2 = ITEM_SACRED_ASH, + .itemCommon = ITEM_SACRED_ASH, + .itemRare = ITEM_SACRED_ASH, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -8056,8 +8056,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_LUM_BERRY, - .item2 = ITEM_LUM_BERRY, + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -8138,8 +8138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8170,8 +8170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8202,8 +8202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 3, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8234,8 +8234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8266,8 +8266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8298,8 +8298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8330,8 +8330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8362,8 +8362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8394,8 +8394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, @@ -8426,8 +8426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_PECHA_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8458,8 +8458,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_PECHA_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_PECHA_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8490,8 +8490,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_ORAN_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_ORAN_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8522,8 +8522,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_ORAN_BERRY, - .item2 = ITEM_SITRUS_BERRY, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8554,8 +8554,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8586,8 +8586,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8618,8 +8618,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SILVER_POWDER, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8650,8 +8650,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8682,8 +8682,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_SILVER_POWDER, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8714,8 +8714,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8746,8 +8746,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8778,8 +8778,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8810,8 +8810,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8842,8 +8842,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8874,8 +8874,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8906,8 +8906,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8938,8 +8938,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -8970,8 +8970,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 15, .friendship = 70, @@ -9002,8 +9002,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9034,8 +9034,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9066,8 +9066,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9098,8 +9098,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9130,8 +9130,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_CHESTO_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9162,8 +9162,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9194,8 +9194,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9226,8 +9226,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9258,8 +9258,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_SILVER_POWDER, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SILVER_POWDER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9290,8 +9290,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9322,8 +9322,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, @@ -9354,8 +9354,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_LEPPA_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9386,8 +9386,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_LEPPA_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_LEPPA_BERRY, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, @@ -9418,8 +9418,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_PERSIM_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_PERSIM_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9450,8 +9450,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9482,8 +9482,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, @@ -9514,8 +9514,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9546,8 +9546,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9578,8 +9578,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -9610,8 +9610,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9642,8 +9642,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9674,8 +9674,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_HEART_SCALE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_HEART_SCALE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, @@ -9706,8 +9706,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9738,8 +9738,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -9770,8 +9770,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9802,8 +9802,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9834,8 +9834,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9866,8 +9866,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -9898,8 +9898,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SOFT_SAND, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SOFT_SAND, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9930,8 +9930,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9962,8 +9962,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -9994,8 +9994,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10026,8 +10026,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_KINGS_ROCK, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_KINGS_ROCK, .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, @@ -10058,8 +10058,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10090,8 +10090,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10122,8 +10122,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10154,8 +10154,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_RAWST_BERRY, - .item2 = ITEM_RAWST_BERRY, + .itemCommon = ITEM_RAWST_BERRY, + .itemRare = ITEM_RAWST_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10186,8 +10186,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10218,8 +10218,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10250,8 +10250,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10282,8 +10282,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_POISON_BARB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10314,8 +10314,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_POISON_BARB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -10346,8 +10346,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10378,8 +10378,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NEVER_MELT_ICE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NEVER_MELT_ICE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10410,8 +10410,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_MOON_STONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_MOON_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10442,8 +10442,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SUN_STONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SUN_STONE, .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, @@ -10474,8 +10474,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, @@ -10506,8 +10506,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10538,8 +10538,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10570,8 +10570,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10602,8 +10602,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10634,8 +10634,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10666,8 +10666,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10698,8 +10698,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10730,8 +10730,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10762,8 +10762,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10794,8 +10794,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10826,8 +10826,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_SPELL_TAG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10858,8 +10858,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_SPELL_TAG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -10890,8 +10890,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_POISON_BARB, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -10922,8 +10922,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10954,8 +10954,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 2, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -10986,8 +10986,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, @@ -11018,8 +11018,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_BIG_PEARL, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11050,8 +11050,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_BIG_PEARL, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_BIG_PEARL, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11082,8 +11082,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11114,8 +11114,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_CHESTO_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11146,8 +11146,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_CHESTO_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11178,8 +11178,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_CHESTO_BERRY, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_CHESTO_BERRY, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11210,8 +11210,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_BLUE_SHARD, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_BLUE_SHARD, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11242,8 +11242,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11274,8 +11274,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11306,8 +11306,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11338,8 +11338,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SPELL_TAG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11370,8 +11370,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_SPELL_TAG, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_SPELL_TAG, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, @@ -11402,8 +11402,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11434,8 +11434,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -11466,8 +11466,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_GREEN_SHARD, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_GREEN_SHARD, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, @@ -11498,8 +11498,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_HARD_STONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11530,8 +11530,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_HARD_STONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11562,8 +11562,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_HARD_STONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_HARD_STONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, @@ -11594,8 +11594,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_MYSTIC_WATER, - .item2 = ITEM_MYSTIC_WATER, + .itemCommon = ITEM_MYSTIC_WATER, + .itemRare = ITEM_MYSTIC_WATER, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, @@ -11626,8 +11626,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 15, .friendship = 70, @@ -11658,8 +11658,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 15, .friendship = 70, @@ -11690,8 +11690,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11722,8 +11722,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 2, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11754,8 +11754,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11786,8 +11786,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, @@ -11818,8 +11818,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11850,8 +11850,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 2, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11882,8 +11882,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -11914,8 +11914,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11946,8 +11946,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -11978,8 +11978,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_DRAGON_SCALE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_DRAGON_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, @@ -12010,8 +12010,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12042,8 +12042,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12074,8 +12074,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_METAL_COAT, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_METAL_COAT, .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, @@ -12106,8 +12106,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12138,8 +12138,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12170,8 +12170,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, @@ -12202,8 +12202,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12234,8 +12234,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12266,8 +12266,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12298,8 +12298,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 3, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_FEMALE, .eggCycles = 120, .friendship = 90, @@ -12330,8 +12330,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 3, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_MALE, .eggCycles = 120, .friendship = 90, @@ -12362,8 +12362,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 0, .evYield_SpDefense = 0, - .item1 = ITEM_STAR_PIECE, - .item2 = ITEM_STAR_PIECE, + .itemCommon = ITEM_STAR_PIECE, + .itemRare = ITEM_STAR_PIECE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, @@ -12394,8 +12394,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 1, .evYield_SpAttack = 1, .evYield_SpDefense = 0, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, @@ -12426,8 +12426,8 @@ const struct BaseStats gBaseStats[] = .evYield_Speed = 0, .evYield_SpAttack = 1, .evYield_SpDefense = 1, - .item1 = ITEM_NONE, - .item2 = ITEM_NONE, + .itemCommon = ITEM_NONE, + .itemRare = ITEM_NONE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, diff --git a/src/data/trade.h b/src/data/trade.h index b26072763..80d17a49b 100644 --- a/src/data/trade.h +++ b/src/data/trade.h @@ -174,10 +174,10 @@ static const struct SpriteTemplate sSpriteTemplate_MenuText = .callback = SpriteCallbackDummy, }; -static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); -static const struct SpritePalette gSpritePalette_TradeScreenText = +static const u16 sTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal"); +static const struct SpritePalette sSpritePalette_TradeScreenText = { - .data = TradeScreenTextPalette, + .data = sTradeScreenTextPalette, .tag = PALTAG_MENU_TEXT }; diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h index 821039cb3..ed12e0cb4 100644 --- a/src/data/trainer_graphics/back_pic_anims.h +++ b/src/data/trainer_graphics/back_pic_anims.h @@ -1,4 +1,4 @@ -static const union AnimCmd gAnimCmd_Brendan_1[] = +static const union AnimCmd sAnimCmd_Brendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -8,7 +8,7 @@ static const union AnimCmd gAnimCmd_Brendan_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_May_Steven_1[] = +static const union AnimCmd sAnimCmd_May_Steven_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -18,7 +18,7 @@ static const union AnimCmd gAnimCmd_May_Steven_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_Wally_1[] = +static const union AnimCmd sAnimCmd_Wally_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -28,7 +28,7 @@ static const union AnimCmd gAnimCmd_Wally_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_Red_1[] = +static const union AnimCmd sAnimCmd_Red_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -38,7 +38,7 @@ static const union AnimCmd gAnimCmd_Red_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_Leaf_1[] = +static const union AnimCmd sAnimCmd_Leaf_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(2, 6), @@ -48,7 +48,7 @@ static const union AnimCmd gAnimCmd_Leaf_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] = +static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -58,7 +58,7 @@ static const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] = ANIMCMD_END, }; -static const union AnimCmd gAnimCmd_RubySapphireMay_1[] = +static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = { ANIMCMD_FRAME(0, 24), ANIMCMD_FRAME(1, 9), @@ -71,49 +71,49 @@ static const union AnimCmd gAnimCmd_RubySapphireMay_1[] = static const union AnimCmd *const sBackAnims_Brendan[] = { sAnim_GeneralFrame3, - gAnimCmd_Brendan_1, + sAnimCmd_Brendan_1, }; static const union AnimCmd *const sBackAnims_May[] = { sAnim_GeneralFrame3, - gAnimCmd_May_Steven_1, + sAnimCmd_May_Steven_1, }; static const union AnimCmd *const sBackAnims_Red[] = { sAnim_GeneralFrame0, - gAnimCmd_Red_1, + sAnimCmd_Red_1, }; static const union AnimCmd *const sBackAnims_Leaf[] = { sAnim_GeneralFrame0, - gAnimCmd_Leaf_1, + sAnimCmd_Leaf_1, }; static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] = { sAnim_GeneralFrame3, - gAnimCmd_RubySapphireBrendan_1, + sAnimCmd_RubySapphireBrendan_1, }; static const union AnimCmd *const sBackAnims_RubySapphireMay[] = { sAnim_GeneralFrame3, - gAnimCmd_RubySapphireMay_1, + sAnimCmd_RubySapphireMay_1, }; static const union AnimCmd *const sBackAnims_Wally[] = { sAnim_GeneralFrame3, - gAnimCmd_Wally_1, + sAnimCmd_Wally_1, }; static const union AnimCmd *const sBackAnims_Steven[] = { sAnim_GeneralFrame3, - gAnimCmd_May_Steven_1, + sAnimCmd_May_Steven_1, }; const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = diff --git a/src/decompress.c b/src/decompress.c index b74d4e814..92c840a63 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -51,13 +51,13 @@ void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src) LoadSpritePalette(&dest); } -void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer) +void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer) { struct SpritePalette dest; - LZ77UnCompWram(a->data, buffer); + LZ77UnCompWram(src->data, buffer); dest.data = buffer; - dest.tag = a->tag; + dest.tag = src->tag; LoadSpritePalette(&dest); } diff --git a/src/decoration.c b/src/decoration.c index 7e102251a..547b05acf 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -826,7 +826,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId) { RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES); AddDecorationActionsWindow(); - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); PrintCurMainMenuDescription(); gTasks[taskId].func = HandleDecorationActionsMenuInput; } @@ -2664,7 +2664,7 @@ static void FieldCB_StopPuttingAwayDecorations(void) u8 taskId; FadeInFromBlack(); - DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, TRUE); InitDecorationActionsWindow(); taskId = CreateTask(Task_ReinitializeDecorationMenuHandler, 8); gTasks[taskId].tState = 0; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 691ca6b2a..b87fe3092 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2879,10 +2879,10 @@ static u8 TryGivePrize(void) return PRIZE_RECEIVED; } -static u32 IncrementWithLimit(u32 a, u32 max) +static u32 IncrementWithLimit(u32 num, u32 max) { - if (a < max) - return a + 1; + if (num < max) + return num + 1; else return max; } @@ -4546,7 +4546,7 @@ struct { u8 id; void (*func)(void); -} const sGfxFuncs[] = +} static const sGfxFuncs[] = { {GFXFUNC_LOAD, LoadGfx}, // Element not used, LoadGfx is passed directly to SetGfxFunc {GFXFUNC_SHOW_NAMES, ShowNames}, diff --git a/src/easy_chat.c b/src/easy_chat.c index 734fd4f18..2bbd16cb2 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1492,7 +1492,7 @@ void ShowEasyChatScreen(void) displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE; break; case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW: - words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18; + words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainerTower.words; displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; case EASY_CHAT_TYPE_GOOD_SAYING: @@ -1672,8 +1672,7 @@ static bool8 InitEasyChatScreenStruct(u8 type, u16 *words, u8 displayedPersonTyp static void FreeEasyChatScreenStruct(void) { - if (sEasyChatScreen != NULL) - FREE_AND_SET_NULL(sEasyChatScreen); + TRY_FREE_AND_SET_NULL(sEasyChatScreen); } // Returns the function ID of the action to take as a result of player's input. @@ -3075,8 +3074,7 @@ static bool8 LoadEasyChatScreen(void) static void FreeEasyChatScreenControl(void) { - if (sScreenControl) - FREE_AND_SET_NULL(sScreenControl); + TRY_FREE_AND_SET_NULL(sScreenControl); } static void StartEasyChatFunction(u16 funcId) @@ -5573,8 +5571,7 @@ static bool8 InitEasyChatScreenWordData(void) static void FreeEasyChatScreenWordData(void) { - if (sWordData) - FREE_AND_SET_NULL(sWordData); + TRY_FREE_AND_SET_NULL(sWordData); } static void SetUnlockedEasyChatGroups(void) diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index c3f17f234..cf3ca16c3 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -15,6 +15,8 @@ #include "constants/items.h" #include "constants/trainer_hill.h" +STATIC_ASSERT(sizeof(struct TrainerHillChallenge) <= SECTOR_DATA_SIZE, TrainerHillChallengeFreeSpace); + struct SendRecvMgr { bool8 isParent; @@ -57,22 +59,20 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_SWALOT, .heldItem = ITEM_SHELL_BELL, .moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 55, .attackEV = 255, .defenseEV = 100, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 100, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -82,21 +82,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x80, .nickname = __("マルノーム$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_DUSTOX, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -106,21 +104,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("ドクケイル$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_RELICANTH, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 155, .spDefenseEV = 255, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -130,7 +126,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x2f, .nickname = __("ジーランス$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, @@ -143,22 +139,20 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL }, .speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, EC_EMPTY_WORD, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_CACTURNE, .heldItem = ITEM_QUICK_CLAW, .moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 55, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 100, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -168,21 +162,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x8c, .nickname = __("ノクタス$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_SWELLOW, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 255, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 0, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -192,21 +184,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x80, .nickname = __("オオスãƒ�メ$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_WHISCASH, .heldItem = ITEM_CHESTO_BERRY, .moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -216,7 +206,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x0, .nickname = __("ナマズン$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, @@ -229,22 +219,20 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS }, .speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, EC_EMPTY_WORD }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_DELCATTY, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 0, .attackEV = 255, .defenseEV = 0, .speedEV = 255, .spAttackEV = 0, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -254,21 +242,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x3, .nickname = __("エãƒ�コロロ$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_ROSELIA, .heldItem = ITEM_LEFTOVERS, .moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -278,21 +264,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x6, .nickname = __("ロゼリア$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_BEAUTIFLY, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 100, .attackEV = 200, .defenseEV = 0, .speedEV = 0, .spAttackEV = 200, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -302,7 +286,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x6, .nickname = __("アゲãƒ�ント$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, @@ -315,22 +299,20 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL }, .speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL }, .mons = { - [0] = NULL_BATTLE_TOWER_POKEMON, - [1] = NULL_BATTLE_TOWER_POKEMON, - [2] = NULL_BATTLE_TOWER_POKEMON, + [0] = DUMMY_HILL_MON, + [1] = DUMMY_HILL_MON, + [2] = DUMMY_HILL_MON, [3] = { .species = SPECIES_MAWILE, .heldItem = ITEM_BRIGHT_POWDER, .moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 0, .attackEV = 0, .defenseEV = 100, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 155, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -340,21 +322,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 1, .personality = 0x0, .nickname = __("クãƒ�ート$$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [4] = { .species = SPECIES_SHARPEDO, .heldItem = ITEM_SCOPE_LENS, .moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -364,21 +344,19 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("サメãƒ�ダー$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, [5] = { .species = SPECIES_BANETTE, .heldItem = ITEM_LUM_BERRY, .moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP }, - .level = 0, - .ppBonuses = 0x0, .hpEV = 255, .attackEV = 0, .defenseEV = 0, .speedEV = 0, .spAttackEV = 255, .spDefenseEV = 0, - .otId = 0x10000000, + .otId = TRAINER_HILL_OTID, .hpIV = 5, .attackIV = 5, .defenseIV = 5, @@ -388,7 +366,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { .abilityNum = 0, .personality = 0x96, .nickname = __("ジュペッタ$$$$$$"), - .friendship = 255 + .friendship = MAX_FRIENDSHIP }, } }, @@ -447,40 +425,40 @@ static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet) return TRUE; } -static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrHillTag * hillTag) +static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrainerHillChallenge * challenge) { int i; AGB_ASSERT_EX(hillSet->dummy == 0, "cereader_tool.c", 450); AGB_ASSERT_EX(hillSet->id == 0, "cereader_tool.c", 452); - memset(hillTag, 0, SECTOR_SIZE); - hillTag->numTrainers = hillSet->numTrainers; - hillTag->unused1 = GetTrainerHillUnkVal(); - hillTag->numFloors = (hillSet->numTrainers + 1) / TRAINER_HILL_TRAINERS_PER_FLOOR; + memset(challenge, 0, SECTOR_SIZE); + challenge->numTrainers = hillSet->numTrainers; + challenge->unused1 = GetTrainerHillUnkVal(); + challenge->numFloors = (hillSet->numTrainers + 1) / HILL_TRAINERS_PER_FLOOR; for (i = 0; i < hillSet->numTrainers; i++) { if (!(i & 1)) { - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].display = hillSet->trainers[i].display; - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].map = hillSet->trainers[i].map; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer; } else { - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer; } } if (i & 1) { - hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / TRAINER_HILL_TRAINERS_PER_FLOOR]; + challenge->floors[i / HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / HILL_TRAINERS_PER_FLOOR]; } - hillTag->checksum = CalcByteArraySum((u8 *)hillTag->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrHillFloor)); - if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)hillTag) != SAVE_STATUS_OK) + challenge->checksum = CalcByteArraySum((u8 *)challenge->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrainerHillFloor)); + if (TryWriteSpecialSaveSector(SECTOR_ID_TRAINER_HILL, (u8 *)challenge) != SAVE_STATUS_OK) return FALSE; return TRUE; diff --git a/src/event_data.c b/src/event_data.c index 1defd2ccb..561cd3edd 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -30,7 +30,7 @@ EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0; -EWRAM_DATA static u8 gSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; +EWRAM_DATA static u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {0}; extern u16 *const gSpecialVars[]; @@ -38,7 +38,7 @@ void InitEventData(void) { memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags)); memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars)); - memset(gSpecialFlags, 0, sizeof(gSpecialFlags)); + memset(sSpecialFlags, 0, sizeof(sSpecialFlags)); } void ClearTempFieldEventData(void) @@ -205,7 +205,7 @@ u8 *GetFlagPointer(u16 id) else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; else - return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; + return &sSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 3e4978d32..a2c6e12e0 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -141,8 +141,6 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8); static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); -static void LoadObjectEventPalette(u16); -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); @@ -172,7 +170,7 @@ static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); static bool8 NpcTakeStep(struct Sprite *); static bool8 IsElevationMismatchAt(u8, s16, s16); -static bool8 AreElevationsCompatible(u8 a, u8 b); +static bool8 AreElevationsCompatible(u8, u8); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -2130,7 +2128,7 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 z, u8 d sprite->oam.paletteNum = IndexOfSpritePaletteTag(spriteTemplate.paletteTag); sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; - sprite->sVirtualObjElev = elevation; + sprite->sVirtualObjElev = z; if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); @@ -8478,7 +8476,7 @@ void GroundEffect_FlowingWater(struct ObjectEvent *objEvent, struct Sprite *spri StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objEvent); } -static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) = { +static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) = { [TRACKS_NONE] = DoTracksGroundEffect_None, [TRACKS_FOOT] = DoTracksGroundEffect_Footprints, [TRACKS_BIKE_TIRE] = DoTracksGroundEffect_BikeTireTracks, @@ -8490,20 +8488,20 @@ 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[info->tracks](objEvent, sprite, FALSE); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, 1); + sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, TRUE); } -static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { } -static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) u16 sandFootprints_FieldEffectData[2] = { @@ -8516,7 +8514,7 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct gFieldEffectArguments[2] = 149; gFieldEffectArguments[3] = 2; gFieldEffectArguments[4] = objEvent->facingDirection; - FieldEffectStart(sandFootprints_FieldEffectData[a]); + FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } static void DoTracksGroundEffect_FootprintsSpot(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) @@ -8965,11 +8963,11 @@ static const SpriteStepFunc *const sNpcStepFuncTables[] = { }; static const s16 sStepTimes[] = { - [MOVE_SPEED_NORMAL] = 16, - [MOVE_SPEED_FAST_1] = 8, - [MOVE_SPEED_FAST_2] = 6, - [MOVE_SPEED_FASTER] = 4, - [MOVE_SPEED_FASTEST] = 2, + [MOVE_SPEED_NORMAL] = ARRAY_COUNT(sStep1Funcs), + [MOVE_SPEED_FAST_1] = ARRAY_COUNT(sStep2Funcs), + [MOVE_SPEED_FAST_2] = ARRAY_COUNT(sStep3Funcs), + [MOVE_SPEED_FASTER] = ARRAY_COUNT(sStep4Funcs), + [MOVE_SPEED_FASTEST] = ARRAY_COUNT(sStep8Funcs), }; static bool8 NpcTakeStep(struct Sprite *sprite) @@ -10091,6 +10089,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, { FreeSpriteOamMatrix(sprite); gObjectEvents[gPlayerAvatar.objectEventId].fixedPriority = FALSE; + gPlayerAvatar.preventStep = FALSE; objectEvent->invisible = TRUE; sprite->data[2]++; } @@ -10224,7 +10223,7 @@ u8 MovementAction_FollowingPokemon_Grow_Step1(struct ObjectEvent *objectEvent, s objectEvent->inShallowFlowingWater = TRUE; StartFieldEffectForObjectEvent(FLDEFF_FEET_IN_FLOWING_WATER, objectEvent); } - + gPlayerAvatar.preventStep = FALSE; sprite->data[2]++; } diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index 5d17cca84..a6b558195 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -92,11 +92,22 @@ static const struct SpriteTemplate sEvoSparkleSpriteTemplate = .callback = SpriteCB_Sparkle_Dummy }; -static const s16 sEvoSparkleMatrices[] = +static const u16 sEvoSparkleMatrices[] = { - 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0, - 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50, - -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10 + 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, + 0x240, 0x200, 0x1C0, 0x180, 0x140, 0x100 +}; + +static const s16 sUnused[] = +{ + -4, 0x10, + -3, 0x30, + -2, 0x50, + -1, 0x70, + 1, 0x70, + 2, 0x50, + 3, 0x30, + 4, 0x10 }; static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) @@ -107,30 +118,33 @@ static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite) static void SetEvoSparklesMatrices(void) { u16 i; - for (i = 0; i < 12; i++) - { + for (i = 0; i < ARRAY_COUNT(sEvoSparkleMatrices); i++) SetOamMatrix(20 + i, sEvoSparkleMatrices[i], 0, 0, sEvoSparkleMatrices[i]); - } } +#define sSpeed data[3] +#define sAmplitude data[5] +#define sTrigIdx data[6] +#define sTimer data[7] + static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) { if (sprite->y > 8) { u8 matrixNum; - sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80; - sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; - sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); - sprite->data[6] += 4; - if (sprite->data[7] & 1) - sprite->data[5]--; - sprite->data[7]++; + sprite->y = 88 - (sprite->sTimer * sprite->sTimer) / 80; + sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; + sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); + sprite->sTrigIdx += 4; + if (sprite->sTimer & 1) + sprite->sAmplitude--; + sprite->sTimer++; if (sprite->y2 > 0) sprite->subpriority = 1; else sprite->subpriority = 20; - matrixNum = sprite->data[5] / 4 + 20; + matrixNum = sprite->sAmplitude / 4 + 20; if (matrixNum > 31) matrixNum = 31; sprite->oam.matrixNum = matrixNum; @@ -139,17 +153,17 @@ static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite) DestroySprite(sprite); } -static void CreateSparkle_SpiralUpward(u8 arg0) +static void CreateSparkle_SpiralUpward(u8 trigIdx) { - u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0); - if (spriteID != MAX_SPRITES) + u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 88, 0); + if (spriteId != MAX_SPRITES) { - gSprites[spriteID].data[5] = 48; - gSprites[spriteID].data[6] = arg0; - gSprites[spriteID].data[7] = 0; - gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteID].oam.matrixNum = 31; - gSprites[spriteID].callback = SpriteCB_Sparkle_SpiralUpward; + gSprites[spriteId].sAmplitude = 48; + gSprites[spriteId].sTrigIdx = trigIdx; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].callback = SpriteCB_Sparkle_SpiralUpward; } } @@ -157,85 +171,85 @@ static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite) { if (sprite->y < 88) { - sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5; - sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4; - sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); - sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40); - sprite->data[7]++; + sprite->y = 8 + (sprite->sTimer * sprite->sTimer) / 5; + sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude) / 4; + sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); + sprite->sAmplitude = 8 + Sin((u8)(sprite->sTimer * 4), 40); + sprite->sTimer++; } else DestroySprite(sprite); } -static void CreateSparkle_ArcDown(u8 arg0) +static void CreateSparkle_ArcDown(u8 trigIdx) { - u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0); - if (spriteID != MAX_SPRITES) + u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 8, 0); + if (spriteId != MAX_SPRITES) { - gSprites[spriteID].data[5] = 8; - gSprites[spriteID].data[6] = arg0; - gSprites[spriteID].data[7] = 0; - gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteID].oam.matrixNum = 25; - gSprites[spriteID].subpriority = 1; - gSprites[spriteID].callback = SpriteCB_Sparkle_ArcDown; + gSprites[spriteId].sAmplitude = 8; + gSprites[spriteId].sTrigIdx = trigIdx; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 25; + gSprites[spriteId].subpriority = 1; + gSprites[spriteId].callback = SpriteCB_Sparkle_ArcDown; } } static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite) { - if (sprite->data[5] > 8) + if (sprite->sAmplitude > 8) { - sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]); - sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]); - sprite->data[5] -= sprite->data[3]; - sprite->data[6] += 4; + sprite->y2 = Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); + sprite->x2 = Cos((u8)sprite->sTrigIdx, sprite->sAmplitude); + sprite->sAmplitude -= sprite->sSpeed; + sprite->sTrigIdx += 4; } else DestroySprite(sprite); } -static void CreateSparkle_CircleInward(u8 arg0, u8 arg1) +static void CreateSparkle_CircleInward(u8 trigIdx, u8 speed) { - u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); - if (spriteID != MAX_SPRITES) + u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); + if (spriteId != MAX_SPRITES) { - gSprites[spriteID].data[3] = arg1; - gSprites[spriteID].data[5] = 120; - gSprites[spriteID].data[6] = arg0; - gSprites[spriteID].data[7] = 0; - gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteID].oam.matrixNum = 31; - gSprites[spriteID].subpriority = 1; - gSprites[spriteID].callback = SpriteCB_Sparkle_CircleInward; + gSprites[spriteId].sSpeed = speed; + gSprites[spriteId].sAmplitude = 120; + gSprites[spriteId].sTrigIdx = trigIdx; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].subpriority = 1; + gSprites[spriteId].callback = SpriteCB_Sparkle_CircleInward; } } static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) { - if (!(sprite->data[7] & 3)) + if (!(sprite->sTimer & 3)) sprite->y++; - if (sprite->data[6] < 128) + if (sprite->sTrigIdx < 128) { u8 matrixNum; - sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]); - sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3; - sprite->data[6]++; - matrixNum = 31 - (sprite->data[6] * 12 / 128); - if (sprite->data[6] > 64) + sprite->y2 = -Sin((u8)sprite->sTrigIdx, sprite->sAmplitude); + sprite->x = (DISPLAY_WIDTH / 2) + (sprite->sSpeed * sprite->sTimer) / 3; + sprite->sTrigIdx++; + matrixNum = 31 - (sprite->sTrigIdx * 12 / 128); + if (sprite->sTrigIdx > 64) sprite->subpriority = 1; else { sprite->invisible = FALSE; sprite->subpriority = 20; - if (sprite->data[6] > 112 && sprite->data[6] & 1) + if (sprite->sTrigIdx > 112 && sprite->sTrigIdx & 1) sprite->invisible = TRUE; } if (matrixNum < 20) matrixNum = 20; sprite->oam.matrixNum = matrixNum; - sprite->data[7]++; + sprite->sTimer++; } else DestroySprite(sprite); @@ -243,16 +257,16 @@ static void SpriteCB_Sparkle_Spray(struct Sprite* sprite) static void CreateSparkle_Spray(u8 id) { - u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0); - if (spriteID != MAX_SPRITES) + u8 spriteId = CreateSprite(&sEvoSparkleSpriteTemplate, DISPLAY_WIDTH / 2, 56, 0); + if (spriteId != MAX_SPRITES) { - gSprites[spriteID].data[3] = 3 - (Random() % 7); - gSprites[spriteID].data[5] = 48 + (Random() & 0x3F); - gSprites[spriteID].data[7] = 0; - gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL; - gSprites[spriteID].oam.matrixNum = 31; - gSprites[spriteID].subpriority = 20; - gSprites[spriteID].callback = SpriteCB_Sparkle_Spray; + gSprites[spriteId].sSpeed = 3 - (Random() % 7); + gSprites[spriteId].sAmplitude = 48 + (Random() & 0x3F); + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].subpriority = 20; + gSprites[spriteId].callback = SpriteCB_Sparkle_Spray; } } @@ -289,7 +303,7 @@ static void Task_Sparkles_SpiralUpward(u8 taskId) { u8 i; for (i = 0; i < 4; i++) - CreateSparkle_SpiralUpward((0x78 & gTasks[taskId].tTimer) * 2 + i * 64); + CreateSparkle_SpiralUpward((gTasks[taskId].tTimer & 120) * 2 + i * 64); } gTasks[taskId].tTimer++; } diff --git a/src/evolution_scene.c b/src/evolution_scene.c index bde11ddb5..eb458d39d 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -816,8 +816,7 @@ static void Task_EvolutionScene(u8 taskId) DestroyTask(taskId); FreeMonSpritesGfx(); - Free(sEvoStructPtr); - sEvoStructPtr = NULL; + FREE_AND_SET_NULL(sEvoStructPtr); FreeAllWindowBuffers(); SetMainCallback2(gCB2_AfterEvolution); } @@ -1223,8 +1222,7 @@ static void Task_TradeEvolutionScene(u8 taskId) if (!IsTextPrinterActive(0)) { DestroyTask(taskId); - Free(sEvoStructPtr); - sEvoStructPtr = NULL; + FREE_AND_SET_NULL(sEvoStructPtr); gTextFlags.useAlternateDownArrow = 0; SetMainCallback2(gCB2_AfterEvolution); } diff --git a/src/field_camera.c b/src/field_camera.c index 0a00dcbee..9b129e6b2 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -212,13 +212,13 @@ void CurrentMapDrawMetatileAt(int x, int y) } } -void DrawDoorMetatileAt(int x, int y, u16 *arr) +void DrawDoorMetatileAt(int x, int y, u16 *tiles) { int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y); if (offset >= 0) { - DrawMetatile(METATILE_LAYER_TYPE_COVERED, arr, offset); + DrawMetatile(METATILE_LAYER_TYPE_COVERED, tiles, offset); sFieldCameraOffset.copyBGToVRAM = TRUE; } } @@ -404,9 +404,9 @@ void CameraUpdate(void) } gFieldCamera.x += movementSpeedX; - gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16); + gFieldCamera.x %= 16; gFieldCamera.y += movementSpeedY; - gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16); + gFieldCamera.y %= 16; if (deltaX != 0 || deltaY != 0) { @@ -437,10 +437,10 @@ void SetCameraPanningCallback(void (*callback)(void)) sFieldCameraPanningCallback = callback; } -void SetCameraPanning(s16 a, s16 b) +void SetCameraPanning(s16 horizontal, s16 vertical) { - sHorizontalCameraPan = a; - sVerticalCameraPan = b + 32; + sHorizontalCameraPan = horizontal; + sVerticalCameraPan = vertical + 32; } void InstallCameraPanAheadCallback(void) diff --git a/src/field_door.c b/src/field_door.c index 988ea615d..756d0dabf 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -18,7 +18,7 @@ struct DoorGraphics u8 sound; u8 size; const void *tiles; - const void *palette; + const void *palettes; }; struct DoorAnimFrame @@ -74,7 +74,7 @@ static const u8 sDoorAnimTiles_PokemonLeague[] = INCBIN_U8("graphics/door_anims/ static const u16 sDoorNullPalette20[16] = {}; static const u8 sDoorAnimTiles_Pacifidlog[] = INCBIN_U8("graphics/door_anims/pacifidlog.4bpp"); static const u16 sDoorNullPalette21[16] = {}; -static const u8 sDoorAnimTiles_BattleTowerCorridor[] = INCBIN_U8("graphics/door_anims/battle_tower_corridor.4bpp"); +static const u8 sDoorAnimTiles_PetalburgGym[] = INCBIN_U8("graphics/door_anims/petalburg_gym.4bpp"); static const u16 sDoorNullPalette22[16] = {}; static const u8 sDoorAnimTiles_CyclingRoad[] = INCBIN_U8("graphics/door_anims/cycling_road.4bpp"); static const u16 sDoorNullPalette23[16] = {}; @@ -98,7 +98,7 @@ static const u8 sDoorAnimTiles_BattleTowerOld[] = INCBIN_U8("graphics/door_anims static const u16 sDoorNullPalette32[16] = {}; static const u8 sDoorAnimTiles_BattleTowerElevator[] = INCBIN_U8("graphics/door_anims/battle_tower_elevator.4bpp"); static const u16 sDoorNullPalette33[16] = {}; -static const u8 sDoorAnimTiles_34[] = INCBIN_U8("graphics/door_anims/unknown.4bpp"); +static const u8 sDoorAnimTiles_UnusedBattleFrontier[] = INCBIN_U8("graphics/door_anims/unused_battle_frontier.4bpp"); static const u16 sDoorNullPalette34[16] = {}; static const u8 sDoorAnimTiles_BattleDome[] = INCBIN_U8("graphics/door_anims/battle_dome.4bpp"); static const u16 sDoorNullPalette35[16] = {}; @@ -190,7 +190,7 @@ static const u8 sDoorAnimPalettes_Mauville[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_Verdanturf[] = {6, 6, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_LilycoveWooden[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_Contest[] = {1, 1, 1, 1, 1, 1, 1, 1}; -static const u8 sDoorAnimPalettes_BattleTowerCorridor[] = {6, 6, 6, 6, 6, 6, 6, 6}; +static const u8 sDoorAnimPalettes_PetalburgGym[] = {6, 6, 6, 6, 6, 6, 6, 6}; static const u8 sDoorAnimPalettes_CyclingRoad[] = {7, 7, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_LilycoveDeptStore[] = {5, 5, 5, 5, 5, 5, 5, 5}; static const u8 sDoorAnimPalettes_SafariZone[] = {9, 9, 9, 9, 9, 9, 9, 9}; @@ -202,7 +202,7 @@ static const u8 sDoorAnimPalettes_AbandonedShipRoom[] = {7, 7, 7, 7, 7, 7, 7, 7} static const u8 sDoorAnimPalettes_LilycoveDeptStoreElevator[] = {6, 6, 7, 7, 7, 7, 7, 7}; static const u8 sDoorAnimPalettes_BattleTowerOld[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTowerElevator[] = {7, 7, 7, 7, 7, 7, 7, 7}; -static const u8 sDoorAnimPalettes_34[] = {9, 9, 9, 9, 9, 9, 9, 9}; +static const u8 sDoorAnimPalettes_UnusedBattleFrontier[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleDome[] = {1, 1, 1, 1, 1, 1, 1, 1}; static const u8 sDoorAnimPalettes_BattleFactory[] = {9, 9, 9, 9, 9, 9, 9, 9}; static const u8 sDoorAnimPalettes_BattleTower[] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -244,7 +244,7 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Sootopolis_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Sootopolis, sDoorAnimPalettes_Sootopolis}, {METATILE_EverGrande_Door_PokemonLeague, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_PokemonLeague, sDoorAnimPalettes_PokemonLeague}, {METATILE_Pacifidlog_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_Pacifidlog, sDoorAnimPalettes_Pacifidlog}, - {METATILE_BattleFrontier_Door_Corridor, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_BattleTowerCorridor, sDoorAnimPalettes_BattleTowerCorridor}, + {METATILE_PetalburgGym_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_PetalburgGym, sDoorAnimPalettes_PetalburgGym}, {METATILE_Mauville_Door_CyclingRoad, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_CyclingRoad, sDoorAnimPalettes_CyclingRoad}, {METATILE_Lilycove_Door_DeptStore, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStore, sDoorAnimPalettes_LilycoveDeptStore}, {METATILE_Lilycove_Door_SafariZone, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_SafariZone, sDoorAnimPalettes_SafariZone}, @@ -256,7 +256,9 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {METATILE_Shop_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_LilycoveDeptStoreElevator, sDoorAnimPalettes_LilycoveDeptStoreElevator}, {METATILE_Dewford_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerOld, sDoorAnimPalettes_BattleTowerOld}, {METATILE_BattleFrontier_Door_Elevator, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTowerElevator, sDoorAnimPalettes_BattleTowerElevator}, - {0x3B0, /* TODO: Missing metatile ID */ DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_34, sDoorAnimPalettes_34}, + // The metatile for this door doesn't seem to correspond to a door in any Emerald tileset. Given the surrounding door animations, it was likely cut from the Battle Frontier. + // From the palettes array we know it uses palette 9, and the door's shadow looks correct using either the Battle Tent or Battle Frontier Outside's 9th palette. + {0x3B0, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_UnusedBattleFrontier, sDoorAnimPalettes_UnusedBattleFrontier}, {METATILE_BattleFrontierOutsideWest_Door_BattleDome, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleDome, sDoorAnimPalettes_BattleDome}, {METATILE_BattleFrontierOutsideWest_Door_BattleFactory, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleFactory, sDoorAnimPalettes_BattleFactory}, {METATILE_BattleFrontierOutsideEast_Door_BattleTower, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_BattleTower, sDoorAnimPalettes_BattleTower}, @@ -278,52 +280,71 @@ static const struct DoorGraphics sDoorAnimGraphicsTable[] = {}, }; +// NOTE: The tiles of a door's animation must be copied to VRAM because they are not already part of any given tileset. +// This means that if there are any pre-existing tiles in this copied region that are visible when the door +// animation is played they will be overwritten. +#define DOOR_TILE_START_SIZE1 (NUM_TILES_TOTAL - 8) +#define DOOR_TILE_START_SIZE2 (NUM_TILES_TOTAL - 16) + static void CopyDoorTilesToVram(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frame) { if (gfx->size == 2) - CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7E00), 0x80); + CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE2)), 16 * TILE_SIZE_4BPP); else - CpuFastSet(gfx->tiles + frame->offset, (void *)(VRAM + 0x7F00), 0x40); + CpuFastCopy(gfx->tiles + frame->offset, (void *)(VRAM + TILE_OFFSET_4BPP(DOOR_TILE_START_SIZE1)), 8 * TILE_SIZE_4BPP); } -static void door_build_blockdef(u16 *a, u16 b, const u8 *c) +static void BuildDoorTiles(u16 *tiles, u16 tileNum, const u8 *paletteNums) { int i; - u16 unk; + u16 tile; + // Only the first 4 tiles of each metatile (bottom layer) actually use the door tiles for (i = 0; i < 4; i++) { - unk = *(c++) << 12; - a[i] = unk | (b + i); + tile = *(paletteNums++) << 12; + tiles[i] = tile | (tileNum + i); } + + // The remaining layers are left as tile 0 (with the same palette) for (; i < 8; i++) { - unk = *(c++) << 12; - a[i] = unk; + tile = *(paletteNums++) << 12; + tiles[i] = tile; } } -static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *pal) +static void DrawCurrentDoorAnimFrame(const struct DoorGraphics *gfx, u32 x, u32 y, const u8 *paletteNums) { - u16 arr[24]; + u16 tiles[24]; if (gfx->size == 2) { - door_build_blockdef(&arr[8], 0x3F0, pal); - DrawDoorMetatileAt(x, y - 1, &arr[8]); - door_build_blockdef(&arr[8], 0x3F4, pal + 4); - DrawDoorMetatileAt(x, y, &arr[8]); - door_build_blockdef(&arr[8], 0x3F8, pal); - DrawDoorMetatileAt(x + 1, y - 1, &arr[8]); - door_build_blockdef(&arr[8], 0x3FC, pal + 4); - DrawDoorMetatileAt(x + 1, y, &arr[8]); + // Top left metatile + BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 0, &paletteNums[0]); + DrawDoorMetatileAt(x, y - 1, &tiles[8]); + + // Bottom left metatile + BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 4, &paletteNums[4]); + DrawDoorMetatileAt(x, y, &tiles[8]); + + // Top right metatile + BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 8, &paletteNums[0]); + DrawDoorMetatileAt(x + 1, y - 1, &tiles[8]); + + // Bottom right metatile + BuildDoorTiles(&tiles[8], DOOR_TILE_START_SIZE2 + 12, &paletteNums[4]); + DrawDoorMetatileAt(x + 1, y, &tiles[8]); } else { - door_build_blockdef(&arr[0], 0x3F8, pal); - DrawDoorMetatileAt(x, y - 1, &arr[0]); - door_build_blockdef(&arr[0], 0x3FC, pal + 4); - DrawDoorMetatileAt(x, y, &arr[0]); + // Top metatile + BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 0, &paletteNums[0]); + DrawDoorMetatileAt(x, y - 1, &tiles[0]); + + // Bottom metatile + BuildDoorTiles(&tiles[0], DOOR_TILE_START_SIZE1 + 4, &paletteNums[4]); + DrawDoorMetatileAt(x, y, &tiles[0]); } } @@ -350,9 +371,9 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame else { CopyDoorTilesToVram(gfx, frame); - DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette); + DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palettes); if (ShouldUseMultiCorridorDoor()) - DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palette); + DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + MAP_OFFSET, gSpecialVar_0x8005 + MAP_OFFSET, gfx->palettes); } } diff --git a/src/field_effect.c b/src/field_effect.c index 04e8ad007..a26524701 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -484,13 +484,13 @@ static const struct Subsprite sSubsprites_HofMonitorBig[] = static const struct SubspriteTable sSubspriteTable_HofMonitorBig = subsprite_table(sSubsprites_HofMonitorBig); -const union AnimCmd sAnim_Static[] = +static const union AnimCmd sAnim_Static[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 1), ANIMCMD_JUMP(0) }; -const union AnimCmd sAnim_Flicker[] = +static const union AnimCmd sAnim_Flicker[] = { ANIMCMD_FRAME(.imageValue = 0, .duration = 16), ANIMCMD_FRAME(.imageValue = 1, .duration = 16), @@ -504,7 +504,7 @@ const union AnimCmd sAnim_Flicker[] = }; // Flicker on and off, for the Pokéballs / monitors during the PokéCenter heal effect -const union AnimCmd *const sAnims_Flicker[] = +static const union AnimCmd *const sAnims_Flicker[] = { sAnim_Static, sAnim_Flicker @@ -559,7 +559,7 @@ static const struct SpriteTemplate sSpriteTemplate_HofMonitorSmall = .callback = SpriteCB_HallOfFameMonitor }; -void (*const sPokecenterHealEffectFuncs[])(struct Task *) = +static void (*const sPokecenterHealEffectFuncs[])(struct Task *) = { PokecenterHealEffect_Init, PokecenterHealEffect_WaitForBallPlacement, @@ -567,7 +567,7 @@ void (*const sPokecenterHealEffectFuncs[])(struct Task *) = PokecenterHealEffect_WaitForSoundAndEnd }; -void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = +static void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = { HallOfFameRecordEffect_Init, HallOfFameRecordEffect_WaitForBallPlacement, @@ -575,7 +575,7 @@ void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) = HallOfFameRecordEffect_WaitForSoundAndEnd }; -void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = +static void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) = { PokeballGlowEffect_PlaceBalls, PokeballGlowEffect_TryPlaySe, @@ -601,7 +601,7 @@ static const u8 sPokeballGlowReds[] = {16, 12, 8, 0}; static const u8 sPokeballGlowGreens[] = {16, 12, 8, 0}; static const u8 sPokeballGlowBlues[] = { 0, 0, 0, 0}; -bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = +static bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = { FallWarpEffect_Init, FallWarpEffect_WaitWeather, @@ -612,7 +612,7 @@ bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) = FallWarpEffect_End, }; -bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = +static bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = { EscalatorWarpOut_Init, EscalatorWarpOut_WaitForPlayer, @@ -622,7 +622,7 @@ bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) = EscalatorWarpOut_Down_End, }; -bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = +static bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = { EscalatorWarpIn_Init, EscalatorWarpIn_Down_Init, @@ -633,7 +633,7 @@ bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) = EscalatorWarpIn_End, }; -bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = +static bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) = { WaterfallFieldEffect_Init, WaterfallFieldEffect_ShowMon, @@ -642,14 +642,14 @@ bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) WaterfallFieldEffect_ContinueRideOrEnd, }; -bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = +static bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) = { DiveFieldEffect_Init, DiveFieldEffect_ShowMon, DiveFieldEffect_TryWarp, }; -bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +static bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpEffect_Init, LavaridgeGymB1FWarpEffect_CameraShake, @@ -659,7 +659,7 @@ bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEve LavaridgeGymB1FWarpEffect_Warp, }; -bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +static bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGymB1FWarpExitEffect_Init, LavaridgeGymB1FWarpExitEffect_StartPopOut, @@ -667,7 +667,7 @@ bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct Objec LavaridgeGymB1FWarpExitEffect_End, }; -bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = +static bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) = { LavaridgeGym1FWarpEffect_Init, LavaridgeGym1FWarpEffect_AshPuff, @@ -676,7 +676,7 @@ bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEven LavaridgeGym1FWarpEffect_Warp, }; -void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = +static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) = { EscapeRopeWarpOutEffect_Init, EscapeRopeWarpOutEffect_Spin, @@ -2312,7 +2312,7 @@ static void EscapeRopeWarpOutEffect_Spin(struct Task *task) } } -void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { +static void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = { EscapeRopeWarpInEffect_Init, EscapeRopeWarpInEffect_Spin }; @@ -2483,7 +2483,7 @@ static void FieldCallback_TeleportWarpIn(void) CreateTask(Task_TeleportWarpIn, 0); } -void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { +static void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = { TeleportWarpInFieldEffect_Init, TeleportWarpInFieldEffect_SpinEnter, TeleportWarpInFieldEffect_SpinGround @@ -2617,7 +2617,7 @@ bool8 FldEff_FieldMoveShowMonInit(void) return FALSE; } -void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { +static void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonOutdoorsEffect_Init, FieldMoveShowMonOutdoorsEffect_LoadGfx, FieldMoveShowMonOutdoorsEffect_CreateBanner, @@ -2785,7 +2785,7 @@ static void LoadFieldMoveOutdoorStreaksTilemap(u16 offs) #define tBgOffset data[4] #define tMonSpriteId data[15] -void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { +static void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = { FieldMoveShowMonIndoorsEffect_Init, FieldMoveShowMonIndoorsEffect_LoadGfx, FieldMoveShowMonIndoorsEffect_SlideBannerOn, @@ -3013,7 +3013,7 @@ u8 FldEff_UseSurf(void) return FALSE; } -void (*const sSurfFieldEffectFuncs[])(struct Task *) = { +static void (*const sSurfFieldEffectFuncs[])(struct Task *) = { SurfFieldEffect_Init, SurfFieldEffect_FieldMovePose, SurfFieldEffect_ShowMon, @@ -3193,7 +3193,7 @@ u8 FldEff_UseFly(void) return 0; } -void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { +static void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = { FlyOutFieldEffect_FieldMovePose, FlyOutFieldEffect_ShowMon, FlyOutFieldEffect_BirdLeaveBall, @@ -3484,7 +3484,7 @@ u8 FldEff_FlyIn(void) return 0; } -void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { +static void (*const sFlyInFieldEffectFuncs[])(struct Task *) = { FlyInFieldEffect_BirdSwoopDown, FlyInFieldEffect_FlyInWithBird, FlyInFieldEffect_JumpOffBird, @@ -3715,7 +3715,7 @@ static void StartEndingDeoxysRockCameraShake(u8 taskId) #undef tEndDelay #undef tEnding -void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { +static void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = { DestroyDeoxysRockEffect_CameraShake, DestroyDeoxysRockEffect_RockFragments, DestroyDeoxysRockEffect_WaitAndEnd, diff --git a/src/field_message_box.c b/src/field_message_box.c index 74afb5677..95d0a94c9 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -33,7 +33,7 @@ static void Task_DrawFieldMessage(u8 taskId) task->tState++; break; case 1: - DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, TRUE); task->tState++; break; case 2: diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index b08288ffa..60b23ced8 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -80,13 +80,13 @@ static bool8 TryPushBoulder(s16, s16, u8); static void CheckAcroBikeCollision(s16, s16, u8, u8 *); static void DoPlayerAvatarTransition(void); -static void PlayerAvatarTransition_Dummy(struct ObjectEvent *a); -static void PlayerAvatarTransition_Normal(struct ObjectEvent *a); -static void PlayerAvatarTransition_MachBike(struct ObjectEvent *a); -static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *a); -static void PlayerAvatarTransition_Surfing(struct ObjectEvent *a); -static void PlayerAvatarTransition_Underwater(struct ObjectEvent *a); -static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *a); +static void PlayerAvatarTransition_Dummy(struct ObjectEvent *); +static void PlayerAvatarTransition_Normal(struct ObjectEvent *); +static void PlayerAvatarTransition_MachBike(struct ObjectEvent *); +static void PlayerAvatarTransition_AcroBike(struct ObjectEvent *); +static void PlayerAvatarTransition_Surfing(struct ObjectEvent *); +static void PlayerAvatarTransition_Underwater(struct ObjectEvent *); +static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *); static bool8 PlayerAnimIsMultiFrameStationary(void); static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void); @@ -97,51 +97,51 @@ static void PlayerRun(u8); static void PlayerNotOnBikeCollide(u8); static void PlayerNotOnBikeCollideWithFarawayIslandMew(u8); -static void PlayCollisionSoundIfNotFacingWarp(u8 a); +static void PlayCollisionSoundIfNotFacingWarp(u8); static void HideShowWarpArrow(struct ObjectEvent *); static void StartStrengthAnim(u8, u8); -static void Task_PushBoulder(u8 taskId); -static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); -static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); -static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject); +static void Task_PushBoulder(u8); +static bool8 PushBoulder_Start(struct Task *, struct ObjectEvent *, struct ObjectEvent *); +static bool8 PushBoulder_Move(struct Task *, struct ObjectEvent *, struct ObjectEvent *); +static bool8 PushBoulder_End(struct Task *, struct ObjectEvent *, struct ObjectEvent *); static void DoPlayerMatJump(void); -static void DoPlayerAvatarSecretBaseMatJump(u8 taskId); -static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent *objectEvent); +static void DoPlayerAvatarSecretBaseMatJump(u8); +static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *, struct ObjectEvent *); static void DoPlayerMatSpin(void); -static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId); -static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct ObjectEvent *objectEvent); -static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct ObjectEvent *objectEvent); -static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct ObjectEvent *objectEvent); -static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct ObjectEvent *objectEvent); +static void PlayerAvatar_DoSecretBaseMatSpin(u8); +static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *, struct ObjectEvent *); +static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *, struct ObjectEvent *); +static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *, struct ObjectEvent *); +static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *, struct ObjectEvent *); static void CreateStopSurfingTask(u8); -static void Task_StopSurfingInit(u8 taskId); -static void Task_WaitStopSurfing(u8 taskId); +static void Task_StopSurfingInit(u8); +static void Task_WaitStopSurfing(u8); -static void Task_Fishing(u8 taskId); -static u8 Fishing_Init(struct Task *task); -static u8 Fishing_GetRodOut(struct Task *task); -static u8 Fishing_WaitBeforeDots(struct Task *task); -static u8 Fishing_InitDots(struct Task *task); -static u8 Fishing_ShowDots(struct Task *task); -static u8 Fishing_CheckForBite(struct Task *task); -static u8 Fishing_GotBite(struct Task *task); -static u8 Fishing_WaitForA(struct Task *task); -static u8 Fishing_CheckMoreDots(struct Task *task); -static u8 Fishing_MonOnHook(struct Task *task); -static u8 Fishing_StartEncounter(struct Task *task); -static u8 Fishing_NotEvenNibble(struct Task *task); -static u8 Fishing_GotAway(struct Task *task); -static u8 Fishing_NoMon(struct Task *task); -static u8 Fishing_PutRodAway(struct Task *task); -static u8 Fishing_EndNoMon(struct Task *task); +static void Task_Fishing(u8); +static u8 Fishing_Init(struct Task *); +static u8 Fishing_GetRodOut(struct Task *); +static u8 Fishing_WaitBeforeDots(struct Task *); +static u8 Fishing_InitDots(struct Task *); +static u8 Fishing_ShowDots(struct Task *); +static u8 Fishing_CheckForBite(struct Task *); +static u8 Fishing_GotBite(struct Task *); +static u8 Fishing_WaitForA(struct Task *); +static u8 Fishing_CheckMoreDots(struct Task *); +static u8 Fishing_MonOnHook(struct Task *); +static u8 Fishing_StartEncounter(struct Task *); +static u8 Fishing_NotEvenNibble(struct Task *); +static u8 Fishing_GotAway(struct Task *); +static u8 Fishing_NoMon(struct Task *); +static u8 Fishing_PutRodAway(struct Task *); +static u8 Fishing_EndNoMon(struct Task *); static void AlignFishingAnimationFrames(void); -static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *a1); +static u8 TrySpinPlayerForWarp(struct ObjectEvent *, s16 *); static bool8 (*const sForcedMovementTestFuncs[NUM_FORCED_MOVEMENTS])(u8) = { @@ -639,7 +639,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) - && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0 && !FollowerComingThroughDoor()) + && IsRunningDisallowed(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) == 0) { FollowerPokeballSparkle(); PlayerRun(direction); @@ -1452,68 +1452,68 @@ static void HideShowWarpArrow(struct ObjectEvent *objectEvent) /* Strength */ -static void StartStrengthAnim(u8 a, u8 b) +#define tState data[0] +#define tBoulderObjId data[1] +#define tDirection data[2] + +static void StartStrengthAnim(u8 objectEventId, u8 direction) { u8 taskId = CreateTask(Task_PushBoulder, 0xFF); - gTasks[taskId].data[1] = a; - gTasks[taskId].data[2] = b; + gTasks[taskId].tBoulderObjId = objectEventId; + gTasks[taskId].tDirection = direction; Task_PushBoulder(taskId); } static void Task_PushBoulder(u8 taskId) { - while (sPushBoulderFuncs[gTasks[taskId].data[0]](&gTasks[taskId], + while (sPushBoulderFuncs[gTasks[taskId].tState](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], - &gObjectEvents[gTasks[taskId].data[1]])) + &gObjectEvents[gTasks[taskId].tBoulderObjId])) ; } -static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) +static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) { ScriptContext2_Enable(); gPlayerAvatar.preventStep = TRUE; - task->data[0]++; + task->tState++; return FALSE; } -static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) +static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) { - if (ObjectEventIsHeldMovementActive(playerObject)) - { - ObjectEventClearHeldMovementIfFinished(playerObject); - } + if (ObjectEventIsHeldMovementActive(player)) + ObjectEventClearHeldMovementIfFinished(player); - if (ObjectEventIsHeldMovementActive(strengthObject)) - { - ObjectEventClearHeldMovementIfFinished(strengthObject); - } + if (ObjectEventIsHeldMovementActive(boulder)) + ObjectEventClearHeldMovementIfFinished(boulder); - if (!ObjectEventIsMovementOverridden(playerObject) - && !ObjectEventIsMovementOverridden(strengthObject)) + if (!ObjectEventIsMovementOverridden(player) + && !ObjectEventIsMovementOverridden(boulder)) { - ObjectEventClearHeldMovementIfFinished(playerObject); - ObjectEventClearHeldMovementIfFinished(strengthObject); - ObjectEventSetHeldMovement(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2])); - ObjectEventSetHeldMovement(strengthObject, GetWalkSlowMovementAction((u8)task->data[2])); - gFieldEffectArguments[0] = strengthObject->currentCoords.x; - gFieldEffectArguments[1] = strengthObject->currentCoords.y; - gFieldEffectArguments[2] = strengthObject->previousElevation; - gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority; + ObjectEventClearHeldMovementIfFinished(player); + ObjectEventClearHeldMovementIfFinished(boulder); + ObjectEventSetHeldMovement(player, GetWalkInPlaceNormalMovementAction((u8)task->tDirection)); + ObjectEventSetHeldMovement(boulder, GetWalkSlowMovementAction((u8)task->tDirection)); + gFieldEffectArguments[0] = boulder->currentCoords.x; + gFieldEffectArguments[1] = boulder->currentCoords.y; + gFieldEffectArguments[2] = boulder->previousElevation; + gFieldEffectArguments[3] = gSprites[boulder->spriteId].oam.priority; FieldEffectStart(FLDEFF_DUST); PlaySE(SE_M_STRENGTH); - task->data[0]++; + task->tState++; } return FALSE; } -static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) +static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *player, struct ObjectEvent *boulder) { - if (ObjectEventCheckHeldMovementStatus(playerObject) - && ObjectEventCheckHeldMovementStatus(strengthObject)) + if (ObjectEventCheckHeldMovementStatus(player) + && ObjectEventCheckHeldMovementStatus(boulder)) { - ObjectEventClearHeldMovementIfFinished(playerObject); - ObjectEventClearHeldMovementIfFinished(strengthObject); + ObjectEventClearHeldMovementIfFinished(player); + ObjectEventClearHeldMovementIfFinished(boulder); gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); DestroyTask(FindTaskIdByFunc(Task_PushBoulder)); @@ -1521,6 +1521,10 @@ static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject return FALSE; } +#undef tState +#undef tBoulderObjId +#undef tDirection + /* Some field effect */ static void DoPlayerMatJump(void) diff --git a/src/field_region_map.c b/src/field_region_map.c index 26ae736a6..adf5e4ed7 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -192,10 +192,7 @@ static void FieldUpdateRegionMap(void) { FreeRegionMapIconResources(); SetMainCallback2(sFieldRegionMapHandler->callback); - if (sFieldRegionMapHandler != NULL) - { - FREE_AND_SET_NULL(sFieldRegionMapHandler); - } + TRY_FREE_AND_SET_NULL(sFieldRegionMapHandler); FreeAllWindowBuffers(); } break; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 119f20dea..11a44a24d 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -52,7 +52,7 @@ static void Task_EnableScriptAfterMusicFade(u8 taskId); static const u16 sFlashLevelToRadius[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 }; const s32 gMaxFlashLevel = ARRAY_COUNT(sFlashLevelToRadius) - 1; -const struct ScanlineEffectParams sFlashEffectParams = +static const struct ScanlineEffectParams sFlashEffectParams = { ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, diff --git a/src/field_special_scene.c b/src/field_special_scene.c index d8b9eb05d..749346728 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -19,7 +19,19 @@ #include "constants/songs.h" #include "constants/metatile_labels.h" -#define SECONDS(value) ((signed) (60.0 * value + 0.5)) +// Most of the boxes in the moving truck are map tiles, with the +// exception of three boxes that are map events that jostle around +// while the truck is driving. In addition, their sprite's placement +// is slightly offset to make them look less perfectly stacked. +// Box 1 (LOCALID_TRUCK_BOX_TOP) +#define BOX1_X_OFFSET 3 +#define BOX1_Y_OFFSET 3 +// Box 2 (LOCALID_TRUCK_BOX_BOTTOM_L) +#define BOX2_X_OFFSET 0 +#define BOX2_Y_OFFSET -3 +// Box 3 (LOCALID_TRUCK_BOX_BOTTOM_R) +#define BOX3_X_OFFSET -3 +#define BOX3_Y_OFFSET 0 // porthole states enum @@ -30,8 +42,7 @@ enum EXIT_PORTHOLE, }; -//. rodata -static const s8 gTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; +static const s8 sTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; static const u8 sSSTidalSailEastMovementScript[] = { @@ -45,175 +56,194 @@ static const u8 sSSTidalSailWestMovementScript[] = MOVEMENT_ACTION_STEP_END }; -// .text static void Task_Truck3(u8); -s16 GetTruckCameraBobbingY(int a1) +static s16 GetTruckCameraBobbingY(int time) { - if (!(a1 % 120)) + if (!(time % 120)) return -1; - else if ((a1 % 10) <= 4) + else if ((time % 10) <= 4) return 1; return 0; } -s16 GetTruckBoxMovement(int a1) // for the box movement? +// Determines the frequency that the truck boxes bounce at. +// The return value of this function is multiplied and added +// to the boxes resting y offset, the result of which is that +// when it returns 0 they remain vertically still and when it +// returns -1 they jump upward. +// Box 1 has 30 added to the time so it jumps earlier, and +// box 2 has the return value multiplied by less, so it doesn't +// jump as high. +static s16 GetTruckBoxYMovement(int time) { - if (!((a1 + 120) % 180)) + if (!((time + 120) % 180)) return -1; return 0; } -void Task_Truck1(u8 taskId) +#define tTimer data[0] + +static void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; s16 cameraXpan = 0, cameraYpan = 0; - s16 box1, box2, box3; + s16 yBox1, yBox2, yBox3; - box1 = GetTruckBoxMovement(data[0] + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); - box2 = GetTruckBoxMovement(data[0]) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); - box3 = GetTruckBoxMovement(data[0]) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); + yBox1 = GetTruckBoxYMovement(tTimer + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); + yBox2 = GetTruckBoxYMovement(tTimer) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); + yBox3 = GetTruckBoxYMovement(tTimer) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); - if (++data[0] == SECONDS(500)) // this will never run - data[0] = 0; // reset the timer if it gets stuck. + // Arbitrary timer limit that won't be reached + if (++tTimer == 30000) + tTimer = 0; - cameraYpan = GetTruckCameraBobbingY(data[0]); + cameraYpan = GetTruckCameraBobbingY(tTimer); SetCameraPanning(cameraXpan, cameraYpan); } -void Task_Truck2(u8 taskId) +#undef tTimer + +#define tTimerHorizontal data[0] +#define tMoveStep data[1] +#define tTimerVertical data[2] + +static void Task_Truck2(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan; - s16 cameraXpan; - s16 box1; - s16 box2; - s16 box3; + s16 cameraYpan, cameraXpan; + s16 yBox1, yBox2, yBox3; - data[0]++; - data[2]++; + tTimerHorizontal++; + tTimerVertical++; - if (data[0] > 5) + if (tTimerHorizontal > 5) { - data[0] = 0; - data[1]++; + tTimerHorizontal = 0; + tMoveStep++; } - if ((u16)data[1] == 19) + if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) { + // Never reached, the task function is changed below before finishing the table DestroyTask(taskId); } else { - if (gTruckCamera_HorizontalTable[data[1]] == 2) + if (sTruckCamera_HorizontalTable[tMoveStep] == 2) gTasks[taskId].func = Task_Truck3; - cameraXpan = gTruckCamera_HorizontalTable[data[1]]; - cameraYpan = GetTruckCameraBobbingY(data[2]); + cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; + cameraYpan = GetTruckCameraBobbingY(tTimerVertical); SetCameraPanning(cameraXpan, cameraYpan); - box1 = GetTruckBoxMovement(data[2] + 30) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3); - box2 = GetTruckBoxMovement(data[2]) * 2; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3); - box3 = GetTruckBoxMovement(data[2]) * 4; - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3); + yBox1 = GetTruckBoxYMovement(tTimerVertical + 30) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + yBox1); + yBox2 = GetTruckBoxYMovement(tTimerVertical) * 2; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + yBox2); + yBox3 = GetTruckBoxYMovement(tTimerVertical) * 4; + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + yBox3); } } static void Task_Truck3(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraXpan; - s16 cameraYpan; + s16 cameraXpan, cameraYpan; - data[0]++; + tTimerHorizontal++; - if (data[0] > 5) + if (tTimerHorizontal > 5) { - data[0] = 0; - data[1]++; + tTimerHorizontal = 0; + tMoveStep++; } - if ((u16)data[1] == 19) + if ((u16)tMoveStep == ARRAY_COUNT(sTruckCamera_HorizontalTable)) { DestroyTask(taskId); } else { - cameraXpan = gTruckCamera_HorizontalTable[data[1]]; + cameraXpan = sTruckCamera_HorizontalTable[tMoveStep]; cameraYpan = 0; - SetCameraPanning(cameraXpan, 0); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan); + SetCameraPanning(cameraXpan, cameraYpan); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET - cameraXpan, BOX1_Y_OFFSET + cameraYpan); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET - cameraXpan, BOX2_Y_OFFSET + cameraYpan); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET - cameraXpan, BOX3_Y_OFFSET + cameraYpan); } } -void Task_HandleTruckSequence(u8 taskId) +#undef tTimerHorizontal +#undef tMoveStep +#undef tTimerVertical + +#define tState data[0] +#define tTimer data[1] +#define tTaskId1 data[2] +#define tTaskId2 data[3] + +static void Task_HandleTruckSequence(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { - /* - Each case has a timer which is handled with data[1], incrementing - until it reaches the if function's condition, which sets the next task up. - */ case 0: - data[1]++; - if (data[1] == SECONDS(1.5)) + tTimer++; + if (tTimer == 90) { SetCameraPanningCallback(NULL); - data[1] = 0; // reset the timer. - data[2] = CreateTask(Task_Truck1, 0xA); - data[0] = 1; // run the next case. + tTimer = 0; + tTaskId1 = CreateTask(Task_Truck1, 0xA); + tState = 1; PlaySE(SE_TRUCK_MOVE); } break; case 1: - data[1]++; - if (data[1] == SECONDS(2.5)) + tTimer++; + if (tTimer == 150) { FadeInFromBlack(); - data[1] = 0; - data[0] = 2; + tTimer = 0; + tState = 2; } break; case 2: - data[1]++; - if (!gPaletteFade.active && data[1] > SECONDS(5)) + tTimer++; + if (!gPaletteFade.active && tTimer > 300) { - data[1] = 0; - DestroyTask(data[2]); - data[3] = CreateTask(Task_Truck2, 0xA); - data[0] = 3; + tTimer = 0; + DestroyTask(tTaskId1); + tTaskId2 = CreateTask(Task_Truck2, 0xA); + tState = 3; PlaySE(SE_TRUCK_STOP); } break; case 3: - if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) + if (!gTasks[tTaskId2].isActive) { + // Task_Truck2 / Task_Truck3 has finished InstallCameraPanAheadCallback(); - data[1] = 0; - data[0] = 4; + tTimer = 0; + tState = 4; } break; case 4: - data[1]++; - if (data[1] == 90) + tTimer++; + if (tTimer == 90) { PlaySE(SE_TRUCK_UNLOAD); - data[1] = 0; - data[0] = 5; + tTimer = 0; + tState = 5; } break; case 5: - data[1]++; - if (data[1] == 120) + tTimer++; + if (tTimer == 120) { MapGridSetMetatileIdAt(4 + MAP_OFFSET, 1 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Top); MapGridSetMetatileIdAt(4 + MAP_OFFSET, 2 + MAP_OFFSET, METATILE_InsideOfTruck_ExitLight_Mid); @@ -242,9 +272,9 @@ void EndTruckSequence(u8 taskId) { if (!FuncIsActiveTask(Task_HandleTruckSequence)) { - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3); - SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX1_X_OFFSET, BOX1_Y_OFFSET); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX2_X_OFFSET, BOX2_Y_OFFSET); + SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, BOX3_X_OFFSET, BOX3_Y_OFFSET); } } @@ -259,7 +289,7 @@ bool8 TrySetPortholeWarpDestination(void) } else { - SetWarpDestination(mapGroup, mapNum, -1, x, y); + SetWarpDestination(mapGroup, mapNum, WARP_ID_NONE, x, y); return TRUE; } } diff --git a/src/field_specials.c b/src/field_specials.c index 370d5136c..4df35e2d2 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -99,35 +99,35 @@ static void PCTurnOnEffect_1(s16, s8, s8); static void PCTurnOffEffect(void); static void Task_LotteryCornerComputerEffect(u8); static void LotteryCornerComputerEffect(struct Task *); -static void Task_ShakeCamera(u8 taskId); -static void StopCameraShake(u8 taskId); -static void Task_MoveElevator(u8 taskId); -static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending); -static void Task_MoveElevatorWindowLights(u8 taskId); -static void Task_ShowScrollableMultichoice(u8 taskId); -static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection); -static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection); +static void Task_ShakeCamera(u8); +static void StopCameraShake(u8); +static void Task_MoveElevator(u8); +static void MoveElevatorWindowLights(u16, bool8); +static void Task_MoveElevatorWindowLights(u8); +static void Task_ShowScrollableMultichoice(u8); +static void FillFrontierExchangeCornerWindowAndItemIcon(u16, u16); +static void ShowBattleFrontierTutorWindow(u8, u16); static void InitScrollableMultichoice(void); -static void ScrollableMultichoice_ProcessInput(u8 taskId); -static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId); -static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list); -static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused); -static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection); -static void CloseScrollableMultichoice(u8 taskId); -static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId); -static void Task_ScrollableMultichoice_WaitReturnToList(u8 taskId); -static void Task_ScrollableMultichoice_ReturnToList(u8 taskId); -static void ShowFrontierExchangeCornerItemIcon(u16 item); -static void Task_DeoxysRockInteraction(u8 taskId); -static void ChangeDeoxysRockLevel(u8 a0); -static void WaitForDeoxysRockMovement(u8 taskId); -static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId); -static void Task_LoopWingFlapSE(u8 taskId); -static void Task_CloseBattlePikeCurtain(u8 taskId); +static void ScrollableMultichoice_ProcessInput(u8); +static void ScrollableMultichoice_UpdateScrollArrows(u8); +static void ScrollableMultichoice_MoveCursor(s32, bool8, struct ListMenu *); +static void HideFrontierExchangeCornerItemIcon(u16, u16); +static void ShowBattleFrontierTutorMoveDescription(u8, u16); +static void CloseScrollableMultichoice(u8); +static void ScrollableMultichoice_RemoveScrollArrows(u8); +static void Task_ScrollableMultichoice_WaitReturnToList(u8); +static void Task_ScrollableMultichoice_ReturnToList(u8); +static void ShowFrontierExchangeCornerItemIcon(u16); +static void Task_DeoxysRockInteraction(u8); +static void ChangeDeoxysRockLevel(u8); +static void WaitForDeoxysRockMovement(u8); +static void Task_LinkRetireStatusWithBattleTowerPartner(u8); +static void Task_LoopWingFlapSE(u8); +static void Task_CloseBattlePikeCurtain(u8); static u8 DidPlayerGetFirstFans(void); static void SetInitialFansOfPlayer(void); static u16 PlayerGainRandomTrainerFan(void); -static void BufferFanClubTrainerName_(struct LinkBattleRecords *linkRecords, u8 a, u8 b); +static void BufferFanClubTrainerName_(struct LinkBattleRecords *, u8, u8); void Special_ShowDiploma(void) { diff --git a/src/field_weather.c b/src/field_weather.c index dfd96ee2b..31cd4abf3 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -65,7 +65,7 @@ static const u8 *sPaletteGammaTypes; // The drought weather effect uses a precalculated color lookup table. Presumably this // is because the underlying color shift calculation is slow. -const u16 sDroughtWeatherColors[][0x1000] = { +static const u16 sDroughtWeatherColors[][0x1000] = { INCBIN_U16("graphics/weather/drought/colors_0.bin"), INCBIN_U16("graphics/weather/drought/colors_1.bin"), INCBIN_U16("graphics/weather/drought/colors_2.bin"), @@ -859,10 +859,10 @@ void LoadCustomWeatherSpritePalette(const struct SpritePalette *palette) UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); } -static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) +static void LoadDroughtWeatherPalette(u8 *palsIndex, u8 *palsOffset) { - *gammaIndexPtr = 0x20; - *a1 = 0x20; + *palsIndex = 0x20; + *palsOffset = 0x20; } void ResetDroughtWeatherPaletteLoading(void) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index cefe0da55..bd6b9497d 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -14,11 +14,9 @@ #include "trig.h" #include "gpu_regs.h" -// EWRAM -EWRAM_DATA static u8 gCurrentAbnormalWeather = 0; -EWRAM_DATA static u16 gUnusedWeatherRelated = 0; +EWRAM_DATA static u8 sCurrentAbnormalWeather = 0; +EWRAM_DATA static u16 sUnusedWeatherRelated = 0; -// CONST const u16 gCloudsWeatherPalette[] = INCBIN_U16("graphics/weather/cloud.gbapal"); const u16 gSandstormWeatherPalette[] = INCBIN_U16("graphics/weather/sandstorm.gbapal"); const u8 gWeatherFogDiagonalTiles[] = INCBIN_U8("graphics/weather/fog_diagonal.4bpp"); @@ -1821,7 +1819,7 @@ static void UpdateFogDiagonalMovement(void) gWeatherPtr->fogDPosY = gSpriteCoordOffsetY + gWeatherPtr->fogDYOffset; } -static const struct SpriteSheet gFogDiagonalSpriteSheet = +static const struct SpriteSheet sFogDiagonalSpriteSheet = { .data = gWeatherFogDiagonalTiles, .size = sizeof(gWeatherFogDiagonalTiles), @@ -1876,7 +1874,7 @@ static void CreateFogDiagonalSprites(void) if (!gWeatherPtr->fogDSpritesCreated) { - fogDiagonalSpriteSheet = gFogDiagonalSpriteSheet; + fogDiagonalSpriteSheet = sFogDiagonalSpriteSheet; LoadSpriteSheet(&fogDiagonalSpriteSheet); LoadCustomWeatherSpritePalette(&sFogSpritePalette); for (i = 0; i < NUM_FOG_DIAGONAL_SPRITES; i++) @@ -2434,34 +2432,39 @@ static void UpdateBubbleSprite(struct Sprite *sprite) //------------------------------------------------------------------------------ // Unused function. -static void UnusedSetCurrentAbnormalWeather(u32 a0, u32 a1) +static void UnusedSetCurrentAbnormalWeather(u32 weather, u32 unknown) { - gCurrentAbnormalWeather = a0; - gUnusedWeatherRelated = a1; + sCurrentAbnormalWeather = weather; + sUnusedWeatherRelated = unknown; } +#define tState data[0] +#define tWeatherA data[1] +#define tWeatherB data[2] +#define tDelay data[15] + static void Task_DoAbnormalWeather(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { case 0: - if (data[15]-- <= 0) + if (tDelay-- <= 0) { - SetNextWeather(data[1]); - gCurrentAbnormalWeather = data[1]; - data[15] = 600; - data[0]++; + SetNextWeather(tWeatherA); + sCurrentAbnormalWeather = tWeatherA; + tDelay = 600; + tState++; } break; case 1: - if (data[15]-- <= 0) + if (tDelay-- <= 0) { - SetNextWeather(data[2]); - gCurrentAbnormalWeather = data[2]; - data[15] = 600; - data[0] = 0; + SetNextWeather(tWeatherB); + sCurrentAbnormalWeather = tWeatherB; + tDelay = 600; + tState = 0; } break; } @@ -2472,25 +2475,33 @@ static void CreateAbnormalWeatherTask(void) u8 taskId = CreateTask(Task_DoAbnormalWeather, 0); s16 *data = gTasks[taskId].data; - data[15] = 600; - if (gCurrentAbnormalWeather == WEATHER_DOWNPOUR) + tDelay = 600; + if (sCurrentAbnormalWeather == WEATHER_DOWNPOUR) { - data[1] = WEATHER_DROUGHT; - data[2] = WEATHER_DOWNPOUR; + // Currently Downpour, next will be Drought + tWeatherA = WEATHER_DROUGHT; + tWeatherB = WEATHER_DOWNPOUR; } - else if (gCurrentAbnormalWeather == WEATHER_DROUGHT) + else if (sCurrentAbnormalWeather == WEATHER_DROUGHT) { - data[1] = WEATHER_DOWNPOUR; - data[2] = WEATHER_DROUGHT; + // Currently Drought, next will be Downpour + tWeatherA = WEATHER_DOWNPOUR; + tWeatherB = WEATHER_DROUGHT; } else { - gCurrentAbnormalWeather = WEATHER_DOWNPOUR; - data[1] = WEATHER_DROUGHT; - data[2] = WEATHER_DOWNPOUR; + // Default to starting with Downpour + sCurrentAbnormalWeather = WEATHER_DOWNPOUR; + tWeatherA = WEATHER_DROUGHT; + tWeatherB = WEATHER_DOWNPOUR; } } +#undef tState +#undef tWeatherA +#undef tWeatherB +#undef tDelay + static u8 TranslateWeatherNum(u8); static void UpdateRainCounter(u8, u8); @@ -2533,13 +2544,13 @@ void DoCurrentWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = gCurrentAbnormalWeather; + weather = sCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - gCurrentAbnormalWeather = WEATHER_DOWNPOUR; + sCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetNextWeather(weather); } @@ -2552,13 +2563,13 @@ void ResumePausedWeather(void) { if (!FuncIsActiveTask(Task_DoAbnormalWeather)) CreateAbnormalWeatherTask(); - weather = gCurrentAbnormalWeather; + weather = sCurrentAbnormalWeather; } else { if (FuncIsActiveTask(Task_DoAbnormalWeather)) DestroyTask(FindTaskIdByFunc(Task_DoAbnormalWeather)); - gCurrentAbnormalWeather = WEATHER_DOWNPOUR; + sCurrentAbnormalWeather = WEATHER_DOWNPOUR; } SetCurrentAndNextWeather(weather); } diff --git a/src/fieldmap.c b/src/fieldmap.c index 4dbf981cf..a02355e72 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -25,10 +25,10 @@ struct ConnectionFlags u8 east:1; }; -EWRAM_DATA static u16 gBackupMapData[MAX_MAP_DATA_SIZE] = {0}; +EWRAM_DATA static u16 sBackupMapData[MAX_MAP_DATA_SIZE] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; -EWRAM_DATA static struct ConnectionFlags gMapConnectionFlags = {0}; +EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0}; EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly struct BackupMapLayout gBackupMapLayout; @@ -87,14 +87,14 @@ void InitMapFromSavedGame(void) void InitBattlePyramidMap(bool8 setPlayerPosition) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); - GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); + GenerateBattlePyramidFloorLayout(sBackupMapData, setPlayerPosition); } void InitTrainerHillMap(void) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); - GenerateTrainerHillFloorLayout(gBackupMapData); + CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); + GenerateTrainerHillFloorLayout(sBackupMapData); } static void InitMapLayoutData(struct MapHeader *mapHeader) @@ -103,8 +103,8 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) int width; int height; mapLayout = mapHeader->mapLayout; - CpuFastFill16(MAPGRID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData)); - gBackupMapLayout.map = gBackupMapData; + CpuFastFill16(MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); + gBackupMapLayout.map = sBackupMapData; width = mapLayout->width + MAP_OFFSET_W; gBackupMapLayout.width = width; height = mapLayout->height + MAP_OFFSET_H; @@ -140,7 +140,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { count = mapHeader->connections->count; connection = mapHeader->connections->connections; - gMapConnectionFlags = sDummyConnectionFlags; + sMapConnectionFlags = sDummyConnectionFlags; for (i = 0; i < count; i++, connection++) { struct MapHeader const *cMap = GetMapHeaderFromConnection(connection); @@ -149,19 +149,19 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { case CONNECTION_SOUTH: FillSouthConnection(mapHeader, cMap, offset); - gMapConnectionFlags.south = TRUE; + sMapConnectionFlags.south = TRUE; break; case CONNECTION_NORTH: FillNorthConnection(mapHeader, cMap, offset); - gMapConnectionFlags.north = TRUE; + sMapConnectionFlags.north = TRUE; break; case CONNECTION_WEST: FillWestConnection(mapHeader, cMap, offset); - gMapConnectionFlags.west = TRUE; + sMapConnectionFlags.west = TRUE; break; case CONNECTION_EAST: FillEastConnection(mapHeader, cMap, offset); - gMapConnectionFlags.east = TRUE; + sMapConnectionFlags.east = TRUE; break; } } @@ -436,7 +436,7 @@ void SaveMapView(void) for (i = y; i < y + MAP_OFFSET_H; i++) { for (j = x; j < x + MAP_OFFSET_W; j++) - *mapView++ = gBackupMapData[width * i + j]; + *mapView++ = sBackupMapData[width * i + j]; } } @@ -491,8 +491,8 @@ static void LoadSavedMapView(void) for (j = x; j < x + MAP_OFFSET_W; j++) { - if (!SkipCopyingMetatileFromSavedMap(&gBackupMapData[j + width * i], width, yMode)) - gBackupMapData[j + width * i] = *mapView; + if (!SkipCopyingMetatileFromSavedMap(&sBackupMapData[j + width * i], width, yMode)) + sBackupMapData[j + width * i] = *mapView; mapView++; } } @@ -554,7 +554,7 @@ static void MoveMapViewToBackup(u8 direction) desti = width * (y + y0); srci = (y + r8) * MAP_OFFSET_W + r9; src = &mapView[srci + i]; - dest = &gBackupMapData[x0 + desti + j]; + dest = &sBackupMapData[x0 + desti + j]; *dest = *src; i++; j++; @@ -570,28 +570,28 @@ int GetMapBorderIdAt(int x, int y) if (x >= (gBackupMapLayout.width - (MAP_OFFSET + 1))) { - if (!gMapConnectionFlags.east) + if (!sMapConnectionFlags.east) return CONNECTION_INVALID; return CONNECTION_EAST; } else if (x < MAP_OFFSET) { - if (!gMapConnectionFlags.west) + if (!sMapConnectionFlags.west) return CONNECTION_INVALID; return CONNECTION_WEST; } else if (y >= (gBackupMapLayout.height - MAP_OFFSET)) { - if (!gMapConnectionFlags.south) + if (!sMapConnectionFlags.south) return CONNECTION_INVALID; return CONNECTION_SOUTH; } else if (y < MAP_OFFSET) { - if (!gMapConnectionFlags.north) + if (!sMapConnectionFlags.north) return CONNECTION_INVALID; return CONNECTION_NORTH; diff --git a/src/follow_me.c b/src/follow_me.c index c1bd932c6..4820c0404 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -251,12 +251,17 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) { - gPlayerAvatar.preventStep = TRUE; - taskId = CreateTask(Task_FollowerOutOfDoor, 1); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[2] = follower->currentCoords.x; - gTasks[taskId].data[3] = follower->currentCoords.y; - goto RESET; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + else + { + gPlayerAvatar.preventStep = TRUE; + taskId = CreateTask(Task_FollowerOutOfDoor, 1); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = follower->currentCoords.x; + gTasks[taskId].data[3] = follower->currentCoords.y; + goto RESET; + } } else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 2) { @@ -264,7 +269,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) } // This makes sure the follower is still invisible after diving or surfacing - if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))) + if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) follower->invisible = FALSE; MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); ObjectEventTurn(follower, player->facingDirection); //The follower should be facing the same direction as the player when it comes out of hiding diff --git a/src/frontier_util.c b/src/frontier_util.c index 03d7b0cb5..f5dde452f 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -29,6 +29,7 @@ #include "load_save.h" #include "battle_dome.h" #include "constants/battle_frontier.h" +#include "constants/battle_pike.h" #include "constants/frontier_util.h" #include "constants/trainers.h" #include "constants/game_stat.h" @@ -499,94 +500,94 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUNT] = { { - {1, 2, 3, 3}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} + {1, 2, 3, 3}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} }, { - {2, 3, 4, 4}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} + {2, 3, 4, 4}, {1, 1}, {4, 5}, {1}, {3, 4}, {1}, {5} }, { - {3, 4, 5, 5}, {2, 2, 0, 0}, {5, 6, 0, 0}, {1, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} + {3, 4, 5, 5}, {2, 2}, {5, 6}, {1}, {4, 5}, {2}, {6} }, { - {4, 5, 6, 6}, {2, 2, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} + {4, 5, 6, 6}, {2, 2}, {5, 6}, {2}, {4, 5}, {2}, {6} }, { - {5, 6, 7, 7}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {7, 0, 0, 0} + {5, 6, 7, 7}, {3, 3}, {6, 7}, {2}, {5, 6}, {2}, {7} }, { - {6, 7, 8, 8}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {4, 0, 0, 0}, {7, 0, 0, 0} + {6, 7, 8, 8}, {3, 3}, {6, 7}, {2}, {5, 6}, {4}, {7} }, { - {7, 8, 9, 9}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0}, {6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} + {7, 8, 9, 9}, {4, 4}, {7, 8}, {3}, {6, 7}, {4}, {8} }, { - {8, 9, 10, 10}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0},{6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} + {8, 9, 10, 10}, {4, 4}, {7, 8}, {3},{6, 7}, {4}, {8} }, { - {9, 10, 11, 11}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} + {9, 10, 11, 11}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} }, { - {10, 11, 12, 12}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} + {10, 11, 12, 12}, {5, 5}, {8, 9}, {4}, {7, 8}, {8}, {9} }, { - {11, 12, 13, 13}, {6, 6, 0, 0}, {9, 10, 0, 0}, {5, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} + {11, 12, 13, 13}, {6, 6}, {9, 10}, {5,0}, {8, 9}, {8}, {10} }, { - {12, 13, 14, 14}, {6, 6, 0, 0}, {9, 10, 0, 0}, {6, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} + {12, 13, 14, 14}, {6, 6}, {9, 10}, {6,0}, {8, 9}, {8}, {10} }, { - {13, 14, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {7, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} + {13, 14, 15, 15}, {7, 7}, {10, 11}, {7}, {9, 10}, {10}, {11} }, { - {14, 15, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {8, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} + {14, 15, 15, 15}, {7, 7}, {10, 11}, {8}, {9, 10}, {10}, {11} }, { - {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {9, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} + {15, 15, 15, 15}, {8, 8}, {11, 12}, {9}, {10, 11}, {10}, {12} }, { - {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {10, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} + {15, 15, 15, 15}, {8, 8}, {11, 12}, {10}, {10, 11}, {10}, {12} }, { - {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {11, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} + {15, 15, 15, 15}, {9, 9}, {12, 13}, {11}, {11, 12}, {12}, {13} }, { - {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} + {15, 15, 15, 15}, {9, 9}, {12, 13}, {12}, {11, 12}, {12}, {13} }, { - {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {13, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} + {15, 15, 15, 15}, {10, 10}, {13, 14}, {13}, {12, 13}, {12}, {14} }, { - {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} + {15, 15, 15, 15}, {10, 10}, {13, 14}, {14}, {12, 13}, {12}, {14} }, { - {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {12, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {12}, {15} }, { - {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {11, 11}, {14, 15}, {15}, {13, 14}, {14}, {15} }, { - {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} }, { - {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {12, 12}, {15, 15}, {15}, {14, 15}, {14}, {15} }, { - {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {14}, {15} }, { - {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {13, 13}, {15, 15}, {15}, {15, 15}, {15}, {15} }, { - {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} }, { - {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {14, 14}, {15, 15}, {15}, {15, 15}, {15}, {15} }, { - {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} }, { - {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + {15, 15, 15, 15}, {15, 15}, {15, 15}, {15}, {15, 15}, {15}, {15} }, }; @@ -594,13 +595,13 @@ static const u8 sBattlePointAwards[][NUM_FRONTIER_FACILITIES][FRONTIER_MODE_COUN // First bit is has battled them before and not won yet, second bit is has battled them and won (obtained a Symbol) static const u16 sBattledBrainBitFlags[NUM_FRONTIER_FACILITIES][2] = { - [FRONTIER_FACILITY_TOWER] = {0x0001, 0x0002}, - [FRONTIER_FACILITY_DOME] = {0x0004, 0x0008}, - [FRONTIER_FACILITY_PALACE] = {0x0010, 0x0020}, - [FRONTIER_FACILITY_ARENA] = {0x0040, 0x0080}, - [FRONTIER_FACILITY_FACTORY] = {0x0100, 0x0200}, - [FRONTIER_FACILITY_PIKE] = {0x0400, 0x0800}, - [FRONTIER_FACILITY_PYRAMID] = {0x1000, 0x2000}, + [FRONTIER_FACILITY_TOWER] = {1 << 0, 1 << 1}, + [FRONTIER_FACILITY_DOME] = {1 << 2, 1 << 3}, + [FRONTIER_FACILITY_PALACE] = {1 << 4, 1 << 5}, + [FRONTIER_FACILITY_ARENA] = {1 << 6, 1 << 7}, + [FRONTIER_FACILITY_FACTORY] = {1 << 8, 1 << 9}, + [FRONTIER_FACILITY_PIKE] = {1 << 10, 1 << 11}, + [FRONTIER_FACILITY_PYRAMID] = {1 << 12, 1 << 13}, }; static void (* const sFrontierUtilFuncs[])(void) = @@ -635,8 +636,8 @@ static const struct WindowTemplate sFrontierResultsWindowTemplate = .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, - .width = 0x1c, - .height = 0x12, + .width = 28, + .height = 18, .paletteNum = 15, .baseBlock = 1 }; @@ -646,7 +647,7 @@ static const struct WindowTemplate sLinkContestResultsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 2, - .width = 0x1a, + .width = 26, .height = 15, .paletteNum = 15, .baseBlock = 1 @@ -657,7 +658,7 @@ static const struct WindowTemplate sRankingHallRecordsWindowTemplate = .bg = 0, .tilemapLeft = 2, .tilemapTop = 1, - .width = 0x1a, + .width = 26, .height = 17, .paletteNum = 15, .baseBlock = 1 @@ -958,7 +959,7 @@ static bool8 IsWinStreakActive(u32 challenge) static void PrintAligned(const u8 *str, s32 y) { - s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, 224); + s32 x = GetStringCenterAlignXOffset(FONT_NORMAL, str, DISPLAY_WIDTH - 16); y = (y * 8) + 1; AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, str, x, y, TEXT_SKIP_DRAW, NULL); } @@ -968,7 +969,7 @@ static void PrintHyphens(s32 y) s32 i; u8 text[37]; - for (i = 0; i < 36; i++) + for (i = 0; i < (int)ARRAY_COUNT(text) - 1; i++) text[i] = CHAR_HYPHEN; text[i] = EOS; @@ -1860,25 +1861,25 @@ static void GiveBattlePoints(void) switch (facility) { case FRONTIER_FACILITY_TOWER: - challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; break; case FRONTIER_FACILITY_DOME: challengeNum = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; break; case FRONTIER_FACILITY_PALACE: - challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; break; case FRONTIER_FACILITY_ARENA: - challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; break; case FRONTIER_FACILITY_FACTORY: - challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; break; case FRONTIER_FACILITY_PIKE: - challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / NUM_PIKE_ROOMS; break; case FRONTIER_FACILITY_PYRAMID: - challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; break; } @@ -1982,7 +1983,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (gFrontierBannedSpecies[i] != 0xFFFF) return; - if (lvlMode == FRONTIER_LVL_50 && monLevel > 50) + if (lvlMode == FRONTIER_LVL_50 && monLevel > FRONTIER_MAX_LEVEL_50) return; for (i = 0; i < *count && speciesArray[i] != species; i++) @@ -2344,7 +2345,7 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) StringCopy(gStringVar1, sRecordsWindowChallengeTexts[hallFacilityId][0]); StringExpandPlaceholders(gStringVar4, sRecordsWindowChallengeTexts[hallFacilityId][1]); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gStringVar4, 0, 1, TEXT_SKIP_DRAW, NULL); - x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], 0xD0); + x = GetStringRightAlignXOffset(FONT_NORMAL, sLevelModeText[lvlMode], DISPLAY_WIDTH - 32); AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, sLevelModeText[lvlMode], x, 1, TEXT_SKIP_DRAW, NULL); if (hallFacilityId == RANKING_HALL_TOWER_LINK) { diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index d134f2265..38f096af8 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -52,6 +52,8 @@ struct HallofFameTeam struct HallofFameMon mon[PARTY_SIZE]; }; +STATIC_ASSERT(sizeof(struct HallofFameTeam) * HALL_OF_FAME_MAX_TEAMS <= SECTOR_DATA_SIZE * NUM_HOF_SECTORS, HallOfFameFreeSpace); + struct HofGfx { u16 state; @@ -512,7 +514,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } *lastSavedTeam = *sHofMonPtr; - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_TrySaveData; @@ -527,10 +529,8 @@ static void Task_Hof_TrySaveData(u8 taskId) UnsetBgTilemapBuffer(3); FreeAllWindowBuffers(); - if (sHofGfxPtr != NULL) - FREE_AND_SET_NULL(sHofGfxPtr); - if (sHofMonPtr != NULL) - FREE_AND_SET_NULL(sHofMonPtr); + TRY_FREE_AND_SET_NULL(sHofGfxPtr); + TRY_FREE_AND_SET_NULL(sHofMonPtr); DestroyTask(taskId); } @@ -722,7 +722,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); HallOfFame_PrintPlayerInfo(1, 2); - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_LeagueChamp, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; @@ -771,10 +771,8 @@ static void Task_Hof_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - if (sHofGfxPtr != NULL) - FREE_AND_SET_NULL(sHofGfxPtr); - if (sHofMonPtr != NULL) - FREE_AND_SET_NULL(sHofMonPtr); + TRY_FREE_AND_SET_NULL(sHofGfxPtr); + TRY_FREE_AND_SET_NULL(sHofMonPtr); StartCredits(); } @@ -1079,10 +1077,8 @@ static void Task_HofPC_HandleExit(u8 taskId) ResetBgsAndClearDma3BusyFlags(0); DestroyTask(taskId); - if (sHofGfxPtr != NULL) - FREE_AND_SET_NULL(sHofGfxPtr); - if (sHofMonPtr != NULL) - FREE_AND_SET_NULL(sHofMonPtr); + TRY_FREE_AND_SET_NULL(sHofGfxPtr); + TRY_FREE_AND_SET_NULL(sHofMonPtr); ReturnFromHallOfFamePC(); } @@ -1091,7 +1087,7 @@ static void Task_HofPC_HandleExit(u8 taskId) static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) { HofPCTopBar_Print(gText_AButtonExit, 8, TRUE); - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_HOFCorrupted, 0, NULL, 2, 1, 3); CopyWindowToVram(0, COPYWIN_FULL); gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; diff --git a/src/intro.c b/src/intro.c index 827ce80be..a1d0508f4 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1848,7 +1848,7 @@ static void Task_Scene3_StartGroudon(u8 taskId) { gTasks[taskId].tState = 0; gTasks[taskId].func = Task_Scene3_Groudon; - ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, 0); + ScanlineEffect_InitWave(0, 160, 4, 4, 1, SCANLINE_EFFECT_REG_BG1HOFS, FALSE); } #define tScreenX data[1] @@ -2058,7 +2058,7 @@ static void Task_Scene3_LoadKyogre(u8 taskId) gTasks[taskId].tDelay = 16; gTasks[taskId].tZoom = 256; PanFadeAndZoomScreen(gTasks[taskId].tScreenX, gTasks[taskId].tScreenY, gTasks[taskId].tZoom, 0); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, 0); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, SCANLINE_EFFECT_REG_BG1VOFS, FALSE); } static void Task_Scene3_Kyogre(u8 taskId) diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index e7039e02b..0942e82f1 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -757,10 +757,9 @@ void LoadIntroPart2Graphics(u8 scenery) gReservedSpritePaletteCount = 8; } -// Note: This is only called with a=1. +// Note: This is only called with scenery=1. void SetIntroPart2BgCnt(u8 scenery) { - // Only called with scenery = 1 switch (scenery) { default: diff --git a/src/item_menu.c b/src/item_menu.c index 9eaca9597..cd0bc159d 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1344,7 +1344,7 @@ static void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, bool16 skipEraseLis DrawPocketIndicatorSquare(newPocket, TRUE); FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16); ScheduleBgCopyTilemapToVram(2); - SetBagVisualPocketId(newPocket, 1); + SetBagVisualPocketId(newPocket, TRUE); RemoveBagSprite(ITEMMENUSPRITE_BALL); AddSwitchPocketRotatingBallSprite(deltaBagPocketId); SetTaskFuncWithFollowupFunc(taskId, Task_SwitchBagPocket, gTasks[taskId].func); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index a5c265f90..5ac44f5ad 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -35,8 +35,8 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite); // static const rom data static const u16 sRotatingBall_Pal[] = INCBIN_U16("graphics/bag/rotating_ball.gbapal"); static const u8 sRotatingBall_Gfx[] = INCBIN_U8("graphics/bag/rotating_ball.4bpp"); -static const u8 gCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); -static const u16 gCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); +static const u8 sCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp"); +static const u16 sCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal"); static const struct OamData sBagOamData = { @@ -269,7 +269,7 @@ static const struct SpriteFrameImage sBerryPicSpriteImageTable[] = {&gDecompressionBuffer[0], 0x800}, }; -static const struct SpriteTemplate gBerryPicSpriteTemplate = +static const struct SpriteTemplate sBerryPicSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -308,7 +308,7 @@ static const union AffineAnimCmd *const sBerryPicRotatingAnimCmds[] = sSpriteAffineAnim_BerryPicRotation2 }; -static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate = +static const struct SpriteTemplate sBerryPicRotatingSpriteTemplate = { .tileTag = TAG_NONE, .paletteTag = TAG_BERRY_PIC_PAL, @@ -404,7 +404,7 @@ static const union AnimCmd *const sBerryCheckCircleSpriteAnimTable[] = sSpriteAnim_BerryCheckCircle }; -static const struct SpriteTemplate gBerryCheckCircleSpriteTemplate = +static const struct SpriteTemplate sBerryCheckCircleSpriteTemplate = { .tileTag = TAG_BERRY_CHECK_CIRCLE_GFX, .paletteTag = TAG_BERRY_CHECK_CIRCLE_GFX, @@ -544,7 +544,22 @@ void AddBagItemIconSprite(u16 itemId, u8 id) void RemoveBagItemIconSprite(u8 id) { +// BUG: For one frame, the item you scroll to in the Bag menu +// will have an incorrect palette and may be seen as a flicker. +#ifdef BUGFIX + u8 *spriteId = &gBagMenu->spriteIds[ITEMMENUSPRITE_ITEM]; + + if (spriteId[id ^ 1] != SPRITE_NONE) + gSprites[spriteId[id ^ 1]].invisible = TRUE; + + if (spriteId[id] != SPRITE_NONE) + { + DestroySpriteAndFreeResources(&gSprites[spriteId[id]]); + spriteId[id] = SPRITE_NONE; + } +#else RemoveBagSprite(id + ITEMMENUSPRITE_ITEM); +#endif } void CreateItemMenuSwapLine(void) @@ -609,7 +624,7 @@ static void LoadBerryGfx(u8 berryId) u8 CreateBerryTagSprite(u8 id, s16 x, s16 y) { LoadBerryGfx(id); - return CreateSprite(&gBerryPicSpriteTemplate, x, y, 0); + return CreateSprite(&sBerryPicSpriteTemplate, x, y, 0); } void FreeBerryTagSpritePalette(void) @@ -624,7 +639,7 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL); LoadBerryGfx(berryId); - spriteId = CreateSprite(&gBerryPicRotatingSpriteTemplate, x, y, 0); + spriteId = CreateSprite(&sBerryPicRotatingSpriteTemplate, x, y, 0); if (startAffine == TRUE) StartSpriteAffineAnim(&gSprites[spriteId], 1); @@ -633,5 +648,5 @@ u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) u8 CreateBerryFlavorCircleSprite(s16 x) { - return CreateSprite(&gBerryCheckCircleSpriteTemplate, x, 116, 0); + return CreateSprite(&sBerryCheckCircleSpriteTemplate, x, 116, 0); } diff --git a/src/item_use.c b/src/item_use.c index c03ede61b..af8f2504f 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -42,33 +42,33 @@ #include "constants/items.h" #include "constants/songs.h" -static void SetUpItemUseCallback(u8 taskId); +static void SetUpItemUseCallback(u8); static void FieldCB_UseItemOnField(void); -static void Task_CallItemUseOnFieldCallback(u8 taskId); -static void Task_UseItemfinder(u8 taskId); -static void Task_CloseItemfinderMessage(u8 taskId); -static void Task_HiddenItemNearby(u8 taskId); -static void Task_StandingOnHiddenItem(u8 taskId); +static void Task_CallItemUseOnFieldCallback(u8); +static void Task_UseItemfinder(u8); +static void Task_CloseItemfinderMessage(u8); +static void Task_HiddenItemNearby(u8); +static void Task_StandingOnHiddenItem(u8); static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY); -static void PlayerFaceHiddenItem(u8 a); -static void CheckForHiddenItemsInMapConnection(u8 taskId); -static void Task_OpenRegisteredPokeblockCase(u8 taskId); -static void ItemUseOnFieldCB_Bike(u8 taskId); +static u8 GetDirectionToHiddenItem(s16, s16); +static void PlayerFaceHiddenItem(u8); +static void CheckForHiddenItemsInMapConnection(u8); +static void Task_OpenRegisteredPokeblockCase(u8); +static void ItemUseOnFieldCB_Bike(u8); static void ItemUseOnFieldCB_Rod(u8); static void ItemUseOnFieldCB_Itemfinder(u8); -static void ItemUseOnFieldCB_Berry(u8 taskId); -static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); -static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); +static void ItemUseOnFieldCB_Berry(u8); +static void ItemUseOnFieldCB_WailmerPailBerry(u8); +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8); static bool8 TryToWaterSudowoodo(void); -static void BootUpSoundTMHM(u8 taskId); -static void Task_ShowTMHMContainedMessage(u8 taskId); -static void UseTMHMYesNo(u8 taskId); -static void UseTMHM(u8 taskId); -static void Task_StartUseRepel(u8 taskId); -static void Task_UseRepel(u8 taskId); -static void Task_CloseCantUseKeyItemMessage(u8 taskId); -static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y); +static void BootUpSoundTMHM(u8); +static void Task_ShowTMHMContainedMessage(u8); +static void UseTMHMYesNo(u8); +static void UseTMHM(u8); +static void Task_StartUseRepel(u8); +static void Task_UseRepel(u8); +static void Task_CloseCantUseKeyItemMessage(u8); +static void SetDistanceOfClosestHiddenItem(u8, s16, s16); static void CB2_OpenPokeblockFromBag(void); // EWRAM variables diff --git a/src/landmark.c b/src/landmark.c index 52d52500a..615a9bfe3 100644 --- a/src/landmark.c +++ b/src/landmark.c @@ -336,7 +336,7 @@ static const struct Landmark *const Landmarks_MtChimney_2[] = NULL, }; -static const struct LandmarkList gLandmarkLists[] = +static const struct LandmarkList sLandmarkLists[] = { {MAPSEC_ROUTE_103, 2, Landmarks_Route103_2}, {MAPSEC_ROUTE_104, 0, Landmarks_Route104_0}, @@ -420,21 +420,21 @@ static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id) { u16 i = 0; - for (; gLandmarkLists[i].mapSection != MAPSEC_NONE; i++) + for (; sLandmarkLists[i].mapSection != MAPSEC_NONE; i++) { - if (gLandmarkLists[i].mapSection > mapSection) + if (sLandmarkLists[i].mapSection > mapSection) return NULL; - if (gLandmarkLists[i].mapSection == mapSection) + if (sLandmarkLists[i].mapSection == mapSection) break; } - if (gLandmarkLists[i].mapSection == MAPSEC_NONE) + if (sLandmarkLists[i].mapSection == MAPSEC_NONE) return NULL; - for (; gLandmarkLists[i].mapSection == mapSection; i++) + for (; sLandmarkLists[i].mapSection == mapSection; i++) { - if (gLandmarkLists[i].id == id) - return gLandmarkLists[i].landmarks; + if (sLandmarkLists[i].id == id) + return sLandmarkLists[i].landmarks; } return NULL; diff --git a/src/libisagbprn.c b/src/libisagbprn.c index 69c6986ae..7a70cf41f 100644 --- a/src/libisagbprn.c +++ b/src/libisagbprn.c @@ -31,7 +31,7 @@ void AGBPrintFlush1Block(void); void AGBPrintInit(void) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = ®_WAITCNT; + vu16 *pWSCNT = ®_WAITCNT; u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; @@ -57,7 +57,7 @@ static void AGBPutcInternal(const char cChr) void AGBPutc(const char cChr) { - u16 *pWSCNT = ®_WAITCNT; + vu16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; volatile struct AGBPrintStruct *pPrint; *pWSCNT = WSCNT_DATA; @@ -71,7 +71,7 @@ void AGBPutc(const char cChr) void AGBPrint(const char *pBuf) { volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = ®_WAITCNT; + vu16 *pWSCNT = ®_WAITCNT; u16 nOldWSCNT = *pWSCNT; *pWSCNT = WSCNT_DATA; while (*pBuf) @@ -95,9 +95,9 @@ void AGBPrintf(const char *pBuf, ...) static void AGBPrintTransferDataInternal(u32 bAllData) { LPFN_PRINT_FLUSH lpfnFuncFlush; - u16 *pIME; + vu16 *pIME; u16 nIME; - u16 *pWSCNT; + vu16 *pWSCNT; u16 nOldWSCNT; u16 *pProtect; volatile struct AGBPrintStruct *pPrint; diff --git a/src/link.c b/src/link.c index aa9a0d73d..e88cde55a 100644 --- a/src/link.c +++ b/src/link.c @@ -120,18 +120,18 @@ static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL; static void InitLocalLinkPlayer(void); static void VBlankCB_LinkError(void); static void CB2_LinkTest(void); -static void ProcessRecvCmds(u8 unused); +static void ProcessRecvCmds(u8); static void LinkCB_SendHeldKeys(void); static void ResetBlockSend(void); -static bool32 InitBlockSend(const void *src, size_t size); +static bool32 InitBlockSend(const void *, size_t); static void LinkCB_BlockSendBegin(void); static void LinkCB_BlockSend(void); static void LinkCB_BlockSendEnd(void); -static void SetBlockReceivedFlag(u8 who); -static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size); -static void LinkTest_PrintHex(u32 pos, u8 a0, u8 a1, u8 a2); +static void SetBlockReceivedFlag(u8); +static u16 LinkTestCalcBlockChecksum(const u16 *, u16); +static void LinkTest_PrintHex(u32, u8, u8, u8); static void LinkCB_RequestPlayerDataExchange(void); -static void Task_PrintTestData(u8 taskId); +static void Task_PrintTestData(u8); static void LinkCB_ReadyCloseLink(void); static void LinkCB_WaitCloseLink(void); diff --git a/src/list_menu.c b/src/list_menu.c index ccb183891..8ba13a6cf 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -312,14 +312,14 @@ static void ListMenuDummyTask(u8 taskId) } -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum) +s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 drawMode, u16 tileNum, u16 palNum) { switch (sMysteryGiftLinkMenu.state) { case 0: default: sMysteryGiftLinkMenu.windowId = AddWindow(windowTemplate); - switch (arg2) + switch (drawMode) { case 2: LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palNum); @@ -346,13 +346,13 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str } if (sMysteryGiftLinkMenu.state == 2) { - if (arg2 == 0) + if (drawMode == 0) { ClearWindowTilemap(sMysteryGiftLinkMenu.windowId); } else { - switch (arg2) + switch (drawMode) { case 0: // can never be reached, because of the if statement above ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE); diff --git a/src/m4a_1.s b/src/m4a_1.s index cc5d3238d..3f1578806 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -680,7 +680,7 @@ SoundMainRAM_Unk2: ldr r1, [r4, o_SoundChannel_wav] add r2, r2, r1 add r2, r2, 0x10 - ldr r5, =gDecodingBuffer + ldr r5, =sDecodingBuffer ldr r6, =gDeltaEncodingTable mov r7, 0x40 ldrb lr, [r2], 1 @@ -701,7 +701,7 @@ _081DD57C: subs r7, r7, 2 bgt _081DD568 _081DD594: - ldr r5, =gDecodingBuffer + ldr r5, =sDecodingBuffer and r0, r3, 0x3F ldrsb r1, [r5, r0] pop {r0,r2,r5-r7,pc} @@ -1911,6 +1911,6 @@ _081DDD90: .align 2, 0 @ Don't pad with nop. .bss -gDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM +sDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM .space 0x40 - .size gDecodingBuffer, .-gDecodingBuffer + .size sDecodingBuffer, .-sDecodingBuffer diff --git a/src/main.c b/src/main.c index 2b96a8698..5fd236447 100644 --- a/src/main.c +++ b/src/main.c @@ -69,7 +69,7 @@ u8 gLinkVSyncDisabled; u32 IntrMain_Buffer[0x200]; s8 gPcmDmaCounter; -static EWRAM_DATA u16 gTrainerId = 0; +static EWRAM_DATA u16 sTrainerId = 0; //EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL; @@ -201,12 +201,12 @@ void SeedRngAndSetTrainerId(void) u16 val = REG_TM1CNT_L; SeedRng(val); REG_TM1CNT_H = 0; - gTrainerId = val; + sTrainerId = val; } u16 GetGeneratedTrainerIdLower(void) { - return gTrainerId; + return sTrainerId; } void EnableVCountIntrAtLine150(void) diff --git a/src/main_menu.c b/src/main_menu.c index ed6158a9c..d11784133 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -198,7 +198,7 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8, u8); static void NewGameBirchSpeech_ClearWindow(u8); static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8); static void Task_NewGameBirchSpeech_MainSpeech(u8); -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a); +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *, u16); static void Task_NewGameBirchSpeech_AndYouAre(u8); static void Task_NewGameBirchSpeechSub_WaitForLotad(u8); static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8); @@ -371,7 +371,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] = +static const struct WindowTemplate sNewGameBirchSpeechTextWindows[] = { { .bg = 0, @@ -457,7 +457,7 @@ static const struct MenuAction sMenuActions_Gender[] = { {gText_BirchGirl, NULL} }; -static const u8 *const gMalePresetNames[] = { +static const u8 *const sMalePresetNames[] = { gText_DefaultNameStu, gText_DefaultNameMilton, gText_DefaultNameTom, @@ -480,7 +480,7 @@ static const u8 *const gMalePresetNames[] = { gText_DefaultNameQuincy }; -static const u8 *const gFemalePresetNames[] = { +static const u8 *const sFemalePresetNames[] = { gText_DefaultNameKimmy, gText_DefaultNameTiara, gText_DefaultNameBella, @@ -1325,7 +1325,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) } else { - InitWindows(gNewGameBirchSpeechTextWindows); + InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); NewGameBirchSpeech_ShowDialogueWindow(0, 1); @@ -1371,7 +1371,7 @@ static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId) gSprites[spriteId].invisible = FALSE; gSprites[spriteId].data[0] = 0; - CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, 0x0000FFFF, SPECIES_LOTAD); + CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 112, 58, 0, 0, 32, PALETTES_BG, SPECIES_LOTAD); gTasks[taskId].func = Task_NewGameBirchSpeechSub_WaitForLotad; gTasks[sBirchSpeechMainTaskId].tTimer = 0; } @@ -1851,7 +1851,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) REG_IME = savedIme; SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - InitWindows(gNewGameBirchSpeechTextWindows); + InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); PutWindowTilemap(0); @@ -2087,7 +2087,7 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay) static void NewGameBirchSpeech_ShowGenderMenu(void) { - DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3); + DrawMainMenuWindowBorder(&sNewGameBirchSpeechTextWindows[1], 0xF3); FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, ARRAY_COUNT(sMenuActions_Gender), sMenuActions_Gender); InitMenuInUpperLeftCornerNormal(1, ARRAY_COUNT(sMenuActions_Gender), 0); @@ -2106,9 +2106,9 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) u8 i; if (gSaveBlock2Ptr->playerGender == MALE) - name = gMalePresetNames[nameId]; + name = sMalePresetNames[nameId]; else - name = gFemalePresetNames[nameId]; + name = sFemalePresetNames[nameId]; for (i = 0; i < PLAYER_NAME_LENGTH; i++) gSaveBlock2Ptr->playerName[i] = name[i]; gSaveBlock2Ptr->playerName[PLAYER_NAME_LENGTH] = EOS; @@ -2221,9 +2221,9 @@ static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template) CopyBgTilemapBufferToVram(template->bg); } -static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused) +static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 unused) { - FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2); + FillBgTilemapBufferRect(bg, 0, x + 255, y + 255, width + 2, height + 2, 2); } static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram) @@ -2247,7 +2247,7 @@ static void NewGameBirchSpeech_ClearWindow(u8 windowId) CopyWindowToVram(windowId, COPYWIN_GFX); } -static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 a) +static void NewGameBirchSpeech_WaitForThisIsPokemonText(struct TextPrinterTemplate *printer, u16 renderCmd) { // Wait for Birch's "This is a Pokémon" text to reach the pause // Then start the PokéBall release (if it hasn't been started already) @@ -2270,24 +2270,25 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); } -static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f) +static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 palNum) { - FillBgTilemapBufferRect(a, 0xFD, b-2, c-1, 1, 1, f); - FillBgTilemapBufferRect(a, 0xFF, b-1, c-1, 1, 1, f); - FillBgTilemapBufferRect(a, 0x100, b, c-1, d, 1, f); - FillBgTilemapBufferRect(a, 0x101, b+d-1, c-1, 1, 1, f); - FillBgTilemapBufferRect(a, 0x102, b+d, c-1, 1, 1, f); - FillBgTilemapBufferRect(a, 0x103, b-2, c, 1, 5, f); - FillBgTilemapBufferRect(a, 0x105, b-1, c, d+1, 5, f); - FillBgTilemapBufferRect(a, 0x106, b+d, c, 1, 5, f); - FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFD), b-2, c+e, 1, 1, f); - FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0xFF), b-1, c+e, 1, 1, f); - FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x100), b, c+e, d-1, 1, f); - FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x101), b+d-1, c+e, 1, 1, f); - FillBgTilemapBufferRect(a, BG_TILE_V_FLIP(0x102), b+d, c+e, 1, 1, f); + FillBgTilemapBufferRect(bg, 0xFD, x-2, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, 0xFF, x-1, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, 0x100, x, y-1, width, 1, palNum); + FillBgTilemapBufferRect(bg, 0x101, x+width-1, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, 0x102, x+width, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, 0x103, x-2, y, 1, 5, palNum); + FillBgTilemapBufferRect(bg, 0x105, x-1, y, width+1, 5, palNum); + FillBgTilemapBufferRect(bg, 0x106, x+width, y, 1, 5, palNum); + + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFD), x-2, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFF), x-1, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x100), x, y+height, width-1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x101), x+width-1, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x102), x+width, y+height, 1, 1, palNum); } static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8 taskId) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 8cf1a6bab..9eaa035ca 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -12,6 +12,7 @@ #include "string_util.h" #include "task.h" #include "text.h" +#include "constants/battle_frontier.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" #include "constants/weather.h" @@ -176,25 +177,25 @@ static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] = [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE }; -static const u8 gText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); -static const u8 gText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); -static const u8 gText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); -static const u8 gText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); -static const u8 gText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); -static const u8 gText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); -static const u8 gText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); -static const u8 gText_Pyramid[] = _("PYRAMID"); +static const u8 sText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); +static const u8 sText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); +static const u8 sText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); +static const u8 sText_PyramidFloor4[] = _("PYRAMID FLOOR 4"); +static const u8 sText_PyramidFloor5[] = _("PYRAMID FLOOR 5"); +static const u8 sText_PyramidFloor6[] = _("PYRAMID FLOOR 6"); +static const u8 sText_PyramidFloor7[] = _("PYRAMID FLOOR 7"); +static const u8 sText_Pyramid[] = _("PYRAMID"); -static const u8 * const gBattlePyramid_MapHeaderStrings[] = +static const u8 * const sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE + 1] = { - gText_PyramidFloor1, - gText_PyramidFloor2, - gText_PyramidFloor3, - gText_PyramidFloor4, - gText_PyramidFloor5, - gText_PyramidFloor6, - gText_PyramidFloor7, - gText_Pyramid, + sText_PyramidFloor1, + sText_PyramidFloor2, + sText_PyramidFloor3, + sText_PyramidFloor4, + sText_PyramidFloor5, + sText_PyramidFloor6, + sText_PyramidFloor7, + sText_Pyramid, }; // Unused @@ -309,12 +310,12 @@ static void ShowMapNamePopUpWindow(void) if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP) { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7]; + mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALLENGE]; } else { withoutPrefixPtr = &(mapDisplayHeader[3]); - mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; + mapDisplayHeaderSource = sBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum]; } StringCopy(withoutPrefixPtr, mapDisplayHeaderSource); } diff --git a/src/match_call.c b/src/match_call.c index de7f13416..8b25d5b44 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -33,6 +33,13 @@ #include "constants/songs.h" #include "constants/trainers.h" +// In this file only the values normally associated with Battle Pike and Factory are swapped. +// Note that this is *not* a bug, because they are properly swapped consistently in this file. +// There would only be an issue if anything in this file interacted with something expecting +// the usual value order, or vice versa. +#define MATCH_CALL_FACTORY FRONTIER_FACILITY_PIKE +#define MATCH_CALL_PIKE FRONTIER_FACILITY_FACTORY + // Each match call message has variables that can be populated randomly or // dependent on the trainer. The below are IDs for how to populate the vars // in a given message. @@ -1590,6 +1597,7 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * rand = Random(); if (!(rand & 1)) { + // Count the number of facilities with a win streak for (count = 0, i = 0; i < NUM_FRONTIER_FACILITIES; i++) { if (GetFrontierStreakInfo(i, &topic) > 1) @@ -1598,6 +1606,8 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 * if (count) { + // At least one facility with a win streak + // Randomly choose one to have a call about count = Random() % count; for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) { @@ -1807,15 +1817,15 @@ static void PopulateSpeciesFromTrainerParty(int matchCallId, u8 *destStr) StringCopy(destStr, speciesName); } -static const u8 *const sBattleFrontierFacilityNames[] = +static const u8 *const sBattleFrontierFacilityNames[NUM_FRONTIER_FACILITIES] = { - gText_BattleTower2, - gText_BattleDome, - gText_BattlePalace, - gText_BattleArena, - gText_BattlePike, - gText_BattleFactory, - gText_BattlePyramid, + [FRONTIER_FACILITY_TOWER] = gText_BattleTower2, + [FRONTIER_FACILITY_DOME] = gText_BattleDome, + [FRONTIER_FACILITY_PALACE] = gText_BattlePalace, + [FRONTIER_FACILITY_ARENA] = gText_BattleArena, + [MATCH_CALL_PIKE] = gText_BattlePike, + [MATCH_CALL_FACTORY] = gText_BattleFactory, + [FRONTIER_FACILITY_PYRAMID] = gText_BattlePyramid, }; static void PopulateBattleFrontierFacilityName(int matchCallId, u8 *destStr) @@ -1899,7 +1909,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) switch (facilityId) { case FRONTIER_FACILITY_DOME: - for (i = 0; i < 2; i++) + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.domeRecordWinStreaks); i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1909,11 +1919,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_B_DOME - 1; break; - #ifdef BUGFIX - case FRONTIER_FACILITY_PIKE: - #else - case FRONTIER_FACILITY_FACTORY: - #endif + case MATCH_CALL_PIKE: for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++) { if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]) @@ -1922,7 +1928,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_B_PIKE - 1; break; case FRONTIER_FACILITY_TOWER: - for (i = 0; i < 4; i++) + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.towerRecordWinStreaks); i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1933,7 +1939,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; case FRONTIER_FACILITY_PALACE: - for (i = 0; i < 2; i++) + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.palaceRecordWinStreaks); i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { @@ -1943,12 +1949,8 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = GEN_TOPIC_STREAK_RECORD - 1; break; - #ifdef BUGFIX - case FRONTIER_FACILITY_FACTORY: - #else - case FRONTIER_FACILITY_PIKE: - #endif - for (i = 0; i < 2; i++) + case MATCH_CALL_FACTORY: + for (i = 0; i < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.factoryRecordWinStreaks); i++) { for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++) { diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 681a3dadf..2b6c71c8a 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -438,14 +438,14 @@ static void EnableTextPrinters(void) gDisableTextPrinters = FALSE; } -static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 a1) +static void DisableTextPrinters(struct TextPrinterTemplate * printer, u16 renderCmd) { gDisableTextPrinters = TRUE; } static void DrawSongTextWindow(const u8 * str) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, str, 0, 1, 1, DisableTextPrinters); gDisableTextPrinters = TRUE; CopyWindowToVram(0, COPYWIN_FULL); diff --git a/src/menu.c b/src/menu.c index 49baddded..c4540942b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -542,9 +542,9 @@ void RemoveMapNamePopUpWindow(void) } } -void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16)) +void AddTextPrinterWithCallbackForMessage(bool8 canSpeedUp, void (*callback)(struct TextPrinterTemplate *, u16)) { - gTextFlags.canABSpeedUpPrint = a1; + gTextFlags.canABSpeedUpPrint = canSpeedUp; AddTextPrinterParameterized2(0, FONT_NORMAL, gStringVar4, GetPlayerTextSpeedDelay(), callback, 2, 1, 3); } @@ -1245,9 +1245,9 @@ static void PrintMenuActionGridText(u8 windowId, u8 fontId, u8 left, u8 top, u8 } // Unused -static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *menuActions) +static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 width, u8 height, u8 columns, u8 rows, const struct MenuAction *menuActions) { - PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, a2, a3, a4, a5, menuActions); + PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, width, height, columns, rows, menuActions); } void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds) diff --git a/src/menu_helpers.c b/src/menu_helpers.c index e9f3e571f..7decd695c 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -153,7 +153,7 @@ void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data) gTasks[taskId].func = Task_CallYesOrNoCallback; } -void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) +void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 unused1, u8 unused2, u8 unused3, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) { CreateYesNoMenu(template, tileStart, palette, 0); sYesNo = *yesNo; @@ -176,17 +176,18 @@ static void Task_CallYesOrNoCallback(u8 taskId) } } -bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) +// Returns TRUE if the quantity was changed, FALSE if it remained the same +bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity, u16 max) { - s16 valBefore = (*arg0); + s16 valBefore = *quantity; - if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP) + if (JOY_REPEAT(DPAD_ANY) == DPAD_UP) { - (*arg0)++; - if ((*arg0) > arg1) - (*arg0) = 1; + (*quantity)++; + if (*quantity > max) + *quantity = 1; - if ((*arg0) == valBefore) + if (*quantity == valBefore) { return FALSE; } @@ -196,13 +197,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) return TRUE; } } - else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN) + else if (JOY_REPEAT(DPAD_ANY) == DPAD_DOWN) { - (*arg0)--; - if ((*arg0) <= 0) - (*arg0) = arg1; + (*quantity)--; + if (*quantity <= 0) + *quantity = max; - if ((*arg0) == valBefore) + if (*quantity == valBefore) { return FALSE; } @@ -212,13 +213,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) return TRUE; } } - else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT) + else if (JOY_REPEAT(DPAD_ANY) == DPAD_RIGHT) { - (*arg0) += 10; - if ((*arg0) > arg1) - (*arg0) = arg1; + *quantity += 10; + if (*quantity > max) + *quantity = max; - if ((*arg0) == valBefore) + if (*quantity == valBefore) { return FALSE; } @@ -228,13 +229,13 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) return TRUE; } } - else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT) + else if (JOY_REPEAT(DPAD_ANY) == DPAD_LEFT) { - (*arg0) -= 10; - if ((*arg0) <= 0) - (*arg0) = 1; + *quantity -= 10; + if (*quantity <= 0) + *quantity = 1; - if ((*arg0) == valBefore) + if (*quantity == valBefore) { return FALSE; } diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 5f08c6294..e0f789bcb 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -19,8 +19,8 @@ extern ScrCmdFunc gMysteryEventScriptCmdTable[]; extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; -#define LANGUAGE_MASK 0x1 -#define VERSION_MASK 0x200 +// 0x1 in FireRed, 0x2 in LeafGreen, 0x80 in Ruby, 0x100 in Sapphire +#define VERSION_MASK (1 << 9) #define mScriptBase data[0] #define mOffset data[1] @@ -29,18 +29,21 @@ extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0}; -static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) +static bool32 CheckCompatibility(u16 unk0, u32 unk1, u16 unk2, u32 version) { - if (!(a1 & LANGUAGE_MASK)) + // 0x1 in English FRLG, 0x2 in English RS, 0x4 in German RS + if (!(unk0 & 0x1)) return FALSE; - if (!(a2 & LANGUAGE_MASK)) + // Same as above + if (!(unk1 & 0x1)) return FALSE; - if (!(a3 & 0x4)) + // 0x1 in FRLG, 0x4 in RS + if (!(unk2 & 0x4)) return FALSE; - if (!(a4 & VERSION_MASK)) + if (!(version & VERSION_MASK)) return FALSE; return TRUE; @@ -174,18 +177,18 @@ bool8 MEScrCmd_end(struct ScriptContext *ctx) bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) { - u16 v1; - u32 v2; - u16 v3; - u32 v4; + u16 unk0; + u32 unk1; + u16 unk2; + u32 version; ctx->mOffset = ScriptReadWord(ctx); - v1 = ScriptReadHalfword(ctx); - v2 = ScriptReadWord(ctx); - v3 = ScriptReadHalfword(ctx); - v4 = ScriptReadWord(ctx); + unk0 = ScriptReadHalfword(ctx); + unk1 = ScriptReadWord(ctx); + unk2 = ScriptReadHalfword(ctx); + version = ScriptReadWord(ctx); - if (CheckCompatibility(v1, v2, v3, v4) == TRUE) + if (CheckCompatibility(unk0, unk1, unk2, version) == TRUE) ctx->mValid = TRUE; else SetIncompatible(); diff --git a/src/mystery_gift.c b/src/mystery_gift.c index 1df6533d9..72fc2b377 100755 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -506,9 +506,13 @@ static void IncrementCardStat(u32 statType) } if (stat == NULL) + { AGB_ASSERT(0); + } else if (++(*stat) > MAX_WONDER_CARD_STAT) + { *stat = MAX_WONDER_CARD_STAT; + } } } diff --git a/src/mystery_gift_client.c b/src/mystery_gift_client.c index adf3ce8a6..567751bad 100644 --- a/src/mystery_gift_client.c +++ b/src/mystery_gift_client.c @@ -44,8 +44,7 @@ u32 MysteryGiftClient_Run(u16 * endVal) { *endVal = sClient->param; MysteryGiftClient_Free(sClient); - Free(sClient); - sClient = NULL; + FREE_AND_SET_NULL(sClient); } return result; } @@ -203,7 +202,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGiftLink_InitSend(&client->link, MG_LINKID_GAME_DATA, client->sendBuffer, sizeof(struct MysteryGiftLinkGameData)); break; case CLI_LOAD_TOSS_RESPONSE: - // param here is set by MG_STATE_LINK_ASK_TOSS or MG_STATE_LINK_ASK_TOSS_UNRECEIVED + // param here is set by MG_STATE_CLIENT_ASK_TOSS or MG_STATE_CLIENT_ASK_TOSS_UNRECEIVED MysteryGiftClient_InitSendWord(client, MG_LINKID_RESPONSE, client->param); break; case CLI_SAVE_CARD: @@ -230,7 +229,7 @@ static u32 Client_Run(struct MysteryGiftClient * client) MysteryGift_TrySaveStamp(client->recvBuffer); break; case CLI_SAVE_RAM_SCRIPT: - InitRamScript_NoObjectEvent(client->recvBuffer, 1000); + InitRamScript_NoObjectEvent(client->recvBuffer, sizeof(struct RamScriptData)); break; case CLI_RECV_EREADER_TRAINER: memcpy(&gSaveBlock2Ptr->frontier.ereaderTrainer, client->recvBuffer, sizeof(gSaveBlock2Ptr->frontier.ereaderTrainer)); diff --git a/src/mystery_gift_server.c b/src/mystery_gift_server.c index 0e0acb642..891870659 100644 --- a/src/mystery_gift_server.c +++ b/src/mystery_gift_server.c @@ -44,8 +44,7 @@ u32 MysterGiftServer_Run(u16 * endVal) { *endVal = sServer->param; MysteryGiftServer_Free(sServer); - Free(sServer); - sServer = NULL; + FREE_AND_SET_NULL(sServer); } return result; } diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index 3047a219e..ff34c8853 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -207,8 +207,7 @@ void WonderCard_Destroy(void) if (sWonderCardData != NULL) { *sWonderCardData = (struct WonderCardData){}; - Free(sWonderCardData); - sWonderCardData = NULL; + FREE_AND_SET_NULL(sWonderCardData); } } @@ -660,8 +659,7 @@ void WonderNews_Destroy(void) if (sWonderNewsData != NULL) { *sWonderNewsData = (struct WonderNewsData){}; - Free(sWonderNewsData); - sWonderNewsData = NULL; + FREE_AND_SET_NULL(sWonderNewsData); } } diff --git a/src/overworld.c b/src/overworld.c index ba83cec2d..61b3e886e 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -831,7 +831,7 @@ static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *, struct Obje static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); -static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static u8 (*const sLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { [MOVEMENT_MODE_FREE] = MovementEventModeCB_Normal, [MOVEMENT_MODE_FROZEN] = MovementEventModeCB_Ignored, @@ -843,7 +843,7 @@ static u8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *, struct Obje static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8); // These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise. -static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = +static bool8 (*const sLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) = { FacingHandler_DoNothing, FacingHandler_DpadMovement, @@ -862,7 +862,7 @@ static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerObjectEvent *, static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent *, struct ObjectEvent *); // These handlers are run after an attempted movement. -static void (*const gMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = +static void (*const sMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) = { // FALSE: MovementStatusHandler_EnterFreeMode, @@ -3010,9 +3010,9 @@ static u16 KeyInterCB_ReadButtons(u32 key) return LINK_KEY_CODE_EMPTY; } -static u16 GetDirectionForDpadKey(u16 a1) +static u16 GetDirectionForDpadKey(u16 key) { - switch (a1) + switch (key) { case LINK_KEY_CODE_DPAD_RIGHT: return FACING_RIGHT; @@ -3131,7 +3131,7 @@ static u16 KeyInterCB_Ready(u32 keyOrPlayerId) } } -static u16 KeyInterCB_SetReady(u32 a1) +static u16 KeyInterCB_SetReady(u32 key) { SetKeyInterceptCallback(KeyInterCB_Ready); return LINK_KEY_CODE_READY; @@ -3581,9 +3581,9 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { // This is a hack to split this code onto two separate lines, without declaring a local variable. // C++ style inline variables would be nice here. - #define TEMP gLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) + #define TEMP sLinkPlayerMovementModes[linkPlayerObjEvent->movementMode](linkPlayerObjEvent, objEvent, facing) - gMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); + sMovementStatusHandler[TEMP](linkPlayerObjEvent, objEvent); // Clean up the hack. #undef TEMP @@ -3594,7 +3594,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) @@ -3605,7 +3605,7 @@ static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerOb // Identical to MovementEventModeCB_Normal static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); + return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) @@ -4296,6 +4296,7 @@ void FollowerPokeballSparkle(void) gSprites[gPlayerAvatar.spriteId].subpriority = 0; } player->fixedPriority = TRUE; + gPlayerAvatar.preventStep = TRUE; SeekSpriteAnim(&gSprites[follower->spriteId], 0); ObjectEventForceSetHeldMovement(follower, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW); @@ -4304,8 +4305,10 @@ void FollowerPokeballSparkle(void) void FollowerIntoPokeball(void) { - if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.comeOutDoorStairs == 0 && gSaveBlock2Ptr->follower.inProgress) + if (gObjectEvents[gSaveBlock2Ptr->follower.objId].invisible == FALSE && gSaveBlock2Ptr->follower.inProgress) { + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gPlayerAvatar.preventStep = TRUE; ObjectEventForceSetHeldMovement(&gObjectEvents[gSaveBlock2Ptr->follower.objId], MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK); gSpecialVar_Unused_0x8014 = 1; } diff --git a/src/palette.c b/src/palette.c index 9fec449bc..577257eff 100644 --- a/src/palette.c +++ b/src/palette.c @@ -60,13 +60,13 @@ static void Task_BlendPalettesGradually(u8 taskId); // unaligned word reads are issued in BlendPalette otherwise ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; -EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; +static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; static EWRAM_DATA u32 sFiller = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0}; -static const struct PaletteStructTemplate gDummyPaletteStructTemplate = { +static const struct PaletteStructTemplate sDummyPaletteStructTemplate = { .id = 0xFFFF, .state = 1 }; @@ -237,63 +237,63 @@ static void PaletteStruct_Run(u8 a1, u32 *unkFlags) } } -static void PaletteStruct_Copy(struct PaletteStruct *a1, u32 *unkFlags) +static void PaletteStruct_Copy(struct PaletteStruct *palStruct, u32 *unkFlags) { s32 srcIndex; s32 srcCount; u8 i = 0; - u16 srcOffset = a1->srcIndex * a1->template->size; + u16 srcOffset = palStruct->srcIndex * palStruct->template->size; - if (!a1->template->pst_field_8_0) + if (!palStruct->template->pst_field_8_0) { - while (i < a1->template->size) + while (i < palStruct->template->size) { - gPlttBufferUnfaded[a1->destOffset] = a1->template->src[srcOffset]; - gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; + gPlttBufferUnfaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; + gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; i++; - a1->destOffset++; + palStruct->destOffset++; srcOffset++; } } else { - while (i < a1->template->size) + while (i < palStruct->template->size) { - gPlttBufferFaded[a1->destOffset] = a1->template->src[srcOffset]; + gPlttBufferFaded[palStruct->destOffset] = palStruct->template->src[srcOffset]; i++; - a1->destOffset++; + palStruct->destOffset++; srcOffset++; } } - a1->destOffset = a1->baseDestOffset; - a1->countdown1 = a1->template->time1; - a1->srcIndex++; + palStruct->destOffset = palStruct->baseDestOffset; + palStruct->countdown1 = palStruct->template->time1; + palStruct->srcIndex++; - srcIndex = a1->srcIndex; - srcCount = a1->template->srcCount; + srcIndex = palStruct->srcIndex; + srcCount = palStruct->template->srcCount; if (srcIndex >= srcCount) { - if (a1->countdown2) - a1->countdown2--; - a1->srcIndex = 0; + if (palStruct->countdown2) + palStruct->countdown2--; + palStruct->srcIndex = 0; } - *unkFlags |= 1 << (a1->baseDestOffset >> 4); + *unkFlags |= 1 << (palStruct->baseDestOffset >> 4); } -static void PaletteStruct_Blend(struct PaletteStruct *a1, u32 *unkFlags) +static void PaletteStruct_Blend(struct PaletteStruct *palStruct, u32 *unkFlags) { - if (gPaletteFade.active && ((1 << (a1->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) + if (gPaletteFade.active && ((1 << (palStruct->baseDestOffset >> 4)) & gPaletteFade_selectedPalettes)) { - if (!a1->template->pst_field_8_0) + if (!palStruct->template->pst_field_8_0) { if (gPaletteFade.delayCounter != gPaletteFade_delay) { BlendPalette( - a1->baseDestOffset, - a1->template->size, + palStruct->baseDestOffset, + palStruct->template->size, gPaletteFade.y, gPaletteFade.blendColor); } @@ -302,13 +302,13 @@ static void PaletteStruct_Blend(struct PaletteStruct *a1, u32 *unkFlags) { if (!gPaletteFade.delayCounter) { - if (a1->countdown1 != a1->template->time1) + if (palStruct->countdown1 != palStruct->template->time1) { - u32 srcOffset = a1->srcIndex * a1->template->size; + u32 srcOffset = palStruct->srcIndex * palStruct->template->size; u8 i; - for (i = 0; i < a1->template->size; i++) - gPlttBufferFaded[a1->baseDestOffset + i] = a1->template->src[srcOffset + i]; + for (i = 0; i < palStruct->template->size; i++) + gPlttBufferFaded[palStruct->baseDestOffset + i] = palStruct->template->src[srcOffset + i]; } } } @@ -352,7 +352,7 @@ void PaletteStruct_ResetById(u16 id) static void PaletteStruct_Reset(u8 paletteNum) { - sPaletteStructs[paletteNum].template = &gDummyPaletteStructTemplate; + sPaletteStructs[paletteNum].template = &sDummyPaletteStructTemplate; sPaletteStructs[paletteNum].active = FALSE; sPaletteStructs[paletteNum].baseDestOffset = 0; sPaletteStructs[paletteNum].destOffset = 0; diff --git a/src/party_menu.c b/src/party_menu.c index e15d001c6..016c359cb 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4969,7 +4969,7 @@ static void Task_TryLearnNewMoves(u8 taskId) { u16 learnMove; - if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) + if (WaitFanfare(FALSE) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { RemoveLevelUpStatsWindow(); learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); @@ -5647,11 +5647,11 @@ static u8 GetBattleEntryLevelCap(void) case FACILITY_MULTI_OR_EREADER: return MAX_LEVEL; case FACILITY_UNION_ROOM: - return 30; + return UNION_ROOM_MAX_LEVEL; default: // Battle Frontier if (gSpecialVar_0x8004 == FRONTIER_LVL_50) - return 50; - return MAX_LEVEL; + return FRONTIER_MAX_LEVEL_50; + return FRONTIER_MAX_LEVEL_OPEN; } } diff --git a/src/player_pc.c b/src/player_pc.c index bf8479ce1..0ca78dea8 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -97,84 +97,84 @@ struct ItemStorageMenu u8 swapLineSpriteIds[SWAP_LINE_LENGTH]; }; -static void InitPlayerPCMenu(u8 taskId); -static void PlayerPCProcessMenuInput(u8 taskId); -static void InitItemStorageMenu(u8 taskId, u8 var); +static void InitPlayerPCMenu(u8); +static void PlayerPCProcessMenuInput(u8); +static void InitItemStorageMenu(u8, u8); static u8 GetMailboxMailCount(void); static void Mailbox_CompactMailList(void); -static void Mailbox_DrawMailboxMenu(u8 taskId); -static void Mailbox_ProcessInput(u8 taskId); -static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId); +static void Mailbox_DrawMailboxMenu(u8); +static void Mailbox_ProcessInput(u8); +static void Mailbox_PrintWhatToDoWithPlayerMailText(u8); static void Mailbox_ReturnToPlayerPC(u8); -static void Mailbox_PrintMailOptions(u8 taskId); -static void Mailbox_MailOptionsProcessInput(u8 taskId); +static void Mailbox_PrintMailOptions(u8); +static void Mailbox_MailOptionsProcessInput(u8); -static void PlayerPC_ItemStorage(u8 taskId); -static void PlayerPC_Mailbox(u8 taskId); -static void PlayerPC_Decoration(u8 var); -static void PlayerPC_TurnOff(u8 taskId); +static void PlayerPC_ItemStorage(u8); +static void PlayerPC_Mailbox(u8); +static void PlayerPC_Decoration(u8); +static void PlayerPC_TurnOff(u8); -static void Mailbox_DoMailMoveToBag(u8 taskId); -static void Mailbox_DoMailRead(u8 taskId); -static void Mailbox_MoveToBag(u8 taskId); -static void Mailbox_Give(u8 taskId); -static void Mailbox_Cancel(u8 taskId); +static void Mailbox_DoMailMoveToBag(u8); +static void Mailbox_DoMailRead(u8); +static void Mailbox_MoveToBag(u8); +static void Mailbox_Give(u8); +static void Mailbox_Cancel(u8); -static void Mailbox_CancelMoveToBag(u8 taskId); -static void Mailbox_HandleConfirmMoveToBag(u8 taskId); -static void Mailbox_AskConfirmMoveToBag(u8 taskId); -static void Mailbox_DoGiveMailPokeMenu(u8 taskId); -static void Mailbox_NoPokemonForMail(u8 taskId); +static void Mailbox_CancelMoveToBag(u8); +static void Mailbox_HandleConfirmMoveToBag(u8); +static void Mailbox_AskConfirmMoveToBag(u8); +static void Mailbox_DoGiveMailPokeMenu(u8); +static void Mailbox_NoPokemonForMail(u8); -static void Mailbox_FadeAndReadMail(u8 taskId); +static void Mailbox_FadeAndReadMail(u8); static void Mailbox_ReturnToFieldFromReadMail(void); static void Mailbox_ReshowAfterMail(void); -static void Mailbox_HandleReturnToProcessInput(u8 taskId); +static void Mailbox_HandleReturnToProcessInput(u8); static void Mailbox_UpdateMailListAfterDeposit(void); -static void ItemStorage_Withdraw(u8 taskId); -static void ItemStorage_Deposit(u8 taskId); -static void ItemStorage_Toss(u8 taskId); -static void ItemStorage_Exit(u8 taskId); -static void ItemStorage_TossItemYes(u8 taskId); -static void ItemStorage_TossItemNo(u8 taskId); +static void ItemStorage_Withdraw(u8); +static void ItemStorage_Deposit(u8); +static void ItemStorage_Toss(u8); +static void ItemStorage_Exit(u8); +static void ItemStorage_TossItemYes(u8); +static void ItemStorage_TossItemNo(u8); static void ItemStorageMenuPrint(const u8 *); -static void ItemStorageMenuProcessInput(u8 taskId); +static void ItemStorageMenuProcessInput(u8); static void SetPlayerPCListCount(u8); -static void ItemStorage_HandleReturnToProcessInput(u8 taskId); +static void ItemStorage_HandleReturnToProcessInput(u8); -static void ItemStorage_Enter(u8 taskId, bool8 toss); -static void ItemStorage_CreateListMenu(u8 taskId); -static void ItemStorage_ProcessInput(u8 taskId); -static void Task_ItemStorage_Deposit(u8 taskId); +static void ItemStorage_Enter(u8, bool8); +static void ItemStorage_CreateListMenu(u8); +static void ItemStorage_ProcessInput(u8); +static void Task_ItemStorage_Deposit(u8); static void ItemStorage_ReshowAfterBagMenu(void); -static void ItemStorage_DoItemWithdraw(u8 taskId); -static void ItemStorage_DoItemToss(u8 taskid); -static void ItemStorage_HandleQuantityRolling(u8 taskid); -static void ItemStorage_ExitItemList(u8 taskId); -static void ItemStorage_StartItemSwap(u8 taskId); -static void ItemStorage_DoItemAction(u8 taskId); -static void ItemStorage_FinishItemSwap(u8 taskId, bool8 a); -static void ItemStorage_HandleRemoveItem(u8 taskId); -static void ItemStorage_HandleErrorMessageInput(u8 taskId); -static void ItemStorage_ReturnToListInput(u8 taskId); +static void ItemStorage_DoItemWithdraw(u8); +static void ItemStorage_DoItemToss(u8); +static void ItemStorage_HandleQuantityRolling(u8); +static void ItemStorage_ExitItemList(u8); +static void ItemStorage_StartItemSwap(u8); +static void ItemStorage_DoItemAction(u8); +static void ItemStorage_FinishItemSwap(u8, bool8); +static void ItemStorage_HandleRemoveItem(u8); +static void ItemStorage_HandleErrorMessageInput(u8); +static void ItemStorage_ReturnToListInput(u8); static const u8* ItemStorage_GetMessage(u16); -static void CopyItemName_PlayerPC(u8 *string, u16 itemId); +static void CopyItemName_PlayerPC(u8 *, u16); static void ItemStorage_Init(void); -static void ItemStorage_DrawSwapArrow(u8 y, u8, u8 speed); +static void ItemStorage_DrawSwapArrow(u8, u8, u8); static void ItemStorage_RemoveWindow(u8); static void ItemStorage_UpdateSwapLinePos(u8); -static void ItemStorage_ProcessItemSwapInput(u8 taskId); +static void ItemStorage_ProcessItemSwapInput(u8); static void ItemStorage_EraseItemIcon(void); -static void ItemStorage_DrawItemIcon(u16 itemId); -static void ItemStorage_PrintDescription(s32 id); -static void ItemStorage_EraseMainMenu(u8 taskId); -static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu * thisMenu); -static void ItemStorage_PrintMenuItem(u8 windowId, u32 id, u8 yOffset); +static void ItemStorage_DrawItemIcon(u16); +static void ItemStorage_PrintDescription(s32); +static void ItemStorage_EraseMainMenu(u8); +static void ItemStorage_MoveCursor(s32, bool8, struct ListMenu *); +static void ItemStorage_PrintMenuItem(u8, u32, u8); static EWRAM_DATA const u8 *sTopMenuOptionOrder = NULL; static EWRAM_DATA u8 sTopMenuNumOptions = 0; @@ -518,7 +518,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, textPtr, 0, 1, 0, 0); } @@ -572,7 +572,7 @@ void CB2_PlayerPCExitBagMenu(void) static void ItemStorage_ReshowAfterBagMenu(void) { LoadMessageBoxAndBorderGfx(); - DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, TRUE); InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1); FadeInFromBlack(); } @@ -1241,7 +1241,7 @@ static void ItemStorage_ReturnToMenuSelect(u8 taskId) s16 *data = gTasks[taskId].data; if (!IsDma3ManagerBusyWithBgCopy()) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); // Select Withdraw/Toss by default depending on which was just exited if (!tInTossMenu) diff --git a/src/pokeball.c b/src/pokeball.c index a9ccd42d6..f203633a5 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -438,7 +438,7 @@ static void SpriteCB_BallThrow(struct Sprite *sprite) sprite->y2 = 0; sprite->data[5] = 0; ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId); sprite->sBattler = opponentBattler; sprite->data[7] = noOfShakes; @@ -752,7 +752,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAnim(sprite, 1); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); - AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId); + AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId); sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId); sprite->callback = HandleBallAnimEnd; @@ -1000,37 +1000,50 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite) #undef sBattler -static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) +static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 subpriority) { - return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE); + return AnimateBallOpenParticles(x, y, kindOfStars, subpriority, BALL_POKE); } -static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2) +static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u32 selectedPalettes) { - return LaunchBallFadeMonTask(unFadeLater, battlerId, arg2, BALL_POKE); + return LaunchBallFadeMonTask(unFadeLater, spritePalNum, selectedPalettes, BALL_POKE); } +// Sprite data for the pokemon +#define sSpecies data[7] + +// Sprite data for the pokeball +#define sMonSpriteId data[0] +#define sDelay data[1] +#define sMonPalNum data[2] +#define sFadePalsLo data[3] +#define sFadePalsHi data[4] +#define sFinalMonX data[5] +#define sFinalMonY data[6] +#define sTrigIdx data[7] + // Pokeball in Birch intro, and when receiving via trade -void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species) +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 delay, u32 fadePalettes, u16 species) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); - spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy); + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); + spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subpriortiy); - gSprites[spriteId].data[0] = monSpriteId; - gSprites[spriteId].data[5] = gSprites[monSpriteId].x; - gSprites[spriteId].data[6] = gSprites[monSpriteId].y; + gSprites[spriteId].sMonSpriteId = monSpriteId; + gSprites[spriteId].sFinalMonX = gSprites[monSpriteId].x; + gSprites[spriteId].sFinalMonY = gSprites[monSpriteId].y; gSprites[monSpriteId].x = x; gSprites[monSpriteId].y = y; - gSprites[monSpriteId].data[7] = species; + gSprites[monSpriteId].sSpecies = species; - gSprites[spriteId].data[1] = g; - gSprites[spriteId].data[2] = battlerId; - gSprites[spriteId].data[3] = h; - gSprites[spriteId].data[4] = h >> 0x10; + gSprites[spriteId].sDelay = delay; + gSprites[spriteId].sMonPalNum = monPalNum; + gSprites[spriteId].sFadePalsLo = fadePalettes; + gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_PokeballReleaseMon; @@ -1039,92 +1052,103 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, static void SpriteCB_PokeballReleaseMon(struct Sprite *sprite) { - if (sprite->data[1] == 0) + if (sprite->sDelay == 0) { - u8 r5; - u8 r7 = sprite->data[0]; - u8 battlerId = sprite->data[2]; - u32 r4 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); + u8 subpriority; + u8 spriteId = sprite->sMonSpriteId; + u8 monPalNum = sprite->sMonPalNum; + u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); if (sprite->subpriority != 0) - r5 = sprite->subpriority - 1; + subpriority = sprite->subpriority - 1; else - r5 = 0; + subpriority = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r5); - sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); + // sDelay re-used to store task id but never read + sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); sprite->callback = SpriteCB_ReleasedMonFlyOut; - gSprites[r7].invisible = FALSE; - StartSpriteAffineAnim(&gSprites[r7], BATTLER_AFFINE_EMERGE); - AnimateSprite(&gSprites[r7]); - gSprites[r7].data[1] = 0x1000; - sprite->data[7] = 0; + gSprites[spriteId].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_EMERGE); + AnimateSprite(&gSprites[spriteId]); + gSprites[spriteId].data[1] = 0x1000; + sprite->sTrigIdx = 0; } else { - sprite->data[1]--; + sprite->sDelay--; } } static void SpriteCB_ReleasedMonFlyOut(struct Sprite *sprite) { - bool8 r12 = FALSE; - bool8 r6 = FALSE; - u8 monSpriteId = sprite->data[0]; - u16 var1; - u16 var2; + bool8 emergeAnimFinished = FALSE; + bool8 atFinalPosition = FALSE; + u8 monSpriteId = sprite->sMonSpriteId; + u16 x, y; if (sprite->animEnded) sprite->invisible = TRUE; + if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAffineAnim(&gSprites[monSpriteId], BATTLER_AFFINE_NORMAL); - r12 = TRUE; + emergeAnimFinished = TRUE; } - var1 = (sprite->data[5] - sprite->x) * sprite->data[7] / 128 + sprite->x; - var2 = (sprite->data[6] - sprite->y) * sprite->data[7] / 128 + sprite->y; - gSprites[monSpriteId].x = var1; - gSprites[monSpriteId].y = var2; - if (sprite->data[7] < 128) - { - s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8); - sprite->data[7] += 4; + x = (sprite->sFinalMonX - sprite->x) * sprite->sTrigIdx / 128 + sprite->x; + y = (sprite->sFinalMonY - sprite->y) * sprite->sTrigIdx / 128 + sprite->y; + gSprites[monSpriteId].x = x; + gSprites[monSpriteId].y = y; + + if (sprite->sTrigIdx < 128) + { + s16 sine = -(gSineTable[(u8)sprite->sTrigIdx] / 8); + + sprite->sTrigIdx += 4; gSprites[monSpriteId].x2 = sine; gSprites[monSpriteId].y2 = sine; } else { - gSprites[monSpriteId].x = sprite->data[5]; - gSprites[monSpriteId].y = sprite->data[6]; + gSprites[monSpriteId].x = sprite->sFinalMonX; + gSprites[monSpriteId].y = sprite->sFinalMonY; gSprites[monSpriteId].x2 = 0; gSprites[monSpriteId].y2 = 0; - r6 = TRUE; + atFinalPosition = TRUE; } - if (sprite->animEnded && r12 && r6) + if (sprite->animEnded && emergeAnimFinished && atFinalPosition) { - if (gSprites[monSpriteId].data[7] == SPECIES_EGG) - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); + if (gSprites[monSpriteId].sSpecies == SPECIES_EGG) + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, TRUE, 0); else - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].sSpecies, FALSE, 0); DestroySpriteAndFreeResources(sprite); } } -u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h) +#undef sSpecies +#undef sFinalMonX +#undef sFinalMonY +#undef sTrigIdx + + +#define sTimer data[5] + +u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 delay, u32 fadePalettes) { u8 spriteId; - LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); - LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); - spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subPriority); - gSprites[spriteId].data[0] = a; - gSprites[spriteId].data[1] = g; - gSprites[spriteId].data[2] = b; - gSprites[spriteId].data[3] = h; - gSprites[spriteId].data[4] = h >> 16; + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[BALL_POKE]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[BALL_POKE]); + spriteId = CreateSprite(&gBallSpriteTemplates[BALL_POKE], x, y, subPriority); + gSprites[spriteId].sMonSpriteId = monSpriteId; + gSprites[spriteId].sDelay = delay; + gSprites[spriteId].sMonPalNum = monPalNum; + gSprites[spriteId].sFadePalsLo = fadePalettes; + gSprites[spriteId].sFadePalsHi = fadePalettes >> 16; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = SpriteCB_TradePokeball; return spriteId; @@ -1132,21 +1156,22 @@ u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPrior static void SpriteCB_TradePokeball(struct Sprite *sprite) { - if (sprite->data[1] == 0) + if (sprite->sDelay == 0) { - u8 r6; - u8 monSpriteId = sprite->data[0]; - u8 r8 = sprite->data[2]; - u32 r5 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); + u8 subpriority; + u8 monSpriteId = sprite->sMonSpriteId; + u8 monPalNum = sprite->sMonPalNum; + u32 selectedPalettes = (u16)sprite->sFadePalsLo | ((u16)sprite->sFadePalsHi << 16); if (sprite->subpriority != 0) - r6 = sprite->subpriority - 1; + subpriority = sprite->subpriority - 1; else - r6 = 0; + subpriority = 0; StartSpriteAnim(sprite, 1); - AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r6); - sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); + AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, subpriority); + // sDelay re-used to store task id but never read + sprite->sDelay = LaunchBallFadeMonTaskForPokeball(1, monPalNum, selectedPalettes); sprite->callback = SpriteCB_TradePokeballSendOff; #ifdef BUGFIX // FIX: If this is used on a sprite that has previously had an affine animation, it will not @@ -1159,7 +1184,7 @@ static void SpriteCB_TradePokeball(struct Sprite *sprite) } else { - sprite->data[1]--; + sprite->sDelay--; } } @@ -1167,15 +1192,16 @@ static void SpriteCB_TradePokeballSendOff(struct Sprite *sprite) { u8 monSpriteId; - sprite->data[5]++; - if (sprite->data[5] == 11) + sprite->sTimer++; + if (sprite->sTimer == 11) PlaySE(SE_BALL_TRADE); - monSpriteId = sprite->data[0]; + + monSpriteId = sprite->sMonSpriteId; if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAnim(sprite, 2); gSprites[monSpriteId].invisible = TRUE; - sprite->data[5] = 0; + sprite->sTimer = 0; sprite->callback = SpriteCB_TradePokeballEnd; } else @@ -1191,6 +1217,13 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } +#undef sMonSpriteId +#undef sDelay +#undef sMonPalNum +#undef sFadePalsLo +#undef sFadePalsHi +#undef sTimer + static void Unref_DestroySpriteAndFreeResources(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); diff --git a/src/pokedex.c b/src/pokedex.c index 206782e59..9592aee9c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -840,7 +840,7 @@ static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); static const u8 sText_TenDashes[] = _("----------"); -ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); +ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" #include "data/pokemon/pokedex_entries.h" @@ -4138,7 +4138,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) if (owned) description = gPokedexEntries[num].description; else - description = gExpandedPlaceholder_PokedexDescription; + description = sExpandedPlaceholder_PokedexDescription; PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, 0xF0), 0x5F); } @@ -4428,37 +4428,37 @@ bool16 HasAllMons(void) return TRUE; } -static void ResetOtherVideoRegisters(u16 a) +static void ResetOtherVideoRegisters(u16 regBits) { - if (!(a & DISPCNT_BG0_ON)) + if (!(regBits & DISPCNT_BG0_ON)) { ClearGpuRegBits(0, DISPCNT_BG0_ON); SetGpuReg(REG_OFFSET_BG0CNT, 0); SetGpuReg(REG_OFFSET_BG0HOFS, 0); SetGpuReg(REG_OFFSET_BG0VOFS, 0); } - if (!(a & DISPCNT_BG1_ON)) + if (!(regBits & DISPCNT_BG1_ON)) { ClearGpuRegBits(0, DISPCNT_BG1_ON); SetGpuReg(REG_OFFSET_BG1CNT, 0); SetGpuReg(REG_OFFSET_BG1HOFS, 0); SetGpuReg(REG_OFFSET_BG1VOFS, 0); } - if (!(a & DISPCNT_BG2_ON)) + if (!(regBits & DISPCNT_BG2_ON)) { ClearGpuRegBits(0, DISPCNT_BG2_ON); SetGpuReg(REG_OFFSET_BG2CNT, 0); SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); } - if (!(a & DISPCNT_BG3_ON)) + if (!(regBits & DISPCNT_BG3_ON)) { ClearGpuRegBits(0, DISPCNT_BG3_ON); SetGpuReg(REG_OFFSET_BG3CNT, 0); SetGpuReg(REG_OFFSET_BG3HOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); } - if (!(a & DISPCNT_OBJ_ON)) + if (!(regBits & DISPCNT_OBJ_ON)) { ClearGpuRegBits(0, DISPCNT_OBJ_ON); ResetSpriteData(); diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c index 4926c019d..ff32f8eef 100644 --- a/src/pokedex_area_region_map.c +++ b/src/pokedex_area_region_map.c @@ -63,7 +63,7 @@ void FreePokedexAreaMapBgNum(void) TRY_FREE_AND_SET_NULL(sPokedexAreaMapBgNum); } -void PokedexAreaMapChangeBgY(u32 a0) +void PokedexAreaMapChangeBgY(u32 move) { - ChangeBgY(*sPokedexAreaMapBgNum, a0 * 0x100, BG_COORD_SET); + ChangeBgY(*sPokedexAreaMapBgNum, move * 0x100, BG_COORD_SET); } diff --git a/src/pokemon.c b/src/pokemon.c index 61125e362..170425391 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2464,7 +2464,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50) level = GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode); else if (lvl50) - level = 50; + level = FRONTIER_MAX_LEVEL_50; else level = src->level; @@ -5379,10 +5379,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } -static void BufferStatRoseMessage(s32 arg0) +static void BufferStatRoseMessage(s32 statIdx) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]); StringCopy(gBattleTextBuff2, gText_StatRose); BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose); } @@ -5798,13 +5798,13 @@ u16 GetLinkTrainerFlankId(u8 linkPlayerId) return flankId; } -s32 GetBattlerMultiplayerId(u16 a1) +s32 GetBattlerMultiplayerId(u16 id) { - s32 id; - for (id = 0; id < MAX_LINK_PLAYERS; id++) - if (gLinkPlayers[id].id == a1) + s32 multiplayerId; + for (multiplayerId = 0; multiplayerId < MAX_LINK_PLAYERS; multiplayerId++) + if (gLinkPlayers[multiplayerId].id == id) break; - return id; + return multiplayerId; } u8 GetTrainerEncounterMusicId(u16 trainerOpponentId) @@ -6587,12 +6587,12 @@ void SetWildMonHeldItem(void) u16 rnd = Random() % 100; u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0); u16 chanceNoItem = 45; - u16 chanceCommon = 95; + u16 chanceNotRare = 95; if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) { chanceNoItem = 20; - chanceCommon = 80; + chanceNotRare = 80; } if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE) { @@ -6600,7 +6600,7 @@ void SetWildMonHeldItem(void) if (alteringCaveId != 0) { // In active Altering Cave, use special item list - if (rnd < chanceCommon) + if (rnd < chanceNotRare) return; SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item); } @@ -6609,27 +6609,27 @@ void SetWildMonHeldItem(void) // In inactive Altering Cave, use normal items if (rnd < chanceNoItem) return; - if (rnd < chanceCommon) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); + if (rnd < chanceNotRare) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); } } else { - if (gBaseStats[species].item1 == gBaseStats[species].item2 && gBaseStats[species].item1 != ITEM_NONE) + if (gBaseStats[species].itemCommon == gBaseStats[species].itemRare && gBaseStats[species].itemCommon != ITEM_NONE) { // Both held items are the same, 100% chance to hold item - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); } else { if (rnd < chanceNoItem) return; - if (rnd < chanceCommon) - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); + if (rnd < chanceNotRare) + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); else - SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); } } } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index f6aa82391..32333ee67 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -2205,7 +2205,7 @@ static bool32 AreLinkQueuesEmpty(void) return !gRfu.recvQueue.count && !gRfu.sendQueue.count; } -static int GetNumPlayersForBonus(u8 *arg0) +static int GetNumPlayersForBonus(u8 *atJumpPeak) { int i = 0; int flags = 0; @@ -2213,7 +2213,7 @@ static int GetNumPlayersForBonus(u8 *arg0) for (; i < MAX_RFU_PLAYERS; i++) { - if (arg0[i]) + if (atJumpPeak[i]) { flags |= 1 << i; count++; @@ -3612,7 +3612,6 @@ static u32 AddMessageWindow(u32 left, u32 top, u32 width, u32 height) static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) { struct WindowTemplate window; - u8 a = cursorPos; window.bg = BG_INTERFACE; window.tilemapLeft = left; @@ -3622,7 +3621,7 @@ static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos) window.paletteNum = 2; window.baseBlock = 0x2B; - CreateYesNoMenu(&window, 1, 0xD, a); + CreateYesNoMenu(&window, 1, 0xD, cursorPos); } // "Points" for jump score and "times" for number of jumps in a row diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 70d84b7e4..8dd6005a8 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1041,7 +1041,7 @@ static const struct BgTemplate sBgTemplates[] = }, }; -static const struct SpritePalette gWaveformSpritePalette = +static const struct SpritePalette sWaveformSpritePalette = { sWaveform_Pal, PALTAG_MISC_2 }; @@ -3846,7 +3846,7 @@ static bool8 InitPokeStorageWindows(void) static void LoadWaveformSpritePalette(void) { - LoadSpritePalette(&gWaveformSpritePalette); + LoadSpritePalette(&sWaveformSpritePalette); } static void InitPalettesAndSprites(void) @@ -5419,8 +5419,7 @@ static bool32 WaitForWallpaperGfxLoad(void) if (IsDma3ManagerBusyWithBgCopy()) return FALSE; - if (sStorage->wallpaperTiles != NULL) - FREE_AND_SET_NULL(sStorage->wallpaperTiles); + TRY_FREE_AND_SET_NULL(sStorage->wallpaperTiles); return TRUE; } @@ -8478,11 +8477,11 @@ static void MultiMove_ClearIconFromBg(u8 x, u8 y) } } -static void MultiMove_InitMove(u16 x, u16 y, u16 arg2) +static void MultiMove_InitMove(u16 x, u16 y, u16 moveSteps) { sMultiMove->bgX = x; sMultiMove->bgY = y; - sMultiMove->bgMoveSteps = arg2; + sMultiMove->bgMoveSteps = moveSteps; } static u8 MultiMove_UpdateMove(void) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 10c69a422..c25d58ae6 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -195,62 +195,62 @@ static bool8 LoadGraphics(void); static void CB2_InitSummaryScreen(void); static void InitBGs(void); static bool8 DecompressGraphics(void); -static void CopyMonToSummaryStruct(struct Pokemon* a); -static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); +static void CopyMonToSummaryStruct(struct Pokemon*); +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon*); static void SetDefaultTilemaps(void); -static void CloseSummaryScreen(u8 taskId); -static void Task_HandleInput(u8 taskId); -static void ChangeSummaryPokemon(u8 taskId, s8 a); -static void Task_ChangeSummaryMon(u8 taskId); -static s8 AdvanceMonIndex(s8 delta); -static s8 AdvanceMultiBattleMonIndex(s8 delta); -static bool8 IsValidToViewInMulti(struct Pokemon* mon); -static void ChangePage(u8 taskId, s8 a); -static void PssScrollRight(u8 taskId); -static void PssScrollRightEnd(u8 taskId); -static void PssScrollLeft(u8 taskId); -static void PssScrollLeftEnd(u8 taskId); +static void CloseSummaryScreen(u8); +static void Task_HandleInput(u8); +static void ChangeSummaryPokemon(u8, s8); +static void Task_ChangeSummaryMon(u8); +static s8 AdvanceMonIndex(s8); +static s8 AdvanceMultiBattleMonIndex(s8); +static bool8 IsValidToViewInMulti(struct Pokemon*); +static void ChangePage(u8, s8); +static void PssScrollRight(u8); +static void PssScrollRightEnd(u8); +static void PssScrollLeft(u8); +static void PssScrollLeftEnd(u8); static void TryDrawExperienceProgressBar(void); -static void SwitchToMoveSelection(u8 taskId); -static void Task_HandleInput_MoveSelect(u8 taskId); +static void SwitchToMoveSelection(u8); +static void Task_HandleInput_MoveSelect(u8); static bool8 HasMoreThanOneMove(void); -static void ChangeSelectedMove(s16 *taskData, s8 direction, u8 *moveIndexPtr); -static void CloseMoveSelectMode(u8 taskId); -static void SwitchToMovePositionSwitchMode(u8 a); -static void Task_HandleInput_MovePositionSwitch(u8 taskId); -static void ExitMovePositionSwitchMode(u8 taskId, bool8 swapMoves); -static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); -static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); -static void Task_SetHandleReplaceMoveInput(u8 taskId); -static void Task_HandleReplaceMoveInput(u8 taskId); +static void ChangeSelectedMove(s16 *, s8, u8 *); +static void CloseMoveSelectMode(u8); +static void SwitchToMovePositionSwitchMode(u8); +static void Task_HandleInput_MovePositionSwitch(u8); +static void ExitMovePositionSwitchMode(u8, bool8); +static void SwapMonMoves(struct Pokemon *, u8, u8); +static void SwapBoxMonMoves(struct BoxPokemon *, u8, u8); +static void Task_SetHandleReplaceMoveInput(u8); +static void Task_HandleReplaceMoveInput(u8); static bool8 CanReplaceMove(void); -static void ShowCantForgetHMsWindow(u8 taskId); -static void Task_HandleInputCantForgetHMsMoves(u8 taskId); +static void ShowCantForgetHMsWindow(u8); +static void Task_HandleInputCantForgetHMsMoves(u8); static void DrawPagination(void); -static void HandlePowerAccTilemap(u16 a, s16 b); -static void Task_ShowPowerAccWindow(u8 taskId); -static void HandleAppealJamTilemap(u16 a, s16 b, u16 c); -static void Task_ShowAppealJamWindow(u8 taskId); -static void HandleStatusTilemap(u16 a, s16 b); -static void Task_ShowStatusWindow(u8 taskId); -static void TilemapFiveMovesDisplay(u16 *dst, u16 palette, bool8 remove); -static void DrawPokerusCuredSymbol(struct Pokemon* mon); -static void DrawExperienceProgressBar(struct Pokemon* mon); -static void DrawContestMoveHearts(u16 move); +static void HandlePowerAccTilemap(u16, s16); +static void Task_ShowPowerAccWindow(u8); +static void HandleAppealJamTilemap(u16, s16, u16); +static void Task_ShowAppealJamWindow(u8); +static void HandleStatusTilemap(u16, s16); +static void Task_ShowStatusWindow(u8); +static void TilemapFiveMovesDisplay(u16 *, u16, bool8); +static void DrawPokerusCuredSymbol(struct Pokemon*); +static void DrawExperienceProgressBar(struct Pokemon*); +static void DrawContestMoveHearts(u16); static void LimitEggSummaryPageDisplay(void); static void ResetWindows(void); static void PrintMonInfo(void); static void PrintNotEggInfo(void); static void PrintEggInfo(void); -static void PrintGenderSymbol(struct Pokemon *mon, u16 a); +static void PrintGenderSymbol(struct Pokemon *, u16); static void PrintPageNamesAndStats(void); -static void PutPageWindowTilemaps(u8 a); -static void ClearPageWindowTilemaps(u8 a); -static void RemoveWindowByIndex(u8 a); -static void PrintPageSpecificText(u8 a); -static void CreateTextPrinterTask(u8 a); +static void PutPageWindowTilemaps(u8); +static void ClearPageWindowTilemaps(u8); +static void RemoveWindowByIndex(u8); +static void PrintPageSpecificText(u8); +static void CreateTextPrinterTask(u8); static void PrintInfoPageText(void); -static void Task_PrintInfoPage(u8 taskId); +static void Task_PrintInfoPage(u8); static void PrintMonOTName(void); static void PrintMonOTID(void); static void PrintMonAbilityName(void); @@ -258,7 +258,7 @@ static void PrintMonAbilityDescription(void); static void BufferMonTrainerMemo(void); static void PrintMonTrainerMemo(void); static void BufferNatureString(void); -static void GetMetLevelString(u8 *a); +static void GetMetLevelString(u8 *); static bool8 DoesMonOTMatchOwner(void); static bool8 DidMonComeFromGBAGames(void); static bool8 IsInGamePartnerMon(void); @@ -266,7 +266,7 @@ static void PrintEggOTName(void); static void PrintEggOTID(void); static void PrintEggState(void); static void PrintEggMemo(void); -static void Task_PrintSkillsPage(u8 taskId); +static void Task_PrintSkillsPage(u8); static void PrintHeldItemName(void); static void PrintSkillsPageText(void); static void PrintRibbonCount(void); @@ -276,18 +276,18 @@ static void BufferRightColumnStats(void); static void PrintRightColumnStats(void); static void PrintExpPointsNextLevel(void); static void PrintBattleMoves(void); -static void Task_PrintBattleMoves(u8 taskId); -static void PrintMoveNameAndPP(u8 a); +static void Task_PrintBattleMoves(u8); +static void PrintMoveNameAndPP(u8); static void PrintContestMoves(void); -static void Task_PrintContestMoves(u8 taskId); -static void PrintContestMoveDescription(u8 a); -static void PrintMoveDetails(u16 a); +static void Task_PrintContestMoves(u8); +static void PrintContestMoveDescription(u8); +static void PrintMoveDetails(u16); static void PrintNewMoveDetailsOrCancelText(void); static void AddAndFillMoveNamesWindow(void); -static void SwapMovesNamesPP(u8 moveIndex1, u8 moveIndex2); +static void SwapMovesNamesPP(u8, u8); static void PrintHMMovesCantBeForgotten(void); static void ResetSpriteIds(void); -static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible); +static void SetSpriteInvisibility(u8, bool8); static void HidePageSpecificSprites(void); static void SetTypeIcons(void); static void CreateMoveTypeIcons(void); @@ -295,20 +295,20 @@ static void SetMonTypeIcons(void); static void SetMoveTypeIcons(void); static void SetContestMoveTypeIcons(void); static void SetNewMoveTypeIcon(void); -static void SwapMovesTypeSprites(u8 moveIndex1, u8 moveIndex2); -static u8 LoadMonGfxAndSprite(struct Pokemon *a, s16 *b); -static u8 CreateMonSprite(struct Pokemon *unused); +static void SwapMovesTypeSprites(u8, u8); +static u8 LoadMonGfxAndSprite(struct Pokemon *, s16 *); +static u8 CreateMonSprite(struct Pokemon *); static void SpriteCB_Pokemon(struct Sprite *); static void StopPokemonAnimations(void); -static void CreateMonMarkingsSprite(struct Pokemon *mon); -static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); -static void CreateCaughtBallSprite(struct Pokemon *mon); +static void CreateMonMarkingsSprite(struct Pokemon *); +static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *); +static void CreateCaughtBallSprite(struct Pokemon *); static void CreateSetStatusSprite(void); -static void CreateMoveSelectorSprites(u8 idArrayStart); -static void SpriteCb_MoveSelector(struct Sprite *sprite); -static void DestroyMoveSelectorSprites(u8 firstArrayId); -static void SetMainMoveSelectorColor(u8 whichColor); -static void KeepMoveSelectorVisible(u8 firstSpriteId); +static void CreateMoveSelectorSprites(u8); +static void SpriteCb_MoveSelector(struct Sprite *); +static void DestroyMoveSelectorSprites(u8); +static void SetMainMoveSelectorColor(u8); +static void KeepMoveSelectorVisible(u8); static void SummaryScreen_DestroyAnimDelayTask(void); // const rom data @@ -2314,69 +2314,69 @@ u8 GetMoveSlotToReplace(void) static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen { - u16 *alloced = Alloc(32); + u16 *tilemap = Alloc(8 * PSS_PAGE_COUNT); u8 i; - for (i = 0; i < 4; i++) + for (i = 0; i < PSS_PAGE_COUNT; i++) { u8 j = i * 2; if (i < sMonSummaryScreen->minPageIndex) { - alloced[j + 0] = 0x40; - alloced[j + 1] = 0x40; - alloced[j + 8] = 0x50; - alloced[j + 9] = 0x50; + tilemap[j + 0] = 0x40; + tilemap[j + 1] = 0x40; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x50; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x50; } else if (i > sMonSummaryScreen->maxPageIndex) { - alloced[j + 0] = 0x4A; - alloced[j + 1] = 0x4A; - alloced[j + 8] = 0x5A; - alloced[j + 9] = 0x5A; + tilemap[j + 0] = 0x4A; + tilemap[j + 1] = 0x4A; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5A; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5A; } else if (i < sMonSummaryScreen->currPageIndex) { - alloced[j + 0] = 0x46; - alloced[j + 1] = 0x47; - alloced[j + 8] = 0x56; - alloced[j + 9] = 0x57; + tilemap[j + 0] = 0x46; + tilemap[j + 1] = 0x47; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x56; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x57; } else if (i == sMonSummaryScreen->currPageIndex) { if (i != sMonSummaryScreen->maxPageIndex) { - alloced[j + 0] = 0x41; - alloced[j + 1] = 0x42; - alloced[j + 8] = 0x51; - alloced[j + 9] = 0x52; + tilemap[j + 0] = 0x41; + tilemap[j + 1] = 0x42; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x51; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x52; } else { - alloced[j + 0] = 0x4B; - alloced[j + 1] = 0x4C; - alloced[j + 8] = 0x5B; - alloced[j + 9] = 0x5C; + tilemap[j + 0] = 0x4B; + tilemap[j + 1] = 0x4C; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x5B; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x5C; } } else if (i != sMonSummaryScreen->maxPageIndex) { - alloced[j + 0] = 0x43; - alloced[j + 1] = 0x44; - alloced[j + 8] = 0x53; - alloced[j + 9] = 0x54; + tilemap[j + 0] = 0x43; + tilemap[j + 1] = 0x44; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x53; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x54; } else { - alloced[j + 0] = 0x48; - alloced[j + 1] = 0x49; - alloced[j + 8] = 0x58; - alloced[j + 9] = 0x59; + tilemap[j + 0] = 0x48; + tilemap[j + 1] = 0x49; + tilemap[j + 2 * PSS_PAGE_COUNT] = 0x58; + tilemap[j + 2 * PSS_PAGE_COUNT + 1] = 0x59; } } - CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16); + CopyToBgTilemapBufferRect_ChangePalette(3, tilemap, 11, 0, PSS_PAGE_COUNT * 2, 2, 16); ScheduleBgCopyTilemapToVram(3); - Free(alloced); + Free(tilemap); } static void ChangeTilemap(const struct TilemapCtrl *unkStruct, u16 *dest, u8 c, bool8 d) @@ -2439,7 +2439,7 @@ static void Task_ShowPowerAccWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == 2) + if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else @@ -2492,7 +2492,7 @@ static void Task_ShowAppealJamWindow(u8 taskId) { if (data[0] < 0) { - if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0) + if (sMonSummaryScreen->currPageIndex == PSS_PAGE_CONTEST_MOVES && FuncIsActiveTask(PssScrollRight) == 0) PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); DrawContestMoveHearts(data[2]); } diff --git a/src/pokenav.c b/src/pokenav.c index f9a6614a8..03f48ee36 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -37,16 +37,16 @@ struct PokenavCallbacks static u32 GetCurrentMenuCB(void); static u32 IsActiveMenuLoopTaskActive_(void); -static bool32 SetActivePokenavMenu(u32 menuId); +static bool32 SetActivePokenavMenu(u32); static bool32 AnyMonHasRibbon(void); -static void InitPokenavResources(struct PokenavResources *a0); +static void InitPokenavResources(struct PokenavResources *); static void InitKeys_(void); static void FreePokenavResources(void); static void VBlankCB_Pokenav(void); static void CB2_Pokenav(void); -static void Task_RunLoopedTask_LinkMode(u8 a0); -static void Task_RunLoopedTask(u8 taskId); -static void Task_Pokenav(u8 taskId); +static void Task_RunLoopedTask_LinkMode(u8); +static void Task_RunLoopedTask(u8); +static void Task_Pokenav(u8); static void CB2_InitPokenavForTutorial(void); const struct PokenavCallbacks PokenavMenuCallbacks[15] = @@ -557,8 +557,7 @@ void *GetSubstructPtr(u32 index) void FreePokenavSubstruct(u32 index) { - if (gPokenavResources->substructPtrs[index] != NULL) - FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); + TRY_FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]); } u32 GetPokenavMode(void) diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index 94ed4e8d8..e0645bac0 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -332,7 +332,7 @@ u8 *CopyStringLeftAlignedToConditionData(u8 *dst, const u8 *src, s16 n) return dst; } -static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 arg3) +static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) { u16 boxId, monId, gender, species, level, lvlDigits; struct BoxPokemon *boxMon; @@ -412,7 +412,7 @@ static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 arg3) str_ = ConvertIntToDecimalStringN(str_, level, STR_CONV_MODE_LEFT_ALIGN, 3); lvlDigits = str_ - txtPtr; *(str_++) = CHAR_SPACE; - if (!arg3) + if (!skipPadding) { lvlDigits = 3 - lvlDigits; while (lvlDigits-- != 0) diff --git a/src/pokenav_list.c b/src/pokenav_list.c index bdba1d2c0..350a78504 100644 --- a/src/pokenav_list.c +++ b/src/pokenav_list.c @@ -40,7 +40,7 @@ struct PokenavListWindowState { struct PokenavListSub { struct PokenavListMenuWindow listWindow; - u32 unk10; + u32 printStart; u32 printIndex; u32 itemSize; void * listPtr; @@ -59,7 +59,7 @@ struct PokenavListSub struct PokenavList { - struct PokenavListSub list; + struct PokenavListSub sub; u8 tilemapBuffer[BG_SCREEN_SIZE]; struct PokenavListWindowState windowState; s32 eraseIndex; @@ -100,12 +100,12 @@ static EWRAM_DATA u32 sMoveWindowDownIndex = 0; // Read, but pointlessly bool32 CreatePokenavList(const struct BgTemplate *bgTemplate, struct PokenavListTemplate *listTemplate, s32 tileOffset) { - struct PokenavList *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); - if (structPtr == NULL) + struct PokenavList *list = AllocSubstruct(POKENAV_SUBSTRUCT_LIST, sizeof(struct PokenavList)); + if (list == NULL) return FALSE; - InitPokenavListWindowState(&structPtr->windowState, listTemplate); - if (!CopyPokenavListMenuTemplate(&structPtr->list, bgTemplate, listTemplate, tileOffset)) + InitPokenavListWindowState(&list->windowState, listTemplate); + if (!CopyPokenavListMenuTemplate(&list->sub, bgTemplate, listTemplate, tileOffset)) return FALSE; CreateLoopedTask(LoopedTask_CreatePokenavList, 6); @@ -119,31 +119,31 @@ bool32 IsCreatePokenavListTaskActive(void) void DestroyPokenavList(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - DestroyListArrows(&structPtr->list); - RemoveWindow(structPtr->list.listWindow.windowId); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + DestroyListArrows(&list->sub); + RemoveWindow(list->sub.listWindow.windowId); FreePokenavSubstruct(POKENAV_SUBSTRUCT_LIST); } static u32 LoopedTask_CreatePokenavList(s32 state) { - struct PokenavList *structPtr; + struct PokenavList *list; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - InitPokenavListBg(structPtr); + InitPokenavListBg(list); return LT_INC_AND_PAUSE; case 1: - InitPokenavListWindow(&structPtr->list.listWindow); + InitPokenavListWindow(&list->sub.listWindow); return LT_INC_AND_PAUSE; case 2: - InitListItems(&structPtr->windowState, &structPtr->list); + InitListItems(&list->windowState, &list->sub); return LT_INC_AND_PAUSE; case 3: if (IsPrintListItemsTaskActive()) @@ -156,24 +156,24 @@ static u32 LoopedTask_CreatePokenavList(s32 state) return LT_INC_AND_CONTINUE; } case 4: - CreateListArrowSprites(&structPtr->windowState, &structPtr->list); + CreateListArrowSprites(&list->windowState, &list->sub); return LT_FINISH; default: return LT_FINISH; } } -static void InitPokenavListBg(struct PokenavList *a0) +static void InitPokenavListBg(struct PokenavList *list) { - u16 tileNum = (a0->list.listWindow.fillValue << 12) | a0->list.listWindow.tileOffset; - BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(1), a0->list.listWindow.tileOffset, 1); - BgDmaFill(a0->list.listWindow.bg, PIXEL_FILL(4), a0->list.listWindow.tileOffset + 1, 1); - SetBgTilemapBuffer(a0->list.listWindow.bg, a0->tilemapBuffer); - FillBgTilemapBufferRect_Palette0(a0->list.listWindow.bg, tileNum, 0, 0, 32, 32); - ChangeBgY(a0->list.listWindow.bg, 0, BG_COORD_SET); - ChangeBgX(a0->list.listWindow.bg, 0, BG_COORD_SET); - ChangeBgY(a0->list.listWindow.bg, a0->list.listWindow.y << 11, BG_COORD_SUB); - CopyBgTilemapBufferToVram(a0->list.listWindow.bg); + u16 tileNum = (list->sub.listWindow.fillValue << 12) | list->sub.listWindow.tileOffset; + BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(1), list->sub.listWindow.tileOffset, 1); + BgDmaFill(list->sub.listWindow.bg, PIXEL_FILL(4), list->sub.listWindow.tileOffset + 1, 1); + SetBgTilemapBuffer(list->sub.listWindow.bg, list->tilemapBuffer); + FillBgTilemapBufferRect_Palette0(list->sub.listWindow.bg, tileNum, 0, 0, 32, 32); + ChangeBgY(list->sub.listWindow.bg, 0, BG_COORD_SET); + ChangeBgX(list->sub.listWindow.bg, 0, BG_COORD_SET); + ChangeBgY(list->sub.listWindow.bg, list->sub.listWindow.y << 11, BG_COORD_SUB); + CopyBgTilemapBufferToVram(list->sub.listWindow.bg); } static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) @@ -183,16 +183,16 @@ static void InitPokenavListWindow(struct PokenavListMenuWindow *listWindow) CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } -static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *a1) +static void InitListItems(struct PokenavListWindowState *windowState, struct PokenavListSub *subPtr) { s32 numToPrint = windowState->listLength - windowState->windowTopIndex; if (numToPrint > windowState->entriesOnscreen) numToPrint = windowState->entriesOnscreen; - PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, a1); + PrintListItems(windowState->listPtr, windowState->windowTopIndex, numToPrint, windowState->listItemSize, 0, subPtr); } -static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 a4, struct PokenavListSub *list) +static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemSize, u32 printStart, struct PokenavListSub *list) { if (numItems == 0) return; @@ -202,7 +202,7 @@ static void PrintListItems(void * listPtr, u32 topIndex, u32 numItems, u32 itemS list->listWindow.numPrinted = 0; list->listWindow.numToPrint = numItems; list->printIndex = topIndex; - list->unk10 = a4; + list->printStart = printStart; CreateLoopedTask(LoopedTask_PrintListItems, 5); } @@ -214,31 +214,31 @@ static bool32 IsPrintListItemsTaskActive(void) static u32 LoopedTask_PrintListItems(s32 state) { u32 row; - struct PokenavListSub *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *listSub = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - row = (structPtr->listWindow.unkA + structPtr->listWindow.numPrinted + structPtr->unk10) & 0xF; - structPtr->bufferItemFunc(structPtr->listPtr, structPtr->itemTextBuffer); - if (structPtr->iconDrawFunc != NULL) - structPtr->iconDrawFunc(structPtr->listWindow.windowId, structPtr->printIndex, row); + row = (listSub->listWindow.unkA + listSub->listWindow.numPrinted + listSub->printStart) & 0xF; + listSub->bufferItemFunc(listSub->listPtr, listSub->itemTextBuffer); + if (listSub->iconDrawFunc != NULL) + listSub->iconDrawFunc(listSub->listWindow.windowId, listSub->printIndex, row); - AddTextPrinterParameterized(structPtr->listWindow.windowId, structPtr->listWindow.fontId, structPtr->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); - if (++structPtr->listWindow.numPrinted >= structPtr->listWindow.numToPrint) + AddTextPrinterParameterized(listSub->listWindow.windowId, listSub->listWindow.fontId, listSub->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL); + if (++listSub->listWindow.numPrinted >= listSub->listWindow.numToPrint) { // Finished printing items. If icons were being drawn, draw the // window tilemap and graphics. Otherwise just do the graphics - if (structPtr->iconDrawFunc != NULL) - CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_FULL); + if (listSub->iconDrawFunc != NULL) + CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_FULL); else - CopyWindowToVram(structPtr->listWindow.windowId, COPYWIN_GFX); + CopyWindowToVram(listSub->listWindow.windowId, COPYWIN_GFX); return LT_INC_AND_PAUSE; } else { - structPtr->listPtr += structPtr->itemSize; - structPtr->printIndex++; + listSub->listPtr += listSub->itemSize; + listSub->printIndex++; return LT_CONTINUE; } case 1: @@ -251,42 +251,42 @@ static u32 LoopedTask_PrintListItems(s32 state) static bool32 ShouldShowUpArrow(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return (structPtr->windowState.windowTopIndex != 0); + return (list->windowState.windowTopIndex != 0); } static bool32 ShouldShowDownArrow(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *subPtr = &structPtr->windowState; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *windowState = &list->windowState; - return (subPtr->windowTopIndex + subPtr->entriesOnscreen < subPtr->listLength); + return (windowState->windowTopIndex + windowState->entriesOnscreen < windowState->listLength); } static void MoveListWindow(s32 delta, bool32 printItems) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *subPtr = &structPtr->windowState; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *windowState = &list->windowState; if (delta < 0) { - if (subPtr->windowTopIndex + delta < 0) - delta = -1 * subPtr->windowTopIndex; + if (windowState->windowTopIndex + delta < 0) + delta = -1 * windowState->windowTopIndex; if (printItems) - PrintListItems(subPtr->listPtr, subPtr->windowTopIndex + delta, delta * -1, subPtr->listItemSize, delta, &structPtr->list); + PrintListItems(windowState->listPtr, windowState->windowTopIndex + delta, delta * -1, windowState->listItemSize, delta, &list->sub); } else if (printItems) { - s32 index = sMoveWindowDownIndex = subPtr->windowTopIndex + subPtr->entriesOnscreen; - if (index + delta >= subPtr->listLength) - delta = subPtr->listLength - index; + s32 index = sMoveWindowDownIndex = windowState->windowTopIndex + windowState->entriesOnscreen; + if (index + delta >= windowState->listLength) + delta = windowState->listLength - index; - PrintListItems(subPtr->listPtr, index, delta, subPtr->listItemSize, subPtr->entriesOnscreen, &structPtr->list); + PrintListItems(windowState->listPtr, index, delta, windowState->listItemSize, windowState->entriesOnscreen, &list->sub); } - CreateMoveListWindowTask(delta, &structPtr->list); - subPtr->windowTopIndex += delta; + CreateMoveListWindowTask(delta, &list->sub); + windowState->windowTopIndex += delta; } static void CreateMoveListWindowTask(s32 delta, struct PokenavListSub *list) @@ -305,8 +305,8 @@ static u32 LoopedTask_MoveListWindow(s32 state) { s32 oldY, newY; bool32 finished; - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListSub *subPtr = &structPtr->list; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListSub *subPtr = &list->sub; switch (state) { @@ -342,23 +342,23 @@ static u32 LoopedTask_MoveListWindow(s32 state) bool32 PokenavList_IsMoveWindowTaskActive(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(structPtr->list.loopedTaskId); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(list->sub.loopedTaskId); } static struct PokenavListWindowState *GetPokenavListWindowState(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return &structPtr->windowState; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return &list->windowState; } int PokenavList_MoveCursorUp(void) { - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); - if (structPtr->selectedIndexOffset != 0) + if (windowState->selectedIndexOffset != 0) { - structPtr->selectedIndexOffset--; + windowState->selectedIndexOffset--; return 1; } if (ShouldShowUpArrow()) @@ -371,13 +371,13 @@ int PokenavList_MoveCursorUp(void) int PokenavList_MoveCursorDown(void) { - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); - if (structPtr->windowTopIndex + structPtr->selectedIndexOffset >= structPtr->listLength - 1) + if (windowState->windowTopIndex + windowState->selectedIndexOffset >= windowState->listLength - 1) return 0; - if (structPtr->selectedIndexOffset < structPtr->entriesOnscreen - 1) + if (windowState->selectedIndexOffset < windowState->entriesOnscreen - 1) { - structPtr->selectedIndexOffset++; + windowState->selectedIndexOffset++; return 1; } if (ShouldShowDownArrow()) @@ -391,20 +391,20 @@ int PokenavList_MoveCursorDown(void) int PokenavList_PageUp(void) { s32 scroll; - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); if (ShouldShowUpArrow()) { - if (structPtr->windowTopIndex >= structPtr->entriesOnscreen) - scroll = structPtr->entriesOnscreen; + if (windowState->windowTopIndex >= windowState->entriesOnscreen) + scroll = windowState->entriesOnscreen; else - scroll = structPtr->windowTopIndex; + scroll = windowState->windowTopIndex; MoveListWindow(scroll * -1, TRUE); return 2; } - else if (structPtr->selectedIndexOffset != 0) + else if (windowState->selectedIndexOffset != 0) { - structPtr->selectedIndexOffset = 0; + windowState->selectedIndexOffset = 0; return 1; } return 0; @@ -412,112 +412,112 @@ int PokenavList_PageUp(void) int PokenavList_PageDown(void) { - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); if (ShouldShowDownArrow()) { - s32 windowBottomIndex = structPtr->windowTopIndex + structPtr->entriesOnscreen; - s32 scroll = structPtr->entriesOffscreen - structPtr->windowTopIndex; + s32 windowBottomIndex = windowState->windowTopIndex + windowState->entriesOnscreen; + s32 scroll = windowState->entriesOffscreen - windowState->windowTopIndex; - if (windowBottomIndex <= structPtr->entriesOffscreen) - scroll = structPtr->entriesOnscreen; + if (windowBottomIndex <= windowState->entriesOffscreen) + scroll = windowState->entriesOnscreen; MoveListWindow(scroll, TRUE); return 2; } else { s32 cursor, lastVisibleIndex; - if (structPtr->listLength >= structPtr->entriesOnscreen) + if (windowState->listLength >= windowState->entriesOnscreen) { - cursor = structPtr->selectedIndexOffset; - lastVisibleIndex = structPtr->entriesOnscreen; + cursor = windowState->selectedIndexOffset; + lastVisibleIndex = windowState->entriesOnscreen; } else { - cursor = structPtr->selectedIndexOffset; - lastVisibleIndex = structPtr->listLength; + cursor = windowState->selectedIndexOffset; + lastVisibleIndex = windowState->listLength; } lastVisibleIndex -= 1; if (cursor >= lastVisibleIndex) return 0; - structPtr->selectedIndexOffset = lastVisibleIndex; + windowState->selectedIndexOffset = lastVisibleIndex; return 1; } } u32 PokenavList_GetSelectedIndex(void) { - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); - return structPtr->windowTopIndex + structPtr->selectedIndexOffset; + return windowState->windowTopIndex + windowState->selectedIndexOffset; } u32 PokenavList_GetTopIndex(void) { - struct PokenavListWindowState *structPtr = GetPokenavListWindowState(); + struct PokenavListWindowState *windowState = GetPokenavListWindowState(); - return structPtr->windowTopIndex; + return windowState->windowTopIndex; } void PokenavList_EraseListForCheckPage(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - structPtr->eraseIndex = 0; - structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + list->eraseIndex = 0; + list->loopedTaskId = CreateLoopedTask(LoopedTask_EraseListForCheckPage, 6); } void PrintCheckPageInfo(s16 delta) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - structPtr->windowState.windowTopIndex += delta; - structPtr->eraseIndex = 0; - structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + list->windowState.windowTopIndex += delta; + list->eraseIndex = 0; + list->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6); } void PokenavList_ReshowListFromCheckPage(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - structPtr->eraseIndex = 0; - structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + list->eraseIndex = 0; + list->loopedTaskId = CreateLoopedTask(LoopedTask_ReshowListFromCheckPage, 6); } bool32 PokenavList_IsTaskActive(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - return IsLoopedTaskActive(structPtr->loopedTaskId); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + return IsLoopedTaskActive(list->loopedTaskId); } void PokenavList_DrawCurrentItemIcon(void) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - struct PokenavListWindowState *subPtr = &structPtr->windowState; - structPtr->list.iconDrawFunc(structPtr->list.listWindow.windowId, subPtr->windowTopIndex + subPtr->selectedIndexOffset, (structPtr->list.listWindow.unkA + subPtr->selectedIndexOffset) & 0xF); - CopyWindowToVram(structPtr->list.listWindow.windowId, COPYWIN_MAP); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavListWindowState *windowState = &list->windowState; + list->sub.iconDrawFunc(list->sub.listWindow.windowId, windowState->windowTopIndex + windowState->selectedIndexOffset, (list->sub.listWindow.unkA + windowState->selectedIndexOffset) & 0xF); + CopyWindowToVram(list->sub.listWindow.windowId, COPYWIN_MAP); } static u32 LoopedTask_EraseListForCheckPage(s32 state) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); switch (state) { case 0: - ToggleListArrows(&structPtr->list, 1); + ToggleListArrows(&list->sub, 1); // fall-through case 1: - if (structPtr->eraseIndex != structPtr->windowState.selectedIndexOffset) - EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, 1); + if (list->eraseIndex != list->windowState.selectedIndexOffset) + EraseListEntry(&list->sub.listWindow, list->eraseIndex, 1); - structPtr->eraseIndex++; + list->eraseIndex++; return LT_INC_AND_PAUSE; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - if (structPtr->eraseIndex != structPtr->windowState.entriesOnscreen) + if (list->eraseIndex != list->windowState.entriesOnscreen) return LT_SET_STATE(1); - if (structPtr->windowState.selectedIndexOffset != 0) - EraseListEntry(&structPtr->list.listWindow, structPtr->eraseIndex, structPtr->windowState.selectedIndexOffset); + if (list->windowState.selectedIndexOffset != 0) + EraseListEntry(&list->sub.listWindow, list->eraseIndex, list->windowState.selectedIndexOffset); return LT_INC_AND_PAUSE; } @@ -525,9 +525,9 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - if (structPtr->windowState.selectedIndexOffset != 0) + if (list->windowState.selectedIndexOffset != 0) { - MoveListWindow(structPtr->windowState.selectedIndexOffset, FALSE); + MoveListWindow(list->windowState.selectedIndexOffset, FALSE); return LT_INC_AND_PAUSE; } return LT_FINISH; @@ -537,7 +537,7 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) if (PokenavList_IsMoveWindowTaskActive()) return LT_PAUSE; - structPtr->windowState.selectedIndexOffset = 0; + list->windowState.selectedIndexOffset = 0; return LT_FINISH; } return LT_FINISH; @@ -545,35 +545,35 @@ static u32 LoopedTask_EraseListForCheckPage(s32 state) static u32 LoopedTask_PrintCheckPageInfo(s32 state) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; switch (state) { case 0: - PrintCheckPageTrainerName(&structPtr->windowState, &structPtr->list); + PrintCheckPageTrainerName(&list->windowState, &list->sub); break; case 1: - PrintMatchCallFieldNames(&structPtr->list, 0); + PrintMatchCallFieldNames(&list->sub, 0); break; case 2: - PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_STRATEGY); + PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_STRATEGY); break; case 3: - PrintMatchCallFieldNames(&structPtr->list, 1); + PrintMatchCallFieldNames(&list->sub, 1); break; case 4: - PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_POKEMON); + PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_POKEMON); break; case 5: - PrintMatchCallFieldNames(&structPtr->list, 2); + PrintMatchCallFieldNames(&list->sub, 2); break; case 6: - PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_1); + PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_1); break; case 7: - PrintMatchCallFlavorText(&structPtr->windowState, &structPtr->list, CHECK_PAGE_INTRO_2); + PrintMatchCallFlavorText(&list->windowState, &list->sub, CHECK_PAGE_INTRO_2); break; default: return LT_FINISH; @@ -583,30 +583,30 @@ static u32 LoopedTask_PrintCheckPageInfo(s32 state) static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { - struct PokenavList *structPtr; + struct PokenavList *list; struct PokenavListWindowState *windowState; - struct PokenavListSub *subPtr0; + struct PokenavListSub *subPtr; s32 r5, *ptr; if (IsDma3ManagerBusyWithBgCopy()) return LT_PAUSE; - structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - windowState = &structPtr->windowState; - subPtr0 = &structPtr->list; + list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + windowState = &list->windowState; + subPtr = &list->sub; switch (state) { case 0: // Rewrite the name of the trainer whose check page was just being viewed. // This is done to erase the red background it had. - PrintMatchCallListTrainerName(windowState, subPtr0); + PrintMatchCallListTrainerName(windowState, subPtr); return LT_INC_AND_PAUSE; case 1: - ptr = &structPtr->eraseIndex; - if (++(*ptr) < structPtr->windowState.entriesOnscreen) + ptr = &list->eraseIndex; + if (++(*ptr) < list->windowState.entriesOnscreen) { - EraseListEntry(&subPtr0->listWindow, *ptr, 1); + EraseListEntry(&subPtr->listWindow, *ptr, 1); return LT_PAUSE; } @@ -617,7 +617,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex; r5 = -r4; - EraseListEntry(&subPtr0->listWindow, r5, r4); + EraseListEntry(&subPtr->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -629,7 +629,7 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) { s32 r4 = windowState->windowTopIndex + windowState->entriesOnscreen - windowState->listLength; r5 = -r4; - EraseListEntry(&subPtr0->listWindow, r5, r4); + EraseListEntry(&subPtr->listWindow, r5, r4); windowState->selectedIndexOffset = r4; *ptr = r5; return LT_INC_AND_PAUSE; @@ -637,55 +637,55 @@ static u32 LoopedTask_ReshowListFromCheckPage(s32 state) } return LT_SET_STATE(4); case 2: - MoveListWindow(structPtr->eraseIndex, FALSE); + MoveListWindow(list->eraseIndex, FALSE); return LT_INC_AND_PAUSE; case 3: if (!PokenavList_IsMoveWindowTaskActive()) { - structPtr->eraseIndex = 0; + list->eraseIndex = 0; return LT_INC_AND_CONTINUE; } return LT_PAUSE; case 4: - PrintListItems(windowState->listPtr, windowState->windowTopIndex + structPtr->eraseIndex, 1, windowState->listItemSize, structPtr->eraseIndex, &structPtr->list); + PrintListItems(windowState->listPtr, windowState->windowTopIndex + list->eraseIndex, 1, windowState->listItemSize, list->eraseIndex, &list->sub); return LT_INC_AND_PAUSE; case 5: if (IsPrintListItemsTaskActive()) return LT_PAUSE; - if (++structPtr->eraseIndex >= windowState->listLength || structPtr->eraseIndex >= windowState->entriesOnscreen) + if (++list->eraseIndex >= windowState->listLength || list->eraseIndex >= windowState->entriesOnscreen) return LT_INC_AND_CONTINUE; return LT_SET_STATE(4); case 6: - ToggleListArrows(subPtr0, 0); + ToggleListArrows(subPtr, 0); return LT_FINISH; } return LT_FINISH; } -static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 a1, s32 a2) +static void EraseListEntry(struct PokenavListMenuWindow *listWindow, s32 offset, s32 entries) { u8 *tileData = (u8*)GetWindowAttribute(listWindow->windowId, WINDOW_TILE_DATA); u32 width = listWindow->width * 64; - a1 = (listWindow->unkA + a1) & 0xF; - if (a1 + a2 <= 16) + offset = (listWindow->unkA + offset) & 0xF; + if (offset + entries <= 16) { - CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, a2 * width); + CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, entries * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } else { - u32 v3 = 16 - a1; - u32 v4 = a2 - v3; + u32 v3 = 16 - offset; + u32 v4 = entries - v3; - CpuFastFill8(PIXEL_FILL(1), tileData + a1 * width, v3 * width); + CpuFastFill8(PIXEL_FILL(1), tileData + offset * width, v3 * width); CpuFastFill8(PIXEL_FILL(1), tileData, v4 * width); CopyWindowToVram(listWindow->windowId, COPYWIN_GFX); } - for (a2--; a2 != -1; a1 = (a1 + 1) & 0xF, a2--) - ClearRematchPokeballIcon(listWindow->windowId, a1); + for (entries--; entries != -1; offset = (offset + 1) & 0xF, entries--) + ClearRematchPokeballIcon(listWindow->windowId, offset); CopyWindowToVram(listWindow->windowId, COPYWIN_MAP); } @@ -744,7 +744,7 @@ static void PrintMatchCallFieldNames(struct PokenavListSub *list, u32 fieldId) CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_GFX, 0, top << 1, list->listWindow.width, 2); } -static void PrintMatchCallFlavorText(struct PokenavListWindowState *a0, struct PokenavListSub *list, u32 checkPageEntry) +static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState, struct PokenavListSub *list, u32 checkPageEntry) { // lines 1, 3, and 5 are the field names printed by PrintMatchCallFieldNames static const u8 lineOffsets[CHECK_PAGE_ENTRY_COUNT] = { @@ -755,7 +755,7 @@ static void PrintMatchCallFlavorText(struct PokenavListWindowState *a0, struct P }; u32 r6 = (list->listWindow.unkA + lineOffsets[checkPageEntry]) & 0xF; - const u8 *str = GetMatchCallFlavorText(a0->windowTopIndex, checkPageEntry); + const u8 *str = GetMatchCallFlavorText(windowState->windowTopIndex, checkPageEntry); if (str != NULL) { @@ -894,8 +894,8 @@ static void ToggleListArrows(struct PokenavListSub *list, bool32 invisible) static void SpriteCB_RightArrow(struct Sprite *sprite) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - sprite->y2 = structPtr->windowState.selectedIndexOffset << 4; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + sprite->y2 = list->windowState.selectedIndexOffset << 4; } #define sTimer data[0] @@ -940,9 +940,9 @@ static void SpriteCB_UpArrow(struct Sprite *sprite) void PokenavList_ToggleVerticalArrows(bool32 invisible) { - struct PokenavList *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); - structPtr->list.upArrow->sInvisible = invisible; - structPtr->list.downArrow->sInvisible = invisible; + struct PokenavList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_LIST); + list->sub.upArrow->sInvisible = invisible; + list->sub.downArrow->sInvisible = invisible; } #undef sTimer diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index 318ed520d..7d668c67f 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -105,7 +105,7 @@ static const u8 sHelpBarTextColors[3] = TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY }; -static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] = +static const struct CompressedSpriteSheet sSpinningPokenavSpriteSheet[] = { { .data = sSpinningPokenav_Gfx, @@ -114,7 +114,7 @@ static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] = } }; -static const struct SpritePalette gSpinningNavgearPalettes[] = +static const struct SpritePalette sSpinningNavgearPalettes[] = { { .data = sSpinningPokenav_Pal, @@ -583,10 +583,10 @@ static void InitPokenavMainMenuResources(void) u8 spriteId; struct Pokenav_MainMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU); - for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++) - LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]); + for (i = 0; i < ARRAY_COUNT(sSpinningPokenavSpriteSheet); i++) + LoadCompressedSpriteSheet(&sSpinningPokenavSpriteSheet[i]); - Pokenav_AllocAndLoadPalettes(gSpinningNavgearPalettes); + Pokenav_AllocAndLoadPalettes(sSpinningNavgearPalettes); menu->palettes = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0)); spriteId = CreateSprite(&sSpinningPokenavSpriteTemplate, 220, 12, 0); menu->spinningPokenav = &gSprites[spriteId]; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 29dd62621..2e8cc40b5 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -324,7 +324,7 @@ static const match_call_text_data_t sWallyTextScripts[] = { { NULL, 0xFFFF, 0xFFFF } }; -const struct MatchCallLocationOverride sWallyLocationData[] = { +static const struct MatchCallLocationOverride sWallyLocationData[] = { { FLAG_HIDE_MAUVILLE_CITY_WALLY, MAPSEC_VERDANTURF_TOWN }, { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, MAPSEC_NONE }, { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, MAPSEC_VICTORY_ROAD }, diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c index 16ba48070..828bd525d 100755 --- a/src/pokenav_region_map.c +++ b/src/pokenav_region_map.c @@ -146,7 +146,7 @@ static const struct WindowTemplate sMapSecInfoWindowTemplate = #include "data/region_map/city_map_entries.h" -const struct OamData sCityZoomTextSprite_OamData = +static const struct OamData sCityZoomTextSprite_OamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, diff --git a/src/record_mixing.c b/src/record_mixing.c index 6efded838..4365f2cb3 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -285,7 +285,7 @@ static void ReceiveExchangePacket(u32 multiplayerId) static void PrintTextOnRecordMixing(const u8 *src) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, src, 0, 1, 0, NULL); CopyWindowToVram(0, COPYWIN_FULL); } diff --git a/src/recorded_battle.c b/src/recorded_battle.c index fd2b3a06b..951572636 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -67,6 +67,8 @@ struct RecordedBattleSave u32 checksum; }; +STATIC_ASSERT(sizeof(struct RecordedBattleSave) <= SECTOR_DATA_SIZE, RecordedBattleSaveFreeSpace); + EWRAM_DATA u32 gRecordedBattleRngSeed = 0; EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0; EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0}; diff --git a/src/region_map.c b/src/region_map.c index 09e2d69bf..a4db1cb04 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -64,7 +64,7 @@ struct MultiNameFlyDest // Static RAM declarations -static EWRAM_DATA struct RegionMap *gRegionMap = NULL; +static EWRAM_DATA struct RegionMap *sRegionMap = NULL; static EWRAM_DATA struct { void (*callback)(void); @@ -516,49 +516,49 @@ void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed) { - gRegionMap = regionMap; - gRegionMap->initStep = 0; - gRegionMap->zoomed = zoomed; - gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; + sRegionMap = regionMap; + sRegionMap->initStep = 0; + sRegionMap->zoomed = zoomed; + sRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full; if (template != NULL) { - gRegionMap->bgNum = template->bg; - gRegionMap->charBaseIdx = template->charBaseIndex; - gRegionMap->mapBaseIdx = template->mapBaseIndex; - gRegionMap->bgManaged = TRUE; + sRegionMap->bgNum = template->bg; + sRegionMap->charBaseIdx = template->charBaseIndex; + sRegionMap->mapBaseIdx = template->mapBaseIndex; + sRegionMap->bgManaged = TRUE; } else { - gRegionMap->bgNum = 2; - gRegionMap->charBaseIdx = 2; - gRegionMap->mapBaseIdx = 28; - gRegionMap->bgManaged = FALSE; + sRegionMap->bgNum = 2; + sRegionMap->charBaseIdx = 2; + sRegionMap->mapBaseIdx = 28; + sRegionMap->bgManaged = FALSE; } } void ShowRegionMapForPokedexAreaScreen(struct RegionMap *regionMap) { - gRegionMap = regionMap; + sRegionMap = regionMap; InitMapBasedOnPlayerLocation(); - gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; - gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; + sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; + sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; } bool8 LoadRegionMapGfx(void) { - switch (gRegionMap->initStep) + switch (sRegionMap->initStep) { case 0: - if (gRegionMap->bgManaged) - DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); + if (sRegionMap->bgManaged) + DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0); else LZ77UnCompVram(sRegionMapBg_GfxLZ, (u16 *)BG_CHAR_ADDR(2)); break; case 1: - if (gRegionMap->bgManaged) + if (sRegionMap->bgManaged) { if (!FreeTempTileDataBuffersIfPossible()) - DecompressAndCopyTileDataToVram(gRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); + DecompressAndCopyTileDataToVram(sRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1); } else { @@ -570,54 +570,54 @@ bool8 LoadRegionMapGfx(void) LoadPalette(sRegionMapBg_Pal, 0x70, 0x60); break; case 3: - LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage); + LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, sRegionMap->cursorSmallImage); break; case 4: - LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage); + LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, sRegionMap->cursorLargeImage); break; case 5: InitMapBasedOnPlayerLocation(); - gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX; - gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY; - gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId); - gRegionMap->mapSecType = GetMapsecType(gRegionMap->mapSecId); - GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); + sRegionMap->playerIconSpritePosX = sRegionMap->cursorPosX; + sRegionMap->playerIconSpritePosY = sRegionMap->cursorPosY; + sRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(sRegionMap->mapSecId); + sRegionMap->mapSecType = GetMapsecType(sRegionMap->mapSecId); + GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); break; case 6: - if (gRegionMap->zoomed == FALSE) + if (sRegionMap->zoomed == FALSE) { CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); } else { - gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34; - gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44; - gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; - gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; - CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + sRegionMap->scrollX = sRegionMap->cursorPosX * 8 - 0x34; + sRegionMap->scrollY = sRegionMap->cursorPosY * 8 - 0x44; + sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; + sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; + CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); } break; case 7: GetPositionOfCursorWithinMapSec(); UpdateRegionMapVideoRegs(); - gRegionMap->cursorSprite = NULL; - gRegionMap->playerIconSprite = NULL; - gRegionMap->cursorMovementFrameCounter = 0; - gRegionMap->blinkPlayerIcon = FALSE; - if (gRegionMap->bgManaged) + sRegionMap->cursorSprite = NULL; + sRegionMap->playerIconSprite = NULL; + sRegionMap->cursorMovementFrameCounter = 0; + sRegionMap->blinkPlayerIcon = FALSE; + if (sRegionMap->bgManaged) { - SetBgAttribute(gRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); - SetBgAttribute(gRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, gRegionMap->charBaseIdx); - SetBgAttribute(gRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, gRegionMap->mapBaseIdx); - SetBgAttribute(gRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); - SetBgAttribute(gRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); + SetBgAttribute(sRegionMap->bgNum, BG_ATTR_SCREENSIZE, 2); + SetBgAttribute(sRegionMap->bgNum, BG_ATTR_CHARBASEINDEX, sRegionMap->charBaseIdx); + SetBgAttribute(sRegionMap->bgNum, BG_ATTR_MAPBASEINDEX, sRegionMap->mapBaseIdx); + SetBgAttribute(sRegionMap->bgNum, BG_ATTR_WRAPAROUND, 1); + SetBgAttribute(sRegionMap->bgNum, BG_ATTR_PALETTEMODE, 1); } - gRegionMap->initStep++; + sRegionMap->initStep++; return FALSE; default: return FALSE; } - gRegionMap->initStep++; + sRegionMap->initStep++; return TRUE; } @@ -629,23 +629,23 @@ void BlendRegionMap(u16 color, u32 coeff) void FreeRegionMapIconResources(void) { - if (gRegionMap->cursorSprite != NULL) + if (sRegionMap->cursorSprite != NULL) { - DestroySprite(gRegionMap->cursorSprite); - FreeSpriteTilesByTag(gRegionMap->cursorTileTag); - FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + DestroySprite(sRegionMap->cursorSprite); + FreeSpriteTilesByTag(sRegionMap->cursorTileTag); + FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); } - if (gRegionMap->playerIconSprite != NULL) + if (sRegionMap->playerIconSprite != NULL) { - DestroySprite(gRegionMap->playerIconSprite); - FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); - FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); + DestroySprite(sRegionMap->playerIconSprite); + FreeSpriteTilesByTag(sRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(sRegionMap->playerIconPaletteTag); } } u8 DoRegionMapInputCallback(void) { - return gRegionMap->inputCallback(); + return sRegionMap->inputCallback(); } static u8 ProcessRegionMapInput_Full(void) @@ -653,26 +653,26 @@ static u8 ProcessRegionMapInput_Full(void) u8 input; input = MAP_INPUT_NONE; - gRegionMap->cursorDeltaX = 0; - gRegionMap->cursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) + sRegionMap->cursorDeltaX = 0; + sRegionMap->cursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && sRegionMap->cursorPosY > MAPCURSOR_Y_MIN) { - gRegionMap->cursorDeltaY = -1; + sRegionMap->cursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) + if (JOY_HELD(DPAD_DOWN) && sRegionMap->cursorPosY < MAPCURSOR_Y_MAX) { - gRegionMap->cursorDeltaY = +1; + sRegionMap->cursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) + if (JOY_HELD(DPAD_LEFT) && sRegionMap->cursorPosX > MAPCURSOR_X_MIN) { - gRegionMap->cursorDeltaX = -1; + sRegionMap->cursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) + if (JOY_HELD(DPAD_RIGHT) && sRegionMap->cursorPosX < MAPCURSOR_X_MAX) { - gRegionMap->cursorDeltaX = +1; + sRegionMap->cursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -685,8 +685,8 @@ static u8 ProcessRegionMapInput_Full(void) } if (input == MAP_INPUT_MOVE_START) { - gRegionMap->cursorMovementFrameCounter = 4; - gRegionMap->inputCallback = MoveRegionMapCursor_Full; + sRegionMap->cursorMovementFrameCounter = 4; + sRegionMap->inputCallback = MoveRegionMapCursor_Full; } return input; } @@ -695,35 +695,35 @@ static u8 MoveRegionMapCursor_Full(void) { u16 mapSecId; - if (gRegionMap->cursorMovementFrameCounter != 0) + if (sRegionMap->cursorMovementFrameCounter != 0) return MAP_INPUT_MOVE_CONT; - if (gRegionMap->cursorDeltaX > 0) + if (sRegionMap->cursorDeltaX > 0) { - gRegionMap->cursorPosX++; + sRegionMap->cursorPosX++; } - if (gRegionMap->cursorDeltaX < 0) + if (sRegionMap->cursorDeltaX < 0) { - gRegionMap->cursorPosX--; + sRegionMap->cursorPosX--; } - if (gRegionMap->cursorDeltaY > 0) + if (sRegionMap->cursorDeltaY > 0) { - gRegionMap->cursorPosY++; + sRegionMap->cursorPosY++; } - if (gRegionMap->cursorDeltaY < 0) + if (sRegionMap->cursorDeltaY < 0) { - gRegionMap->cursorPosY--; + sRegionMap->cursorPosY--; } - mapSecId = GetMapSecIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); - gRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != gRegionMap->mapSecId) + mapSecId = GetMapSecIdAt(sRegionMap->cursorPosX, sRegionMap->cursorPosY); + sRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != sRegionMap->mapSecId) { - gRegionMap->mapSecId = mapSecId; - GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); + sRegionMap->mapSecId = mapSecId; + GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); - gRegionMap->inputCallback = ProcessRegionMapInput_Full; + sRegionMap->inputCallback = ProcessRegionMapInput_Full; return MAP_INPUT_MOVE_END; } @@ -732,26 +732,26 @@ static u8 ProcessRegionMapInput_Zoomed(void) u8 input; input = MAP_INPUT_NONE; - gRegionMap->zoomedCursorDeltaX = 0; - gRegionMap->zoomedCursorDeltaY = 0; - if (JOY_HELD(DPAD_UP) && gRegionMap->scrollY > -0x34) + sRegionMap->zoomedCursorDeltaX = 0; + sRegionMap->zoomedCursorDeltaY = 0; + if (JOY_HELD(DPAD_UP) && sRegionMap->scrollY > -0x34) { - gRegionMap->zoomedCursorDeltaY = -1; + sRegionMap->zoomedCursorDeltaY = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_DOWN) && gRegionMap->scrollY < 0x3c) + if (JOY_HELD(DPAD_DOWN) && sRegionMap->scrollY < 0x3c) { - gRegionMap->zoomedCursorDeltaY = +1; + sRegionMap->zoomedCursorDeltaY = +1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_LEFT) && gRegionMap->scrollX > -0x2c) + if (JOY_HELD(DPAD_LEFT) && sRegionMap->scrollX > -0x2c) { - gRegionMap->zoomedCursorDeltaX = -1; + sRegionMap->zoomedCursorDeltaX = -1; input = MAP_INPUT_MOVE_START; } - if (JOY_HELD(DPAD_RIGHT) && gRegionMap->scrollX < 0xac) + if (JOY_HELD(DPAD_RIGHT) && sRegionMap->scrollX < 0xac) { - gRegionMap->zoomedCursorDeltaX = +1; + sRegionMap->zoomedCursorDeltaX = +1; input = MAP_INPUT_MOVE_START; } if (JOY_NEW(A_BUTTON)) @@ -764,8 +764,8 @@ static u8 ProcessRegionMapInput_Zoomed(void) } if (input == MAP_INPUT_MOVE_START) { - gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; - gRegionMap->zoomedCursorMovementFrameCounter = 0; + sRegionMap->inputCallback = MoveRegionMapCursor_Zoomed; + sRegionMap->zoomedCursorMovementFrameCounter = 0; } return input; } @@ -776,29 +776,29 @@ static u8 MoveRegionMapCursor_Zoomed(void) u16 y; u16 mapSecId; - gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY; - gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX; - RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY); - gRegionMap->zoomedCursorMovementFrameCounter++; - if (gRegionMap->zoomedCursorMovementFrameCounter == 8) + sRegionMap->scrollY += sRegionMap->zoomedCursorDeltaY; + sRegionMap->scrollX += sRegionMap->zoomedCursorDeltaX; + RegionMap_SetBG2XAndBG2Y(sRegionMap->scrollX, sRegionMap->scrollY); + sRegionMap->zoomedCursorMovementFrameCounter++; + if (sRegionMap->zoomedCursorMovementFrameCounter == 8) { - x = (gRegionMap->scrollX + 0x2c) / 8 + 1; - y = (gRegionMap->scrollY + 0x34) / 8 + 2; - if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY) + x = (sRegionMap->scrollX + 0x2c) / 8 + 1; + y = (sRegionMap->scrollY + 0x34) / 8 + 2; + if (x != sRegionMap->zoomedCursorPosX || y != sRegionMap->zoomedCursorPosY) { - gRegionMap->zoomedCursorPosX = x; - gRegionMap->zoomedCursorPosY = y; + sRegionMap->zoomedCursorPosX = x; + sRegionMap->zoomedCursorPosY = y; mapSecId = GetMapSecIdAt(x, y); - gRegionMap->mapSecType = GetMapsecType(mapSecId); - if (mapSecId != gRegionMap->mapSecId) + sRegionMap->mapSecType = GetMapsecType(mapSecId); + if (mapSecId != sRegionMap->mapSecId) { - gRegionMap->mapSecId = mapSecId; - GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH); + sRegionMap->mapSecId = mapSecId; + GetMapName(sRegionMap->mapSecName, sRegionMap->mapSecId, MAP_NAME_LENGTH); } GetPositionOfCursorWithinMapSec(); } - gRegionMap->zoomedCursorMovementFrameCounter = 0; - gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; + sRegionMap->zoomedCursorMovementFrameCounter = 0; + sRegionMap->inputCallback = ProcessRegionMapInput_Zoomed; return MAP_INPUT_MOVE_END; } return MAP_INPUT_MOVE_CONT; @@ -806,35 +806,35 @@ static u8 MoveRegionMapCursor_Zoomed(void) void SetRegionMapDataForZoom(void) { - if (gRegionMap->zoomed == FALSE) + if (sRegionMap->zoomed == FALSE) { - gRegionMap->scrollY = 0; - gRegionMap->scrollX = 0; - gRegionMap->unk_040 = 0; - gRegionMap->unk_03c = 0; - gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34; - gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44; - gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16; - gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16; - gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX; - gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY; - gRegionMap->unk_04c = 0x10000; - gRegionMap->unk_050 = -0x800; + sRegionMap->scrollY = 0; + sRegionMap->scrollX = 0; + sRegionMap->unk_040 = 0; + sRegionMap->unk_03c = 0; + sRegionMap->unk_060 = sRegionMap->cursorPosX * 8 - 0x34; + sRegionMap->unk_062 = sRegionMap->cursorPosY * 8 - 0x44; + sRegionMap->unk_044 = (sRegionMap->unk_060 << 8) / 16; + sRegionMap->unk_048 = (sRegionMap->unk_062 << 8) / 16; + sRegionMap->zoomedCursorPosX = sRegionMap->cursorPosX; + sRegionMap->zoomedCursorPosY = sRegionMap->cursorPosY; + sRegionMap->unk_04c = 0x10000; + sRegionMap->unk_050 = -0x800; } else { - gRegionMap->unk_03c = gRegionMap->scrollX * 0x100; - gRegionMap->unk_040 = gRegionMap->scrollY * 0x100; - gRegionMap->unk_060 = 0; - gRegionMap->unk_062 = 0; - gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16); - gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16); - gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX; - gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY; - gRegionMap->unk_04c = 0x8000; - gRegionMap->unk_050 = 0x800; + sRegionMap->unk_03c = sRegionMap->scrollX * 0x100; + sRegionMap->unk_040 = sRegionMap->scrollY * 0x100; + sRegionMap->unk_060 = 0; + sRegionMap->unk_062 = 0; + sRegionMap->unk_044 = -(sRegionMap->unk_03c / 16); + sRegionMap->unk_048 = -(sRegionMap->unk_040 / 16); + sRegionMap->cursorPosX = sRegionMap->zoomedCursorPosX; + sRegionMap->cursorPosY = sRegionMap->zoomedCursorPosY; + sRegionMap->unk_04c = 0x8000; + sRegionMap->unk_050 = 0x800; } - gRegionMap->unk_06e = 0; + sRegionMap->unk_06e = 0; FreeRegionMapCursorSprite(); HideRegionMapPlayerIcon(); } @@ -843,60 +843,60 @@ bool8 UpdateRegionMapZoom(void) { bool8 retVal; - if (gRegionMap->unk_06e >= 16) + if (sRegionMap->unk_06e >= 16) { return FALSE; } - gRegionMap->unk_06e++; - if (gRegionMap->unk_06e == 16) + sRegionMap->unk_06e++; + if (sRegionMap->unk_06e == 16) { - gRegionMap->unk_044 = 0; - gRegionMap->unk_048 = 0; - gRegionMap->scrollX = gRegionMap->unk_060; - gRegionMap->scrollY = gRegionMap->unk_062; - gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); - gRegionMap->zoomed = !gRegionMap->zoomed; - gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; - CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); + sRegionMap->unk_044 = 0; + sRegionMap->unk_048 = 0; + sRegionMap->scrollX = sRegionMap->unk_060; + sRegionMap->scrollY = sRegionMap->unk_062; + sRegionMap->unk_04c = (sRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + sRegionMap->zoomed = !sRegionMap->zoomed; + sRegionMap->inputCallback = (sRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed; + CreateRegionMapCursor(sRegionMap->cursorTileTag, sRegionMap->cursorPaletteTag); UnhideRegionMapPlayerIcon(); retVal = FALSE; } else { - gRegionMap->unk_03c += gRegionMap->unk_044; - gRegionMap->unk_040 += gRegionMap->unk_048; - gRegionMap->scrollX = gRegionMap->unk_03c >> 8; - gRegionMap->scrollY = gRegionMap->unk_040 >> 8; - gRegionMap->unk_04c += gRegionMap->unk_050; - if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060)) + sRegionMap->unk_03c += sRegionMap->unk_044; + sRegionMap->unk_040 += sRegionMap->unk_048; + sRegionMap->scrollX = sRegionMap->unk_03c >> 8; + sRegionMap->scrollY = sRegionMap->unk_040 >> 8; + sRegionMap->unk_04c += sRegionMap->unk_050; + if ((sRegionMap->unk_044 < 0 && sRegionMap->scrollX < sRegionMap->unk_060) || (sRegionMap->unk_044 > 0 && sRegionMap->scrollX > sRegionMap->unk_060)) { - gRegionMap->scrollX = gRegionMap->unk_060; - gRegionMap->unk_044 = 0; + sRegionMap->scrollX = sRegionMap->unk_060; + sRegionMap->unk_044 = 0; } - if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062)) + if ((sRegionMap->unk_048 < 0 && sRegionMap->scrollY < sRegionMap->unk_062) || (sRegionMap->unk_048 > 0 && sRegionMap->scrollY > sRegionMap->unk_062)) { - gRegionMap->scrollY = gRegionMap->unk_062; - gRegionMap->unk_048 = 0; + sRegionMap->scrollY = sRegionMap->unk_062; + sRegionMap->unk_048 = 0; } - if (gRegionMap->zoomed == FALSE) + if (sRegionMap->zoomed == FALSE) { - if (gRegionMap->unk_04c < (128 << 8)) + if (sRegionMap->unk_04c < (128 << 8)) { - gRegionMap->unk_04c = (128 << 8); - gRegionMap->unk_050 = 0; + sRegionMap->unk_04c = (128 << 8); + sRegionMap->unk_050 = 0; } } else { - if (gRegionMap->unk_04c > (256 << 8)) + if (sRegionMap->unk_04c > (256 << 8)) { - gRegionMap->unk_04c = (256 << 8); - gRegionMap->unk_050 = 0; + sRegionMap->unk_04c = (256 << 8); + sRegionMap->unk_050 = 0; } } retVal = TRUE; } - CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0); + CalcZoomScrollParams(sRegionMap->scrollX, sRegionMap->scrollY, 0x38, 0x48, sRegionMap->unk_04c >> 8, sRegionMap->unk_04c >> 8, 0); return retVal; } @@ -907,42 +907,42 @@ static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, s32 var3; s32 var4; - gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; - gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; - gRegionMap->bg2pb = f * gSineTable[rotation] >> 8; - gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; + sRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8; + sRegionMap->bg2pc = e * -gSineTable[rotation] >> 8; + sRegionMap->bg2pb = f * gSineTable[rotation] >> 8; + sRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8; var1 = (scrollX << 8) + (c << 8); - var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c; - gRegionMap->bg2x = var1 - var2; + var2 = d * sRegionMap->bg2pb + sRegionMap->bg2pa * c; + sRegionMap->bg2x = var1 - var2; var3 = (scrollY << 8) + (d << 8); - var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c; - gRegionMap->bg2y = var3 - var4; + var4 = sRegionMap->bg2pd * d + sRegionMap->bg2pc * c; + sRegionMap->bg2y = var3 - var4; - gRegionMap->needUpdateVideoRegs = TRUE; + sRegionMap->needUpdateVideoRegs = TRUE; } static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y) { - gRegionMap->bg2x = (x << 8) + 0x1c00; - gRegionMap->bg2y = (y << 8) + 0x2400; - gRegionMap->needUpdateVideoRegs = TRUE; + sRegionMap->bg2x = (x << 8) + 0x1c00; + sRegionMap->bg2y = (y << 8) + 0x2400; + sRegionMap->needUpdateVideoRegs = TRUE; } void UpdateRegionMapVideoRegs(void) { - if (gRegionMap->needUpdateVideoRegs) + if (sRegionMap->needUpdateVideoRegs) { - SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa); - SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb); - SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc); - SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd); - SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x); - SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16); - SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y); - SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16); - gRegionMap->needUpdateVideoRegs = FALSE; + SetGpuReg(REG_OFFSET_BG2PA, sRegionMap->bg2pa); + SetGpuReg(REG_OFFSET_BG2PB, sRegionMap->bg2pb); + SetGpuReg(REG_OFFSET_BG2PC, sRegionMap->bg2pc); + SetGpuReg(REG_OFFSET_BG2PD, sRegionMap->bg2pd); + SetGpuReg(REG_OFFSET_BG2X_L, sRegionMap->bg2x); + SetGpuReg(REG_OFFSET_BG2X_H, sRegionMap->bg2x >> 16); + SetGpuReg(REG_OFFSET_BG2Y_L, sRegionMap->bg2y); + SetGpuReg(REG_OFFSET_BG2Y_H, sRegionMap->bg2y >> 16); + sRegionMap->needUpdateVideoRegs = FALSE; } } @@ -950,10 +950,10 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y) { CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0); UpdateRegionMapVideoRegs(); - if (gRegionMap->playerIconSprite != NULL) + if (sRegionMap->playerIconSprite != NULL) { - gRegionMap->playerIconSprite->x2 = -x; - gRegionMap->playerIconSprite->y2 = -y; + sRegionMap->playerIconSprite->x2 = -x; + sRegionMap->playerIconSprite->y2 = -y; } } @@ -996,22 +996,22 @@ static void InitMapBasedOnPlayerLocation(void) case MAP_TYPE_ROUTE: case MAP_TYPE_UNDERWATER: case MAP_TYPE_OCEAN_ROUTE: - gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - gRegionMap->playerIsInCave = FALSE; + sRegionMap->mapSecId = gMapHeader.regionMapSectionId; + sRegionMap->playerIsInCave = FALSE; mapWidth = gMapHeader.mapLayout->width; mapHeight = gMapHeader.mapLayout->height; x = gSaveBlock1Ptr->pos.x; y = gSaveBlock1Ptr->pos.y; - if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) - gRegionMap->playerIsInCave = TRUE; + if (sRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || sRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE) + sRegionMap->playerIsInCave = TRUE; break; case MAP_TYPE_UNDERGROUND: case MAP_TYPE_UNKNOWN: if (gMapHeader.allowEscaping) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; - gRegionMap->playerIsInCave = TRUE; + sRegionMap->mapSecId = mapHeader->regionMapSectionId; + sRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->escapeWarp.x; @@ -1019,8 +1019,8 @@ static void InitMapBasedOnPlayerLocation(void) } else { - gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - gRegionMap->playerIsInCave = TRUE; + sRegionMap->mapSecId = gMapHeader.regionMapSectionId; + sRegionMap->playerIsInCave = TRUE; mapWidth = 1; mapHeight = 1; x = 1; @@ -1029,16 +1029,16 @@ static void InitMapBasedOnPlayerLocation(void) break; case MAP_TYPE_SECRET_BASE: mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; - gRegionMap->playerIsInCave = TRUE; + sRegionMap->mapSecId = mapHeader->regionMapSectionId; + sRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; x = gSaveBlock1Ptr->dynamicWarp.x; y = gSaveBlock1Ptr->dynamicWarp.y; break; case MAP_TYPE_INDOOR: - gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (gRegionMap->mapSecId != MAPSEC_DYNAMIC) + sRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (sRegionMap->mapSecId != MAPSEC_DYNAMIC) { warp = &gSaveBlock1Ptr->escapeWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); @@ -1047,13 +1047,13 @@ static void InitMapBasedOnPlayerLocation(void) { warp = &gSaveBlock1Ptr->dynamicWarp; mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; + sRegionMap->mapSecId = mapHeader->regionMapSectionId; } - if (IsPlayerInAquaHideout(gRegionMap->mapSecId)) - gRegionMap->playerIsInCave = TRUE; + if (IsPlayerInAquaHideout(sRegionMap->mapSecId)) + sRegionMap->playerIsInCave = TRUE; else - gRegionMap->playerIsInCave = FALSE; + sRegionMap->playerIsInCave = FALSE; mapWidth = mapHeader->mapLayout->width; mapHeight = mapHeader->mapLayout->height; @@ -1064,29 +1064,29 @@ static void InitMapBasedOnPlayerLocation(void) xOnMap = x; - dimensionScale = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width; + dimensionScale = mapWidth / gRegionMapEntries[sRegionMap->mapSecId].width; if (dimensionScale == 0) { dimensionScale = 1; } x /= dimensionScale; - if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) + if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) { - x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; + x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; } - dimensionScale = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height; + dimensionScale = mapHeight / gRegionMapEntries[sRegionMap->mapSecId].height; if (dimensionScale == 0) { dimensionScale = 1; } y /= dimensionScale; - if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) + if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) { - y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; + y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; } - switch (gRegionMap->mapSecId) + switch (sRegionMap->mapSecId) { case MAPSEC_ROUTE_114: if (y != 0) @@ -1116,11 +1116,11 @@ static void InitMapBasedOnPlayerLocation(void) x++; break; case MAPSEC_UNDERWATER_MARINE_CAVE: - GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY); + GetMarineCaveCoords(&sRegionMap->cursorPosX, &sRegionMap->cursorPosY); return; } - gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) @@ -1139,40 +1139,40 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap)) { case SS_TIDAL_LOCATION_SLATEPORT: - gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + sRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; break; case SS_TIDAL_LOCATION_LILYCOVE: - gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + sRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; break; case SS_TIDAL_LOCATION_ROUTE124: - gRegionMap->mapSecId = MAPSEC_ROUTE_124; + sRegionMap->mapSecId = MAPSEC_ROUTE_124; break; case SS_TIDAL_LOCATION_ROUTE131: - gRegionMap->mapSecId = MAPSEC_ROUTE_131; + sRegionMap->mapSecId = MAPSEC_ROUTE_131; break; default: case SS_TIDAL_LOCATION_CURRENTS: mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; - dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width; + sRegionMap->mapSecId = mapHeader->regionMapSectionId; + dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[sRegionMap->mapSecId].width; if (dimensionScale == 0) dimensionScale = 1; x = xOnMap / dimensionScale; - if (x >= gRegionMapEntries[gRegionMap->mapSecId].width) - x = gRegionMapEntries[gRegionMap->mapSecId].width - 1; + if (x >= gRegionMapEntries[sRegionMap->mapSecId].width) + x = gRegionMapEntries[sRegionMap->mapSecId].width - 1; - dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height; + dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[sRegionMap->mapSecId].height; if (dimensionScale == 0) dimensionScale = 1; y = yOnMap / dimensionScale; - if (y >= gRegionMapEntries[gRegionMap->mapSecId].height) - y = gRegionMapEntries[gRegionMap->mapSecId].height - 1; + if (y >= gRegionMapEntries[sRegionMap->mapSecId].height) + y = gRegionMapEntries[sRegionMap->mapSecId].height - 1; break; } - gRegionMap->playerIsInCave = FALSE; - gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + sRegionMap->playerIsInCave = FALSE; + sRegionMap->cursorPosX = gRegionMapEntries[sRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + sRegionMap->cursorPosY = gRegionMapEntries[sRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; } static u8 GetMapsecType(u16 mapSecId) @@ -1300,20 +1300,20 @@ static void GetPositionOfCursorWithinMapSec(void) u16 y; u16 posWithinMapSec; - if (gRegionMap->mapSecId == MAPSEC_NONE) + if (sRegionMap->mapSecId == MAPSEC_NONE) { - gRegionMap->posWithinMapSec = 0; + sRegionMap->posWithinMapSec = 0; return; } - if (!gRegionMap->zoomed) + if (!sRegionMap->zoomed) { - x = gRegionMap->cursorPosX; - y = gRegionMap->cursorPosY; + x = sRegionMap->cursorPosX; + y = sRegionMap->cursorPosY; } else { - x = gRegionMap->zoomedCursorPosX; - y = gRegionMap->zoomedCursorPosY; + x = sRegionMap->zoomedCursorPosX; + y = sRegionMap->zoomedCursorPosY; } posWithinMapSec = 0; while (1) @@ -1333,13 +1333,13 @@ static void GetPositionOfCursorWithinMapSec(void) else { x--; - if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) { posWithinMapSec++; } } } - gRegionMap->posWithinMapSec = posWithinMapSec; + sRegionMap->posWithinMapSec = posWithinMapSec; } static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) @@ -1352,7 +1352,7 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) } for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) { - if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId) + if (GetMapSecIdAt(x, y) == sRegionMap->mapSecId) { return TRUE; } @@ -1362,11 +1362,11 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y) static void SpriteCB_CursorMapFull(struct Sprite *sprite) { - if (gRegionMap->cursorMovementFrameCounter != 0) + if (sRegionMap->cursorMovementFrameCounter != 0) { - sprite->x += 2 * gRegionMap->cursorDeltaX; - sprite->y += 2 * gRegionMap->cursorDeltaY; - gRegionMap->cursorMovementFrameCounter--; + sprite->x += 2 * sRegionMap->cursorDeltaX; + sprite->y += 2 * sRegionMap->cursorDeltaY; + sRegionMap->cursorMovementFrameCounter--; } } @@ -1386,20 +1386,20 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) template = sRegionMapCursorSpriteTemplate; sheet.tag = tileTag; template.tileTag = tileTag; - gRegionMap->cursorTileTag = tileTag; + sRegionMap->cursorTileTag = tileTag; palette.tag = paletteTag; template.paletteTag = paletteTag; - gRegionMap->cursorPaletteTag = paletteTag; - if (!gRegionMap->zoomed) + sRegionMap->cursorPaletteTag = paletteTag; + if (!sRegionMap->zoomed) { - sheet.data = gRegionMap->cursorSmallImage; - sheet.size = sizeof(gRegionMap->cursorSmallImage); + sheet.data = sRegionMap->cursorSmallImage; + sheet.size = sizeof(sRegionMap->cursorSmallImage); template.callback = SpriteCB_CursorMapFull; } else { - sheet.data = gRegionMap->cursorLargeImage; - sheet.size = sizeof(gRegionMap->cursorLargeImage); + sheet.data = sRegionMap->cursorLargeImage; + sheet.size = sizeof(sRegionMap->cursorLargeImage); template.callback = SpriteCB_CursorMapZoomed; } LoadSpriteSheet(&sheet); @@ -1407,46 +1407,46 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) spriteId = CreateSprite(&template, 0x38, 0x48, 0); if (spriteId != MAX_SPRITES) { - gRegionMap->cursorSprite = &gSprites[spriteId]; - if (gRegionMap->zoomed == TRUE) + sRegionMap->cursorSprite = &gSprites[spriteId]; + if (sRegionMap->zoomed == TRUE) { - gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); - gRegionMap->cursorSprite->x -= 8; - gRegionMap->cursorSprite->y -= 8; - StartSpriteAnim(gRegionMap->cursorSprite, 1); + sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32); + sRegionMap->cursorSprite->x -= 8; + sRegionMap->cursorSprite->y -= 8; + StartSpriteAnim(sRegionMap->cursorSprite, 1); } else { - gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); - gRegionMap->cursorSprite->x = 8 * gRegionMap->cursorPosX + 4; - gRegionMap->cursorSprite->y = 8 * gRegionMap->cursorPosY + 4; + sRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16); + sRegionMap->cursorSprite->x = 8 * sRegionMap->cursorPosX + 4; + sRegionMap->cursorSprite->y = 8 * sRegionMap->cursorPosY + 4; } - gRegionMap->cursorSprite->data[1] = 2; - gRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; - gRegionMap->cursorSprite->data[3] = TRUE; + sRegionMap->cursorSprite->data[1] = 2; + sRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101; + sRegionMap->cursorSprite->data[3] = TRUE; } } static void FreeRegionMapCursorSprite(void) { - if (gRegionMap->cursorSprite != NULL) + if (sRegionMap->cursorSprite != NULL) { - DestroySprite(gRegionMap->cursorSprite); - FreeSpriteTilesByTag(gRegionMap->cursorTileTag); - FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + DestroySprite(sRegionMap->cursorSprite); + FreeSpriteTilesByTag(sRegionMap->cursorTileTag); + FreeSpritePaletteByTag(sRegionMap->cursorPaletteTag); } } // Unused static void SetUnkCursorSpriteData(void) { - gRegionMap->cursorSprite->data[3] = TRUE; + sRegionMap->cursorSprite->data[3] = TRUE; } // Unused static void ClearUnkCursorSpriteData(void) { - gRegionMap->cursorSprite->data[3] = FALSE; + sRegionMap->cursorSprite->data[3] = FALSE; } void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) @@ -1458,7 +1458,7 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) if (IsEventIslandMapSecId(gMapHeader.regionMapSectionId)) { - gRegionMap->playerIconSprite = NULL; + sRegionMap->playerIconSprite = NULL; return; } if (gSaveBlock2Ptr->playerGender == FEMALE) @@ -1469,49 +1469,49 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) LoadSpriteSheet(&sheet); LoadSpritePalette(&palette); spriteId = CreateSprite(&template, 0, 0, 1); - gRegionMap->playerIconSprite = &gSprites[spriteId]; - if (!gRegionMap->zoomed) + sRegionMap->playerIconSprite = &gSprites[spriteId]; + if (!sRegionMap->zoomed) { - gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; - gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; - gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; + sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; + sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; } else { - gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; - gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; - gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; + sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; + sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; } } static void HideRegionMapPlayerIcon(void) { - if (gRegionMap->playerIconSprite != NULL) + if (sRegionMap->playerIconSprite != NULL) { - gRegionMap->playerIconSprite->invisible = TRUE; - gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + sRegionMap->playerIconSprite->invisible = TRUE; + sRegionMap->playerIconSprite->callback = SpriteCallbackDummy; } } static void UnhideRegionMapPlayerIcon(void) { - if (gRegionMap->playerIconSprite != NULL) + if (sRegionMap->playerIconSprite != NULL) { - if (gRegionMap->zoomed == TRUE) + if (sRegionMap->zoomed == TRUE) { - gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30; - gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42; - gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; - gRegionMap->playerIconSprite->invisible = FALSE; + sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 16 - 0x30; + sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 16 - 0x42; + sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed; + sRegionMap->playerIconSprite->invisible = FALSE; } else { - gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4; - gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4; - gRegionMap->playerIconSprite->x2 = 0; - gRegionMap->playerIconSprite->y2 = 0; - gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; - gRegionMap->playerIconSprite->invisible = FALSE; + sRegionMap->playerIconSprite->x = sRegionMap->playerIconSpritePosX * 8 + 4; + sRegionMap->playerIconSprite->y = sRegionMap->playerIconSpritePosY * 8 + 4; + sRegionMap->playerIconSprite->x2 = 0; + sRegionMap->playerIconSprite->y2 = 0; + sRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull; + sRegionMap->playerIconSprite->invisible = FALSE; } } } @@ -1523,8 +1523,8 @@ static void UnhideRegionMapPlayerIcon(void) static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite) { - sprite->x2 = -2 * gRegionMap->scrollX; - sprite->y2 = -2 * gRegionMap->scrollY; + sprite->x2 = -2 * sRegionMap->scrollX; + sprite->y2 = -2 * sRegionMap->scrollY; sprite->sY = sprite->y + sprite->y2 + sprite->centerToCornerVecY; sprite->sX = sprite->x + sprite->x2 + sprite->centerToCornerVecX; if (sprite->sY < -8 || sprite->sY > DISPLAY_HEIGHT + 8 || sprite->sX < -8 || sprite->sX > DISPLAY_WIDTH + 8) @@ -1545,7 +1545,7 @@ static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite) static void SpriteCB_PlayerIcon(struct Sprite *sprite) { - if (gRegionMap->blinkPlayerIcon) + if (sRegionMap->blinkPlayerIcon) { if (++sprite->sTimer > 16) { @@ -1561,8 +1561,8 @@ static void SpriteCB_PlayerIcon(struct Sprite *sprite) void TrySetPlayerIconBlink(void) { - if (gRegionMap->playerIsInCave) - gRegionMap->blinkPlayerIcon = TRUE; + if (sRegionMap->playerIsInCave) + sRegionMap->blinkPlayerIcon = TRUE; } #undef sY @@ -1634,7 +1634,7 @@ static void GetMapSecDimensions(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *h bool8 IsRegionMapZoomed(void) { - return gRegionMap->zoomed; + return sRegionMap->zoomed; } bool32 IsEventIslandMapSecId(u8 mapSecId) @@ -2024,11 +2024,7 @@ static void CB_ExitFlyMap(void) { SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap); } - if (sFlyMap != NULL) - { - free(sFlyMap); - sFlyMap = NULL; - } + TRY_FREE_AND_SET_NULL(sFlyMap); FreeAllWindowBuffers(); } break; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 782a05c75..b854c899e 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -30,10 +30,10 @@ struct GFRomHeader u32 pokedexFlag; u32 mysteryEventFlag; u32 pokedexCount; - u8 unk1; + u8 playerNameLength; u8 unk2; - u8 unk3; - u8 unk4; + u8 pokemonNameLength1; + u8 pokemonNameLength2; u8 unk5; u8 unk6; u8 unk7; @@ -79,8 +79,8 @@ struct GFRomHeader u32 pcItemsOffset; u32 giftRibbonsOffset; u32 enigmaBerryOffset; - u32 mapViewOffset; - u32 unk19; + u32 enigmaBerrySize; + const u8 * moveDescriptions; u32 unk20; }; @@ -110,23 +110,24 @@ static const struct GFRomHeader sGFRomHeader = { .pokedexFlag = FLAG_RECEIVED_POKEDEX_FROM_BIRCH, .mysteryEventFlag = FLAG_SYS_MYSTERY_EVENT_ENABLE, .pokedexCount = NATIONAL_DEX_COUNT, - .unk1 = 0x07, - .unk2 = 0x0a, - .unk3 = 0x0a, - .unk4 = 0x0a, - .unk5 = 0x0c, - .unk6 = 0x0c, - .unk7 = 0x06, - .unk8 = 0x0c, - .unk9 = 0x06, - .unk10 = 0x10, - .unk11 = 0x12, - .unk12 = 0x0c, - .unk13 = 0x0f, - .unk14 = 0x0b, - .unk15 = 0x01, - .unk16 = 0x08, - .unk17 = 0x0c, + .playerNameLength = PLAYER_NAME_LENGTH, + .unk2 = 10, + .pokemonNameLength1 = POKEMON_NAME_LENGTH, + .pokemonNameLength2 = POKEMON_NAME_LENGTH, + // Two of the below 12s are likely move/ability name length, given their presence in this header + .unk5 = 12, + .unk6 = 12, + .unk7 = 6, + .unk8 = 12, + .unk9 = 6, + .unk10 = 16, + .unk11 = 18, + .unk12 = 12, + .unk13 = 15, + .unk14 = 11, + .unk15 = 1, + .unk16 = 8, + .unk17 = 12, .saveBlock2Size = sizeof(struct SaveBlock2), .saveBlock1Size = sizeof(struct SaveBlock1), .partyCountOffset = offsetof(struct SaveBlock1, playerPartyCount), @@ -159,7 +160,7 @@ static const struct GFRomHeader sGFRomHeader = { .pcItemsOffset = offsetof(struct SaveBlock1, pcItems), .giftRibbonsOffset = offsetof(struct SaveBlock1, giftRibbons), .enigmaBerryOffset = offsetof(struct SaveBlock1, enigmaBerry), - .mapViewOffset = offsetof(struct SaveBlock1, mapView), - .unk19 = 0x00000000, + .enigmaBerrySize = sizeof(struct EnigmaBerry), + .moveDescriptions = NULL, .unk20 = 0x00000000, // 0xFFFFFFFF in FRLG }; diff --git a/src/rotating_gate.c b/src/rotating_gate.c index f839d22c3..e2fd575a1 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -612,12 +612,10 @@ static const u8 sRotatingGate_ArmLayout[][4 * 2] = }, }; -// ewram -static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; -static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL; -static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; +static EWRAM_DATA u8 sRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; +static EWRAM_DATA const struct RotatingGatePuzzle *sRotatingGate_PuzzleConfig = NULL; +static EWRAM_DATA u8 sRotatingGate_PuzzleCount = 0; -// text static s32 GetCurrentMapRotatingGatePuzzleType(void) { if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FORTREE_CITY_GYM) && @@ -640,9 +638,9 @@ static void RotatingGate_ResetAllGateOrientations(void) s32 i; u8 *ptr = (u8 *)GetVarPointer(VAR_TEMP_0); - for (i = 0; i < gRotatingGate_PuzzleCount; i++) + for (i = 0; i < sRotatingGate_PuzzleCount; i++) { - ptr[i] = gRotatingGate_PuzzleConfig[i].orientation; + ptr[i] = sRotatingGate_PuzzleConfig[i].orientation; } } @@ -683,12 +681,12 @@ static void RotatingGate_LoadPuzzleConfig(void) switch (puzzleType) { case PUZZLE_FORTREE_CITY_GYM: - gRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; - gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); + sRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; + sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_FortreePuzzleConfig); break; case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: - gRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; - gRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); + sRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; + sRotatingGate_PuzzleCount = ARRAY_COUNT(sRotatingGate_TrickHousePuzzleConfig); break; case PUZZLE_NONE: default: @@ -696,7 +694,7 @@ static void RotatingGate_LoadPuzzleConfig(void) } for (i = 0; i < ROTATING_GATE_PUZZLE_MAX - 1; i++) - gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) @@ -710,15 +708,15 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < gRotatingGate_PuzzleCount; i++) + for (i = 0; i < sRotatingGate_PuzzleCount; i++) { - s16 x3 = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 y3 = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 x3 = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 y3 = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && - gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) { - gRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); + sRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); } } } @@ -730,7 +728,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) u8 spriteId; s16 x, y; - const struct RotatingGatePuzzle *gate = &gRotatingGate_PuzzleConfig[gateId]; + const struct RotatingGatePuzzle *gate = &sRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) template = sSpriteTemplate_RotatingGateRegular; @@ -827,20 +825,20 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) s16 y = gSaveBlock1Ptr->pos.y - 2; s16 y2 = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H; - for (i = 0; i < gRotatingGate_PuzzleCount; i++) + for (i = 0; i < sRotatingGate_PuzzleCount; i++) { - s16 xGate = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 yGate = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 xGate = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 yGate = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; - if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) + if (sRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; if (xGate < x || xGate > x2 || yGate < y || yGate > y2) { - struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[i]]; + struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[i]]; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); - gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; + sRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } } } @@ -862,9 +860,9 @@ static s32 RotatingGate_CanRotate(u8 gateId, s32 rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); - shape = gRotatingGate_PuzzleConfig[gateId].shape; - x = gRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; - y = gRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; + shape = sRotatingGate_PuzzleConfig[gateId].shape; + x = sRotatingGate_PuzzleConfig[gateId].x + MAP_OFFSET; + y = sRotatingGate_PuzzleConfig[gateId].y + MAP_OFFSET; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -891,15 +889,15 @@ static s32 RotatingGate_HasArm(u8 gateId, u8 armInfo) s32 isLongArm = armInfo % 2; s8 armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; - s32 shape = gRotatingGate_PuzzleConfig[gateId].shape; + s32 shape = sRotatingGate_PuzzleConfig[gateId].shape; return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm]; } static void RotatingGate_TriggerRotationAnimation(u8 gateId, s32 rotationDirection) { - if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) + if (sRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) { - struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]]; + struct Sprite *sprite = &gSprites[sRotatingGate_GateSpriteIds[gateId]]; sprite->data[1] = rotationDirection; sprite->data[2] = RotatingGate_GetGateOrientation(gateId); } @@ -957,10 +955,10 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < gRotatingGate_PuzzleCount; i++) + for (i = 0; i < sRotatingGate_PuzzleCount; i++) { - s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { @@ -995,10 +993,10 @@ bool8 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8 direction, s16 x, s if (!GetCurrentMapRotatingGatePuzzleType()) return FALSE; - for (i = 0; i < gRotatingGate_PuzzleCount; i++) + for (i = 0; i < sRotatingGate_PuzzleCount; i++) { - s16 gateX = gRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; - s16 gateY = gRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; + s16 gateX = sRotatingGate_PuzzleConfig[i].x + MAP_OFFSET; + s16 gateY = sRotatingGate_PuzzleConfig[i].y + MAP_OFFSET; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { diff --git a/src/rotating_tile_puzzle.c b/src/rotating_tile_puzzle.c index 2e919f550..4581f6e5b 100644 --- a/src/rotating_tile_puzzle.c +++ b/src/rotating_tile_puzzle.c @@ -81,14 +81,11 @@ static const u8 sMovement_FaceUp[] = MOVEMENT_ACTION_STEP_END }; -// This file's functions. -static void SaveRotatingTileObject(u8 eventTemplateId, u8 arg1); -static void TurnUnsavedRotatingTileObject(u8 eventTemplateId, u8 arg1); +static void SaveRotatingTileObject(u8, u8); +static void TurnUnsavedRotatingTileObject(u8, u8); -// EWRAM vars EWRAM_DATA static struct RotatingTilePuzzle *sRotatingTilePuzzle = NULL; -// code void InitRotatingTilePuzzle(bool8 isTrickHouse) { if (sRotatingTilePuzzle == NULL) @@ -101,8 +98,7 @@ void FreeRotatingTilePuzzle(void) { u8 id; - if (sRotatingTilePuzzle != NULL) - FREE_AND_SET_NULL(sRotatingTilePuzzle); + TRY_FREE_AND_SET_NULL(sRotatingTilePuzzle); id = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); ObjectEventClearHeldMovementIfFinished(&gObjectEvents[id]); diff --git a/src/save.c b/src/save.c index dafc20868..52cdaa5dd 100644 --- a/src/save.c +++ b/src/save.c @@ -73,6 +73,12 @@ struct SAVEBLOCK_CHUNK(struct PokemonStorage, 8), // SECTOR_ID_PKMN_STORAGE_END }; +// These will produce an error if a save struct is larger than the space +// alloted for it in the flash. +STATIC_ASSERT(sizeof(struct SaveBlock2) <= SECTOR_DATA_SIZE, SaveBlock2FreeSpace); +STATIC_ASSERT(sizeof(struct SaveBlock1) <= SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1), SaveBlock1FreeSpace); +STATIC_ASSERT(sizeof(struct PokemonStorage) <= SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1), PokemonStorageFreeSpace); + u16 gLastWrittenSector; u32 gLastSaveCounter; u16 gLastKnownGoodSector; diff --git a/src/script_movement.c b/src/script_movement.c index 92f36e92d..10517dfc8 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -6,7 +6,6 @@ #include "constants/event_objects.h" #include "constants/event_object_movement.h" -// static functions static void ScriptMovement_StartMoveObjects(u8 priority); static u8 GetMoveObjectsTaskId(void); static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 objEventId, const u8 *movementScript); @@ -17,10 +16,8 @@ static void ScriptMovement_UnfreezeActiveObjects(u8 taskId); static void ScriptMovement_MoveObjects(u8 taskId); static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript); -// EWRAM_DATA -static EWRAM_DATA const u8 *gMovementScripts[OBJECT_EVENTS_COUNT] = {0}; +static EWRAM_DATA const u8 *sMovementScripts[OBJECT_EVENTS_COUNT] = {0}; -// text bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript) { u8 objEventId; @@ -167,12 +164,12 @@ static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId) static void SetMovementScript(u8 moveScrId, const u8 *movementScript) { - gMovementScripts[moveScrId] = movementScript; + sMovementScripts[moveScrId] = movementScript; } static const u8 *GetMovementScript(u8 moveScrId) { - return gMovementScripts[moveScrId]; + return sMovementScripts[moveScrId]; } static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 objEventId, const u8 *movementScript) diff --git a/src/siirtc.c b/src/siirtc.c index 5f4fc0a23..0e598f717 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -4,6 +4,7 @@ #include "gba/gba.h" #include "siirtc.h" +#include "config.h" #define STATUS_INTFE 0x02 // frequency interrupt enable #define STATUS_INTME 0x08 // per-minute interrupt enable diff --git a/src/slot_machine.c b/src/slot_machine.c index 1dfa026e5..cb6a380d6 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1390,7 +1390,7 @@ static bool8 SlotTask_HandleBetInput(struct Task *task) // SLOTTASK_MSG_NEED_3_COINS static bool8 SlotTask_PrintMsg_Need3Coins(struct Task *task) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouDontHaveThreeCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NEED_3_COINS; @@ -1655,7 +1655,7 @@ static bool8 SlotTask_NoMatches(struct Task *task) // SLOTTASK_ASK_QUIT static bool8 SlotTask_AskQuit(struct Task *task) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, gText_QuitTheGame, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF); @@ -1687,7 +1687,7 @@ static bool8 SlotTask_HandleQuitInput(struct Task *task) // SLOTTASK_MSG_MAX_COINS static bool8 SlotTask_PrintMsg_MaxCoins(struct Task *task) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveGot9999Coins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_MAX_COINS; @@ -1708,7 +1708,7 @@ static bool8 SlotTask_WaitMsg_MaxCoins(struct Task *task) // SLOTTASK_MSG_NO_MORE_COINS static bool8 SlotTask_PrintMsg_NoMoreCoins(struct Task *task) { - DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, FALSE); AddTextPrinterParameterized(0, FONT_NORMAL, gText_YouveRunOutOfCoins, 0, 1, 0, 0); CopyWindowToVram(0, COPYWIN_FULL); sSlotMachine->state = SLOTTASK_WAIT_MSG_NO_MORE_COINS; @@ -1756,14 +1756,10 @@ static bool8 SlotTask_FreeDataStructures(struct Task *task) FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Number); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Pokeball); FREE_AND_SET_NULL(sImageTable_DigitalDisplay_DPad); - if (sImageTable_ReelTimePikachu != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); - if (sImageTable_ReelTimeMachineAntennae != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - if (sImageTable_ReelTimeMachine != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); - if (sImageTable_BrokenReelTimeMachine != NULL) - FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); FREE_AND_SET_NULL(sMenuGfx); FREE_AND_SET_NULL(sSelectedPikaPowerTile); FREE_AND_SET_NULL(sReelOverlay_Tilemap); @@ -3865,21 +3861,15 @@ static void ReelTime_EndFailure(struct Task *task) static void LoadReelTimeWindowTilemap(s16 a0, s16 a1) { s16 i; - for (i = 4; i < 15; i++) - { LoadBgTilemap(1, &sReelTimeWindow_Tilemap[a1 + (i - 4) * 20], 2, 32 * i + a0); - } } static void ClearReelTimeWindowTilemap(s16 a0) { u8 i; - for (i = 4; i < 15; i++) - { LoadBgTilemap(1, sEmptyTilemap, 2, 32 * i + a0); - } } #undef tState @@ -4116,32 +4106,44 @@ static void CreateCreditPayoutNumberSprites(void) CreateCoinNumberSprite(x, 23, TRUE, i); } -static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 a3) +#define sIsPayout data[0] +#define sDigitMin data[1] +#define sDigitMax data[2] +#define sCurNum data[3] // Only used to determine whether the sprite has already been updated to show the correct digit + +static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 digitMult) { struct Sprite *sprite = &gSprites[CreateSprite(&sSpriteTemplate_CoinNumber, x, y, 13)]; sprite->oam.priority = 2; - sprite->data[0] = isPayout; - sprite->data[1] = a3; - sprite->data[2] = a3 * 10; - sprite->data[3] = -1; + sprite->sIsPayout = isPayout; + sprite->sDigitMin = digitMult; + sprite->sDigitMax = digitMult * 10; + sprite->sCurNum = -1; } static void SpriteCB_CoinNumber(struct Sprite *sprite) { u16 tag = sSlotMachine->coins; - if (sprite->data[0]) + if (sprite->sIsPayout) tag = sSlotMachine->payout; - if (sprite->data[3] != tag) + if (sprite->sCurNum != tag) { - sprite->data[3] = tag; - tag %= (u16)sprite->data[2]; - tag /= (u16)sprite->data[1]; - tag += 7; + // Convert total to current digit + sprite->sCurNum = tag; + tag %= (u16)sprite->sDigitMax; + tag /= (u16)sprite->sDigitMin; + + tag += GFXTAG_NUM_0; sprite->sheetTileStart = GetSpriteTileStartByTag(tag); SetSpriteSheetFrameTileNum(sprite); } } +#undef sIsPayout +#undef sDigitMin +#undef sDigitMax +#undef sCurNum + static void CreateReelBackgroundSprite(void) { u8 spriteId = CreateSprite(&sSpriteTemplate_ReelBackground, 88, 72, 15); @@ -4178,8 +4180,7 @@ static void CreateReelTimePikachuSprite(void) static void DestroyReelTimePikachuSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimePikachuSpriteId]); - if (sImageTable_ReelTimePikachu != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimePikachu); } static void SpriteCB_ReelTimePikachu(struct Sprite *sprite) @@ -4308,10 +4309,8 @@ static void DestroyReelTimeMachineSprites(void) for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeMachineSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeMachineSpriteIds[i]]); - if (sImageTable_ReelTimeMachineAntennae != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); - if (sImageTable_ReelTimeMachine != NULL) - FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae); + TRY_FREE_AND_SET_NULL(sImageTable_ReelTimeMachine); for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeNumberSpriteIds); i++) DestroySprite(&gSprites[sSlotMachine->reelTimeNumberSpriteIds[i]]); @@ -4328,8 +4327,7 @@ static void DestroyReelTimeShadowSprites(void) static void DestroyBrokenReelTimeMachineSprite(void) { DestroySprite(&gSprites[sSlotMachine->reelTimeBrokenMachineSpriteId]); - if (sImageTable_BrokenReelTimeMachine != NULL) - FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); + TRY_FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine); } #define sDelayTimer data[0] diff --git a/src/start_menu.c b/src/start_menu.c index 90230c3dd..11189ee83 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -42,9 +42,10 @@ #include "text_window.h" #include "trainer_card.h" #include "window.h" -#include "constants/songs.h" #include "union_room.h" +#include "constants/battle_frontier.h" #include "constants/rgb.h" +#include "constants/songs.h" // Menu actions enum @@ -138,7 +139,7 @@ static bool8 FieldCB_ReturnToFieldStartMenu(void); static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8}; -static const u8* const sPyramidFloorNames[] = +static const u8* const sPyramidFloorNames[FRONTIER_STAGES_PER_CHALLENGE + 1] = { gText_Floor1, gText_Floor2, @@ -392,7 +393,7 @@ static void ShowSafariBallsWindow(void) static void ShowPyramidFloorWindow(void) { - if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == 7) + if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == FRONTIER_STAGES_PER_CHALLENGE) sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_1); else sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2); diff --git a/src/tileset_anims.c b/src/tileset_anims.c index 3676006a6..6a7589e36 100644 --- a/src/tileset_anims.c +++ b/src/tileset_anims.c @@ -537,7 +537,7 @@ const u16 *const gTilesetAnims_BattlePyramid_StatueShadow[] = { gTilesetAnims_BattlePyramid_StatueShadow_Frame2 }; -static const u16 *const gTilesetAnims_BattleDomeFloorLightPals[] = { +static const u16 *const sTilesetAnims_BattleDomeFloorLightPals[] = { gTilesetAnims_BattleDomePals0_0, gTilesetAnims_BattleDomePals0_1, gTilesetAnims_BattleDomePals0_2, @@ -1167,7 +1167,7 @@ static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer) static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) { - CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) != TASK_NONE) { @@ -1178,7 +1178,7 @@ static void BlendAnimPalette_BattleDome_FloorLights(u16 timer) static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer) { - CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(gTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); + CpuCopy16(sTilesetAnims_BattleDomeFloorLightPals[timer % ARRAY_COUNT(sTilesetAnims_BattleDomeFloorLightPals)], &gPlttBufferUnfaded[0x80], 32); if ((u8)FindTaskIdByFunc(Task_BattleTransition_Intro) == TASK_NONE) { BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF); diff --git a/src/trade.c b/src/trade.c index dd0851bbd..25614c91a 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2195,7 +2195,7 @@ static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void) sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT: - LoadSpritePalette(&gSpritePalette_TradeScreenText); + LoadSpritePalette(&sSpritePalette_TradeScreenText); sTradeMenuData->timer++; break; case GFXTAG_MENU_TEXT_COUNT + 1: @@ -2435,7 +2435,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal) return FALSE; } -int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal) +int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isEventLegal) { bool8 playerHasNationalDex = player.hasNationalDex; bool8 playerIsChampion = player.isChampion; @@ -2496,7 +2496,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_NONE; } -int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, u8 isEventLegal) +int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isEventLegal) { bool8 hasNationalDex = player.hasNationalDex; @@ -3744,7 +3744,7 @@ static bool8 AnimateTradeSequenceCable(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4244,7 +4244,7 @@ static bool8 AnimateTradeSequenceWireless(void) gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0); - CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]); + CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, PALETTES_BG | (0xF << 16), sTradeData->monSpecies[TRADE_PARTNER]); FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]); DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]); sTradeData->state++; @@ -4813,7 +4813,7 @@ static void CheckPartnersMonForRibbons(void) { u8 i; u8 numRibbons = 0; - for (i = 0; i < 12; i ++) + for (i = 0; i < (MON_DATA_UNUSED_RIBBONS - MON_DATA_CHAMPION_RIBBON); i ++) { numRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE], MON_DATA_CHAMPION_RIBBON + i); } diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 39c6202a0..dad6b97ea 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -32,23 +32,21 @@ #include "constants/trainer_hill.h" #include "constants/trainer_types.h" -#define HILL_TAG_NORMAL 0 -#define HILL_TAG_VARIETY 1 -#define HILL_TAG_UNIQUE 2 -#define HILL_TAG_EXPERT 3 - #define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1 -// EWRAM -struct TrHillStruct2 +struct FloorTrainers { - u8 floorId; - struct TrHillTag tag; - struct TrHillFloor floors[NUM_TRAINER_HILL_FLOORS]; + u8 name[HILL_TRAINERS_PER_FLOOR][HILL_TRAINER_NAME_LENGTH]; + u8 facilityClass[HILL_TRAINERS_PER_FLOOR]; }; -static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL; -static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL; +static EWRAM_DATA struct { + u8 floorId; + struct TrainerHillChallenge challenge; + struct TrainerHillFloor floors[NUM_TRAINER_HILL_FLOORS]; +} *sHillData = NULL; + +static EWRAM_DATA struct FloorTrainers *sFloorTrainers = NULL; EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL; // This file's functions. @@ -69,7 +67,7 @@ static void GetGameSaved(void); static void SetGameSaved(void); static void ClearGameSaved(void); static void GetChallengeWon(void); -static void TrainerHillSetTag(void); +static void TrainerHillSetMode(void); static void SetUpDataStruct(void); static void FreeDataStruct(void); static void TrainerHillDummy(void); @@ -202,12 +200,12 @@ static const u16 *const *const sPrizeListSets[] = static const u16 sEReader_Pal[] = INCBIN_U16("graphics/trainer_hill/ereader.gbapal"); static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}; -static const struct TrHillTag *const sDataPerTag[] = +static const struct TrainerHillChallenge *const sChallengeData[NUM_TRAINER_HILL_MODES] = { - &sDataTagNormal, - &sDataTagVariety, - &sDataTagUnique, - &sDataTagExpert, + [HILL_MODE_NORMAL] = &sChallenge_Normal, + [HILL_MODE_VARIETY] = &sChallenge_Variety, + [HILL_MODE_UNIQUE] = &sChallenge_Unique, + [HILL_MODE_EXPERT] = &sChallenge_Expert, }; // Unused. @@ -238,15 +236,15 @@ static void (* const sHillFunctions[])(void) = [TRAINER_HILL_FUNC_SET_GAME_SAVED] = SetGameSaved, [TRAINER_HILL_FUNC_CLEAR_GAME_SAVED] = ClearGameSaved, [TRAINER_HILL_FUNC_GET_WON] = GetChallengeWon, - [TRAINER_HILL_FUNC_SET_TAG] = TrainerHillSetTag, + [TRAINER_HILL_FUNC_SET_MODE] = TrainerHillSetMode, }; -static const u8 *const sTagMatchStrings[] = +static const u8 *const sModeStrings[NUM_TRAINER_HILL_MODES] = { - gText_NormalTagMatch, - gText_VarietyTagMatch, - gText_UniqueTagMatch, - gText_ExpertTagMatch, + [HILL_MODE_NORMAL] = gText_NormalTagMatch, + [HILL_MODE_VARIETY] = gText_VarietyTagMatch, + [HILL_MODE_UNIQUE] = gText_UniqueTagMatch, + [HILL_MODE_EXPERT] = gText_ExpertTagMatch, }; static const struct ObjectEventTemplate sTrainerObjectEventTemplate = @@ -261,18 +259,17 @@ static const struct ObjectEventTemplate sTrainerObjectEventTemplate = static const u32 sNextFloorMapNum[NUM_TRAINER_HILL_FLOORS] = { - MAP_NUM(TRAINER_HILL_2F), - MAP_NUM(TRAINER_HILL_3F), - MAP_NUM(TRAINER_HILL_4F), - MAP_NUM(TRAINER_HILL_ROOF) + [TRAINER_HILL_1F - 1] = MAP_NUM(TRAINER_HILL_2F), + [TRAINER_HILL_2F - 1] = MAP_NUM(TRAINER_HILL_3F), + [TRAINER_HILL_3F - 1] = MAP_NUM(TRAINER_HILL_4F), + [TRAINER_HILL_4F - 1] = MAP_NUM(TRAINER_HILL_ROOF) }; -static const u8 sTrainerPartySlots[][PARTY_SIZE / 2] = +static const u8 sTrainerPartySlots[HILL_TRAINERS_PER_FLOOR][PARTY_SIZE / 2] = { {0, 1, 2}, {3, 4, 5} }; -// code void CallTrainerHillFunction(void) { SetUpDataStruct(); @@ -287,7 +284,7 @@ void ResetTrainerHillResults(void) gSaveBlock2Ptr->frontier.savedGame = 0; gSaveBlock2Ptr->frontier.unk_EF9 = 0; gSaveBlock1Ptr->trainerHill.bestTime = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME); } @@ -300,7 +297,7 @@ u8 GetTrainerHillOpponentClass(u16 trainerId) { u8 id = trainerId - 1; - return gFacilityClassToTrainerClass[sRoomTrainers->facilityClass[id]]; + return gFacilityClassToTrainerClass[sFloorTrainers->facilityClass[id]]; } void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) @@ -309,7 +306,7 @@ void GetTrainerHillTrainerName(u8 *dst, u16 trainerId) u8 id = trainerId - 1; for (i = 0; i < HILL_TRAINER_NAME_LENGTH; i++) - dst[i] = sRoomTrainers->name[id][i]; + dst[i] = sFloorTrainers->name[id][i]; } u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId) @@ -329,15 +326,14 @@ void InitTrainerHillBattleStruct(void) s32 i, j; SetUpDataStruct(); - sRoomTrainers = AllocZeroed(sizeof(*sRoomTrainers)); + sFloorTrainers = AllocZeroed(sizeof(*sFloorTrainers)); - for (i = 0; i < 2; i++) + for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) { for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++) - { - sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; - } - sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; + sFloorTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j]; + + sFloorTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass; } SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); FreeDataStruct(); @@ -345,8 +341,7 @@ void InitTrainerHillBattleStruct(void) void FreeTrainerHillBattleStruct(void) { - if (sRoomTrainers != NULL) - FREE_AND_SET_NULL(sRoomTrainers); + TRY_FREE_AND_SET_NULL(sFloorTrainers); } static void SetUpDataStruct(void) @@ -355,15 +350,20 @@ static void SetUpDataStruct(void) { sHillData = AllocZeroed(sizeof(*sHillData)); sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F; - CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor)); + + // This copy depends on the floor data for each challenge being directly after the + // challenge header data, and for the field 'floors' in sHillData to come directly + // after the field 'challenge'. + // e.g. for HILL_MODE_NORMAL, it will copy sChallenge_Normal to sHillData->challenge and + // it will copy sFloors_Normal to sHillData->floors + CpuCopy32(sChallengeData[gSaveBlock1Ptr->trainerHill.mode], &sHillData->challenge, sizeof(sHillData->challenge) + sizeof(sHillData->floors)); TrainerHillDummy(); } } static void FreeDataStruct(void) { - if (sHillData != NULL) - FREE_AND_SET_NULL(sHillData); + TRY_FREE_AND_SET_NULL(sHillData); } void CopyTrainerHillTrainerText(u8 which, u16 trainerId) @@ -428,7 +428,7 @@ static void GiveChallengePrize(void) { u16 itemId = GetPrizeItemId(); - if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) + if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS || gSaveBlock1Ptr->trainerHill.receivedPrize) { gSpecialVar_Result = 2; } @@ -456,7 +456,7 @@ static void CheckFinalTime(void) else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer) { SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer); - gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime; + gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.mode] = gSaveBlock1Ptr->trainerHill.bestTime; gSpecialVar_Result = 0; } else @@ -529,9 +529,9 @@ static void BufferChallengeTime(void) static void GetAllFloorsUsed(void) { SetUpDataStruct(); - if (sHillData->tag.numFloors != NUM_TRAINER_HILL_FLOORS) + if (sHillData->challenge.numFloors != NUM_TRAINER_HILL_FLOORS) { - ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, sHillData->challenge.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); gSpecialVar_Result = FALSE; } else @@ -592,9 +592,9 @@ void PrintOnTrainerHillRecordsWindow(void) AddTextPrinterParameterized3(0, FONT_NORMAL, x, 2, sRecordWinColors, TEXT_SKIP_DRAW, gText_TimeBoard); y = 18; - for (i = 0; i < 4; i++) + for (i = 0; i < NUM_TRAINER_HILL_MODES; i++) { - AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sTagMatchStrings[i]); + AddTextPrinterParameterized3(0, FONT_NORMAL, 0, y, sRecordWinColors, TEXT_SKIP_DRAW, sModeStrings[i]); y += 15; total = GetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i]); minutes = total / (60 * 60); @@ -637,23 +637,23 @@ void LoadTrainerHillObjectEventTemplates(void) return; SetUpDataStruct(); - for (i = 0; i < 2; i++) + for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF; CpuFill32(0, gSaveBlock1Ptr->objectEventTemplates, sizeof(gSaveBlock1Ptr->objectEventTemplates)); floorId = GetFloorId(); - for (i = 0; i < 2; i++) + for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) { u8 bits; eventTemplates[i] = sTrainerObjectEventTemplate; eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); - eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5; + eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; + eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; bits = i << 2; - eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; - eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF; + eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; + eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; eventTemplates[i].script = TrainerHill_EventScript_TrainerBattle; gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1; } @@ -669,14 +669,14 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void) return TRUE; } -static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride is always 16 +static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floorWidth is always 16 { bool8 impassable; u16 metatile; u16 elevation; - impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1); - metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + NUM_METATILES_IN_PRIMARY; + impassable = (sHillData->floors[floorId].map.collisionData[y] >> (15 - x) & 1); + metatile = sHillData->floors[floorId].map.metatileData[floorWidth * y + x] + NUM_METATILES_IN_PRIMARY; elevation = 3 << MAPGRID_ELEVATION_SHIFT; return ((impassable << MAPGRID_COLLISION_SHIFT) & MAPGRID_COLLISION_MASK) | elevation | (metatile & MAPGRID_METATILE_ID_MASK); @@ -684,7 +684,7 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride i void GenerateTrainerHillFloorLayout(u16 *mapArg) { - s32 i, j; + s32 y, x; u16 *src, *dst; u8 mapId = GetCurrentTrainerHillMapId(); @@ -705,24 +705,25 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg) mapId = GetFloorId(); src = gMapHeader.mapLayout->map; gBackupMapLayout.map = mapArg; - gBackupMapLayout.width = 31; - gBackupMapLayout.height = 35; + // Dimensions include border area loaded beyond map + gBackupMapLayout.width = HILL_FLOOR_WIDTH + 15; + gBackupMapLayout.height = HILL_FLOOR_HEIGHT + 14; dst = mapArg + 224; // First 5 rows of the map (Entrance / Exit) are always the same - for (i = 0; i < 5; i++) + for (y = 0; y < HILL_FLOOR_HEIGHT_MARGIN; y++) { - for (j = 0; j < 16; j++) - dst[j] = src[j]; + for (x = 0; x < HILL_FLOOR_WIDTH; x++) + dst[x] = src[x]; dst += 31; src += 16; } // Load the 16x16 floor-specific layout - for (i = 0; i < 16; i++) + for (y = 0; y < HILL_FLOOR_HEIGHT_MAIN; y++) { - for (j = 0; j < 16; j++) - dst[j] = GetMetatileForFloor(mapId, j, i, 16); + for (x = 0; x < HILL_FLOOR_WIDTH; x++) + dst[x] = GetMetatileForFloor(mapId, x, y, HILL_FLOOR_WIDTH); dst += 31; } @@ -812,8 +813,8 @@ u16 LocalIdToHillTrainerId(u8 localId) bool8 GetHillTrainerFlag(u8 objectEventId) { - u32 floorId = GetFloorId() * 2; - u8 bitId = gObjectEvents[objectEventId].localId - 1 + floorId; + u32 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; + u8 bitId = gObjectEvents[objectEventId].localId - 1 + trainerIndexStart; return gSaveBlock2Ptr->frontier.trainerFlags & gBitTable[bitId]; } @@ -821,24 +822,24 @@ bool8 GetHillTrainerFlag(u8 objectEventId) void SetHillTrainerFlag(void) { u8 i; - u8 floorId = GetFloorId() * 2; + u8 trainerIndexStart = GetFloorId() * HILL_TRAINERS_PER_FLOOR; - for (i = 0; i < 2; i++) + for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_A) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; break; } } if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { - for (i = 0; i < 2; i++) + for (i = 0; i < HILL_TRAINERS_PER_FLOOR; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_B) { - gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[floorId + i]; + gSaveBlock2Ptr->frontier.trainerFlags |= gBitTable[trainerIndexStart + i]; break; } } @@ -861,14 +862,14 @@ static void CreateNPCTrainerHillParty(u16 trainerId, u8 firstMonId) u8 trId, level; s32 i, floorId, partySlot; - if (trainerId == 0 || trainerId > 2) + if (trainerId == 0 || trainerId > HILL_TRAINERS_PER_FLOOR) return; trId = trainerId - 1; SetUpDataStruct(); level = GetHighestLevelInPlayerParty(); floorId = GetFloorId(); - for (i = firstMonId, partySlot = 0; i < firstMonId + 3; i++, partySlot++) + for (i = firstMonId, partySlot = 0; i < firstMonId + PARTY_SIZE / 2; i++, partySlot++) { u8 id = sTrainerPartySlots[trId][partySlot]; struct Pokemon *mon = &gEnemyParty[i]; @@ -890,7 +891,7 @@ void FillHillTrainersParties(void) { ZeroEnemyPartyMons(); CreateNPCTrainerHillParty(gTrainerBattleOpponent_A, 0); - CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, 3); + CreateNPCTrainerHillParty(gTrainerBattleOpponent_B, PARTY_SIZE / 2); } // This function is unused, but my best guess is @@ -935,7 +936,7 @@ u8 GetNumFloorsInTrainerHillChallenge(void) u8 floors; SetUpDataStruct(); - floors = sHillData->tag.numFloors; + floors = sHillData->challenge.numFloors; FreeDataStruct(); return floors; @@ -989,16 +990,20 @@ static void GetChallengeWon(void) gSpecialVar_Result = TRUE; } -static void TrainerHillSetTag(void) +static void TrainerHillSetMode(void) { - gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005; + gSaveBlock1Ptr->trainerHill.mode = gSpecialVar_0x8005; gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; } -static u8 GetPrizeListId(bool8 maxTrainers) +// Determines which prize list to use from the set of prize lists. +static u8 GetPrizeListId(bool8 allowTMs) { u8 prizeListId, i, modBy; + // The initial selection depends on the trainer numbers for the completed challenge. + // These don't change with the available challenge modes, so Normal/Unique will always + // have a prizeListId of 8, and Variety/Expert will have a prizeListId of 24. prizeListId = 0; for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { @@ -1006,8 +1011,10 @@ static u8 GetPrizeListId(bool8 maxTrainers) prizeListId ^= sHillData->floors[i].trainerNum2 & 0x1F; } - // Not possible to win TMs with fewer than 8 trainers - if (maxTrainers) + // In practice, the conditional below is always true. + // The 2nd half of the lists in both sets of lists all have a TM as the "grand prize", while the 1st half do not, + // so taking the mod of the (total / 2) ensures that a prize list without a TM will be used. + if (allowTMs) modBy = NUM_TRAINER_HILL_PRIZE_LISTS; else modBy = NUM_TRAINER_HILL_PRIZE_LISTS / 2; @@ -1020,38 +1027,64 @@ static u16 GetPrizeItemId(void) { u8 i; const u16 *prizeList; - s32 var = 0, prizeListSetId, minutes, id; + s32 trainerNumSum = 0, prizeListSetId, minutes, id; + // First determine which set of prize lists to use. The sets of lists only differ in + // what TMs they can offer as the "grand prize" for a time under 12 minutes. + // Which set of lists gets used is based on the sum of all the trainer numbers for that + // challenge. These don't change with the available challenge modes, so Normal will always + // have a prizeListSetId of 0, and Unique/Variety/Expert will have a prizeListSetId of 1. for (i = 0; i < NUM_TRAINER_HILL_FLOORS; i++) { - var += sHillData->floors[i].trainerNum1; - var += sHillData->floors[i].trainerNum2; + trainerNumSum += sHillData->floors[i].trainerNum1; + trainerNumSum += sHillData->floors[i].trainerNum2; } + prizeListSetId = trainerNumSum / 256; + prizeListSetId %= (int)ARRAY_COUNT(sPrizeListSets); - prizeListSetId = var / 256; - prizeListSetId %= 2; - if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->tag.numTrainers == NUM_TRAINER_HILL_TRAINERS) + // Now get which prize list to use from the set. See GetPrizeListId for details. + // The below conditional will always be true, because a Trainer Hill challenge can't be entered + // until the player has entered the Hall of Fame (FLAG_SYS_GAME_CLEAR is set) and because all + // of the available challenge modes have the full 8 trainers (NUM_TRAINER_HILL_TRAINERS). + if (FlagGet(FLAG_SYS_GAME_CLEAR) && sHillData->challenge.numTrainers == NUM_TRAINER_HILL_TRAINERS) i = GetPrizeListId(TRUE); else i = GetPrizeListId(FALSE); - if (gSaveBlock1Ptr->trainerHill.tag == HILL_TAG_EXPERT) + // 1 is added to Expert mode's prize list selection because otherwise it has the same prizes as Variety + if (gSaveBlock1Ptr->trainerHill.mode == HILL_MODE_EXPERT) i = (i + 1) % NUM_TRAINER_HILL_PRIZE_LISTS; + // After the above (non-random) calculations, the following are the possible prize list selections: + // sPrizeListSets[0][8] (Normal) + // sPrizeListSets[1][4] (Variety) + // sPrizeListSets[1][8] (Unique) + // sPrizeListSets[1][5] (Expert) prizeList = sPrizeListSets[prizeListSetId][i]; + + // Which prize is given from the list depends on the time scored. + // The prize for any time after 12 minutes is the same in every list. + // The prizes for a time under 12 minutes are: + // - ITEM_TM11_SUNNY_DAY (Normal) + // - ITEM_ELIXIR (Variety) + // - ITEM_TM19_GIGA_DRAIN (Unique) + // - ITEM_TM31_BRICK_BREAK (Expert) + // As an additional note, if players were allowed to enter a Trainer Hill challenge before + // entering the Hall of Fame, there would be 1 additional prize possibility (ITEM_MAX_ETHER) + // as Normal / Unique modes would use sPrizeListSets[0][3] / sPrizeListSets[1][3] respectively. minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60); if (minutes < 12) - id = 0; + id = 0; // Depends on list else if (minutes < 13) - id = 1; + id = 1; // ITEM_ETHER else if (minutes < 14) - id = 2; + id = 2; // ITEM_MAX_POTION else if (minutes < 16) - id = 3; + id = 3; // ITEM_REVIVE else if (minutes < 18) - id = 4; + id = 4; // ITEM_FLUFFY_TAIL else - id = 5; + id = 5; // ITEM_GREAT_BALL return prizeList[id]; } diff --git a/src/tv.c b/src/tv.c index b9d064026..2f3d17ee2 100644 --- a/src/tv.c +++ b/src/tv.c @@ -373,21 +373,21 @@ static const u8 *const sTV3CheersForPokeblocksTextGroup[] = { }; static const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = { - gTVBravoTrainerBattleTowerText00, - gTVBravoTrainerBattleTowerText01, - gTVBravoTrainerBattleTowerText02, - gTVBravoTrainerBattleTowerText03, - gTVBravoTrainerBattleTowerText04, - gTVBravoTrainerBattleTowerText05, - gTVBravoTrainerBattleTowerText06, - gTVBravoTrainerBattleTowerText07, - gTVBravoTrainerBattleTowerText08, - gTVBravoTrainerBattleTowerText09, - gTVBravoTrainerBattleTowerText10, - gTVBravoTrainerBattleTowerText11, - gTVBravoTrainerBattleTowerText12, - gTVBravoTrainerBattleTowerText13, - gTVBravoTrainerBattleTowerText14 + [BRAVOTOWER_STATE_INTRO] = BravoTrainerBattleTower_Text_Intro, + [BRAVOTOWER_STATE_NEW_RECORD] = BravoTrainerBattleTower_Text_NewRecord, + [BRAVOTOWER_STATE_LOST] = BravoTrainerBattleTower_Text_Lost, + [BRAVOTOWER_STATE_WON] = BravoTrainerBattleTower_Text_Won, + [BRAVOTOWER_STATE_LOST_FINAL] = BravoTrainerBattleTower_Text_LostFinal, + [BRAVOTOWER_STATE_SATISFIED] = BravoTrainerBattleTower_Text_Satisfied, + [BRAVOTOWER_STATE_UNSATISFIED] = BravoTrainerBattleTower_Text_Unsatisfied, + [BRAVOTOWER_STATE_UNUSED_1] = BravoTrainerBattleTower_Text_None1, + [BRAVOTOWER_STATE_UNUSED_2] = BravoTrainerBattleTower_Text_None2, + [BRAVOTOWER_STATE_UNUSED_3] = BravoTrainerBattleTower_Text_None3, + [BRAVOTOWER_STATE_UNUSED_4] = BravoTrainerBattleTower_Text_None4, + [BRAVOTOWER_STATE_RESPONSE] = BravoTrainerBattleTower_Text_Response, + [BRAVOTOWER_STATE_RESPONSE_SATISFIED] = BravoTrainerBattleTower_Text_ResponseSatisfied, + [BRAVOTOWER_STATE_RESPONSE_UNSATISFIED] = BravoTrainerBattleTower_Text_ResponseUnsatisfied, + [BRAVOTOWER_STATE_OUTRO] = BravoTrainerBattleTower_Text_Outro }; static const u8 *const sTVContestLiveUpdatesTextGroup[] = { @@ -723,7 +723,7 @@ static const u8 *const sTVInSearchOfTrainersTextGroup[] = { // Secret Base Secrets TV Show states for actions that can be taken in a secret base // The flags that determine whether or not the action was taken are commented -const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = +static const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = { SBSECRETS_STATE_USED_CHAIR, // SECRET_BASE_USED_CHAIR SBSECRETS_STATE_USED_BALLOON, // SECRET_BASE_USED_BALLOON @@ -1449,7 +1449,7 @@ static void InterviewAfter_BravoTrainerPokemonProfile(void) } } -void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) +void BravoTrainerPokemonProfile_BeforeInterview1(u16 move) { TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX]; InterviewBefore_BravoTrainerPkmnProfile(); @@ -1457,7 +1457,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) if (sCurTVShowSlot != -1) { DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX); - show->bravoTrainer.move = a0; + show->bravoTrainer.move = move; show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } } @@ -1490,9 +1490,9 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void) show->bravoTrainerTower.numFights = GetCurrentBattleTowerWinStreak(gSaveBlock2Ptr->frontier.towerLvlMode, 0); show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.towerBattleOutcome; if (gSaveBlock2Ptr->frontier.towerLvlMode == FRONTIER_LVL_50) - show->bravoTrainerTower.btLevel = 50; + show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_50; else - show->bravoTrainerTower.btLevel = 100; + show->bravoTrainerTower.btLevel = FRONTIER_MAX_LEVEL_OPEN; show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004; StorePlayerIdInNormalShow(show); show->bravoTrainerTower.language = gGameLanguage; @@ -4371,6 +4371,9 @@ static void DoTVShowBravoTrainerPokemonProfile(void) ShowFieldMessage(sTVBravoTrainerTextGroup[state]); } +// This is the TV show triggered by accepting the reporter's interview in the lobby of Battle Tower. +// The reporter had asked the player if they were satisfied or not with the challenge, and then asked +// for a one word Easy Chat description of their feelings about the challenge. static void DoTVShowBravoTrainerBattleTower(void) { TVShow *show; @@ -4381,85 +4384,83 @@ static void DoTVShowBravoTrainerBattleTower(void) state = sTVShowState; switch(state) { - case 0: + case BRAVOTOWER_STATE_INTRO: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); - if (show->bravoTrainerTower.numFights >= 7) - sTVShowState = 1; + if (show->bravoTrainerTower.numFights >= FRONTIER_STAGES_PER_CHALLENGE) + sTVShowState = BRAVOTOWER_STATE_NEW_RECORD; else - sTVShowState = 2; + sTVShowState = BRAVOTOWER_STATE_LOST; break; - case 1: - if (show->bravoTrainerTower.btLevel == 50) - { + case BRAVOTOWER_STATE_NEW_RECORD: + // The TV show states a "new record" was achieved as long as all the battles in the challenge were attempted, + // regardless of any previous records or whether the final battle was won or lost. + if (show->bravoTrainerTower.btLevel == FRONTIER_MAX_LEVEL_50) StringCopy(gStringVar1, gText_Lv50); - } else - { StringCopy(gStringVar1, gText_OpenLevel); - } ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights); if (show->bravoTrainerTower.wonTheChallenge == TRUE) - sTVShowState = 3; + sTVShowState = BRAVOTOWER_STATE_WON; else - sTVShowState = 4; + sTVShowState = BRAVOTOWER_STATE_LOST_FINAL; break; - case 2: + case BRAVOTOWER_STATE_LOST: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights + 1); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = 5; + sTVShowState = BRAVOTOWER_STATE_SATISFIED; else - sTVShowState = 6; + sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; break; - case 3: + case BRAVOTOWER_STATE_WON: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = 5; + sTVShowState = BRAVOTOWER_STATE_SATISFIED; else - sTVShowState = 6; + sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; break; - case 4: + case BRAVOTOWER_STATE_LOST_FINAL: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = 5; + sTVShowState = BRAVOTOWER_STATE_SATISFIED; else - sTVShowState = 6; + sTVShowState = BRAVOTOWER_STATE_UNSATISFIED; break; - case 5: + case BRAVOTOWER_STATE_SATISFIED: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = 11; + sTVShowState = BRAVOTOWER_STATE_RESPONSE; break; - case 6: + case BRAVOTOWER_STATE_UNSATISFIED: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = 11; + sTVShowState = BRAVOTOWER_STATE_RESPONSE; break; - case 7: - sTVShowState = 11; + case BRAVOTOWER_STATE_UNUSED_1: + sTVShowState = BRAVOTOWER_STATE_RESPONSE; break; - case 8: - case 9: - case 10: + case BRAVOTOWER_STATE_UNUSED_2: + case BRAVOTOWER_STATE_UNUSED_3: + case BRAVOTOWER_STATE_UNUSED_4: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); - sTVShowState = 11; + sTVShowState = BRAVOTOWER_STATE_RESPONSE; break; - case 11: + case BRAVOTOWER_STATE_RESPONSE: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); if (show->bravoTrainerTower.interviewResponse == 0) - sTVShowState = 12; + sTVShowState = BRAVOTOWER_STATE_RESPONSE_SATISFIED; else - sTVShowState = 13; + sTVShowState = BRAVOTOWER_STATE_RESPONSE_UNSATISFIED; break; - case 12: - case 13: + case BRAVOTOWER_STATE_RESPONSE_SATISFIED: + case BRAVOTOWER_STATE_RESPONSE_UNSATISFIED: CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]); TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage); - sTVShowState = 14; + sTVShowState = BRAVOTOWER_STATE_OUTRO; break; - case 14: + case BRAVOTOWER_STATE_OUTRO: TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language); StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]); TVShowDone(); diff --git a/src/union_room.c b/src/union_room.c index 9a743dbab..05b41a088 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4318,7 +4318,7 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void) for (i = 0; i < gPlayerPartyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30 + if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= UNION_ROOM_MAX_LEVEL && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) count++; } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 9890bc1f8..f8513b9f4 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -2160,8 +2160,7 @@ static bool32 IsDisplaySubtask0Active(void) static void FreeDisplay(void) { FreeSprites(); - if (sDisplay) - FREE_AND_SET_NULL(sDisplay); + TRY_FREE_AND_SET_NULL(sDisplay); FreeAllWindowBuffers(); gScanlineEffect.state = 3; diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile index b4244aa8d..8728fa8d0 100644 --- a/tools/gbagfx/Makefile +++ b/tools/gbagfx/Makefile @@ -1,8 +1,10 @@ CC = gcc CFLAGS = -Wall -Wextra -Werror -Wno-sign-compare -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK +CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz +LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c huff.c diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp index d4d79f133..caa6f0ecd 100644 --- a/tools/mid2agb/agb.cpp +++ b/tools/mid2agb/agb.cpp @@ -18,6 +18,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#include #include #include #include @@ -503,7 +504,7 @@ void PrintAgbTrack(std::vector& events) ResetTrackVars(); break; case EventType::Tempo: - PrintByte("TEMPO , %u*%s_tbs/2", 60000000 / event.param2, g_asmLabel.c_str()); + PrintByte("TEMPO , %u*%s_tbs/2", static_cast(round(60000000.0f / static_cast(event.param2))), g_asmLabel.c_str()); PrintWait(event.time); break; case EventType::InstrumentChange: diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index 0bc88a42b..92e44b545 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -1,8 +1,10 @@ CC ?= gcc CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK +CFLAGS += $(shell pkg-config --cflags libpng) LIBS = -lpng -lz +LDFLAGS += $(shell pkg-config --libs-only-L libpng) SRCS = main.c convert_png.c util.c font.c From 813776001015ea95c9093841360f1d556f4e0d64 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 6 Jul 2022 20:28:57 -0700 Subject: [PATCH 48/71] Improved comments and constant dynamism --- src/follow_me.c | 2 +- src/overworld.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/follow_me.c b/src/follow_me.c index 4820c0404..425eba6e7 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -268,7 +268,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; } - // This makes sure the follower is still invisible after diving or surfacing + // This makes sure the follower is still invisible after diving or surfacing or on a bike if(!(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE))) follower->invisible = FALSE; MoveObjectEventToMapCoords(follower, player->currentCoords.x, player->currentCoords.y); diff --git a/src/overworld.c b/src/overworld.c index 61b3e886e..a1425f93c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3758,12 +3758,13 @@ void UpdateFollowerPokemonGraphic(void) struct ObjectEvent *follower = &gObjectEvents[gSaveBlock2Ptr->follower.objId]; // If the lead Pokemon is Unown, use the correct sprite - if (leadMonGraphicId == 439) + if (leadMonGraphicId == OBJ_EVENT_GFX_UNOWN_A) { u8 unownLetter = GET_UNOWN_LETTER(GetMonData(&gPlayerParty[GetLeadMonNotFaintedIndex()], MON_DATA_PERSONALITY)); + // If the Unown is not A, set the graphics id to the proper Unown if (unownLetter) - leadMonGraphicId = 652 + unownLetter; + leadMonGraphicId = OBJ_EVENT_GFX_DEOXYS_SPEED + unownLetter; } if(gSaveBlock2Ptr->follower.inProgress && leadMonGraphicId != gSaveBlock2Ptr->follower.graphicsId) From 559316da4b55ee65f8c31e376d6628b939bab846 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 10 Jul 2022 18:57:33 -0700 Subject: [PATCH 49/71] Fixed Krabby sprite and removed unecessary palette --- .../palettes/followers/krabby.pal | 19 ------------------ .../pics/pokemon/followers/krabby.png | Bin 534 -> 542 bytes 2 files changed, 19 deletions(-) delete mode 100644 graphics/object_events/palettes/followers/krabby.pal diff --git a/graphics/object_events/palettes/followers/krabby.pal b/graphics/object_events/palettes/followers/krabby.pal deleted file mode 100644 index 6a430a736..000000000 --- a/graphics/object_events/palettes/followers/krabby.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 81 -201 201 209 -81 57 49 -1 1 1 -201 97 33 -233 233 249 -169 65 57 -193 169 129 -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/followers/krabby.png b/graphics/object_events/pics/pokemon/followers/krabby.png index bee310360e42277d35240dd2079814486bb785b4..e1422f9f6973a6814ce850912dedfac583810948 100644 GIT binary patch delta 482 zcmV<80UiF91fB$tGApS;IROCyK`AM*nQ7_i`PpeP;lY_vIWfs$A;GDE0000000000 z0K(N@o{?P`f0Ri?K~zYI?U220gD@0EJ$Uj~DHF<5^ddzf3y3R4B6*us%FveqnaN>G zq)50+)l4Z5Rb%iEpr)1DY}|>@KKDBSA@j^L&ph+Y<3_}f?Pu~lH2k-aZe@K}_}5`L z6pV$65c%Y3Tyh7Y;abMu2s@g|x?5sLnU6buMnuX7e}d8pTUro7%r_n7StViHeuXdy zdE^NgIAKd~#hIer##m+I{X~T@byRvtrgH8O4uFj(;GVFh*Kktb6zZIwQk~HkbVzNH z;|QsqH&GBdfy&rq#1y6yWR&vGNTZOe92#L)m;%56Q8}zFQo#Yx7r?;^TlxfRD3gAB zk%7v#f6WyR5MM}0@ey$$oIqzI=x8Xgzr+CiwhmeCVYT-VogKoe9dFESn}y2e5^uV& zGMV<-q~^FSKYr2K7{lR^vZfA5fS$X7q Y0mrfFHCog~jQ{`u07*qoM6N<$g0oQG6#xJL delta 474 zcmV<00VV#P1eOGlGAmIzF#!Pq$zdVs>G`QaIl-xc0000000000000000000000000 z0D42yhLK$ue~d{)K~zYI?UF%mgD?<9E!h{S$Rfu8naC_bI3auDrUz(~eIS{2l~m=} zH3r)QsA;7(J7$${zxfYP2$^S|dFGjC9zQ&NY(G`Iq2a%UY^}<>!oLocL%~?62_8;< zjZ5wztUjys8(~LNRd!2srNVK?&j>HXKoEOjOLM}Be|@Kw+Udky+piD`wWyGQf)}>* zn(vr&+cMReppU2#s*hrXcNE*wTAAL!9;7iyU-zZN6}T zU?CyVe`h5)_X3lxprav@{iO^5w{^(n2$v&5O!f#(wxY4OZRR@LOL;YgiOsCfh?m#r z4ZOZ>-Jj-WGD2vU%Vp{}l3SkH+bCY@zW2;+FHFt@^gxT|L%lTaD2h$aLR6?90}0}k zuwF=SVbnY|fxKE)noPH7eRwokF@=-qg)AjBB$jzd+z0M6^E;!X$;u<=3(cFNQd{uc Qb^rhX07*qoM6N<$f)$_DLjV8( From dbf757be886736e6a0f8f813cc8c0a544124a287 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Mar 2023 11:07:44 -0500 Subject: [PATCH 50/71] Treat map data as const --- include/field_control_avatar.h | 2 +- include/fieldmap.h | 4 ++-- include/global.fieldmap.h | 22 +++++++++++----------- src/event_object_movement.c | 24 ++++++++++++------------ src/field_control_avatar.c | 24 ++++++++++++------------ src/fieldmap.c | 32 ++++++++++++++++---------------- src/item_use.c | 6 +++--- src/overworld.c | 6 +++--- src/trainer_hill.c | 3 ++- 9 files changed, 62 insertions(+), 61 deletions(-) diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index e02fcd5af..b259eb53c 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -32,7 +32,7 @@ bool8 TryDoDiveWarp(struct MapPosition *position, u16 b); int SetCableClubWarp(void); u8 TrySetDiveWarp(void); const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction); -u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position); +const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position); void ClearPoisonStepCounter(void); #endif // GUARD_FIELDCONTROLAVATAR_H diff --git a/include/fieldmap.h b/include/fieldmap.h index f2dbefae8..47072bd1b 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -48,8 +48,8 @@ void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout); void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout); void CopyPrimaryTilesetToVram(const struct MapLayout *); void CopySecondaryTilesetToVram(const struct MapLayout *); -struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection); -struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y); +const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnection *connection); +const struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y); void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable); // field_region_map.c diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index d8fea5b23..7461929c3 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -50,10 +50,10 @@ struct MapLayout { /*0x00*/ s32 width; /*0x04*/ s32 height; - /*0x08*/ u16 *border; - /*0x0C*/ u16 *map; - /*0x10*/ struct Tileset *primaryTileset; - /*0x14*/ struct Tileset *secondaryTileset; + /*0x08*/ const u16 *border; + /*0x0C*/ const u16 *map; + /*0x10*/ const struct Tileset *primaryTileset; + /*0x14*/ const struct Tileset *secondaryTileset; }; struct BackupMapLayout @@ -98,7 +98,7 @@ struct CoordEvent u8 elevation; u16 trigger; u16 index; - u8 *script; + const u8 *script; }; struct BgEvent @@ -107,7 +107,7 @@ struct BgEvent u8 elevation; u8 kind; // The "kind" field determines how to access bgUnion union below. union { - u8 *script; + const u8 *script; struct { u16 item; u16 hiddenItemId; @@ -122,10 +122,10 @@ struct MapEvents u8 warpCount; u8 coordEventCount; u8 bgEventCount; - struct ObjectEventTemplate *objectEvents; - struct WarpEvent *warps; - struct CoordEvent *coordEvents; - struct BgEvent *bgEvents; + const struct ObjectEventTemplate *objectEvents; + const struct WarpEvent *warps; + const struct CoordEvent *coordEvents; + const struct BgEvent *bgEvents; }; struct MapConnection @@ -139,7 +139,7 @@ struct MapConnection struct MapConnections { s32 count; - struct MapConnection *connections; + const struct MapConnection *connections; }; struct MapHeader diff --git a/src/event_object_movement.c b/src/event_object_movement.c index be0c4ce26..3025e0849 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -131,9 +131,9 @@ static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *); static void RemoveObjectEventInternal(struct ObjectEvent *); static u16 GetObjectEventFlagIdByObjectEventId(u8); static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); -static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); +static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); +static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); static void LoadObjectEventPalette(u16); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); @@ -147,7 +147,7 @@ static void SpriteCB_CameraObject(struct Sprite *); static void CameraObject_0(struct Sprite *); static void CameraObject_1(struct Sprite *); static void CameraObject_2(struct Sprite *); -static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, struct ObjectEventTemplate *, u8); +static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); @@ -1267,7 +1267,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; @@ -1398,7 +1398,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 paletteSlot; @@ -1458,7 +1458,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl return objectEventId; } -static u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) +static u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; struct SpriteTemplate spriteTemplate; @@ -1512,7 +1512,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *objectEventTemplate; + const struct ObjectEventTemplate *objectEventTemplate; s16 cameraX, cameraY; objectEventTemplate = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); @@ -1542,7 +1542,7 @@ static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphics CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, sMovementTypeCallbacks[movementType], spriteTemplate, subspriteTables); } -static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) { CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); } @@ -2374,7 +2374,7 @@ const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId) static u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); + const struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup); #ifdef UBFIX // BUG: The function may return NULL, and attempting to read from NULL may freeze the game using modern compilers. if (obj == NULL) @@ -2421,9 +2421,9 @@ u8 GetObjectEventBerryTreeId(u8 objectEventId) return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { - struct ObjectEventTemplate *templates; + const struct ObjectEventTemplate *templates; const struct MapHeader *mapHeader; u8 count; @@ -2441,7 +2441,7 @@ static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 loca return FindObjectEventTemplateByLocalId(localId, templates, count); } -static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count) +static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, const struct ObjectEventTemplate *templates, u8 count) { u8 i; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 9c526f0f7..3a0c97e8c 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -60,8 +60,8 @@ static s8 GetWarpEventAtMapPosition(struct MapHeader *, struct MapPosition *); static void SetupWarp(struct MapHeader *, s8, struct MapPosition *); static bool8 TryDoorWarp(struct MapPosition *, u16, u8); static s8 GetWarpEventAtPosition(struct MapHeader *, u16, u16, u8); -static u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8); -static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8); +static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *, u16, u16, u8); +static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8); static bool8 TryStartCoordEventScript(struct MapPosition *); static bool8 TryStartWarpEventScript(struct MapPosition *, u16); static bool8 TryStartMiscWalkingScripts(u16); @@ -315,7 +315,7 @@ static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction) { - struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); + const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (bgEvent == NULL) return NULL; @@ -497,7 +497,7 @@ static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileB static bool8 TryStartCoordEventScript(struct MapPosition *position) { - u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); + const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); if (script == NULL) return FALSE; @@ -861,7 +861,7 @@ static bool8 TryDoorWarp(struct MapPosition *position, u16 metatileBehavior, u8 static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; - struct WarpEvent *warpEvent = mapHeader->events->warps; + const struct WarpEvent *warpEvent = mapHeader->events->warps; u8 warpCount = mapHeader->events->warpCount; for (i = 0; i < warpCount; i++, warpEvent++) @@ -875,7 +875,7 @@ static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 e return WARP_ID_NONE; } -static u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) +static const u8 *TryRunCoordEventScript(const struct CoordEvent *coordEvent) { if (coordEvent != NULL) { @@ -895,10 +895,10 @@ static u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) return NULL; } -static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) +static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; - struct CoordEvent *coordEvents = mapHeader->events->coordEvents; + const struct CoordEvent *coordEvents = mapHeader->events->coordEvents; u8 coordEventCount = mapHeader->events->coordEventCount; for (i = 0; i < coordEventCount; i++) @@ -907,7 +907,7 @@ static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 { if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0) { - u8 *script = TryRunCoordEventScript(&coordEvents[i]); + const u8 *script = TryRunCoordEventScript(&coordEvents[i]); if (script != NULL) return script; } @@ -916,15 +916,15 @@ static u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 return NULL; } -u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position) +const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position) { return GetCoordEventScriptAtPosition(&gMapHeader, position->x - MAP_OFFSET, position->y - MAP_OFFSET, position->elevation); } -static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) +static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { u8 i; - struct BgEvent *bgEvents = mapHeader->events->bgEvents; + const struct BgEvent *bgEvents = mapHeader->events->bgEvents; u8 bgEventCount = mapHeader->events->bgEventCount; for (i = 0; i < bgEventCount; i++) diff --git a/src/fieldmap.c b/src/fieldmap.c index 89d6b602c..df4db47b5 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -36,7 +36,7 @@ struct BackupMapLayout gBackupMapLayout; static const struct ConnectionFlags sDummyConnectionFlags = {0}; static void InitMapLayoutData(struct MapHeader *mapHeader); -static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height); +static void InitBackupMapLayoutData(const u16 *map, u16 width, u16 height); static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset); @@ -44,14 +44,14 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader); static void LoadSavedMapView(void); static bool8 SkipCopyingMetatileFromSavedMap(u16 *mapBlock, u16 mapWidth, u8 yMode); -static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y); -static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection); +static const struct MapConnection *GetIncomingConnection(u8 direction, int x, int y); +static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, const struct MapConnection *connection); static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset); #define GetBorderBlockAt(x, y)({ \ u16 block; \ int i; \ - u16 *border = gMapHeader.mapLayout->border; \ + const u16 *border = gMapHeader.mapLayout->border; /* Unused, they read it again below */ \ \ i = (x + 1) & 1; \ i += ((y + 1) & 1) * 2; \ @@ -63,7 +63,7 @@ static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, #define GetMapGridBlockAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : GetBorderBlockAt(x, y)) -struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection) +const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnection *connection) { return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum); } @@ -116,7 +116,7 @@ static void InitMapLayoutData(struct MapHeader *mapHeader) } } -static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height) +static void InitBackupMapLayoutData(const u16 *map, u16 width, u16 height) { u16 *dest; int y; @@ -133,7 +133,7 @@ static void InitBackupMapLayoutData(u16 *map, u16 width, u16 height) static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) { int count; - struct MapConnection *connection; + const struct MapConnection *connection; int i; if (mapHeader->connections) @@ -171,7 +171,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader) static void FillConnection(int x, int y, struct MapHeader const *connectedMapHeader, int x2, int y2, int width, int height) { int i; - u16 *src; + const u16 *src; u16 *dest; int mapWidth; @@ -619,7 +619,7 @@ bool32 CanCameraMoveInDirection(int direction) return TRUE; } -static void SetPositionFromConnection(struct MapConnection *connection, int direction, int x, int y) +static void SetPositionFromConnection(const struct MapConnection *connection, int direction, int x, int y) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -647,7 +647,7 @@ static void SetPositionFromConnection(struct MapConnection *connection, int dire bool8 CameraMove(int x, int y) { int direction; - struct MapConnection *connection; + const struct MapConnection *connection; int old_x, old_y; gCamera.active = FALSE; direction = GetPostCameraMoveMapBorderId(x, y); @@ -675,11 +675,11 @@ bool8 CameraMove(int x, int y) return gCamera.active; } -static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) +static const struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) { int count; int i; - struct MapConnection *connection; + const struct MapConnection *connection; const struct MapConnections *connections = gMapHeader.connections; #ifdef UBFIX // UB: Multiple possible null dereferences @@ -696,7 +696,7 @@ static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y) return NULL; } -static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection) +static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, const struct MapConnection *connection) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -737,7 +737,7 @@ static int IsCoordInConnectingMap(int coord, int max) return FALSE; } -static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y) +static int IsPosInConnectingMap(const struct MapConnection *connection, int x, int y) { struct MapHeader const *mapHeader; mapHeader = GetMapHeaderFromConnection(connection); @@ -753,10 +753,10 @@ static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y) return FALSE; } -struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) +const struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) { int count; - struct MapConnection *connection; + const struct MapConnection *connection; int i; u8 direction; if (!gMapHeader.connections) diff --git a/src/item_use.c b/src/item_use.c index 41e888496..8a0282717 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -375,7 +375,7 @@ static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 ta static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; - struct BgEvent *bgEvent = events->bgEvents; + const struct BgEvent *bgEvent = events->bgEvents; int i; for (i = 0; i < bgEventCount; i++) @@ -391,7 +391,7 @@ static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, return FALSE; } -static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, int x, int y) +static bool8 IsHiddenItemPresentInConnection(const struct MapConnection *connection, int x, int y) { u16 localX, localY; @@ -456,7 +456,7 @@ static void CheckForHiddenItemsInMapConnection(u8 taskId) || var2 > y || y >= height) { - struct MapConnection *conn = GetMapConnectionAtPos(x, y); + const struct MapConnection *conn = GetMapConnectionAtPos(x, y); if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE) SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY); } diff --git a/src/overworld.c b/src/overworld.c index 4f7cccdff..70b102fd2 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -156,7 +156,7 @@ static void InitMenuBasedScript(const u8 *); static void LoadCableClubPlayer(s32, s32, struct CableClubPlayer *); static bool32 IsCableClubPlayerUnfrozen(struct CableClubPlayer *); static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *); -static u8 *TryGetTileEventScript(struct CableClubPlayer *); +static const u8 *TryGetTileEventScript(struct CableClubPlayer *); static bool32 PlayerIsAtSouthExit(struct CableClubPlayer *); static const u8 *TryInteractWithPlayer(struct CableClubPlayer *); static u16 KeyInterCB_DeferToRecvQueue(u32); @@ -482,7 +482,7 @@ void LoadObjEventTemplatesFromHeader(void) void LoadSaveblockObjEventScripts(void) { - struct ObjectEventTemplate *mapHeaderObjTemplates = gMapHeader.events->objectEvents; + const struct ObjectEventTemplate *mapHeaderObjTemplates = gMapHeader.events->objectEvents; struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates; s32 i; @@ -2714,7 +2714,7 @@ static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *player) return FALSE; } -static u8 *TryGetTileEventScript(struct CableClubPlayer *player) +static const u8 *TryGetTileEventScript(struct CableClubPlayer *player) { if (player->movementMode != MOVEMENT_MODE_SCRIPTED) return FACING_NONE; diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 528ee18a4..a74270ec7 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -685,7 +685,8 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floo void GenerateTrainerHillFloorLayout(u16 *mapArg) { s32 y, x; - u16 *src, *dst; + const u16 *src; + u16 *dst; u8 mapId = GetCurrentTrainerHillMapId(); if (mapId == TRAINER_HILL_ENTRANCE) From a6dc26acb70b1d283c2abb18278293abdc63816a Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sat, 11 Mar 2023 16:32:42 -0800 Subject: [PATCH 51/71] Updated names and updated dynamic palette system --- src/field_specials.c | 2 +- src/field_weather_effect.c | 2 +- src/follow_me.c | 2 +- src/rotating_gate.c | 14 ++++++++++---- src/script.c | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/field_specials.c b/src/field_specials.c index 324c74663..7a890e615 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1548,7 +1548,7 @@ u8 GetLeadMonNotFaintedIndex(void) u8 partyCount = CalculatePlayerPartyCount(); for(i = 0; i < partyCount; i++) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0 + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG, NULL) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP, NULL) != 0) { return i; diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index fb57bad62..32ceabbad 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -1487,7 +1487,7 @@ static void CreateFogHorizontalSprites(void) sprite->x = (i % 5) * 64 + 32; sprite->y = (i / 5) * 64 + 32; gWeatherPtr->sprites.s2.fogHSprites[i] = sprite; - sprite->oam.paletteNum = gWeatherPtr->altGammaSpritePalIndex; + sprite->oam.paletteNum = gWeatherPtr->contrastColorMapSpritePalIndex; } else { diff --git a/src/follow_me.c b/src/follow_me.c index 425eba6e7..c6043455a 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -233,7 +233,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) return; else if (!gSaveBlock2Ptr->follower.inProgress) return; - else if (ScriptContext2_IsEnabled() && !ignoreScriptActive) + else if (ArePlayerFieldControlsLocked() && !ignoreScriptActive) return; //Don't follow during a script diff --git a/src/rotating_gate.c b/src/rotating_gate.c index f9e732eb7..fa4221697 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -3,6 +3,7 @@ #include "event_data.h" #include "event_object_movement.h" #include "fieldmap.h" +#include "field_weather.h" #include "sound.h" #include "sprite.h" #include "constants/songs.h" @@ -241,7 +242,6 @@ static const struct OamData sOamData_RotatingGateLarge = .size = SPRITE_SIZE(64x64), .tileNum = 0, .priority = 2, - .paletteNum = 2, .affineParam = 0, }; @@ -258,7 +258,6 @@ static const struct OamData sOamData_RotatingGateRegular = .size = SPRITE_SIZE(32x32), .tileNum = 0, .priority = 2, - .paletteNum = 2, .affineParam = 0, }; @@ -460,7 +459,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = 0x1103, // OBJ_EVENT_PAL_TAG_NPC_1 .oam = &sOamData_RotatingGateLarge, .anims = sSpriteAnimTable_RotatingGateLarge, .images = NULL, @@ -471,7 +470,7 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = 0x1103, // OBJ_EVENT_PAL_TAG_NPC_1 .oam = &sOamData_RotatingGateRegular, .anims = sSpriteAnimTable_RotatingGateRegular, .images = NULL, @@ -743,10 +742,17 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) x = gate->x + MAP_OFFSET; y = gate->y + MAP_OFFSET; + + if (template.paletteTag != 0xFFFF) + { + LoadObjectEventPalette(template.paletteTag); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(template.paletteTag), GAMMA_ALT); + } sprite = &gSprites[spriteId]; sprite->data[0] = gateId; sprite->coordOffsetEnabled = 1; + sprite->oam.paletteNum = IndexOfSpritePaletteTag(template.paletteTag); GetMapCoordsFromSpritePos(x + deltaX, y + deltaY, &sprite->x, &sprite->y); RotatingGate_HideGatesOutsideViewport(sprite); diff --git a/src/script.c b/src/script.c index f781f6cfb..e6ebe9890 100644 --- a/src/script.c +++ b/src/script.c @@ -471,7 +471,7 @@ void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) u8* ReadWord(u8 index) { - struct ScriptContext *ctx = &sScriptContext1; + struct ScriptContext *ctx = &sGlobalScriptContext; return (T1_READ_PTR(&ctx->data[index])); } From bbe087d27deda8638250f3de62be8e91fbea581a Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 12 Mar 2023 12:34:34 -0700 Subject: [PATCH 52/71] Updated gamma names to color names --- include/field_weather.h | 6 +++--- src/event_object_movement.c | 10 +++++----- src/field_effect.c | 2 +- src/field_effect_helpers.c | 6 +++--- src/field_weather.c | 9 +-------- src/rotating_gate.c | 2 +- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/include/field_weather.h b/include/field_weather.h index 583b077b0..b21f0b609 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -143,9 +143,9 @@ extern const u16 gFogPalette[]; enum { - GAMMA_NONE, - GAMMA_NORMAL, - GAMMA_ALT, + COLOR_MAP_NONE, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_CONTRAST, }; void UpdatePaletteGammaType(u8 index, u8 gammaType); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 1633b7c2e..5244e2fab 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1951,7 +1951,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl if (spriteTemplate->paletteTag != 0xFFFF) { LoadObjectEventPalette(spriteTemplate->paletteTag); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_ALT); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), COLOR_MAP_CONTRAST); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) @@ -2118,7 +2118,7 @@ u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevati if (spriteTemplate.paletteTag != 0xFFFF) { LoadObjectEventPalette(spriteTemplate.paletteTag); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), COLOR_MAP_CONTRAST); } x += MAP_OFFSET; y += MAP_OFFSET; @@ -2254,7 +2254,7 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) if (spriteTemplate.paletteTag != 0xFFFF) { LoadObjectEventPalette(spriteTemplate.paletteTag); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), GAMMA_ALT); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate.paletteTag), COLOR_MAP_CONTRAST); } i = CreateSprite(&spriteTemplate, 0, 0, 0); @@ -2319,7 +2319,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) if (graphicsInfo->paletteTag != 0xFFFF) { LoadObjectEventPalette(graphicsInfo->paletteTag); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(graphicsInfo->paletteTag), GAMMA_ALT); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(graphicsInfo->paletteTag), COLOR_MAP_CONTRAST); } sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; @@ -2390,7 +2390,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]); sprite->images = gBerryTreePicTablePointers[berryId]; sprite->oam.paletteNum = IndexOfSpritePaletteTag(gBerryTreePaletteTagTablePointers[berryId][berryStage]); - UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); + UpdatePaletteGammaType(sprite->oam.paletteNum, COLOR_MAP_CONTRAST); StartSpriteAnim(sprite, berryStage); } } diff --git a/src/field_effect.c b/src/field_effect.c index 5bf58af33..eae9f0c75 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -785,7 +785,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(palette->tag), GAMMA_NORMAL); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(palette->tag), COLOR_MAP_DARK_CONTRAST); UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); (*script) += 4; } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 47b872982..e43af934e 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -93,7 +93,7 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1]; LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION); reflectionSprite->oam.paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION); - UpdatePaletteGammaType(reflectionSprite->oam.paletteNum, GAMMA_NORMAL); + UpdatePaletteGammaType(reflectionSprite->oam.paletteNum, COLOR_MAP_DARK_CONTRAST); UpdateSpritePaletteWithWeather(reflectionSprite->oam.paletteNum); } else @@ -126,7 +126,7 @@ void LoadSpecialReflectionPalette(struct Sprite *sprite) reflectionPalette.tag = GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) + 0x1000; LoadSpritePalette(&reflectionPalette); sprite->oam.paletteNum = IndexOfSpritePaletteTag(reflectionPalette.tag); - UpdatePaletteGammaType(sprite->oam.paletteNum, GAMMA_ALT); + UpdatePaletteGammaType(sprite->oam.paletteNum, COLOR_MAP_CONTRAST); UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); } @@ -1775,7 +1775,7 @@ static void LoadFieldEffectPalette_(u8 fieldEffect, bool8 updateGammaType) { LoadObjectEventPalette(spriteTemplate->paletteTag); if (updateGammaType) - UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), GAMMA_NORMAL); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(spriteTemplate->paletteTag), COLOR_MAP_DARK_CONTRAST); } } diff --git a/src/field_weather.c b/src/field_weather.c index 64df4f1ac..c8d02da68 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -19,13 +19,6 @@ #define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) -enum -{ - COLOR_MAP_NONE, - COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, -}; - struct RGBColor { u16 r:5; @@ -280,7 +273,7 @@ static void BuildColorMaps(void) s16 diff; for (i = 0; i <= 12; i++) - sBasePaletteColorMapTypes[i] = GAMMA_NORMAL; + sBasePaletteColorMapTypes[i] = COLOR_MAP_DARK_CONTRAST; sPaletteColorMapTypes = sBasePaletteColorMapTypes; for (i = 0; i < 2; i++) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index fa4221697..059ece90b 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -746,7 +746,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) if (template.paletteTag != 0xFFFF) { LoadObjectEventPalette(template.paletteTag); - UpdatePaletteGammaType(IndexOfSpritePaletteTag(template.paletteTag), GAMMA_ALT); + UpdatePaletteGammaType(IndexOfSpritePaletteTag(template.paletteTag), COLOR_MAP_CONTRAST); } sprite = &gSprites[spriteId]; From 260fca5b4625c8281a3347efbae94d1e10fe6702 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 12 Mar 2023 13:10:31 -0700 Subject: [PATCH 53/71] Removed the Gen 4 Pokemon that snuck in --- .../palettes/followers/abomasnow.pal | 19 ------------------ .../palettes/followers/ambipom.pal | 19 ------------------ .../palettes/followers/arceus_bug.pal | 19 ------------------ .../palettes/followers/arceus_dark.pal | 19 ------------------ .../palettes/followers/arceus_dragon.pal | 19 ------------------ .../palettes/followers/arceus_electric.pal | 19 ------------------ .../palettes/followers/arceus_fighting.pal | 19 ------------------ .../palettes/followers/arceus_fire.pal | 19 ------------------ .../palettes/followers/arceus_flying.pal | 19 ------------------ .../palettes/followers/arceus_ghost.pal | 19 ------------------ .../palettes/followers/arceus_grass.pal | 19 ------------------ .../palettes/followers/arceus_ground.pal | 19 ------------------ .../palettes/followers/arceus_ice.pal | 19 ------------------ .../palettes/followers/arceus_normal.pal | 19 ------------------ .../palettes/followers/arceus_poison.pal | 19 ------------------ .../palettes/followers/arceus_psychic.pal | 19 ------------------ .../palettes/followers/arceus_rock.pal | 19 ------------------ .../palettes/followers/arceus_steel.pal | 19 ------------------ .../palettes/followers/arceus_water.pal | 19 ------------------ .../palettes/followers/azelf.pal | 19 ------------------ .../palettes/followers/bastiodon.pal | 19 ------------------ .../palettes/followers/bibarel.pal | 19 ------------------ .../palettes/followers/bidoof.pal | 19 ------------------ .../palettes/followers/bonsly.pal | 19 ------------------ .../palettes/followers/bronzong.pal | 19 ------------------ .../palettes/followers/bronzor.pal | 19 ------------------ .../palettes/followers/budew.pal | 19 ------------------ .../palettes/followers/buizel.pal | 19 ------------------ .../palettes/followers/buneary.pal | 19 ------------------ .../palettes/followers/burmy.pal | 19 ------------------ .../palettes/followers/carnivine.pal | 19 ------------------ .../palettes/followers/chatot.pal | 19 ------------------ .../palettes/followers/cherrim.pal | 19 ------------------ .../palettes/followers/cherubi.pal | 19 ------------------ .../palettes/followers/chimchar.pal | 19 ------------------ .../palettes/followers/chingling.pal | 19 ------------------ .../palettes/followers/combee.pal | 19 ------------------ .../palettes/followers/cranidos.pal | 19 ------------------ .../palettes/followers/cresselia.pal | 19 ------------------ .../palettes/followers/croagunk.pal | 19 ------------------ .../palettes/followers/darkrai.pal | 19 ------------------ .../palettes/followers/dialga.pal | 19 ------------------ .../palettes/followers/drapion.pal | 19 ------------------ .../palettes/followers/drifblim.pal | 19 ------------------ .../palettes/followers/drifloon.pal | 19 ------------------ .../palettes/followers/dusknoir.pal | 19 ------------------ .../palettes/followers/electivire.pal | 19 ------------------ .../palettes/followers/empoleon.pal | 19 ------------------ .../palettes/followers/finneon.pal | 19 ------------------ .../palettes/followers/floatzel.pal | 19 ------------------ .../palettes/followers/froslass.pal | 19 ------------------ .../palettes/followers/gabite.pal | 19 ------------------ .../palettes/followers/gallade.pal | 19 ------------------ .../palettes/followers/garchomp.pal | 19 ------------------ .../palettes/followers/gastrodon_east.pal | 19 ------------------ .../palettes/followers/gastrodon_west.pal | 19 ------------------ .../palettes/followers/gible.pal | 19 ------------------ .../palettes/followers/giratina_normal.pal | 19 ------------------ .../palettes/followers/giratina_origin.pal | 19 ------------------ .../palettes/followers/glaceon.pal | 19 ------------------ .../palettes/followers/glameow.pal | 19 ------------------ .../palettes/followers/gliscor.pal | 19 ------------------ .../palettes/followers/grotle.pal | 19 ------------------ .../palettes/followers/happiny.pal | 19 ------------------ .../palettes/followers/heatran.pal | 19 ------------------ .../palettes/followers/hippopotas.pal | 19 ------------------ .../palettes/followers/hippowdon.pal | 19 ------------------ .../palettes/followers/honchkrow.pal | 19 ------------------ .../palettes/followers/infernape.pal | 19 ------------------ .../palettes/followers/kricketot.pal | 19 ------------------ .../palettes/followers/kricketune.pal | 19 ------------------ .../palettes/followers/leafeon.pal | 19 ------------------ .../palettes/followers/lickilicky.pal | 19 ------------------ .../palettes/followers/lopunny.pal | 19 ------------------ .../palettes/followers/lucario.pal | 19 ------------------ .../palettes/followers/lumineon.pal | 19 ------------------ .../palettes/followers/luxio.pal | 19 ------------------ .../palettes/followers/luxray.pal | 19 ------------------ .../palettes/followers/magmortar.pal | 19 ------------------ .../palettes/followers/magnezone.pal | 19 ------------------ .../palettes/followers/mamoswine.pal | 19 ------------------ .../palettes/followers/manaphy.pal | 19 ------------------ .../palettes/followers/mantyke.pal | 19 ------------------ .../palettes/followers/mesprit.pal | 19 ------------------ .../palettes/followers/mime_jr.pal | 19 ------------------ .../palettes/followers/mismagius.pal | 19 ------------------ .../palettes/followers/monferno.pal | 19 ------------------ .../palettes/followers/mothim.pal | 19 ------------------ .../palettes/followers/munchlax.pal | 19 ------------------ .../palettes/followers/pachirisu.pal | 19 ------------------ .../palettes/followers/palkia.pal | 19 ------------------ .../palettes/followers/phione.pal | 19 ------------------ .../palettes/followers/piplup.pal | 19 ------------------ .../palettes/followers/porygonz.pal | 19 ------------------ .../palettes/followers/prinplup.pal | 19 ------------------ .../palettes/followers/probopass.pal | 19 ------------------ .../palettes/followers/purugly.pal | 19 ------------------ .../palettes/followers/rampardos.pal | 19 ------------------ .../palettes/followers/regigigas.pal | 19 ------------------ .../palettes/followers/rhyperior.pal | 19 ------------------ .../palettes/followers/riolu.pal | 19 ------------------ .../palettes/followers/roserade.pal | 19 ------------------ .../palettes/followers/rotom_base.pal | 19 ------------------ .../palettes/followers/rotom_fan.pal | 19 ------------------ .../palettes/followers/rotom_frost.pal | 19 ------------------ .../palettes/followers/rotom_heat.pal | 19 ------------------ .../palettes/followers/rotom_mow.pal | 19 ------------------ .../palettes/followers/rotom_wash.pal | 19 ------------------ .../palettes/followers/shaymin_land.pal | 19 ------------------ .../palettes/followers/shaymin_sky.pal | 19 ------------------ .../palettes/followers/shellos_east.pal | 19 ------------------ .../palettes/followers/shellos_west.pal | 19 ------------------ .../palettes/followers/shieldon.pal | 19 ------------------ .../palettes/followers/shinx.pal | 19 ------------------ .../palettes/followers/skorupi.pal | 19 ------------------ .../palettes/followers/skuntank.pal | 19 ------------------ .../palettes/followers/snover.pal | 19 ------------------ .../palettes/followers/spiritomb.pal | 19 ------------------ .../palettes/followers/staraptor.pal | 19 ------------------ .../palettes/followers/staravia.pal | 19 ------------------ .../palettes/followers/starly.pal | 19 ------------------ .../palettes/followers/stunky.pal | 19 ------------------ .../palettes/followers/tangrowth.pal | 19 ------------------ .../palettes/followers/togekiss.pal | 19 ------------------ .../palettes/followers/torterra.pal | 19 ------------------ .../palettes/followers/toxicroak.pal | 19 ------------------ .../palettes/followers/turtwig.pal | 19 ------------------ .../object_events/palettes/followers/uxie.pal | 19 ------------------ .../palettes/followers/vespiquen.pal | 19 ------------------ .../palettes/followers/weavile.pal | 19 ------------------ .../palettes/followers/wormadam.pal | 19 ------------------ .../palettes/followers/wormadam_sand.pal | 19 ------------------ .../palettes/followers/wormadam_trash.pal | 19 ------------------ .../palettes/followers/yanmega.pal | 19 ------------------ .../pics/pokemon/followers/abomasnow.png | Bin 1052 -> 0 bytes .../pics/pokemon/followers/ambipom.png | Bin 1175 -> 0 bytes .../pics/pokemon/followers/arceus.png | Bin 1399 -> 0 bytes .../pics/pokemon/followers/azelf.png | Bin 767 -> 0 bytes .../pics/pokemon/followers/bastiodon.png | Bin 829 -> 0 bytes .../pics/pokemon/followers/bibarel.png | Bin 853 -> 0 bytes .../pics/pokemon/followers/bidoof.png | Bin 541 -> 0 bytes .../pics/pokemon/followers/bonsly.png | Bin 454 -> 0 bytes .../pics/pokemon/followers/bronzong.png | Bin 696 -> 0 bytes .../pics/pokemon/followers/bronzor.png | Bin 371 -> 0 bytes .../pics/pokemon/followers/budew.png | Bin 421 -> 0 bytes .../pics/pokemon/followers/buizel.png | Bin 719 -> 0 bytes .../pics/pokemon/followers/buneary.png | Bin 675 -> 0 bytes .../pics/pokemon/followers/burmy.png | Bin 552 -> 0 bytes .../pics/pokemon/followers/burmy_sand.png | Bin 504 -> 0 bytes .../pics/pokemon/followers/burmy_trash.png | Bin 505 -> 0 bytes .../pics/pokemon/followers/carnivine.png | Bin 759 -> 0 bytes .../pics/pokemon/followers/chatot.png | Bin 557 -> 0 bytes .../pics/pokemon/followers/cherrim.png | Bin 475 -> 0 bytes .../pics/pokemon/followers/cherubi.png | Bin 578 -> 0 bytes .../pics/pokemon/followers/chimchar.png | Bin 634 -> 0 bytes .../pics/pokemon/followers/chingling.png | Bin 554 -> 0 bytes .../pics/pokemon/followers/combee.png | Bin 527 -> 0 bytes .../pics/pokemon/followers/cranidos.png | Bin 532 -> 0 bytes .../pics/pokemon/followers/cresselia.png | Bin 972 -> 0 bytes .../pics/pokemon/followers/croagunk.png | Bin 555 -> 0 bytes .../pics/pokemon/followers/darkrai.png | Bin 1058 -> 0 bytes .../pics/pokemon/followers/dialga.png | Bin 1686 -> 0 bytes .../pics/pokemon/followers/drapion.png | Bin 1059 -> 0 bytes .../pics/pokemon/followers/drifblim.png | Bin 611 -> 0 bytes .../pics/pokemon/followers/drifloon.png | Bin 411 -> 0 bytes .../pics/pokemon/followers/dusknoir.png | Bin 938 -> 0 bytes .../pics/pokemon/followers/electivire.png | Bin 1021 -> 0 bytes .../pics/pokemon/followers/empoleon.png | Bin 824 -> 0 bytes .../pics/pokemon/followers/finneon.png | Bin 595 -> 0 bytes .../pics/pokemon/followers/floatzel.png | Bin 928 -> 0 bytes .../pics/pokemon/followers/froslass.png | Bin 773 -> 0 bytes .../pics/pokemon/followers/gabite.png | Bin 799 -> 0 bytes .../pics/pokemon/followers/gallade.png | Bin 823 -> 0 bytes .../pics/pokemon/followers/garchomp.png | Bin 1162 -> 0 bytes .../pics/pokemon/followers/gastrodon_east.png | Bin 887 -> 0 bytes .../pics/pokemon/followers/gastrodon_west.png | Bin 896 -> 0 bytes .../pics/pokemon/followers/gible.png | Bin 615 -> 0 bytes .../pokemon/followers/giratina_normal.png | Bin 2291 -> 0 bytes .../pokemon/followers/giratina_origin.png | Bin 2017 -> 0 bytes .../pics/pokemon/followers/glaceon.png | Bin 729 -> 0 bytes .../pics/pokemon/followers/glameow.png | Bin 556 -> 0 bytes .../pics/pokemon/followers/gliscor.png | Bin 993 -> 0 bytes .../pics/pokemon/followers/grotle.png | Bin 689 -> 0 bytes .../pics/pokemon/followers/happiny.png | Bin 545 -> 0 bytes .../pics/pokemon/followers/heatran.png | Bin 1128 -> 0 bytes .../pics/pokemon/followers/hippopotas.png | Bin 662 -> 0 bytes .../pics/pokemon/followers/hippowdon.png | Bin 739 -> 0 bytes .../pics/pokemon/followers/honchkrow.png | Bin 727 -> 0 bytes .../pics/pokemon/followers/infernape.png | Bin 1108 -> 0 bytes .../pics/pokemon/followers/kricketot.png | Bin 566 -> 0 bytes .../pics/pokemon/followers/kricketune.png | Bin 847 -> 0 bytes .../pics/pokemon/followers/leafeon.png | Bin 741 -> 0 bytes .../pics/pokemon/followers/lickilicky.png | Bin 711 -> 0 bytes .../pics/pokemon/followers/lopunny.png | Bin 797 -> 0 bytes .../pics/pokemon/followers/lucario.png | Bin 787 -> 0 bytes .../pics/pokemon/followers/lumineon.png | Bin 763 -> 0 bytes .../pics/pokemon/followers/luxio.png | Bin 744 -> 0 bytes .../pics/pokemon/followers/luxray.png | Bin 796 -> 0 bytes .../pics/pokemon/followers/magmortar.png | Bin 1083 -> 0 bytes .../pics/pokemon/followers/magnezone.png | Bin 756 -> 0 bytes .../pics/pokemon/followers/mamoswine.png | Bin 880 -> 0 bytes .../pics/pokemon/followers/manaphy.png | Bin 553 -> 0 bytes .../pics/pokemon/followers/mantyke.png | Bin 644 -> 0 bytes .../pics/pokemon/followers/mesprit.png | Bin 803 -> 0 bytes .../pics/pokemon/followers/mime_jr.png | Bin 524 -> 0 bytes .../pics/pokemon/followers/mismagius.png | Bin 929 -> 0 bytes .../pics/pokemon/followers/monferno.png | Bin 809 -> 0 bytes .../pics/pokemon/followers/mothim.png | Bin 999 -> 0 bytes .../pics/pokemon/followers/munchlax.png | Bin 589 -> 0 bytes .../pics/pokemon/followers/pachirisu.png | Bin 532 -> 0 bytes .../pics/pokemon/followers/palkia.png | Bin 2116 -> 0 bytes .../pics/pokemon/followers/phione.png | Bin 569 -> 0 bytes .../pics/pokemon/followers/piplup.png | Bin 477 -> 0 bytes .../pics/pokemon/followers/porygonz.png | Bin 647 -> 0 bytes .../pics/pokemon/followers/prinplup.png | Bin 681 -> 0 bytes .../pics/pokemon/followers/probopass.png | Bin 1012 -> 0 bytes .../pics/pokemon/followers/purugly.png | Bin 765 -> 0 bytes .../pics/pokemon/followers/rampardos.png | Bin 904 -> 0 bytes .../pics/pokemon/followers/regigigas.png | Bin 1836 -> 0 bytes .../pics/pokemon/followers/rhyperior.png | Bin 994 -> 0 bytes .../pics/pokemon/followers/riolu.png | Bin 618 -> 0 bytes .../pics/pokemon/followers/roserade.png | Bin 956 -> 0 bytes .../pics/pokemon/followers/rotom_base.png | Bin 545 -> 0 bytes .../pics/pokemon/followers/rotom_fan.png | Bin 695 -> 0 bytes .../pics/pokemon/followers/rotom_frost.png | Bin 619 -> 0 bytes .../pics/pokemon/followers/rotom_heat.png | Bin 563 -> 0 bytes .../pics/pokemon/followers/rotom_mow.png | Bin 754 -> 0 bytes .../pics/pokemon/followers/rotom_wash.png | Bin 845 -> 0 bytes .../pics/pokemon/followers/shaymin_land.png | Bin 485 -> 0 bytes .../pics/pokemon/followers/shaymin_sky.png | Bin 1030 -> 0 bytes .../pics/pokemon/followers/shellos_east.png | Bin 603 -> 0 bytes .../pics/pokemon/followers/shellos_west.png | Bin 583 -> 0 bytes .../pics/pokemon/followers/shieldon.png | Bin 566 -> 0 bytes .../pics/pokemon/followers/shinx.png | Bin 567 -> 0 bytes .../pics/pokemon/followers/skorupi.png | Bin 686 -> 0 bytes .../pics/pokemon/followers/skuntank.png | Bin 752 -> 0 bytes .../pics/pokemon/followers/snover.png | Bin 750 -> 0 bytes .../pics/pokemon/followers/spiritomb.png | Bin 804 -> 0 bytes .../pics/pokemon/followers/staraptor.png | Bin 1180 -> 0 bytes .../pics/pokemon/followers/staravia.png | Bin 985 -> 0 bytes .../pics/pokemon/followers/starly.png | Bin 479 -> 0 bytes .../pics/pokemon/followers/stunky.png | Bin 597 -> 0 bytes .../pics/pokemon/followers/tangrowth.png | Bin 1042 -> 0 bytes .../pics/pokemon/followers/togekiss.png | Bin 733 -> 0 bytes .../pics/pokemon/followers/torterra.png | Bin 1245 -> 0 bytes .../pics/pokemon/followers/toxicroak.png | Bin 665 -> 0 bytes .../pics/pokemon/followers/turtwig.png | Bin 534 -> 0 bytes .../pics/pokemon/followers/uxie.png | Bin 770 -> 0 bytes .../pics/pokemon/followers/vespiquen.png | Bin 883 -> 0 bytes .../pics/pokemon/followers/weavile.png | Bin 663 -> 0 bytes .../pics/pokemon/followers/wormadam.png | Bin 703 -> 0 bytes .../pics/pokemon/followers/wormadam_sand.png | Bin 705 -> 0 bytes .../pics/pokemon/followers/wormadam_trash.png | Bin 731 -> 0 bytes .../pics/pokemon/followers/yanmega.png | Bin 1089 -> 0 bytes 254 files changed, 2546 deletions(-) delete mode 100644 graphics/object_events/palettes/followers/abomasnow.pal delete mode 100644 graphics/object_events/palettes/followers/ambipom.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_bug.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_dark.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_dragon.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_electric.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_fighting.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_fire.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_flying.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ghost.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_grass.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ground.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_ice.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_normal.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_poison.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_psychic.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_rock.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_steel.pal delete mode 100644 graphics/object_events/palettes/followers/arceus_water.pal delete mode 100644 graphics/object_events/palettes/followers/azelf.pal delete mode 100644 graphics/object_events/palettes/followers/bastiodon.pal delete mode 100644 graphics/object_events/palettes/followers/bibarel.pal delete mode 100644 graphics/object_events/palettes/followers/bidoof.pal delete mode 100644 graphics/object_events/palettes/followers/bonsly.pal delete mode 100644 graphics/object_events/palettes/followers/bronzong.pal delete mode 100644 graphics/object_events/palettes/followers/bronzor.pal delete mode 100644 graphics/object_events/palettes/followers/budew.pal delete mode 100644 graphics/object_events/palettes/followers/buizel.pal delete mode 100644 graphics/object_events/palettes/followers/buneary.pal delete mode 100644 graphics/object_events/palettes/followers/burmy.pal delete mode 100644 graphics/object_events/palettes/followers/carnivine.pal delete mode 100644 graphics/object_events/palettes/followers/chatot.pal delete mode 100644 graphics/object_events/palettes/followers/cherrim.pal delete mode 100644 graphics/object_events/palettes/followers/cherubi.pal delete mode 100644 graphics/object_events/palettes/followers/chimchar.pal delete mode 100644 graphics/object_events/palettes/followers/chingling.pal delete mode 100644 graphics/object_events/palettes/followers/combee.pal delete mode 100644 graphics/object_events/palettes/followers/cranidos.pal delete mode 100644 graphics/object_events/palettes/followers/cresselia.pal delete mode 100644 graphics/object_events/palettes/followers/croagunk.pal delete mode 100644 graphics/object_events/palettes/followers/darkrai.pal delete mode 100644 graphics/object_events/palettes/followers/dialga.pal delete mode 100644 graphics/object_events/palettes/followers/drapion.pal delete mode 100644 graphics/object_events/palettes/followers/drifblim.pal delete mode 100644 graphics/object_events/palettes/followers/drifloon.pal delete mode 100644 graphics/object_events/palettes/followers/dusknoir.pal delete mode 100644 graphics/object_events/palettes/followers/electivire.pal delete mode 100644 graphics/object_events/palettes/followers/empoleon.pal delete mode 100644 graphics/object_events/palettes/followers/finneon.pal delete mode 100644 graphics/object_events/palettes/followers/floatzel.pal delete mode 100644 graphics/object_events/palettes/followers/froslass.pal delete mode 100644 graphics/object_events/palettes/followers/gabite.pal delete mode 100644 graphics/object_events/palettes/followers/gallade.pal delete mode 100644 graphics/object_events/palettes/followers/garchomp.pal delete mode 100644 graphics/object_events/palettes/followers/gastrodon_east.pal delete mode 100644 graphics/object_events/palettes/followers/gastrodon_west.pal delete mode 100644 graphics/object_events/palettes/followers/gible.pal delete mode 100644 graphics/object_events/palettes/followers/giratina_normal.pal delete mode 100644 graphics/object_events/palettes/followers/giratina_origin.pal delete mode 100644 graphics/object_events/palettes/followers/glaceon.pal delete mode 100644 graphics/object_events/palettes/followers/glameow.pal delete mode 100644 graphics/object_events/palettes/followers/gliscor.pal delete mode 100644 graphics/object_events/palettes/followers/grotle.pal delete mode 100644 graphics/object_events/palettes/followers/happiny.pal delete mode 100644 graphics/object_events/palettes/followers/heatran.pal delete mode 100644 graphics/object_events/palettes/followers/hippopotas.pal delete mode 100644 graphics/object_events/palettes/followers/hippowdon.pal delete mode 100644 graphics/object_events/palettes/followers/honchkrow.pal delete mode 100644 graphics/object_events/palettes/followers/infernape.pal delete mode 100644 graphics/object_events/palettes/followers/kricketot.pal delete mode 100644 graphics/object_events/palettes/followers/kricketune.pal delete mode 100644 graphics/object_events/palettes/followers/leafeon.pal delete mode 100644 graphics/object_events/palettes/followers/lickilicky.pal delete mode 100644 graphics/object_events/palettes/followers/lopunny.pal delete mode 100644 graphics/object_events/palettes/followers/lucario.pal delete mode 100644 graphics/object_events/palettes/followers/lumineon.pal delete mode 100644 graphics/object_events/palettes/followers/luxio.pal delete mode 100644 graphics/object_events/palettes/followers/luxray.pal delete mode 100644 graphics/object_events/palettes/followers/magmortar.pal delete mode 100644 graphics/object_events/palettes/followers/magnezone.pal delete mode 100644 graphics/object_events/palettes/followers/mamoswine.pal delete mode 100644 graphics/object_events/palettes/followers/manaphy.pal delete mode 100644 graphics/object_events/palettes/followers/mantyke.pal delete mode 100644 graphics/object_events/palettes/followers/mesprit.pal delete mode 100644 graphics/object_events/palettes/followers/mime_jr.pal delete mode 100644 graphics/object_events/palettes/followers/mismagius.pal delete mode 100644 graphics/object_events/palettes/followers/monferno.pal delete mode 100644 graphics/object_events/palettes/followers/mothim.pal delete mode 100644 graphics/object_events/palettes/followers/munchlax.pal delete mode 100644 graphics/object_events/palettes/followers/pachirisu.pal delete mode 100644 graphics/object_events/palettes/followers/palkia.pal delete mode 100644 graphics/object_events/palettes/followers/phione.pal delete mode 100644 graphics/object_events/palettes/followers/piplup.pal delete mode 100644 graphics/object_events/palettes/followers/porygonz.pal delete mode 100644 graphics/object_events/palettes/followers/prinplup.pal delete mode 100644 graphics/object_events/palettes/followers/probopass.pal delete mode 100644 graphics/object_events/palettes/followers/purugly.pal delete mode 100644 graphics/object_events/palettes/followers/rampardos.pal delete mode 100644 graphics/object_events/palettes/followers/regigigas.pal delete mode 100644 graphics/object_events/palettes/followers/rhyperior.pal delete mode 100644 graphics/object_events/palettes/followers/riolu.pal delete mode 100644 graphics/object_events/palettes/followers/roserade.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_base.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_fan.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_frost.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_heat.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_mow.pal delete mode 100644 graphics/object_events/palettes/followers/rotom_wash.pal delete mode 100644 graphics/object_events/palettes/followers/shaymin_land.pal delete mode 100644 graphics/object_events/palettes/followers/shaymin_sky.pal delete mode 100644 graphics/object_events/palettes/followers/shellos_east.pal delete mode 100644 graphics/object_events/palettes/followers/shellos_west.pal delete mode 100644 graphics/object_events/palettes/followers/shieldon.pal delete mode 100644 graphics/object_events/palettes/followers/shinx.pal delete mode 100644 graphics/object_events/palettes/followers/skorupi.pal delete mode 100644 graphics/object_events/palettes/followers/skuntank.pal delete mode 100644 graphics/object_events/palettes/followers/snover.pal delete mode 100644 graphics/object_events/palettes/followers/spiritomb.pal delete mode 100644 graphics/object_events/palettes/followers/staraptor.pal delete mode 100644 graphics/object_events/palettes/followers/staravia.pal delete mode 100644 graphics/object_events/palettes/followers/starly.pal delete mode 100644 graphics/object_events/palettes/followers/stunky.pal delete mode 100644 graphics/object_events/palettes/followers/tangrowth.pal delete mode 100644 graphics/object_events/palettes/followers/togekiss.pal delete mode 100644 graphics/object_events/palettes/followers/torterra.pal delete mode 100644 graphics/object_events/palettes/followers/toxicroak.pal delete mode 100644 graphics/object_events/palettes/followers/turtwig.pal delete mode 100644 graphics/object_events/palettes/followers/uxie.pal delete mode 100644 graphics/object_events/palettes/followers/vespiquen.pal delete mode 100644 graphics/object_events/palettes/followers/weavile.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam_sand.pal delete mode 100644 graphics/object_events/palettes/followers/wormadam_trash.pal delete mode 100644 graphics/object_events/palettes/followers/yanmega.pal delete mode 100644 graphics/object_events/pics/pokemon/followers/abomasnow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/ambipom.png delete mode 100644 graphics/object_events/pics/pokemon/followers/arceus.png delete mode 100644 graphics/object_events/pics/pokemon/followers/azelf.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bastiodon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bibarel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bidoof.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bonsly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bronzong.png delete mode 100644 graphics/object_events/pics/pokemon/followers/bronzor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/budew.png delete mode 100644 graphics/object_events/pics/pokemon/followers/buizel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/buneary.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy_sand.png delete mode 100644 graphics/object_events/pics/pokemon/followers/burmy_trash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/carnivine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chatot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cherrim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cherubi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chimchar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/chingling.png delete mode 100644 graphics/object_events/pics/pokemon/followers/combee.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cranidos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/cresselia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/croagunk.png delete mode 100644 graphics/object_events/pics/pokemon/followers/darkrai.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dialga.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drapion.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drifblim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/drifloon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/dusknoir.png delete mode 100644 graphics/object_events/pics/pokemon/followers/electivire.png delete mode 100644 graphics/object_events/pics/pokemon/followers/empoleon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/finneon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/floatzel.png delete mode 100644 graphics/object_events/pics/pokemon/followers/froslass.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gabite.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gallade.png delete mode 100644 graphics/object_events/pics/pokemon/followers/garchomp.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_east.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gastrodon_west.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gible.png delete mode 100644 graphics/object_events/pics/pokemon/followers/giratina_normal.png delete mode 100644 graphics/object_events/pics/pokemon/followers/giratina_origin.png delete mode 100644 graphics/object_events/pics/pokemon/followers/glaceon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/glameow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/gliscor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/grotle.png delete mode 100644 graphics/object_events/pics/pokemon/followers/happiny.png delete mode 100644 graphics/object_events/pics/pokemon/followers/heatran.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hippopotas.png delete mode 100644 graphics/object_events/pics/pokemon/followers/hippowdon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/honchkrow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/infernape.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kricketot.png delete mode 100644 graphics/object_events/pics/pokemon/followers/kricketune.png delete mode 100644 graphics/object_events/pics/pokemon/followers/leafeon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lickilicky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lopunny.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lucario.png delete mode 100644 graphics/object_events/pics/pokemon/followers/lumineon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/luxio.png delete mode 100644 graphics/object_events/pics/pokemon/followers/luxray.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magmortar.png delete mode 100644 graphics/object_events/pics/pokemon/followers/magnezone.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mamoswine.png delete mode 100644 graphics/object_events/pics/pokemon/followers/manaphy.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mantyke.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mesprit.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mime_jr.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mismagius.png delete mode 100644 graphics/object_events/pics/pokemon/followers/monferno.png delete mode 100644 graphics/object_events/pics/pokemon/followers/mothim.png delete mode 100644 graphics/object_events/pics/pokemon/followers/munchlax.png delete mode 100644 graphics/object_events/pics/pokemon/followers/pachirisu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/palkia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/phione.png delete mode 100644 graphics/object_events/pics/pokemon/followers/piplup.png delete mode 100644 graphics/object_events/pics/pokemon/followers/porygonz.png delete mode 100644 graphics/object_events/pics/pokemon/followers/prinplup.png delete mode 100644 graphics/object_events/pics/pokemon/followers/probopass.png delete mode 100644 graphics/object_events/pics/pokemon/followers/purugly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rampardos.png delete mode 100644 graphics/object_events/pics/pokemon/followers/regigigas.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rhyperior.png delete mode 100644 graphics/object_events/pics/pokemon/followers/riolu.png delete mode 100644 graphics/object_events/pics/pokemon/followers/roserade.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_base.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_fan.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_frost.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_heat.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_mow.png delete mode 100644 graphics/object_events/pics/pokemon/followers/rotom_wash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_land.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shaymin_sky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shellos_east.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shellos_west.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shieldon.png delete mode 100644 graphics/object_events/pics/pokemon/followers/shinx.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skorupi.png delete mode 100644 graphics/object_events/pics/pokemon/followers/skuntank.png delete mode 100644 graphics/object_events/pics/pokemon/followers/snover.png delete mode 100644 graphics/object_events/pics/pokemon/followers/spiritomb.png delete mode 100644 graphics/object_events/pics/pokemon/followers/staraptor.png delete mode 100644 graphics/object_events/pics/pokemon/followers/staravia.png delete mode 100644 graphics/object_events/pics/pokemon/followers/starly.png delete mode 100644 graphics/object_events/pics/pokemon/followers/stunky.png delete mode 100644 graphics/object_events/pics/pokemon/followers/tangrowth.png delete mode 100644 graphics/object_events/pics/pokemon/followers/togekiss.png delete mode 100644 graphics/object_events/pics/pokemon/followers/torterra.png delete mode 100644 graphics/object_events/pics/pokemon/followers/toxicroak.png delete mode 100644 graphics/object_events/pics/pokemon/followers/turtwig.png delete mode 100644 graphics/object_events/pics/pokemon/followers/uxie.png delete mode 100644 graphics/object_events/pics/pokemon/followers/vespiquen.png delete mode 100644 graphics/object_events/pics/pokemon/followers/weavile.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_sand.png delete mode 100644 graphics/object_events/pics/pokemon/followers/wormadam_trash.png delete mode 100644 graphics/object_events/pics/pokemon/followers/yanmega.png diff --git a/graphics/object_events/palettes/followers/abomasnow.pal b/graphics/object_events/palettes/followers/abomasnow.pal deleted file mode 100644 index ddb58d170..000000000 --- a/graphics/object_events/palettes/followers/abomasnow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 65 -193 137 209 -121 121 153 -185 193 209 -49 73 57 -1 1 1 -217 217 233 -49 153 73 -161 169 201 -81 81 81 -233 233 249 -145 121 153 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/ambipom.pal b/graphics/object_events/palettes/followers/ambipom.pal deleted file mode 100644 index c4b6f24dc..000000000 --- a/graphics/object_events/palettes/followers/ambipom.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 129 97 -217 201 145 -201 73 105 -97 81 65 -169 129 241 -185 201 225 -1 1 1 -153 105 201 -57 49 97 -105 65 153 -233 233 249 -97 97 97 -233 217 161 -201 177 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_bug.pal b/graphics/object_events/palettes/followers/arceus_bug.pal deleted file mode 100644 index 5b16119d2..000000000 --- a/graphics/object_events/palettes/followers/arceus_bug.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 113 201 -121 129 145 -49 89 41 -145 217 121 -201 209 225 -89 97 113 -249 161 249 -41 97 41 -161 177 201 -113 161 57 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dark.pal b/graphics/object_events/palettes/followers/arceus_dark.pal deleted file mode 100644 index 411065d58..000000000 --- a/graphics/object_events/palettes/followers/arceus_dark.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -16 136 0 -88 56 56 -32 40 48 -72 80 96 -200 208 224 -56 32 32 -0 142 15 -248 128 3 -160 176 200 -24 40 56 -16 48 64 -64 72 72 -112 120 144 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_dragon.pal b/graphics/object_events/palettes/followers/arceus_dragon.pal deleted file mode 100644 index 5ba8310c2..000000000 --- a/graphics/object_events/palettes/followers/arceus_dragon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 9 0 -96 136 120 -112 8 128 -176 80 216 -201 209 225 -64 104 88 -0 14 0 -192 128 3 -161 177 201 -144 32 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_electric.pal b/graphics/object_events/palettes/followers/arceus_electric.pal deleted file mode 100644 index a3efd313c..000000000 --- a/graphics/object_events/palettes/followers/arceus_electric.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -200 96 0 -136 128 88 -128 112 0 -248 232 88 -201 209 225 -112 96 56 -232 128 0 -192 128 3 -161 177 201 -216 192 56 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fighting.pal b/graphics/object_events/palettes/followers/arceus_fighting.pal deleted file mode 100644 index c81b5a5b1..000000000 --- a/graphics/object_events/palettes/followers/arceus_fighting.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -176 112 0 -121 129 145 -104 24 8 -192 88 32 -201 209 225 -89 97 113 -232 176 0 -192 128 3 -161 177 201 -152 56 32 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_fire.pal b/graphics/object_events/palettes/followers/arceus_fire.pal deleted file mode 100644 index f8b616e47..000000000 --- a/graphics/object_events/palettes/followers/arceus_fire.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -200 120 0 -144 96 88 -160 24 16 -240 96 16 -201 209 225 -128 32 32 -248 224 0 -192 128 3 -161 177 201 -208 48 16 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_flying.pal b/graphics/object_events/palettes/followers/arceus_flying.pal deleted file mode 100644 index fceaad45d..000000000 --- a/graphics/object_events/palettes/followers/arceus_flying.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -160 160 168 -121 129 145 -72 80 136 -144 152 208 -201 209 225 -89 97 113 -232 240 240 -40 128 152 -161 177 201 -104 112 168 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ghost.pal b/graphics/object_events/palettes/followers/arceus_ghost.pal deleted file mode 100644 index d114a0e09..000000000 --- a/graphics/object_events/palettes/followers/arceus_ghost.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -160 32 0 -104 80 144 -88 40 144 -160 96 224 -201 209 225 -80 48 136 -232 64 0 -248 248 56 -161 177 201 -120 80 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_grass.pal b/graphics/object_events/palettes/followers/arceus_grass.pal deleted file mode 100644 index 410680501..000000000 --- a/graphics/object_events/palettes/followers/arceus_grass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -192 176 0 -88 144 112 -40 104 48 -88 200 56 -201 209 225 -56 112 80 -248 224 0 -192 128 3 -161 177 201 -64 152 48 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ground.pal b/graphics/object_events/palettes/followers/arceus_ground.pal deleted file mode 100644 index 05cb67bd0..000000000 --- a/graphics/object_events/palettes/followers/arceus_ground.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 128 144 -136 112 80 -136 64 0 -192 136 56 -201 209 225 -104 88 56 -176 176 192 -192 128 3 -161 177 201 -168 104 24 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_ice.pal b/graphics/object_events/palettes/followers/arceus_ice.pal deleted file mode 100644 index ca2c82422..000000000 --- a/graphics/object_events/palettes/followers/arceus_ice.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 128 136 -72 136 168 -40 96 128 -160 248 248 -201 209 225 -40 96 128 -224 224 232 -192 128 3 -161 177 201 -120 192 248 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_normal.pal b/graphics/object_events/palettes/followers/arceus_normal.pal deleted file mode 100644 index 27bb0d302..000000000 --- a/graphics/object_events/palettes/followers/arceus_normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 129 65 -121 129 145 -105 97 25 -233 209 25 -201 209 225 -89 97 113 -57 177 89 -241 65 65 -161 177 201 -177 153 25 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_poison.pal b/graphics/object_events/palettes/followers/arceus_poison.pal deleted file mode 100644 index 6822a6e3c..000000000 --- a/graphics/object_events/palettes/followers/arceus_poison.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -192 96 208 -121 129 145 -80 24 96 -176 96 184 -201 209 225 -89 97 113 -240 160 232 -192 128 3 -161 177 201 -128 48 144 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_psychic.pal b/graphics/object_events/palettes/followers/arceus_psychic.pal deleted file mode 100644 index ccbce5040..000000000 --- a/graphics/object_events/palettes/followers/arceus_psychic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -128 9 0 -121 129 145 -152 0 3 -232 72 112 -201 209 225 -89 97 113 -0 14 0 -192 128 3 -161 177 201 -192 24 72 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_rock.pal b/graphics/object_events/palettes/followers/arceus_rock.pal deleted file mode 100644 index 0f0209f19..000000000 --- a/graphics/object_events/palettes/followers/arceus_rock.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -176 152 80 -121 129 145 -96 88 48 -144 136 96 -201 209 225 -89 97 113 -216 192 120 -64 80 64 -161 177 201 -112 104 64 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_steel.pal b/graphics/object_events/palettes/followers/arceus_steel.pal deleted file mode 100644 index 0720ec239..000000000 --- a/graphics/object_events/palettes/followers/arceus_steel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -168 160 0 -121 129 145 -88 88 96 -192 192 208 -201 209 225 -89 97 113 -232 224 0 -96 104 96 -161 177 201 -128 128 136 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/arceus_water.pal b/graphics/object_events/palettes/followers/arceus_water.pal deleted file mode 100644 index 7abe36e2f..000000000 --- a/graphics/object_events/palettes/followers/arceus_water.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -48 128 64 -72 112 192 -16 56 112 -24 128 232 -201 209 225 -40 104 136 -56 176 88 -240 64 64 -161 177 201 -16 120 184 -17 17 17 -65 73 73 -113 121 145 -233 233 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/azelf.pal b/graphics/object_events/palettes/followers/azelf.pal deleted file mode 100644 index 300aab16d..000000000 --- a/graphics/object_events/palettes/followers/azelf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 33 -113 129 177 -33 65 113 -145 185 209 -169 41 1 -1 1 1 -249 169 153 -49 113 177 -73 73 89 -249 177 17 -233 233 249 -33 89 169 -233 65 33 -177 209 249 -73 129 209 diff --git a/graphics/object_events/palettes/followers/bastiodon.pal b/graphics/object_events/palettes/followers/bastiodon.pal deleted file mode 100644 index 7285edf74..000000000 --- a/graphics/object_events/palettes/followers/bastiodon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 105 73 -121 121 121 -225 169 33 -57 57 57 -1 1 1 -249 185 65 -97 97 97 -193 145 49 -201 201 201 -153 153 153 -73 73 73 -249 185 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bibarel.pal b/graphics/object_events/palettes/followers/bibarel.pal deleted file mode 100644 index 8c6e3b227..000000000 --- a/graphics/object_events/palettes/followers/bibarel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 65 -185 185 193 -1 1 1 -73 57 33 -137 137 137 -193 161 65 -89 81 65 -49 49 49 -233 233 249 -153 25 41 -233 209 129 -201 161 97 -177 137 57 -57 57 49 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bidoof.pal b/graphics/object_events/palettes/followers/bidoof.pal deleted file mode 100644 index 3d8d227c2..000000000 --- a/graphics/object_events/palettes/followers/bidoof.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 65 -185 185 193 -73 57 33 -1 1 1 -193 161 65 -89 81 65 -153 25 41 -233 233 249 -233 209 129 -201 161 97 -57 57 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bonsly.pal b/graphics/object_events/palettes/followers/bonsly.pal deleted file mode 100644 index 50e1d53b2..000000000 --- a/graphics/object_events/palettes/followers/bonsly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 113 73 -201 169 1 -193 97 161 -25 81 17 -1 1 1 -73 153 65 -89 65 17 -225 193 1 -185 153 89 -121 209 121 -113 89 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzong.pal b/graphics/object_events/palettes/followers/bronzong.pal deleted file mode 100644 index 978ed89dc..000000000 --- a/graphics/object_events/palettes/followers/bronzong.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 113 105 -73 161 153 -33 57 49 -153 169 169 -129 49 57 -49 137 129 -49 97 89 -1 1 1 -145 193 201 -97 153 153 -41 73 65 -161 49 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/bronzor.pal b/graphics/object_events/palettes/followers/bronzor.pal deleted file mode 100644 index 9db457be9..000000000 --- a/graphics/object_events/palettes/followers/bronzor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 145 17 -65 121 153 -41 65 65 -1 1 1 -33 81 97 -73 153 193 -233 201 1 -41 97 121 -89 177 209 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/budew.pal b/graphics/object_events/palettes/followers/budew.pal deleted file mode 100644 index 381d462e1..000000000 --- a/graphics/object_events/palettes/followers/budew.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 113 9 -217 209 57 -33 57 17 -145 113 33 -1 1 1 -65 65 65 -145 201 105 -89 145 17 -201 153 17 -169 217 145 -33 81 9 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/buizel.pal b/graphics/object_events/palettes/followers/buizel.pal deleted file mode 100644 index bed60a6b3..000000000 --- a/graphics/object_events/palettes/followers/buizel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -1 1 1 -161 97 41 -241 225 129 -249 193 33 -65 97 121 -177 193 209 -89 57 49 -73 137 193 -233 233 249 -217 185 73 -201 145 1 -113 113 113 -201 105 33 -0 0 0 diff --git a/graphics/object_events/palettes/followers/buneary.pal b/graphics/object_events/palettes/followers/buneary.pal deleted file mode 100644 index 1e81873ab..000000000 --- a/graphics/object_events/palettes/followers/buneary.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 65 -233 217 169 -201 161 65 -57 49 33 -97 81 65 -209 121 121 -1 1 1 -145 81 89 -233 233 249 -185 145 89 -233 193 137 -81 81 73 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/burmy.pal b/graphics/object_events/palettes/followers/burmy.pal deleted file mode 100644 index 3d8350f7d..000000000 --- a/graphics/object_events/palettes/followers/burmy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -81 169 25 -41 73 41 -1 1 1 -249 177 1 -49 49 49 -185 121 65 -137 209 57 -97 97 97 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/carnivine.pal b/graphics/object_events/palettes/followers/carnivine.pal deleted file mode 100644 index 7eed39a29..000000000 --- a/graphics/object_events/palettes/followers/carnivine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -177 185 193 -41 73 17 -129 169 65 -81 97 41 -201 153 17 -73 145 25 -145 73 49 -233 233 249 -105 41 41 -1 1 1 -153 201 89 -57 57 57 -137 97 25 -105 137 49 diff --git a/graphics/object_events/palettes/followers/chatot.pal b/graphics/object_events/palettes/followers/chatot.pal deleted file mode 100644 index c61576eaf..000000000 --- a/graphics/object_events/palettes/followers/chatot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 137 33 -33 129 201 -57 57 57 -129 121 121 -33 81 113 -233 233 249 -161 129 9 -217 129 177 -1 1 1 -145 57 113 -249 169 25 -89 89 89 -153 161 169 -177 57 129 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cherrim.pal b/graphics/object_events/palettes/followers/cherrim.pal deleted file mode 100644 index 4c7ecbf5d..000000000 --- a/graphics/object_events/palettes/followers/cherrim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -41 97 17 -113 65 137 -81 41 57 -81 65 97 -81 153 25 -153 73 193 -185 73 121 -65 41 73 -1 1 1 -129 57 89 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cherubi.pal b/graphics/object_events/palettes/followers/cherubi.pal deleted file mode 100644 index 7aa77baf7..000000000 --- a/graphics/object_events/palettes/followers/cherubi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -41 73 17 -233 233 249 -129 57 89 -81 41 57 -1 1 1 -225 97 145 -73 153 17 -177 25 97 -185 73 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/chimchar.pal b/graphics/object_events/palettes/followers/chimchar.pal deleted file mode 100644 index 1226c2a99..000000000 --- a/graphics/object_events/palettes/followers/chimchar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -105 57 41 -1 1 1 -241 57 41 -193 145 73 -193 193 193 -129 81 41 -185 97 17 -249 233 169 -249 193 1 -233 233 249 -217 185 113 -129 17 17 -209 81 65 -161 89 81 diff --git a/graphics/object_events/palettes/followers/chingling.pal b/graphics/object_events/palettes/followers/chingling.pal deleted file mode 100644 index c027c84d6..000000000 --- a/graphics/object_events/palettes/followers/chingling.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 153 41 -1 1 1 -65 65 65 -193 201 209 -137 105 33 -249 193 1 -225 233 241 -137 25 25 -249 249 153 -193 57 57 -89 89 89 -249 225 9 -233 233 249 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/combee.pal b/graphics/object_events/palettes/followers/combee.pal deleted file mode 100644 index 53ea130b4..000000000 --- a/graphics/object_events/palettes/followers/combee.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 145 25 -73 65 41 -153 185 233 -89 105 129 -249 217 121 -153 105 17 -1 1 1 -169 89 49 -49 49 49 -233 177 57 -201 217 233 -201 105 41 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cranidos.pal b/graphics/object_events/palettes/followers/cranidos.pal deleted file mode 100644 index 7a36c9215..000000000 --- a/graphics/object_events/palettes/followers/cranidos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -113 113 113 -201 201 201 -57 57 57 -89 129 233 -145 9 3 -1 1 1 -65 89 153 -233 233 249 -49 57 81 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/cresselia.pal b/graphics/object_events/palettes/followers/cresselia.pal deleted file mode 100644 index 549a1ca73..000000000 --- a/graphics/object_events/palettes/followers/cresselia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 137 73 -81 105 161 -89 145 225 -81 65 33 -249 233 169 -1 1 1 -161 73 113 -105 89 57 -105 41 57 -249 169 225 -233 233 249 -217 105 169 -241 193 97 -65 65 65 -0 0 0 diff --git a/graphics/object_events/palettes/followers/croagunk.pal b/graphics/object_events/palettes/followers/croagunk.pal deleted file mode 100644 index 6e43319e5..000000000 --- a/graphics/object_events/palettes/followers/croagunk.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 129 9 -129 129 129 -57 73 129 -193 89 1 -1 1 1 -249 217 57 -49 49 49 -193 153 1 -201 201 201 -89 129 209 -49 97 193 -49 49 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/darkrai.pal b/graphics/object_events/palettes/followers/darkrai.pal deleted file mode 100644 index a379b5238..000000000 --- a/graphics/object_events/palettes/followers/darkrai.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 145 169 -65 65 81 -249 249 249 -49 153 193 -153 49 65 -249 73 65 -49 49 49 -1 1 1 -193 193 225 -97 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dialga.pal b/graphics/object_events/palettes/followers/dialga.pal deleted file mode 100644 index 0a252f361..000000000 --- a/graphics/object_events/palettes/followers/dialga.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -17 17 17 -33 65 105 -185 201 217 -185 33 17 -97 161 193 -97 121 137 -217 233 249 -41 57 73 -241 81 65 -65 129 249 -137 161 177 -33 89 145 -57 121 177 -153 209 241 -0 0 0 diff --git a/graphics/object_events/palettes/followers/drapion.pal b/graphics/object_events/palettes/followers/drapion.pal deleted file mode 100644 index 5c02aa8d8..000000000 --- a/graphics/object_events/palettes/followers/drapion.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -33 121 113 -105 65 113 -177 185 193 -49 41 57 -169 137 201 -41 161 153 -129 89 169 -73 49 81 -233 233 249 -1 1 1 -33 33 41 -121 129 137 -81 33 73 -145 97 161 -0 0 0 diff --git a/graphics/object_events/palettes/followers/drifblim.pal b/graphics/object_events/palettes/followers/drifblim.pal deleted file mode 100644 index 1cd025435..000000000 --- a/graphics/object_events/palettes/followers/drifblim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 57 -89 65 121 -153 121 225 -217 17 41 -49 49 49 -129 129 153 -129 97 185 -89 89 113 -233 233 249 -209 177 89 -1 1 1 -169 161 201 -105 17 25 -65 65 65 -105 105 129 diff --git a/graphics/object_events/palettes/followers/drifloon.pal b/graphics/object_events/palettes/followers/drifloon.pal deleted file mode 100644 index 57bb7a2ff..000000000 --- a/graphics/object_events/palettes/followers/drifloon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 57 -169 137 225 -89 65 121 -225 177 89 -233 233 249 -129 97 185 -65 65 65 -169 161 201 -1 1 1 -89 89 113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/dusknoir.pal b/graphics/object_events/palettes/followers/dusknoir.pal deleted file mode 100644 index 35fe7b837..000000000 --- a/graphics/object_events/palettes/followers/dusknoir.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 97 9 -121 121 121 -49 49 49 -1 1 1 -241 177 1 -145 33 33 -201 129 17 -209 97 97 -81 81 81 -161 161 161 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/electivire.pal b/graphics/object_events/palettes/followers/electivire.pal deleted file mode 100644 index 85b21aa79..000000000 --- a/graphics/object_events/palettes/followers/electivire.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 137 17 -65 57 33 -145 145 145 -177 9 3 -89 89 89 -193 193 209 -49 49 49 -241 209 1 -249 233 121 -241 97 113 -233 233 249 -73 25 33 -113 89 25 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/empoleon.pal b/graphics/object_events/palettes/followers/empoleon.pal deleted file mode 100644 index 8ebe2c905..000000000 --- a/graphics/object_events/palettes/followers/empoleon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 137 25 -81 129 161 -57 57 97 -121 193 241 -97 81 33 -1 1 1 -233 233 249 -41 41 41 -249 201 89 -65 73 145 -185 193 249 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/finneon.pal b/graphics/object_events/palettes/followers/finneon.pal deleted file mode 100644 index b5bd33caf..000000000 --- a/graphics/object_events/palettes/followers/finneon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 137 161 -49 57 65 -1 1 1 -73 97 97 -169 65 113 -161 209 217 -105 1 1 -241 121 161 -249 185 209 -49 73 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/floatzel.pal b/graphics/object_events/palettes/followers/floatzel.pal deleted file mode 100644 index eccd4ed4b..000000000 --- a/graphics/object_events/palettes/followers/floatzel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 129 1 -129 65 33 -73 137 193 -89 89 89 -241 225 129 -161 97 1 -249 193 33 -1 1 1 -233 233 249 -57 49 41 -169 185 201 -209 185 97 -233 113 49 -65 97 121 -185 73 33 diff --git a/graphics/object_events/palettes/followers/froslass.pal b/graphics/object_events/palettes/followers/froslass.pal deleted file mode 100644 index 07f7c145f..000000000 --- a/graphics/object_events/palettes/followers/froslass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 225 9 -57 121 153 -81 41 81 -193 201 217 -89 161 201 -65 65 65 -153 153 153 -41 73 89 -1 1 1 -193 57 33 -233 233 249 -129 73 129 -153 161 177 -113 121 137 -121 65 57 diff --git a/graphics/object_events/palettes/followers/gabite.pal b/graphics/object_events/palettes/followers/gabite.pal deleted file mode 100644 index 77ded75c3..000000000 --- a/graphics/object_events/palettes/followers/gabite.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 9 -153 153 153 -41 49 97 -233 233 249 -121 137 209 -105 105 105 -129 49 17 -1 1 1 -249 225 9 -81 113 185 -177 177 233 -57 81 121 -105 145 193 -185 65 25 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gallade.pal b/graphics/object_events/palettes/followers/gallade.pal deleted file mode 100644 index 7cd2a4e39..000000000 --- a/graphics/object_events/palettes/followers/gallade.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -25 145 49 -3 84 13 -137 137 153 -73 73 81 -129 33 57 -31 110 20 -105 201 225 -34 34 34 -1 1 1 -25 185 201 -205 205 219 -233 233 249 -25 105 97 -49 177 65 -185 49 73 diff --git a/graphics/object_events/palettes/followers/garchomp.pal b/graphics/object_events/palettes/followers/garchomp.pal deleted file mode 100644 index 3ef28d97b..000000000 --- a/graphics/object_events/palettes/followers/garchomp.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 153 1 -185 65 25 -1 1 1 -201 201 209 -73 81 121 -49 49 81 -169 169 169 -97 113 161 -249 225 9 -129 49 17 -233 233 249 -121 153 201 -105 105 105 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_east.pal b/graphics/object_events/palettes/followers/gastrodon_east.pal deleted file mode 100644 index bbaf701c0..000000000 --- a/graphics/object_events/palettes/followers/gastrodon_east.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 121 41 -49 113 129 -249 209 89 -1 1 1 -49 49 49 -145 121 49 -41 153 185 -49 81 49 -185 185 201 -201 161 1 -65 185 233 -89 161 65 -33 73 73 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gastrodon_west.pal b/graphics/object_events/palettes/followers/gastrodon_west.pal deleted file mode 100644 index ad3e3ec2d..000000000 --- a/graphics/object_events/palettes/followers/gastrodon_west.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 49 -113 73 57 -201 121 169 -49 49 49 -1 1 1 -249 209 89 -153 97 129 -73 49 41 -201 161 1 -185 185 201 -233 153 217 -161 105 65 -81 41 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gible.pal b/graphics/object_events/palettes/followers/gible.pal deleted file mode 100644 index 0f9c39f2b..000000000 --- a/graphics/object_events/palettes/followers/gible.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 137 137 -137 193 217 -57 57 57 -1 1 1 -185 65 25 -105 169 169 -33 41 49 -153 153 153 -225 225 225 -49 89 89 -113 169 185 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_normal.pal b/graphics/object_events/palettes/followers/giratina_normal.pal deleted file mode 100644 index 81030443f..000000000 --- a/graphics/object_events/palettes/followers/giratina_normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 153 25 -105 97 25 -17 17 17 -169 49 65 -89 89 113 -249 249 209 -57 65 65 -137 137 169 -233 209 25 -241 81 65 -169 177 201 -113 113 145 -41 41 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/giratina_origin.pal b/graphics/object_events/palettes/followers/giratina_origin.pal deleted file mode 100644 index 5b5e3d16c..000000000 --- a/graphics/object_events/palettes/followers/giratina_origin.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 153 25 -169 49 65 -145 145 145 -97 81 17 -249 249 209 -17 17 17 -57 57 57 -41 41 41 -233 209 25 -241 81 65 -185 185 185 -81 81 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/glaceon.pal b/graphics/object_events/palettes/followers/glaceon.pal deleted file mode 100644 index 37de2af57..000000000 --- a/graphics/object_events/palettes/followers/glaceon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 145 137 -113 201 225 -49 153 177 -49 65 81 -137 225 233 -1 1 1 -25 97 113 -209 225 233 -81 185 217 -41 153 169 -177 233 249 -33 105 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/glameow.pal b/graphics/object_events/palettes/followers/glameow.pal deleted file mode 100644 index 676585d12..000000000 --- a/graphics/object_events/palettes/followers/glameow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 153 41 -17 33 105 -153 153 153 -113 113 113 -129 129 129 -233 233 249 -49 49 49 -177 57 105 -209 97 177 -193 193 193 -1 1 1 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/gliscor.pal b/graphics/object_events/palettes/followers/gliscor.pal deleted file mode 100644 index e9e50885f..000000000 --- a/graphics/object_events/palettes/followers/gliscor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 1 -65 65 65 -1 1 1 -33 41 89 -137 137 209 -121 25 17 -97 97 97 -153 153 153 -249 217 57 -33 33 33 -153 169 225 -105 33 81 -169 41 25 -169 169 169 -97 97 113 diff --git a/graphics/object_events/palettes/followers/grotle.pal b/graphics/object_events/palettes/followers/grotle.pal deleted file mode 100644 index d646bba5d..000000000 --- a/graphics/object_events/palettes/followers/grotle.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 161 49 -169 177 201 -129 201 49 -81 73 57 -97 177 81 -153 113 57 -105 89 73 -201 145 25 -233 233 249 -161 225 113 -225 185 41 -1 1 1 -73 73 73 -57 81 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/happiny.pal b/graphics/object_events/palettes/followers/happiny.pal deleted file mode 100644 index 2d1c97537..000000000 --- a/graphics/object_events/palettes/followers/happiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 129 161 -121 73 89 -169 185 209 -193 73 97 -1 1 1 -217 97 113 -97 33 41 -233 233 249 -249 177 193 -185 97 129 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/heatran.pal b/graphics/object_events/palettes/followers/heatran.pal deleted file mode 100644 index d1a451452..000000000 --- a/graphics/object_events/palettes/followers/heatran.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 121 1 -49 57 81 -129 129 137 -241 81 65 -169 41 33 -97 65 65 -193 193 209 -65 25 41 -233 233 249 -1 1 1 -177 105 89 -233 153 1 -73 81 97 -41 41 41 -137 65 65 diff --git a/graphics/object_events/palettes/followers/hippopotas.pal b/graphics/object_events/palettes/followers/hippopotas.pal deleted file mode 100644 index 874dfa505..000000000 --- a/graphics/object_events/palettes/followers/hippopotas.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 57 -185 185 193 -209 177 57 -73 57 33 -1 1 1 -137 137 137 -137 89 57 -185 121 81 -233 233 249 -225 201 113 -209 177 81 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/hippowdon.pal b/graphics/object_events/palettes/followers/hippowdon.pal deleted file mode 100644 index 70e70b15c..000000000 --- a/graphics/object_events/palettes/followers/hippowdon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 57 -153 153 153 -73 73 73 -1 1 1 -201 201 209 -97 97 97 -49 49 49 -209 177 81 -193 57 81 -169 169 169 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/honchkrow.pal b/graphics/object_events/palettes/followers/honchkrow.pal deleted file mode 100644 index 5fa8b9fed..000000000 --- a/graphics/object_events/palettes/followers/honchkrow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 129 1 -81 65 49 -33 41 49 -1 1 1 -113 113 113 -201 201 201 -169 1 1 -41 65 105 -249 225 9 -233 233 249 -169 169 177 -57 89 113 -121 17 17 -57 57 57 -49 57 73 diff --git a/graphics/object_events/palettes/followers/infernape.pal b/graphics/object_events/palettes/followers/infernape.pal deleted file mode 100644 index 52928407c..000000000 --- a/graphics/object_events/palettes/followers/infernape.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 153 1 -25 89 177 -65 65 65 -1 1 1 -145 25 25 -193 65 33 -217 217 217 -201 57 89 -225 113 81 -249 209 1 -241 57 41 -129 57 33 -169 169 169 -233 233 249 -105 73 57 diff --git a/graphics/object_events/palettes/followers/kricketot.pal b/graphics/object_events/palettes/followers/kricketot.pal deleted file mode 100644 index 87aa0b9e7..000000000 --- a/graphics/object_events/palettes/followers/kricketot.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 73 -97 65 33 -105 105 105 -233 233 249 -81 41 25 -1 1 1 -145 73 25 -137 57 33 -241 209 145 -225 113 89 -225 161 81 -169 81 57 -57 57 57 -185 89 33 -0 0 0 diff --git a/graphics/object_events/palettes/followers/kricketune.pal b/graphics/object_events/palettes/followers/kricketune.pal deleted file mode 100644 index ff9b89ab8..000000000 --- a/graphics/object_events/palettes/followers/kricketune.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 129 73 -97 65 33 -81 81 81 -233 233 249 -1 1 1 -81 41 25 -145 73 25 -225 113 89 -241 209 145 -137 57 33 -225 161 81 -105 105 105 -169 81 57 -57 57 57 -185 89 33 diff --git a/graphics/object_events/palettes/followers/leafeon.pal b/graphics/object_events/palettes/followers/leafeon.pal deleted file mode 100644 index 3bc4ad631..000000000 --- a/graphics/object_events/palettes/followers/leafeon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 145 81 -209 225 233 -129 193 97 -113 81 33 -97 161 97 -241 217 161 -81 49 25 -169 137 81 -1 1 1 -217 185 89 -153 105 49 -233 233 249 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lickilicky.pal b/graphics/object_events/palettes/followers/lickilicky.pal deleted file mode 100644 index ca5da8adf..000000000 --- a/graphics/object_events/palettes/followers/lickilicky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 121 145 -233 185 201 -81 81 81 -1 1 1 -193 81 113 -233 233 249 -73 49 49 -209 137 169 -153 65 89 -161 161 161 -201 201 209 -169 89 137 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lopunny.pal b/graphics/object_events/palettes/followers/lopunny.pal deleted file mode 100644 index 3439e8e36..000000000 --- a/graphics/object_events/palettes/followers/lopunny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 121 65 -1 1 1 -97 81 65 -209 121 121 -145 81 89 -201 169 105 -129 97 57 -57 50 34 -249 169 169 -233 217 169 -169 129 89 -81 81 74 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lucario.pal b/graphics/object_events/palettes/followers/lucario.pal deleted file mode 100644 index c4f6ce113..000000000 --- a/graphics/object_events/palettes/followers/lucario.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 137 57 -49 57 89 -73 137 193 -97 97 97 -233 233 249 -153 25 49 -233 185 81 -121 97 41 -169 185 201 -41 41 41 -1 1 1 -57 105 145 -113 185 241 -73 73 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/lumineon.pal b/graphics/object_events/palettes/followers/lumineon.pal deleted file mode 100644 index 4c230e65d..000000000 --- a/graphics/object_events/palettes/followers/lumineon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -49 57 65 -73 97 97 -161 209 217 -169 65 113 -105 1 1 -97 145 185 -49 73 65 -89 105 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/luxio.pal b/graphics/object_events/palettes/followers/luxio.pal deleted file mode 100644 index 154c28461..000000000 --- a/graphics/object_events/palettes/followers/luxio.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -209 145 33 -73 65 25 -81 145 185 -89 89 89 -169 89 17 -1 1 1 -233 233 249 -41 41 41 -249 209 25 -113 177 217 -209 81 65 -65 65 65 -49 81 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/luxray.pal b/graphics/object_events/palettes/followers/luxray.pal deleted file mode 100644 index 1f68542b9..000000000 --- a/graphics/object_events/palettes/followers/luxray.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 113 17 -73 65 25 -65 129 169 -209 81 65 -33 81 105 -81 169 217 -185 33 17 -249 209 25 -1 1 1 -41 41 41 -209 145 33 -129 193 233 -65 65 65 -89 89 89 -0 0 0 diff --git a/graphics/object_events/palettes/followers/magmortar.pal b/graphics/object_events/palettes/followers/magmortar.pal deleted file mode 100644 index fa810f47e..000000000 --- a/graphics/object_events/palettes/followers/magmortar.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -225 153 17 -185 57 25 -145 145 145 -73 81 81 -193 193 209 -49 49 49 -169 105 1 -1 1 1 -241 209 1 -233 233 249 -137 73 89 -105 1 1 -193 97 105 -225 137 153 -241 73 33 diff --git a/graphics/object_events/palettes/followers/magnezone.pal b/graphics/object_events/palettes/followers/magnezone.pal deleted file mode 100644 index e0a5e0a78..000000000 --- a/graphics/object_events/palettes/followers/magnezone.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 161 57 -105 129 145 -49 65 73 -185 185 193 -113 113 121 -217 1 1 -1 1 1 -153 153 153 -249 225 9 -57 57 57 -233 233 249 -185 73 73 -153 169 185 -81 81 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mamoswine.pal b/graphics/object_events/palettes/followers/mamoswine.pal deleted file mode 100644 index 13ed3cce7..000000000 --- a/graphics/object_events/palettes/followers/mamoswine.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 121 33 -130 137 145 -105 65 41 -185 193 209 -41 113 145 -201 169 105 -57 41 17 -73 169 217 -201 97 113 -233 233 249 -137 57 73 -137 89 57 -169 121 81 -1 1 1 -65 65 65 diff --git a/graphics/object_events/palettes/followers/manaphy.pal b/graphics/object_events/palettes/followers/manaphy.pal deleted file mode 100644 index ff66198ec..000000000 --- a/graphics/object_events/palettes/followers/manaphy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 9 -81 129 233 -193 65 105 -1 1 1 -233 233 249 -25 73 161 -65 65 65 -129 161 241 -249 209 97 -65 97 201 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mantyke.pal b/graphics/object_events/palettes/followers/mantyke.pal deleted file mode 100644 index 599f852fb..000000000 --- a/graphics/object_events/palettes/followers/mantyke.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -145 65 57 -113 193 241 -9 89 137 -185 225 249 -97 97 105 -17 49 97 -33 121 249 -233 233 249 -153 193 225 -17 97 137 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mesprit.pal b/graphics/object_events/palettes/followers/mesprit.pal deleted file mode 100644 index 809362ce0..000000000 --- a/graphics/object_events/palettes/followers/mesprit.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 33 -73 73 89 -113 129 177 -145 73 113 -145 185 209 -169 41 1 -1 1 1 -225 113 145 -249 177 17 -233 65 33 -249 169 153 -233 233 249 -97 49 57 -177 209 249 -185 81 129 diff --git a/graphics/object_events/palettes/followers/mime_jr.pal b/graphics/object_events/palettes/followers/mime_jr.pal deleted file mode 100644 index 31ae9fcab..000000000 --- a/graphics/object_events/palettes/followers/mime_jr.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -65 65 129 -41 41 73 -233 233 249 -121 129 233 -209 65 89 -217 113 145 -65 65 65 -241 177 201 -97 33 57 -89 97 177 -169 169 169 -121 73 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/mismagius.pal b/graphics/object_events/palettes/followers/mismagius.pal deleted file mode 100644 index 9ff649019..000000000 --- a/graphics/object_events/palettes/followers/mismagius.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -177 97 1 -49 41 97 -153 41 89 -177 17 41 -145 121 193 -49 33 57 -97 81 145 -193 65 129 -225 177 41 -1 1 1 -105 33 81 -217 81 113 -73 33 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/monferno.pal b/graphics/object_events/palettes/followers/monferno.pal deleted file mode 100644 index af39e8fd9..000000000 --- a/graphics/object_events/palettes/followers/monferno.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 129 17 -153 153 153 -105 57 41 -249 233 169 -241 57 41 -185 121 65 -57 145 209 -185 97 33 -217 185 113 -249 193 1 -145 25 25 -233 233 249 -129 89 57 -1 1 1 -209 81 65 diff --git a/graphics/object_events/palettes/followers/mothim.pal b/graphics/object_events/palettes/followers/mothim.pal deleted file mode 100644 index 21d36fcee..000000000 --- a/graphics/object_events/palettes/followers/mothim.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 41 -137 57 9 -137 137 137 -73 73 73 -65 49 41 -225 177 65 -145 97 17 -1 1 1 -201 201 201 -97 97 97 -249 129 41 -161 89 33 -49 49 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/munchlax.pal b/graphics/object_events/palettes/followers/munchlax.pal deleted file mode 100644 index afed053d8..000000000 --- a/graphics/object_events/palettes/followers/munchlax.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 129 73 -193 193 201 -193 169 105 -41 73 73 -81 129 145 -249 201 121 -65 105 121 -41 49 49 -233 233 249 -145 153 145 -1 1 1 -65 81 81 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/pachirisu.pal b/graphics/object_events/palettes/followers/pachirisu.pal deleted file mode 100644 index 8dc583b37..000000000 --- a/graphics/object_events/palettes/followers/pachirisu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 97 -225 185 89 -97 129 201 -49 81 113 -1 1 1 -121 161 217 -137 121 145 -233 233 249 -177 177 209 -89 89 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/palkia.pal b/graphics/object_events/palettes/followers/palkia.pal deleted file mode 100644 index 82c356424..000000000 --- a/graphics/object_events/palettes/followers/palkia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 137 145 -201 217 233 -201 137 193 -81 81 89 -177 185 193 -161 81 161 -17 17 17 -249 249 249 -241 81 65 -137 121 145 -241 161 153 -169 161 177 -209 193 217 -233 217 249 -0 0 0 diff --git a/graphics/object_events/palettes/followers/phione.pal b/graphics/object_events/palettes/followers/phione.pal deleted file mode 100644 index 8e5afccd1..000000000 --- a/graphics/object_events/palettes/followers/phione.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -193 65 105 -177 201 249 -25 73 161 -81 129 233 -65 97 201 -65 65 65 -233 233 249 -129 161 241 -17 113 177 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/piplup.pal b/graphics/object_events/palettes/followers/piplup.pal deleted file mode 100644 index 38fad9d50..000000000 --- a/graphics/object_events/palettes/followers/piplup.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 185 25 -81 145 185 -41 89 169 -57 57 73 -233 233 249 -121 121 121 -121 177 241 -121 105 65 -1 1 1 -65 105 225 -177 185 217 -57 65 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/porygonz.pal b/graphics/object_events/palettes/followers/porygonz.pal deleted file mode 100644 index 73e36b7d5..000000000 --- a/graphics/object_events/palettes/followers/porygonz.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 145 49 -41 121 169 -17 65 97 -89 185 217 -169 65 105 -97 25 49 -249 209 57 -241 161 169 -169 113 49 -1 1 1 -145 233 249 -225 97 113 -65 153 193 -113 49 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/prinplup.pal b/graphics/object_events/palettes/followers/prinplup.pal deleted file mode 100644 index af3fe885f..000000000 --- a/graphics/object_events/palettes/followers/prinplup.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 153 1 -1 1 1 -41 89 169 -121 201 241 -97 81 33 -121 121 121 -113 153 185 -57 113 177 -49 57 97 -233 233 249 -249 193 25 -169 177 201 -65 113 201 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/probopass.pal b/graphics/object_events/palettes/followers/probopass.pal deleted file mode 100644 index d952dc1fb..000000000 --- a/graphics/object_events/palettes/followers/probopass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 129 185 -41 57 97 -1 1 1 -113 25 41 -193 57 89 -113 177 233 -41 49 57 -153 153 153 -65 89 137 -193 201 217 -209 81 73 -161 33 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/purugly.pal b/graphics/object_events/palettes/followers/purugly.pal deleted file mode 100644 index 37ec1eaa4..000000000 --- a/graphics/object_events/palettes/followers/purugly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 121 121 -89 57 137 -153 153 153 -201 105 9 -193 193 193 -249 185 33 -137 73 185 -65 65 65 -1 1 1 -177 121 233 -49 49 49 -233 233 249 -185 73 113 -81 81 81 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rampardos.pal b/graphics/object_events/palettes/followers/rampardos.pal deleted file mode 100644 index 66eeea4da..000000000 --- a/graphics/object_events/palettes/followers/rampardos.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -153 153 153 -129 65 81 -185 185 185 -233 105 121 -89 129 233 -97 97 97 -57 57 57 -1 1 1 -65 89 153 -225 225 225 -121 161 249 -113 113 113 -49 57 81 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/regigigas.pal b/graphics/object_events/palettes/followers/regigigas.pal deleted file mode 100644 index dffde944b..000000000 --- a/graphics/object_events/palettes/followers/regigigas.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 153 73 -65 161 153 -41 65 49 -249 209 41 -209 73 49 -81 81 105 -121 121 137 -233 233 249 -1 1 1 -41 105 73 -169 169 193 -169 137 41 -97 81 41 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rhyperior.pal b/graphics/object_events/palettes/followers/rhyperior.pal deleted file mode 100644 index 38c0117a5..000000000 --- a/graphics/object_events/palettes/followers/rhyperior.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 145 153 -145 73 17 -89 81 73 -65 41 25 -193 193 201 -113 113 113 -137 33 57 -1 1 1 -233 233 249 -209 73 33 -49 49 49 -137 113 105 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/riolu.pal b/graphics/object_events/palettes/followers/riolu.pal deleted file mode 100644 index 5de18e81d..000000000 --- a/graphics/object_events/palettes/followers/riolu.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -1 1 1 -49 57 89 -97 97 97 -233 233 249 -73 137 193 -153 25 49 -121 97 41 -57 105 145 -169 185 201 -41 41 41 -113 185 241 -73 73 73 -81 89 113 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/roserade.pal b/graphics/object_events/palettes/followers/roserade.pal deleted file mode 100644 index 6204afc14..000000000 --- a/graphics/object_events/palettes/followers/roserade.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 41 -161 177 177 -17 65 25 -97 169 73 -201 217 217 -41 105 153 -233 185 65 -1 1 1 -201 65 113 -137 17 73 -81 169 233 -169 129 57 -73 73 73 -233 233 249 -145 193 105 diff --git a/graphics/object_events/palettes/followers/rotom_base.pal b/graphics/object_events/palettes/followers/rotom_base.pal deleted file mode 100644 index 313955303..000000000 --- a/graphics/object_events/palettes/followers/rotom_base.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 153 73 -17 73 113 -145 73 17 -105 185 217 -217 113 49 -65 65 65 -49 129 161 -185 89 33 -177 233 241 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_fan.pal b/graphics/object_events/palettes/followers/rotom_fan.pal deleted file mode 100644 index a5f3ba2f5..000000000 --- a/graphics/object_events/palettes/followers/rotom_fan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 145 65 -249 201 81 -65 65 65 -1 1 1 -209 161 49 -185 89 33 -113 57 9 -241 153 73 -249 249 153 -217 113 49 -153 185 121 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_frost.pal b/graphics/object_events/palettes/followers/rotom_frost.pal deleted file mode 100644 index 40548eeb1..000000000 --- a/graphics/object_events/palettes/followers/rotom_frost.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 113 49 -73 17 113 -193 161 217 -49 49 49 -241 153 73 -89 89 89 -145 73 17 -217 217 241 -1 1 1 -121 97 161 -185 89 33 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_heat.pal b/graphics/object_events/palettes/followers/rotom_heat.pal deleted file mode 100644 index 81477472a..000000000 --- a/graphics/object_events/palettes/followers/rotom_heat.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 113 49 -145 73 17 -129 33 25 -1 1 1 -185 89 33 -41 41 41 -241 153 73 -73 73 73 -249 217 129 -217 89 49 -161 41 17 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_mow.pal b/graphics/object_events/palettes/followers/rotom_mow.pal deleted file mode 100644 index 124db71d5..000000000 --- a/graphics/object_events/palettes/followers/rotom_mow.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -81 129 73 -25 89 17 -193 193 225 -113 113 113 -153 217 41 -145 73 17 -241 153 73 -217 113 49 -217 249 137 -1 1 1 -233 233 249 -65 65 65 -185 89 33 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/rotom_wash.pal b/graphics/object_events/palettes/followers/rotom_wash.pal deleted file mode 100644 index b2ad20e2f..000000000 --- a/graphics/object_events/palettes/followers/rotom_wash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 153 73 -65 65 65 -17 73 113 -105 161 233 -185 89 33 -113 57 9 -1 1 1 -81 81 81 -177 233 241 -65 97 161 -217 113 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_land.pal b/graphics/object_events/palettes/followers/shaymin_land.pal deleted file mode 100644 index 01a77716c..000000000 --- a/graphics/object_events/palettes/followers/shaymin_land.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -241 193 1 -129 129 153 -233 233 249 -65 65 65 -49 153 73 -169 169 209 -1 1 1 -193 89 129 -161 209 113 -241 129 169 -121 153 113 -41 89 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shaymin_sky.pal b/graphics/object_events/palettes/followers/shaymin_sky.pal deleted file mode 100644 index 59b7b2681..000000000 --- a/graphics/object_events/palettes/followers/shaymin_sky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 129 1 -49 53 39 -1 1 1 -177 225 97 -89 89 113 -143 27 31 -49 153 73 -41 89 57 -177 177 217 -233 233 249 -249 41 49 -121 169 49 -59 65 49 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_east.pal b/graphics/object_events/palettes/followers/shellos_east.pal deleted file mode 100644 index 0fbe31e03..000000000 --- a/graphics/object_events/palettes/followers/shellos_east.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 153 9 -81 137 153 -89 145 81 -49 89 105 -233 233 249 -129 185 89 -89 169 209 -1 1 1 -249 217 57 -49 49 49 -153 153 177 -73 105 129 -169 201 89 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shellos_west.pal b/graphics/object_events/palettes/followers/shellos_west.pal deleted file mode 100644 index bcd1ca01e..000000000 --- a/graphics/object_events/palettes/followers/shellos_west.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -201 161 1 -113 113 113 -129 129 129 -185 185 201 -89 49 73 -249 89 209 -1 1 1 -49 49 49 -249 209 89 -249 137 201 -233 233 249 -193 105 145 -145 33 105 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shieldon.pal b/graphics/object_events/palettes/followers/shieldon.pal deleted file mode 100644 index 4bc877c4c..000000000 --- a/graphics/object_events/palettes/followers/shieldon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -145 129 73 -201 201 201 -57 49 41 -193 161 73 -105 81 49 -153 153 153 -73 73 73 -121 121 121 -233 233 249 -1 1 1 -89 89 89 -57 57 57 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/shinx.pal b/graphics/object_events/palettes/followers/shinx.pal deleted file mode 100644 index e99f3c9de..000000000 --- a/graphics/object_events/palettes/followers/shinx.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 145 33 -81 121 185 -65 65 65 -209 81 65 -145 185 233 -89 89 89 -1 1 1 -225 185 25 -233 233 249 -113 161 217 -105 89 41 -49 81 113 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/skorupi.pal b/graphics/object_events/palettes/followers/skorupi.pal deleted file mode 100644 index d4dad9ff4..000000000 --- a/graphics/object_events/palettes/followers/skorupi.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -33 121 113 -25 193 177 -121 129 209 -73 73 145 -41 161 153 -177 185 193 -57 57 81 -121 129 137 -233 233 249 -1 1 1 -153 161 225 -89 97 177 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/skuntank.pal b/graphics/object_events/palettes/followers/skuntank.pal deleted file mode 100644 index fb06f0e0d..000000000 --- a/graphics/object_events/palettes/followers/skuntank.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -185 161 97 -89 81 49 -185 185 201 -65 49 65 -233 209 97 -137 89 145 -161 41 33 -41 41 41 -233 233 249 -193 97 65 -105 49 113 -113 113 113 -233 217 145 -1 1 1 -0 0 0 diff --git a/graphics/object_events/palettes/followers/snover.pal b/graphics/object_events/palettes/followers/snover.pal deleted file mode 100644 index d0b29e37a..000000000 --- a/graphics/object_events/palettes/followers/snover.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -49 121 65 -161 161 193 -65 57 25 -121 121 153 -129 105 41 -217 217 233 -65 65 65 -169 137 57 -1 1 1 -185 193 209 -49 153 73 -97 81 57 -233 233 249 -49 73 57 -0 0 0 diff --git a/graphics/object_events/palettes/followers/spiritomb.pal b/graphics/object_events/palettes/followers/spiritomb.pal deleted file mode 100644 index aa86da120..000000000 --- a/graphics/object_events/palettes/followers/spiritomb.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 169 73 -105 81 25 -145 201 89 -121 57 105 -169 113 169 -73 57 33 -201 145 209 -97 89 97 -209 241 121 -1 1 1 -65 113 65 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/staraptor.pal b/graphics/object_events/palettes/followers/staraptor.pal deleted file mode 100644 index 737f9bd0f..000000000 --- a/graphics/object_events/palettes/followers/staraptor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 113 1 -145 145 145 -225 49 33 -33 33 33 -73 65 65 -201 201 201 -145 129 129 -1 1 1 -233 233 249 -105 17 25 -105 97 97 -57 57 57 -217 217 217 -73 73 73 diff --git a/graphics/object_events/palettes/followers/staravia.pal b/graphics/object_events/palettes/followers/staravia.pal deleted file mode 100644 index 1f40137a8..000000000 --- a/graphics/object_events/palettes/followers/staravia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 185 153 -193 113 1 -145 129 105 -225 217 209 -169 153 129 -209 201 201 -65 65 65 -33 33 33 -233 233 249 -89 89 89 -1 1 1 -185 185 177 -121 121 121 -0 0 0 diff --git a/graphics/object_events/palettes/followers/starly.pal b/graphics/object_events/palettes/followers/starly.pal deleted file mode 100644 index adca8581c..000000000 --- a/graphics/object_events/palettes/followers/starly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -249 169 33 -193 113 1 -185 185 185 -81 65 65 -97 97 89 -217 217 217 -49 49 49 -1 1 1 -233 233 249 -105 105 105 -73 73 73 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/stunky.pal b/graphics/object_events/palettes/followers/stunky.pal deleted file mode 100644 index baa8f838a..000000000 --- a/graphics/object_events/palettes/followers/stunky.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 137 105 -89 81 49 -233 217 145 -89 65 97 -185 185 201 -49 49 49 -185 169 113 -113 113 113 -233 233 249 -137 81 137 -185 81 57 -1 1 1 -65 41 65 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/tangrowth.pal b/graphics/object_events/palettes/followers/tangrowth.pal deleted file mode 100644 index 902f72d07..000000000 --- a/graphics/object_events/palettes/followers/tangrowth.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -121 121 121 -41 65 89 -169 185 209 -25 33 49 -201 65 113 -1 1 1 -57 105 153 -129 49 73 -57 137 201 -233 233 249 -49 81 113 -49 49 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/togekiss.pal b/graphics/object_events/palettes/followers/togekiss.pal deleted file mode 100644 index bf54ff014..000000000 --- a/graphics/object_events/palettes/followers/togekiss.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -105 121 129 -169 185 209 -41 169 249 -233 65 73 -1 1 1 -65 65 65 -233 233 249 -145 153 177 -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/palettes/followers/torterra.pal b/graphics/object_events/palettes/followers/torterra.pal deleted file mode 100644 index 2e6475344..000000000 --- a/graphics/object_events/palettes/followers/torterra.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -161 121 65 -209 209 217 -81 65 49 -89 185 65 -41 97 41 -1 1 1 -49 49 49 -153 153 153 -65 153 89 -89 89 89 -121 1 1 -105 209 65 -233 233 249 -121 97 49 -65 177 81 diff --git a/graphics/object_events/palettes/followers/toxicroak.pal b/graphics/object_events/palettes/followers/toxicroak.pal deleted file mode 100644 index 92634817e..000000000 --- a/graphics/object_events/palettes/followers/toxicroak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 161 1 -57 81 169 -49 49 49 -129 129 129 -41 41 73 -169 49 57 -89 129 209 -113 25 33 -249 217 57 -1 1 1 -217 89 65 -49 97 193 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/turtwig.pal b/graphics/object_events/palettes/followers/turtwig.pal deleted file mode 100644 index 9d65ea4dd..000000000 --- a/graphics/object_events/palettes/followers/turtwig.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -73 121 65 -81 73 57 -137 201 177 -249 233 113 -153 113 57 -81 153 105 -105 89 73 -73 73 73 -209 177 41 -233 233 249 -49 49 49 -1 1 1 -57 81 57 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/uxie.pal b/graphics/object_events/palettes/followers/uxie.pal deleted file mode 100644 index ff01f4a61..000000000 --- a/graphics/object_events/palettes/followers/uxie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -137 121 89 -113 129 177 -169 41 1 -241 201 89 -73 65 57 -145 185 209 -1 1 1 -193 153 89 -233 65 33 -177 209 249 -249 169 153 -73 73 89 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/vespiquen.pal b/graphics/object_events/palettes/followers/vespiquen.pal deleted file mode 100644 index 3d1fab3b5..000000000 --- a/graphics/object_events/palettes/followers/vespiquen.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -233 153 25 -73 65 41 -161 185 225 -105 105 105 -161 33 57 -169 89 49 -1 1 1 -217 225 233 -49 49 49 -249 201 57 -249 49 105 -177 105 33 -233 233 249 -201 105 41 -0 0 0 diff --git a/graphics/object_events/palettes/followers/weavile.pal b/graphics/object_events/palettes/followers/weavile.pal deleted file mode 100644 index c28ce413c..000000000 --- a/graphics/object_events/palettes/followers/weavile.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -113 121 129 -49 57 89 -105 121 177 -137 1 1 -161 41 65 -241 177 65 -65 97 161 -169 185 201 -233 233 249 -1 1 1 -57 73 113 -201 49 73 -153 9 3 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam.pal b/graphics/object_events/palettes/followers/wormadam.pal deleted file mode 100644 index 840dfcdfa..000000000 --- a/graphics/object_events/palettes/followers/wormadam.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -65 121 25 -185 201 153 -81 169 25 -33 65 33 -1 1 1 -137 209 57 -73 73 73 -49 49 49 -233 233 249 -41 121 73 -97 97 97 -41 169 49 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_sand.pal b/graphics/object_events/palettes/followers/wormadam_sand.pal deleted file mode 100644 index bb5b4ce40..000000000 --- a/graphics/object_events/palettes/followers/wormadam_sand.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -193 145 65 -81 65 49 -233 233 249 -201 193 137 -145 105 41 -193 57 41 -57 33 17 -1 1 1 -97 97 97 -201 113 97 -49 49 49 -233 217 137 -153 145 97 -73 73 73 -0 0 0 diff --git a/graphics/object_events/palettes/followers/wormadam_trash.pal b/graphics/object_events/palettes/followers/wormadam_trash.pal deleted file mode 100644 index 247aa23fb..000000000 --- a/graphics/object_events/palettes/followers/wormadam_trash.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -217 121 153 -73 73 73 -49 49 49 -233 233 249 -217 57 137 -1 1 1 -153 33 89 -97 97 97 -161 97 129 -249 169 169 -97 49 65 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/object_events/palettes/followers/yanmega.pal b/graphics/object_events/palettes/followers/yanmega.pal deleted file mode 100644 index 3bda62edf..000000000 --- a/graphics/object_events/palettes/followers/yanmega.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -161 177 129 -57 129 25 -65 65 65 -153 153 153 -209 57 49 -89 9 1 -1 1 1 -73 97 113 -233 233 249 -33 49 25 -81 169 49 -185 185 185 -49 97 33 -161 17 9 -249 73 49 -0 0 0 diff --git a/graphics/object_events/pics/pokemon/followers/abomasnow.png b/graphics/object_events/pics/pokemon/followers/abomasnow.png deleted file mode 100644 index 141b529f7d2d9042323a30cf791f58668dcbb1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmV+%1mpXOP)K)Uj{dMid8N0);qmBM`BI#tdDuB#0BD z)>P;sR?Lz^BUw%tDIqDxTUy$OP+c@M7P2|9#nM`ANERJxi`}x+^^fZvd3TaoGi}kS zK%M{spPul0Pe+N8^tnFQ|D)#VRX#0plwOs;@v8Ec7N<%Sk!zvv%8nz|imY6T&W)Co zMPwm&cM%miJfZdrjiYNj=PfBo(#P@3WLadlF~E2qcmHc}wzRypMky;6{-H z9b+7SJudK~v5362yu2l;kC)^XcZ)prY2f?Qo2?8Mc!^dk=S^1{;K>B3W)42d(zo4%$0L<0Xnn+2X4_;7MKiC6v1 z^>m^flR$(;VBVx=#t+XY@17%*tr#(b%!=VA@RquL<+A>a8JTII|JCgY#^on`K+Yrp znSfEqRRv) zuiE^M=1c;79Uz2UL;ocmux1+28_oK9D>&ZLBO_bD3^Q97bjuI5tLY`i;(tv&!I!VO zNr0y72117ZutEbb)=UF>BdZbCLEV^xovgny?Z2qi@bdRpI)AbunMW+2T&(RHU-U#5%JDQ_>A`Z8)5C&%J4gr%G4qu>`IqNIrqkA3r((Y*Ke~XyVYI3KiwBk zj@2?-;9M;e2dpm#-x#jlu2+V=E;F#(K$uiXtu}+egk|Ap)auIBUghTpu+6^_Y!Pqr z{)>CJfO9w=sT#L>&2%R?cXpk&*w|_BI?fqvi@tU?8qRIew;gJg^-EB#!g5dLPaoNa zs(P-eYfq!KZ0V*qZM#${U;7BLEe1Md!6zkWEw5FscGvt*%ISW>e_2qroqv`7U+Pc7 W3M#%^h;@4a0000KmOqQ!Mi__R;><+b*%(r#@HRdd=VlG( zCgDO1*KH?O-mhQ?%B`1?6ug8pLbC#cFc@hR92UYM?R)^cNj^cUxUnIYi_1bt5q*Zt ztC?9z*>iFxDWhW9M>BeUnpdy>0Q|rG^G4hcANi1t&JO#+Ry#YS|K3kV*IplWg>B&8 zqZ^~kui<^mB?ni3z0(nP0>Aj|>Z?l!klCI01dgjuHXUInaQt(%x!{l@PFJ2HGlf(wYjHP-slNCo3b~fXyEQL3K<^6!ig&3+;9_^ zIrjZ|N2nN1s>TJ$UiE3xh&4L8gjPNOB?8Ql?k9Wek9Czx-a#YlVvGv&g(3M>V+a! zJf$=!)g_QZi>E<>w~bjLAj@ZRGr>ynTDL;QgtqS=x~B4s$}rHccv?8IJVTmOT|y$( z`I_^@tkB{-U+2=^F!*ce34I}NY(ML~;HdB!ODQ+ZDYBq#3HdV1MPgQHiS;t$x`cAV zq%ZU)OX_C@bT*!y?k`2l0@>sdkytcaQWl#PmJB(uguZwCLMtx{!Fqlf`t(+BPw@0s zv;``#=^5RABvFdY^b)Ogo_2*+8pvzd_d~Ew``-k9-U*Z)kW#-pp5h)YA&mBgob7&h p?0$;$_x$bn&gb8M@I83>?N9Ysmc=E)ys7{I002ovPDHLkV1fdXB)|Xw diff --git a/graphics/object_events/pics/pokemon/followers/arceus.png b/graphics/object_events/pics/pokemon/followers/arceus.png deleted file mode 100644 index a24917d592396d2f3aab991aebf0333e650f2a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 zcmV--1&I2IP)CqX<(cxKPaXGPB@j*eMvB|NS84(c?K}kt*d6DVq`2YX_d1)nz00009 za7bBm000ie000ie0hKEb8vpKrFQoe zLm|GUs37W?k~VHbmY$Y9?5#gxy(l1@n1aI=tQ-XP2JCT-NaF>?j#$|4!L-RC;DWK3 z-_RMamr^p{Oe41}EqV{Kl4qpvd-Zx4jS)(fDpjgfsZym%l`2)LRH;&>N|ow=AU$}$ zd}&4T`{hgPzivQx>|iNQ=~8@YEp1>@PR=i7SN;t?FW|cJ22^}nPs~@2Mx&ABS{0wG z(O={N^g31=Whp1`5<_jskv z<|K;f)G#vc)_wv$7q;p733dF$e0$3D7{pp&3seI(~v%7O96Nk2Q=z}$+yyKo`d}Nv$;eU;SyK;ou$3E&E>C}8}{n$g7*EA09&b8tuA;TUa$8E6z1!oCiw?1`!I6*1b>(|sbbC3Khht5Px zfr6v;AKHC78qrztgAGvu71uV4cx;+Se*0Mb02ExO*R`v{rg!C(Z-h&Mf}^&t<>UG^ zYGtwb2`V^C$bVfZJiu^*QjX~^ePQN`N0zmkgrhbw`!S`_%p_t13eFNLt`oA+h7*)> z{QGw^$9h(@EPE{pN9|_Q;|+G3O|bzL&uRs)KJ6B=S|W}sdo|u5-4ZXjDvr8d>*HR1 zI((MzdP#WOGz$;Plh*~)6dO=*TnRfC`-)JbBJ5Aa5%x3^uI?O?Y*+jQ6r3eQek)Hd z37nvm>uX{7S)oy+H(v_-Q*nfU%$Mz*RcF$AA~vAlETMkMu?I6a!G39c1ad^2*v+>* z3hkOzyxZvW4MUyIa^eOQ9D8USkB_1w1SQD$pagP6%5ms^$AU216LW*Wo|q*RTDAVHV;w>X zGOh;@N9fA=f;H&zuZjq-j4gk`!HwC#Cd4U0lpACmHu#hEEB4s|;vK8DI0zLw0h`|h zh2lM%?y}A}*I@%8FCf_x4s0LG4Dvf;_}9}F_toM6Rws*3=!(cB)3lf+MIv;Of&|jYJ&tWKbOkjzb=(Ql~e{3=nvFN?WZ2fI4A%B002ovPDHLk FV1mIDn0o*K diff --git a/graphics/object_events/pics/pokemon/followers/azelf.png b/graphics/object_events/pics/pokemon/followers/azelf.png deleted file mode 100644 index 3926c82f6340ff2edfd57b99601e020d5ada8a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmVSDFFci0r{z!F>$d;Nm==^5$WmqAz7*EK_Rix`ALD%do?`P00009 za7bBm000xO000xO0b}Nl!vFvRbxA})R7i>Kk}-?hFc^l#g&On+I^N)>rd~?G6bdb* z7$uyB%T(wsUT*6jXcl*hag9LBbuHY_D3oruwErNKb~z~Ff`@?mNtT?%jW2LV zmy&OL{6_C1DMDyJ``OR`GePfeylXmgeka~JeJOjl=OEZTP?KRpQz<96=0MT9ufZ^H zq?B`Z6Q|QwRu4@)R zZdm92-xuYac=%yr1eUEJDg@>~W%)zkqF`ER7+E2XT@rdpb*(Bltn<#|u$;RLdo-@j zXV?l+bWGuvQn(*{Oqdp0wn7Ar&{q}eTyvG9;K6dv;djGfRcM$SA#w)PDP~16<9INv zgqE$)$*B+_uL@OeSm#i+T)<|dZ$@Ca7UFIeUGdTIe8vjD5*kjda6IB&?>tO&A>@_^ zrXoJ03`H-QeKr->!YC6o8j*x%`otit*$4$4lQ5w|7wTMdmBXC%niCB&h_ zU;&E{s1X`QR_L%OB#M2T8#Wc=FoK6-H*DBj2@}`no+n(N86i3V&QUEyi2D8uWC~Rd z9NHWXne#++>pso-nh?Q*Vhjm;BoG4Qbs@{Lab1|W9&l`P^|#{O<*Pnme_i<3#5&_E xp{KUBDy))ty#dFY6`R6cv!!s?G==|e{s85vzfxLgmy`ei002ovPDHLkV1ffUUM2tl diff --git a/graphics/object_events/pics/pokemon/followers/bastiodon.png b/graphics/object_events/pics/pokemon/followers/bastiodon.png deleted file mode 100644 index 1829639ab9949e7863ef38071f48c4ab81065ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)K)jw<7KokJ*8>Goop`YL?VS?6n@?u|c_;h;1&h`2MsWd7YApSyU^vfml z?@*ibw_@Fg-(WaTNLj$ZrSGh&2Xg3U9iO4PB~;od3OMP)SRcCXC0o-r=SzQHyfxVC zx9VTB)j&Eqr2#u5d_<+oiQ2#BMuLvrcO*5rPcV1hpnC9Nu%ic6s|wVv?*{4E{W`vI zEk2^A?~`~;CdV_RU~Y@5vx!qrD7zW#jWRvh)Hjr9fG^Hw^wOP~ZBD<(*2p`VDb+wS zG_!%De2LH$)RDfi8(nrF#rGn{Cra{00009 za7bBm000XU000XU0RWnu7ytkQ%Sl8*R7i>KmA`8nF%-uSbVJt1X-L6q*K&%ECMk~b z^^Q_#=>HH1@es(+LSzaFE);r8GK9|gBTDGv$vC6tbh06JiM?2VLnYlWNzFB(c+BH4 ze00|Lt9yD+^1P>biWS9LHn0b>Y_CvF+-~SP3cQ=;c z`O(eIa+L-v|}Z> z8#ZyJf7TmV17*9al$uF(Ing;!8kthhPt&fqdHl0)^426b^a1WM7(w|-h{phccgGc{ zlA+?1b7hGW#(I5=3qu4DP%3{)0hc)j>1PEU;40@4D2@w`_2+XwmbKkm6x`CR4V9o4h-(9zWe&B0SMz$7RUG5pTu|2bbYOE& zpKyMV*L69={*;x=m0-AxINQ!=hPBnl;La8usv>B!EjT;D2x@8JR8Ku^JqY9LU7TN<{@2^Pg fFN3D(SgaKVL3T5000000000000000O9SF000009 za7bBm000XU000XU0RWnu7ytkPlSxEDR7i>K)GyrC+Pt?w3`*Pysc8jlFMNiL2YBFtVsE{FLs_Cza&{UWy+K(Q~pr|8?!`0 z;41Au)Spq7HijBhtCKz-)DzmLjbR2b(@CS?@k5&{9F$1=q68D3GU7C-=G%mu9TApv zsZ2cuEN)a%DV*(uwvkkbyh^%Nc0s7(ElX^%nc&pWBHzQI zk2hS-Usew^ZDL*&>U~nX#A~47vkuh=300000NkvXXu0mjfPXp_y diff --git a/graphics/object_events/pics/pokemon/followers/bonsly.png b/graphics/object_events/pics/pokemon/followers/bonsly.png deleted file mode 100644 index 013d39187ee28d0e7f3420625651dfce66c1da2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)Kld*1tFc5|rVlj7!Qq-wq)v0fgA*s|% zAl0Po;DL#u$U&JqFfvq$)iq*Z>=H$Oxx#gbIckV3bqe3)@BY)BY=LEsjEsz25tD_v z5A_1i<=ohZdSPi?g{D5#3$-OHqlKZ9`m7Ga-mr=oi{iPNllt6V!0>`eb@171bujcL zJ+J=Dn^${DX|@W@-1f`0It_b+A7vtCu9=g#YCjQjsI46_qlTWcGCc3@I*^H6B)u-Q z{?1saX4o5Sk>~lY&ucVp?|tUYlngmQ_SwVcv&Wl(8YjCC>ZloVAiWL5+ceR;QxDWQ zpXRL$I}phGr^l1q<3fCCJopx(P&4F!SKP^)!ZmWQkn+^Z+71x7vY8L{{<1xCu09** wTqYOhT;gnd#Gk1}I)8>mFU~0**D3rbKUrSlah=yMFaQ7m07*qoM6N<$g3GJNc>n+a diff --git a/graphics/object_events/pics/pokemon/followers/bronzong.png b/graphics/object_events/pics/pokemon/followers/bronzong.png deleted file mode 100644 index 845bc18dd75c4601f5c24b1653cfe91e7dcff3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)K)G=$@Ko|z#122M3Qo(NVR28IVb1YCC zdu@M0rcQA|4%CZXauW3-OK>{nrZy0wZY4vBr?wd^P-jp5Q9bDt-}#brif4b5pL^~1 zJFpM{``OQa>cKz@cX$4CvrRStT87i>-HkSuKQsUl%&w;4u69V=5!+Nb`x&GW3Aw%ym97(r6?skX)Vp zriDh%7uK!{%cE1>pXg^iugw<1c1l_SFOyvTExO@P^;W2~skd~)e%xp@ONrsHL+V&` zbvCsiG-0STG<|yXxY1uTj;s+6C093sD+pJ7=|c}q(^EKEtzu*eq2zMNpYdosE<&Z3 z^v1TrCheem86(?`sz0bGU_x+i|6gW|Z_Y?cY@>96QMN!nwEbxddW?dz@+XZ+M)}JUD!5rbMzNLl>D@gPTC$%1&X(@#4DB-RZ~Oli z*h%l>VY8a+xBT~F9{;=dua&uO-L;r~2iu)@o`+^tt>QcQ?82HoWwSF@XTAA+c|qh& zwuLXluI3%~Z%&(;QSZF*OsR(1!apV%)9e>NX;5`*QJUE6eTujFU7p3fGH)HjePR1f zxcz%#&X6bFxAtq2>bDg;!Vg9!D8Jr2mp_kNJuf-2bM69-)@{OdQYP95r+krT+@k-L zfBwpu)6Ut1edV{0s#YsiH>>CURl6(#=(tx;_A-Pq1@x*g@pL$0>(TzU){~aJz9qw3k#*8n2$7piaamL#r(%-Lf?=o?LLU zYm^n;zu>I!le^aMx!Ci*->=)bdwP+Hr%?CNq>VT7mCheNdrgP`u19S*bQ3_Qb4lj-4l!J#Awl*Ua-zqpWJzoY{LPBD8Gg`Q#OI>`KZ!Gy+y$ zPhYPmZ`Iw)uz>r^3ibueJ2!sv%&sb&_MJI)-?ixu?^~p+uSCV0$ni7F&U;(WEqkK( zZvK~_(T_hCsPdgRlM<bP0l+XkKfO@a$ diff --git a/graphics/object_events/pics/pokemon/followers/buizel.png b/graphics/object_events/pics/pokemon/followers/buizel.png deleted file mode 100644 index 65a181148863f2c0d9e08f7b7e5832adf2714170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0xKl)q}*Kpe+~Cau3q2nq!u$#Np7IjGYi zLnu^aFl4hac<>TGLZ3iVY|s!488h|)T1fHc&BoxtPY~!JO`-)oLr!UzV`M1l;+p-U+0fyLFeBZ#=C-!$nyLj`p1DBpo@YaQfm37nu08V zR6vXPb^HoJT03AxKX6-)tici=19 z&rXE75atc{BY>!1`earnU8k|a4Gh~}v*7%^NH6t+gZCchLYN13V*sPc1u_pE$2waf zJ|mvDWtHU}T=eqSeraMZgn2`Y{H3+Z7G>5Nj%8h4aKUm$h}Yf<4%ymCZw^Lk3%nIR z1ycBU2niQRtln8*UGclCSu+CU*xa7bXBN1;d^q<-HWHf${s8!j1tP20?7Mh4HcP&H zLm@c&%@iI%U%e~uMZv~-*^r{GzW_Ym`co{7JTEZ}Uro0|_b zD;u!w%}qN){jg^qd5$~cd=h%jiOE@uvuT0_G|kWv(EE`aQk2-ZA5lS|u=x}Ps?)>` z@jOjK6SL}0QGjZ*NxXm!Xu|q@%&ewees1LX`UN|Q;TXg9u)+WU002ovPDHLkV1f|X BMAHBO diff --git a/graphics/object_events/pics/pokemon/followers/buneary.png b/graphics/object_events/pics/pokemon/followers/buneary.png deleted file mode 100644 index 23ab75b7daeaaac7b639c43a685b8b33de3a4c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675 zcmV;U0$lxxP)w_dkx^Oc>G`>lS?R%vQBg?%0000000000CoaSs00009 za7bBm000XU000XU0RWnu7ytkQ8A(JzR9J=W)xU4rKokdX4_DoM5(tTOsfAQ2Yze4? z7aMF@!b=E7%$?d1D@hO0xl6XL*+5XI*D2ts`R590e7^VWN0p(fD)HSu_wMeU&-}2g zV~#oIm}CC`F!!+kdZN~0=kX8tP%RJhtIcfN1>?wiyzRcC%rPC!UJ<Z!Pn&vG;G4pV@A;d#7vI30WUFYqtnT`-c9dZh+nExEBA>Cd_6vc(=&U z@$BFvBh2jE>u^<^51F;!r2bsR7U5X~+-=Fv4O4GDrab%THP&`i)}3Wu09Y>l5dN|Y=AA)LJ&^WT-3q7(8i)vH3)O>wFr$`*@845iu%;7A(I8u zNkdBTgfB6Z@W!!qq;x6EK-5E{!HdjA05-Sce=*UfW^Ab`8&gWDAA=eXx^C40*a*+-6!Xd-8x9*Ds$b(;Y2bIlKMwqh`~pFc@J27#^CAEM002ov JPDHLkV1h)uKp_AC diff --git a/graphics/object_events/pics/pokemon/followers/burmy.png b/graphics/object_events/pics/pokemon/followers/burmy.png deleted file mode 100644 index 5c95ed87d30a7616fc037c08fab053d4528a2b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)mnLF}Zm`iP1S>VPOCO00000000000000000000-A_Oo00009 za7bBm000XU000XU0RWnu7ytkPo=HSOR7i>K)Im?eFcb&ynJt{{gWx>2GiJxNC5kr` zGQ&skrnsn_NxX04z}1K({kC?4(AO#wiQe`<@!MXEhMm36(u2P zeQwOhcT$M?wpP1uT*Y5xOO+OhZSx-eIPaGsGY+*GtS!1Jkf^h5=DOa%&!?+N+qG%P zf%3RCX2?EJQoz7$){c?u+=MiyXOltXv@1X_34j_t-^<9n1(j z8SL=2jAr;N97=lmX!rM?uYq-5u^F{ZXwNc`tph@CaYJpqw@#+-HAsK3&)dmPOVUHP qt1Q3#yL*0exP58YJohvE*L(sv;CEJGZ%q>b0000EamT z(fRhWVfG;h5%v!}2Y>Ud3wxEf#?Jg=)68fl*`-d-+X8a4o@xKM78daS_P3&m_x6TQ zR@@T(@AmsizxRtfp3lC#%y+g~{frqqCkv&0Ss8IPHm&@$w0hZu<)us3e?I+lDq~GX zyYA7jZ${t$ikHp&FJ)C%H_P-}P_CzB`NYaOUuWOiUt3?cym+?pOqs-M7am5ewVz}3 zPKjIQ-h&l0|GwPGe#!6qa`s1`nnJkTt~72w%2X=T-sifAVXjlIi`fD8rOEvDk_$7o zOv~6C(&b}bw%wF<{_!QRMI@S&moP7osEAZJv%6u#_W0$x7kAy!uv^I!6dfQ@uj4a6 zWuFcI@tJyaZZO``c*&4&?$`IacB{FE)t{yv3p^r=85p>QL70(Y)*J~22F83(7sn8f z&bOBjW*u@6V0&s4TEl-@s_g#qxSu62lXy3)ef6@s`|75&_T;k4mb+3n zlC)yp)XyvbQ@C5{%jKotTUVHVWO^u))6{rR>oUWdfL#(^w~p!0lZaKUV2+ggw|L*S z);A`tKTErtW~YUzhdt2Y=G}byAw%YFKaS%1=xl}ef0-+t)eCCACYLN*EXt^)U@kj1 zPk8rPwg}}m=0(4Augy8Dzxy?pd1E7ASjL;uKjkYg#EBm*zs2gD*l2iw{RZD=%Y4^u z6K*h6i@j6YntoutX9C9_wL7t&3V3!Tq#ib8Et_d4vAIGkvs>1F!xry#Zl}Y7F8xd} o}!6``*fvG`JVJXR(5lN95kx4P>>G^3XDFFcinaNo>IXQ`88EJ_zaz0kV00009 za7bBm000ie000ie0hKEb8vpKls#zMKoo!<99^o(IN%{$@sg=>PsXkV z6-E~*WYCay%8;#N!FbTn(QCj^x@Bk~6gm{Fa5ZT;XxEadT{?Em63E~mNaI0$C)<+l ze6oj51wVoC_x|5I`2e=EmH$JCz?a1f`QHmnBY@$!kT-=>>aJrDJU$ZQcq}3_1Kgv6 z*K-jHlNw`zE1-x0zD=DS##lX$%na6}Dq|0_u2g@%oI@u`9}6+!@-P4SvG~` z&L?}g)4ghX1{#0bPa585Ms`N8u@~kq6Y4B$#;0!>JAE75Mz+{9eB|rE#Gn6s!D^zu zJRzM?$lWLog3;aB%ob-fX2IC;g^5Yn{`geqILFf4z4@sd}$lc*P$q(Rre*+*SBI47-taa}7KU zccptJ<4%<4O2X)0&il)XyVtq>fpwv9qtUhT%S271+m-w7hR6eC8aC_&LyIms@dxj0 z=`SntK`tQ{bX&Q*o)R=VP1F#Z!s6}q{G};ja_iU&o-6&nz3|71uSn0&DxBk>O@}JS zO#CEaCQj3_*E!_vSdlz+GBb_{PLJvF3Iov!0M!eq9kzNI%Mr;3s>VAlP~}XW2=40> py<2BqjVGFYRYBL{M*po8%U>rCcNBczxFY}n002ovPDHLkV1nb%V_pCN diff --git a/graphics/object_events/pics/pokemon/followers/chatot.png b/graphics/object_events/pics/pokemon/followers/chatot.png deleted file mode 100644 index ce96be737307ce03988942bbba1a42b6a7c27dd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)K)iFy0F%$>zgPSsnldIw$IIWyqUHX>7 zEg~H{TMB}ioZKB891auP2Gh;iT^!rxAlpHqgOiJcAHrUQHurjoI5-IXZ@-t^%cbev z1;HkpY_iG!386ld42>c$A~U}Q^;xv5)3M9a#A}jfJ_~3EKAVQr=bskP;B{G|)Mqi_ zfzu=sQeD5drIeAx`!+|gX$-dT%cHyMwjF{Aa4 z6CKa&e+Y8fknxXqYtc22+5C-hhX+M8yVwqwEwRm>*-5ic-Hsb_5WCD7WA_n{1Bc6y z8SBqIKHQUhpE?{qUd!F?>e0nEk*_bA$KmPD)|u1fp%dG)3Ga0AqdZ*u9t4)ya;E3Oot~ABnx2e|jE$C&K!wO)u0@*ykk47*5n0T@z%2~Ij105pNH8!k270nmz&PL_~HV`W;Whm);n9y=YM^pbuKqDvRd_MySVP-n)H0t z&4N{zjn0*S^Qz38>wW2qWBZb~&$s0){do49)9I%XC#~ME*!)~u`^CxFNX=qtmObj_ zsY`jXlVZO=S+^$SjK2EOsI$@sXEsTG)bM_r%aOiv7WcuvCgTpJH-Y~oIT&<8i|2JT zHGSXEwB%a!^TXGE9oUiT*s<=cmK%4{CWU3(Gnf^lvmGMSgZqD7lz+Yiiuh9Rk_diJe|G58^^x?mgW9Fn+a000000000000000RP|8w00009 za7bBm000XU000XU0RWnu7ytkPxJg7oR7i>Kl+9{`P!NShs(Yn`ELEt@i=>6DQfM0L z$^>!)E|bQgcNZ7szCq|dM(R`cs#RxhY6+#?IgrISGoCXif11`;Uw!q}*KbPq{#ejc z1ogdh?&*~;{EY57olN&fil8oR)xaGJXC#t#MP*U2t+3^MFQ^X_O(|c9M4&s|lG{YO zE151xeya`k45yV-=CQK~i8Vlm7G=$}Y+(%?$~EePp&&Q=3KtK!$sk0`3Z6A+Oqsp+ z$%5ntMnaH_C6h#z!%~}3Heg!Qe5WsbG&QD}4Oif_n(;unYA%*HtzgNwFS{B5yu}J_ z&v%%kCq@odxoR@LZUifiAgv8D9>r1Ex&t6KKQ`AS{Kv)~qg$(H_6k8GSn+YvYz3+0 zQ)`g%dCSHDd=mZu-WuKdbrTURdDnh$W+a)n;~+)+3_!w5j^SR3FsFhg!*3Fm*sGI@h9ekAm$3Fu@&Q55zYUZ4$ zKXRUTu@U4)@`k8foiwK3tl4-HUOH#N9nmr;EA6bzQ0=hG=ju@Xr~BXf1TluN&NM}p Qvj6}907*qoM6N<$f?IR-z5oCK diff --git a/graphics/object_events/pics/pokemon/followers/chimchar.png b/graphics/object_events/pics/pokemon/followers/chimchar.png deleted file mode 100644 index 9db06cd98ac94b51d7bf44516116066362c9e013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)8bg_0qN=a*|~9n5fRZ*L7`buJ@ljb00009 za7bBm000ie000ie0hKEb8vpK)IW&YP#g#F@ZQk*c^pj#Au+>6&=T_q z8gO(HTuy`xnF`%Hv|9^Zq7~ob;5oTCIUENL$E~-VBAg)H(LZCBPAy3HZp{mA{pFdL z7E0j;zf(THU;O>_sZo?e4msqIhm*n|jI<1AHh)If{=q0GED+2~K`z^*D>pKQo6Y?N z1=7{BYzH|@W~>JU-Yh!asglH77L7@u9?4vZ00)ZZ(Fr4P>%P@MW=x3M1qUWNuGL6X zrE=?$iIHx^ui-Z$n8zJQwWEn8bv&?`Zv9Dg4bD?EPwC5=jBdA@%#0}nsX*55; z#~+Gp{_119t%Y;2ojbfwEN~dLkKw=^t@Xi?RP)Vq`0q3$KmOe})$&CPOyh1Q7hrvT z^A-#!y;|QGu%BsJ&~z z1(dNy@&hQyr?v(Q1zJCa{Z9FPvS0qR>pPwu!X|Rs3G+~~pkV8-``CV&_1gcOAEAY; U!lePS0000007*qoM6N<$f|Q9N-2eap diff --git a/graphics/object_events/pics/pokemon/followers/chingling.png b/graphics/object_events/pics/pokemon/followers/chingling.png deleted file mode 100644 index ced46d317a63a24b268019a4a3540b0f89de5c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)G=Qv00000THles00009 za7bBm000XU000XU0RWnu7ytkPph-kQR7i>KR55G9Ko~u8^ar#MCkruJ2+|?uXycI0 zLM4-lq?3!3Zg%QW=~xR5{)2#1J5(I~2MTpM|3QCD?*e+?U97d(4uw3(aCu+e_udN$ zLOF8e$dTjUqW+5T*#1R9!Y(WXv43y74~^XoXvTJZ+-Jk}J24;ogJJXWYXki^+Z}^> zOEIG^#8u{KQWiJLj^_|Dq#D50i@}pG<}2`7j?BU_tEB$|?v$bcn8+A#EU#{^6A>vb z*HagwGOMHk6r*A?(p%zz_|kTvNK}kEYo5#qk>x7NLcYNRjUd$NC8J&o(9J;%4M6^& z5ItLx7#S)H8G3k~jtP;py z(M7mQlhB*k73+DT2{@;~Eb_JFxS+!kwKB+`e=H6O=#M2LQlF{7EnP|iwRQkMWRq87 zZ01X+_XK(mzYXKo|z_qln?g1W_9tnhXs>w@%`s z=+-&kKy*zzGzeX~gu0~`TGO~hTzYhK%9suoLqC)~-h}%@63|V|I|P1B`#w)DMW~*7 z>Zzxm|2hX(Kl}mq*|o^>!k!$UIP6;F$^h(}W=m)z8djMInS6j~2%a|t!}Cu1kBh6X9X;;CoHtQ+qoQ|O!R2tRQPGRdMWeJyIb(fhTh}> z$usDmSXF-1qeYn&*B$WpWW$H!Q>W6?W~m$Ay$~)N#&v&h*L9?O@+G?4^Q2+n{0000000000000004G(I600009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K)G=#=Ko|z#8xEYcfzFCx=oSbBIvHa) z$XvmHP_h|wscFa1ki$Qay$wYCmGum1zPtF{)~UWzo_oE|Qz3-(>C>mrzX=WNnufRu zscUryw5hueob1zeh?`jZG$V*j-S5C{k{m+ZM4BKrb=P@JB#Gc5W@1T$V=1oG?#^=H zMC?;>dnb2h(!ASL{svF0yG<;b#Hi`G5~7@iout{<0Xl z&b_7WfKK-%Z;tzFa$a}=Vyjr%u+x1>FdgJ3vkm8%t;kn8-7@qc$VVY=YqvQJGt9IY z#^B;R%MC}{R=bwR^G{{7W|@d__~k8^abM{p z--o^QP0UvgtXnSG87;tKgJucdkTV8*&e`oibOiooWMcUJt^8Sw$0ij88X<0dGDLMJ6;pyr5*=ecq!C^r`K>z>%zcj%100009 za7bBm000ie000ie0hKEb8vpK*3C=XU>pbV=TKT65FsKm86HeoVX*el zz{X$)g(?i@VKBV~qSCky6;Eav*>RhL2~mgbBe7Sp_z&zb@MK7NE*)C&@PJcLy!3C_ zlb9!OOX@av*kQjz;ggr|_sP=~3c&yQS0;5Umm+7QrZYBj8{c#_UC{Fv-7R+YMELAa zrj@Ouk**deyZPpVa_dOyYH_lQ;c9p}Q3H?`?+i_K^N~2&PPP#VjQSS}h$yxb4fj?_ za8IHJAhXcgS|f9b2GgWPT2g{no|>V+sOh{}IBD#XS4&Bzf!`tp0gn#89wLYS$*Adq z_a^MXXFCa|_mFJ9H3H(Dnm8mRuz^w2zyosJG)db`Fi3Gj**w<|Vx1ameYOKLiXL)c zv}N)^Q&!vBQoLzkpHK`Gq`5w{&JD1qxw}TlNJeX_K?9(ufr4%2?RKyrWEwb#5DT!R{}ULrDWY&7d?uyf5 z|4e5eV0O7<4FL8;bd1gRQM+yE362EP*BGk^Y1n;@Q{#(5;Zif%<&HZ`7<+jDEsN!a zDb+gwuMOe@!4`&RJb&fy$#gFZZa}zXg>(ChyihDirW9|uE2tYqp3i}J zSFPUrhN__gyxvBr^kyHgA)&wuH`SS}An=uCw=m7j0mgQlN%gJ)2&~yr+iLgxfJU4GuEw}K%HY=oem_XBmf%7Jo zKyXr{9OwU+p@r1rZXv{2?mZKVo%Fo(Te1rmZL>oAp(BA%Gef2grBb5pqKjGilom^F up<}l&HW13-H|OFsROtA+@DBt3+WY|WK@CXRFz*-u0000*H0000000000SBp`K00009 za7bBm000XU000XU0RWnu7ytkPp-DtRR7i>Kl)p>EKorNb+?J)FxCb1B4#E-q(d=EL z@mXxLilCEd4e0Ej;82`ZNXC$%xelcvQ|^y47iseD+5{;$2>EWG`|`f;y$d-_>(r@J zr%wMz#LMhfcFblbAbD#nG!B!GZJC^gv6Qc{kRB9Tv~UsxVH1x-#_-50|EfU?lOSMh zjuue3lq(A2?N~I!fhzwLh?V2*I8VgLhn1&txz*nF?dRpa-Nc&9iXz+qar%-Jm%gYx zmCL~1)AQF&&u(JPVTDX>Bj>Mo3P$?u+stIZSY&Tza=ar2s$44bX7BjVB7!~S zA2IfTeZecA_e?fGfdxlO13lsZIr{SX9DvtF`ryj<->@$@TKVA3PjDc()=X|dhUb*_ z>#jOmQo8?GjjT_W(`nzW{aCQKV%?1oa3Eoh#N`Zzk=21@C>Ux#OAUjL>IM^P7*=(K z8FTtL%{5brMIr^TP#~lL6yG^Df%2L;g|zmwp=05+iwTuj1o#Ub@Bu7z-n+a000000000000000oYh!s00009 za7bBm000ie000ie0hKEb8vpKmOXFVJP^l;Eas{%PC69?3bOth9a?lO zV8zI;w0NdOXi7E{LsaHfo4eHN76V06eah$fBI?Cg+}|K0JZFSa9m`ThlZfJ?7IyMth5Gn4v>~{2SR#l0kpo9T~+-$Q=qc zdd%B&*vZgrtK-zW3G5xZd`|8*r!m=(76k5cM!{z=cDPOcjN7R*=a71Bp*sc<{Smr( zuERV85jo}v_h<9r6$Yl!rD1sV?#x}GpHe0w`x&8+KBP>?X{{57IidIdemcR(VB!r^ zRHeWDC5I(^26j8R-{SsR)1Y|m9pEFf+X@xI(@8LJh%V|8g$CQJpy(cvy@^@qC_!o$ z3w!J&3EhcKaI2DF$2vLCbmf*-1cC#IOuYkF2<-C4-71#H*C}$SAE_M`CRH`C?W$sK zMTG`Gf8M~NbPo6~vU%_|FhJj9M$gb8c!!C>^#hrG+dMScItfNj{$}lNjcxVtZf)8J zw{Y7=uG=eLBUAl%-)!2#gew!QW8tr%x}KL=RwcnHle)dZrg{Cgx(zj(FqN#%FS6(P zh2aX>mWi2k8Rr+T-(;tGC)n{->MFDQyt>amsl43jLkz6^l`r$#}IMREM}Kgt9hIf`Oq;`WT}8sOF$PD1DHrv~1C~ zj9Ybxt7Y+_6)Fh^E?H_*0+uc<*lINceTWGtJkFR34ng(@YN}@eir2zLk7_jeKdu~wQ@UBfg^X@tbEtRG(i_4955qCZYd$1WrU3Xe3sbA6NJas>MDtS)vmuEu2Ucq;|kThbjf2XEMdCdrNA&mkn>!s??8RB$2sGL9Lq2L)5S zSR_nI4B`(K1N(hO6oMRKeA{A8dk6UXA95$DpJIwXE;z>ipTICWGUhO*D^sTOY5x21 cbc)Bv{|gl!w;a+E!~g&Q07*qoM6N<$f*0oM{Qv*} diff --git a/graphics/object_events/pics/pokemon/followers/dialga.png b/graphics/object_events/pics/pokemon/followers/dialga.png deleted file mode 100644 index 2cef990b3c970c35e665b9b5f26ee6534b6903e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1686 zcmV;H25I?;P)p8hHm8M z_;1*IcAdfeo?fHus9%B-^7+a7e5LoKXGajyN-M3j(n>3>w9-l|t+digE3LHBN=p#H zE&2bUkhu-N%h{X9rCW0BSC4Or=b+z<-`}(! zxJ1vZNnSz@Hif&koxwknaX~MlVc07(1M;{act1_vs|ObeIoJe!+wR2#i06X7dpe9x zVghiu;Eg8V9J$NP03415kzI%l5X%MKh=x(9vjcFrHW~L+SF@`LIoL8#A0dSqfWw8- zax{t}?P)?TO(NnqEHDIl{PqF%rh-c>K@OLCQKY&Dkv&MpXM&?JK0qA5T>x;Zz6@1& z*+%r643Co*-#8sbNNFeJpKKe^^D!o)l_T))$0f<&jkVRg!&>vlbI|ssQ?o?G#FD$S(8S|n5HxC?6IDKGH=4om zVgL@urMl*-WtsO}MgR_%+COfrmC31T)GN)!CJq;|Rn6D8^Ge$b0?H8La9m4PkqGWt zi~u}dyt8rAz|R=Z>+Zawq~vgH*w7_O(v>FFkH?AN!w&go2Z-kxaXnn?dSba`9l4bC z3XhA8vMx)qt~+!;9v49OVW->aSj?pehvPS#p(z<&%inUhXd!uAYVI0vT`t#HlQ5P8 zIjiSk4(9R-loIf%Ae0P*28Vn3S^_Sr&)_=#g3L)c=hSBraGw=}tmEX`yY4{(P7WaJ zE*35a)3L{N05ugdkjN6lL39I11)#F&rqpXpabf|CSNp zn!lkMfHi4#JqlM%jsD>kj|<>8Z*7QB{|Op+UI8tvIWRxPGoWvesT?>bqj$k}-XDz> z>Rm)JCNqBirbrdgPNQiJSOMmo^|6FrYK>2kjmAhrsJGaqm(Ebwx6v7ugOYLeu6uvg zk4A54f}l8xW_+yC0~lzC^&W@x3&`gJI7Z{1jnF01ph;;0$76K2fG@(B#(^}tsC0h+ zrTb#^o*rN_=WpqQxP|&y@DW1Po45e3d6gBwI4j8ONP7S!>VglPje8JJBkdB>IG9}2 zg8R9)H+oMULejsSCD?l$4NZjTk6Q40&glV3%Y%X`L-`BHxJI8BOi6~U1~7?CZ?{x~ z(O=a4<*V~4-(Us!AlMA(BMg*-T3kS3`lvMlQDn>_0)WJ7z=BY7N^$_R^!qr>bqHq# zoC`J_#{OBS78j7bL=)n0AO{)Ouz4~Cj0P;&78@RLayhDip34>qX9mQAqiDDyGfx1N z2xkQ(W_1#7wq;^w0}&+uK~Zv9T0Y?C@PVZaGawesJc!N(nR*AoYr$*I44~JY%zVql ztcIB&5m9`40AHDLdcdjR#??6zwUvX9_117^ZGV0 gT#4VA$8TEy0IlnjH+lskC;$Ke07*qoM6N<$f&%{_ivR!s diff --git a/graphics/object_events/pics/pokemon/followers/drapion.png b/graphics/object_events/pics/pokemon/followers/drapion.png deleted file mode 100644 index f84879346d42370132fa658398faf5a04f8c3d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmV+;1l;?HP) zd2wk$ak06G=Tx0U;qNd4Y*hAxV*8p#T5?N&)1100009 za7bBm000XU000XU0RWnu7ytkRnMp)JR7i>Km9cB&Mihsqm?F$UV2!JE9tOP89$Q?t z2<8f*n~+5ZTSZs6SU8R}DN+TTTz5u=kl~tK5mG6#oEtw26(+^Oc8M$3*CvIs8;lD5 z4S6GtRD5wau{Q+va=152DB_x^%xWW@>f&Na9dm(o+>U2ojg>9znNGSy1PVy3gd5C`c@dPWd1{2z@A$Z3Z#5Tj z(hGZj(hU%79Lyanq2adfSEt1)2 z?6?t5am&G*vG_3|t*}lyW)brAk0(o2OX!5irK&?9X)2n)I-xg_@{yI$uolt*t|vX> z4sO9#hz$*^gMGaC=X)nBv!QE*$O2~Z5LDbgOM1Zh&F}Ajvl1HCLOS4h`gO2}=@^%U zdbpbnd%6MM>^ojo#+~r|My8olzE)xTa11z_-X0!;mC$gC0?M&YGcGd21BVI3sAvga3PW$16 zJa~I@a^?07o@yraF~{X#w>T^3=ll{yve@A1y~DCS9<_?Dy&@~PhnGS0ngzPRRQ0?gxLl#bS{1E%6^ zu?X`7=n-KPmgJdcZX#mc87|(5JZTX~o*_G(!5cXF6?u?%LVB>5$;pevr+3DeL d`RGQ&zX8gO3}KkD#>M~u002ovPDHLkV1lUO`*HvP diff --git a/graphics/object_events/pics/pokemon/followers/drifblim.png b/graphics/object_events/pics/pokemon/followers/drifblim.png deleted file mode 100644 index 69e8ab561a5ee51bfe8c4180126fe9c86652f1d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)G{#ISpfk7siDbf5g9>2L1}4$eyw>900009 za7bBm000XU000XU0RWnu7ytkP*-1n}R7i>K(XmScQ5*+wmmoNDXl!se0wKx9ocjw} zbZBXEvdM-g1tJu9K{fl}2nxa>h|@tq#kT11VbLED)*_`{5HuCh{Z8@je%^a0Zh_z7 z@bkW3?>r0yW|`&RM9GOguLvAOB{tlTwiTiKlyBu#b(hHSdl*$|PGG82#<6i~Lbpq7 zD@VFYX`AmprMg=1cK?`Cm7UogvXzFeQ?(^BRe27YpPgfDh!kPwE0;Ba%^$_FbgVOa z=O~e_Gg4=2k7xqxtj@8N?lV`34C%&5qY%z#1+Lc#$K6;Om2O*S2eI^PHIo&XkUYo2 za+vaNY<<5k*@nio43@nu z6%XNQc8P4At#*rh*+-3Q`Gt_E>}_fB#9bmog5~JS#Y?0!IvCj5%d)!%4^eW$9GB48 z%=7o}`O?QtXtWu)3{%lO#>FDUVa^XovM#jjX3m*oAM5m%d$tzcbs!_ELg3u&r!ibi{%cN_&e?xrbi(kf;I$CZ~8H1 z+45$~PPM0Je%?~N|MUMGgJ~WrLW?W6l=PQY@7OoN_8O~|=EdE8_V0pj7=GF(ean=m zb;=7y#Vt?MuPk-g$S!>VMf2=6~N-JUM)u`KPDXKQBE}{&C&BHxt(TxtKq< zxx!kvPyAKHC7Wxkb^P2*y=EQX<*=4V^lb9o#EAE0rJ^4WO!_Z;E{1*6)tr5NyMpH1 z%(kBSn0b3mY#`9~A8Qxxo?LnF^0U*^-uOMUjA@wvLMDCQ{^$c|&8_kazn^W`s5@J1 zn}7G)7kA$NVm{pF`=M$5%@;L657yaxuv9W7eO@txrS38lCp}GA<2Oe(P3dxQBk3xp#T5?000000000000000lqnw$00009 za7bBm000XU000XU0RWnu7ytkRAW1|)R7i>Km9dWFHV}pxh|P6Tb`J}+l#qj5*&>U` zl`RrD(A^b_dw>K%THh82y~RlsV2n$9o7GchNK>*zc(cG=lK>fDf&E6q{~r!Ti;(~0 z-xBf9Kf-TS6Y|sJryt z^mQgw_H1!huP_Qm3pl2P?1aVj$iBkU7$M`rwD0@#Vsn#GP(`dirBt>@Ozm3ZdE*RG z(9&e+Arm6cHg(?I=Glm0P?QmSFT(M$Nl7!k%UZmbt+k2 zoRmL$;aOU?f{T}yG3YZ8m=PrmYz;}Iek*Wbe3TOblc?_2;?FXdXF<-)mvq64pm#vQi+Qo z2gB`OcUds<#c-Fk{kcDPqd~xGt@Qi5*1S)Y6Qp9~o!B_RvZ(>~z=xM$;EP5D;&|e# zQ846P3wl-aa$ia(sMgZ6_7@2SAK(y!7*Eaf#V~3T$sryEL&mpOni7B;?SBfubH&n& zgoYTJ1jeb(nSM;Rb#m>Pe!PEZOfztFVusha<@%{`f@tWOx9sd{WDEe!-Dogp3W{%= za{P$tPKx9X296+K(!(KnICPN}w1%EZnVXA5VmrPc6av;P}ks+Uu{PwE#5f} z``Rp>pfwygD!z>~nM^3)s$^2=>x9xa=FQbEYg; zT3qcb)}j8S9UCRMi(v)%gs)uyEMH^VDPEe%_LP{hZ>ikO8D?CX=>`H;bk+`j0rg}; zKHdcxqh`ph($ M07*qoM6N<$f~+j9E&u=k diff --git a/graphics/object_events/pics/pokemon/followers/electivire.png b/graphics/object_events/pics/pokemon/followers/electivire.png deleted file mode 100644 index 35320b0517b68a26c1633d1f8c7fbd2c1aeb5df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1021 zcmV3Q*Cap~##Nf{w=Ss4KV0RR910F7~f00009 za7bBm000ie000ie0hKEb8vpK)j^BfMid9|K?HotfCP)xg9k|$yNBqS zTiHw5O9@$s@t$-p^kQw-$OI}F!{V2VpgpypAm5<$GlU+ph0@&Ikp;^u^FLdLZR>(1mvrAmuQ>f6lx!^ zc#iWa$5taVHY2o5D&Vnzg8cgCyiFV#1L+3ZT9vwiWgOXHJwnUv)!_m$dGV|b9GO&W zn&|~uIY~~8Bcs`s;%!#y5n9HH;JAE+Jkb-fje!j=xW%8W&duE+Q-H%!u|&KTe#SQIx;d{QP^i~ZJ|^RY?FrHXatisaBM;jA%FQE;Mr^6 zi%(5gPN);N;03CIZ4&N3DEK>~1IH%hu?MS*?fzy1;oApXU3<_~I8RPZzrM)uOXFu< z;Mj!R6+UD>&ww|-DL)xJYa1}G^L(Kj*rvZI`uw?R(E0biK^Qgyqy$!YKK^Yve6ZI( z$F3~SmdndVx|{OUq+xu~{5e~byk%$ixv|3+jLDzBkwWa?nvgjRRt@J>>dH&kJ(KP< zQ5!h+wR-ai$?nAsP3e0a$syEb-J!^N~pM4C>gtV;9-2B+=6gvBnb zn!-#3&7&9&y)ls1>bcL$5L5&3jN66|kE*2JtaAL+8_10#H9~a-gM`Vdy8+@9uoSX4 z20C~Ce#==9`}lsV`N0v&v!HEAWJxg*^M(y{rcy^l47gk-rD+fYXPe#>@AEss#Pkqg z7FyyJDHH4uoQ}T6!8FWVn+;5~gDw!4T+Qm-)j;j6$O%f^VWxqq} z;`th1U)=_1rtJ3DM}J8fk)dK)-yfUMr(d)S`%*#gz8xB7`RRGpu&Z~O8<3-N;-@J) rKF}^0*EsNB&QmEzC*?yc{+s#-Ym1{1iw~L_00000NkvXXu0mjfCB5rt diff --git a/graphics/object_events/pics/pokemon/followers/empoleon.png b/graphics/object_events/pics/pokemon/followers/empoleon.png deleted file mode 100644 index cf127f9bdb9a62c8e62216ac2083c7608375875d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmV-81IPS{P)K*1b>LKo|yaOBJV6HwF-4YZQ55t0gN+ zx5%=hOt4f5)7iONj+wf24&b_unKEDzwyNNoV?;tx`_J`!=a2Ixu3Bg}US;{^k)QW$ zVFg8bnV0!j1D@lp!+Iz?n<;v_(NVonHapMw5Iof|t{2K?=lRgu5zq8jhOy<;7u3xz zxSG04^c%;H(`dL1;@Seq?1KHN*Fw#hY^CN7Xn=k@$}d_0aCtptRSWY*yM z-q$!4+GNuKtT1S_!wLhm+4Jabx3)ks9ozaee*e)%O~&+z5P~-w9z}OvP~DzvcEOwL zski8$Cflsg-fVdJrRAE!0?F9`v(;+tnvI50Rv2#f*46g~Hj^@xolS(DWsJR9qY0Y^ z&zHM>Re0#K>48Ynw``N7jVAlqr@?mHaNHD?b+WSq^|0FUdc~1o?zGHLFVovaROQ@x zerAN^G^z?^D}az_)gSzbNdDlw!l=kkFa6I8AC}FSr?S8~K9lp8be){W9m~xqqM!37ND9#exIf z5KRlrR~PsA1ndUuqeE^*N3K7S#cC_9< zz7^i{m4+v0m9ud*+ntGDg!ZJ1{xF9VS}62UYg)ZuvG&&fYk=EG%mXt$K>+~)Nnv5BL2;qc*=Yd*@p+;7xzRC6K>z>%000000000000000+C)>e00009 za7bBm000ie000ie0hKEb8vp(R7i>Kl`&6)KorL>cb}j~OgbK@jp+oXGBC<5 zvb7Zl$2Mu4?WCiLhOg052l(JY7D%;t63CV?ho)ImO^|rtAb8B=T&I1vgptgjfJ?+9e%A+?E6K#CB}t$3(8< z4F3$gZ6-K|Al!3F4WvJjZM@fdhZPF04fqWVt2x4w2Y7*uLsvKk<1@BF5UtoSynvpy zQJ0r&(I)8V61rkIvQWo$5S>g<)Opi{CEI~v5NWrCiD1F2eRdG!T1WBDT3duA?s~{g z7DYHY92lQD2SJ?dU>(*$9PguPo(FZ8ADH~hUY_S$WZ(m1Lo8VFxDMj=CrtkE-VO#P zS6hD2@d6tH&wdarca&PgLlC{iOP>eYG?S^DXF>1(YayiaWO$*dAUg;y?Am600009 za7bBm000XU000XU0RWnu7ytkR7D+@wR7i>K)-h|_KokIA(Mf1?ha_YvIVd&4saNA6 z|H5F5L&#E0HfM3jQrnQk2sK(d1|kb$i^Hjx{sM!c1i6OLLMc83%~CRS2pEKjdp$`f z>8wcd(6N2nckk}K=aU5Hxc~9bgz%SM8P{sM->tB)!rZmJ!s!FR73PG6ooYV+J;e~B zTQ$Wbv;|Pptl!$nh6`jam~_aYNkPQiSk&H+D(y0N5;ea-7$Ga(0&)u;2Ztl}4ot?AiIrji zz;=QaG}}dHSTJh$0KS;bF0Dih59^J_b35Mc$;S&5zX}RQ?L>e09(}p&t4Ze08YG%r ztogyG%OO4s3P$Y~lr8k_@k~uJ->8GF#t|29UN&yJjc}T%$uI66Rne?m57wxmpVtrb z$OKFS&wieV-SzPBQ*#5cesVKz9sBRDK%JwTWH2P(4%UJ@YJ1Mng=e`}!7yD)`T!==xNr1;17{%7q~g-Vx$EDKt5-uatI6d#xHR*zxV>*JPtD z8*Br|ryI23{N~MhK@%ap0pi-71Ok(lTE4WH?`01X%x9FTg{Ljuch@s*zzsmJ_A`&i zB{lGQn=yH>fw5N|fo76ho7l#7CdoVydu@OX|Dg&%tO3T(4)Rce9$Isp4cyBp54d#@ zSlD;G77PeQ9cn-f4d9YVL9(*+?KvC5hC)Zj)z_NM3R;NX^ zER)wDyWjcWps{(0TMoVxS%})*)MWC_r}? C?y0Z< diff --git a/graphics/object_events/pics/pokemon/followers/froslass.png b/graphics/object_events/pics/pokemon/followers/froslass.png deleted file mode 100644 index 741b66a3b1d18542868447c9107a74c378a66665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)K)xm4pP#g#FoPvSf#{Pj|M}#sccqwkX z>{To-86AC~w@^YP2X`FwRs_M)4T7C^nKSo#@lYqogB`XVcJSmxCL@+c|Z@_66hd(UU&xSP7E|Ds}ttL>LjU*TBgz^J<)3|A82xzOGOE8DT? z0N|(hvYqd1ESD@Z6bJ21cuB}tIv{KTUl8&ho6+VCY^zinv_C;2q(ldV&Dq4QDHm<6 zw$?~fY0zHP5@)Gup6!Mg*o(G+O5#x`STeN#Y}&a0v1gl1Pe>+ClxW}D%!o&%y9|TA zoRIDJJ9GdrLYX*1(SEy0D(-%kONRC*JW4(Obe1%kMo5yv4FVr0z4MZngV2|Ow>#Ml zx&biCNKza{`xt#m5qS_a0QT$0oknlxA=?wlEhXBTypfa#!EX!NFZ;u*?e*yjdw~q| z-&mkGCXn$y8hfLGR!MhC=c4b_UJ@Q@1v`Wf6YawUK|FN1-iP33kX@M~j0RaK|;R#W3xv{b7IZ=6Ok-@n^82|tPFaD(e00009 za7bBm000XU000XU0RWnu7ytkQl}SWFR7i>KmAh`+FcgLba3~+4dzT=SQ1&9I^dn^I z*cS*gHiH8rC=?4w2}6E?juBA12liBCYBvpK6?t+7BQU29-t-J5tqYHts0Cc0Q~pUG zDgOWAMU>|~>QRsSZ({5pn22bn(`AqN41f`TUw(N#-SKnT3uUg!an1o8D$jxOlrFUk)_1pb;q?Eezt((hQiCiePPGmRF^_UK(x?U!%q08I0 zxTn-Ih`Je+f)3UNkFM8k-#y-neNyTR>t+rRK=v??^<2NLqxNl=s{v1Y%Zsd=X`ZfT z(Zf7m{**UU(r&BETam;0-Id?Tj27vtzyVvXiX?CmiYROiUDgtUz6LnOiH0LlpJqDr zlU^XbcGk=@Ob)6@@*W^gZ8?o*H6WGLBwrRma;K4frgJn zla~e|Ksu@ob>P%+9M%<)&8cP^KsNfSni4#R;m5K(KWan8?T@lNJ7`Gw6to&c6KFUh zb(v)ILMdcOejOURlz<%Fs01cuIY5Te zFxn@*0wLIgK`L&$nG^{&WFt`kKGx*(q~9N$_+3nMK3it?OS{J>Gl>l~2StEZ$a|g+ zCj8I_TxEkv_{@X$mTk$r zh<6Mb#|xx2)aDd5ndeKi>0I&*|7WS-S%LzGD6DFb&VB9lyKOYW^;dJi{UUY--)s1* di2rBq)Njkb-_w{^ChhFN0yX<;$3LAfzW1E<=L00009 za7bBm000XU000XU0RWnu7ytkQtw}^dR7i>K(>-h3Ko|#bA>2Vj1{o467mQ`xv~o%) zw2SegA&bz`euKu)KtF*=z?nKUo8*|JR|OZ35qM~t#azCCiAy`R&`^pzwAkQ-3>g9) zdM8`Dmq;!&rBj~mclX@?IZ3u8-PBF}v-DuTJW#@U)NVQ(~ z(b%W&L^LTE1sxPPsoq1AF8YydrM`_2qJg5xQcFia>nJFJWRrn7kh=i2T*rAR7YB+a zfrBCm96so$7!M?Y>;;P0fa7dVbP@Sd+-c4 z)AgIvraf~MC^>f3t6KDl zM#Schgq7lDL zS%TTOK*02S6)r4eT2}^4&!iy1{L+7D=p002ovPDHLkV1iOX Bb>jd4 diff --git a/graphics/object_events/pics/pokemon/followers/garchomp.png b/graphics/object_events/pics/pokemon/followers/garchomp.png deleted file mode 100644 index faae844f780ecf293a98559c41386c3b9a2a1e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1162 zcmV;51ajQK_k^VR51P;R%5;5$Wmqd6~&+X=wle00000EV8yV00009 za7bBm000XU000XU0RWnu7ytkS07*naR7i>KmcNVSHWbGNBI>sZT)1kAD^e*acD&16 zmHY#XkuYHjAI4fUJ6DBWrcI1}f=rV#kZJ=V45UgENEMb@W7s{(j$+p5!Iu|AtNQ_w#?&Z&Lm~)`T#PfAW9Fv}v+*q&H_~IjfA(WchHK4X{0G zlC&q8P_3s1Gp=M>?yPMJndK+hcDy@wTzg)51~;omOEPCt+7#wnTdxlJDXwIj0UlM8 zoo1Yzj{=@Cbb#I?bcP70Tw0kykC7pO3A1O5;=y3X?v>9jpPgNbr&y2#1$hWy z!lh| zEJ+>)XH5TunenYux1At944D)9{qKZ){v}3b%y`>6re9$e^kORtqr?3(WBSLA)Ann< zR$kB>BG+VTz#y`m#HKMV_Yq@89WM_~g#HToB=#XVO!%X1a<8}F?eB~ibcP1`wm2p? zASUl&MXCzMUBr-4$Mm4Q#@Yx-X?NczxUQ2Ci(>ahyV&2o@Pf|p7WvJxE^z(R3|`-W zpl}gKR&<=C-BzxzYPh`8U7x~wtIfcyNld(0EMC0XI6*MHYLOEY;kq*!LD?@MCg~!M z<)P*7UsLB$AhBXHpIZ9g`&* zRD7voD3L065A&Sk7(S6w4@M~$44N{>kRk0WQ3{imrBoz101nJF6Y}!tld(C(quvuBSvi!e-n;|fSc5J`WDN$gq%YFkz+ObK)7^8 zG3tO?8`ufb(H9MWjtoKYs3zm=sL(KU{O!^avko!5K;CUr!785&0*_y!Vmkb8#|NAK c06*FO0lnWrzacW&@&Et;07*qoM6N<$g7EJdF#rGn diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_east.png b/graphics/object_events/pics/pokemon/followers/gastrodon_east.png deleted file mode 100644 index 75801c316244de14f05a8e4d0618e0be62272105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmV--1Bm>IP)KmAh-(Kpe-fAc2-b4_n3rO$Wvy(80Jv z2_CE>C#GbuM3fim;2}^l8d^c1U_%6^c+J*DO-w=c5(+8AU5xDx>J7!vG5<@?58W#$ zLm^Aa4;%Bj$M#_cq(z@M;jJLo?9JiI~KMU2x1U0qat5-07xzk7$YLc$o z7Wqk|7Y*8Ws?eJd!3#_Ul2CO!Q$Ef;Fd9H8BZzT4?LA8qb|$1hKcdSLg_;+a_`m>P z=wd$T=>v@W1`Uvf9UVu5Jf!`iu!9M(FwMX?Yy+WsBO(YfZIy*uhfIR(oJFBW1Xh)H zsu<%-OBC!(DpRs$I!G1*824v9gpggpmvU@=llvqAy7zOmK!e!4sCm6 zc3qaG8`(VLPR^>(^Yfnk_UW94-SaeSdCOSU3t@Jvd5oAcl2kJE)_#>fa4d2D2^D61Q= zf+MzMS7I^(=7!gh{lD)Bw@BbMC)oNXuoI3eBN#T)80^85;Y~9~8)RX3>juZyb-E>O z&Oh0$=!C|&9Kn7XYkTnPa2VzeQiNJz?Z;pc>+4B>uw*JEXJm|Erk}>zQS;02dw7xv zWT94QR`9RV@p=ja6_p_@Z#utM{B*_id0vQo-#_gaQiLFAX3AxFoUE7#7R&@Q6qOM| ze^&ekEjbYa2NiuEp)?@~=C}4*fgXvoV8kw}kBTiszRMPM3CO1b+vpZOpB1Zg!fY;_ zu>cfB(PtL8-WZC85;jUVZ`*3IS&p`2fJRNUs!`?>0PC{RLP9QVo|FQWXFI N002ovPDHLkV1n$Yg1-O& diff --git a/graphics/object_events/pics/pokemon/followers/gastrodon_west.png b/graphics/object_events/pics/pokemon/followers/gastrodon_west.png deleted file mode 100644 index 4abd6c42aa27fa6d1103ab30359abbba77324fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmV-`1AqL9P)KmcMJ;KorMCIDux9C0laH#Q`lv1(BiP zTx8UwDj3D0DR>GbG?2}Pi-$lc863!@I4zY46lW4riRl|U6g>5R={b&cKU{Uo zQt~i}@9FOQc~9@|u%6aW?Io06lOxSA9wF~=}Yv5=t*BpG|3CAo_NH2m?d2snk0 zrUHO;2rv*blz|#CAs(idfyTL$`Ymk9s_ za2_atpn90X9xnER0%QZ21(y;KeSu48akDKLw=)Hx2Zvk!F5g@#&<&=5*584Md}jdu z&b1EOnbKvA_@+hp92H1*m|u<8Edh0NXo2ueg3SanrOR&X3eqbvLm7w~%&#i+Km_Vr zzMlk*qTJS13RT>Y&K?PTY!M+t6{t@Ee7*$K&BzRKJL47LMj+_ff@pMoDP*Vs8Nd|* zvVI#`DJE&2v);qNdX!2v)K={0wdGPEy9@b~&6zHMUJqLdel{r6#%ASW zbQ3MTDgheZO2XQ>cvPY_ME5b?Kk(`$+UUl%ZLbXq0|ls^RxE7c#S;#=*BmgR@jj*W z*MojTXZmNpfYOd_Q_3@xfm*-E4%X^X4w!xdrfI#qtnV@zzpRnN^(_?BE z+rpbnffH^(<2e4r4L6*rwgv67`L6dcg6ytKZQJd<$R}(&jWF~$VEg5S(%)QfI3A@Q zH`GI>8~ifVL%rj)*yBNmO)cy=&9E@gr`I{+3#wr?WWQx@aIZBUdZ_$!Q1$%4W5pjq W`fSlCi{y6z0000K(?Lt)Koke?fPn#TZ(c7i;xz? zQ`pY7wpR^!jmQX|GFUp8ehOjt1B3)e#?zh(`sM62CYel~ltmUi^nd%!EALG@GnTc@ zHrs6Tb%Hkd)0rjR{`3Ym4cK7DtWI0#k$1X#0Ak=;9hOUu+ilLxMza{y9qX2%4kTSh zLK~nM%}DIE=Cv)CSmpp{W+y2ZiOI`;;40hEE%(d80XIv`rXDbZ5s6)<^wTXf{~;S5 zC1z&;+~8euLw)7Mbj$p_&PZHbg=Pc5zQIFsBYfq=bg$N)PRZ@bV`wx7|GR7O@b-+o za%F&Kndvyuzdy1EWnt-OC`acp&j_Q7@*Yt3MKnXCJ;D zDfQCjRkVi$pt%5RmP_;rJNsu@-4IGwTSj6IE*zx%L+@OU`Cr(8U;lVV8!+z=;g z-ska*FSW~b)Ao=WA(zY^b_!E+%dFP>vQ2f^4aS172YX-_9lH(`eB2NwpyRT%haAkN zR8Y|W(%*ZsZ0YHzq(e^y{|1|kKGJ*NuYSMx(~}it6Pwt?CN{B&O>ANlo7luAHnE9K zY+@6e_`i-I_P4f3^Z2nKjsNHCmyu^I8}eW$`0>DwPiChSXnyRFpH>iFUr}2b(!d`3e0O;u zX+Yx9|JVM)3fghq;%>+j4*e8Qqko4x_} z@=)MjC@`!L#K4k=t2mhge>p*I>U`za!UPE?Jt#h6n{Jq!30) zmjr4HEyZp5aa=C)H4Xw*YUyeHYfdb}PLM9NP}KVLuis3*n-Ed-@eHe!3y5(LNa8mj zY^$Wq^;LBxC6Kq(#hM2}Y6&QWeCHldc43iPsDm}9jK~}W3I}etT>a>6xM*VnmHnA$ zn=1}&)w+xi683$SGzvvR*3X654dMetTtk+C(x`p}0>vUGjHMl{Ih2?sK`sz#Lj9!7 z-jx3+mPtb3zq@IE5LXb08&H2_GG@Y~Hb^$9P%&F^(JAH4M5pfV92dXlU6PQL!X&4O z+ZzeAmHLN2Z5RJl=Sw&tP`#wWK*U8K*q_A&hOO^uv1u5Mosi322nu^c`dth-N}}acS(>%5aavZM2cX7+1(|zYtvuM zFDvd7SfF>a#02e5y9)-E+_w%o?c@Z6_Z3n&^Sn2u4rEa3Kjy$j5DEjF> z4k@r#JYd)w1%Z7+j)|qWyQGaRf{3e^Z8A$5&;sa0TJ`C~ICROA{QgW!COCj1Vs^x# z$Li7>m1_HTZs%LayBWJhcwu_6l#$$7Wk6ZGsqxxHTi{ESVx+ zM2p;n3=PAoPZg8z|dxJTB2_G@U5f3TdUXNeK-VyO`P~OL zVaB!RdDqu{{AZDeI0!ThchUlZ?{wTioGY?{#n2({&*qmqZ(A7x2N55kzj~<63vXl? z@I`S0D~@#_F3^Uzh0=fvywX$pWS)-G(UGX}X9g~CxZ)0Opzni_)kpO`#1-u? z^+JiX#w~B`VG1AM>d*TZ*Dnn7SKc`;@bo<5gA&G@eKLR=AM{CKy=qFuac4F(sU=L{(J5Q0WUTOsccGYq`A zy=^+q&~e6&=N%ngW%CP+GkWTL*6W>`XIE$jERPL1cNj%E7swasdFJ)j2>4BwK_x#l zt>^z3TQ41lH9_FH%ne3v1s_{S2K^8x#Vs``#gXef{XlxX&Q0 zGShqh_p__pTljJYX%z-%%zF->7Q#Uw{Wu8Bp;JansPK5iIL|T&0{fnEbUt({C~rI- zS)6AXgc>-zE>Z8WX~0*@NcSq{9X|g7&gsL)NpUXFVu5d!w+yVt)uBL zNoA1H#hl+)InOc(HR60(8ajohF&q^L(rZtFnS(D&=HRf@PjN2r5r0*nW)m+VYEsTK z403^wpvzEd7`Oq$q?~6N1PNQW{qoBnhx`jWrT+3q*4Vl=`3I2*0>x2y@j(rcQm8x2 zAQ$+|IHIbNv4)I(p7Sh&;vSknEs}8xKMao|lYj0Js8)-34VS7R&oBrAm8N$Mdw={% z%a045VNfXSg9%*`U&sjjFq|Vk*#ebJ0pXxo2Dw1hlbf@24)8345cNlvT7-?P_(HDc zhv6LY$rkuvWD8J~v+@1c-p{!NF?z-n{4hV~zn1#`k^Wu({rG#we*m_s!vVHB>r(&# N002ovPDHLkV1j#SN9h0n diff --git a/graphics/object_events/pics/pokemon/followers/giratina_origin.png b/graphics/object_events/pics/pokemon/followers/giratina_origin.png deleted file mode 100644 index 14043a68083814d7afa85cc678ed6bab80c86c68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2017 zcmV<72Oju|P)VNntJ`Oy&(5ji=cMo@RNV<3kyg^O$5DoYjLzhe9XE|2I$6KcMEn?>Z_YIQ*O29-Mr13YsmUas=b$s2cQL+owSx|$VVCzGCdmWNw`pi(2s&`V!2yfL$`qv#;2O1L zm%?o?GZN2Ax7kdj2l+||9Y!1)RyiLf$=`ecf8#CPfw!Dk9cVrDe?Nc#Q+2gSLBwGS7PANpjN1u^hP!7|R@#I9zIVeADNBpL5}W&NObW5DEr?tJO8Sw+3x4 zyT0W6k-_oar3c_ZjYby&V=C@k`tPDDnMZ``QEngBL0_L_j~e24zD}LStKjM zZvVG?-Jfx%SBntUMhYi-kXeKtWD!RF7KIWwAu3#^yI#=1TEUDf;M!>rs|@<&`n99M zC)g#;A`BJIs8IsoL6}7t_3K5zn93~kbGQaF`nk&2}}`@z)Ti_E5gJG8OL-ptCZ|t+u$2p)Ybxu_e*srkByN5cJ2dEW zXfhB8YYIu+ScI&qSZjI9oe5gEL=nn6aklj+JY-szL0~!xnS$h z4ioim@nFocd}2KT9n7Gxv9apXosYi^J`y=3W86FxUNankoOtF9UAK8+`^lu3lPdKV z|87vsR%4%%Ii|1C0vNU-wtRHgb?*&s#Y`?aaQi2ubdqzgn^iEaFv>vP|xY4F*UF+p~?Rk(THCH~1UT}aZIKl*ls1-yC;IsVP!Om94R zdnuQr3kE0t6#oLc#G7{C^k5>+lQe}-u5*6$)%)=3%e^2-(&h;&to&G+)_wpg;!eHs z!QlGw@wKBy{Ugixh5QbGA*xjD1Lpb`aYD9IFG+{Zvl%!Cw4T%9sP|6XVF$tb-Q$~TYVU_;ngFIt>3ppXRChQXK=&YGQ(`Y8c^LONavKwHIfBn#2WknpfvPUpS z^T2N(=<7QPukNsYHyx#*O{mmoDd3QzC*CjV`A;_zYn2sou~nU>Z<6Hn!L+&l7kre@ z$@ao);KNK{I&DmHCC3!qffPSJb|2cRtcVk_Rh_;W;V&mUBV&Ch;KWH@ze&%Aqf^#g zq`fDG16Oj9q7)R)h{K3EcmXHkG#5Yi7C_-}WUT)LoH+bj&tv=P56Rc}pWFIC0Vj{e zDPz|J6LOs6u?IGMWUl`N+~M2L{z_hZPm;jtzXvCdhx+F8)fI5@4D-Ajw)LNYJ8OVn zybhiW>_1Q!akvZ7nUC_-6>(u9i>G^zO<)lRfe_^m`MzU+vxtKQL68q8;A6{;|J59` z8b#(hP{98?yCVKY90lfll1;?_cPsk;MV5P)K)xC<_Ko9`nEtc(%{5-%Va1UT(Hz^cO zR*<67GB|EFSRNyts+>b!Afyi{f>kX9QkTN!Kvx>W1wB-xoTdFa%L(L?%F}%s?+*Jn zM(7l$IK}@8UHko)zlva|d>|!#+yZyXeBL7$AWSU~$$5Zd#=1OObv>b4KyY;&%ifT- z$D$e`Gn7ZGu1e-fw-+1S2e(hw^so`mulv^RrMu{N%z^q`5aTjF5V)shXI z0wko}0>y-lonk$nHpim)vcC=upzU<3t0foi!g1WIb_*0ENSv87PTMh($%{|x>D!`B zs;(zI+f3dVlkd;yVI%B+bDY?12S_Hv-pBDRzvimzPhX!`w*twtIa4;*4w`)E zt)^v)n#a%0!woNb!&2o5tF%%Xho0NJM z>_U6Tot9p*x3yWWqI$c``vR>oZw7cUzrKb(>M(JM72E*^ZljEhy+=3hfCW0jaVp#7 z1?>J8fX}bAE+fn$#?QF67d3CmoNNcNSL){eR<(}#IlLbQ#qHuX?Q-?*!ps-8&}UH; z)25icOIi6NQJnK@jlh@{#l)apMivVr@u^#NfyR2UvlwG-dT;3u#e#PeUpwN=H1ke_ zpNRz?_}8+)6T2PGz!Uow&U2|7%Eo!DTTIATu;ku`v&0r#IJWgnp723lENCT~;R`l$ z&62w_vNb|QL-pm)^MQ-7vE|kSO122e1JqC_JeCLb_k_yB|7H9HKSnHz=hs;o00000 LNkvXXu0mjfEO1jJ diff --git a/graphics/object_events/pics/pokemon/followers/glameow.png b/graphics/object_events/pics/pokemon/followers/glameow.png deleted file mode 100644 index 2ba92443e9749049ed11c1676372c12e3f2ff0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)Kl|f6xFc^k&5OT=Pi)VjB3KPBAKp8oE z+I_-y32ZaC{sO%^aCc!7y#&ncA%D(h>)L#2GDNB%>^+n|Yx{lg7v5wD9d*=Ee@KTxs(T(3{`ar zvmfeq$PG>tVWLciYh&ha1HkwuSFY5#*1M^;LOdES3YSRv|y6~nVY-&6X` zmAGEjbNyW!$IbQPg()TlxYC$;8CJwGU+~)At_mjiP3o(5n*9rnVFgS**PI0A(^S+X(3UmDH*A$sbOJp*JR!r00009 za7bBm000XU000XU0RWnu7ytkRS4l)cR7i>KmO*RVFc^l#tX=XC!Y)HO7;-XJ+>UiH zgYCg)SYeh1C5OUFd)vhw2y)G3KO>}vfv<6P5&H*Ym%=Xn3p*{%x%(v9iWQa(vK{-; zQl3bDAH7NlMd*I+=YNcs>OVNybN%lEsSHmT?+q^4g1kFC5EM z*10Tp2oaDQ=`db+?^F6>a){U%C z@1rPE%W@g$KyP7%Ueh5fs3UMWuY)#Vqy%_jg}M=>Sb+*Wsx4!wD`fm=;p98)jqAl! zKd_kA>K5{DKx_iXin$5Qm-axBZk#R0pRc?5no}#_`Qqy2QJ(jUE179Q;29y(jUdqD zVBiH(fu3B(tuTW<2m`!74{Tt=d29u&xIO9TFZ*o8AVf84g{qMXL?eE;W&u)xc+85a z5l-2dA@oq)W+$-a+6uB&qB<{WvW5n#Q7cr9R3LovIZKeI0&zjj)&!dnnsQAOf|v~L$x5GLX6;3Oo)gSAC_bQ_u`%OC0}m>4Iga;i1_6I z_7_Bu$GTBSjF6~CC?vk140;_3LV&?Yv>^1A520s2`0;5c&~UyH48;ddFU}$+CXbs& zMyMMhPl$5Bq7fWGT&n$tLJXA97s6yv%4yySRGhJ;W%TI-&))KkiCNRA73xMkzw|{I zg>Y~&RO>xKE|swKC++*nUO0ikDJv|Zs;WkuJ*}#lZDfSH5t{n~ZX0f15WS&CLbcaR?P#LuP(cRz$F=O z7|v8>ujclZUL$Ou?^R?thhNKcBdl!T-AZ%=w;2wJ8S2d}KF~taS)XB6ZPwvH^J?Bn zhzc>OP?vp&VN!>-gfN-2p+cB-*OQ@r!wpw1tAN-+yv5t=4ySQ4BeUJC15erB4BuAk zxN{-fY!0+MjrZnk%f8KOj`>}@FJsP}wQV*p-rnxdfBc`KojCqC-Z{Sj6%Wp982a2< P00000NkvXXu0mjfSF*)6 diff --git a/graphics/object_events/pics/pokemon/followers/grotle.png b/graphics/object_events/pics/pokemon/followers/grotle.png deleted file mode 100644 index 5f9b25c30c724bff89ac7257addd660c9b1bf95a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmV;i0#5yjP)G`4IapAcs0RaI?Nl7_TIRF3vp8e|O00009 za7bBm000ie000ie0hKEb8vpR7i>K)G=$@Koke?8#>B@Lt~BREE$B>pvkBK z&)SSfcX11WfQN3u-~-8>y0vSULbnVCr64=D5a=vYN{JvANHv1c2z`d0Wm}SuI|_kL z^&1Sod%E{OpNs)G*0GLttpBCN7zhC5&o%%!KAcE-EjQeyD8~Y+(#p1^&O4{cb-$F^z%p0aR)i7;RW3IzFSs2z1 zP`Bur*H~`Kvh6Tkgob1TT5;V#ByTciJN(fMd`oo1muS*0=4xnTx*tA&GIn|AS)@#4#8TsvXmWfjm} zK16{Lvz?FN3TvB9}vfdBvi000000000000000OO8X_00009 za7bBm000XU000XU0RWnu7ytkPmq|oHR7i>K)G=>@Ko|yKLvra1k-<)QXbNlN;Hm-X zNEBk-jr{{!Vn=Kn95FHR+&VOk{K~?az}+Wz?b4)!@8ol@-yO$5qjAkO*Ie_Df`70y z3YNQAN)4G6zJ<1l+{My|A+x;$f9I@_lOZ#m$PAh77N|KZNB)&S(}}Ls@(bR5^25-1 zkT;fl>dg_{Fat4io1kDY<0I+ibT5Vutozt&r^n*+_< zlqEEMZSgLNcW+`p#26=Tz0p0!R?;)d68Jn|V$*WPcKS)u6M524Hj81kTj4oldgoE{ zK4dO6&h0P`oW-2$bC*5xmX6CjFbbTDZw2zgX~g&@3a2jDuV5clec*=NeycFxzg&4j jxX?iUuY2T6%0JIHPPDgs&!K(P00000NkvXXu0mjfGXD7i diff --git a/graphics/object_events/pics/pokemon/followers/heatran.png b/graphics/object_events/pics/pokemon/followers/heatran.png deleted file mode 100644 index caae4d45f2bab509e0ed054e534f3552dcc2ed5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmV-u1eg1XP)yswQGtPp@lipkDIsA&LBYY%K^ZCO>G=Tx0kLUW>6rmZQDG@5DTzTr&i`Sa00009 za7bBm000ie000ie0hKEb8vpKmCtJ`R}{zZs)T_ECA*rE(C%L8+gLKq z$mFfN=pXQQfs`qjg^MY@JjJFUw9=5e3@!>%U(wv45?nOAlXl3u!Yj28o4|-Xp^LyX z1i=hWliT}iG}l@g83MeL6YI zY~{iE`aZ7WOmRNmVBG>=^! zr*d~Z&oV+4x(r8e-wEY8d*cdP+05IUm5wjy+{1%K{OzUD!WdjJmKYL^K{kKi_hS;RcpU$?Pds7t{TRa}h;?!8OD zjYD%OuO^ojlzg+qx1iKA&r-ggZp4qA+Ym;YX_hcPYh#;~WC5bMYKn2*`X#5w0U95Z zCDB6mor>hW*d{;IR|ij1lnYYY4Pm7H_!nv6cH2JpM_f=d(h13xKZrOqlMEoY3)HEJ z2l{nK@Th8Ta6j#j4vf4H4wZtl%oK_9Sv!OOOhS_jYUQ}%7h=*Qor}7E495<=T6x2G z@zSP}Nx#GMt@eTO4O6r79W=$XBhO4r57$4%nNQaIlTEQD5by{o$5+&+baWNvjw6Hg zNU-WC@}YZP0Xp=-lLa{Y$3x%As{-Y?^~F!_tLI-P;RUY;FBNY$#hEb2B_>Bn62ums zItjt`s}->YHTP1dd72xf<&@Rj$GsiT8>IK-4l&0G(~iY5hBe$`ie;;*cw2PD9VfY9 z;sa>#{3$$=EIUHz;siX#+rbr2YX3l;;rFX@hu~$xH8UCWd~1i#Woaj-Sarl4yX^U! z^Y?dbnSUf%cElpksJL$b5`I>eAIHJy`0$n5A*AH%Xf-@9J7SkR zHeRoy_blDMRRyl?+FM)riLA#Ru~8-LQ#NWSLUi$)jp)R&%6~5NiK#r&)+p~3l`N{> zGo|FvU{QH72uCuGE<}U`jZPe^ynGP{uVa~K3dF97r-|KHI%T8FqVh78j>Fctqr|*C u?@0Uz0zryTChK2~p6&&kb}jY*0000G|QwanZ3+F)=X!0000000000E$>;@00009 za7bBm000XU000XU0RWnu7ytkQ3`s;mR7i>K)w^!nFcb!04%F7gNY$pzQv|YL!(Nm| ziiviiqcA4W$s3L^Q1iw0AW^*lLv4`{@Qy$Tg*@)xc?uMn14Qx~TWl4UmviK4}LwgVS#K z!KHc6h(`r|1 zMx3`()DW}Hvg=;m(2)(fZ@1u$w`^`U>hSw(RIpzjHhSHV@rQ|TbzDsN1Iw||i!tZ3 zyqJ2MS6}z4VT(+%fp2x(WCzZj-=h$CHU$$@azDx*1gcKool(`CWOjbX5SC_ase=iL8Ac z_WteZ(g#;cxy+eMNU8Y6f{<6$0M3bQcw8N9r?GUjB_U^S5Djr`nK(*s%Z7adUxGT)j^^#A|>07*qoM6N<$f^Fa|&psQ>@~000000000000000@~Kmd}oxFc8LlK=Rot68jpF(fSIq1!}K- zgdo%2phnDIbBZ4z+9%k&X9o1Ubm8xO-cggoOJ&-h=VluEwhhxN7A zMY7M2M!-?<9PctA08o)H_#osf3TmG0F`+NkM&1KUe%PR9_QJfBmwXUG*_T8VJ4|Se zFFgga$1avt`(&CKuFt&9cbHIxM~Ww0F`;M%T9?%}cY+u*1D_9@ATTeAc4aNM8A^jk zmM|JF`S2Y9v$pA$bhXI_V(f}gm_cyK#5lpJ#B)}FyKOiLE}4*=r?_&FVn}Jp!64X> zEe_7yPJ&|1Sn`PHxN?=kwf2&a4BAtdPAFPk8nI>+WQ~5awk_(xV8I7%Z1l;(+a+pC z-IiFkCHI2wo#5@$V8%pdUCO+b$rhvFRhKL(GAOdTS}{f)-hNqI+{SNn$#Q60&%om* z6W8A{%VP<#tYO8Nv51=5UK)smJHdjxl62vh$m6VxqwgqaVlBl9R*ZriQk;%;KK7jv zj$trJRiAN_CR^NOsFsG2XjN$%I%l9xu={d&4ntc2I35jC7D~<)W62iNjHfJ0BV#~7 zxaLl<>1T_&e>j8thvUJJ$dE+*`kdc>J$|R-Pa}NdNUd`wMo& VWAd?4X!`&F002ovPDHLkV1j-%OSS+2 diff --git a/graphics/object_events/pics/pokemon/followers/honchkrow.png b/graphics/object_events/pics/pokemon/followers/honchkrow.png deleted file mode 100644 index a1d45e6106fda9ec671802b2ed47a4e4a6788cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)K)iH}2K@$Ggcur0vQx6`*X@dK=9d#lxC^AX#d0Zd@Islo*KNA28*73`&kJhv>JV_%%?-z4 z(k!Ay^)6=nnAJG(k)pVs>_0y%qy=$EHu<_+I@b8{oi9gNX&I>>W2G0HlFv_He) zT9due$kq8pwF4!nN6Y{haBFp`gm4lgRKA}Xn zyDh6kb*9tpeBPSsJidq~!vCH-7g=i;6gAuoq2_8!YH~Z*HXXNIrsAuFTe#EczAL;t z`4L$8E$NQir_>P#DBXFsmUpGRyOv+SPZupo12-z9lE3Bk@f(#!y3c;oXLkSq002ov JPDHLkV1icDOSb?3 diff --git a/graphics/object_events/pics/pokemon/followers/infernape.png b/graphics/object_events/pics/pokemon/followers/infernape.png deleted file mode 100644 index f227dfa83063c23672e9e36d0b52c2d8750a46ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1108 zcmV-a1grarP)4l+SD1W*Em`kaRX)Oh&^XGzn$&vLy2A zF?X3_36Gc>8HO%?VUSfA0xM>?U>GEYoy-mk8^PdRf=kUh>5zlbMek{}W>3QGD+hx1#Iq9S4eZJrC`^v8o`rnjBqfq*n^#$u6m@#DX#1yjv zvx%7(j3Mjq3I6Q>Dzk}g#*sGsOCBVc^ee4HW4Xih4JHt6$mY?6GCUHY#0JE;LyZWQ zNe^Jg0Ok=&S_d0ect%30tYJf=1O#HjT?>LiD7LUs0<3v?LdKebiCZPe7J-SeW)c_? zmuVIVw&51BWp~1_C=kOWuA&B+5DRV@+a{p|Y@0T~?hxn;CNc1sIqd3n!u&pK(SCvf z`~5E5l3-`MHZ*iM1Sha*8zHY`39+r{#C^upC*`u@ub+tB#YyZL5JK&cm?39G;yHv( zk4=lZXI$;{c;zUwIEfKwyBhC;0TMBnITJ-6ZPrbzLOl;69AWIt3; z9CKfvoE}?|p3j*2#C+?cS7&Dr?zg0PMr%8nY`3 zSoRZr@bHiAn+N(N<}3A+tvWOSy!P$mmp6)$Aj|$hQJ?MSd(tFE#kyNP6wCS4-ZT9G zq-EHvL~5D*w>koqk zg(Wx2uo~(WrmhVjyMl|WZ+@Oa%VUFi{Lym5zFN1VDH#C)0g*`=i8&$h(UIYCS>d5ksZlvOIXSsmApigXm)Sj+00009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K)GIAokoj58*MjIzBS1g;#}p~PCLZz2;&!)t5dNM z=VFoVqC|`$>}GHIaWB64-oZX6?xeg7odv@wQz-~U8ErS*R9epq(+tZXEt{rIE+E~m zh_z?`*^qJJ!(jigd6Hona9Lf~h<8Y*>XOs9H2(uAd(YpR^^WOpr48IZw-H3T*%>s4 zL?Laj@aC>xJ~+-WZQ(*A+U*O|eAUOBGTJ{kvioJ(U&`s&x?gBqBlK=Xo43tb&tD$0 zmz;6-WsTY1RS?VV+{to9UR`8>a!MQ+O3)dp(y~&MBfw%tFTD)zNmhO1L!IR!OU>+NHdib6XAa*^s>;2L{e~ zs099V(GfkbZRR|JFi-{+`WJG~LMOqa*m-bw)WKio8^_}Sh)0F6MF0Q*07*qoM6N<$ Ef`)qhU;qFB diff --git a/graphics/object_events/pics/pokemon/followers/kricketune.png b/graphics/object_events/pics/pokemon/followers/kricketune.png deleted file mode 100644 index d80a28757f2cbbcbbcaec5573ad786fb984f2f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)FN0a0Rd4d8IegD;c;2<(UFNcA>pA>X=!PxQ8_s|Ik{OOt7Xo~00009 za7bBm000XU000XU0RWnu7ytkQ#Ysd#R7i>Kls{|RKp4i4fHVjy=-Md+3LTm*CXk`Y z+#!R&$PL0Wx7ZjJb?e;8;v!H#Lly^N(5EPd4yHqkRFR@!FoIBIeTLrY{z@Ss33O`S zLGZihz2|w)+!=tUdaD1WjPtvB(OG*agT!kacGy6;ISwDq09>H<$Q@3a4Ut&u8pQcI z``kYuQx6chAuytW*bz5;dVWtGcVsg)j__1TGy*MJBr`pHB;$dnmTE{?Q9%ri(>!+o z?=gagMGMgpYU`M#g&WSG8bG)mpdo~2!r-B-ba*M>4zo7%W>(qGF!%7$oh zbA$>@>Xfs`g%&cX3e^>8-52=|?TM4wI$j=TFN!cxV^t(2`sc zUQ68mQpB4Kv|(+JD*IM8SG6;$zN@;U=zINAJ>E`-$$)RI4-kJC8jKyT+h5ln+$_aZ zaf-R*e;qr8T@4hs{U7}n6T_wcJJVLqZ5)mCGxuFlu zGO4zB1|L#gE8V=XOQ!3BGrs@0Ck^!onsrYNz&2WPbvXviaDp$ocU8=BFXZ~-`3s@r zRn2R7!uS8F<-;PeD$_Q{wjnnpHMSkAtq&|!AGCEx2((Fe+AkSDCD1L+dVqdIzS;lJ Z>MyPdz)WqoSkM3f002ovPDHLkV1n%Xe)|9b diff --git a/graphics/object_events/pics/pokemon/followers/leafeon.png b/graphics/object_events/pics/pokemon/followers/leafeon.png deleted file mode 100644 index 8a1e959f661eab1d956dc0918ec9f364d2d6b56e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmV4CvvaZw>*p<(gap;0jzsfkem0Rh>$S(#}u>FN0Z00000000003@{H>00009 za7bBm000XU000XU0RWnu7ytkQTS-JgR7i>K)lYBJFcbiA->e=hRI$Pb;J`6NRXzYn z9H)|1`2q$q4zAkB`E%kh(r%YjOaC}MO;q{goj8n^eLB+8rnZ?oB*p=0@Ahkx_g-FX z2Y|DodN$Nl9vfX@jmRz+rIG1=p?8!vkLkIDjDLxjHQ{dEB^65P|P4&4NuB725a1}^KG3HRRIt~JTG zP7t!m>oOPAEZ&eC6I_%tU2q*r2JZQ&G2;t_4Qp3mV)t{05&^W{%L}}^wX^?eY7cKO$c<)hc3x%7?Y1Oli-ddcvSCqgat|cfUrgAL zu?w<2kt=i81CJrQz-rIfw3A178z$`9XRH83G9LlGF6LNmmt|S5a*eu-F>b)6bIzNp z13KqV5BQwULeB2F?+>ub(9BmZHK)jw<7KokJ*8w@u;urO}7(4k|7EbU~M z6GrYN&_f)a@(pB=IE!Q|89aEXLBiZ8C~>Dk^9>5kkPp?T|0jbkq$QpFH2w5W@10I3 ziLrB>;~f7j)HCLh-Opa{M^>|SXf=n(YR2~yyWwE<+!=wNobm;0&9?6u?;1Qx^p(qQ5pT*lW;tb;3CFQkVUVhNpi01|$C( z;5ryK7Hd9i7ihdQ8#G-o2XF(65gZ(}a(x<)Z9#rw#+6%K;I;RZmR=~s6uo?BuAY7s z44X8+?VGWWkO>tFzgbl71cmo+E^GT?j(F(uSh;!=HoM2)0#P;_pWpUP@c~wwr^g$= zc`WPN)5~T8#f-4aJC(}`@b}xhJm{=7kvwY$<00009 za7bBm000XU000XU0RWnu7ytkQlSxEDR7i>K*1u}oKpY3~Lt1XgkhEY-C;3DrqhxSw zaExD}Tc@m6Kn>cWKu*LNln8P{et-_yEV!5(leQ9Ehtje1p?Z#;_;fx88t72SZ}Lay z``#ZNk^p$E*ZN-y0mFK^GbK$m0I;;&>cxgpZSXaVnv@CQ$uq{5JKkuxD-XVIafOqF zOsbcf?8=i_H!x6j7{!NoXoJOqNQ9*&DZaw>K-IutNCbZLrW-5*{V4h*45MDAp&KJxic<|hFJd!ZvFT|???FjjUOKmx-h?3Lc2;q! z0T>QZILUo)*wK6c+#houg(q4=9#Q|>Dp0l95k^Th$;xY1=p8bjbAA`HBb^D)nR8aG z7NB?$C}xD^0aS~?a)T!oMUPE71JGv$x#9eC%4kRDA*1emK!-7%KUA5xVeDy7RL?sc zZMk2{J+btT-a#8<96NeXzTfaFTm`BIW+3+R_r=8zGo(j)`vBp{GW0gadu4pSygwQP zvk`8?9n@-qcfnhYVI%P22(^xlAZTj*Fjy`Hsy1n3`+9bn(WKERG=_8(w0b1ncSgZX z=N)8QIi<-mPqo<7e&M-Q>DhE~@Kt+#+8W?^-=RZG<1}sdx_0;!s9Fq}7tYi{)MlC1 zMm~iENOpIS)`19#Sv}Oy=PYq~m?X|_Ba%R?Jn(9TD7`5YP zY#hXcNOnBH-R18sTG%*RJ>7%}?$)1n09^M@64{rh{hCvfZuFI%9;8y6@afuHxpkb@ zY-S@%w$rS4fmvhKZgwBevy>LpX7kYD`1uR)jnZy3Yt!*-jZPD&RsSfN7y6rar5UaL b`ybXH2^Fgy?6_C600000NkvXXu0mjfKqzb( diff --git a/graphics/object_events/pics/pokemon/followers/lucario.png b/graphics/object_events/pics/pokemon/followers/lucario.png deleted file mode 100644 index 61a299f7a648179a7919e92b9ae2b449ee4f599c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)G_!%G3mKcd0{E3xydOhDFFciIcbq`x$#L!NdN!K)G=$@KokIAp{e+wP%k$1V&uhCZUzeq zt!xj$Q$sU16#5^!b@kR_D0FEHfgsWh!3x5b(t>@i2779($;oD9f@2Dmn)?ma$@Sgo zY{}42=#Yn(@80RXr;{Z?xQ*NRKSJE#8%H6Z?69SH18;8dFpqzKYtb>I<8r=vgV8wJ zfOD|oPJla3w4C704Zw6FPbUd>C%zl+L+hNqy%h%+)KtHwCfHSXs*^ZF+!aWv{Ueu>A3@yef)Iz(SK?h)Mps#xf+2l-khXeT^=Jg-@ zWJKP!hYVzRsJ+gj^5`HaNJi!zHucqm-F=lDI&a(dPaK_26*W{4@^$*ec;j2vtQu0< ztvCZ@mK=!=#ThCp?2+?aHNGw1x`MNK%g5<-R?n~Zokp&s*<_j(A20IY zlTp(Ik&MS1FZtl@UK7xQqtNusXW&h-DboBP^fKQ`TZdwyOv-hdYKwJHpk2&9&&sr* zkDVuPBQT5UK~`cKhF<0+$@U7BAsJal{WI1$wi=ChOu=?&Hs5#bNFIC1(xB^AB#EBU z&;A)}yyPJCYm{WO+>bSIWK&|Q&7c!8-clM!CHCuCk|ZZ$SuMpI&TO_CLXypWO@&}V zX4ha|i0mz RiZlQK002ovPDHLkV1gV@bNc`Q diff --git a/graphics/object_events/pics/pokemon/followers/lumineon.png b/graphics/object_events/pics/pokemon/followers/lumineon.png deleted file mode 100644 index 476d27f2b22455f787e2df77e7c47d5ff6619507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcmVKmA|gqFcgPvPaR{2irg(RRItLKBI~^% zF;|tU`vQG{kf_j&kO6nREVOUi96Rx!RNM!s@b<;d_d7mG96}!BF&^VF{@=mU!3BAr zspuB7EV?U{p^!cemNIY)81I?ui=%Q8VMR1vKbt^lDwHme{|N&`=F3s|)fZ-lg%M`6 zWq#Q9#BdEm$#%sggFU)btY?GXye$6~Xd#&%8*%%Y<(C&?0u>;GGJ)72 zbqWIJ0c#=igl$id6nunm+kRNMtHiH}EE zMj>w53fTp+CKq5Ulza|w=KZTn4~DxyHeCSt^&fW3QZ18=upB8dktoNz4!V$o;6%M(5W(h#8&ixIuJ@RaC%4^Gq>O?**iQ_h~XT9aD z1Xzo{$7F1{@Ptj?3(;ZNlsH+#9xB10%h$Yethao=037G`W1#}seWz?sm5OF|&$ASn znZVJiJjQFG&fWBo^$m3euuE)((y(+wlGKE`d4k-XSEJ(fS{KS5Mnl#W7T;Ez?_*bC zjhy&G8ifZUwcDdVUf*tsI~tIGC;m~<3bQZU?MLByTp+u^c6=C|jvn)0^-Xxw$UIyw zNmA`<;P)nO00000I&q;G00009 za7bBm000XU000XU0RWnu7ytkQUP(kjR7i>K)iG<^Koke?!-LSG!7Z_=C&eM99Xbh0 zD9su=WNEiT2L(IFQRMHSQaFzGx&#vNSOT_jlJ5|(5yITyU=SwY@6va2uOjbcG)CH?f<9W+N- z67e`~8!acyhAlB`j;O^@Fu+T!Hc;IeAEl8HJhm8ue>H9gt>QH-8!bPIloaVwv^X=pAVe-*Dhq^xp4OoA4rzyk8zb)^RPR8}N^vjKuE}27Iflz;w&|3sI^|9G aTk;Rsn1UV0;>1}100004)-h`vF%$q`kxd6(G6mA%@D#{+&0znH zPR<%=N&iEKLWZLT*6b*mT#Ve+Y%VdRwuK2y9ZLRwT4^ zu>#ZTWQLP#?RI_p`(fJRW(H_PW#;)q%eQ5nP_){8oIKU;*z`8n+uXE#<*u4b88JJ0 zBN1V7V|hMr61rl^=d{gr!r!hXJifLuAHKf;APstcjR$*|x^fvmrEP8!PV0nI8}rc@ zrOe_h@;$kl?km?0Jb_l%k$L_-h}cb~gq+MN3Z5_AwK_cjyBTF{x<*0RaK=(E;h{`H4wcX#oMjVQJxsnej;>h-r&u00009 za7bBm000XU000XU0RWnu7ytkRu}MThR7i>Kl}&5hMi_u~=wS|XkuUbrK-l+E6^jn! z()@(}gZfwsT}1JrF0{L$KI|&ko?>N%a%lyD{EQe<2So>4Zj~(bwA6`jErv7;nM*fx z;qB;SMju{p4!!iyfn9iJr00F->y=^r-~J>P)*gn)$?LYmG?Pw8#oJd{{Kb z1)En)o|Y6eKaT=Rz4GZDaAjGBq}p$YXt$#x@PCJgTT!xbz5n&UMdg~8gq zc8+o;jR@2h;r)qyJujrNw#^MDozP_Si53=IPe;B0QYftJIFc&@5YLTh8Pm`Nw1pNH z%<2Im!Z3V@RwZaKT@c8cRo;ab(|{qywdu7uTM#LHi)c}MDU*dfL;!3^=Sw+8M5vvb zHXFn?{7g8c)^ZjJlWT%jnO2L*=L`izm9E9I2a^{dggq^{t~9(0`+e{Ev&7eHQm|{)11z5G^}ZPYgi6rl zSU|Gh>+u*ww1mma+3TraouYzqSOtjDI-bpDua8(MXt4vfYjF-tqK79H3_`D`i{8fgXl*b56B;M0Jt&!%Uh!Va(K{*3;x2|v}bu9k)h!3`v zKyfY@1p|lOOP=|bbLYqG`B3vtUX^3B=VD@b>TW4kt27EXobI=LzdLX`8+pKrGr_@n z-@~y#_7?}aa1?0nuMe|YeG?sSd#v2nHX8?>zPED|Sg?B#=7R7C#dk8nUVrclTFBYo zr@2rDEIH|alLcV-X3!g7VpIlT_}9Ms{8E&h3E~~Zx53w^xljfyxe$;oe$IUK{mp64 z@_EI4E8jAF^r&;gMOFL&=bc?H54$>6Tm0e!DO~?Z3l!%9gVR@*+%yhHG>+CNYhq^?M(7!?2j002ovPDHLkV1f?q B1p@#8 diff --git a/graphics/object_events/pics/pokemon/followers/magnezone.png b/graphics/object_events/pics/pokemon/followers/magnezone.png deleted file mode 100644 index c66eac73488c64e30d7e9b2307818e72c083e54b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmV6Q2+n{=r2I)00009 za7bBm000ie000ie0hKEb8vpK)iG<^KokJr0}lf2r6l8N5VQ!)X%M7n zYiMbvk_Z_WGW7?jcEv%9yctZkjOnDbF-{Nc!O7OObVxc$gP?HW#S}dFH}s^FEbDqM zMDFM}obQu#@14%}9RR!7#V(2<;Wk!D^{!}kWp95QU!GU%i)I5ZK5gT#7uAHK0Z{fH zZ{v689@uOJv!>_eorgQU^jny3#qXbc;NX%pvrY}O_^@AngR1>Q4_&`*eQvT&9RqOC ze{|Md%P3fJ8^2EagLbUAwG0~m%T~WzCj85;oj8NOOReKt2G9J~zzNDJi?&TRz;Rq^ z+RZvPk6t(qrg4!`v_h#(iPIjlk3?=nea8tRxf}5Q6~-q)tmO+L7%0&+rdQu?$8j`G zWHzW~Bp9=n>JlUE?U*Kqfe!hUMFZ>U8{N42`F*UjPE%qCb!bq^S}1d%-x-PJLfzoM zDbb)~P7!|c<4*6O8|29h5r!;T2Wc_~unPm)g&m{E3zVMmB|;{J7RJbkktOj6mexad zf8E)V!tO1NO_(?{Q1vqZ5^#s65n(K`N=Bs#+lDI+(8y!W+w%Ys@P**Pg2NQA{VvM~>dlJf=j!Vstk+fjQ zofQP?;5g7sqpL3Yl3$;F$-OKJgu^V+Fw6@GPQzc!SKC*bwYOO21zE!3D4=XL^A#fD zgu7TFmXM!+R5KhgeYl mOnFaCxOr5~`0oiH7JmTj^yTko{Rj>K0000K)-h|_KokJr+q_+IA<5E7PVo|K+JhVc zRRQBH8XOvI@D|d+-HKxkN2p1lbjUAg=^8wFsK*W+HF&u=f50ljHWd_Clr-HOt9Pf9 zVoS2y1~L@#hLG?1?!D)8EI8)$iJi zJ+^rC?b{ljbN9e<-(>#Pe;&YJZ+*F?!S}zjW!cFdOZFEyct_R(-+6=3@=)Qkh}EE= zmS`|KpIaX@q``(>vQ@c(YKaD;jYxxyXoCyy+Oj;4_7*rOXo`o&2rXYPpIys@on(-r zSM4)JX}2cb1V8v;Q2#CUSpzR-Rbr8n(0l>Rvw~t|O3jm8 z%m93?zHMLo2{B>Rpn0`ZeN!x)R*I8)+)!Z!c}4cqY~*4FaC7CfI1vNWE{U5JT;D&d zR;qiQ@Y4Z>1{*S+JXAFx<`_tk!Dj zmw99-nwOd>7`2gpnDG-To;Stf&(OiE=^ENRSY5-m7qcj+cG(W~ropT|zYjSW=|AGE;YN&evweXL4)GiD${`?7}f!?y? zW@myl1EC>8{v`<|kiQ@5EoF)jMhIy$Hh98cP|Q!+dW2kWy)@@-VU}T6I3W(k{#OfN zzwv}C|1EHpoWqI-^|;wcgcxDM%j8@ZiM42)G0000A^v10RaK&>G>H+p+P}GfuZsF(P2Sh$p8QV0000000000000000BE%}00009 za7bBm000ie000ie0hKEb8vpK)Im$bFcb&y976jA1kc8>)*d~2N=vY{ zpTMg!ChRmyF~gf<(6_HKhDtuAX_PeyzIYNm?0@R7P2NjdQbJBS<&;zYRn#wz&Q)=n zqzYCsN3$rjig~Qp67*la2o+NLboMJaGs zV?o69!4#Z3s}1~h^ZfDYEaqCjOU%pVV(uG_$#;Sphp0000000000000007HVv100009 za7bBm000ie000ie0hKEb8vpKmA{MIFcin7NvlPBi8*cg7j6l3Itbj5 zDT7P?3>ykE@nq8AM>XA_kfHQ&r$CBD-al8#mg2K(=g88@U!371`~B3DLdc{^lO|32 zUt$3vG#=-F#Dn_+q&XpBG0rUMI+Sp_FF=?#zaeHZp&7OgEo*h|)yJf~#lku~4Rcx$ zp#kRpon-*k^+yFFzr~f5Suo65#WHvTuvjiDGR*b& zr%$lw)i|eMRK$ZE=BOcpz2EabTcu$RIfUK;%W4+BjnbBEp2{zHZX6cRW((i|&b-go zp%w)cDs(AR;n-~h)39GG&ExyZJjV?sHsh0IBDu z3li|K*lw@8DnWPHOf5i`X2z@;JTqjDRULq$E!jxnHK1E)d`L7ILp%9>4xxna>lOTX za~WUWYKGGFOrSmhY?V7r6g|6=nau!S+Lj}9SX|1V5BTSyES*8(_~^S@qK+bkW$XfY z_LH0;sMWCzu+|->3E#X%o7W9b+=}DtL3sR)Mi*}~_w2v_hIlUD9UBv{!-ULc(brip z%Jk7XJO-m|0?b=$Qv#k}$a}HfZYOUt;;(p|1!5;*xn7a3KDg`%<2=5><~r@(*Z2M( ed??Dt-uwmh3@JM!qQJ!f0000FN1lF*&i(`MFVn#8S(x00009 za7bBm000xO000xO0b}Nl!vFvRnMp)JR7i>Kl0R$PKp2M)1*%D7*CI}c+tMJ_)zr=4 zDWsfG1R1=PEG=!0Q^j>DAw%O^T+yL)3E7;F(9cntwDHhjD0I!#QZJ5se`QCF2^b0; z{PXm@ul;+@IsvfCDyyvW-^63DmuK&seY&=6upEteb+IgaLq2Jfxn+Yz+!5!zI$x3{ zOggi+CX4J(#$q-lOR+bWwzGQKWO<g$l8`<0Ae9Gqp4VI%0ub%Dk z-sWQNi_ZeS^YJI&8utM-+a}Ars;-{Cm~yg^`NecHT)#TOlZSFmuD{FXYmlj7TB0tc0TQ!l7|Qy>nFvac&u7*>U!uDo~ryJlBPW zkr4uS8#^I}FoVu^u7#GBP!u|W;1s&5upHE!4b(lOHuagDn>*563!Ro( z78<5nILL!8Y9;F_Qia7XEi}{eiGGn-7ZXtK)^C~ST3GrJm)(qFKO|aMvlJG)1mYq~ z1*<|=?lp&rZdm_*nFEyiR-kw$bW*nvKPcE5HbR#OCJZQ{D0E4gW|CE5xna3wDvGp( z4zdR}oXmvc#!!;LI3h*})&vK@3O4}2QS=y?Lb(^5+PyeKfGBL$eTsuQAz(fr1R(pD zgix?!g|4U~zF&Z~-0l;>%FN1-f$7mfS=n)sK|w+BvB_Z}Iay(`si~=XNm&2@00000k?%jh00009 za7bBm000XU000XU0RWnu7ytkPf=NU{R7i>K(!Wc?Koke?99>GMT$O}2QyRM1CGF`H zoODp|Ke)-!Zoxqmgboh=1(pf{>mpGcnv&@z!T&+(Ut@Az?p}JYE`me8+vmN<<$lDn z>eQ)I=l|q>i}8WxL~lYDmE#HOEdzHa`ZTm&(?|$gh&_!r~do;vMcEEmt zi!=hM-J)iW#K?+w6ufL_6GUB8n(IXqi!249sTb2iaz~-t+~b<%W2a^Cb^WCcOM0 zw>LT+4@6ISFzEHE_GhyrVVhk(y1~x)bPy>ELd($jF?A{CoSRHKo&Hj}PUv;qbR45* z%xH4uEz~=QmU(y1zcJ6s O0000#xAu#{|00000=8lx<00009 za7bBm000XU000XU0RWnu7ytkR7fD1xR7i={mcee?Fc`?3v1gZNhXzCKhHn5Jq#NR?VK;MOyqRRGe&woq6uOQQfD=^^xT($%P1jZY%x{_=8CgeRtQBCm zokM)@I1R{O9p@34$y`BF&VW|3ENB)uj$iBw)EJM?&R_zKshmCQ_Wkvj3YLQDvD0nu z7DZ=9$R$jmap?G?V?x?~u=(S3Mn-EIb-R<)dR-rl+cKIob`#Rs?8noHkVz^Am5l6_ zkSsne8phAU> z$Xg0ImV{UFgO~F(`yj0CKc;gjm~>@D(IDbAOxm^(a%C&|flN*=E-WFOP1ETt=M;Il zEQl}3q>^P*c$^MpPQQxth};s7k+WpeRys>VJMt_#w25d}GP;rrR*o-z6`T1Q&)Lc5 zXPxCJ?DZqjo>ek-?>4;M-8!2EB_s|OukTx(OUGr|6~(NYao8(vFUWM^(n?0`NeYr( z-|H+TpMOM?r?`%>A3D>-^=Tc?$$0=?UOLP1eqPMyem&!6e&0g1%(}b<&jX!h=LO^O z@BkxREKofglqyH0&g)0RgG{ZKU(beUDbYI1VO{ga0mhc#P(!)kG05;NtPzwy3&l;Q z{P_EYA7IVU?8u#L4gT`cPr;fq1X)dpjQHgjG#r*(Z)o=9PLDx?Q#*!7?$N0bFkxwU z9Row$DS6jty5T#CO(h}zp4-+6 z9Mh|u4OcsfZfLF?8o0p17^`;#yW=Pc(Q3*@*$na!@}A*nA$NigD$E*+UwEVSDVB!m z3^F$1#b?j(vHSqOQT;+SUwIF~s8AUF6Tf*k{-4Jm%#EjeFi1}Y00000NkvXXu0mjf Dh;ys+ diff --git a/graphics/object_events/pics/pokemon/followers/monferno.png b/graphics/object_events/pics/pokemon/followers/monferno.png deleted file mode 100644 index 93b07258760e6c13a08cce667e7385493a9b1484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmV+^1J?YBP)FN1_Svdg#0nt%G{BIJS00009 za7bBm000ie000ie0hKEb8vpK)G=t=KokH_fkqR-p+&Sf5ISYEYp5?2 zdr6iK&E~}(1EDE6OA2yF^&ni6Mi3HAJVZ+|7(yW#3?YFI&X9H~aSM(KZ4juq3e?x3 zL$fsPU2L7sLP}{uJNa+#{^{S>=}wX~jA0DpzlD55|1pw@8(2UFIoHNz2-L9<8#8i}jiZbteG0C7!72F)5WSV44^wP?G6Zi1#kFdfoN zJIW4w1gPOwN`u`5&4wPjv}N3#j`C!$V7Pk){Vx%=uOfQ^SQJyrw?Hz!oLoMqD zAhhGywiIgiK>1i-(DjxTKxu#U_7xWw}_^;49hI%R8I*PC|2XTED zPt1q?n8KZ*IL`(DQ!I-=mT2`hzJ;IJ%e42)>`MzD`8=-Uf15!`1CU=lA)1 zSR?C}`;uF}bd6Wc)L!gWcf~yOD=(kQtR$pZeoNw}x4>VJ&R<>nNWPxh`GWLRpl6K+jL&!zirU>q13l-bre%UVs@mrH zM<1w17f<_kmJpIgntXj3Jx++GGcsU&%q;u&z%s_i;whWIvty{LS>*Z6d1~bJD=1Bz zI{(!6?=CcfDVjzbR5moi3ldkWtZGMo9^xj%gtwG+nLR3H057oWHw?|iQPFHjot?qL z2t>0p;vW~npXV9D8EVMgv2cnASs9hr$l&j^TOKmd#5WK^Vq|rHfL`;gu%!um?>WC^V;T z4;t!84^kA?&_X9>%RU=MXz^-oU5iwl+GI#HJm(tUF^AY(b;TG^YJ?K zhvWOV3e+d6AFoNoh?PLQbg_>UYSy>zITyQ41Qi_LYB_$St3}j0S^J^Jkf^9pLQiCNzLt5bg*^!d2ubUEJlqYKC0D?G0$Gq(+vnF=94(eOPcx~uX<^PgB|$Rz8xA$`p?s_%@SGCFbX5i>9GHt zsl)cuxaFN9Bd*bVQ2mpu|31~e|7l=}G-;qPEj8%_xLf9pGh!pKoPhjR-4mW9+GcQm-A6n10HWT58`e+m9|{RO)_ VeqN}VdKCZw002ovPDHLkV1kACxC{UQ diff --git a/graphics/object_events/pics/pokemon/followers/munchlax.png b/graphics/object_events/pics/pokemon/followers/munchlax.png deleted file mode 100644 index f76da3270b2b85b10ffa956a6989ef30107b6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0G_eFkpTe#K~Yfv0000000000RevFV00009 za7bBm000XU000XU0RWnu7ytkP!%0LzR7i>K)Gv#}bbhNQQI>DYUCNxG5rT6|E_xi-<&MKa{y^=)JqP5h6O}ZNL0;_wKIgZEaOm zRaI5}PX#~tw?({Si)TTE;V!E_2J8%#>`!;u&>Wv#djp z+5rl6^NJ{?R#47_MzoEVtb5Tk8$g3{-p(epe3|JMO&K5HmUGq&7|8CrdDY;FwjR9# z^CQ{daqEFvXhPkK0k_n?@iw~-*_g(9zuDIobmfG)#g+<9KR zJb>;#TCHYYp?BEnoS-unX3JGX4HFzC=dS1ZvuPUmpQW2OfQfk=%X5o_WrO%C^DD|1 z&Sx1+(>cCKbn{&eee=|%%eLcYW`7`89K$??c$vq-`4N$iqsT?Kk8aT*1qUFJj=5*j zR(9rKuQzcF=7KyE;_RkPP|t{j+4~HC=iG9eFN2gvC&ysc>n+a000000000000000Y)sBX00009 za7bBm000XU000XU0RWnu7ytkPib+I4R7i>K(mhXuKo|$`8@Pq7A3+lrSCo{Ep)xq3 z0+y~8Vw}1dJZ4J|Rzi50NEGY!Q;Mxp?(9*M#!3DI$?u-Khr0s+`t<43=O0Db%9%?`1f=CFyq*EwW;jN&6Zhj76eQK+5}tU zu-t8!;lOd-?SUA7Ex?#=K--SA%TV9#&$;Jr7L;JO*SS8$(Xr0AO(cbIJdQAay^FH% zhOF1QI$6w*biU!cJfwc(mPvxcL?M~Z@n!*eLRE*wu{@k`EQW*pMj?gH@h1Li<+mHu zp0#aD%7o|Dppx=pyC2r;9jD2eVlT*D}p@>Uf_`AggDu^geYJwOnmUx+-azC>PA z7neCn+8@kAMM7T?0Jo3Kkt&axV*4gtpP;4=Q{SW}SEB)(~QBhg3xxt}Pp%D=g`T6R+WQ;Y+#Rl9Kbbz zaN0wiL_k0aNM%=@QQhCLJ5jVP-jR&krvduDh~npT_x=8OJRX%wjWp6oBaJlDNF$9j z(nuqXG}1^TjWp8#vBuEe#jglmk_SpBjFZHFw#LYdz4LFVeR@eA=uSRoJ2Q@n59FUUSbsIuI5(i8K9b z!qDG{86%1J1wcGcgS_zk7-=^AgXVuk1y15jHz(|hEbcy;1E50ofsi=CfTuN76?bv? zle@=0>#n%KNt_wf?aF+V!6d$AR{($(ssiLUNrRzU`+Qxayei_U^iM8If&5tAJr)j- z#HnTt+tygS5;X(hBSI zaz@uP7!RiUEAoEGHk7|52D{YZ@`-Lw z=yGNWBQ#v#B;K#k#PW|szaCw|7{0Yjh!tb-LcksJ-!J$cwyyluuq%X+MR;F#HH5Jv z<`Bvv&MI{4*~E`06Gv)P1>^Xq|0IfKFMoMxJQN!22lV+y?&UXp2iC(`SzacjTUJ{4 zfri4XeZb+-43q_&RcPZ`Wn!Xo6j{L-E?xb5M*#*ixF9sx59sq-3fUD5K-XBE7I=p! zq$^(s;Ro`7cS$ElJ`r$Mq3xLmlk(^9MpiI}OLS=EafRHxcVd4fFxU?m@ErBQ1xQH{ zW0Q21w%$|j%W@WkJo}k3dV36Ah%V?QiI3i_6~25 z1w7}9H~_VX%jD``9+4KE<8`l{=lGNM%P)4X_3m?=RcH$2PUwC9_U(uY#_`lnXa980 zxpqvl|61zu25ErlbN&?(u5-*G4e&P_03pvsj)1pc?tXKvXK|cWsJlX#!Q&zkS1^uC zs~Ad|^t3vPRZH@MTez%8go1dz&|x!v(xi_Q?w+Y|8iJ69jQ*DGC-c~3=rL(z3*8gN{i?M$mHI@_x( z6jkL|4V4grA$}4zn6B^inoj0MCUYa(Y!WMMP;!R&Hn$5n8|Xv2j80hv>M&2ga<2xP zw33}-mE+}>1)+758hilgLD_@D)T^}(cJ{C>e&mwKo*-0h2l?ggF-2c$b?;<_3wa3)ir zlbmn{lXxJgdWu&n;evzdI)Ahh#-MyO(?T3)2GiR92f$eP!(vt4LA@74B`$fVhY$=n z0$jjUn$Rh(Ic$z&I?2N;cp?v^enPJ_+%I5$yOyHG%h3-PY*a5*HwW2a=SjI!0Qtj{E-B z)`fVxwjJWWK?HSOUo2JsJarh}Z$eU=dN|;MfGIj3>$o;UJ8czLu>-9MUN?|aLxsf z*dXZpD+exuMf$peaRYH{osVe%j{63gv}Q~6#sZ-ia8ba(Aa0pfRk%^G(8_=d0}gtz z0J!Vj27o0%Tsz59DK6j@0f*2*#O$NrFujF8jx{V_grBBN2LbQ4{J}5XrmxCP{73j z2hBIgNOzYYN*I_X%2v53Yx`rvB7>opRa%$i(-RywzT1Wle_t-N;Na! z!hi#%XBQDNV=hrt18Hs!75o2Ai4FPz`+W5ubAkZWAlhy|H`nl{xhe`^n#F*N0-lZY z8&q3~n`03Tr17~W|E$>HAYk9hoGzF`%phHz>EZ?#!h2aJ2o~3UE)IC+V+onFaRDM4 zNaN#yE1|*jfESyF3_`lLHTI>5|CM0M=i-28&Ggrc;tmoTz_XJ=gBMRi;Q;KeqD#bn u?BI+?1dQ+fG7ZEnl7IFptzNB{OXz<>>8ON(;jsDu0000=G`P)FN1_q45!Mu>b%7000000000000000;JQ0M00009 za7bBm000ie000ie0hKEb8vpK)In>5Fcb%H0|l=Jre*ymyRFc!uv><& zVsDOWueHodKfo@%NgGP~4f-vYxT<-DghCnY;Jf|u*Y`|B9jC9p`s(Zd)a2FfM{59~ z)sGLLPgXnBv-pnflbG3ksLUoWVOg%R*AA}yP_3;7W_He*5E1sNMEzY({gcf={m5j( z>98yWcFfTO`2u3@Sqn`x`&n?=HwaZw4Ah{;Xv-k+1$wXaS$xSij0`#{ceiu!4 zW7ROyEsl-d>$L?#ZU@#4G5gyyLQ=Y)+a1 zS2qLe8y4RHduBE;QGvmQxCpKWFb`WB;EYDF7+LJAhRDDg4`2@vN>J=(pei?CO=pSr zX%J;c%kz-sdam5yeFQM>vevX)3ex#9gRGtCZl&j4!vGSWrgJT4K5cWdU5@oX6DhIl z9S=Vu+MPiF(tg*_PlgcDRL?=nH*@q+Ih*tg_jic5{mj?Y5&e6s@d zU)U6QV7=+L85*ce@6FvjMMvTW_*Y!l;1Lff4#~|c_|y6UlnKUX(5gUz00000NkvXX Hu0mjfaXG^qid3mw%d1*lb0Rcg2;jy{dIYDUv0000000000&8mOG00009 za7bBm000XU000XU0RWnu7ytkPQ%OWYR7i>K)ICeXKo|$`3|Rtxis0gWI#h26n#uh^ zt#iIXOF+5^4uT!xOQqT|f_OM3bO?2jDi}gOly~Rg-4pMq0S6)fslWU8-qI4s>C&Z3 zmoEP&ZWy+=8wRMHQj-Ij@w#YpnV@XR_{PUBt7&ec$ z&9q&AW%oqC9=4pY)qiBrGuygB41M)_*m43uJcJ{&b8)ERXHSO!>VnvE!aO>Fs4zPx zEF}hCLImm~!Iqg#4q=v9ObFRA*qcv|Q{`WS{WZ8ay(nycA=K#GMNZTMV~d2etTzLT z-&p!?vUfwMc3Nad{P5K?`xw|p@^MrAE7>c&R=TY&qs8 diff --git a/graphics/object_events/pics/pokemon/followers/porygonz.png b/graphics/object_events/pics/pokemon/followers/porygonz.png deleted file mode 100644 index 6f7308c858c87fe2b1157a5a5337fcdbf82cc89d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)tX;bCz>nZa=}Q2+n{8Gv@100009 za7bBm000XU000XU0RWnu7ytkP{YgYYR7i>Kld(zzK@f%)7EN)fuad1G|d{Hm;+cbfa=2YhVj%I1x#_x4)C#D3w72 z_HdlP9+pRRA~q}x0EZLN#7Vw+c&mEoeI|OdcW^`}V&YuED`+B`nCn4LYeq^m{hEpF zp7jWFIMIs4;-X6pLfx0Yf=Ba-cvSM;uTR8_iGKKs#LwGUbDbq#Aobu!x27^~`ZAo! z#e*_bM>2{^zN<$iXW|PxjC~L3R_+fE-gL0IkmP=%$8nI$l6zZ-Tf>sGXFr%_a77_LGH+3w9!FnEg(aOtXUbA@{aQ&c>Vl96reO8Pdfv?Pq~I7x0h5^_+`A1-C2e zk)_8=KO-)&roV%T)p4C+%89lW$~816lxkaI->=s}oqqIi;zw`U!1LG8eGHd$QG;v^ hO;^6+6Z}_oeFGxZ8t#!s0}=oL002ovPDHLkV1kQPCvyM* diff --git a/graphics/object_events/pics/pokemon/followers/prinplup.png b/graphics/object_events/pics/pokemon/followers/prinplup.png deleted file mode 100644 index d69eb020c764fdf6dfaab66b50edee8bbb6e76cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmV;a0#^NrP)K(lKk>KokdXA@HEl22Ea6kzh;^6x0qH zv^ZBnT?|R7C!sH40z!~ZUerx>8f4LE3tc)n;4G$JBC;qN-goKgLf-OB^rTC{cH3rMD;F8WZudOXmr zj(I8+NM;XM0K$TQ@s+pg;CCXsnlm53GY+)BS}jnv<7&R^>!KSs`%H(TYwUOHgFeRP zve{%y^6ppM?7Jlt%LcdFJ`^2PAeqg{&rjZi(QM1}J-@-8z6L-GW!DRTET4n|$yTB3 z(BRXjhY>vUOm;OI47#0>v$dL4o}nDBd?@!@`$!k^Y{&Z+sLcEn89)I5F}k1nrQi(# z7Z*ro3vzht=J0y^25K892grGWU=3VwBmNJN%`TPp=-lC7A*&tp+yxMF=1svmgK~-r zsPm~*a7#wyJS!XBw;^||{nmyj@ZRP>pf;q1$aIqDZ$mO9v)`Lq?K5*0Zu8K#ZD+#s zer2o9wd(;H;DT$huv%dB2q70n?`6S++1wWNLpz!}A4dbc)zC-<}vTTx6U zxe0E9ST$;^Ms1Vl^C(Ji&b-MJauI|nUzpHBY<8v~2tw>cau`J^_B{F$;+ut#J}a)L zXKJTnrIvo}2>Cn}9?<3}H`}Hn+-w?(Jm$_7Rk+F2q%);Bm!95T_CMzjW_w4R)n++Q P00000NkvXXu0mjf_O~}Q diff --git a/graphics/object_events/pics/pokemon/followers/probopass.png b/graphics/object_events/pics/pokemon/followers/probopass.png deleted file mode 100644 index 779bc079608cab1994bbadd3ba5daf1b1373b175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmVZ{0000000000)~ccK00009 za7bBm000XU000XU0RWnu7ytkRYDq*vR7i>Kls|9VMi|Bk(?FIkCjv2UtI5IUCh~*` zgf#>(0ilpqPtKASP-mONg+-<;$$BDSpbm>9M zbML*s=XojeJn#SY&(=>u{HwaVg!p?;A8+e=^9=By{)08I>*lqyvA5#_-TJ{q`-x@y zUjK0;0qb7iLH&sUUH_Rh*meW2VPm}mxInjl5Wq=1n}MEn4E(iB^sN_oPZU8s&WG%#|=^8w&^Zd__fotg2od9m)$#tI3-gFJb!_}2|2I$tE z0B+)m07KC=fb&9J_5GAvV_$&cezK?vn>)J`lX z+D$xFiFd#$oFA8AVRVL*ck#y$pUVs@qR)&@DpP;ODWxSdbuW$8L_8d}K$$qQ&* zb2!g$k=aO=uTH+wKfbW^R2vMe4op2+tSDtTWhQ_zGyx<~Cce?fy;1%6rQ~<4WO~D2 zRrq(BPbsd(sv|3`E{D2)itZK*&Z1SN16aeL1yTvriT!Q!NbeSJ*?_BlFJ={H#r*OH zSEn4F;}H+6#!Fpih#~k@Ox7WQHPiuGp!T2CVp<}E@CjG_Ubc!bDz^6kJmb*e^TO(~ z(sg7ER2>3XLj~9Ywf{vUrZ?K4)Dz3$L(1&E8I|HZ`v>5hlw}F6e4JFVg#Op3s iLqsxsPX7?_->vW4jT!d`j(ukU0000FN2oNpVq8Q2+n{k~)5n00009 za7bBm000XU000XU0RWnu7ytkQb4f%&R7i>K)iG<^Koke?8!ZkB2Mwue(3+v6@nBN? zC5oUBPEm4}sQfMa6_*lxQiT7}^e9G8CJd;u0b9K0|eKD%~k} zB~a+(=Ry8q-T%EijD*m(wzaMQR)PO_|7+poqjX?zuC6clUFsh7l*XOs=~e4=q)vMk z@45*!}pO^+@Wpm$(_xY@(2QK0l%0wq?vH4R_meCw00fHV}>XS}s5w zJK2Py(P@hSF;>L#~_8&M)5+<9Ok#tbu8o%?L^Dkk4Nh-|RuD zBsbe~_~`|CXnpm4g@dEu;NZlS`_=JFa~UOhH-Sa7Ezf?vA@|=#0hT&>EV+-*&i3s; zk0;TG^JgYZ<}tnrEIM7`t>+iuDy_vA4RapJt<~XY)NeRHx^kym*1c+-mh&SJjkJE1 zo>Yc;1Hp6{d50fY50Jv_Om=iicgk2{gnKS2J0m1_iF%c*hLZ&r%@*`cSU(x5JtXvl zt}=$2c~o_>6U0y#%xaMQ?Vfhkc63rEw!*lwZ(h|PJ3(AoH;0^AO~z((#2F_ZaDg77 zD?{lifoKBx&(jbl6A*Tw=~R3NVM=wLFdhTnAaR^Y3um?0+QMtLf>1lacf$3pkVL3TD0RaI)S()MC;d!C?adB}mIZ*%r000006jrXF00009 za7bBm000XU000XU0RWnu7ytkQ{z*hZR7i>K)xm1pFc=4L-R#49_+TN)$a}Pu?jd^c z)=>5UyE!aHZgC-QS7aOK5QbL^>ca@5U7n&Q8%~D?gl=b%qVXE&VLweBTk=O>y5Z;7t}oV5mqPH&Bsx&-w$oQ5%&mbY*I=tmAQ2z zgz<5_Z>1R9&F0r|Cu$GX8!@GYvgCCm6waQC0xDIH2KF30QMk%a4K(FCK9ighXR<}2F~-A%-Wm5m^&Uz+F?rF zk>0o))3&X(;WB_;sx>lLjxo!%MlQsYo~<`#8L)49n~OHfJGodgDXnfx-VpRg2R+7E zhP5UO>K-Q9LR?>31{!6*K!>$nw1snkNSHTVM1Br0tAO1$Hxq%YhV=l?lSU@t{UCb%zS_Bj2SP`f zH_TZc#e3EFtqa0(8MtZ)mI!F=_Pj_5;3pHHMPADv9iIX03G;?Nc79B+tLgctJM1Wd ztzG^H#g^DM2Uc>COe`fJ{K(&vzO*^((?ojyf%?wn;@-hx0mN|`!>)WIA#+E47CtB_y&H?f;pf^>7qGMpTvik`79Jfu3)}S) ewi{RVaQp%@mf!%PHTqNl0000FN0a0Rbs#NvWy9sfj6JQ7Hfb00000a{edu00009 za7bBm000ie000ie0hKEb8vpK)l!9JDcEcmjyw7Mna&`@)N|h>As#K{`rAn15RjO2}Ql(0jDpjiN_x~!tx8MKu zPdVX#?JR5c;UAyIjXc-o48OOwtVW4J83*=|UGS}CS?mI^9DXV{HpY<~)6)sgah~Kk2!y$Uw{&RD9G**)o!vXDb?+vQqBs_9*o%dR{hOPEuiNY z&xD}h`US{y_L@RKU_CP5gf~?A206#s1hv`7sCs4-0VnsXtf^U&+Jf^!-ffDWq zE7EPOI^Ke^Y@P9Lo#YF0!9?bBvP%mB&{@ChvtzcNs0A)cIY?Ht-Rkp#lU|eVqN0E+ z^CZtb`kr)GX#(+%(iMhDu#*aAf<^wCI�HvwkUi|aCbCf1z9FNm#!jt zbi*t1yZ~6?vA^5gLcFJRkKtgtk_u*mGLJiWC$Eung+CZ_YZ>eQtr9I{ubkP zW8J`buupG$(p8`}khvrXRy{YFZWw>P-@j*kx{(TIf-+B{RzaZY&ZntO{g|%Q0_~)P zvw|`G<0%dr>l8ozAN3*b=lKLfnM;CT8#R-7(_{^K2JPusDwqj&^4w3_?n3TyF^8;R zijzPsV7ToP&I@`!{rV!HG=25`cMgF)C-<43cr8fsyddb#y|(8;2wNEU*cZo@3TA>) zo;yva8x=ahc97B(L!H1yQ_p$9q4(=kJYDTJ`04k~g*&qBV}YerkDlc@kOjvHAwv({ z6+{k@3vxl36Owd_E#UNRz~1SBulXo(q2-5yw_kkKU+pG8e=%@C%paL|oIgPQVV=u^ z2JmBIcnN+5F@`U2QYK=}uUwlH}Wo?nx06NJjKNR#Ps5{-v z(cqa7I6jC3zql2=?-T?N@u17jnLz{#&ybJhWNA$XiK?Jz8CZ3kM81NHf}k6{=mzQh zRm=-+Ku<-^2Ra8Zzu zChEri9PxtFZ9gwCVIQEFpx|vnWI?&$93f>x520?E-~>8M0Qz&a0O-LH6L1m*7X|&; zLsfgW)0>|UXazjJqiq%5*HNQV<)5}_@Q7sTVSHzBOU{sH#LG_-~^PQj_wehM1-be zgcLti%L;;T5b8JxdC1F-aDa~j*|$s(an8ngK9mGM6l@YUKJnoHRi9SAhU~uujJGv{ z1{rtg7-?<*UuG1fO{Cg?S;1=)q2E|9Lll&Le8|7e1Udf!A@fEOJQn2q8bZ#Cxi%rZ z;anq_9fnK*J=7WaaVGFwfq22|@a61=4}2(iT7V0(X|89#*KUlHpO1=y8UL-OdVTnV z7+)jEM+D^MH_z3KkIZiF%MjHxd+e$<3&UZq;7I`?2x{!YOMO8d&yBAX%*L3_LLCzh zvza+l3@#=JXXeKgFlV)Y#>>Yy1j??_<|hE} ziRKO%WGD{CGX>aI1gc*Toa5)l7sxbqzj_dpT$$!&nc>G2(B&LIH-3glX@CBB`nXB{ aJNX+q7qIANK_Yel0000G{z~Au%yAiE(KF0000000000ZHXpe00009 za7bBm000ie000ie0hKEb8vpKl|PT$HW-Hq^acT%ii4-yR1IowW zp3WKsRa=lCz~zIqMF-cC8&>i+NG8{V!(>oScY$!!RJnk!=7;J_Qj{Da4$uw-0vs3P zG0o>kzx;>LV|#3m?W<{Y_GLzN@Xfzrn{&!G=qRh-KVjbNzq0-8T4bw(zyU+EBF0$w z1-@czb)4_cM7G(Xql{3x4T4}hJIYD$gt^mWY>Qg#XfGVFT_DR9`!liix(Rm7HLoW@ z5MOj<9WWOn2wB|a57^$L6F2_wZ5_Bu2!S0#pB4&e+k=2Z<|DCPfiUNMz=a8*(fYUN zDGO&(IAj==x=QGpIrR*)u}32jxjPmo*jK)u+W=9Wf6u}f(c5!R2Us1~z;$7Hu@s8X zlR}OTxGvD$XtZ_TG-;gpO4u`ROY~>1xeMbEi_ zz`N1QS8uj#(^jNsQ_=hEo%r$m+WSQdWuV~<#@K&nn~4$ujVN)k8t)(w8(ye*PsM=@_#nNqqx+flky!khOUs|nUqN(fY(kW>k8 zUBgK%`NRdm(q|LVr~u#{O`H2agz(#d%LG?1N*sv2=IvDR?-R{UFx^cAfe$6DryZ;Q zlQmvU_V@2aL-Ll%Q^A=KnCgHBoMN2d3nLVlnv+Y-_;wv)OoDZ;d7rjisu@~tFqLcG zkfqxBz=7Na4W{~>qLM_xMQ{-r;RDVThwVw>G+IH$Sx9vMjIl zmBhJnt~?`LP){+gw7~it+q*>y zNsh5k%XY>Vt`uW){lb1MvCk20w>}7Y$qUN}?D3eu->OVMs%Ql~9-DsbR|%$e_e#>- z0_J8soZSLyg1Tm(;#?kqP6!XI&Cw?fxPNvjEk4s<9X`|6CvP^T=znYf09ABSvF7hR Qs{jB107*qoM6N<$f|kz5>;M1& diff --git a/graphics/object_events/pics/pokemon/followers/riolu.png b/graphics/object_events/pics/pokemon/followers/riolu.png deleted file mode 100644 index a49e6e01eb1fbff2dffbf41776f53170880e0e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)FN1NiNTo}F?nGrIcbrpxydOhDRH^+Nl8gjS#baW00000?%<=m00009 za7bBm000XU000XU0RWnu7ytkP;7LS5R7i>K)IV$7Fc=1K+f$Z+<-^2n6gU|I9Dwq^N(dZX&L&Hf+!HXHss5tD4O1LTs}@7PSml zv|mVm3d@j9V%a8t%x$5|138O7fHLgvr3xu);&x&-EFIpKH#2xA*d|mJ_*|1!0 zzujxb`$Ft)Ouzf}^+<y98>#J)F zKBp_Obqu{Z-#V^7Jsg=*H3Vz1P5zWx$FLyRI{DoDM`_zUpM30JPzA6NyUk5BX);(a zoiq&mSp3wsc|Kj-SfHZaF=*Rhp=DE$RALGXvPzWTuff|LS7Z2BVZ2aw6^RNQIX$=C zjZM=C7O*r+;d~M&rPD0SPZ(GomnW7@Xk_17Fk}k)BF?Q9ew@GVA0`ojlZvL6y9MFn zBlP0Xo@R&r0Rn9u&ePw%{KR$tiXSpG0`K4n=ly@V1Mqs~+!1OfSpWb407*qoM6N<$ Ef^&8hM*si- diff --git a/graphics/object_events/pics/pokemon/followers/roserade.png b/graphics/object_events/pics/pokemon/followers/roserade.png deleted file mode 100644 index 77ce4ef4d770a1fe8dea1a6ecd83feeac437919e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmV;t14I0YP)u@ONTVW~;U+1V*+nd!Mf0RaKYL2-!@Nl~fksew63NlEGH`H{hC{Wej-00009 za7bBm000XU000XU0RWnu7ytkRGD$>1R9J=W(=kXJQ5XQ=2e;gEL%aw#RebfpC35Fo zA%#+jXKA+JlLszl4296G;ONDuoK|twfV+k|6+%Huhc43T2&7o$3bkZC5ChuDzF_X| zy_a{c?ckg8{qMd1|KFbkfXDT?9@pdgKb8^%4;lo4pKgUa%zJRff507#nQh)mIb2G0 z(8f$f-h(L41!-0SsN|#iDOj`+-bh=&MQ5a*?p;ORSLX03vp2Qn;5X5@u z3$27mhcKWnvyL7NA)-?-?u233g<*V&cW?h;W(tYYO<3U?UM=(rMuwE^b zih6f3+U32Dbd16jub0EFj;G>oc}G2CRHjm}mNEH^@MN^hdzBQN3b8A+jB$90^u^>d z>$qofBT2zpA-@`oP`t}qCSPhu{jeDK50i!_ed;pp``~InhLJCJ`zZmO&PB(Etiv)n zEq0syV-PtW<>q}~5MoTiFemn^X+dbI$;f$6lZoI3u>+V3`njTlyaxqIC}_uj4$gAs z&a&<@ZaiY%v;Be-DK^J?qto%*hCP_e)A`bsnqukY^4;C?Zv&(l*bu*h4iJ0y=H1B1 zNZj3!?|U8}AAh}aE4J)E+grKWTu|IJ=go;(wVvX&Z@%O|d>QcvR@55`pGeOF}psJVNcEzI0j zT4Gl#wSw(rwPr(PrSfsCmi)Yj94%A3dfxO!mYZJBbZoWcRa~Jf-kdr&XU};}kuR!W zZp}>cWZuz(GwSZ2#(~ftFl#f{nhFMA(U7HVE$e6ngR)(SywO@)bEui~jwfyxi${kk zwlup`vy#)6)^jLJX5QAUB&lRtHK#uC#+&?1QA+L-+r2tpAAo$xsc$6>0AuYsu>_=T zmugy)PYpoXl27Y^ZV=?R-GOBnyl|;P#Ai$(ihted@6iFqGBY%Z%fOpGpXWD+0{t~K e6~UPP!TJlLJoAZ>R)D_%0000G1#n00000000000000000000F5OSa00009 za7bBm000xO000xO0b}Nl!vFvQmq|oHR7i>Kl`(IFFc5{=ZqCr(5M`!GvxBf0tH>>x zLs7e-_Nr6nh={o&iukw1*ch7#C82GGirYS(!|iApHST=ddn|LN=Vi zx81vZ69e$>)4`0c?cU{^7~p)xhBA2Ea_{m@48WVO%!gMoy4;#cmt{k{rP<;&3|{1B zhI^Om`p70cdKkvIe7xg3rhl%6?WwIN{Ls3dGM{kX!#J-FT!s4mB>RPB5PTihvpDT% zUR4j{%YpN!@Td)H_DkE~{quR+9zc?*)icf`Q?FU-_%`EwPpC7mnUVRclfTKLg|El9 zEd=YPgr4WNUa`_4nC81Ug{B?Fju8TsEZ8h!Y~G5(qu^~p7wMR|Njo9QzPV5VOA7Kl zrjn_t7LrwPXZ6>7ubWYfW&{wj6qAGjs^qtY4$SV@a jVxrTP{mW(Tia)Gx>tOjFm!-DP00000NkvXXu0mjfkaYn( diff --git a/graphics/object_events/pics/pokemon/followers/rotom_fan.png b/graphics/object_events/pics/pokemon/followers/rotom_fan.png deleted file mode 100644 index b1d5587af103e3f779fb2cee2a604674ce87d7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)Kl(BBxFcd|_KhR^-8f_=O2+%GXDA3Ke z;0peL0^L&y$Y=#+sxL6Ibx4P<7Alup{;gCO5$1?)FJ6#7QN*`x$%|7KfeI%Dn0G zlwQ9mqreRaOF1{pQ1C+6(;N!?9#82W^XWu;F?Rxpr43{P=>sWM;To!3zHfO#_qgzQ z5wE%(`$t}O0SGgl%LrvrwT8rmh9`871LH+f*?>AQsm|<)IEEFi&gDC6Xt=Ioqw9TN zues3$3-@PE01(eRrcTc)Jii_oUgz|{V^L~7IFvnoekiSuK))&9m|E6>k=!^non>2@ zETzhfVU|b9DpDD6Vf1*_*W*qHq=3j8)`6S?psVpZ%jc-lMQcdB4J0uahI2X4&mA2C zYNfV@fI<0!7==k-!8%hajfF8ZOpWD8>ilYbv3+}I4QrdON@_U!YUmltA$(=>gUS@^Lp510mGb+zyx%~Q*d*FRps<9TX%9qK=c drN*+1c>{0Reeop}AQh000000000000000oRW#!00009 za7bBm000xO000xO0b}Nl!vFvQ;Ymb6R7i>Kl(A03Fc5}4dt<2j3Kgq|1kbzxL)8~R z>?n#N#F&kaAfdL4B`@F?2sAIp`F!WNQPV`N*m~QS-}nEQToNI!b**c0$xC?burF&a z;IYF#Gt=ku*kQQhY*{#WCL<&>_u1c)Qe~l(Ig2GiH*=ryQdQ07RS_=AgyjU?W*#7o z@*_ukcxKDhY`$DkgX!3BYfQJLhr&o2nwbMb!}4av4PQF4%*_P7TmcluzQq7!4ipv} zpr8S6Oy&vadV*fA03e_?91vLZ0#XC*cjTBY@@bt79WOlw@Jo-Rl*KNCQ^p_8XF`4mYL)}-Z2M+pc15oh5%&z7gz=O^lVQ{Y2b~NRe|H?nH-HWM+x`BQ8idruT8krwUZ+5v8k)lZm3;U*tFXvW zI%X%17VNMbFQ#D`IiXFz9X6Y2xU|JLm$0ylb1LX@B)F`x;=o z`vrLK0(y)M_(WdxAfF8Qd^rs0F*Q`LhX#GV@D5HHAb&hP?gn^5fN&dMTQk7YZ9eYr zH(Pg<-M2s7?UXq6hYqY03{8WKXOn^ZJgNFEXIT7K{Q<-848WQ7`>6l`002ovPDHLk FV1j=U5~ctE diff --git a/graphics/object_events/pics/pokemon/followers/rotom_heat.png b/graphics/object_events/pics/pokemon/followers/rotom_heat.png deleted file mode 100644 index df8ce752d06cdfb3f5d3c459546c1e0c1823ce0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)Km9cJvFc5~>J&_KmD@qiJH%RABbZQDi zI#(!bS$KnrwL_LOI zwa8f^U+2N1pcv!OGE-vQC(5}5nxN&TJVx;Y0$7~$WKtEpT2)c1RU{z z;w>wjf&6FRPi>!A`<|-qF*}Wc(|2w8+k6JaMYY?cyG;FG zDj85xI8+cX1$ScIn0Kv z1}N%1`H2Am0qN=aK|w*eSs?%b00000&UT^m00009 za7bBm000xO000xO0b}Nl!vFvRXh}ptR7i>Km9cKyFc5~rH_!#RqBYQ=TOXkh(6NgK z8nDo%gH<7D=4Q$2Fh(*YK!GkD49Koa$W!KSL0|~-nn8fyB}Y-BcubsTuW$QA>i>U{ zC-UH6U;EnEe^UYgp5qtG>>5ESWwe_GL~MG(Y5xM zh%@=s%pl-h3B5+aq~@EL&+%v(tzQzqE(E8f<})!n^s;IVikxgd<#MGVhQRQAmYhHMQ?!bNZ3GXNIlk_2^S1p#x* z)&R3}f(s{TdBXm5N_eJJ_sNeK^W~b}S?6tYV_~_l24CJW!Irn%dDQ*5SggtPTveSw zZu!>nvZC@08g32#yjObJ2-;D{FzO8Q&Gk=p{i_!YxG*cCRME0XEZf5ZmumX4OkHBb zpBl#48LSRptHZZ_Ld(72YHP}!K4{qvi{wM0E*2(nbNUkJmPc-Wp|>|Tf9t{-aOQ$W z!}81$=%N#h9M81wFFi3J)Ox1jX$}NK7BHwvAi?(Zwam^UbAN&N=n)T$q29@$XU&ZW kJ%?B3Kg#+=JNcP<0OAy?ZPI%MT>t<807*qoM6N<$f<|RqeE}5CQBhH`>G45fq1kaU0000000000000003A2Fg00009 za7bBm000xO000xO0b}Nl!vFvR!%0LzR7i>Kl|66UFc5}0W#Gmk0t#nvE_Zb`mwb?3O9Ae5CiXU4=5l=oLzWF< z&pCEk2T<*`$Llga6UNF7^TYv$HD!a6F}JW?))`hetKR2I5W<=6F^_E`d6{)qA~fUl z7&57?Ki>)TnFgP1A`~w%4ZgAsW83EbyKDsq&usAAGU)OtgKN-h8+6$UUSF^`7qT(v zG7TiQ{Amo@OoQJ)Tkd-dnR)v8ql8~#>P2;2T{nTWvFmX>!g}q01G_;e>T~0`a5un} zlxZr%gbTEwbH@hdH4joNsH`BKvYI(ME`Fu5ECIN&7LJ|6TBqvPEL56k{aB!(W9Xre zLIk0Dc=(}06f}lA7T;0uGE@+u5Ths3=4xCtP^t7eA4)L5*B}_~*o>a200a5O_uoq^ zxSkuwnTLXldi@|shwZo!%W^t?JHPbho#E)YR*s>ELh`B-j8G7Ua9oDC!nqZUgsz@K z!@7QJ$8tLUzy$~vYf&54j6M2^UdgfV`<0;4!m+%;J#ZyMD@f;74>`2V>m|AkmGsSG z7>VjL63dBY*fiJ!W9ZZhDioyfr1i97Rc(@K7RvCh*nMX7eHKZWj;!llr*2mA-hY?R z@DW-=lLJq|5PJ-^Oq81B1_f~jy~=^rtlovoEJ`D&q_x5FJc<;uI|?Q@7{$)e(rSiV zwz})p%%<#r%v#FpjZZ-k3Yv4Z9Og4y>~d8@tE9)ov X>lU>#7C}JS00000NkvXXu0mjf&x(Zw diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_land.png b/graphics/object_events/pics/pokemon/followers/shaymin_land.png deleted file mode 100644 index 68c97d6f0e61478cad411f018f8b1e60554b2716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVK(!WlFP!tAm29ho;jy!^nZ3u}oktZM~ zhKV)|PEGpfHYrcQ#(2C;UDVXAgSo=M!hpRG<-Ij6aKcqnqZ8lu-!GGm%`>UMs^UcvZY)z{urBIw}4mmU%u|@U(KntafgSo;6FlesFmMa+pljViV z@0SdKT`9~NTtHeEVvCh)kfD*vtLH@cN#P2>1jtWy*y4fPZDJ<$(f`7rw80Y52kEH| zSzfw}#g&KHSJ|uNiOO!v^QIiK<2%9rEZk+gx8{Pj%L>FhDS4*{<7`{{^*@0v6K$-K zHGG*Wor#Z{<=viH_pw)*ug4*_%!1e>+g?nSUS}c-FYW7?FnTJ)KAg%~jzi+sc7^9n z--My7@L)FFc>DTz*oWv7Lgq~iPTF&~J$LK59+1ch>O$QK=7FQNLo}Sh^v838Zy+7_ b|5-i&q9q$gYXp?200000NkvXXu0mjfB;?z$ diff --git a/graphics/object_events/pics/pokemon/followers/shaymin_sky.png b/graphics/object_events/pics/pokemon/followers/shaymin_sky.png deleted file mode 100644 index 22165842aece9d1afb2cad8cb6568be34dcf6225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1030 zcmV+h1o``kP)R9J=WmO+c-HWbI*F&c8|vCw14CkQB6HqP9l zLntW(Qo&l?+p=N1^9kBhpc!x%UrI2oe5`A_e#~vyx%jrpf;;4}U!dQml4DCxE}gd5 zl6U+0y{G@*PqGrvJI6WBagKBRFM})zUp`vEm*mj`Cv;_RqucDWn*UaiB%yTH?+Ox` zgqHt7faD(c;`e>-iDj$j#rq*zu`5UtnKJ*SGjr7yEo*@-QwETLW^xkH5AyiHqBji^Xt}QMF?OJN z)7$V5GI5WX(h%bXvj#{ge>N%)p z=!_tRjLppi2xP&?Fa`LEu@3;$2yAO^40(gJV2d}!py{R*Gy|p0$d!TAOhEG-PvkU# zLK#3?peC}lOw;1P(t=unw~8Bq+JRt;d|+1dsOB~svzhYxhe^iTT+z8^)JwvMRd^yw z!!Q-MYQeSVvTY~H;Q@cgn0fK5I;B=$aRg{0W=Y7uNX^Ho4j4q1iM)M~U*B5+%~%i) z4`@@@FA)bnsiiiyRx?0`?4Kf1w!Y1bpK%I^{om5!yQwu$^AkG}0=Iw+T)#scWB^BO zKymf`u&aOh>Ie`R1KuZ}$B2E^6g;s_H6ugo0N@w9*mbGc^nxh%6!j{O%D);YBPd|# zaBexsMTVPdzO%)5Y0qrD(}A$T?3(j1S<$pU=DW^=kipX+KH^E6X5uArw)_p{R@2P zZ+OmjD%=E%UVoS^UCKg#v%+l}XjdST~sj3Ej4 z$iQsm{(;Ex3@?Y|!*e(PJL33;j$7h11zbU|a}VfzkGlL=bPfI2{J)Ps0YmD+veZy%`2YX_07*qoM6N<$f&v2L A$p8QV diff --git a/graphics/object_events/pics/pokemon/followers/shellos_east.png b/graphics/object_events/pics/pokemon/followers/shellos_east.png deleted file mode 100644 index adae89d4ea0299eb68d6fa086b07be30454d9f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)G^@VSy`#k0RaK|**P&WF`1dMNoj$p$yopZ00000yVg3s00009 za7bBm000XU000XU0RWnu7ytkP(Md!>R7i>KlRZnrP!xtUWC+sb7V&HArBIy(5hr_1 zNeV8CqT(b%!NI{0ISvj@5e?dAK?WIQkpGkU`1`wMnde=_iORQG&|b%T_g+ z`Tsy;bN5wbC9Hh^(vUe_U`@AgW>dHrt%OH(KHhF$i58sRo)hdRGD5?urtpvuVj_{P pQ^RU&r*A|30^jE@3|ncOoOk{=xD1%09_Ii6002ovPDHLkV1fks1NQ&` diff --git a/graphics/object_events/pics/pokemon/followers/shellos_west.png b/graphics/object_events/pics/pokemon/followers/shellos_west.png deleted file mode 100644 index 673be6447347c9bca54aa9ceeef77a275ec92ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)xw*+%F-iGZ(E$MgF)=au(OLP4$?56&!D*3^A!z^r00000VCMxu00009 za7bBm000XU000XU0RWnu7ytkPy-7qtR7i>Kl(9?0Kp4fdgmdX|s7N7`{s{`YO5I%A zp)C!`*c6091J+2 zyUT?bMy5=eGW{Qwi+}Ss<}W_f1Qe+Carv6fm~L=e)&y#OT>fh_LY0Qs@W4|XsPj#? z?7~^hQddo{>9x`Wb$+Gp)!{5=sg4M^00B5q=i^z-QY2*Iqoz>jcgAeY;ARj@<>EMg z)fDP{Jd0Us&KL{d(gU5PUtI6wSG=Tx0a;mDIXO810000000000^XkR700009 za7bBm000XU000XU0RWnu7ytkPtVu*cR7i>K(>+VWKo|$`gWz&@Nt;1Jr%WOpltc%e zLa&>f>EdRgOK}g>&8g5YAh@)OsAmRospK-m;$rVUl-JkXU7A$rB;>#SdN0pCcPRix ziWDhQx#?M1Spfk7;kg;<>G^S?*=boRF;Q^<0000000000uV_7000009 za7bBm000XU000XU0RWnu7ytkPtw}^dR7i>K)G=$qKoke?gA6yssUS$*TC89l(gw`n zr%-qZX}3aL4@0~nE-gq4P93^*3>6`Du#?g*5-I`dhw4RJyu0R-f=dVgxcqW=@8!u6 zg!b8IpMCyQrWxKf`Y_!)=kYbw%Q;i8qb#}~Ysy(To?CknRiZQ{XGNLNe+(I}j zJB~)p6nm{z(~f{B?DZ$YVcBtNUe{3D0}t4bBpZjVDt}gX{D@eku|bvY*(HFAO_Ci2 z5O39gR%LHSzLfp~!JPmAY(LpKs5IkV^Y2?BdtGp_1XvD;%6JtQj8LN4)+XDk7lz4> zbDd`+mkLB>6pjG=1xoY>E10JSI-4eYJ#wDC5gZVe^}8_eKezh@uNseV*uB!~3U5Y! zfW}j#^!&y(O>O|e_+?;^9mhoqZ$=)%#qC0ATl5L#AEkI^ zxj|oP+VPM1g0flk8KpD60rNX&twtS7Y3;2_yKQc@K5-rKTZNBIOL#)f^D@8gI8Iw> zeCld0zucMOn)ETGNDh`7*2D(F3sGr1!|#GwksAK_+!wU~(mx#3iyZ&}002ovPDHLk FV1l4e_f7x+ diff --git a/graphics/object_events/pics/pokemon/followers/skorupi.png b/graphics/object_events/pics/pokemon/followers/skorupi.png deleted file mode 100644 index 032584f56662f821c4405e9e922911aa4cb87a3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP) zd2t!Rv3Y^fNlB3@p_#F{!8timd4Y-P>G=Tx0hyuUSz)mN0000000000f1ydZ00009 za7bBm000XU000XU0RWnu7ytkQBuPX;R7i>Kls{|SFc^om2}GtYh0sqC(-xd;J-A@J zwOhwPQ$hzrj#CkuQ|Je1;UBFkFC@5{v=BX z9qLerI@JGCM9@m@Rq(T%F7_$JpX}eu9m40=uku{%5+;c@B_twwFdBfB+$CIF!VL+@ zW%A&*iUrx*(aS`bCQ8}YEQy4RxJ5*(@!MEPGP{?6MCj}0G$D}?(aQ@~z!IiEQ-NMpJ05IAFfdyYd`1_-B zbCEXe+7r7rdI7aXyIMkNs?AK4EXrc4!X|rRSp*?|ecayDiid_f#xN{;ox$m9mA9GL z%r5mzH>}?kC!FXe2#-$gPHkg!SksOh+y5HX7nAp^<%f3{VlyLbRGv#7ttrcM)*=7? z!`dceAz#YAqlJEvoxDzW^i5C zbZCiL$Gl6#zF4J9DZ}WLA0w;J{Oi?l)G&A+Hi-xhHahA=I%ZuW%oGJP>pyG95)6!P z24ZgL{F{m<@Eo6vwUh367_TLx@n{At5eRqi<4DN!=<-VLsxd2+T+V9k?%rSh19ZPj UG{nmCK>z>%07*qoM6N<$f}9yRlmGw# diff --git a/graphics/object_events/pics/pokemon/followers/skuntank.png b/graphics/object_events/pics/pokemon/followers/skuntank.png deleted file mode 100644 index 1e31df863a8d9e854f7554646db251a144c4caff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 752 zcmVMk)bIeDJd!G>G{E7L1{5@adC0!*^vPO0RR91_i`PQ00009 za7bBm000XU000XU0RWnu7ytkQW=TXrR7i>K(!q+_Ko|$`VcA2V5EyGqAnf3_JqQJ1 zPra209s<(9p85t-5PX4Nq67(~&9zYa5-wpI_+TEOH_t_J+zm*Hz43v8HJrRbL3ZOr^%r}8}cyBUpiRUDQ^M` zoH8PQlw)hlXq?=M|0Q?o?d=a|7|&*Szw)uSfjLWAE)^VEThe>4Trj44uV=Gq;`=<2 zuYAJW1FJQ;T1f#%PL?syyJR6uA>Ld6itBk7I#a%~CHaF1q99x2t4u05a>BYao=62O zrqJG7|MKf|4$v_nk{z{o-dxJV={zVd_=%L<0&W(F;=fT!)nwGfXHCYx?9$#WvJTF~9ujD7xYvnH;UVbSjIExaI izCe$rQ25mS74sKK7Pl2|fk2x80000G?59IRF3vaMQaf00009 za7bBm000ie000ie0hKEb8vpKlfi4+P#nh}S+hRx6kkE`~H5v_Y43FEws==|Bq;CHpg-^SSG?qHcN$`Jd5c>NAhL5 z=ADLQvy>_Hc*&nZA>8f(KYk+L@}!Y$24)kTuH?_N8{}ZjlScAbd7<7H&it7+S@L1J z3gh@NB%69>9@w3e^9k6&hM8jPKo-L8?wnj02V&k7n@iQ}5cd1hTugT%gxLL&Y>Lst z^?qAa=Hjy0g@U-|gprJjp>R8WJ|CCY`%tf84G1sL&jd;+!vi%O9 zN#MT4$fpj4pk5te4TPW&A7KrEW^5IIye{4zG|P{6){*mg%C^6t-@&$w?fur8X46gL}BH{A^) zFB&YymQGX2Km9cBvKorI`92rU%;TR3xJY>oej1k#H zc&E!Me6J2^;SD&W=Y1$jrQ%k3`ZXRjKco3IDMOsQtv_A#0o4>I134Eez zWs!&?9Z(r3v2z4t_(a-L6!XTuBAM;yry&baRPg{!si{vb5>X_hwA>hMuH$y1bZ;0L zTy4V81|*!23N}Pn@0d3_9VIk$0fVjpZ9u2XeSo4`Grt35NE1_@T-Y*szbzX-r(@Q! z)%8A5UDn)>l3=4q4U!!>=JGZ!MruTjm9R%=O)i9^+ed06U?BbsY zE?~wwj-;FtNkkifJU~_78L|cmm0R+d%Uj$P!_2-`%>>#*Ccv1>!am~~`G-$cQ>Ggv zo3b3$4v9dsW~Z)7HVG1^{cDS{MjN08I{1*)e4-A?$U_oAfr$N>5{jX@%IJ0KS*{;g3!m~A_O9glOYia}|LoTy-1)k-gX_nK%-=Zy)|I%* z&l%~H{Ja;7@tGe0TzBgZuAY6p7>`*OzZT=?Kk1KW%n$TYwr i{&&4zv+x7`w(B=hvG}>gi-JS|0000KmN9SKHWbIXaL{n*XQ;QJ$dsvrH!qob z3lj-A!IKXN;4KK!0LgeL1ze3oYS|KS>V1Hs{RUkMD3#DBz!?NbfM^dL>;SQ+-f)AV zl6<62ItLDdc56Ah{h`hz1oFL8xIqXT!B4 zH*bj<2f!_uonG^UO@V{MAFY6hhSrgrn54cE@NjWGX&uq&NlQF}Jl5UhI0u*fs_Zo? z{Zg z?rTTF0>;G0dE~sADpJg93yeD@S;2hzsJxnU6*>5jFM^k!>m+g>4@u z;yFNJiB$qAP%Vwxc)Ujj_mcQNq2uur`^K4RQ6*3kn)rSw&!Z6_Bfls{>ppkH)0Cx_ zSkLfjYiB%`D+L+IWA?}jpd&-0j)xSGdcHlKR5}VtC*Kcji!Hko*%a)BdbHP0Q&S@2 z$j~Y<$5%~0uonzE>I}NO@ii}Z+2o>oom+`nF?56ics^(A&%`>qV>rAp3267$Be#EU u^rqUy=;*Ey!`%d*8Xx;@^|>qlo$)sWWxXs1_a%}50000n+aN7ZI500009 za7bBm000XU000XU0RWnu7ytkRPf0{UR7i>KR=sQ6Kor-gBU<_|bjVmJow6TB0dL(} zx`be296ERCkiiX4NG%2jp~EKsMS_G(P>F3$)irCI((Dax^*8i%ANq1gTar%g8xs57 zyWhvXcb6E(|M+JD-EqAUWVD_;z9IJ~>kTn*y`H>CT19Pw+t#IG5~#1HakeH0c}@$k zS%Ox#tV_itjz%}F>Y5fn%Tc;=R07Gp$`L6Qqh9Q2SmMsw1X&z60JI|_lU5iyYL69< zDo2x9so3v@s+gCo5m<4)Y63t50EGaNs%25>2+fjGu|FthC(BE@I#8bH*L48tNCOxd z0J!S2$rUI^ldx2b1`%Vj0&V82HbIu}yj*F3Y@{7cs9L9-0Mt5l`^pg-$XuZ~9Weew z6l`qfamZQ(XAd7~QtI@TBh=TRDaY4cX71@oI`U&L(TdYqk1^2%Yy3TqL(;Uc@OJj! zXaJ7`2uJ?R(*yy4-eSSwNILSts}wJ}2+@S}!I#Bzm^KK^#fPWQ7E}W)BjG4LrJhUy zA>feUK&^NB!cp3@y;AXXKag|=8*jbf%Z)Rl^z!l6XPPJgClZd*NNpi|q;L@Q<(SN| zEgVsdlTz`7r>08b#T6&;YWNnw+xH*K9Q7u`Q8tw=FnhLBD2C3S^owoj2-}t72?5Y} zh?`O8C1Va#pwtV7(t-)8aFkNH#qHVRNN8su4ryZu($UbZ6h}ez7NAR@bpi`_=JfTe z`4V@<_YKZpIPyRMSn)2%BN-0ly|a{~ZlxH)8lw3lSk?(>r$6t0`ignev<0tlq&#OK z?w*r09W!jJQD(xCx>rImXH2UjIsWGFg2!~9>ESkV@V0|GPr}5osGbAis3hQuhc>Ac z^SSeTc&aDWbot|BCHxzT^&kjG>T^)sPwQkR4qF|pbW~G}@ix_pi#Y1wsV>OevKE0$if9s7mYCQ#z8l#viBh$vG^4CX-P>*000000000000000F2@3m00009 za7bBm000XU000XU0RWnu7ytkPRY^oaR7i>K(lJiMFcb!0Z}G|zm^c8aL17I_PJlWS z$%ss)l-RUO6%aPq3c`GJ867T^O@C&T+5InXeGjl)XpG&G|vs zNjSSn2Dm3H6U6e!Wh_(cHRyUrSFhK%FBxhYnnn@swi-SrQ6blj&~;(oJw7?lP}9De z2-QdIh|>!x+|Ad()uT&(#~%XJGzgRoLd;Kd70SlVhc=PEdlpPv9DWwKM{j;08mrLN zmPfwNTRnTm?TqX`=qjn=mK~8=uM8EpE*=+Y!>O|SL~36m6AC91^@H`Tx~&KQm@og{ V+o@CmZQ}p{002ovPDHLkV1keW%;*3B diff --git a/graphics/object_events/pics/pokemon/followers/stunky.png b/graphics/object_events/pics/pokemon/followers/stunky.png deleted file mode 100644 index 52afca9ed4e2b0441e9cd4fd1b9bf9662811d64e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597 zcmV-b0;>IqP)G_FKiMdfZ0RaI)DM0`L00000lM=}400009 za7bBm000XU000XU0RWnu7ytkP%Sl8*R7i>K(>+VWKo|$`BZE`&9YPc`*vS)4eAzmM zbQg4R5Z#+XrL~{Jv6Hk=IFrfMp=eR4DV*&=A>Mr#udz0Fp_dlAIP^aRe!brF+$DDa zY_rWa+x(yK72Y`1F80Qm*hRK(zz#3)>R6qq$QHV}JuC3W4NO=MP7Ay`w0B4pcNCi) z2*U!e(E#NdsHUP|muS6nB_596;*C&L;{{GcK}>XZc5U&1EuCj8x~|u*iPlB~!(&|4 z*g^L;FkqEvoED7T(tv1fP*JcuUT!0RZ?Cqy*mB-!IC}q(Upf^&lU(vz4c}gF1EQ1h zL9nQocN+7#9=u2e+04>7qf^SIaW2f}-Vb1NiqKv~Lo)`GKYvV~h ztCx40?*|CmL~koW4JI!@_^;vTa;(M45jz#`ZR$#PR1oMP-({>Ji7 z3%cQB*mJZ7boe$@PMKuWbB7p5qs8t#cYwXjX-dN<9NT&)AsZ-GmeP!ofE%)T=2?8#HivQx^&SzoML j`8Q$8?6s0>xc0ms1Q`<~d4D|Z00000NkvXXu0mjfsWJ+Z diff --git a/graphics/object_events/pics/pokemon/followers/tangrowth.png b/graphics/object_events/pics/pokemon/followers/tangrowth.png deleted file mode 100644 index 9075975691909497f884286d0cd87c5d95826db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmV+t1nv8YP)Kl|gGGHx$R`F!VVaT;8R8Y_ z87=?zS$ceC%7xGO^PSd!su4V7h%XikR@V(L!O!EdmZ>4To`#Tx8)Ha?62*Swa0iM zmkVw(O?x}mM;YY6L%ZYfdMSE{3D%oI=fH z-m7aw=D__6e6fV`>K~%!Q7sr6Fz^_A*knWy#!t3*pcqaZugYv1ZfLAPk~9W1hW>!D zqu_RSMaZ1gcN|d1k;f>(lbFD7N>|kgc3f{*GXe!?&5@W9N+ZX&!ygG@q#ra0`5j|y zI-?F@@kzrG>yZ9g^I~0hMj)|!3$_bJAm6R1HJpqX>$`~nrp)8Ybvk0@z?+|i^{1B& zhOaU2ooJQ$dSXGkonDT1$rL`*>7G6u2>uiMf{*9@@72OR2mYt{7v-ud6&>Wh&;S4c M07*qoM6N<$f@28ZiU0rr diff --git a/graphics/object_events/pics/pokemon/followers/togekiss.png b/graphics/object_events/pics/pokemon/followers/togekiss.png deleted file mode 100644 index 64cd1f5295f9ee8322c52d5f27a259f4ef4ab6aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)W0RcflLFwuFk(sdo0000000000000000000000000lwOfA00009 za7bBm000XU000XU0RWnu7ytkQQ%OWYR7i>Kl|ggbFc5`BXXG#6+S<{D?kQ&+&@JlDUl?>$Uvg|Ilmt>GYr`k3H+)C)10Vov2{_O5c$OLHr!W@ zrD@d0V4tXfAW-)yY#@pZ1#0c0qmdA0iAUJhU)MN8I4-bTr4X@I$_7bmArLJ~d$6!d zBdT&ROo+0?pHM!1Bfa_EF+bu2Xuv6n&!KNs5ZJ2FlRnA&Iyw|K5KZmb#0{-nlbqi7 z8|35Dj|TlFagCFXNa8FkIOvl@cR{TKkp_D%ans_?xAXocThK^bf(Tv2rAFu7@Q|tY z+Fla7U8#G+aM<(2>wTDd6T_*iK;Ul#QFcRI=#B_NCJt_*QA$+8%|d_F$I$1AIcSXl zuhA)G=Ennko}2!zgY-nA1LB|*VADAI>kO0#L~auLlf)J62)w9GWWad+|#j#$3&N-6EBGY<0d9zfoRx6Ye0%w|6CNbr9>pkDDi#t zDEnh4;{LQUB04xt9lalIAUYCyy%t{M>(|&$KQzdR=;$Z!-#|1F)?~1W=eZ8||C(AR zFTae4)3cfwuG^qKF+s6Wh=K+r00009 za7bBm000ie000ie0hKEb8vplS{DF|nIrwreT--Ag-|X9YPy0ra0l161xQk(EncMx=1NSnw`0cl+ao#Jc zW{zSlkHgtxeq-n)-14}^3S*AifX?l}dVz5@U(Yk=KRp7yW>*HeqGBgxFtr0}wzB87 zgPJOnm?_<5wYbHnPUW&7!GE24FfFt~urkcDSRw z!wQxSv60Ppl&;kYH%XnjXGmt&XpO94QxK(qfd@J;dU=Dc-%!VF2o&~kU0-V(7QsYGb&hN zgOH61?qOxd*JjEi7Bl0ya&X9N;tZ-LrwAR?_~>MhS>udX|3WK2_)k#u7P2+43oMwi zbeIIuO?XM{OS@RL?##)9A>j%#yIbY1$E}e=kxA+ZWB+k z*+KOAql;=L+Mt$O`-Y;Wc(gSrj)0i)V7Q;Oc*G-%GjWPmPSF=DFca4w2FAP(UwJc5f=GjDc)GHZMA=o?jx;cTrWS+-ZN;O#?>1#at;2StP1re> zGkpzk>*xgUgwTg%;>78}l!7!i>r=R1+UckDH^bwA46H2F-X zZ)1!}gaHwMoXM3RPv}{M!PG2_8O>!Y3)glcJ!4RrPpz3KZ@m9I+;t6#-P8i`osxEk z-&DkPF||^Q@TXt)q)RDjcjPITJpB-%qX*>DyWzmM>lOU?Ps3^=3xDlj_x-NCuCL9R z2ks|0J<~6Op?8JP=NG^*O6T+VD|a#eeAdelslu1O!ETED(dzt4>fd?!-zGe#hG$?m zjdK*|%8lWUrH1FecU{A0={_OpeyZrZL?_Ne2bxhZlrGnv8BC#D57EZf7`M775kAX^?w^|8M*YCBo*?tOjA>00000NkvXX Hu0mjfk$_jt diff --git a/graphics/object_events/pics/pokemon/followers/toxicroak.png b/graphics/object_events/pics/pokemon/followers/toxicroak.png deleted file mode 100644 index cbfdfb632d3c5d4854719a138375b6379eb6dffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)~0000000000V0Pi900009 za7bBm000XU000XU0RWnu7ytkQ4@pEpR7i>Kl)sDHFdW4VhZp?`9TmJ7PfmMK)!W_F zDY%4##VcR`e&h&8ByQ>ZndGOGP<`d$c@}hek!BVPK4a(ZnK@8%0YH-d64yjvYVUFN4YFV zInJ`Z83tJ|NCiI3j&YWav0K_6`@KKT^De3}c)v(u`0?K`a zF;gA9!>#Z7g)o1G7i8fx@F{Pr>-TEg`oNZZvB~un zHvE>IwqW7UjWG8$XW&a#Pd$CZjndniZJz+23_jzzwcroa7#74!>ROAKJ8Wr8ioF+p zjyoTHF;ActS;CQ9?m!`H#m9Wa=?f2z{73x(5!E>Aq~b~K00000NkvXXu0mjf=LIf< diff --git a/graphics/object_events/pics/pokemon/followers/turtwig.png b/graphics/object_events/pics/pokemon/followers/turtwig.png deleted file mode 100644 index a5246fa1ee76f220f1f5d2bfa69d28446d93b4b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmV+x0_pvUP)K)G*Lq)D?}FMq?KrNKlrd}DKp2Lv0paBqLky-{-C`{o)6&w( zPw)`3^$!R^brAHUdUyIxk`W0w)azb3AE zZd$epw=~77aLC(u=U^|puRpvZRyxb`Y%imz$n5I@G5gokqNGAtv)Y3#pGgewfakz6 zcQ@9@zIB6NMj%kE1VK@1pEtz3ad1&kDFjAJsJVQ{{L3m~LyBdtZTf*Xq*(XE>U_XT zh=MC0VLOdy2wyFz6e?Ci{?Cxc{L7VvBCoj0k$tmx!Mmg763$yO10m|o{a&%XyxcN8 zUsgiJO4!SNXXdf0P~^ZeN5~n8%?3X}09*_4I16ssYI(nMdWAl#9UZ22upvx@FKsIg)*01<)ZNJc8Qpm)dInd z5PLn!7trv;2O%(0!X6F0geVPL%xMk9midO0#E2+;}W9MwXEe8c#P zpitzTJ(crA<}515b)V$CB}Dw4P>M=*BrfEP+d`UU>$)%+>6}BA^IS9|>VU>jK1|05I>G{cNDF6Tfm|+7W00009 za7bBm000XU000XU0RWnu7ytkQ=}AOER7i>KmAz}*Kp2M)V|r*jP-ARDsRJd8HyILd zadV(5lu`=q&@N4fmO=-KD3xQhr4VPci9o&J#U{bz$m+c=h2Ww!-3ukq|Duvkx;wdc z3M!e}cd?$c?)T{4(+2?m>)$A7#y`%D30eoSreo$5Lg#u0ALHm&r<)27qa(tFe<~ZB z*K)C;eIUf!Z`8T49`ZUDvb8`lE6WgP17{f&HK*|d|6JQi1jV{zgsj_jKEni$fvto2 z47bicWdspJ*`Z_W&Ld>&8;M{oVIdga8?T&5f(-A{QKsoJw+=IF8dcG%2+$Kwgh1J% z!xc&mFrQyMA7NAB{bc+gBWTj$6FSfrG1#t9O3};t44+bJ>mrb`CWK*GmD4dr=0b*6 z5KN>t+(IEQrGIWy+Li?|<4o5eIvo#6i@9~6;*xaNLRZDhX#)IS!N!@!0~za`%o28& zp52zVokYCH&*-)~9u6NCKF~V!Fn>(o7-7960vYdQ1Z4Ny)g=#92xCGLF2ntXp&ck? zA#51ysjzUVV!bQ^8EXv@9|rc8t`JEBdj^QOt2Egh<;#($ZPt&xsSs+LLim2| z@nAwp^KKr7#I@+a;Cl>-UT#Yql{Gy+4=96t^$TNgr^l*^ba?;(002ov JPDHLkV1oB2k+uK; diff --git a/graphics/object_events/pics/pokemon/followers/weavile.png b/graphics/object_events/pics/pokemon/followers/weavile.png deleted file mode 100644 index faff523c7a8a55efaae7ae93474a885849c45d02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)G=Tx0Xa!=$uUWp2?GEC00000Y9bh800009 za7bBm000ie000ie0hKEb8vpK)3J)%Fc=4LVKN!~0KLiBK78aZOH|Gs z&DADQd`qyFlA8*B0EH{9!vUQ}lwXNhh#lV^+j3swk^E@;Y z5>;=R9H<&3tO;bH))hi1)!Jcf{n+a<7$8>h&nnV6Mls@Fjg9PTy%hpg0}#ik`d+P2 z9QKULx|fB`%YwO(L?$=7}xukkp29A@9`8s>R0)0;pD1C8BR@M(;? zK-IjW$pw6ipZQU!apdwq==J*x#12ZkBT>yO`SaxGHT-?HyIXs%C(XpS{dR{R0$O%y zs(B5f#XWwvC?lG>&nNnv4ODXB340000000000L%xng00009 za7bBm000XU000XU0RWnu7ytkQHAzH4R7i>K(@ksQKo|$`EJX0?#zXIgz3XV$-Xa-y zrFamUaYS+p2>k$JikE_v%6eKB`~=M<`%olgTtORoKHqpNstF|IAA! zQIbCDqyF1!KAw@+HJA159?!_@n#+35@^ejd$yoDncz^z;S=_Lsr@6M@pVu`@k_>5& z3^_}9Qt;^<7f&p1NGC)Zo{WzdTiD=@rG|UNM(AAXCjOxno01#;p~C@vFA~|o(z#OVy3?^$)nkd__oRA%xV6FAIN;z%a)4`d)x-&Bl@~r zE$zM$r4QCfoag#>Wp9Rg4w%#Y)75e{_wKSgiR~!d9ifSCZP)h3(op)LygJKOYr9#1 zEWb;fNU^TAX8r{v_NM$xkim^=PH#Z3(hF8rxxX#$ff?o-#O9ueO&IL==5+rPR$65X zcFL`P+5hS%uP1ky|IJy!uG&|-J+0D!t_UhDckdUSA0al8OaCx3rU1P8ha?P;k6!t9`lan&UAY lUhcZ)xWu8eT-W?h>o4GGEw!?hsp0?t002ovPDHLkV1n=SN^t-H diff --git a/graphics/object_events/pics/pokemon/followers/wormadam_sand.png b/graphics/object_events/pics/pokemon/followers/wormadam_sand.png deleted file mode 100644 index 5086fbb24686b4ba2a404ad65ce72b23c7905ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP)Dh^ykzq+mNdN!Kkw0tOKpcie78y*31WYul#ibeAFHw%v z#A=6tspim0B%lGnn8~8;499N~ZqL2a+2EeYHK zhl0~0tQuhn5$e8WUp>oo-kBpbOAOss$f}+QyY7c}BqYyc6ONw9bP+Pu)5JzuVoZg2 zDRN_>SaV(wZrGc#&>0~#j9*cdS|O{nAHpm2Zrw_3giUqA`LVEhh296Tuu|($R-#wJ z!s7*UgGeY;T27O2!&V92Yt9xk^+=9&g#WBFroylIPTFN2|If(%Q0hu9LVPRpRVS)LnsbMie000000000000000pMTr~00009 za7bBm000XU000XU0RWnu7ytkQQAtEWR7i>KlTC}-Kp4jdgh0tDECh@j`o9E)@BaG6$2H1e2{yO8GvL47Yl!0$R;jlue5;^IIb9wStDe(m8Pl8uYB4g zq&vwkJ;^y&Pz5WjK|&7g^43*mv9m{nkR`ICOwUc(x4ml&pamhxVqHvAne|VcyLXpo{vj;TQUF#I|%!|&L@go-k^=AFM^-vI5R*g4rpm$obqpBU`6lx zzC()-#2L-0^hfn~0ku$IQFIuj6Yz`RXPg-rQXXMpAWr#ppBnfRQe$Hei-DYx6G{S_ z|3oPY=&PT<%~)`h8yH%ApphFG#3?tUw4OuDE}uPT-+q$50rO-~(+XR~+t&pb2F5Ga zWNZopy5J0&G&J4vnR9Mc1(>R_S~a6OW|j@Z$P8zB&Lx=hsoZRsb}1-S}5C0ZCzT>FN0)F&R;*F}b<9F<~L05efN8F#rGn;KmQRb@Mi|BiK?Q>BL5Daf^@93lGg-G~ z4}p9Eqa~EmKyujIf~v*}3-Kj~Si#UkFBX_CS|1i>S3USrs7Wt-h_@&$acE7I$Onh) zLJsT05@;^fXXuRnOI8Few5QI&)=$sO^UP>8GeYS9^52vd`CkrLoUcH2pru-sj8s&` z3xDHn*0UIh&=fzbWFDg`rUAa3=UgBXYFMh`e-MykB#0kLmAsEh6&t(x9vie2GXWcN3n<&dpSIGr%wl|2cK~5N=N_Xedj`&(l^q3=^$A)e^Q4t^2;Bi;) zrp#&yvokmLR+@6epfqE{8jcN_9&xB6UBeHtp;1FDSTT1K4h_XGrO1#|=x@NmRiL-M z8m`aOL=RaDbo9X%H1x(JpoVbYT4vTj-kaiy1)(AR3wcdxLa1N$rr7%})k6+-vT4TyaT4Qq*M zgC_LJKqH6Wz%ANf?UvsOx%ahCUxf|-k51pFJwEJp{8$e;(1p=xD7r5mH|FytY74y?BD(#54WuMG1hEC?13(qa_i*m^lkB1jGp`3Xc+4PZED0b9B<`N57H;r*-1BdmV znPKk6>&fMj`0L5_a^?ZqtL?hQB>{54kdBB3^sXm)JRJ9qdujfa*4@uUQBqo8$)(Ij zKo?eS1dJ1hAmC;$fCi=kxOKYilG)ZtG;2ksh8O6!%<2T>D-4#m00000NkvXX Hu0mjfSYiHG From 2ac4feaa2ca7744ca4dced3f8dcf76362075e6fb Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 12 Mar 2023 16:23:15 -0700 Subject: [PATCH 54/71] Added follower_face macros and fixed FaceEast (both thanks to Karl) --- asm/macros/movement.inc | 6 ++++++ src/event_object_movement.c | 1 + 2 files changed, 7 insertions(+) diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index a43dc07ac..fced51d9c 100644 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -162,5 +162,11 @@ 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 follower_face_down, MOVEMENT_ACTION_FOLLOWING_POKEMON_FACESOUTH + create_movement_action follower_face_up, MOVEMENT_ACTION_FOLLOWING_POKEMON_FACENORTH + create_movement_action follower_face_left, MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEWEST + create_movement_action follower_face_right, MOVEMENT_ACTION_FOLLOWING_POKEMON_FACEEAST + create_movement_action follower_shrink, MOVEMENT_ACTION_FOLLOWING_POKEMON_SHRINK + create_movement_action follower_grow, MOVEMENT_ACTION_FOLLOWING_POKEMON_GROW create_movement_action step_end, MOVEMENT_ACTION_STEP_END diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5244e2fab..bd7ee2dfb 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -9768,6 +9768,7 @@ u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *objectEven u8 MovementAction_FollowingPokemon_FaceEast_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + SetObjectEventDirection(objectEvent, DIR_EAST); RecreateObjectEvent(objectEvent, sprite); sprite->animNum = 3; sprite->x2 = -8; From 9e1c9cf720210b8725c44b79f90d031c9a4476df Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Mon, 13 Mar 2023 11:06:10 -0700 Subject: [PATCH 55/71] Added more SetObjectEventDirection calls to follower_face commands --- src/event_object_movement.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index bd7ee2dfb..8c13114c4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -9740,6 +9740,7 @@ void RecreateObjectEvent(struct ObjectEvent *objectEvent, struct Sprite *sprite) u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + SetObjectEventDirection(objectEvent, DIR_SOUTH); RecreateObjectEvent(objectEvent, sprite); sprite->animNum = 0; MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); @@ -9749,6 +9750,7 @@ u8 MovementAction_FollowingPokemon_FaceSouth_Step0(struct ObjectEvent *objectEve u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + SetObjectEventDirection(objectEvent, DIR_NORTH); RecreateObjectEvent(objectEvent, sprite); sprite->animNum = 1; MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y); @@ -9758,6 +9760,7 @@ u8 MovementAction_FollowingPokemon_FaceNorth_Step0(struct ObjectEvent *objectEve u8 MovementAction_FollowingPokemon_FaceWest_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + SetObjectEventDirection(objectEvent, DIR_WEST); RecreateObjectEvent(objectEvent, sprite); sprite->animNum = 2; sprite->x2 = 8; From 0c380862d61a9c4eccd9ed4915e12db6e7ca4310 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 13 Mar 2023 15:37:46 -0400 Subject: [PATCH 56/71] Document the trendy saying word group --- data/scripts/mauville_man.inc | 10 ++-- data/specials.inc | 4 +- include/constants/easy_chat.h | 2 +- include/constants/flags.h | 2 +- include/easy_chat.h | 4 +- include/global.h | 6 +-- src/easy_chat.c | 97 +++++++++++++++++++++-------------- src/mauville_old_man.c | 19 +++---- src/mystery_event_script.c | 2 +- 9 files changed, 83 insertions(+), 63 deletions(-) diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc index eda3505bf..a33636043 100644 --- a/data/scripts/mauville_man.inc +++ b/data/scripts/mauville_man.inc @@ -64,9 +64,9 @@ MauvilleCity_PokemonCenter_1F_EventScript_DeclineWritingLyrics:: MauvilleCity_PokemonCenter_1F_EventScript_Hipster:: lock faceplayer - setflag FLAG_SYS_HIPSTER_MEET + setflag FLAG_UNLOCKED_TRENDY_SAYINGS msgbox MauvilleCity_PokemonCenter_1F_Text_TeachWhatsHipAndHappening, MSGBOX_DEFAULT - special GetHipsterSpokenFlag + special HasHipsterTaughtWord goto_if_eq VAR_RESULT, FALSE, MauvilleCity_PokemonCenter_1F_EventScript_TryTeachWord msgbox MauvilleCity_PokemonCenter_1F_Text_IAlreadyTaughtYou, MSGBOX_DEFAULT release @@ -80,8 +80,8 @@ MauvilleCity_PokemonCenter_1F_EventScript_TryTeachWord:: end MauvilleCity_PokemonCenter_1F_EventScript_TeachWord:: - msgbox MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfPhrase, MSGBOX_DEFAULT - special SetHipsterSpokenFlag + msgbox MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfWord, MSGBOX_DEFAULT + special SetHipsterTaughtWord release end @@ -969,7 +969,7 @@ MauvilleCity_PokemonCenter_1F_Text_IveGotNothingNewToTeach: .string "what's hip and happening.\p" .string "I've got nothing new to teach you!$" -MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfPhrase: +MauvilleCity_PokemonCenter_1F_Text_HaveYouHeardOfWord: .string "Hey, have you heard about\n" .string "“{STR_VAR_1}â€�?\p" .string "What's it mean? Well…\n" diff --git a/data/specials.inc b/data/specials.inc index a0dbde868..52b539a80 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -111,8 +111,8 @@ gSpecials:: def_special Script_GetCurrentMauvilleMan def_special HasBardSongBeenChanged def_special SaveBardSongLyrics - def_special GetHipsterSpokenFlag - def_special SetHipsterSpokenFlag + def_special HasHipsterTaughtWord + def_special SetHipsterTaughtWord def_special HipsterTryTeachWord def_special PlayBardSong def_special SetMauvilleOldManObjEventGfx diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index b5875b881..b1f38941f 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -1095,7 +1095,7 @@ #define EC_WORD_OLD ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 30) #define EC_WORD_YOUNG ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 31) #define EC_WORD_UGLY ((EC_GROUP_TRENDY_SAYING << EC_MASK_BITS) | 32) -#define NUM_ADDITIONAL_PHRASES 33 +#define NUM_TRENDY_SAYINGS 33 // Special Berry Masters Wife phrases #define NOT_SPECIAL_PHRASE 0 diff --git a/include/constants/flags.h b/include/constants/flags.h index 99a8377a7..377f18107 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1348,7 +1348,7 @@ #define FLAG_UNUSED_0x863 (SYSTEM_FLAGS + 0x3) // Unused Flag #define FLAG_SYS_GAME_CLEAR (SYSTEM_FLAGS + 0x4) #define FLAG_SYS_CHAT_USED (SYSTEM_FLAGS + 0x5) -#define FLAG_SYS_HIPSTER_MEET (SYSTEM_FLAGS + 0x6) +#define FLAG_UNLOCKED_TRENDY_SAYINGS (SYSTEM_FLAGS + 0x6) // Badges #define FLAG_BADGE01_GET (SYSTEM_FLAGS + 0x7) diff --git a/include/easy_chat.h b/include/easy_chat.h index c9ef4428f..4bcc7389c 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -128,11 +128,11 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 IsBardWordInvalid(u16 word); u16 GetRandomEasyChatWordFromGroup(u16 group); -u16 GetNewHipsterPhraseToTeach(void); +u16 UnlockRandomTrendySaying(void); u16 EasyChat_GetNumWordsInGroup(u8); u16 GetRandomEasyChatWordFromUnlockedGroup(u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); void InitQuestionnaireWords(void); -void UnlockAdditionalPhrase(u8 additionalPhraseId); +void UnlockTrendySaying(u8 wordIndex); #endif // GUARD_EASYCHAT_H diff --git a/include/global.h b/include/global.h index e0ff9f0c2..9396a95f7 100644 --- a/include/global.h +++ b/include/global.h @@ -133,7 +133,7 @@ // values that don't appear in the Pokedex. NATIONAL_DEX_COUNT does not include these values. #define NUM_DEX_FLAG_BYTES ROUND_BITS_TO_BYTES(NUM_SPECIES) #define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) -#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) +#define NUM_TRENDY_SAYING_BYTES ROUND_BITS_TO_BYTES(NUM_TRENDY_SAYINGS) // This produces an error at compile-time if expr is zero. // It looks like file.c:line: size of array `id' is negative @@ -673,7 +673,7 @@ struct MauvilleManGiddy struct MauvilleManHipster { u8 id; - bool8 alreadySpoken; + bool8 taughtWord; u8 language; }; @@ -1031,7 +1031,7 @@ struct SaveBlock1 /*0x2BC8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct Mail mail[MAIL_COUNT]; - /*0x2E20*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; // bitfield for 33 additional phrases in easy chat system + /*0x2E20*/ u8 unlockedTrendySayings[NUM_TRENDY_SAYING_BYTES]; // Bitfield for unlockable Easy Chat words in EC_GROUP_TRENDY_SAYING /*0x2E25*/ //u8 padding5[3]; /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; diff --git a/src/easy_chat.c b/src/easy_chat.c index d08ea4b33..35ba633cf 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -5109,7 +5109,7 @@ static bool8 IsEasyChatGroupUnlocked(u8 groupId) switch (groupId) { case EC_GROUP_TRENDY_SAYING: - return FlagGet(FLAG_SYS_HIPSTER_MEET); + return FlagGet(FLAG_UNLOCKED_TRENDY_SAYINGS); case EC_GROUP_EVENTS: case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: @@ -5425,80 +5425,99 @@ void BufferDeepLinkPhrase(void) CopyEasyChatWord(gStringVar2, easyChatWord); } -static bool8 IsAdditionalPhraseUnlocked(u8 additionalPhraseId) +/* + ### Trendy Sayings + + Not to be confused with Dewford Town's "trendy phrase". + + This is a group of easy chat words (EC_GROUP_TRENDY_SAYING) that are normally inaccessible. + They can be unlocked either through Mystery Event (where they're referred to as "rare" words) + or from the "Hipster" variety of the Mauville Old Man. The Hipster can unlock one word each + time he is received via record mixing (and once if he is the player's default Old Man). + + Which words have been unlocked is saved in the unlockedTrendySayings bitfield in SaveBlock1 + + Unlocked trendy saying words are only accessible if the flag FLAG_UNLOCKED_TRENDY_SAYINGS is set. + It's set any time the player talks to the Hipster, but is not apparently set by Mystery Event, + meaning trendy saying words unlocked via Mystery Event may not be available until the player has + talked to the Hipster. +*/ +static bool8 IsTrendySayingUnlocked(u8 wordIndex) { - int byteOffset = additionalPhraseId / 8; - int shift = additionalPhraseId % 8; - return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1; + int byteOffset = wordIndex / 8; + int shift = wordIndex % 8; + return (gSaveBlock1Ptr->unlockedTrendySayings[byteOffset] >> shift) & 1; } -void UnlockAdditionalPhrase(u8 additionalPhraseId) +void UnlockTrendySaying(u8 wordIndex) { - if (additionalPhraseId < NUM_ADDITIONAL_PHRASES) + if (wordIndex < NUM_TRENDY_SAYINGS) { - int byteOffset = additionalPhraseId / 8; - int shift = additionalPhraseId % 8; - gSaveBlock1Ptr->additionalPhrases[byteOffset] |= 1 << shift; + int byteOffset = wordIndex / 8; + int shift = wordIndex % 8; + gSaveBlock1Ptr->unlockedTrendySayings[byteOffset] |= 1 << shift; } } -static u8 GetNumAdditionalPhrasesUnlocked(void) +static u8 GetNumTrendySayingsUnlocked(void) { u8 i; - u8 numAdditionalPhrasesUnlocked; + u8 numUnlocked; - for (i = 0, numAdditionalPhrasesUnlocked = 0; i < NUM_ADDITIONAL_PHRASES; i++) + for (i = 0, numUnlocked = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (IsAdditionalPhraseUnlocked(i)) - numAdditionalPhrasesUnlocked++; + if (IsTrendySayingUnlocked(i)) + numUnlocked++; } - return numAdditionalPhrasesUnlocked; + return numUnlocked; } -u16 GetNewHipsterPhraseToTeach(void) +u16 UnlockRandomTrendySaying(void) { u16 i; - u16 additionalPhraseId; - u8 numAdditionalPhrasesUnlocked = GetNumAdditionalPhrasesUnlocked(); - if (numAdditionalPhrasesUnlocked == NUM_ADDITIONAL_PHRASES) + u16 numToSkip; + u8 numUnlocked = GetNumTrendySayingsUnlocked(); + if (numUnlocked == NUM_TRENDY_SAYINGS) return EC_EMPTY_WORD; - additionalPhraseId = Random() % (NUM_ADDITIONAL_PHRASES - numAdditionalPhrasesUnlocked); - for (i = 0; i < NUM_ADDITIONAL_PHRASES; i++) + numToSkip = Random() % (NUM_TRENDY_SAYINGS - numUnlocked); + for (i = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (!IsAdditionalPhraseUnlocked(i)) + if (!IsTrendySayingUnlocked(i)) { - if (additionalPhraseId) + if (numToSkip) { - additionalPhraseId--; + // Skip the first n locked words, as determined by the Random call above. + numToSkip--; } else { - UnlockAdditionalPhrase(i); + UnlockTrendySaying(i); return EC_WORD(EC_GROUP_TRENDY_SAYING, i); } } } + // Would only be reached if there are no new words to teach, which is handled at the start. return EC_EMPTY_WORD; } // Unused -u16 GetRandomTaughtHipsterPhrase(void) +static u16 GetRandomUnlockedTrendySaying(void) { u16 i; - u16 additionalPhraseId = GetNumAdditionalPhrasesUnlocked(); - if (additionalPhraseId == 0) + u16 n = GetNumTrendySayingsUnlocked(); + if (n == 0) return EC_EMPTY_WORD; - additionalPhraseId = Random() % additionalPhraseId; - for (i = 0; i < NUM_ADDITIONAL_PHRASES; i++) + n = Random() % n; + for (i = 0; i < NUM_TRENDY_SAYINGS; i++) { - if (IsAdditionalPhraseUnlocked(i)) + if (IsTrendySayingUnlocked(i)) { - if (additionalPhraseId) - additionalPhraseId--; + if (n) + n--; else return EC_WORD(EC_GROUP_TRENDY_SAYING, i); } @@ -5569,10 +5588,10 @@ void InitEasyChatPhrases(void) // Mauville old man data is corrupted, which is initialized directly after // this function is called when starting a new game. for (i = 0; i < 64; i++) - gSaveBlock1Ptr->additionalPhrases[i] = 0; + gSaveBlock1Ptr->unlockedTrendySayings[i] = 0; #else - for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->additionalPhrases); i++) - gSaveBlock1Ptr->additionalPhrases[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->unlockedTrendySayings); i++) + gSaveBlock1Ptr->unlockedTrendySayings[i] = 0; #endif } @@ -5611,7 +5630,7 @@ static void SetUnlockedEasyChatGroups(void) sWordData->unlockedGroupIds[sWordData->numUnlockedGroups++] = EC_GROUP_MOVE_2; } - if (FlagGet(FLAG_SYS_HIPSTER_MEET)) + if (FlagGet(FLAG_UNLOCKED_TRENDY_SAYINGS)) sWordData->unlockedGroupIds[sWordData->numUnlockedGroups++] = EC_GROUP_TRENDY_SAYING; if (IsNationalPokedexEnabled()) @@ -5800,7 +5819,7 @@ static bool8 IsEasyChatIndexAndGroupUnlocked(u16 wordIndex, u8 groupId) case EC_GROUP_MOVE_2: return TRUE; case EC_GROUP_TRENDY_SAYING: - return IsAdditionalPhraseUnlocked(wordIndex); + return IsTrendySayingUnlocked(wordIndex); default: return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled; } diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 689dcf6a1..6075bd5d9 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -88,7 +88,7 @@ static void SetupHipster(void) struct MauvilleManHipster *hipster = &gSaveBlock1Ptr->oldMan.hipster; hipster->id = MAUVILLE_MAN_HIPSTER; - hipster->alreadySpoken = FALSE; + hipster->taughtWord = FALSE; hipster->language = gGameLanguage; } @@ -225,27 +225,28 @@ void PlayBardSong(void) ScriptContext_Stop(); } -void GetHipsterSpokenFlag(void) +void HasHipsterTaughtWord(void) { - gSpecialVar_Result = (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken; + gSpecialVar_Result = (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord; } -void SetHipsterSpokenFlag(void) +void SetHipsterTaughtWord(void) { - (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken = TRUE; + (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord = TRUE; } void HipsterTryTeachWord(void) { - u16 phrase = GetNewHipsterPhraseToTeach(); + u16 word = UnlockRandomTrendySaying(); - if (phrase == EC_EMPTY_WORD) + if (word == EC_EMPTY_WORD) { + // All words already unlocked gSpecialVar_Result = FALSE; } else { - CopyEasyChatWord(gStringVar1, phrase); + CopyEasyChatWord(gStringVar1, word); gSpecialVar_Result = TRUE; } } @@ -369,7 +370,7 @@ static void ResetBardFlag(void) static void ResetHipsterFlag(void) { - (&gSaveBlock1Ptr->oldMan.hipster)->alreadySpoken = FALSE; + (&gSaveBlock1Ptr->oldMan.hipster)->taughtWord = FALSE; } static void ResetTraderFlag(void) diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 124ababa4..b146bbab3 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -293,7 +293,7 @@ bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) { - UnlockAdditionalPhrase(ScriptReadByte(ctx)); + UnlockTrendySaying(ScriptReadByte(ctx)); StringExpandPlaceholders(gStringVar4, gText_MysteryEventRareWord); ctx->mStatus = MEVENT_STATUS_SUCCESS; return FALSE; From 69c07fe3c86cf33d541e9e2cc9d37bc3cf37271c Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Mon, 13 Mar 2023 15:31:06 -0700 Subject: [PATCH 57/71] Added fix for shadow issues when follower shrinks (thanks to Karl) --- 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 8c13114c4..175652c2c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -9920,6 +9920,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, sprite->subpriority = 1; sprite->data[2]++; + objectEvent->hasShadow = FALSE; return FALSE; } @@ -10108,6 +10109,7 @@ u8 MovementAction_FollowingPokemon_Shrink_Step1(struct ObjectEvent *objectEvent, sprite->data[2]++; } + objectEvent->hasShadow = FALSE; return FALSE; } From 492422b6bd268178aa687ca017fe44d67a399546 Mon Sep 17 00:00:00 2001 From: Zunawe Date: Thu, 23 Mar 2023 21:47:26 -0700 Subject: [PATCH 58/71] Fix scanner item flag name --- data/maps/AbandonedShip_CaptainsOffice/scripts.inc | 2 +- data/maps/AbandonedShip_HiddenFloorRooms/map.json | 2 +- include/constants/flags.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/maps/AbandonedShip_CaptainsOffice/scripts.inc b/data/maps/AbandonedShip_CaptainsOffice/scripts.inc index 7c59fec96..78fdc6434 100644 --- a/data/maps/AbandonedShip_CaptainsOffice/scripts.inc +++ b/data/maps/AbandonedShip_CaptainsOffice/scripts.inc @@ -7,7 +7,7 @@ AbandonedShip_CaptainsOffice_EventScript_CaptSternAide:: goto_if_set FLAG_EXCHANGED_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus checkitem ITEM_SCANNER goto_if_eq VAR_RESULT, TRUE, AbandonedShip_CaptainsOffice_EventScript_CanYouDeliverScanner - goto_if_set FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus + goto_if_set FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER, AbandonedShip_CaptainsOffice_EventScript_ThisIsSSCactus msgbox AbandonedShip_CaptainsOffice_Text_NoSuccessFindingScanner, MSGBOX_DEFAULT release end diff --git a/data/maps/AbandonedShip_HiddenFloorRooms/map.json b/data/maps/AbandonedShip_HiddenFloorRooms/map.json index 9c480a1c9..e808250f4 100644 --- a/data/maps/AbandonedShip_HiddenFloorRooms/map.json +++ b/data/maps/AbandonedShip_HiddenFloorRooms/map.json @@ -38,7 +38,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemScanner", - "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER" + "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/include/constants/flags.h b/include/constants/flags.h index 99a8377a7..ed5dd5c68 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1123,7 +1123,7 @@ #define FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL 0x433 #define FLAG_ITEM_NEW_MAUVILLE_ESCAPE_ROPE 0x434 #define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_6_LUXURY_BALL 0x435 -#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER 0x436 +#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_2_SCANNER 0x436 #define FLAG_ITEM_SCORCHED_SLAB_TM11 0x437 #define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02 0x438 #define FLAG_ITEM_SHOAL_CAVE_ENTRANCE_BIG_PEARL 0x439 From 32c644ee92aa05d5cd8eee4d738039490f459b28 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Sun, 26 Mar 2023 15:30:37 -0700 Subject: [PATCH 59/71] Added faster/fastest animations for followers Also made a few minor changes to make both FollowingPokemon branches a little more in-sync. --- src/data/object_events/object_event_anims.h | 272 +++++++++++++++++--- src/event_object_movement.c | 126 +++++++-- 2 files changed, 347 insertions(+), 51 deletions(-) diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index c90b791c6..96e49748b 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -1251,6 +1251,78 @@ const union AnimCmd gObjectEventImageAnim_WalkEastFast_FollowingPokemon[] = ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFaster_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFaster_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFaster_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFastest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(3, 2), + ANIMCMD_FRAME(3, 2), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFastest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFastest_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 2, .hFlip = TRUE), + ANIMCMD_FRAME(4, 2, .hFlip = TRUE), + ANIMCMD_FRAME(5, 2, .hFlip = TRUE), + ANIMCMD_FRAME(5, 2, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon[] = { // Needed for if the Pokemon is in overworld and for idle animation. gObjectEventImageAnim_FaceSouth_FollowingPokemon, @@ -1264,19 +1336,19 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon[] = { gObjectEventImageAnim_WalkWest_FollowingPokemon, gObjectEventImageAnim_WalkEast_FollowingPokemon, - // Filler - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_FollowingPokemon, - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_FollowingPokemon, + // Needed for movement actions gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, gObjectEventImageAnim_WalkWestFast_FollowingPokemon, gObjectEventImageAnim_WalkEastFast_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFaster_FollowingPokemon, + gObjectEventImageAnim_WalkWestFaster_FollowingPokemon, + gObjectEventImageAnim_WalkEastFaster_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFastest_FollowingPokemon, + gObjectEventImageAnim_WalkWestFastest_FollowingPokemon, + gObjectEventImageAnim_WalkEastFastest_FollowingPokemon, // Needed for when the player runs gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, @@ -1312,6 +1384,24 @@ const union AnimCmd gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon[] ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_WalkEastFaster_Unique_FollowingPokemon[] = +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFastest_Unique_FollowingPokemon[] = +{ + ANIMCMD_FRAME(6, 2), + ANIMCMD_FRAME(6, 2), + ANIMCMD_FRAME(7, 2), + ANIMCMD_FRAME(7, 2), + ANIMCMD_JUMP(0), +}; + const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEast[] = { // Needed for if the Pokemon is in overworld. gObjectEventImageAnim_FaceSouth_FollowingPokemon, @@ -1325,19 +1415,19 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEas gObjectEventImageAnim_WalkWest_FollowingPokemon, gObjectEventImageAnim_WalkEast_Unique_FollowingPokemon, - // Filler - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, + // Needed for movement actions gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, gObjectEventImageAnim_WalkNorthFast_FollowingPokemon, gObjectEventImageAnim_WalkWestFast_FollowingPokemon, gObjectEventImageAnim_WalkEastFast_Unique_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFaster_FollowingPokemon, + gObjectEventImageAnim_WalkWestFaster_FollowingPokemon, + gObjectEventImageAnim_WalkEastFaster_Unique_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFastest_FollowingPokemon, + gObjectEventImageAnim_WalkWestFastest_FollowingPokemon, + gObjectEventImageAnim_WalkEastFastest_Unique_FollowingPokemon, // Needed for when the player runs gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, @@ -1427,6 +1517,60 @@ const union AnimCmd gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPo ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_WalkNorthFaster_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(1, 4, .hFlip = TRUE), + ANIMCMD_FRAME(1, 4, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFaster_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFaster_Unique_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFastest_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_FRAME(0, 2, .hFlip = TRUE), + ANIMCMD_FRAME(1, 2, .hFlip = TRUE), + ANIMCMD_FRAME(1, 2, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFastest_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(3, 2), + ANIMCMD_FRAME(3, 2), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFastest_Unique_Double_FollowingPokemon[] = +{ + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_FRAME(5, 2), + ANIMCMD_JUMP(0), +}; + const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEast_DoubleNorth[] = { // Needed for if the Pokemon is in overworld. gObjectEventImageAnim_FaceSouth_FollowingPokemon, @@ -1440,19 +1584,19 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_UniqueEas gObjectEventImageAnim_WalkWest_Double_FollowingPokemon, gObjectEventImageAnim_WalkEast_Unique_Double_FollowingPokemon, - // Filler - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, - gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, - gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, - gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, + // Needed for movement actions gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, gObjectEventImageAnim_WalkNorthFast_Double_FollowingPokemon, gObjectEventImageAnim_WalkWestFast_Double_FollowingPokemon, gObjectEventImageAnim_WalkEastFast_Unique_Double_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFaster_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFaster_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFaster_Unique_Double_FollowingPokemon, + gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon, + gObjectEventImageAnim_WalkNorthFastest_Double_FollowingPokemon, + gObjectEventImageAnim_WalkWestFastest_Double_FollowingPokemon, + gObjectEventImageAnim_WalkEastFastest_Unique_Double_FollowingPokemon, // Needed for when the player runs gObjectEventImageAnim_WalkSouthFast_FollowingPokemon, @@ -1545,6 +1689,62 @@ const union AnimCmd gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza ANIMCMD_JUMP(0), }; +const union AnimCmd gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFaster_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFaster_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(5, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFaster_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(5, 8, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkNorthFastest_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkWestFastest_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gObjectEventImageAnim_WalkEastFastest_FollowingPokemon_Rayquaza[] = +{ + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_Rayquaza[] = { // Needed for if the Pokemon is in overworld and for idle animation. gObjectEventImageAnim_FaceSouth_FollowingPokemon_Rayquaza, @@ -1558,19 +1758,19 @@ const union AnimCmd *const gObjectEventImageAnimTable_FollowingPokemon_Rayquaza[ gObjectEventImageAnim_WalkWest_FollowingPokemon_Rayquaza, gObjectEventImageAnim_WalkEast_FollowingPokemon_Rayquaza, - // Filler - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkSouthFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkNorthFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkWestFast_FollowingPokemon_Rayquaza, - gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza, + // Needed for movement actions gObjectEventImageAnim_WalkSouthFast_FollowingPokemon_Rayquaza, gObjectEventImageAnim_WalkNorthFast_FollowingPokemon_Rayquaza, gObjectEventImageAnim_WalkWestFast_FollowingPokemon_Rayquaza, gObjectEventImageAnim_WalkEastFast_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkSouthFaster_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkNorthFaster_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkWestFaster_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkEastFaster_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkSouthFastest_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkNorthFastest_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkWestFastest_FollowingPokemon_Rayquaza, + gObjectEventImageAnim_WalkEastFastest_FollowingPokemon_Rayquaza, // Needed for when the player runs gObjectEventImageAnim_WalkSouthFast_FollowingPokemon_Rayquaza, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 175652c2c..aa0abfa79 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2015,7 +2015,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) { struct ObjectEventTemplate objectEventTemplate; @@ -2026,7 +2026,7 @@ u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 objectEventTemplate.kind = OBJ_KIND_NORMAL; objectEventTemplate.x = x; objectEventTemplate.y = y; - objectEventTemplate.elevation = z; + objectEventTemplate.elevation = elevation; objectEventTemplate.movementType = movementBehavior; objectEventTemplate.movementRangeX = 0; objectEventTemplate.movementRangeY = 0; @@ -6215,7 +6215,7 @@ bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct if(sprite->data[7] != 6) { sprite->data[7] = 6; - sprite->animNum = 20; + sprite->animNum = 8; sprite->x2 = 0; SeekSpriteAnim(sprite, ++sprite->animCmdIndex); } @@ -6243,7 +6243,7 @@ bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sp if(sprite->data[7] != 7) { sprite->data[7] = 7; - sprite->animNum = 21; + sprite->animNum = 9; sprite->x2 = 0; SeekSpriteAnim(sprite, ++sprite->animCmdIndex); } @@ -6271,7 +6271,7 @@ bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct if(sprite->data[7] != 8) { sprite->data[7] = 8; - sprite->animNum = 22; + sprite->animNum = 10; sprite->x2 = 8; SeekSpriteAnim(sprite, ++sprite->animCmdIndex); } @@ -6299,7 +6299,7 @@ bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct if(sprite->data[7] != 9) { sprite->data[7] = 9; - sprite->animNum = 23; + sprite->animNum = 11; sprite->x2 = -8; SeekSpriteAnim(sprite, ++sprite->animCmdIndex); } @@ -6511,7 +6511,19 @@ bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent bool8 MovementAction_WalkFasterDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTER); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 11) + { + sprite->data[7] = 11; + sprite->animNum = 12; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTER); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTER); return MovementAction_WalkFasterDown_Step1(objectEvent, sprite); } @@ -6527,7 +6539,19 @@ bool8 MovementAction_WalkFasterDown_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkFasterUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTER); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 12) + { + sprite->data[7] = 12; + sprite->animNum = 13; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTER); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTER); return MovementAction_WalkFasterUp_Step1(objectEvent, sprite); } @@ -6543,7 +6567,19 @@ bool8 MovementAction_WalkFasterUp_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkFasterLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTER); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 13) + { + sprite->data[7] = 13; + sprite->animNum = 14; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTER); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTER); return MovementAction_WalkFasterLeft_Step1(objectEvent, sprite); } @@ -6559,7 +6595,19 @@ bool8 MovementAction_WalkFasterLeft_Step1(struct ObjectEvent *objectEvent, struc bool8 MovementAction_WalkFasterRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTER); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 14) + { + sprite->data[7] = 14; + sprite->animNum = 15; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTER); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTER); return MovementAction_WalkFasterRight_Step1(objectEvent, sprite); } @@ -6575,7 +6623,19 @@ bool8 MovementAction_WalkFasterRight_Step1(struct ObjectEvent *objectEvent, stru bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTEST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 15) + { + sprite->data[7] = 15; + sprite->animNum = 16; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTEST); + } + else + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTEST); return MovementAction_SlideDown_Step1(objectEvent, sprite); } @@ -6591,7 +6651,19 @@ bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTEST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 16) + { + sprite->data[7] = 16; + sprite->animNum = 17; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTEST); + } + else + InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTEST); return MovementAction_SlideUp_Step1(objectEvent, sprite); } @@ -6607,7 +6679,19 @@ bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprit bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTEST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 17) + { + sprite->data[7] = 17; + sprite->animNum = 18; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTEST); + } + else + InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTEST); return MovementAction_SlideLeft_Step1(objectEvent, sprite); } @@ -6623,7 +6707,19 @@ bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Spr bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTEST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 18) + { + sprite->data[7] = 18; + sprite->animNum = 19; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTEST); + } + else + InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTEST); return MovementAction_SlideRight_Step1(objectEvent, sprite); } @@ -9919,8 +10015,8 @@ u8 MovementAction_FollowingPokemon_Shrink_Step0(struct ObjectEvent *objectEvent, sprite->oam.priority = 1; sprite->subpriority = 1; - sprite->data[2]++; objectEvent->hasShadow = FALSE; + sprite->data[2]++; return FALSE; } From 3c8ba619131399b6b0b7ff231e7bd0bda2a5b3c5 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Tue, 28 Mar 2023 23:30:10 -0700 Subject: [PATCH 60/71] Fixed specific fly/door glitch Before, if the player stepped out of a door and then immediately flew, the follower would not appear after landing until the player reloaded the map. This fixes that. --- src/field_effect.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/field_effect.c b/src/field_effect.c index eae9f0c75..b2c3eef02 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1370,8 +1370,16 @@ static void Task_UseFly(u8 taskId) gFieldEffectArguments[0] = 0; FieldEffectStart(FLDEFF_USE_FLY); - FollowerIntoPokeball(); - + + if (gSaveBlock2Ptr->follower.inProgress) + { + // In case the player just exited a building and the follower has not exited the building + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gSaveBlock2Ptr->follower.warpEnd = 0; + + FollowerIntoPokeball(); + } + task->data[0]++; } From 872d06ce9a0691adf6103a781768e963d15e2d33 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 29 Mar 2023 12:20:59 -0700 Subject: [PATCH 61/71] Fixed collision and surfing bugs - If the player collides with something immediately after exiting a door, the follower will no longer exit the door, walking into the player. - If the player surfs immediately after exiting a door, the follower will no longer exit the door and walk out of sync. --- src/field_effect.c | 10 +++++++++- src/follow_me.c | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/field_effect.c b/src/field_effect.c index b2c3eef02..485b07252 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3064,7 +3064,15 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) SetPlayerAvatarFieldMove(); ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; - FollowerIntoPokeball(); + + if (gSaveBlock2Ptr->follower.inProgress) + { + // in case the follower hasn't left a warp yet + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gSaveBlock2Ptr->follower.warpEnd = 0; + + FollowerIntoPokeball(); + } } } diff --git a/src/follow_me.c b/src/follow_me.c index c6043455a..95222bb95 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -554,6 +554,10 @@ static bool8 IsStateMovement(u8 state) //case MOVEMENT_ACTION_EMOTE_CROSS: //case MOVEMENT_ACTION_EMOTE_DOUBLE_EXCLAMATION_MARK: //case MOVEMENT_ACTION_EMOTE_HAPPY: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_UP: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_LEFT: + case MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_RIGHT: case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN: case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP: case MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT: From 2dbeffa92b05b990dd1dcd275b52c9d2cfaaabcd Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 29 Mar 2023 20:58:14 -0700 Subject: [PATCH 62/71] Added option to speed up follower interactions By setting the FAST_FOLLOWERS define to TRUE, you can now: - Have the follower exit a door faster, avoiding the need to stop and wait for the follower to exit. - Have the follower jump down ledges faster, avoiding the need to stop and wait for the follower to land. --- .../map.json | 2 +- .../scripts.inc | 2 +- include/constants/flags.h | 5 +- include/constants/global.h | 2 + .../movement_action_func_tables.h | 4 + src/event_object_movement.c | 131 +++++++++++++++++- src/field_effect.c | 28 ++++ src/field_screen_effect.c | 17 ++- src/follow_me.c | 51 ++++++- 9 files changed, 231 insertions(+), 11 deletions(-) diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json index 5463337eb..ac8710804 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/map.json +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/map.json @@ -103,7 +103,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "NULL", - "flag": "FLAG_UNUSED_0x020" + "flag": "FLAG_FOLLOWER_ACTIVE" } ], "warp_events": [ diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index efa55aabb..bf0377b41 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -29,7 +29,7 @@ LittlerootTown_ProfessorBirchsLab_MapScripts:: LittlerootTown_ProfessorBirchsLab_OnTransition: call Common_EventScript_SetupRivalGfxId call ProfBirch_EventScript_UpdateLocation - setflag FLAG_UNUSED_0x020 + setflag FLAG_FOLLOWER_ACTIVE goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 6, LittlerootTown_ProfessorBirchsLab_EventScript_SetAfterJohtoStarterLayout goto_if_ge VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 4, LittlerootTown_ProfessorBirchsLab_EventScript_SetJohtoStarterLayout goto_if_eq VAR_DEX_UPGRADE_JOHTO_STARTER_STATE, 3, LittlerootTown_ProfessorBirchsLab_EventScript_CheckReadyForJohtoStarter diff --git a/include/constants/flags.h b/include/constants/flags.h index 99a8377a7..e08544f31 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -41,8 +41,9 @@ #define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F) #define TEMP_FLAGS_END FLAG_TEMP_1F -#define FLAG_UNUSED_0x020 0x20 // Unused Flag -#define FLAG_UNUSED_0x021 0x21 // Unused Flag +#define FLAG_FOLLOWER_ACTIVE 0x20 // Reveals the follower object +#define FLAG_FOLLOWER_IN_BUILDING 0x21 // Used for speeding up follower door exiting + #define FLAG_UNUSED_0x022 0x22 // Unused Flag #define FLAG_UNUSED_0x023 0x23 // Unused Flag #define FLAG_UNUSED_0x024 0x24 // Unused Flag diff --git a/include/constants/global.h b/include/constants/global.h index 48af9d8fe..9cfcf0055 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -155,4 +155,6 @@ #define SIDEWAYS_STAIRS_IMPLEMENTED FALSE #define POST_BATTLE_FOLLOWER_FIX FALSE +#define FAST_FOLLOWERS FALSE + #endif // GUARD_CONSTANTS_GLOBAL_H diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index a962f16b8..964cd1f21 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -734,11 +734,15 @@ static const s16 sJumpInitDisplacements[] = { [JUMP_DISTANCE_IN_PLACE] = 0, [JUMP_DISTANCE_NORMAL] = 1, [JUMP_DISTANCE_FAR] = 1, + [JUMP_DISTANCE_FAR_QUICK] = 1, + [JUMP_DISTANCE_FAR_QUICKER] = 1, }; static const s16 sJumpDisplacements[] = { [JUMP_DISTANCE_IN_PLACE] = 0, [JUMP_DISTANCE_NORMAL] = 0, [JUMP_DISTANCE_FAR] = 1, + [JUMP_DISTANCE_FAR_QUICK] = 1, + [JUMP_DISTANCE_FAR_QUICKER] = 1, }; u8 (*const gMovementActionFuncs_Jump2Down[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index aa0abfa79..92192ef39 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -49,6 +49,8 @@ enum { JUMP_DISTANCE_IN_PLACE, JUMP_DISTANCE_NORMAL, JUMP_DISTANCE_FAR, + JUMP_DISTANCE_FAR_QUICK, + JUMP_DISTANCE_FAR_QUICKER, }; // Sprite data used throughout @@ -5728,7 +5730,19 @@ bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct ObjectEvent *objectE bool8 MovementAction_WalkSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_SOUTH); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 19) + { + sprite->data[7] = 19; + sprite->animNum = 4; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitWalkSlow(objectEvent, sprite, DIR_SOUTH); + } + else + InitWalkSlow(objectEvent, sprite, DIR_SOUTH); return MovementAction_WalkSlowDown_Step1(objectEvent, sprite); } @@ -5744,7 +5758,19 @@ bool8 MovementAction_WalkSlowDown_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_NORTH); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 20) + { + sprite->data[7] = 20; + sprite->animNum = 5; + sprite->x2 = 0; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitWalkSlow(objectEvent, sprite, DIR_NORTH); + } + else + InitWalkSlow(objectEvent, sprite, DIR_NORTH); return MovementAction_WalkSlowUp_Step1(objectEvent, sprite); } @@ -5760,7 +5786,19 @@ bool8 MovementAction_WalkSlowUp_Step1(struct ObjectEvent *objectEvent, struct Sp bool8 MovementAction_WalkSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_WEST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 21) + { + sprite->data[7] = 21; + sprite->animNum = 6; + sprite->x2 = 8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitWalkSlow(objectEvent, sprite, DIR_WEST); + } + else + InitWalkSlow(objectEvent, sprite, DIR_WEST); return MovementAction_WalkSlowLeft_Step1(objectEvent, sprite); } @@ -5776,7 +5814,19 @@ bool8 MovementAction_WalkSlowLeft_Step1(struct ObjectEvent *objectEvent, struct bool8 MovementAction_WalkSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_EAST); + if(gSaveBlock2Ptr->follower.inProgress && objectEvent == &gObjectEvents[gSaveBlock2Ptr->follower.objId]) + { + if(sprite->data[7] != 22) + { + sprite->data[7] = 22; + sprite->animNum = 7; + sprite->x2 = -8; + SeekSpriteAnim(sprite, ++sprite->animCmdIndex); + } + InitWalkSlow(objectEvent, sprite, DIR_EAST); + } + else + InitWalkSlow(objectEvent, sprite, DIR_EAST); return MovementAction_WalkSlowRight_Step1(objectEvent, sprite); } @@ -5973,6 +6023,9 @@ enum { JUMP_TYPE_HIGH, JUMP_TYPE_LOW, JUMP_TYPE_NORMAL, +#if FAST_FOLLOWERS == TRUE + JUMP_TYPE_QUICK, +#endif }; static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 distance, u8 type) @@ -6080,8 +6133,18 @@ bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Spr { sprite->x2 = 0; sprite->data[7] = 10; +#if FAST_FOLLOWERS == TRUE + if(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR_QUICKER, JUMP_TYPE_QUICK); + else + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR_QUICK, JUMP_TYPE_QUICK); + } + else + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#else } InitJumpRegular(objectEvent, sprite, DIR_SOUTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#endif return MovementAction_Jump2Down_Step1(objectEvent, sprite); } @@ -6102,8 +6165,18 @@ bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprit { sprite->x2 = 0; sprite->data[7] = 10; +#if FAST_FOLLOWERS == TRUE + if(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR_QUICKER, JUMP_TYPE_QUICK); + else + InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR_QUICK, JUMP_TYPE_QUICK); + } + else + InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#else } InitJumpRegular(objectEvent, sprite, DIR_NORTH, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#endif return MovementAction_Jump2Up_Step1(objectEvent, sprite); } @@ -6124,8 +6197,18 @@ bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Spr { sprite->x2 = 8; sprite->data[7] = 10; +#if FAST_FOLLOWERS == TRUE + if(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR_QUICKER, JUMP_TYPE_QUICK); + else + InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR_QUICK, JUMP_TYPE_QUICK); + } + else + InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#else } InitJumpRegular(objectEvent, sprite, DIR_WEST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#endif return MovementAction_Jump2Left_Step1(objectEvent, sprite); } @@ -6146,8 +6229,18 @@ bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sp { sprite->x2 = -8; sprite->data[7] = 10; +#if FAST_FOLLOWERS == TRUE + if(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR_QUICKER, JUMP_TYPE_QUICK); + else + InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR_QUICK, JUMP_TYPE_QUICK); + } + else + InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#else } InitJumpRegular(objectEvent, sprite, DIR_EAST, JUMP_DISTANCE_FAR, JUMP_TYPE_HIGH); +#endif return MovementAction_Jump2Right_Step1(objectEvent, sprite); } @@ -9215,10 +9308,19 @@ static const s8 sJumpY_Normal[] = { -9, -8, -6, -5, -3, -2, 0, 0 }; +#if FAST_FOLLOWERS == TRUE +static const s8 sJumpY_Quick[] = { + -2, -4, -6, -8, -6, -4, -2, 0, 0 +}; +#endif + static const s8 *const sJumpYTable[] = { [JUMP_TYPE_HIGH] = sJumpY_High, [JUMP_TYPE_LOW] = sJumpY_Low, - [JUMP_TYPE_NORMAL] = sJumpY_Normal + [JUMP_TYPE_NORMAL] = sJumpY_Normal, +#if FAST_FOLLOWERS == TRUE + [JUMP_TYPE_QUICK] = sJumpY_Quick, +#endif }; static s16 GetJumpY(s16 i, u8 type) @@ -9244,16 +9346,35 @@ static u8 DoJumpSpriteMovement(struct Sprite *sprite) [JUMP_DISTANCE_IN_PLACE] = 16, [JUMP_DISTANCE_NORMAL] = 16, [JUMP_DISTANCE_FAR] = 32, + #if FAST_FOLLOWERS == TRUE + [JUMP_DISTANCE_FAR_QUICK] = 16, + [JUMP_DISTANCE_FAR_QUICKER] = 8, + #endif }; u8 distanceToShift[] = { [JUMP_DISTANCE_IN_PLACE] = 0, [JUMP_DISTANCE_NORMAL] = 0, [JUMP_DISTANCE_FAR] = 1, + #if FAST_FOLLOWERS == TRUE + [JUMP_DISTANCE_FAR_QUICK] = 1, + [JUMP_DISTANCE_FAR_QUICKER] = 0, + #endif }; u8 result = 0; if (sprite->sDistance != JUMP_DISTANCE_IN_PLACE) +#if FAST_FOLLOWERS == TRUE + { + if (sprite->sDistance == JUMP_DISTANCE_FAR_QUICKER) + Step4(sprite, sprite->sDirection); + else if (sprite->sDistance == JUMP_DISTANCE_FAR_QUICK) + Step2(sprite, sprite->sDirection); + else + Step1(sprite, sprite->sDirection); + } +#else Step1(sprite, sprite->sDirection); +#endif sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], sprite->sJumpType); diff --git a/src/field_effect.c b/src/field_effect.c index 485b07252..43cf02996 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1,8 +1,10 @@ #include "global.h" #include "decompress.h" +#include "event_data.h" #include "event_object_movement.h" #include "field_camera.h" #include "field_control_avatar.h" +#include "field_door.h" #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" @@ -1371,6 +1373,18 @@ static void Task_UseFly(u8 taskId) FieldEffectStart(FLDEFF_USE_FLY); + #if FAST_FOLLOWERS == TRUE + if (FlagGet(FLAG_FOLLOWER_IN_BUILDING)) + { + // In case the player just exited a building and the follower has not exited the building + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gSaveBlock2Ptr->follower.warpEnd = 0; + FieldAnimateDoorClose(gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y - 1); + } + else + FollowerIntoPokeball(); + #else if (gSaveBlock2Ptr->follower.inProgress) { // In case the player just exited a building and the follower has not exited the building @@ -1379,6 +1393,7 @@ static void Task_UseFly(u8 taskId) FollowerIntoPokeball(); } + #endif task->data[0]++; } @@ -3065,6 +3080,18 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); task->tState++; + #if FAST_FOLLOWERS == TRUE + if (FlagGet(FLAG_FOLLOWER_IN_BUILDING)) + { + // in case the follower hasn't left a warp yet + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gSaveBlock2Ptr->follower.warpEnd = 0; + FieldAnimateDoorClose(gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y - 1); + } + else + FollowerIntoPokeball(); + #else if (gSaveBlock2Ptr->follower.inProgress) { // in case the follower hasn't left a warp yet @@ -3073,6 +3100,7 @@ static void SurfFieldEffect_FieldMovePose(struct Task *task) FollowerIntoPokeball(); } + #endif } } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index ac705a17e..090f920ef 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -344,14 +344,23 @@ static void Task_ExitDoor(u8 taskId) if (IsPlayerStandingStill()) { u8 objEventId; - task->data[1] = FieldAnimateDoorClose(*x, *y); + + #if FAST_FOLLOWERS == TRUE + if (!gSaveBlock2Ptr->follower.inProgress) + #endif + task->data[1] = FieldAnimateDoorClose(*x, *y); + objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]); task->tState = 3; } break; case 3: + #if FAST_FOLLOWERS == TRUE + if (gSaveBlock2Ptr->follower.inProgress || task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + #else if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + #endif { FollowMe_SetIndicatorToComeOutDoor(); FollowMe_WarpSetEnd(); @@ -362,6 +371,12 @@ static void Task_ExitDoor(u8 taskId) case 4: UnlockPlayerFieldControls(); DestroyTask(taskId); + + #if FAST_FOLLOWERS == TRUE + if (gSaveBlock2Ptr->follower.inProgress) + FlagSet(FLAG_FOLLOWER_IN_BUILDING); + #endif + break; } } diff --git a/src/follow_me.c b/src/follow_me.c index 95222bb95..dbe0ebb2d 100644 --- a/src/follow_me.c +++ b/src/follow_me.c @@ -249,6 +249,18 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) { gSaveBlock2Ptr->follower.warpEnd = 0; + #if FAST_FOLLOWERS == TRUE + if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1 || (FlagGet(FLAG_FOLLOWER_IN_BUILDING) && gMapHeader.mapType != MAP_TYPE_INDOOR)) + { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) + { + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + FieldAnimateDoorClose(player->currentCoords.x, player->currentCoords.y - 1); + } + else + { + #else if (gSaveBlock2Ptr->follower.comeOutDoorStairs == 1) { if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_BIKE)) @@ -256,6 +268,7 @@ void FollowMe(struct ObjectEvent* npc, u8 state, bool8 ignoreScriptActive) else { gPlayerAvatar.preventStep = TRUE; + #endif taskId = CreateTask(Task_FollowerOutOfDoor, 1); gTasks[taskId].data[0] = 0; gTasks[taskId].data[2] = follower->currentCoords.x; @@ -809,12 +822,23 @@ void Task_DoDoorWarp(u8 taskId) FreezeObjectEvents(); PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); - task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + + #if FAST_FOLLOWERS == TRUE + if (!FlagGet(FLAG_FOLLOWER_IN_BUILDING)) + #endif + task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); + task->data[0] = 1; break; case 1: + #if FAST_FOLLOWERS == TRUE + if (FlagGet(FLAG_FOLLOWER_IN_BUILDING) || task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) + { + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + #else if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE) { + #endif ObjectEventClearHeldMovementIfActive(&gObjectEvents[playerObjId]); ObjectEventSetHeldMovement(&gObjectEvents[playerObjId], MOVEMENT_ACTION_WALK_NORMAL_UP); @@ -890,11 +914,35 @@ static void Task_FollowerOutOfDoor(u8 taskId) //if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) && ObjectEventClearHeldMovementIfFinished(player)) //SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); //Temporarily stop running +#if FAST_FOLLOWERS == FALSE if (ObjectEventClearHeldMovementIfFinished(player)) ObjectEventTurn(player, GetPlayerFaceToDoorDirection(player, follower)); //The player should face towards the follow as the exit the door +#endif switch (task->data[0]) { +#if FAST_FOLLOWERS == TRUE + case 0: + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + FreezeObjectEvents(); + + task->data[0] = 1; + break; + case 1: + follower->invisible = FALSE; + ObjectEventTurn(follower, DIR_SOUTH); //The follower should be facing down when it comes out the door + follower->singleMovementActive = FALSE; + follower->heldMovementActive = FALSE; + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_FASTER_DOWN); + else + ObjectEventSetHeldMovement(follower, MOVEMENT_ACTION_WALK_FAST_DOWN); //follower step down + task->data[0] = 2; + break; + case 2: + if (/*ObjectEventClearHeldMovementIfFinished(follower)*/follower->currentCoords.y == *y + 1) +#else case 0: FreezeObjectEvents(); task->data[1] = FieldAnimateDoorOpen(follower->currentCoords.x, follower->currentCoords.y); @@ -916,6 +964,7 @@ static void Task_FollowerOutOfDoor(u8 taskId) break; case 2: if (/*ObjectEventClearHeldMovementIfFinished(follower)*/follower->movementActionId == 0x9E) +#endif { task->data[1] = FieldAnimateDoorClose(*x, *y); task->data[0] = 3; From 20f8fbffc0016bb8dea9c45adc295d896dce60e1 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Wed, 29 Mar 2023 21:31:32 -0700 Subject: [PATCH 63/71] Extra change to fit with pret sync --- include/event_object_movement.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 84ced8796..e1a8b1e98 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -215,8 +215,8 @@ void CameraObjectReset2(void); void LoadObjectEventPalette(u16 paletteTag); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); -struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); -u8 TrySpawnObjectEventTemplate(struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY); +const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); +u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY); bool8 ObjectEventPokemonFacePlayer(struct ObjectEvent *, struct ObjectEvent *); bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup); From ee9875e1859eb78d806d2f9a5ef2aba5faf66f05 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Fri, 31 Mar 2023 14:51:45 -0700 Subject: [PATCH 64/71] Fixed follower/script bug Follower will now move as directed by scripts that are triggered by interacting with an object. --- 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 9cb9bdabb..3720c79f4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -20,6 +20,7 @@ #include "palette.h" #include "pokemon.h" #include "random.h" +#include "script.h" #include "sprite.h" #include "task.h" #include "trainer_see.h" @@ -9934,7 +9935,8 @@ u8 MovementAction_FollowingPokemon_Step0(struct ObjectEvent *objectEvent, struct sprite->animNum = sprite->animNum % 4; SeekSpriteAnim(sprite, ++sprite->animCmdIndex); } - return FALSE; + + return ArePlayerFieldControlsLocked(); } void RecreateObjectEvent(struct ObjectEvent *objectEvent, struct Sprite *sprite) From 2d639a01fa85e10e99717a6589a9c3725f7b1206 Mon Sep 17 00:00:00 2001 From: W1serV1ser <1prefertheaircauseimanairnomad@gmail.com> Date: Fri, 31 Mar 2023 15:52:20 -0700 Subject: [PATCH 65/71] Fixed follower/level script bug After finishing a script that triggers upon loading a map, followers will no longer act as if they're exiting a door when the player takes their first step, assuming the follower was moved at all during said script. --- src/script_movement.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/script_movement.c b/src/script_movement.c index 10517dfc8..5a638b0f0 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -1,4 +1,5 @@ #include "global.h" +#include "event_data.h" #include "script_movement.h" #include "event_object_movement.h" #include "task.h" @@ -26,6 +27,14 @@ bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGrou return TRUE; if (!FuncIsActiveTask(ScriptMovement_MoveObjects)) ScriptMovement_StartMoveObjects(50); + if (gSaveBlock2Ptr->follower.inProgress && objEventId == gSaveBlock2Ptr->follower.objId) + { + gSaveBlock2Ptr->follower.comeOutDoorStairs = 0; + gSaveBlock2Ptr->follower.warpEnd = 0; + #if FAST_FOLLOWERS == TRUE + FlagClear(FLAG_FOLLOWER_IN_BUILDING); + #endif + } return ScriptMovement_TryAddNewMovement(GetMoveObjectsTaskId(), objEventId, movementScript); } From 3322391b952a2504d008fe5d58540092dabf4a82 Mon Sep 17 00:00:00 2001 From: SuppaiNeko Date: Sun, 2 Apr 2023 17:04:09 -0700 Subject: [PATCH 66/71] Added extra content to Littleroot --- data/event_scripts.s | 2 + data/layouts/LittlerootTown/map.bin | 2 +- data/layouts/OldaleTown/map.bin | 2 +- data/layouts/Route101/map.bin | 2 +- data/layouts/Route101ext/border.bin | 1 + data/layouts/Route101ext/map.bin | 2 + data/layouts/Route103/map.bin | 2 +- data/layouts/layouts.json | 10 +++++ data/maps/DewfordTown/map.json | 4 +- data/maps/MauvilleCity/map.json | 4 +- data/maps/OldaleTown/map.json | 5 +++ data/maps/Route101/map.json | 9 +++- data/maps/Route101ext/map.json | 56 +++++++++++++++++++++++ data/maps/Route101ext/scripts.inc | 22 +++++++++ data/maps/Route102/map.json | 8 +++- data/maps/Route103/map.json | 9 +++- data/maps/Route105/map.json | 4 +- data/maps/Route106/map.json | 4 +- data/maps/Route133/map.json | 12 +++-- data/maps/Route134/map.json | 12 +++-- data/maps/map_groups.json | 70 +---------------------------- include/constants/layouts.h | 1 + include/constants/map_groups.h | 1 + src/data/wild_encounters.json | 55 ++++++++++++++++++++--- 24 files changed, 206 insertions(+), 93 deletions(-) create mode 100644 data/layouts/Route101ext/border.bin create mode 100644 data/layouts/Route101ext/map.bin create mode 100644 data/maps/Route101ext/map.json create mode 100644 data/maps/Route101ext/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 66877b25c..d2192e2b9 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1056,3 +1056,5 @@ Common_EventScript_LegendaryFlewAway:: .include "data/text/frontier_brain.inc" .include "data/text/save.inc" .include "data/text/birch_speech.inc" + + .include "data/maps/Route101ext/scripts.inc" diff --git a/data/layouts/LittlerootTown/map.bin b/data/layouts/LittlerootTown/map.bin index 9af76f90e..2b49652fd 100644 --- a/data/layouts/LittlerootTown/map.bin +++ b/data/layouts/LittlerootTown/map.bin @@ -1,3 +1,3 @@ -ÔÕÔÕÔÕÔÕÔÕ500ÔÕÔÕÔÕÔÕÜÝäåäåäåäç00æåäåäåÜÝÔÕ0000000000000000ÔÕäç0000000000000000æå002 2 2 2 +000000000000ÔÕÔÕÔÕÔÕ000000000000æåäåäåÜÝ000000000000000000ÔÕ000000000000000000æå002 2 2 2 20000002 2 2 2 2000000000000000000000000"20@!000000 @12#0000*:8H)400004(H9:+000000020000000020000000ð00000000ð0000000000000000000000000000000 2B2C2 2 2 220000000000000JK0000000000000000000000000,A-00000000Î1Ï1000&4I5'00000000ÖÕÎ1Ï10000200000000Î1Ï1ÜÝÔ×00000000000000ÖÕÔÕÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/OldaleTown/map.bin b/data/layouts/OldaleTown/map.bin index 28b17c441..fc4e77f22 100644 --- a/data/layouts/OldaleTown/map.bin +++ b/data/layouts/OldaleTown/map.bin @@ -1 +1 @@ -ÔÕÔÕÔÕÔÕ0Ð1Ò10ÔÕÔÕÔÕÔÕÜÝÜÝäåäçÐ1Ù1Ú10æåäåÜÝÜÝÔÕÔÕ0000Ø1Ù1Ù1Ò10000ÔÕÔÕÜÝäç0000Ø1Ù1Ù1Ú10(0)0)0…åÜÝÔÕ00l2m2m2n2Ø1Ù1Ù1Ú1001230ÔÕÜÝ00tuuvØ1Ù1Ù1Ù1Ò189:;0ÜÝÔÕ00|}~Ø1Ù1Ù1Ù1Ú1`ABC0ÔÕÜÝ00„‡�†Ø1á1á1á1Ù1Ñ1Ñ1Ñ1Ñ1Ò1æåÔÕ000Ð1Ñ1Ñ1Ú1000Ø1Ù1Ù1Ù1Ù1Ù1Ò10äç0Ð1Ñ1Ù1Ù1Ù1Ú100Ø1Ù1Ù1Ù1Ù1Ù1â1020Ð1Ù1Ù1Ù1Ù1Ù1Ú1000Ø1Ù1Ù1Ù1Ù1â1002Ï1à1á1á1Ù1Ù1Ù1Ù1Ñ1Ñ1Ñ1Ù1Ù1Ù1á1â10Î1Ï1Ô×000à1á1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ú1000ÖÕÜÝ000H0I0‚2ƒ2Ù1Ù1Ù1Ù1á1l2m2m2n2ÜÝÔÕ000PQRSÙ1Ù1Ù1Ú10tuuvÔÕÜÝÎ1Ï10XYZ[Ø1Ù1Ù1Ú10|}~ÜÝÔÕÔ×0`abcØ1Ù1Ù1â10„‡�†ÔÕÜÝÜÝ000Ð1Ñ1Ù1Ù1Ú10000Î1Ï1ÜÝÔÕÔÕ000Ø1Ù1Ù1Ù1Ú10000ÖÕÔÕÜÝÜÝÎ1Ï1Î1x2Ù1Ù1Ù1â1Î1Ï1Î1Ï1ÜÝÜÝ \ No newline at end of file +ÔÕÔÕÔÕÔÕ0Ð1Ò10ÔÕÔÕÔÕÔÕÜÝÜÝäåäçÐ1Ù1Ú10æåäåÜÝÜÝÔÕÔÕ0000Ø1Ù1Ù1Ò10000ÔÕÔÕÜÝäç0000Ø1Ù1Ù1Ú10(0)0)0…åÜÝÔÕ00l2m2m2n2Ø1Ù1Ù1Ú1001230ÔÕÜÝ00tuuvØ1Ù1Ù1Ù1Ò189:;0ÜÝÔÕ00|}~Ø1Ù1Ù1Ù1Ú1`ABC0ÔÕÜÝ00„‡�†Ø1á1á1á1Ù1Ñ1Ñ1Ñ1Ñ1Ò1æåÔÕ000Ð1Ñ1Ñ1Ú1000Ø1Ù1Ù1Ù1Ù1Ù1Ñ1Ñ1äç0Ð1Ñ1Ù1Ù1Ù1Ú100Ø1Ù1Ù1Ù1Ù1Ù1Ù1Ù120Ð1Ù1Ù1Ù1Ù1Ù1Ú1000Ø1Ù1Ù1Ù1Ù1á1á1á12Ï1à1á1á1Ù1Ù1Ù1Ù1Ñ1Ñ1Ñ1Ù1Ù1Ù1á1â10Î1Ï1Ô×000à1á1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ú1000ÖÕÜÝ000H0I0‚2ƒ2Ù1Ù1Ù1Ù1á1l2m2m2n2ÜÝÔÕ000PQRSÙ1Ù1Ù1Ú10tuuvÔÕÜÝÎ1Ï10XYZ[Ø1Ù1Ù1Ú10|}~ÜÝÔÕÔ×0`abcØ1Ù1Ù1â10„‡�†ÔÕÜÝÜÝ000Ð1Ñ1Ù1Ù1Ú10000Î1Ï1ÜÝÔÕÔÕ000Ø1Ù1Ù1Ù1Ú10000ÖÕÔÕÜÝÜÝÎ1Ï1Î1x2Ù1Ù1Ù1â1Î1Ï1Î1Ï1ÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/Route101/map.bin b/data/layouts/Route101/map.bin index fab3a1d69..fefc96cff 100644 --- a/data/layouts/Route101/map.bin +++ b/data/layouts/Route101/map.bin @@ -1 +1 @@ -ÔÕÔÕÔÕÔר1Ù1Ú10ÖÕÔÕÔÕÔÕÜÝäåäåäçà1á1â10æåäåÜÝÜÝÔÕ 0 0 000000000 0 0 0ÔÕÔÕäç5 0 0 0 0000000 0 0 0 0äåÜÝ 0 0 0 0 0 0000000 0 0 0 0 0 0ÔÕÆ1Ç1 0 0 0000000Î1Ç1 0 0 0 0 0æåÔ× 0 000n‡‡‡ÖÖׯ1Ç1 0 0000ÜÝÕ‡‡‡Ž0000ÜÝÔ×00Ð1Ò10ÔÕÎ1Ï10000000ÔÕäç0Ð1Ù1Ú10ÜÝÔ×00Ð1Ñ1Ò10æç 0 00à1Ù1Ù1Ò1ÔÕÜÝ0Ð1Ñ1Ù1Ù1Ú10 0 0 0 0 00à1Ù1Ú1ÜÝÔÕ0à1Ù1Ù1Ù1â10 0 0 0 0 0 00à1â1ÔÕäç00à1á1â100 0 0 0 0 0 0000äç 0 00000Õ‡‡ÖÆ1Ç1 0 0 00Î1Ï1 0 0 0 0 00000000Ö× 0 000ÖÕÆ1Ç1 0 0 0 0000000ÜÝÆ1Ç1Î1Ï1ÜÝÔ× 0 0 0 0000000ÔÕÔÕÔÕÔÕÜÝÆ1Ç1Æ1Ï1Î1Ï1Î1Ï100ÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔ×00ÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝ00ÜÝÜÝÜÝÜÝ \ No newline at end of file +ÔÕÔÕÔÕÔר1Ù1Ú10ÖÕÔÕÔÕÔÕÜÝäåäåäçà1á1â10æåäåÜÝÜÝÔÕ 0 0 000000000 0 0 0ÔÕÔÕäç5 0 0 0 0000000 0 0 0 0äåÜÝ 0 0 0 0 0 0000000 0 0 0 0 0 0ÔÕÆ1Ç1 0 0 0000000Î1Ç1 0 0 0 0 0æåÔ× 0 000n‡‡‡ÖÖׯ1Ç1 0 0000ÜÝÕ‡‡‡Ž0000ÜÝÔ×00Ð1Ò10ÔÕÎ1Ï10000000ÔÕäç0Ð1Ù1Ú10ÜÝÔ×00Ð1Ñ1Ò10æç 0 00à1Ù1Ù1Ñ1ÔÕÜÝ0Ð1Ñ1Ù1Ù1Ú10 0 0 0 0 00à1Ù1Ù1ÜÝÔÕ0à1Ù1Ù1Ù1â10 0 0 0 0 0 00à1á1ÔÕäç00à1á1â100 0 0 0 0 0 0000äç 0 00000Õ‡‡ÖÆ1Ç1 0 0 00Î1Ï1 0 0 0 0 00000000Ö× 0 000ÖÕÆ1Ç1 0 0 0 0000000ÜÝÆ1Ç1Î1Ï1ÜÝÔ× 0 0 0 0000000ÔÕÔÕÔÕÔÕæç 0 0 00000000ÜÝÜÝÜÝÜÝ000000000000ÔÕÔÕÔÕÔÕ000000000000ÜÝÜÝÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/Route101ext/border.bin b/data/layouts/Route101ext/border.bin new file mode 100644 index 000000000..03bcafef1 --- /dev/null +++ b/data/layouts/Route101ext/border.bin @@ -0,0 +1 @@ +ÔÕÜÝ \ No newline at end of file diff --git a/data/layouts/Route101ext/map.bin b/data/layouts/Route101ext/map.bin new file mode 100644 index 000000000..ea32bd624 --- /dev/null +++ b/data/layouts/Route101ext/map.bin @@ -0,0 +1,2 @@ +€‰˜pPQPQppppppppp’%%�pppXYXYppppppppp’ÆÆ�pppppppppppppppp’ÆÆ�ppppppppppppp    +00000000�ppp’00Î1Ï1Î1Ï10000�ppp’0  0Ö×Ö×000à0�pp’0 !"0æçæç000000000B00000Ñ1Ñ1Ñ1Ñ1Ò10000008IIJ00000Ù1Ù1á1Ù1Ù1Ò100000@0000 0000á1â10Ø1Ù1Ú100000@000 0à 000000à1Ù1Ú100000@0000 0000È0É0Ê00Ø1Ù1Ñ1Ò1000@Î1Ï10 00000Ø0Ñ0Ñ0Ê0à1á1Ù1Ù1Ò100@Ö× 0 000000Ø0Ñ0Ò000à1Ù1Ù1Ò10@æç 00000000Ð0Ñ0É0Ê00à1Ù1Ù1Ò1@ 0 0 00000000Ø0Ñ0Ñ0Ò000à1Ù1Ú1HIIII0III000Ð0Ñ0Ò0000à1Ù1Ò100000000000Ð0Ñ0Ú00000Ø1Ú1000Î1Ï10000È0É0Ñ0Ò000000Ø1Ú1000Ö×0000Ð0Ñ0Ù0Ú000000Ø1Ú1000æç0000Ð0Ò0000000Ð1Ù1Ú1000 0 0 000È0Ñ0Ò00000Ð1Ñ1Ù1Ù1â1000 00 0Î1Ï1Ø0Ù0Ú0000Ð1Ù1Ù1á1â1000000 0Ö×0Î1Ï100Ð1Ù1Ù1â1000000000æç0Ö×00Ø1Ù1Ú10000000000000æç00Ø1Ù1Ú100000000000000000Ø1Ù1Ú10000000000Î1Ï1Ð1Ò10Ð1Ñ1Ù1Ù1â10000000000Ö×Ù1Ù1Ñ1Ù1á1á1â100000000000æçÙ1Ù1Ù1â100000000000Î1Ï1000á1á1â1000000000000Ö×0Î1Ï1000000000000000æç0Ö×000000000000000000æç0000000000000000000000000000000000000000 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0Æ1Ç1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0ÔÕ 0 0 0 0 0 0 0 00 00 0 0 0 00 0 0äå 00Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ï1 \ No newline at end of file diff --git a/data/layouts/Route103/map.bin b/data/layouts/Route103/map.bin index 44518dc92..0c56bb12e 100644 --- a/data/layouts/Route103/map.bin +++ b/data/layouts/Route103/map.bin @@ -1 +1 @@ -ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�pppppppppp’sq{‰sqqqt}qsqqqqqqqqqqqqqqqqqqqqqqqt|}qqquÜÝÜÝäåäåäåäåäåäåÜÝÜÝÜÝÜÝÜÝ�uvpppppppp’{|‰s{‰qquqq{‰qqqqt|||||||‰qqqqqqqqt}qqqqquÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÔÕÔÕÔÕ�}~ppppppppš‰�s{‰sqquqt‰{||||}qt©©©‰q{||||||||}qqqqqquÜÝäç000Ð1Ñ1Ñ1Ò1 0 0 0 0 0æåÜÝÜÝÜÝäç�ppppppuvPQpp’{‰s{‰ququ{©©|||||}qqq{|©©©©©©©©©©||||||}ÔÕ 0 0000à1á1á1â100 0 0 0 0 0ÔÕÔÕÔÕˆ‰˜puvppp}~XYppš�s{‰{|}t}t‘‘‘‘‘‘‘‘yyy‘ÎÎÎΑ‘‘‘ÎÎÎÎÎÎÎÎÎÎÜÝ 0 0 0 0Õ4‡4‡4‡4‡4‡4‡4o4 0 0 0 0æåÜÝÜÝdQpp}~uvPQpppuvPesq{|||}qr0000000K1L5L5L5M1ÇÇ0000ÇÇÇÇÇÇÇÇÔÕ 0 0 0 0 0 0 00000�4‡4‡4‡4‡4‡4Ö4ÔÕÔÕlYuvpp}~XYppp}~Xm{|‘‘‘‘‘yz0ÆÆÆÆÆÆ1111100000Ç0ÇÇÜÝ 0 0 0 0 0 0 000000000000æåäç�p}~ppppppppppppš‰‰Š000000ÆÆÆÆÆ000000Ç00000000ÇÇÇÇ0Ç0ÔÕ 0 0 0 0 0 0 00000Ð1Ñ1Ñ1Ñ1Ò10000ˆ‰˜ppppppppppppppppppš‰‰‰‰Š000ÆÆÇÇ00000000000000Ç00ÜÝÆ1Ç1 0 0 0 0 00040à1á1Ù1Ù1Ù1Ò1000�ppppppppppppppppppppppppp’0000ÇÇÇ0Ç0Ç00000Ç0000111ÔÕÔ× 0 0 0 00000000à1á1á1â1000�ppppppppppppppppppppppppp’011110ÇÇÇ000000000011!1!1)1ÜÝÜÝ 0 0 0 0000000 0 0 0 00000�ppppppppppppppppppppppppp’0(1)1!1!1111100000011!1!1)1*10ÔÕÔÕÕ4‡4‡4‡4‡4‡4‡4‡4‡4Ö4 0 0 0 0 00000Ô0yppppppppppppppppppppppp’000(1)1)1)1!1!1111111111111111!1!1)1*100ÇÜÝÜÝ0000000 0 0 0 0 0 0 0Æ1Ï1Î1Ï1Î1Ï1dQPQppppppppppuvppppp“““’0000000(1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1*10000ÇÔÕÔÕ0000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô×lYXYuvppppPQPQ}~puvpxÆÆÆ000ÇÇÇ0Ç000000000000000000000ÇÇÇÜÝÜÝÎ1Ï1000000Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜ݈2‰2yp}~uvPQXYXYpPQ}~PeÆÇÇÇÇÇÇÇÇÇÇÇ00000000Ç0ÇÇÇÇÔÕÔÕÔ×000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×�ppp}~XYpppppXYppXmÆÆÆÆÇÇÇÇÇÇÇÇ000000000ÇÇÇÇÇÜÝÜÝÜÝÎ1Ï10000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�uvppppppppppppppp’ÆÆÆÆÇÇÇÇÇÇÇÇÇ0Ç0Ç0Ç0Ç0Ç0Ç0Ç0Ç0ÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�}~ppppppppppppppx0ÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�pppppppppppppppp’ÆÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�pppppppppppppppp’ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�pppppppppppppppp’ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ \ No newline at end of file +ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�pppppppppp’sq{‰sqqqt}qsqqqqqqqqqqqqqqqqqqqqqqqt|}qqquÜÝÜÝäåäåäåäåäåäåÜÝÜÝÜÝÜÝÜÝ�uvpppppppp’{|‰s{‰qquqq{‰qqqqt|||||||‰qqqqqqqqt}qqqqquÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÔÕÔÕÔÕ�}~ppppppppš‰�s{‰sqquqt‰{||||}qt©©©‰q{||||||||}qqqqqquÜÝäç000Ð1Ñ1Ñ1Ò1 0 0 0 0 0æåÜÝÜÝÜÝäç�ppppppuvPQpp’{‰s{‰ququ{©©|||||}qqq{|©©©©©©©©©©||||||}ÔÕ 0 0000à1á1á1â100 0 0 0 0 0ÔÕÔÕÔÕˆ‰˜puvppp}~XYppš�s{‰{|}t}t‘‘‘‘‘‘‘‘yyy‘ÎÎÎΑ‘‘‘ÎÎÎÎÎÎÎÎÎÎÜÝ 0 0 0 0Õ4‡4‡4‡4‡4‡4‡4o4 0 0 0 0æåÜÝÜÝdQpp}~uvPQpppuvPesq{|||}qr0000000K1L5L5L5M1ÇÇ0000ÇÇÇÇÇÇÇÇÔÕ 0 0 0 0 0 0 00000�4‡4‡4‡4‡4‡4Ö4ÔÕÔÕlYuvpp}~XYppp}~Xm{|‘‘‘‘‘yz0ÆÆÆÆÆÆ1111100000Ç0ÇÇÜÝ 0 0 0 0 0 0 000000000000æåäç�p}~ppppppppppppš‰‰Š000000ÆÆÆÆÆ000000Ç00000000ÇÇÇÇ0Ç0ÔÕ 0 0 0 0 0 0 00000Ð1Ñ1Ñ1Ñ1Ò10000ˆ‰˜ppppppppppppppppppš‰‰‰‰Š000ÆÆÇÇ00000000000000Ç00ÜÝÆ1Ç1 0 0 0 0 00040à1á1Ù1Ù1Ù1Ò1000�ppppppppppppppppppppppppp’0000ÇÇÇ0Ç0Ç00000Ç0000111ÔÕÔ× 0 0 0 00000000à1á1á1â1000�ppppppppppppppppppppppppp’011110ÇÇÇ000000000011!1!1)1ÜÝÜÝ 0 0 0 0000000 0 0 0 00000�ppppppppppppppppppppppppp’0(1)1!1!1111100000011!1!1)1*10ÔÕÔÕÕ4‡4‡4‡4‡4‡4‡4‡4‡4Ö4 0 0 0 0 00000Ô0yppppppppppppppppppppppp’000(1)1)1)1!1!1111111111111111!1!1)1*100ÇÜÝÜÝ0000000 0 0 0 0 0 0 0Æ1Ï1Î1Ï1Î1Ï1dQPQppppppppppuvppppp“““’0000000(1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1*10000ÇÔÕÔÕ0000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô×lYXYuvppppPQPQ}~puvpxÆÆÆ000ÇÇÇ0Ç000000000000000000000ÇÇÇÜÝÜÝÎ1Ï1000000Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜ݈2‰2yp}~uvPQXYXYpPQ}~PeÆÇÇÇÇÇÇÇÇÇÇÇ00000000Ç0ÇÇÇÇÔÕÔÕÔ×000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×�ppp}~XYpppppXYppXmÆÆÆÆÇÇÇÇÇÇÇÇ000000000ÇÇÇÇÇÜÝÜÝÜÝÎ1Ï10000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�uvppppppppppppppp’ÆÆÆÆÇÇÇÇÇÇÇÇÇ0Ç0Ç0Ç0Ç0Ç0Ç0Ç0Ç0ÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�}~ppppppppppppppx0ÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝæåæå�pppppppppppppppp’ÆÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕ0000�pppppppppppppppp’ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝæå€‰‰‰˜pppppppppppp’00è1é1ôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõ \ No newline at end of file diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index b8d841f72..57a0da130 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -4410,6 +4410,16 @@ "secondary_tileset": "gTileset_MysteryEventsHouse", "border_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F_StairsUnblocked/border.bin", "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F_StairsUnblocked/map.bin" + }, + { + "id": "LAYOUT_ROUTE101EXT", + "name": "Route101ext_Layout", + "width": 20, + "height": 40, + "primary_tileset": "gTileset_General", + "secondary_tileset": "gTileset_Petalburg", + "border_filepath": "data/layouts/Route101ext/border.bin", + "blockdata_filepath": "data/layouts/Route101ext/map.bin" } ] } diff --git a/data/maps/DewfordTown/map.json b/data/maps/DewfordTown/map.json index f073a7436..73aea8287 100644 --- a/data/maps/DewfordTown/map.json +++ b/data/maps/DewfordTown/map.json @@ -128,7 +128,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/MauvilleCity/map.json b/data/maps/MauvilleCity/map.json index f4da4222b..eda6ec7fe 100644 --- a/data/maps/MauvilleCity/map.json +++ b/data/maps/MauvilleCity/map.json @@ -230,7 +230,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/OldaleTown/map.json b/data/maps/OldaleTown/map.json index 302ef5e9d..e8c63172c 100644 --- a/data/maps/OldaleTown/map.json +++ b/data/maps/OldaleTown/map.json @@ -27,6 +27,11 @@ "map": "MAP_ROUTE102", "offset": 0, "direction": "left" + }, + { + "map": "MAP_ROUTE101EXT", + "offset": 0, + "direction": "right" } ], "object_events": [ diff --git a/data/maps/Route101/map.json b/data/maps/Route101/map.json index 1abb23030..6e3623a87 100644 --- a/data/maps/Route101/map.json +++ b/data/maps/Route101/map.json @@ -22,6 +22,11 @@ "map": "MAP_LITTLEROOT_TOWN", "offset": 0, "direction": "down" + }, + { + "map": "MAP_ROUTE101EXT", + "offset": -20, + "direction": "right" } ], "object_events": [ @@ -104,7 +109,9 @@ "flag": "FLAG_HIDE_ROUTE_101_BOY" } ], - "warp_events": [], + "warp_events": [ + + ], "coord_events": [ { "type": "trigger", diff --git a/data/maps/Route101ext/map.json b/data/maps/Route101ext/map.json new file mode 100644 index 000000000..3f10f201c --- /dev/null +++ b/data/maps/Route101ext/map.json @@ -0,0 +1,56 @@ +{ + "id": "MAP_ROUTE101EXT", + "name": "Route101ext", + "layout": "LAYOUT_ROUTE101EXT", + "music": "MUS_ROUTE101", + "region_map_section": "MAPSEC_ROUTE_101", + "requires_flash": false, + "weather": "WEATHER_SUNNY", + "map_type": "MAP_TYPE_ROUTE", + "allow_cycling": true, + "allow_escaping": false, + "allow_running": true, + "show_map_name": true, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": [ + { + "map": "MAP_ROUTE101", + "offset": 20, + "direction": "left" + }, + { + "map": "MAP_OLDALE_TOWN", + "offset": 0, + "direction": "left" + }, + { + "map": "MAP_ROUTE103", + "offset": -20, + "direction": "up" + } + ], + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER", + "x": 12, + "y": 17, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route101ext_EventScript_BugCatcher", + "flag": "0" + } + ], + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/Route101ext/scripts.inc b/data/maps/Route101ext/scripts.inc new file mode 100644 index 000000000..f78003411 --- /dev/null +++ b/data/maps/Route101ext/scripts.inc @@ -0,0 +1,22 @@ +Route101ext_MapScripts:: + .byte 0 + +Route101ext_EventScript_BugCatcher:: + msgbox Route101ext_Text_StrangeHouse, MSGBOX_NPC + end + +Route101ext_EventScript_FatMan:: + msgbox Route101ext_Text_DailyWalk, MSGBOX_NPC + end + +Route101ext_Text_DailyWalk: + .string "Usually there are many paths\n" + .string "between towns.\p" + .string "I like taking the long way\n" + .string "between OLDALE and LITTLEROOT.$" + +Route101ext_Text_StrangeHouse: + .string "See that house over there?\n" + .string "It has been empty for years.\p" + .string "I wonder if there are any\n" + .string "spooky Bug POKéMON in there.$" diff --git a/data/maps/Route102/map.json b/data/maps/Route102/map.json index 68e3549db..8c8771b5e 100644 --- a/data/maps/Route102/map.json +++ b/data/maps/Route102/map.json @@ -143,8 +143,12 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], + "warp_events": [ + + ], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route103/map.json b/data/maps/Route103/map.json index 9bc6fed67..b980b84cb 100644 --- a/data/maps/Route103/map.json +++ b/data/maps/Route103/map.json @@ -22,6 +22,11 @@ "map": "MAP_ROUTE110", "offset": -60, "direction": "right" + }, + { + "map": "MAP_ROUTE101EXT", + "offset": 20, + "direction": "down" } ], "object_events": [ @@ -295,7 +300,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route105/map.json b/data/maps/Route105/map.json index ae9bb6a5a..88ca381a6 100644 --- a/data/maps/Route105/map.json +++ b/data/maps/Route105/map.json @@ -144,7 +144,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "hidden_item", diff --git a/data/maps/Route106/map.json b/data/maps/Route106/map.json index 5a0a38dc9..8c99ac285 100644 --- a/data/maps/Route106/map.json +++ b/data/maps/Route106/map.json @@ -100,7 +100,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "hidden_item", diff --git a/data/maps/Route133/map.json b/data/maps/Route133/map.json index 106546ef5..37b6651c1 100644 --- a/data/maps/Route133/map.json +++ b/data/maps/Route133/map.json @@ -156,7 +156,13 @@ "flag": "FLAG_ITEM_ROUTE_133_MAX_REVIVE" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route134/map.json b/data/maps/Route134/map.json index f516f16de..a294aa2c4 100644 --- a/data/maps/Route134/map.json +++ b/data/maps/Route134/map.json @@ -169,7 +169,13 @@ "flag": "FLAG_ITEM_ROUTE_134_STAR_PIECE" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index ebef431b3..6bfedaf5f 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -92,7 +92,8 @@ "Underwater_Route128", "Underwater_Route129", "Underwater_Route105", - "Underwater_Route125" + "Underwater_Route125", + "Route101ext" ], "gMapGroup_IndoorLittleroot": [ "LittlerootTown_BrendansHouse_1F", @@ -620,72 +621,5 @@ ], "gMapGroup_IndoorRoute124": [ "Route124_DivingTreasureHuntersHouse" - ], - "connections_include_order": [ - "LittlerootTown", - "OldaleTown", - "DewfordTown", - "LavaridgeTown", - "FallarborTown", - "VerdanturfTown", - "PacifidlogTown", - "PetalburgCity", - "SlateportCity", - "MauvilleCity", - "RustboroCity", - "FortreeCity", - "LilycoveCity", - "MossdeepCity", - "SootopolisCity", - "EverGrandeCity", - "Route101", - "Route102", - "Route103", - "Route104", - "Route105", - "Route106", - "Route107", - "Route108", - "Route109", - "Route110", - "Route111", - "Route112", - "Route113", - "Route114", - "Route115", - "Route116", - "Route117", - "Route118", - "Route119", - "Route120", - "Route121", - "Route122", - "Route123", - "Route124", - "Route125", - "Route126", - "Route127", - "Route128", - "Route129", - "Route130", - "Route131", - "Route132", - "Route133", - "Route134", - "Underwater_Route105", - "Underwater_Route124", - "Underwater_Route125", - "Underwater_Route126", - "Underwater_Route127", - "Underwater_Route128", - "Underwater_Route129", - "SafariZone_Northwest", - "SafariZone_North", - "SafariZone_Southwest", - "SafariZone_South", - "SafariZone_Northeast", - "SafariZone_Southeast", - "BattleFrontier_OutsideWest", - "BattleFrontier_OutsideEast" ] } diff --git a/include/constants/layouts.h b/include/constants/layouts.h index db92c9594..ee80c01be 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -446,5 +446,6 @@ #define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F 439 #define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F 440 #define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F_STAIRS_UNBLOCKED 441 +#define LAYOUT_ROUTE101EXT 442 #endif // GUARD_CONSTANTS_LAYOUTS_H diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index eaf40a525..f60397531 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -63,6 +63,7 @@ #define MAP_UNDERWATER_ROUTE129 (54 | (0 << 8)) #define MAP_UNDERWATER_ROUTE105 (55 | (0 << 8)) #define MAP_UNDERWATER_ROUTE125 (56 | (0 << 8)) +#define MAP_ROUTE101EXT (57 | (0 << 8)) // gMapGroup_IndoorLittleroot #define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8)) diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 0b30c0f65..053c4c095 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] + "old_rod": [ + 0, + 1 + ], + "good_rod": [ + 2, + 3, + 4 + ], + "super_rod": [ + 5, + 6, + 7, + 8, + 9 + ] } } ], From 72c9413737c01f065d9b0267f5ffbccaebddefd1 Mon Sep 17 00:00:00 2001 From: SuppaiNeko Date: Sun, 2 Apr 2023 22:29:52 -0700 Subject: [PATCH 67/71] Added several more locations --- data/event_scripts.s | 10 + data/layouts/LittlerootTown/map.bin | 2 +- data/layouts/NewMap1/border.bin | 1 + data/layouts/NewMap1/map.bin | 1 + data/layouts/PetalburgCity/map.bin | 4 +- .../border.bin | 1 + .../PetalburgCity_OldResearchBuilding/map.bin | Bin 0 -> 1400 bytes data/layouts/PetalburgWoods/map.bin | 2 +- data/layouts/PetalburgWoodsExt/border.bin | 1 + data/layouts/PetalburgWoodsExt/map.bin | 1 + data/layouts/Petalburgext/border.bin | 1 + data/layouts/Petalburgext/map.bin | 1 + data/layouts/Route101/map.bin | 2 +- data/layouts/Route101ext/map.bin | 2 +- data/layouts/Route102/map.bin | 2 +- data/layouts/Route102ext/border.bin | 1 + data/layouts/Route102ext/map.bin | 1 + data/layouts/Route103/map.bin | 2 +- data/layouts/layouts.json | 50 +++ .../map.json | 10 +- .../AbandonedShip_HiddenFloorRooms/map.json | 6 +- data/maps/AlteringCave/map.json | 14 +- data/maps/AncientTomb/map.json | 6 +- data/maps/AquaHideout_UnusedRubyMap1/map.json | 18 +- data/maps/AquaHideout_UnusedRubyMap2/map.json | 18 +- data/maps/ArtisanCave_1F/map.json | 10 +- data/maps/CaveOfOrigin_1F/map.json | 14 +- data/maps/CaveOfOrigin_B1F/map.json | 10 +- .../map.json | 14 +- data/maps/FallarborTown/map.json | 4 +- data/maps/FortreeCity/map.json | 4 +- data/maps/IslandCave/map.json | 6 +- data/maps/JaggedPass/map.json | 2 +- data/maps/LilycoveCity/map.json | 4 +- data/maps/LittlerootTown/map.json | 13 + .../map.json | 6 +- .../scripts.inc | 8 +- data/maps/MeteorFalls_1F_1R/map.json | 2 +- data/maps/MeteorFalls_B1F_1R/map.json | 14 +- data/maps/MeteorFalls_StevensCave/map.json | 10 +- data/maps/MtChimney/map.json | 6 +- data/maps/MtPyre_Exterior/map.json | 2 +- data/maps/MtPyre_Summit/map.json | 2 +- data/maps/NewMap1/map.json | 28 ++ data/maps/NewMap1/scripts.inc | 2 + data/maps/OldaleTown/map.json | 4 +- data/maps/PetalburgCity/map.json | 7 +- data/maps/PetalburgCity_Gym/map.json | 6 +- data/maps/PetalburgCity_House1/map.json | 10 +- data/maps/PetalburgCity_House2/map.json | 10 +- data/maps/PetalburgCity_Mart/map.json | 10 +- .../map.json | 28 ++ .../scripts.inc | 2 + .../PetalburgCity_PokemonCenter_1F/map.json | 10 +- .../PetalburgCity_PokemonCenter_2F/map.json | 10 +- data/maps/PetalburgCity_WallysHouse/map.json | 10 +- data/maps/PetalburgWoods/map.json | 8 +- data/maps/PetalburgWoodsExt/map.json | 72 ++++ data/maps/PetalburgWoodsExt/scripts.inc | 2 + data/maps/Petalburgext/map.json | 34 ++ data/maps/Petalburgext/scripts.inc | 2 + data/maps/Route101/map.json | 4 +- data/maps/Route101ext/map.json | 54 ++- data/maps/Route102/map.json | 5 + data/maps/Route102ext/map.json | 59 +++ data/maps/Route102ext/scripts.inc | 2 + data/maps/Route103/map.json | 42 +- data/maps/Route107/map.json | 12 +- data/maps/Route108/map.json | 4 +- data/maps/Route109/map.json | 4 +- data/maps/Route112/map.json | 4 +- data/maps/Route114/map.json | 4 +- data/maps/Route115/map.json | 4 +- data/maps/Route117/map.json | 4 +- data/maps/Route122/map.json | 12 +- data/maps/Route124/map.json | 4 +- data/maps/Route125/map.json | 4 +- data/maps/Route126/map.json | 12 +- data/maps/Route127/map.json | 8 +- data/maps/Route128/map.json | 8 +- data/maps/Route129/map.json | 12 +- data/maps/Route130/map.json | 12 +- data/maps/Route131/map.json | 8 +- data/maps/Route132/map.json | 12 +- data/maps/ShoalCave_LowTideLowerRoom/map.json | 6 +- data/maps/Underwater_Route105/map.json | 12 +- data/maps/VerdanturfTown/map.json | 4 +- data/maps/VictoryRoad_1F/map.json | 2 +- data/maps/VictoryRoad_B1F/map.json | 10 +- data/maps/map_groups.json | 9 +- data/scripts/item_ball_scripts.inc | 12 + include/constants/flags.h | 6 +- include/constants/layouts.h | 5 + include/constants/map_groups.h | 121 +++--- src/data/wild_encounters.json | 373 +++++++++++++++++- 95 files changed, 1187 insertions(+), 210 deletions(-) create mode 100644 data/layouts/NewMap1/border.bin create mode 100644 data/layouts/NewMap1/map.bin create mode 100644 data/layouts/PetalburgCity_OldResearchBuilding/border.bin create mode 100644 data/layouts/PetalburgCity_OldResearchBuilding/map.bin create mode 100644 data/layouts/PetalburgWoodsExt/border.bin create mode 100644 data/layouts/PetalburgWoodsExt/map.bin create mode 100644 data/layouts/Petalburgext/border.bin create mode 100644 data/layouts/Petalburgext/map.bin create mode 100644 data/layouts/Route102ext/border.bin create mode 100644 data/layouts/Route102ext/map.bin create mode 100644 data/maps/NewMap1/map.json create mode 100644 data/maps/NewMap1/scripts.inc create mode 100644 data/maps/PetalburgCity_OldResearchBuilding/map.json create mode 100644 data/maps/PetalburgCity_OldResearchBuilding/scripts.inc create mode 100644 data/maps/PetalburgWoodsExt/map.json create mode 100644 data/maps/PetalburgWoodsExt/scripts.inc create mode 100644 data/maps/Petalburgext/map.json create mode 100644 data/maps/Petalburgext/scripts.inc create mode 100644 data/maps/Route102ext/map.json create mode 100644 data/maps/Route102ext/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index d2192e2b9..0d7e38a63 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1058,3 +1058,13 @@ Common_EventScript_LegendaryFlewAway:: .include "data/text/birch_speech.inc" .include "data/maps/Route101ext/scripts.inc" + + .include "data/maps/Route102ext/scripts.inc" + + .include "data/maps/NewMap1/scripts.inc" + + .include "data/maps/Petalburgext/scripts.inc" + + .include "data/maps/PetalburgCity_OldResearchBuilding/scripts.inc" + + .include "data/maps/PetalburgWoodsExt/scripts.inc" diff --git a/data/layouts/LittlerootTown/map.bin b/data/layouts/LittlerootTown/map.bin index 2b49652fd..3d836fded 100644 --- a/data/layouts/LittlerootTown/map.bin +++ b/data/layouts/LittlerootTown/map.bin @@ -1,3 +1,3 @@ -000000000000ÔÕÔÕÔÕÔÕ000000000000æåäåäåÜÝ000000000000000000ÔÕ000000000000000000æå002 2 2 2 +ÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕÔÕÔÕæåæåæåæåæå00æåäåäåÜÝ000000000000000000ÔÕ000000000000000000æå002 2 2 2 20000002 2 2 2 2000000000000000000000000"20@!000000 @12#0000*:8H)400004(H9:+000000020000000020000000ð00000000ð0000000000000000000000000000000 2B2C2 2 2 220000000000000JK0000000000000000000000000,A-00000000Î1Ï1000&4I5'00000000ÖÕÎ1Ï10000200000000Î1Ï1ÜÝÔ×00000000000000ÖÕÔÕÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/NewMap1/border.bin b/data/layouts/NewMap1/border.bin new file mode 100644 index 000000000..03bcafef1 --- /dev/null +++ b/data/layouts/NewMap1/border.bin @@ -0,0 +1 @@ +ÔÕÜÝ \ No newline at end of file diff --git a/data/layouts/NewMap1/map.bin b/data/layouts/NewMap1/map.bin new file mode 100644 index 000000000..3ac590beb --- /dev/null +++ b/data/layouts/NewMap1/map.bin @@ -0,0 +1 @@ +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/data/layouts/PetalburgCity/map.bin b/data/layouts/PetalburgCity/map.bin index 35f0172ca..3bb1a4f1b 100644 --- a/data/layouts/PetalburgCity/map.bin +++ b/data/layouts/PetalburgCity/map.bin @@ -1,4 +1,4 @@ ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝUNMNMNVòóòóòóòóåäåäåäåÜÝÜÝÔÕÔÕD    FÔÕÔÕÔÕÔÕ000°±±²ÔÕÔÕÜÝÜÝLLæ5åäåäåäç5°±±À¡¡ºÜÝÜÝÔÕÔÕT  L?ª««««¬?¸¡¡¡¡¡ºÔÕÔÕÜÝÜÝ0 !"LL²³³³³´L¸¡¡¡¡¡ºÜÝÜÝÔÕÔÕ001100LL¸¹º³»¼L¸¡¡¡¡¡ºÔÕÔÕÜÝÜÝ00 1"100LLÀÁÂÅÃÄL¸¡¡¡¡¡ºÜÝÜÝÔÕÔÕ00 1"10<2fLÈ1É1ÊÍËÌ1L¸¡¡¡¡¡ºÔÕÔÕÜÝä5ç500 1"1deT0011101T00000P2Q2XYÜÝÔÕ0000 1"1000000 1!1"110000000123ÔÕæ5ç50000 1"1000000 1!1"1000000089:;ÜÝ001111!1!1111111!1!1"10000000`ABCÔÕÎ1Ï1(1)1)1)1)1R2S2)1)1)1)1)1)1!1"100H0I0J0K000110ÜÝÔ×°±±±²Ö×000000 1"100PQRS00 1"10ÔÕÜݸ¡¡¡ºÜÝ000000 1"100XYZ[00 1"10æ5åÔÕ¸¡¡¡ºÔÕ0 0 0 -000 1"10`abc00 1"1000Üݸ¡¡¡ºÜÝ00 1!111111111!1!1100ÔÕ¸¡¡¡ºÔÕ 00 1!1)1)1)1)1)1)1)1)1)1)1*100Üݸ¡¡¡ºæ5ç5 !"00 1"1000000000Î1Ï1Î1Ï1ÔÕ¸¡¡¡º00020000 1"10<2=2=2=2=2=2=2>2ÖÕÔÕÜݸ¡¡¡º00000000 1"10D   -EEFÜÝÜÝÔÕ¸¡¡¡º00000000 1"10LLÔÕÔÕÜݸ¡¡¡Â±±±±²Î1Ï10 1"10T LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÖ×0 1"100 !"00LÔÕÔÕÜݸ¡¡¡¡¡¡¡¡ºÜÝ0 1!111111000LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÔÕ0(1)1)1)1)1)1*1000TÔÕÔÕÜݸ¡¡þÿþÿþÿºÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝÔÕ000üýüýüý0ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÎ1Ï1Î1óòóòóòÏ1ÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝ \ No newline at end of file +000 1"10`abc00 1"1000Üݸ¡¡¡ºÜÝ00 1!111111111!1!1100ÔÕ¸¡¡¡ºÔÕ 00 1!1)1)1)1)1)1)1)1)1)1)1*100Üݸ¡Å¡ºæ5ç5 !"00 1"1000000000Î1Ï1Î1Ï1ÔÕ¸¡¡¡º00020000 1"10<2=2=2=2=2=2=2>2ÖÕÔÕÜݸ¡¡¡º00000000 1"10D   +EEFÜÝÜÝÔÕ¸¡¡¡º00000000 1"10LLÔÕÔÕÜݸ¡¡¡Â±±±±²Î1Ï10 1"10T LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÖ×0 1"100 !"00LÔÕÔÕÜݸ¡¡¡¡Å¡¡¡ºÜÝ0 1!111111000LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÔÕ0 1!1)1)1)1)1*1000TÔÕÔÕÜݸ¡¡¡¡¡¡þÿºÜÝ0 1"10Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝÔÕ¸¡¡¡¡¡Ëüý0ÔÕ0 "0ÔÕÔÕÔÕÔÕÔÕÔÕÜݸ¡¡¡¡¡ºæòÏ1ÜÝ0 "0UNMNMNMNÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/PetalburgCity_OldResearchBuilding/border.bin b/data/layouts/PetalburgCity_OldResearchBuilding/border.bin new file mode 100644 index 000000000..19d906679 --- /dev/null +++ b/data/layouts/PetalburgCity_OldResearchBuilding/border.bin @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/layouts/PetalburgCity_OldResearchBuilding/map.bin b/data/layouts/PetalburgCity_OldResearchBuilding/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..ac9d268dadce3bd37dd1ed24fb263e7db883487d GIT binary patch literal 1400 zcmd6kxe5X?5Qewf!^W%d0&h`75q{QYOFMmpZEalASX%n%=8}YD35Y(trW@?ORO}>)Q!CxldFpucGweZd=5j7 z;}rNG7Eh`qwS-K?1 Date: Mon, 3 Apr 2023 18:56:23 -0700 Subject: [PATCH 68/71] Changed maps. Added Trainer. Changed max trainer limit to 1000 --- data/event_scripts.s | 2 + data/layouts/PetalburgCity/map.bin | 2 +- data/layouts/PetalburgWoodsExt/map.bin | 2 +- data/layouts/Petalburgext/map.bin | 2 +- data/layouts/Route101ext/map.bin | 2 +- data/layouts/Route102ext/map.bin | 2 +- data/layouts/Route103/map.bin | 2 +- data/layouts/Route103ext/border.bin | 1 + data/layouts/Route103ext/map.bin | 1 + data/layouts/layouts.json | 10 +++ .../scripts.inc | 2 +- data/maps/PetalburgWoodsExt/map.json | 16 ++-- data/maps/Route101ext/map.json | 15 +++- data/maps/Route101ext/scripts.inc | 18 ++++ data/maps/Route102ext/map.json | 13 +++ data/maps/Route102ext/scripts.inc | 17 ++++ data/maps/Route103/map.json | 46 +++++----- data/maps/Route103/scripts.inc | 11 +++ data/maps/Route103ext/map.json | 47 +++++++++++ data/maps/Route103ext/scripts.inc | 2 + data/maps/map_groups.json | 3 +- include/constants/flags.h | 2 +- include/constants/layouts.h | 1 + include/constants/map_groups.h | 1 + include/constants/opponents.h | 5 +- src/data/trainer_parties.h | 13 +++ src/data/trainers.h | 13 +++ src/data/wild_encounters.json | 84 +++++++++---------- 28 files changed, 252 insertions(+), 83 deletions(-) create mode 100644 data/layouts/Route103ext/border.bin create mode 100644 data/layouts/Route103ext/map.bin create mode 100644 data/maps/Route103ext/map.json create mode 100644 data/maps/Route103ext/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 0d7e38a63..57d031846 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1068,3 +1068,5 @@ Common_EventScript_LegendaryFlewAway:: .include "data/maps/PetalburgCity_OldResearchBuilding/scripts.inc" .include "data/maps/PetalburgWoodsExt/scripts.inc" + + .include "data/maps/Route103ext/scripts.inc" diff --git a/data/layouts/PetalburgCity/map.bin b/data/layouts/PetalburgCity/map.bin index 3bb1a4f1b..f6fb70058 100644 --- a/data/layouts/PetalburgCity/map.bin +++ b/data/layouts/PetalburgCity/map.bin @@ -1,4 +1,4 @@ ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝUNMNMNVòóòóòóòóåäåäåäåÜÝÜÝÔÕÔÕD    FÔÕÔÕÔÕÔÕ000°±±²ÔÕÔÕÜÝÜÝLLæ5åäåäåäç5°±±À¡¡ºÜÝÜÝÔÕÔÕT  L?ª««««¬?¸¡¡¡¡¡ºÔÕÔÕÜÝÜÝ0 !"LL²³³³³´L¸¡¡¡¡¡ºÜÝÜÝÔÕÔÕ001100LL¸¹º³»¼L¸¡¡¡¡¡ºÔÕÔÕÜÝÜÝ00 1"100LLÀÁÂÅÃÄL¸¡¡¡¡¡ºÜÝÜÝÔÕÔÕ00 1"10<2fLÈ1É1ÊÍËÌ1L¸¡¡¡¡¡ºÔÕÔÕÜÝä5ç500 1"1deT0011101T00000P2Q2XYÜÝÔÕ0000 1"1000000 1!1"110000000123ÔÕæ5ç50000 1"1000000 1!1"1000000089:;ÜÝ001111!1!1111111!1!1"10000000`ABCÔÕÎ1Ï1(1)1)1)1)1R2S2)1)1)1)1)1)1!1"100H0I0J0K000110ÜÝÔ×°±±±²Ö×000000 1"100PQRS00 1"10ÔÕÜݸ¡¡¡ºÜÝ000000 1"100XYZ[00 1"10æ5åÔÕ¸¡¡¡ºÔÕ0 0 0 000 1"10`abc00 1"1000Üݸ¡¡¡ºÜÝ00 1!111111111!1!1100ÔÕ¸¡¡¡ºÔÕ 00 1!1)1)1)1)1)1)1)1)1)1)1*100Üݸ¡Å¡ºæ5ç5 !"00 1"1000000000Î1Ï1Î1Ï1ÔÕ¸¡¡¡º00020000 1"10<2=2=2=2=2=2=2>2ÖÕÔÕÜݸ¡¡¡º00000000 1"10D   -EEFÜÝÜÝÔÕ¸¡¡¡º00000000 1"10LLÔÕÔÕÜݸ¡¡¡Â±±±±²Î1Ï10 1"10T LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÖ×0 1"100 !"00LÔÕÔÕÜݸ¡¡¡¡Å¡¡¡ºÜÝ0 1!111111000LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÔÕ0 1!1)1)1)1)1*1000TÔÕÔÕÜݸ¡¡¡¡¡¡þÿºÜÝ0 1"10Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝÔÕ¸¡¡¡¡¡Ëüý0ÔÕ0 "0ÔÕÔÕÔÕÔÕÔÕÔÕÜݸ¡¡¡¡¡ºæòÏ1ÜÝ0 "0UNMNMNMNÜÝÜÝ \ No newline at end of file +EEFÜÝÜÝÔÕ¸¡¡¡º00000000 1"10LLÔÕÔÕÜݸ¡¡¡Â±±±±²Î1Ï10 1"10T LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÖ×0 1"100 !"00LÔÕÔÕÜݸ¡¡¡¡Å¡¡¡ºÜÝ0 1!111111000LÜÝÜÝÔÕ¸¡¡¡¡¡¡¡¡ºÔÕ0 1!1)1)1)1)1*1000TÔÕÔÕÜݸ¡¡¡¡¡¡þÿºÜÝ0 1"10Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝÔÕ¸¡¡¡¡¡Ëüý0ÔÕ0 1"10ÔÕÔÕÔÕÔÕÔÕÔÕÜݸ¡¡¡¡¡ºæòÏ1ÜÝ0 1"10UNMNMNMNÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/PetalburgWoodsExt/map.bin b/data/layouts/PetalburgWoodsExt/map.bin index 12b916ce2..011b5f63a 100644 --- a/data/layouts/PetalburgWoodsExt/map.bin +++ b/data/layouts/PetalburgWoodsExt/map.bin @@ -1 +1 @@ -Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×äåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåÞßÞßäòóòóòóòóòóåäåäåäåäòóåäòóòóòóå°±±±±±±±±±±±²00000 0 0 0 0000000°±±±²000000 0 0 0 0 0000000000000Ö×Ö×0Ö×Ö×Ö×Ö×Ö×00Î1Ï10000Ö×00Ö×Ö×Ö×0¸¡¡¡¡¡¡¡¡¡¡¡Â±²0 0 0 0 0 000000°±À¡¡¡Â±±±²000000 0 0 00000000Î1Ï10ÞßÞß0æòóçæçæçæç00Ö×000 0æç 0 0æçæçæç0¸¡¡¡¡¡¡¡¡¡¡¡¡¡º000000°±±±±À¡¡¡¡¡¡¡¡¡Â±±±²000000000à000Ö×0Ö×Ö×00Ö×000000000æç0000 0 0 0 0 0 0 0 0 0Î1Ï1¸¡¡¡¡¡¡¡¡¡¡¡¡¡Â±±±±±±À¡¡¡¡¡¡¡¡¡¡¡Å¡¡¡¡¡¡Â±²0022200000æç0Þßæç0Î1óçÈ0É0É0Ê000000000000 0 0 0 0 0 0 0 0 0Ö׸¡¡¡¡¡¡¡Å¡¡¡¡Å¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0Ì¡¡¡¡¡¡¡¡¡¡Â±±±±±±±²00000Ö×000Ö×0Ø0Ù0Ñ0Ñ0É0É0É0É0É0Ê00000Î1Ï10 0 0 0 0 0 00Þ߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë000¸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Â²00°²æç000æç000Ø0Ñ0Ñ0Å0Ñ0Ù0Ñ0Ò00000Ö1×10 0 0 0 0 000Ö׸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë000000Î1Ï1¸¡¡¡¡ËÌ¡¡¡¡¡¡¡¡¡¡¡¡º00¸Â²000X2Z200000Ø0Ù0Ù0Ú00Ð0Ñ0Ê0000æ1ç1 0 0 0 0 00Î1Ï1Þ߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Å¡¡º000000Ö×0Ì¡¡¡ºÌ¡¡¡¡¡¡¡¡¡¡¡Â±±À¡º000`2a2Y2Y2Y2Y2Y2Y2Y2Z200Ø0Ñ0Ò0000 0 0000000Ö×Ö×0000Ì¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0000000æç0¸¡¡ºÌ¡¡¡¡¡Å¡¡¡¡¡¡¡¡¡º0`2a2a2a2a20a2a2a2Y2Y2Z2Ð0Ñ0Ê02000000000æçÞß 0 000¸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë00È0É0É0É0É0Ê00000Ì¡º¸¡¡¡¡¡¡¡¡Ë000Ì¡¡º0&'`2a2a2a2a2a2i2a2a2a2b2Ø0Ñ0Ò0000000000000Ö× 0 000¸¡¡¡¡¡¡Å¡¡¡¡¡¡Ë0000Ð0Ñ0Å0Ñ0Ñ0Ò00Î1Ï100̱±±±À¡Ë0000Ì¡º0000000000h2i2i2i2i2a2b20h2a2a2a2Z2Ð0Ò0022000000000Þß 0 0000Ì¡¡¡¡¡¡¡¡¡¡¡¡º0000Ð0Ñ0Ñ0Ñ0Ù0Ú00Ö×0K0Ì¡¡¡¡¡¡º 0 0 0 0000000000000000000h2j200h2a2a2a2b2Ð0Ñ0Ê000000002000Ö× 0 000000Ì¡¡¡¡¡¡¡Ë0000000Ø0Ù0Ù0Ú0000æç0S0¸¡¡¡¡¡Ë0 0 0 0 001111111111110000000Î1Ï10h2a2a2b2Ø0Ñ0Ò00020000000Þß 0 000000000000000200X2Y2Z200000000000000̺0000 0 01111!1!1)1)1)1)1)1)1)1)1!1!11100000Ö×00h2a2b20Ø0Ú0000�2‚2ƒ22000Ö× 0 000110022222222 000h2a2a200000001111111…ò‡ò111111!1!1)1)1)1*100000000(1)1!1!111100æç000h2j2000000pqr00000æç 0 000 1!1100X2Y2Y2i2KKÈ0Ê0000h2i22200111!1!1)1)1)1)1*1�ò�ò(1)1)1)1)1)1)1*1000000000Î1Ï1000(1)1)1!1!1110000000000000000001111$0 0 0 00(1!1!111h2i2i2i2SSØ0Ú0000000011!1!1)1)1*100000¸Â²0 0000 0 0000000000Ö1×100Î1Ï100(1)1!1!1111100000000000011!1!1)1*1$000000(1)1!1!1111100000000011!1!1)1*10X2Y2Y2Y2Z2000̲0000Î1Ï1220002220æ1ç100Ö1×10000(1)1)1)1!1!1111111100111!1!1)1*100 0000000(1)1)1)1!1!1111111111!1!1)1*1K0X2a2a2i2X2b2000¸¡º0000Ö1×1000000000 0000æ1ç1X2Y2Y2Z20000(1)1)1)1)1)1)1!1!111!1!1)1)1*10000 000000000È0Ê0(1)1)1)1)1)1)1)1)1)1)1)1*100S0h2i2j20h2j2000¸¡º0 000æ1ç1°±±±²000 0 0 0 0000h2i20a2Z20000000000(1)1)1)1)1*100000000 000000 00È0Ñ0Ú00000000000000000000È0É0É0Ê000K¸¡Â² 0 0 0 0 0¸¡¡¡Â²00000000000h2a2a2Y2Z2000000000000000002200000000È0Ñ0Ò000000È0Ê00000 0 0 00X2Y2Z20È0Ñ0Ñ0Ñ0Ò000S¸¡¡Â±² 0 0°À¡¡¡¡Â²00°±±²00000h2i20a2Z20000000000000 0X2Y2Z200000000 0Ð0Ñ0Ñ0É0É0Ê000Ð0Ñ0É0É0Ê00Î1Ï1X2Y2a20Î1Ï1Ð0Ñ0Ñ0Ñ0Ú0000¸¡¡¡¡Â±±À¡¡¡¡¡¡Â±±À¡¡¡±²00000h2i2j20Î1Ï1È0É0É0Ê000000 0 0 0X2a2a2j202000000È0Ñ0Ñ0Ù0Ù0Ù0Ú0 00Ø0Ù0Ù0Ñ0Ñ0Ê0Ö×h2i2i2j2Öר0Ù0Ù0Ú00X2Z200Ì¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0000̱±±±²0000Ö×Ð0Ñ0Ù0Ú0000 0X2Y20000j2000000000Ø0Ù0Ú000000 0 0 00Ø0Ù0Ú0æç0000æç00000h2j20000Ì¡¡¡¡¡¡¡¡¡¡Ë0000 00000000̲000æçØ0Ú00000 0X2a2a222220000 0Ï1Î1Ï1Î1 0Î1Ï1Î10Î1Ï1Î1Ï1 0Ï1Æ1 0 0Ï1Î1Ï1Î1Ï10000Î1Ï1Æ1Ç1Æ1Ç1Æ1Ç1Î1Ï1Î1Ï10000Ì¡¡Ë00000000000 000000000Æ1Ç1Æ1Ç1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï10Ï1Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0X2Z20Ö×Ö×Ö×Ö×Ö×Ö×0000¸¡¡º0 0 000 0002220 0°0²000000Ö×Ö×Ö×Ö×Ö×Ö×0000Ö×Ö×Ö×ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß0`2b20ÞßÞßÞßÞßÞßÞ߯1Ç1Î1Ï1¸¡¡Â²0 0Æ1Ç1Î1Ï1Î1Ï1Î1Ï1Î1Ï10¸0Â0²00000æçæçæçÞßÞßÞß0000ÞßÞßÞßÖ×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0`2b20Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö׸¡¡¡º0Ö×Ö×Ö×Ö×Ö×00Ì0º00000000000Ö×Ö×Ö×00Ö×Ö×Ö×Ö×ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß0`2a2Z2æçÞßÞßÞßÞßÞßÞßÞ߸ÅÅź0ÞßÞßÞßÞßæç00Ì0Â0²00°0±0±0²00000ÞßÞßÞß00ÞßÞßÞßÞßÖ×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0`2a2b200Ö×Ö×Ö×Ö×Ö×Ö×Ö׸¡¡¡º2Ö×Ö×Ö×Ö×0000Ì0¡0Â0±0À0¡0¡0Â0±0²000Ö×Ö×Ö×000000Ö×Ö׿çæçæçæçæçæçÞßÞßÞßÞßÞßÞß0`2a2b200æçæçæçæçæçÞßÞß000000ÞßÞßÞßÞß000°0À0¡0¡0¡0¡0¡0¡0¡0¡0º000ÞßÞßÞß000000ÞßÞß 0 0 0 0 0 0 0 0 0 0 00Ö×Ö×Ö×Ö×Ö×Ö×X2a2i2j2001111100000Ö×Ö×X2Y2Y2Y2Z20Ö×Ö×Ö×Ö×00°0À0¡0¡0¡0¡0¡0Ë0000000Ö×Ö×Ö×*2*2*2*200Ö×Ö× 0È0É0Ê0 0 0 0È0É0É0Ê00æçæçÞßæçæçæçh2j20000 1 1 1 1 100000ÞßÞ߯1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞß0°0À0¡0¡0¡0¡0¡0¡0º0 00Î1Ï1Î1Ï1ÞßÞßÞßS2T2S2T200ÞßÞß 0Ð0Ñ0Ñ0É0É0É0Ñ0Ñ0Ù0Ú000000Ö×000000000Ð1Ñ1Ò111111Ð1Ñ1Ò1 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×000000000000Ö×Ö×Ö×Ö×000000000000 0Ð0Ñ0Ñ0Å0Ñ0Ñ0Ñ0Ú0X2Y2Z20K200Þß00Î1Ï1KK00Ð1Ù1Ù1Ù1Ñ1Ñ1Ñ1Ñ1Ñ1Ù1á1â1 0 0ÞßÞßÞßÞßÞßÞßÞßÞßÞßÎ1Ï1Æ1Ç1Î1Ï1Î1Ï1Æ1Ç1Æ1Ç1ÞßÞßÞßÞß002200222200 0Ø0Ù0Ñ0Ñ0Ñ0Ù0Ú0 0h2i2j22S200Ö×00Ö×SS00Ø1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ú1 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×020 000 0 0 0 000Î1Ï1Î1Ø0Ù0Ú0Î1Ï1Î1Ï1Î1Ï10X2Y2Z2æç00ÞßÖ×0Ð1Ù1Ù1Ù1Ù1Ù1Ù1Ù1á1á1â1 0 0 0 0ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßæçæçæçæçæçæç000000 0 00000Ö×Ö×Ö×Ö×Ö×Ö×0`2a2j20000Ö×Þß0à1Ù1Ù1Ù1Ù1Ù1Ù1Ú1 0 0 0 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×00 0 0000000222222 002222ÞßÞßÞßÞßÞßÞßÎ1h2j2Ï12222ÞßÖ×Î1Ï1à1Ù1Ù1Ù1Ù1Ù1â1 0 0 0Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß000 0222&'000Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö׿çÖ×0à1á1á1á1â1 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×22 0 0 00 000222Ö×Ö×Ö×Ö×Ö×Ö×ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß00Þ߯1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞ߯1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞß \ No newline at end of file +Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×äåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåäåÞßÞßäòóòóòóòóòóåäåäåäåäòóåäòóòóòóå°±±±±±±±±±±±²00000 0 0 0 0000000°±±±²000000 0 0 0 0 0000000000000Ö×Ö×0Ö×Ö×Ö×Ö×Ö×00Î1Ï10000Ö×00Ö×Ö×Ö×0¸¡¡¡¡¡¡¡¡¡¡¡Â±²0 0 0 0 0 000000°±À¡¡¡Â±±±²000000 0 0 00000000Î1Ï10ÞßÞß0æòóçæçæçæç00Ö×000 0æç 0 0æçæçæç0¸¡¡¡¡¡¡¡¡¡¡¡¡¡º000000°±±±±À¡¡¡¡¡¡¡¡¡Â±±±²000000000à00Ö×0Ö×Ö×00Ö×000000000æç0000 0 0 0 0 0 0 0 0 0Î1Ï1¸¡¡¡¡¡¡¡¡¡¡¡¡¡Â±±±±±±À¡¡¡¡¡¡¡¡¡¡¡Å¡¡¡¡¡¡Â±²0022200000æç0Þßæç0Î1óçÈ0É0É0Ê000000000000 0 0 0 0 0 0 0 0 0Ö׸¡¡¡¡¡¡¡Å¡¡¡¡Å¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0Ì¡¡¡¡¡¡¡¡¡¡Â±±±±±±±²00000Ö×000Ö×0Ø0Ù0Ñ0Ñ0É0É0É0É0É0Ê00000Î1Ï10 0 0 0 0 0 00Þ߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë000¸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Â²00°²æç000æç000Ø0Ñ0Ñ0Å0Ñ0Ù0Ñ0Ò00000Ö×0 0 0 0 0 000Ö׸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë000000Î1Ï1¸¡¡¡¡ËÌ¡¡¡¡¡¡¡¡¡¡¡¡º00¸Â²000X2Z200000Ø0Ù0Ù0Ú00Ð0Ñ0Ê0000æç 0 0 0 0 00Î1Ï1Þ߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Å¡¡º000000Ö×0Ì¡¡¡ºÌ¡¡¡¡¡¡¡¡¡¡¡Â±±À¡º000`2a2Y2Y2Y2Y2Y2Y2Y2Z200Ø0Ñ0Ò0000 0 0000000Ö×Ö×0000Ì¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0000000æç0¸¡¡ºÌ¡¡¡¡¡Å¡¡¡¡¡¡¡¡¡º0`2a2a2a2a20a2a2a2Y2Y2Z2Ð0Ñ0Ê02000000000æçÞß 0 000¸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë00È0É0É0É0É0Ê00000Ì¡º¸¡¡¡¡¡¡¡¡Ë000Ì¡¡º0&'`2a2a2a2a2a2i2a2a2a2b2Ø0Ñ0Ò0000000000000Ö× 0 000¸¡¡¡¡¡¡Å¡¡¡¡¡¡Ë0000Ð0Ñ0Å0Ñ0Ñ0Ò00Î1Ï100̱±±±À¡Ë0000Ì¡º0000000000h2i2i2i2i2a2b20h2a2a2a2Z2Ð0Ò0022000000000Þß 0 0000Ì¡¡¡¡¡¡¡¡¡¡¡¡º0000Ð0Ñ0Ñ0Ñ0Ù0Ú00Ö×0K0Ì¡¡¡¡¡¡º 0 0 0 0000000000000000000h2j200h2a2a2a2b2Ð0Ñ0Ê000000002000Ö× 0 000000Ì¡¡¡¡¡¡¡Ë0000000Ø0Ù0Ù0Ú0000æç0S0¸¡¡¡¡¡Ë0 0 0 0 001111111111110000000Î1Ï10h2a2a2b2Ø0Ñ0Ò00020000000Þß 0 000000000000000200X2Y2Z200000000000000̺0000 0 01111!1!1)1)1)1)1)1)1)1)1!1!11100000Ö×00h2a2b20Ø0Ú0000�2‚2ƒ22000Ö× 0 000110022222222 000h2a2a20000000111111…B‡B11111!1!1)1)1)1*100000000(1)1!1!111100æç000h2j2000000pqr00000æç 0 000 1!1100X2Y2Y2i2KKÈ0Ê0000h2i22200111!1!1)1)1)1)1*�B�B()1)1)1)1)1)1*1000000000Î1Ï1000(1)1)1!1!11100000000000000Ð1Ò1Î1Ï100000 0 0 00(1!1!111h2i2i2i2SSØ0Ú0000000011!1!1)1)1*100000¸Â²0 0000 0 0000000000Ö×00Î1Ï100(1)1!1!111110000000000à1â1Ö×0000000000(1)1!1!1111100000000011!1!1)1*10X2Y2Y2Y2Z2000̲0000Î1Ï1220002220æç00Ö×0000(1)1)1)1!1!1111100Î1Ï1Î1Ï1Î1Ï1æç0000 0000000(1)1)1)1!1!1111111111!1!1)1*1K0X2a2a2i2X2b2000¸¡º0000Ö×000000000 0000æçX2Y2Y2Z20000(1)1)1)1)1*1Î1Ï1Ö×Ö×Ö×00Ð1Ò100 000000000È0Ê0(1)1)1)1)1)1)1)1)1)1)1)1*100S0h2i2j20h2j2000¸¡º0 000æç°±±±²000 0 0 0 0000h2i20a2Z2000000000Ö×ÞßÞßÞßÐ1Ñ1Ù1Ú1000 000000 00È0Ñ0Ú00000000000000000000È0É0É0Ê000K¸¡Â² 0 0 0 0 0¸¡¡¡Â²00000000000h2a2a2Y2Z200000æçÖ×Ö×Ö×à1á1á1â12200000000È0Ñ0Ò000000È0Ê00000 0 0 00X2Y2Z20È0Ñ0Ñ0Ñ0Ò000S¸¡¡Â±² 0 0°À¡¡¡¡Â²00°±±²00000h2i20a2Z2000000ÞßÞßæç0 0X2Y2Z200000000 0Ð0Ñ0Ñ0É0É0Ê000Ð0Ñ0É0É0Ê00Î1Ï1X2Y2a20Î1Ï1Ð0Ñ0Ñ0Ñ0Ú0000¸¡¡¡¡Â±±À¡¡¡¡¡¡Â±±À¡¡¡±²00000h2i2j20Î1Ï1È0É0É0Ê00Ö×Ö× 0 0 0X2a2a2j202Î1Ï10000È0Ñ0Ñ0Ù0Ù0Ù0Ú0 00Ø0Ù0Ù0Ñ0Ñ0Ê0Ö×h2i2i2j2Öר0Ù0Ù0Ú00X2Z200Ì¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ë0000̱±±±²0000Ö×Ð0Ñ0Ù0Ú00ÞßæçY20000j2000Ö×0000Ø0Ù0Ú000000 0 0 00Ø0Ù0Ú0æç0000æç00000h2j20000Ì¡¡¡¡¡¡¡¡¡¡Ë0000 00000000̲000æçØ0Ú0000Ö×X2a2a2222200Ð1Ò1ÞßÎ1Ï1Î1Ç1Î1Ï1Î10Î1Ï1Î1Ï1Æ1Ï1Æ1Ç1 0Ï1Î1Ï1Î1Ï10000Î1Ï1Æ1Ç1Æ1Ç1Æ1Ç1Î1Ï1Î1Ï10000Ì¡¡Ë00000000000 000000000Æ1Ç1Æ1Ç1Î1Ï1Î1Ï1Î1óòÏ10000Î1Ï1Î1Ï1Ø1Ú1Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0X2Z20Ö×Ö×Ö×Ö×Ö×Ö×0000¸¡¡º0 0 000 0002220 0°²0000Ö×Ö×Ö×Ö×Ö×Ö×0022Ö×Ö×à1â1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß0`2b20ÞßÞßÞßÞßÞßÞ߯1Ç1Î1Ï1¸¡¡Â² 0Æ1Ç1Î1Ï1Î1Ï1Î1Ï1Î1Ï10¸Â²000æçæçæçÞßÞßÞß00Æ1Ç1ÞßÞß$0$0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0`2b20Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö׸¡¡¡º0Ö×Ö×Ö×Ö×Ö×00̺0000000000Ö×Ö×Ö×00Ö×Ö×Ö×Ð1Ò1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß0`2a2Z2æçÞßÞßÞßÞßÞßÞßÞ߸ÅÅź0ÞßÞßÞßÞßæç00̲0°±±²0000ÞßÞßÞß00ÞßÞßÞßà1â1Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×0`2a2b200Ö×Ö×Ö×Ö×Ö×Ö×Ö׸¡¡¡º2Ö×Ö×Ö×Ö×0000̡±À¡¡Â±²00Ö×Ö×Ö×000000Ö×I1I1æçæçæçæçæçæçÞßÞßÞßÞßÞßÞß0`2a2b200æçæçæçæçæçÞßÞß000000ÞßÞßÞßÞß000°À¡¡¡¡¡¡¡¡º00ÞßÞßÞß000000ÞßÎ1Ï1 0 0 0 0 0 0 0 0 0 0 00Ö×Ö×Ö×Ö×Ö×Ö×X2a2i2j2001111100000Ö×Ö×X2Y2Y2Y2Z20Ö×Ö×Ö×Ö×00°À¡¡¡¡¡Ë000000Ö×Ö×Ö×****00Ö×Ö× 0È0É0Ê0 0 0 0È0É0É0Ê00æçæçÞßæçæçæçh2j20000 1 1 1 1 100000ÞßÞ߯1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞß0°À¡¡¡¡¡¡º 00Î1Ï1Î1Ï1ÞßÞßÞßSTST00ÞßÞß 0Ð0Ñ0Ñ0É0É0É0Ñ0Ñ0Ù0Ú000000Ö×000000000Ð1Ñ1Ò111111Ð1Ñ1Ò1 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×000000000000Ö×Ö×Ö×Ö×000000000000 0Ð0Ñ0Ñ0Å0Ñ0Ñ0Ñ0Ú0X2Y2Z20K00Þß00Î1Ï1KK00Ð1Ù1Ù1Ù1Ñ1Ñ1Ñ1Ñ1Ñ1Ù1á1â1 0 0ÞßÞßÞßÞßÞßÞßÞßÞßÞßÎ1Ï1Æ1Ç1Î1Ï1Î1Ï1Æ1Ç1Æ1Ç1ÞßÞßÞßÞß002200222200 0Ø0Ù0Ñ0Ñ0Ñ0Ù0Ú0 0h2i2j22S00Ö×00Ö×SS00Ø1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ù1Ú1 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×020 000 0 0 0 000Î1Ï1Î1Ø0Ù0Ú0Î1Ï1Î1Ï1Î1Ï10X2Y2Z2æç00ÞßÖ×0Ð1Ù1Ù1Ù1Ù1Ù1Ù1Ù1á1á1â1 0 0 0 0ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßæçæçæçæçæçæç000000 0 00000Ö×Ö×Ö×Ö×Ö×Ö×0`2a2j20000Ö×Þß0à1Ù1Ù1Ù1Ù1Ù1Ù1Ú1 0 0 0 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×00 0 0000000222222 002222ÞßÞßÞßÞßÞßÞßÎ1Ï1Î1Ï12222ÞßÖ×Î1Ï1à1Ù1Ù1Ù1Ù1Ù1â1 0 0 0Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß000 0222&'000Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö׿çÖ×0à1á1á1á1â1 0 0 0 0Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×22 0 0 00 000222Ö×Ö×Ö×Ö×Ö×Ö×ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞß00Þ߯1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞßÞ߯1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1ÞßÞßÞßÞßÞßÞß \ No newline at end of file diff --git a/data/layouts/Petalburgext/map.bin b/data/layouts/Petalburgext/map.bin index bd40eb6ea..182c71def 100644 --- a/data/layouts/Petalburgext/map.bin +++ b/data/layouts/Petalburgext/map.bin @@ -1 +1 @@ -Ö1×1Ö5×Ö1×1Ö5×Ö1×1Ö5׸0¡0¡0¡0¡0¡0Â0²0Ö1×1Ö5×I1 1"1I1L2 2B2C2 2B2C22Ö1×1Ö5×Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0º0Þ1ß1Þ1ß10 1"10L2JKJKÞ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0˜0™0š0¡0¡0º0Ö1×1Ö1×10 1"10L2Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0 0q0¢0¡0¡0º0Þ1ß1Þ1ß10 1"10L2,A-Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¨0©0ª0¡0¡0º0Ö1×1Ö1×1I1 1"1I1T2&4I5'Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0º0Þ1ß1Þ1ß10 1!11100Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¡0¡0¡0Å0¡0º0Ö1×1Ö1×10(1)1)1)1)1)1)1)1*100Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0º0æ5åæ5å000000000000Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¡0¡0¡0¡0¡0º00000000000000000Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0º0000000000000Î1Ï1Î1Ï1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¡0¡0¡0¡0¡0º0000000000000Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0Â0±0±0±0±0±0±0±0±0±0±0±0²0Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¡0Å0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0º0Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1¸0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0Å0¡0º0Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1¸0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0¡0º0Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß100è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1 \ No newline at end of file +Ö1×1Ö5×Ö1×1Ö5×Ö1×1Ö5׸¡¡¡¡¡Â²Ö×Ö×I 1"1IL 2B2C2 2B2C22Ö×1Ö5×Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß 1"1LJKJKÞß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡˜™š¡¡ºÖ×Ö× 1"1LÖ×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡ q¢¡¡ºÞßÞß 1"1L,A-Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¨©ª¡¡ºÖ×Ö×I 1"1IT&4I25'Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß0 1!1111111100Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡Å¡ºÖ×Ö×0(1)1)1)1)1)1)1)1*100Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºæåæå000000000000Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º0000000000000000Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡º000000000000Î1Ï1Î1Ï1Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º000000000000Ö×Ö×Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡Â±±±±±±±±±±±²Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡Å¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Å¡ºÞß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß00è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1 \ No newline at end of file diff --git a/data/layouts/Route101ext/map.bin b/data/layouts/Route101ext/map.bin index 0b450693f..d5f779480 100644 --- a/data/layouts/Route101ext/map.bin +++ b/data/layouts/Route101ext/map.bin @@ -1,2 +1,2 @@ €‰˜pPQPQppppppppp’%%�pppXYXYppppppppp’ÆÆ�pppppppppppppppp’ÆÆ�ppppppppppppp    -00000000�ppp’00Î1Ï1Î1Ï10000�ppp’0  0Ö×Ö×000à0�pp’0 !"0æçæç000000000B00000Ñ1Ñ1Ñ1Ñ1Ò10000008IIJ00000Ù1Ù1á1Ù1Ù1Ò100000@0000 0000á1â10Ø1Ù1Ú100000@000 0à 000000à1Ù1Ú100000@0000 0000È0É0Ê00Ø1Ù1Ñ1Ò1000@Î1Ï10 00000Ø0Ñ0Ñ0Ê0à1á1Ù1Ù1Ò100@Ö× 0 000000Ø0Ñ0Ò000à1Ù1Ù1Ò10@æç 00000000Ð0Ñ0É0Ê00à1Ù1Ù1Ò1@ 0 0 00000000Ø0Ñ0Ñ0Ò000à1Ù1Ú1HIIII0III000Ð0Ñ0Ò0000à1Ù1Ò100000000000Ð0Ñ0Ú00000Ø1Ú1000Î1Ï10000È0É0Ñ0Ò000000Ø1Ú1000Ö×0000Ð0Ñ0Ù0Ú000000Ø1Ú1000æç0000Ð0Ò0000000Ð1Ù1Ú1000 0 0 000È0Ñ0Ò00000Ð1Ñ1Ù1Ù1â1000 00 0Î1Ï1Ø0Ù0Ú0000Ð1Ù1Ù1á1â10Î1Ï1000 0Ö×0Î1Ï100Ð1Ù1Ù1â1000Ö×0000æç0Ö×00Ø1Ù1Ú10000æç0000000æç00Ø1Ù1Ú100000000000000000Ø1Ù1Ú10000000000Î1Ï1Ð1Ò10Ð1Ñ1Ù1Ù1â10000000000Ö×Ù1Ù1Ñ1Ù1á1á1â100000000000æçÙ1Ù1Ù1â100000000000Î1Ï1000á1á1â100Î1Ï100000000Ö×0Î1Ï100000Ö×00000000æç0Ö×00000æç00000Î1Ï10000æç000000000000Ö×000000000000000000æç000000 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0Æ1Ç1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0ÔÕ 0 0 0 0 0 0 0 00 00 0 0 0 00 0 0äå 00Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ï1 \ No newline at end of file +00000000�ppp’00Î1Ï1Î1Ï10000�ppp’0  0Ö×Ö×000à0�pp’0 !"0æçæç000000000B00000Ñ1Ñ1Ñ1Ñ1Ò10000008IIJ00000Ù1Ù1á1Ù1Ù1Ò100000@0000 0000á1â10Ø1Ù1Ú100&0'00@000 0à 000000à1Ù1Ú100000@0000 0000È0É0Ê00Ø1Ù1Ñ1Ò1000@Î1Ï10 00000Ø0Ñ0Ñ0Ê0à1á1Ù1Ù1Ò100@Ö× 0 000000Ø0Ñ0Ò000à1Ù1Ù1Ò10@æç 00000000Ð0Ñ0É0Ê00à1Ù1Ù1Ò1@ 0 0 00000000Ø0Ñ0Ñ0Ò000à1Ù1Ú1HIIII0III000Ð0Ñ0Ò0000à1Ù1Ò100000000000Ð0Ñ0Ú00Î1Ï10Ø1Ú1000Î1Ï10000È0É0Ñ0Ò000Ö×0Ø1Ú1000Ö×0000Ð0Ñ0Ù0Ú000æç0Ø1Ú1000æç0000Ð0Ò0000000Ð1Ù1Ú1000 0 0 000È0Ñ0Ò00000Ð1Ñ1Ù1Ù1â1000 00 0Î1Ï1Ø0Ù0Ú0000Ð1Ù1Ù1á1â10Î1Ï1000 0Ö×0Î1Ï100Ð1Ù1Ù1â1000Ö×0000æç0Ö×00Ø1Ù1Ú10000æç0000000æç00Ø1Ù1Ú100000000000000000Ø1Ù1Ú10000000000Î1Ï1Ð1Ò10Ð1Ñ1Ù1Ù1â1000 0 0 0 0 000Ö×Ù1Ù1Ñ1Ù1á1á1â1000 000 0 0 0 00æçÙ1Ù1Ù1â1000000 0 00 00Æ1Ç1000á1á1â100Î1Ï10000 0 000Ö×0Î1Ï100000Ö×00000 0 00æç0Ö×00000æç00000Î1Ç1 000 0æç00000000 0000Ö× 0 0 0 000000000 0 0 0000æç0 0 0000 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0Æ1Ç1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0ÔÕ 0 0 0 0 0 0 0 00 00 0 0 0 00 0 0äå 00Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ï1 \ No newline at end of file diff --git a/data/layouts/Route102ext/map.bin b/data/layouts/Route102ext/map.bin index 18ab03fd0..37bb391ee 100644 --- a/data/layouts/Route102ext/map.bin +++ b/data/layouts/Route102ext/map.bin @@ -1 +1 @@ -0Ð1Ñ1Ò10000ÔÕÔÕÔÕÔÕ00000à1Ù1Ù1Ñ1Ñ1Ò10ÜÝÜÝÜÝÜÝ000000à1á1á1Ù1Ú10ÔÕÔÕÔÕÔÕ000000 0 00Ø1Ù1Ò1ÜÝÜÝÜÝÜÝ00000 0 0 00Ø1Ù1â1ÔÕÔÕÔÕÔÕ00000 0 0 00à1â10æåÜÝÜÝÜÝ0000 0 0 0 0000000ÔÕÔÕÔÕƒ0„000 0 0 0 0 0 0 0000æåæåæå‹0Œ00000 0 0 0 0 0000…000000000000 0 0 0 0 0000…00Î1Ï1000h0i0j00000 0 00h0i0i0j00Ö×000x0y0z0 0 0 0 0 0Î1Ï1p0q0q0r00æå000000 00 000Ö×p0k0l0q0i0j00000000 00 0 00æåp0s0q0q0q0u0i0m0i0j0000 0 00 0000p0s0q0q0q0u0q0u0q0r0000 0 0 0 0000p0s0q0q0q0u0q0u0q0r000 0 00 0 00 0 0p0s0q0t0|0Ÿ0|0}0q0r00 0 0 0 0 0 00hi¾0s0q0u0t0§0y0yyz00 0 00 0 0ƒ0i0q0q0q0{0|0}0r020000 0 0 0Æ1Ç1Æ1‹0ð1ñ1ð1ñ1ð1ñ1ð1z0Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1 \ No newline at end of file +0Ð1Ñ1Ò10000ÔÕÔÕÔÕÔÕ00000à1Ù1Ù1Ñ1Ñ1Ò10ÜÝÜÝÜÝÜÝ0 00000à1á1á1Ù1Ú10ÔÕÔÕÔÕÔÕ 0 0 0000 0 00Ø1Ù1Ò1ÜÝÜÝÜÝÜÝ 00 0 00 0 0 00Ø1Ù1â1ÔÕÔÕÔÕÔÕ00 0 00 0 0 00à1â10æåÜÝÜÝÜÝ0000 0 0 0 0000000ÔÕÔÕÔÕƒ„00 0 0 0 0 0 0 0000æåæåæå‹Œ0000 0 0 0 0 0000…00000000000 0 0 0 0 0000…0Î1Ï1000hij0000 0 00hiij0Ö×000xyz 0 0 0 0 0Î1Ï1pqqr0æå000000 00 000Ö×pklqij0000000 00 0 00æåpsqqquimij000 0 00 0000psqqququqr000 0 0 0 0000psqqququqr00 0 00 0 00 0 0psqt|Ÿ|}qr0 0 0 0 0 0 00hi¾squt§0yyyz0 0 00 0 0ƒiqqq{|}r20000 0 0 0Æ1Ç1Æ1‹ðñðñðñðzÆ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1 \ No newline at end of file diff --git a/data/layouts/Route103/map.bin b/data/layouts/Route103/map.bin index 0778ee12b..5e5082ba5 100644 --- a/data/layouts/Route103/map.bin +++ b/data/layouts/Route103/map.bin @@ -1 +1 @@ -ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�pppppppppp’sq{‰sqqqt}qsqqqqqqqqqqqqqqqqqqqqqqqt|}qqquÜÝÜÝäåäåäåäåäåäåÜÝÜÝÜÝÜÝÜÝ�uvpppppppp’{|‰s{‰qquqq{‰qqqqt|||||||‰qqqqqqqqt}qqqqquÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÔÕÔÕÔÕ�}~ppppppppš‰�s{‰sqquqt‰{||||}qt©©©‰q{||||||||}qqqqqquÜÝäç000Ð1Ñ1Ñ1Ò1 0 0 0 0 0æåÜÝÜÝÜÝäç�ppppppuvPQpp’{‰s{‰ququ{©©|||||}qqq{|©©©©©©©©©©||||||}ÔÕ 0 0000à1á1á1â100 0 0 0 0 0ÔÕÔÕÔÕˆ‰˜puvppp}~XYppš�s{‰{|}t}t‘‘‘‘‘‘‘‘yyy‘ÎÎÎΑ‘‘‘ÎÎÎÎÎÎÎÎÎÎÜÝ 0 0 0 0Õ4‡4‡4‡4‡4‡4‡4o4 0 0 0 0æåÜÝÜÝdQpp}~uvPQpppuvPesq{|||}qr0000000K1L5L5L5M1ÇÇ0000ÇÇÇÇÇÇÇÇÔÕ 0 0 0 0 0 0 00000�4‡4‡4‡4‡4‡4Ö4ÔÕÔÕlYuvpp}~XYppp}~Xm{|‘‘‘‘‘yz0ÆÆÆÆÆÆ1111100000Ç0ÇÇæå 0 0 0 0 0 0 000000000000æåäç�p}~ppppppppppppš‰‰Š000000ÆÆÆÆÆ000000Ç00000000ÇÇÇÇ0Ç0$00 0 0 0 0 0 0 00000Ð1Ñ1Ñ1Ñ1Ò10000ˆ‰˜ppppppppppppppppppš‰‰‰‰Š000ÆÆÇÇ00000000000000Ç00$0Ï1Æ1Ç1 0 0 0 0 00040à1á1Ù1Ù1Ù1Ò1000�ppppppppppppppppppppppppp’0000ÇÇÇ0Ç0Ç00000Ç0000111Ô×Ô× 0 0 0 00000000à1á1á1â1000�ppppppppppppppppppppppppp’011110ÇÇÇ000000000011!1!1)1ÜÝÜÝ 0 0 0 0000000 0 0 0 00000�ppppppppppppppppppppppppp’0(1)1!1!1111100000011!1!1)1*10ÔÕÔÕÕ4‡4‡4‡4‡4‡4‡4‡4‡4Ö4 0 0 0 0 00000Ô0yppppppppppppppppppppppp’000(1)1)1)1!1!1111111111111111!1!1)1*100ÇÜÝÜÝ0000000 0 0 0 0 0 0 0Æ1Ï1Î1Ï1Î1Ï1dQPQppppppppppuvppppp“““’0000000(1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1*10000ÇÔÕÔÕ0000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô×lYXYuvppppPQPQ}~puvpxÆÆÆ000ÇÇÇ0Ç000000000000000000000ÇÇÇÜÝÜÝÎ1Ï1000000Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜ݈2‰2yp}~uvPQXYXYpPQ}~PeÆÇÇÇÇÇÇÇÇÇÇÇ00000000Ç0ÇÇÇÇÔÕÔÕÔ×000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×�ppp}~XYpppppXYppXmÆÆÆÆÇÇÇÇÇÇÇÇ000000000ÇÇÇÇÇÜÝÜÝÜÝÎ1Ï10000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�uvppppppppppppppp’ÆÆÆÆÇÇÇÇÇÇÇÇÇ0Ç0Ç0Ç0Ç0Ç0Ç0Ç0Ç0ÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�}~ppppppppppppppx0ÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝæåæå�pppppppppppppppp’ÆÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕ0000�pppppppppppppppp’ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝæå€‰‰‰˜pppppppppppp’00è1é1ôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõ \ No newline at end of file +ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�pppppppppp’sq{‰sqqqt}qsqqqqqqqqqqqqqqqqqqqqqqqt|}qqquÜÝÜÝäåäåäåäåäåäåÜÝÜÝÜÝÜÝÜÝ�uvpppppppp’{|‰s{‰qquqq{‰qqqqt|||||||‰qqqqqqqqt}qqqqquÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÔÕÔÕÔÕ�}~ppppppppš‰�s{‰sqquqt‰{||||}qt©©©‰q{||||||||}qqqqqquÜÝäç000Ð1Ñ1Ñ1Ò1 0 0 0 0 0æåÜÝÜÝÜÝäç�ppppppuvPQpp’{‰s{‰ququ{©©|||||}qqq{|©©©©©©©©©©||||||}ÔÕ 0 0000à1á1á1â100 0 0 0 0 0ÔÕÔÕÔÕˆ‰˜puvppp}~XYppš�s{‰{|}t}t‘‘‘‘‘‘‘‘yyy‘ÎÎÎΑ‘‘‘ÎÎÎÎÎÎÎÎÎÎÜÝ 0 0 0 0Õ4‡4‡4‡4‡4‡4‡4o4 0 0 0 0æåÜÝÜÝdQpp}~uvPQpppuvPesq{|||}qr0000000K1L5L5L5M1ÇÇ0000ÇÇÇÇÇÇÇÇÔÕ 0 0 0 0 0 0 00000�4‡4‡4‡4‡4‡4Ö4ÔÕÔÕlYuvpp}~XYppp}~Xm{|‘‘‘‘‘yz0ÆÆÆÆÆÆ1111100000Ç0ÇÇæå 0 0 0 0 0 0 000000000000æåäç�p}~ppppppppppppš‰‰Š000000ÆÆÆÆÆ000000Ç00000000ÇÇÇÇ0Ç0000 0 0 0 0 0 00000Ð1Ñ1Ñ1Ñ1Ò10000ˆ‰˜ppppppppppppppppppš‰‰‰‰Š000ÆÆÇÇ00000000000000Ç00Î1Ï1Î1Ç1 0 0 0 0 00040à1á1Ù1Ù1Ù1Ò1000�ppppppppppppppppppppppppp’0000ÇÇÇ0Ç0Ç00000Ç0000111Ô×Ô× 0 0 0 00000000à1á1á1â1000�ppppppppppppppppppppppppp’011110ÇÇÇ000000000011!1!1)1ÜÝÜÝ 0 0 0 0000000 0 0 0 00000�ppppppppppppppppppppppppp’0(1)1!1!1111100000011!1!1)1*10ÔÕÔÕÕ4‡4‡4‡4‡4‡4‡4‡4‡4Ö4 0 0 0 0 00000Ô0yppppppppppppppppppppppp’000(1)1)1)1!1!1111111111111111!1!1)1*100ÇÜÝÜÝ0000000 0 0 0 0 0 0 0Æ1Ï1Î1Ï1Î1Ï1dQPQppppppppppuvppppp“““’0000000(1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1)1*10000ÇÔÕÔÕ0000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô×lYXYuvppppPQPQ}~puvpxÆÆÆ000ÇÇÇ0Ç000000000000000000000ÇÇÇÜÝÜÝÎ1Ï1000000Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜ݈2‰2yp}~uvPQXYXYpPQ}~PeÆÇÇÇÇÇÇÇÇÇÇÇ00000000Ç0ÇÇÇÇÔÕÔÕÔ×000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×�ppp}~XYpppppXYppXmÆÆÆÆÇÇÇÇÇÇÇÇ000000000ÇÇÇÇÇÜÝÜÝÜÝÎ1Ï10000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ�uvppppppppppppppp’ÆÆÆÆÇÇÇÇÇÇÇÇÇ0Ç0Ç0Ç0Ç0Ç0Ç0Ç0Ç0ÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ�}~ppppppppppppppx0ÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝæåæå�pppppppppppppppp’ÆÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÔÕÔÕÔÕÔ5×50000ÔÕÔÕÔÕÔÕÔÕ0000�pppppppppppppppp’ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝæå€‰‰‰˜pppppppppppp’è1é1è1é1ôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõôõ \ No newline at end of file diff --git a/data/layouts/Route103ext/border.bin b/data/layouts/Route103ext/border.bin new file mode 100644 index 000000000..03bcafef1 --- /dev/null +++ b/data/layouts/Route103ext/border.bin @@ -0,0 +1 @@ +ÔÕÜÝ \ No newline at end of file diff --git a/data/layouts/Route103ext/map.bin b/data/layouts/Route103ext/map.bin new file mode 100644 index 000000000..dd68365e2 --- /dev/null +++ b/data/layouts/Route103ext/map.bin @@ -0,0 +1 @@ +ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝäåäåÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝ&'Æ1Ç1ÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕÔÕÔÕÜÝÜÝÜÝäåäå00äåÜÝÜÝäåÔÕÔÕÔÕ 0 0000000ÔÕÔÕ 0 0ÜÝÜÝÜÝ 0 0 00000 0äåÜÝ0 0ÔÕÔÕÔÕ0 0 00 0 0 0 0 0 0ÔÕ00ÜÝÜÝÜÝ00Î1Ï1Î1Ç1 0 0 0 0ÜÝ 0 0ÔÕÔÕÔÕ00ÔÕÔÕ 0 0 0 0ÔÕ 00äåäåäå00ÜÝÜÝ 0 0 0 0ÜÝ0 000 0 0 0 0 0 0ÔÕÔÕ 0 0 0 0ÔÕ 0 00 0Î1Ï1 00 0 0ÜÝÜÝÆ1Ç1 0 0äå 0 000ÔÕ 0 0 0 0ÔÕÔÕÔÕ00 0 0 0 000ÜÝÆ1Ç1Æ1Ç1ÜÝÜÝÜÝÎ1Ï1 0 00 022ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ 0 0 0 0$0$0ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ 0 0 0 0ÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕ 0 0ÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÆ1Ç1 \ No newline at end of file diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index c0079ef87..2a04b090d 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -4470,6 +4470,16 @@ "secondary_tileset": "gTileset_Fortree", "border_filepath": "data/layouts/PetalburgWoodsExt/border.bin", "blockdata_filepath": "data/layouts/PetalburgWoodsExt/map.bin" + }, + { + "id": "LAYOUT_ROUTE103EXT", + "name": "Route103ext_Layout", + "width": 20, + "height": 20, + "primary_tileset": "gTileset_General", + "secondary_tileset": "gTileset_Fortree", + "border_filepath": "data/layouts/Route103ext/border.bin", + "blockdata_filepath": "data/layouts/Route103ext/map.bin" } ] } diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index ef10ea164..ddf4ff933 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -728,7 +728,7 @@ LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou: .string "means to be a TRAINER.\p" .string "Oh! Before I forget. It's\n" .string "important foster a strong bond\l" - .string "with your POKéMON.\n" + .string "with your POKéMON.\p" .string "They will follow you on your\n" .string "adverntures if you let them.\p" .string "Why don't you try it with {STR_VAR_1}?$" diff --git a/data/maps/PetalburgWoodsExt/map.json b/data/maps/PetalburgWoodsExt/map.json index 76ce8f0c8..ed5456165 100644 --- a/data/maps/PetalburgWoodsExt/map.json +++ b/data/maps/PetalburgWoodsExt/map.json @@ -5,7 +5,7 @@ "music": "MUS_PETALBURG", "region_map_section": "MAPSEC_PETALBURG_CITY", "requires_flash": false, - "weather": "WEATHER_FOG_DIAGONAL", + "weather": "WEATHER_RAIN", "map_type": "MAP_TYPE_ROUTE", "allow_cycling": true, "allow_escaping": false, @@ -49,18 +49,18 @@ ], "warp_events": [ { - "x": 89, - "y": 17, + "x": 88, + "y": 29, "elevation": 0, - "dest_map": "MAP_ROUTE103", - "dest_warp_id": "1" + "dest_map": "MAP_ROUTE103EXT", + "dest_warp_id": "0" }, { "x": 89, - "y": 18, + "y": 29, "elevation": 0, - "dest_map": "MAP_ROUTE103", - "dest_warp_id": "2" + "dest_map": "MAP_ROUTE103EXT", + "dest_warp_id": "1" } ], "coord_events": [ diff --git a/data/maps/Route101ext/map.json b/data/maps/Route101ext/map.json index 43b941a89..2d8ef0cbf 100644 --- a/data/maps/Route101ext/map.json +++ b/data/maps/Route101ext/map.json @@ -53,7 +53,7 @@ "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "EventScript_CutTreeDown", + "script": "EventScript_CutTree", "flag": "FLAG_TEMP_11" }, { @@ -94,6 +94,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "Route101ext_EventScript_ItemPokeBall", "flag": "FLAG_ITEM_ROUTE_101ext_POTION" + }, + { + "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", + "x": 7, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_UP", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route101ext_EventScript_LonelyWoman", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/Route101ext/scripts.inc b/data/maps/Route101ext/scripts.inc index f78003411..bc819a04d 100644 --- a/data/maps/Route101ext/scripts.inc +++ b/data/maps/Route101ext/scripts.inc @@ -9,6 +9,18 @@ Route101ext_EventScript_FatMan:: msgbox Route101ext_Text_DailyWalk, MSGBOX_NPC end +Route101ext_EventScript_LonelyWoman:: + msgbox Route101ext_Text_MassiveWorld, MSGBOX_NPC + end + +Route101ext_EventScript_Sign:: + msgbox Route101ext_Text_Sign, MSGBOX_NPC + end + +Route101ext_Text_Sign: + .string "{LEFT_ARROW} OLDALE TOWN\n" + .string "{DOWN_ARROW} LITTLEROOT.$" + Route101ext_Text_DailyWalk: .string "Usually there are many paths\n" .string "between towns.\p" @@ -20,3 +32,9 @@ Route101ext_Text_StrangeHouse: .string "It has been empty for years.\p" .string "I wonder if there are any\n" .string "spooky Bug POKéMON in there.$" + +Route101ext_Text_MassiveWorld: + .string "The world just seems to get\n" + .string "larger and larger.\p" + .string "There must be a lot we have\n" + .string "yet to discover.$" diff --git a/data/maps/Route102ext/map.json b/data/maps/Route102ext/map.json index 460579ed9..44702c18d 100644 --- a/data/maps/Route102ext/map.json +++ b/data/maps/Route102ext/map.json @@ -45,6 +45,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "Route102ext_EventScript_ItemRareCandy", "flag": "FLAG_ITEM_ROUTE_102ext_RARECANDY" + }, + { + "graphics_id": "OBJ_EVENT_GFX_BOY_3", + "x": 1, + "y": 9, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NORMAL", + "trainer_sight_or_berry_tree_id": "5", + "script": "Route102ext_EventScript_Bart", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/Route102ext/scripts.inc b/data/maps/Route102ext/scripts.inc index 635916fa2..61f3f5870 100644 --- a/data/maps/Route102ext/scripts.inc +++ b/data/maps/Route102ext/scripts.inc @@ -1,2 +1,19 @@ Route102ext_MapScripts:: .byte 0 + +Route102ext_EventScript_Bart:: + bufferleadmonspeciesname 0 + trainerbattle_single TRAINER_BART, Route102_Text_BartIntro, Route102_Text_BartDefeated + msgbox Route102ext_Text_BartPostBattle, MSGBOX_AUTOCLOSE + end + +Route102_Text_BartIntro: + .string "Woah! Where did you catch\n" + .string "that {STR_VAR_1}?!$" + +Route102_Text_BartDefeated: + .string "It's too strong for me...$" + +Route102ext_Text_BartPostBattle: + .string "Maybe I should focus on\n" + .string "training my own POKéMON.$" diff --git a/data/maps/Route103/map.json b/data/maps/Route103/map.json index db38e190b..a06749c08 100644 --- a/data/maps/Route103/map.json +++ b/data/maps/Route103/map.json @@ -27,6 +27,11 @@ "map": "MAP_ROUTE101EXT", "offset": 20, "direction": "down" + }, + { + "map": "MAP_ROUTE103EXT", + "offset": 0, + "direction": "left" } ], "object_events": [ @@ -292,29 +297,42 @@ }, { "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE", - "x": 1, + "x": 0, "y": 8, "elevation": 0, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "null", + "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "EventScript_CutTreeDown", + "script": "EventScript_CutTree", "flag": "FLAG_TEMP_16" }, { "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE", - "x": 1, + "x": 0, "y": 9, "elevation": 0, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "null", + "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "EventScript_CutTreeDown", - "flag": "FLAG_TEMP_16" + "script": "EventScript_CutTree", + "flag": "FLAG_TEMP_15" + }, + { + "graphics_id": "OBJ_EVENT_GFX_PICNICKER", + "x": 1, + "y": 8, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_LEFT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route103_EventScript_PicnickerTree", + "flag": "0" } ], "warp_events": [ @@ -324,20 +342,6 @@ "elevation": 0, "dest_map": "MAP_ALTERING_CAVE", "dest_warp_id": "0" - }, - { - "x": 0, - "y": 8, - "elevation": 0, - "dest_map": "MAP_PETALBURGEXT", - "dest_warp_id": "0" - }, - { - "x": 0, - "y": 9, - "elevation": 0, - "dest_map": "MAP_PETALBURGEXT", - "dest_warp_id": "1" } ], "coord_events": [ diff --git a/data/maps/Route103/scripts.inc b/data/maps/Route103/scripts.inc index 557db64e2..ce560e90f 100644 --- a/data/maps/Route103/scripts.inc +++ b/data/maps/Route103/scripts.inc @@ -352,4 +352,15 @@ Route103_Text_ShortcutToOldale: Route103_Text_RouteSign: .string "ROUTE 103\n" .string "{DOWN_ARROW} OLDALE TOWN$" + +Route103_EventScript_PicnickerTree:: + msgbox Route103_Text_PicnickerTree, MSGBOX_NPC + end + +Route103_Text_PicnickerTree: + .string "These small trees have been growing\n" + .string "rapidly in this area recently.\p" + .string "I heard there is a man in RUSTBORO\n" + .string "that can teach your POKéMON how to\l" + .string "remove them.$" diff --git a/data/maps/Route103ext/map.json b/data/maps/Route103ext/map.json new file mode 100644 index 000000000..4378c51c4 --- /dev/null +++ b/data/maps/Route103ext/map.json @@ -0,0 +1,47 @@ +{ + "id": "MAP_ROUTE103EXT", + "name": "Route103ext", + "layout": "LAYOUT_ROUTE103EXT", + "music": "MUS_ROUTE101", + "region_map_section": "MAPSEC_ROUTE_103", + "requires_flash": false, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_ROUTE", + "allow_cycling": true, + "allow_escaping": false, + "allow_running": true, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": [ + { + "map": "MAP_ROUTE103", + "offset": 0, + "direction": "right" + } + ], + "object_events": [ + + ], + "warp_events": [ + { + "x": 0, + "y": 17, + "elevation": 0, + "dest_map": "MAP_PETALBURG_WOODS_EXT", + "dest_warp_id": "0" + }, + { + "x": 1, + "y": 17, + "elevation": 0, + "dest_map": "MAP_PETALBURG_WOODS_EXT", + "dest_warp_id": "1" + } + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/Route103ext/scripts.inc b/data/maps/Route103ext/scripts.inc new file mode 100644 index 000000000..9f3c3b961 --- /dev/null +++ b/data/maps/Route103ext/scripts.inc @@ -0,0 +1,2 @@ +Route103ext_MapScripts:: + .byte 0 diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 0e1f1c593..b45e54cc7 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -97,7 +97,8 @@ "Route102ext", "NewMap1", "Petalburgext", - "PetalburgCity_OldResearchBuilding" + "PetalburgCity_OldResearchBuilding", + "Route103ext" ], "gMapGroup_IndoorLittleroot": [ "LittlerootTown_BrendansHouse_1F", diff --git a/include/constants/flags.h b/include/constants/flags.h index ca4ee5641..193bb03dd 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1220,7 +1220,7 @@ #define FLAG_ITEM_ROUTE_101ext_POTION 0x493 #define FLAG_ITEM_ROUTE_102ext_RARECANDY 0x494 // Unused Flag -#define FLAG_ITEM_TOWN_LITTLEROOT_POTION 0x495 // Unused Flag +#define FLAG_ITEM_TOWN_LITTLEROOT_POTION 0x495 // Unused Flag #define FLAG_UNUSED_0x496 0x496 // Unused Flag #define FLAG_UNUSED_0x497 0x497 // Unused Flag #define FLAG_UNUSED_0x498 0x498 // Unused Flag diff --git a/include/constants/layouts.h b/include/constants/layouts.h index e477d16fc..32aee8a00 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -452,5 +452,6 @@ #define LAYOUT_PETALBURGEXT 445 #define LAYOUT_PETALBURG_CITY_OLD_RESEARCH_BUILDING 446 #define LAYOUT_PETALBURG_WOODS_EXT 447 +#define LAYOUT_ROUTE103EXT 448 #endif // GUARD_CONSTANTS_LAYOUTS_H diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 6b7dbe2eb..a1f85f448 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -68,6 +68,7 @@ #define MAP_NEW_MAP1 (59 | (0 << 8)) #define MAP_PETALBURGEXT (60 | (0 << 8)) #define MAP_PETALBURG_CITY_OLD_RESEARCH_BUILDING (61 | (0 << 8)) +#define MAP_ROUTE103EXT (62 | (0 << 8)) // gMapGroup_IndoorLittleroot #define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8)) diff --git a/include/constants/opponents.h b/include/constants/opponents.h index c9cf9239d..bce8d1c28 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -856,12 +856,13 @@ #define TRAINER_LEAF 852 #define TRAINER_BRENDAN_PLACEHOLDER 853 #define TRAINER_MAY_PLACEHOLDER 854 +#define TRAINER_BART 855 // NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows // More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled // MAX_TRAINERS_COUNT can be increased but will take up additional saveblock space -#define TRAINERS_COUNT 855 -#define MAX_TRAINERS_COUNT 864 +#define TRAINERS_COUNT 856 +#define MAX_TRAINERS_COUNT 1000//864 #endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 824a49dc3..05a8ff7dd 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -1,3 +1,16 @@ +static const struct TrainerMonNoItemDefaultMoves sParty_bart[] = { + { + .iv = 0, + .lvl = 4, + .species = SPECIES_GEODUDE, + }, + { + .iv = 0, + .lvl = 3, + .species = SPECIES_RALTS, + }, +}; + static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer1[] = { { .iv = 0, diff --git a/src/data/trainers.h b/src/data/trainers.h index b4c1b0575..5a255c34e 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -1,4 +1,5 @@ const struct Trainer gTrainers[] = { + [TRAINER_NONE] = { .partyFlags = 0, @@ -10260,4 +10261,16 @@ const struct Trainer gTrainers[] = { .aiFlags = 0, .party = NO_ITEM_DEFAULT_MOVES(sParty_MayLinkPlaceholder), }, + + [TRAINER_BART] = + { + .trainerClass = TRAINER_CLASS_COOLTRAINER, + .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .trainerName = _("BART"), + .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .doubleBattle = FALSE, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, + .party = NO_ITEM_DEFAULT_MOVES(sParty_bart), + }, }; diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index bb95a67cf..783f8387a 100755 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -11496,67 +11496,67 @@ "map": "MAP_ROUTE101EXT", "base_label": "gRoute101ext0", "land_mons": { - "encounter_rate": 0, + "encounter_rate": 20, "mons": [ { "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 3, "max_level": 3, "species": "SPECIES_WURMPLE" }, { - "min_level": 2, - "max_level": 5, - "species": "SPECIES_ZIGZAGOON" - }, - { - "min_level": 2, - "max_level": 5, - "species": "SPECIES_TAILLOW" - }, - { - "min_level": 2, - "max_level": 5, + "min_level": 3, + "max_level": 3, "species": "SPECIES_POOCHYENA" }, { - "min_level": 4, - "max_level": 5, + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 3, + "max_level": 3, "species": "SPECIES_WURMPLE" }, { - "min_level": 5, - "max_level": 5, + "min_level": 3, + "max_level": 3, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 2, + "max_level": 2, "species": "SPECIES_ZIGZAGOON" }, { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_RALTS" + "min_level": 2, + "max_level": 2, + "species": "SPECIES_ZIGZAGOON" }, { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_WURMPLE" + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" }, { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_NONE" - }, - { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_NONE" - }, - { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_NONE" - }, - { - "min_level": 5, - "max_level": 5, - "species": "SPECIES_NONE" + "min_level": 3, + "max_level": 3, + "species": "SPECIES_ZIGZAGOON" } ] }, @@ -11689,7 +11689,7 @@ "map": "MAP_PETALBURG_WOODS_EXT", "base_label": "gPetalburgWoodsExt0", "land_mons": { - "encounter_rate": 0, + "encounter_rate": 20, "mons": [ { "min_level": 3, From ac596bf32e05a11d0d76379306e6b3ff23868e26 Mon Sep 17 00:00:00 2001 From: SuppaiNeko Date: Mon, 3 Apr 2023 22:15:08 -0700 Subject: [PATCH 69/71] Added Feebass event --- data/maps/Petalburgext/map.json | 14 ++++++- data/maps/Petalburgext/scripts.inc | 60 ++++++++++++++++++++++++++++++ data/maps/Route101ext/map.json | 9 ++++- data/maps/Route101ext/scripts.inc | 20 +++++----- data/maps/Route102ext/map.json | 4 +- data/maps/Route102ext/scripts.inc | 3 +- include/constants/flags.h | 2 +- include/constants/opponents.h | 2 +- src/data/trainer_parties.h | 2 +- src/data/trainers.h | 4 +- 10 files changed, 99 insertions(+), 21 deletions(-) diff --git a/data/maps/Petalburgext/map.json b/data/maps/Petalburgext/map.json index 573f2e811..69c2b4455 100644 --- a/data/maps/Petalburgext/map.json +++ b/data/maps/Petalburgext/map.json @@ -20,7 +20,19 @@ } ], "object_events": [ - + { + "graphics_id": "OBJ_EVENT_GFX_FISHERMAN", + "x": 20, + "y": 8, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_LEFT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Petalburgext_EventScript_Fisherman", + "flag": "0" + } ], "warp_events": [ diff --git a/data/maps/Petalburgext/scripts.inc b/data/maps/Petalburgext/scripts.inc index 0f253cb56..884a5cd06 100644 --- a/data/maps/Petalburgext/scripts.inc +++ b/data/maps/Petalburgext/scripts.inc @@ -1,2 +1,62 @@ Petalburgext_MapScripts:: .byte 0 + +Petalburgext_EventScript_Fisherman:: + goto_if_set FLAG_RECEIVED_FEEBASS, Petalburgext_EventScript_Fisherman_thankyou + msgbox Petalburgext_Text_Fisherman, MSGBOX_DEFAULT + msgbox Petalburgext_Text_Fisherman_request, MSGBOX_YESNO + compare VAR_RESULT, 0 + goto_if_eq Petalburgext_EventScript_Fisherman_no + msgbox Petalburgext_Text_Fisherman_yes, MSGBOX_DEFAULT + getpartysize + compare VAR_RESULT, 6 + goto_if_eq Petalburgext_EventScript_Fisherman_partyfull + givemon SPECIES_FEEBAS, 5, ITEM_NONE + showmonpic SPECIES_FEEBAS, 10, 3 + playfanfare MUS_OBTAIN_ITEM + waitfanfare + hidemonpic + setflag FLAG_RECEIVED_FEEBASS + release + end + +Petalburgext_EventScript_Fisherman_thankyou:: + msgbox Petalburgext_Text_Fisherman_thankyou, MSGBOX_DEFAULT + end + +Petalburgext_EventScript_Fisherman_no:: + msgbox Petalburgext_Text_Fisherman_no, MSGBOX_DEFAULT + end + +Petalburgext_EventScript_Fisherman_partyfull:: + msgbox Petalburgext_Text_Fisherman_partyfull MSGBOX_DEFAULT + end + +Petalburgext_Text_Fisherman_thankyou: + .string "Please keep that thing away from me.$" + +Petalburgext_Text_Fisherman: + .string "Eww, this thing is ugly..\p" + .string "but everytime I toss it back it\n" + .string "jumps back onto my fishing pole.\p" + .string ".....%" + + +Petalburgext_Text_Fisherman_request: + .string "Maybe you could take it?$" + +Petalburgext_Text_Fisherman_no: + .string "Ah, of course you won't.\n" + .string "I wouldn't want it either!$" + +Petalburgext_Text_Fisherman_yes: + .string "Thank you!\p" + .string "Maybe I can catch some real\n" + .string "fish now.$" + +Petalburgext_Text_Fisherman_partyfull: + .string "Looks like you can't hold anymore\n" + .string "POKéMON right now.\p" + .string "Guess I'll toss it back again.$" + + \ No newline at end of file diff --git a/data/maps/Route101ext/map.json b/data/maps/Route101ext/map.json index 2d8ef0cbf..1e3ece887 100644 --- a/data/maps/Route101ext/map.json +++ b/data/maps/Route101ext/map.json @@ -116,6 +116,13 @@ ], "bg_events": [ - + { + "type": "sign", + "x": 4, + "y": 7, + "elevation": 0, + "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", + "script": "Route101ext_EventScript_Sign" + } ] } diff --git a/data/maps/Route101ext/scripts.inc b/data/maps/Route101ext/scripts.inc index bc819a04d..ed544b1d9 100644 --- a/data/maps/Route101ext/scripts.inc +++ b/data/maps/Route101ext/scripts.inc @@ -19,22 +19,22 @@ Route101ext_EventScript_Sign:: Route101ext_Text_Sign: .string "{LEFT_ARROW} OLDALE TOWN\n" - .string "{DOWN_ARROW} LITTLEROOT.$" + .string "{DOWN_ARROW} LITTLEROOT$" Route101ext_Text_DailyWalk: - .string "Usually there are many paths\n" - .string "between towns.\p" - .string "I like taking the long way\n" - .string "between OLDALE and LITTLEROOT.$" + .string "Usually there are many paths between\n" + .string "towns.\p" + .string "I like taking the long way between\n" + .string "OLDALE and LITTLEROOT.$" Route101ext_Text_StrangeHouse: .string "See that house over there?\n" .string "It has been empty for years.\p" - .string "I wonder if there are any\n" - .string "spooky Bug POKéMON in there.$" + .string "I wonder if there are any spooky Bug\n" + .string "POKéMON in there.$" Route101ext_Text_MassiveWorld: - .string "The world just seems to get\n" - .string "larger and larger.\p" - .string "There must be a lot we have\n" + .string "The world just seems to get larger\n" + .string "and larger.\p" + .string "There must be so much that we have\n" .string "yet to discover.$" diff --git a/data/maps/Route102ext/map.json b/data/maps/Route102ext/map.json index 44702c18d..20f8f1f4a 100644 --- a/data/maps/Route102ext/map.json +++ b/data/maps/Route102ext/map.json @@ -50,12 +50,12 @@ "graphics_id": "OBJ_EVENT_GFX_BOY_3", "x": 1, "y": 9, - "elevation": 0, + "elevation": 3, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NORMAL", - "trainer_sight_or_berry_tree_id": "5", + "trainer_sight_or_berry_tree_id": "3", "script": "Route102ext_EventScript_Bart", "flag": "0" } diff --git a/data/maps/Route102ext/scripts.inc b/data/maps/Route102ext/scripts.inc index 61f3f5870..afd9f4581 100644 --- a/data/maps/Route102ext/scripts.inc +++ b/data/maps/Route102ext/scripts.inc @@ -2,14 +2,13 @@ Route102ext_MapScripts:: .byte 0 Route102ext_EventScript_Bart:: - bufferleadmonspeciesname 0 trainerbattle_single TRAINER_BART, Route102_Text_BartIntro, Route102_Text_BartDefeated msgbox Route102ext_Text_BartPostBattle, MSGBOX_AUTOCLOSE end Route102_Text_BartIntro: .string "Woah! Where did you catch\n" - .string "that {STR_VAR_1}?!$" + .string "that?!$" Route102_Text_BartDefeated: .string "It's too strong for me...$" diff --git a/include/constants/flags.h b/include/constants/flags.h index 193bb03dd..620e23f4b 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1221,7 +1221,7 @@ #define FLAG_ITEM_ROUTE_101ext_POTION 0x493 #define FLAG_ITEM_ROUTE_102ext_RARECANDY 0x494 // Unused Flag #define FLAG_ITEM_TOWN_LITTLEROOT_POTION 0x495 // Unused Flag -#define FLAG_UNUSED_0x496 0x496 // Unused Flag +#define FLAG_RECEIVED_FEEBASS 0x496 // Unused Flag #define FLAG_UNUSED_0x497 0x497 // Unused Flag #define FLAG_UNUSED_0x498 0x498 // Unused Flag #define FLAG_UNUSED_0x499 0x499 // Unused Flag diff --git a/include/constants/opponents.h b/include/constants/opponents.h index bce8d1c28..a8f2f5e58 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -863,6 +863,6 @@ // MAX_TRAINERS_COUNT can be increased but will take up additional saveblock space #define TRAINERS_COUNT 856 -#define MAX_TRAINERS_COUNT 1000//864 +#define MAX_TRAINERS_COUNT 864 #endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 05a8ff7dd..c652c125c 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -8,7 +8,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_bart[] = { .iv = 0, .lvl = 3, .species = SPECIES_RALTS, - }, + } }; static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer1[] = { diff --git a/src/data/trainers.h b/src/data/trainers.h index 5a255c34e..6885a3ee9 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -10268,9 +10268,9 @@ const struct Trainer gTrainers[] = { .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, .trainerPic = TRAINER_PIC_COOLTRAINER_M, .trainerName = _("BART"), - .items = {ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, + .items = {}, .doubleBattle = FALSE, - .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, + .aiFlags = 0, .party = NO_ITEM_DEFAULT_MOVES(sParty_bart), }, }; From b30f237786f30a06710dbcef6cb5fb07c05421f5 Mon Sep 17 00:00:00 2001 From: SuppaiNeko Date: Tue, 4 Apr 2023 18:30:33 -0700 Subject: [PATCH 70/71] Added leafs House and 2 new trainers --- data/event_scripts.s | 6 ++ data/layouts/LittlerootTown/map.bin | 2 +- data/layouts/PetalburgWoods/map.bin | 2 +- data/layouts/PetalburgWoodsext2/border.bin | 1 + data/layouts/PetalburgWoodsext2/map.bin | 1 + data/layouts/Petalburgext/map.bin | 2 +- data/layouts/RustboroCity/map.bin | Bin 4800 -> 4800 bytes .../RustboroCity_LeafsHouse/border.bin | 1 + data/layouts/RustboroCity_LeafsHouse/map.bin | Bin 0 -> 416 bytes .../RustboroCity_LeafsHouse_2F/border.bin | Bin 0 -> 8 bytes .../RustboroCity_LeafsHouse_2F/map.bin | 1 + data/layouts/layouts.json | 30 +++++++ data/maps/LittlerootTown/map.json | 7 ++ .../maps/LittlerootTown_MaysHouse_1F/map.json | 6 +- .../maps/LittlerootTown_MaysHouse_2F/map.json | 6 +- .../scripts.inc | 2 +- data/maps/PetalburgWoods/map.json | 22 +++++- data/maps/PetalburgWoodsExt/map.json | 2 +- data/maps/PetalburgWoodsExt/scripts.inc | 1 + data/maps/PetalburgWoodsext2/map.json | 72 +++++++++++++++++ data/maps/PetalburgWoodsext2/scripts.inc | 33 ++++++++ data/maps/Petalburgext/map.json | 9 ++- data/maps/Petalburgext/scripts.inc | 43 ++++++----- data/maps/Route104_Prototype/map.json | 18 +++-- .../map.json | 18 +++-- data/maps/RustboroCity/map.json | 7 ++ data/maps/RustboroCity_CuttersHouse/map.json | 10 ++- data/maps/RustboroCity_Flat1_1F/map.json | 10 ++- data/maps/RustboroCity_Flat1_2F/map.json | 10 ++- data/maps/RustboroCity_Flat2_1F/map.json | 10 ++- data/maps/RustboroCity_Flat2_2F/map.json | 10 ++- data/maps/RustboroCity_Flat2_3F/map.json | 10 ++- data/maps/RustboroCity_House1/map.json | 10 ++- data/maps/RustboroCity_House2/map.json | 10 ++- data/maps/RustboroCity_House3/map.json | 10 ++- data/maps/RustboroCity_LeafsHouse/map.json | 73 ++++++++++++++++++ data/maps/RustboroCity_LeafsHouse/scripts.inc | 46 +++++++++++ data/maps/RustboroCity_LeafsHouse_2F/map.json | 53 +++++++++++++ .../RustboroCity_LeafsHouse_2F/scripts.inc | 22 ++++++ .../RustboroCity_PokemonCenter_2F/map.json | 10 ++- data/maps/map_groups.json | 7 +- data/scripts/item_ball_scripts.inc | 4 + include/constants/flags.h | 4 +- include/constants/layouts.h | 3 + include/constants/map_groups.h | 3 + include/constants/opponents.h | 6 +- src/data/trainer_parties.h | 23 ++++++ src/data/trainers.h | 24 ++++++ src/data/wild_encounters.json | 73 +++++++++++++++++- 49 files changed, 655 insertions(+), 78 deletions(-) create mode 100644 data/layouts/PetalburgWoodsext2/border.bin create mode 100644 data/layouts/PetalburgWoodsext2/map.bin create mode 100644 data/layouts/RustboroCity_LeafsHouse/border.bin create mode 100644 data/layouts/RustboroCity_LeafsHouse/map.bin create mode 100644 data/layouts/RustboroCity_LeafsHouse_2F/border.bin create mode 100644 data/layouts/RustboroCity_LeafsHouse_2F/map.bin create mode 100644 data/maps/PetalburgWoodsext2/map.json create mode 100644 data/maps/PetalburgWoodsext2/scripts.inc create mode 100644 data/maps/RustboroCity_LeafsHouse/map.json create mode 100644 data/maps/RustboroCity_LeafsHouse/scripts.inc create mode 100644 data/maps/RustboroCity_LeafsHouse_2F/map.json create mode 100644 data/maps/RustboroCity_LeafsHouse_2F/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 57d031846..37a5c3260 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1070,3 +1070,9 @@ Common_EventScript_LegendaryFlewAway:: .include "data/maps/PetalburgWoodsExt/scripts.inc" .include "data/maps/Route103ext/scripts.inc" + + .include "data/maps/PetalburgWoodsext2/scripts.inc" + + .include "data/maps/RustboroCity_LeafsHouse/scripts.inc" + + .include "data/maps/RustboroCity_LeafsHouse_2F/scripts.inc" diff --git a/data/layouts/LittlerootTown/map.bin b/data/layouts/LittlerootTown/map.bin index 3d836fded..7278d2cab 100644 --- a/data/layouts/LittlerootTown/map.bin +++ b/data/layouts/LittlerootTown/map.bin @@ -1,3 +1,3 @@ -ÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕÔÕÔÕæåæåæåæåæå00æåäåäåÜÝ000000000000000000ÔÕ000000000000000000æå002 2 2 2 +ÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕÔÕÔÕæåæåæåæåæå00æåäå @1Ý0000000000000000(H9Õ000000000000000000æå002 2 2 2 20000002 2 2 2 2000000000000000000000000"20@!000000 @12#0000*:8H)400004(H9:+000000020000000020000000ð00000000ð0000000000000000000000000000000 2B2C2 2 2 220000000000000JK0000000000000000000000000,A-00000000Î1Ï1000&4I5'00000000ÖÕÎ1Ï10000200000000Î1Ï1ÜÝÔ×00000000000000ÖÕÔÕÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/PetalburgWoods/map.bin b/data/layouts/PetalburgWoods/map.bin index 9a8acd8e8..61faba292 100644 --- a/data/layouts/PetalburgWoods/map.bin +++ b/data/layouts/PetalburgWoods/map.bin @@ -1 +1 @@ -ÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝäåäåäåäåäåäåÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕäçæåÔÕÔÕÔÕÔÕÔÕÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝIIIIÜÝÜÝÜÝÜÝäòóòóç00000Æ1Ç1Æ1Ç1 0 0 0æåÜÝÔÕÔÕÔÕÔÕÔÕÔÕ000000ÔÕÔÕÔÕÔÕ0ÔÕÔÕ000000Ö5Õ5Ô5×5 0 0 000ÔÕÜÝÜÝäåäåäåäç000000ÜÝÜÝÜÝäç0æåäç000000ÜÝÜÝ 0 0000ÜÝÔÕÔÕ000 0 0 0 04000000ÔÕÔÕÔÕ 0 0000000 0 0 000ÔÕÔÕÕ‡‡‡ÖÔÕÜÝÜÝ0 0 0 0 0 0 00000000æåäåäç 0 0 00Î1Ï1Æ1Ç1Æ1Ç1 0 00æåäç00000ÜÝÔÕÔÕ 0 0 0 0 0 0 00000000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô5×5 0 0 000000000 0ÔÕÜÝÜÝ 0 0 0 0Æ1Ç1Î1Ï1Î1Ï10000Î1Ï1Î1Ï1Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜÝÆ1Ç1Æ1Ç1Î1Ï10000 0 0äåÔÕÔÕ0 0 0 0Ö5Õ5Ô5Õ5Ô5×50000Ö5Õ5Ô5Õ5Ô5Õ5Ô5Õ5Ô5Õ5ÔÕÔÕÔÕÔÕ5Ô5Õ5Ô5×5000 0 0 0 0 0ÜÝÜÝ0000ÜÝÜÝÜÝ0000æòóòóòóòóòóòóòóòóòóòóòÏ100 0 0 0 0 0ÔÕÔÕ0000ÔÕÔÕÔÕÕ‡‡‡ÖÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×500 0 0 0 0 0ÜÝÜÝ000 0æåäåäç00000æåäåäåäåäòóòóòóòóòóòóòÏ10 0 0 0Æ1Ç1ÔÕÔÕ0 0 0 0 0 0 000000000000000000ÔÕÔÕÔÕÔÕÔÕÔÕÔ×50 0 0 0ÔÕÜÝÜÝ 0 0 0 0 0 0 0000000 0 0 0 00000000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ00 0 0ÜÝÔÕÔÕ 0 0 0 0 0 0 000000 0 0 0 0 0 0 0 0 0000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ000 0ÔÕÜÝÜÝÎ1Ç1Æ1Ç1Æ1Ç1Î1Ï10000Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç100ÜÝÜÝÜÝäåÜÝÜÝÜÝ0000ÜÝÔÕÔÕÔ5Õ5Ô5Õ5Ô5Õ5Ô5×50000Ö5Õ5Ô5Õ5Ô5Õ5Ô5Õ5Ô5×500ÔÕÔÕÔÕ00ÔÕÔÕÔÕÕ‡‡ÖÔÕÜÝÜÝÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝ00ÜÝÜÝäç00æåÜÝÜÝ 0000ÜÝÔÕÔÕÔÕÔÕÔÕÔÕÕ‡‡ÖÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕ 000000ÔÕÔÕ 0 000ÔÕÜÝÜÝÜÝäåäåäç0000æåäåäåäåäç00ÜÝÜÝ 000000æåäç 0 0 00ÜÝÔÕÔÕÔÕ000000000000 0 0 0 0 0 0 0 000ÔÕÔÕ 0 0000000 0 0 0 0 00ÔÕÜÝÜÝäç 0 0 00000000000 0 0 0 0 0 0000ÜÝÜÝ 0 0 00Î1Ï10 0 0 0 0 0 0 0ÜÝÔÕÔÕ0 0 0 0 0 0 0 0 0000000000000000ÔÕÔÕ 0 0 0 0Ö5×50 0 0 0 0 0 0 0ÔÕÜÝÜÝ 0 0 0 0 0 0Æ1Ç1Æ1Ç1Î1Ï1000000Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝ 0 0 0 0ÜÝÎ1Ç1 0 0 0 0Æ1Ç1ÜÝÔÕÔÕ 0 0 0 0 0 0Ö5ÕÔÕÔ5×5000000Ö5Õ5Ô5Õ5Ô5Õ5ÔÕÔÕ 0 0 0 0ÔÕÔ×5 0 0 0 0Ö5ÕÔÕÜÝÜÝ 0 0 0 0 0 0ÜÝÜÝÜÝ000000ÜÝÜÝÜÝÜÝÜÝ0 0 0 0ÜÝÜÝÎ1Ç1Æ1Ç1ÜÝÜÝÔÕÔÕ 0 0 0 0 0 0ÔÕÔÕÔÕÕ‡‡‡‡ÖÔÕÔÕÔÕÔÕÔÕ000 0ÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝ 0 0 0 0 0 0æåäåäç000000æåäåÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕ0 0 0 0 0 0 0 0 0 040000000 0 0 0 0ÔÕÔÕÔÕÕ‡‡ÖÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÎ1Ï10 0 0 0 0 0 000000000 0 0 0 0 0æåäåäç0000æåäåäåÜÝÜÝÜÝÔÕÔÕÔ×5000000000000000 0 0 0 0 0 0 000000000 0 0 0 0 0 0ÔÕÔÕÔÕÜÝÜÝÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1000000Î1Ç1Æ1Ç1Æ1Ç1Æ1Ï1Î1Ï1Î1Ï1Î1Ï1000 0 00 0 0ÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔ×5000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×5000 0 0 0 0 0ÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝ000000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ0000 0 0Æ1Ç1ÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕIIIIÔÕÔÕÔÕÔÕÔÕÔÕÔÕIIIIÖ5ÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÎÏÎÏÜÝÜÝÜÝÜÝÜÝÜÝÜÝÎÏÎÏÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×ÖÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×ÖÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝ \ No newline at end of file +ÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝäåäåäåäåäåäåÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕäçæåÔÕÔÕÔÕÔÕÔÕÔÕÔÕ000000 0 0 0 0 0 0ÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝIIIIÜÝÜÝÜÝÜÝäòóòóç00000Æ1Ç1Æ1Ç1 0 0 0æåÜÝÔÕÔÕÔÕÔÕÔÕÔÕ000000ÔÕÔÕÔÕÔÕ0ÔÕÔÕ000000Ö5Õ5Ô5×5 0 0 000ÔÕæåæåäåäåäåäç000000ÜÝÜÝÜÝäç0æåäç000000ÜÝÜÝ 0 0000ÜÝ0000000 0 0 0 04000000ÔÕÔÕÔÕ 0 0000000 0 0 000ÔÕÔÕÕ‡‡‡ÖÔÕÎ1Ï1Î1Ï10 0 0 0 0 0 00000000æåäåäç 0 0 00Î1Ï1Æ1Ç1Æ1Ç1 0 00æåäç00000ÜÝÔÕÔÕ 0 0 0 0 0 0 00000000000 0 0 0 0 0 0 0Ö5Õ5Ô5Õ5Ô5×5 0 0 000000000 0ÔÕÜÝÜÝ 0 0 0 0Æ1Ç1Î1Ï1Î1Ï10000Î1Ï1Î1Ï1Æ1Ç1Æ1Ç1Æ1Ç1ÜÝÜÝÜÝÆ1Ç1Æ1Ç1Î1Ï10000 0 0äåÔÕÔÕ0 0 0 0Ö5Õ5Ô5Õ5Ô5×50000Ö5Õ5Ô5Õ5Ô5Õ5Ô5Õ5Ô5Õ5ÔÕÔÕÔÕÔÕ5Ô5Õ5Ô5×5000 0 0 0 0 0ÜÝÜÝ0000ÜÝÜÝÜÝ0000æòóòóòóòóòóòóòóòóòóòóòÏ100 0 0 0 0 0ÔÕÔÕÕ‡Ö0ÔÕÔÕÔÕÕ‡‡‡ÖÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×500 0 0 0 0 0ÜÝÜÝ000 0æåäåäç00000æåäåäåäåäòóòóòóòóòóòóòÏ10 0 0 0Æ1Ç1ÔÕÔÕ0 0 0 0 0 0 000000000000000000ÔÕÔÕÔÕÔÕÔÕÔÕÔ×50 0 0 0ÔÕæåæå 0 0 0 0 0 0 0000000 0 0 0 00000000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ00 0 0ÜÝ0000 0 0 0 0 0 0 000000 0 0 0 0 0 0 0 0 0000ÔÕÔÕÔÕÔÕÔÕÔÕÔÕ000 0ÔÕÎ1Ï1Î1Ï1Î1Ç1Æ1Ç1Æ1Ç1Î1Ï10000Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç100ÜÝÜÝÜÝäåÜÝÜÝÜÝ0000ÜÝÔÕÔÕÔ5Õ5Ô5Õ5Ô5Õ5Ô5×50000Ö5Õ5Ô5Õ5Ô5Õ5Ô5Õ5Ô5×500ÔÕÔÕÔÕ00ÔÕÔÕÔÕÕ‡‡ÖÔÕÜÝÜÝÜÝÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝ00ÜÝÜÝäç00æåÜÝÜÝ 0000ÜÝÔÕÔÕÔÕÔÕÔÕÔÕÕ‡‡ÖÔÕÔÕÔÕÔÕÔÕ00ÔÕÔÕ 000000ÔÕÔÕ 0 000ÔÕÜÝÜÝÜÝäåäåäç0000æåäåäåäåäç00ÜÝÜÝ 000000æåäç 0 0 00ÜÝÔÕÔÕÔÕ000000000000 0 0 0 0 0 0 0 000ÔÕÔÕ 0 0000000 0 0 0 0 00ÔÕÜÝÜÝäç 0 0 00000000000 0 0 0 0 0 0000ÜÝÜÝ 0 0 00Î1Ï10 0 0 0 0 0 0 0ÜÝÔÕÔÕ0 0 0 0 0 0 0 0 0000000000000000ÔÕÔÕ 0 0 0 0Ö5×50 0 0 0 0 0 0 0ÔÕÜÝÜÝ 0 0 0 0 0 0Æ1Ç1Æ1Ç1Î1Ï1000000Î1Ï1Î1Ï1Î1Ï1ÜÝÜÝ 0 0 0 0ÜÝÎ1Ç1 0 0 0 0Æ1Ç1ÜÝÔÕÔÕ 0 0 0 0 0 0Ö5ÕÔÕÔ5×5000000Ö5Õ5Ô5Õ5Ô5Õ5ÔÕÔÕ 0 0 0 0ÔÕÔ×5 0 0 0 0Ö5ÕÔÕÜÝÜÝ 0 0 0 0 0 0ÜÝÜÝÜÝ000000ÜÝÜÝÜÝÜÝÜÝ0 0 0 0ÜÝÜÝÎ1Ç1Æ1Ç1ÜÝÜÝÔÕÔÕ 0 0 0 0 0 0ÔÕÔÕÔÕÕ‡‡‡‡ÖÔÕÔÕÔÕÔÕÔÕ000 0ÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝ 0 0 0 0 0 0æåäåäç000000æåäåÜÝÜÝÜÝ0000ÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕ0 0 0 0 0 0 0 0 0 040000000 0 0 0 0ÔÕÔÕÔÕÕ‡‡ÖÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÎ1Ï10 0 0 0 0 0 000000000 0 0 0 0 0æåäåäç0000æåäåäåÜÝÜÝÜÝÔÕÔÕÔ×5000000000000000 0 0 0 0 0 0 000000000 0 0 0 0 0 0ÔÕÔÕÔÕÜÝÜÝÜÝÎ1Ï1Î1Ï1Î1Ï1Î1Ï1000000Î1Ç1Æ1Ç1Æ1Ç1Æ1Ï1Î1Ï1Î1Ï1Î1Ï1000 0 00 0 0ÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔ×5000000Ö5ÕÔÕÔÕÔÕÔÕÔÕÔ×5000 0 0 0 0 0ÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝ000000ÜÝÜÝÜÝÜÝÜÝÜÝÜÝ0000 0 0Æ1Ç1ÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕIIIIÔÕÔÕÔÕÔÕÔÕÔÕÔÕIIIIÖ5ÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÎÏÎÏÜÝÜÝÜÝÜÝÜÝÜÝÜÝÎÏÎÏÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×ÖÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔ×ÖÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÔÕÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝÜÝ \ No newline at end of file diff --git a/data/layouts/PetalburgWoodsext2/border.bin b/data/layouts/PetalburgWoodsext2/border.bin new file mode 100644 index 000000000..03bcafef1 --- /dev/null +++ b/data/layouts/PetalburgWoodsext2/border.bin @@ -0,0 +1 @@ +ÔÕÜÝ \ No newline at end of file diff --git a/data/layouts/PetalburgWoodsext2/map.bin b/data/layouts/PetalburgWoodsext2/map.bin new file mode 100644 index 000000000..01eb60fef --- /dev/null +++ b/data/layouts/PetalburgWoodsext2/map.bin @@ -0,0 +1 @@ +Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×äåäåäåäåäåäåÞßÞßÞßÞß 0 0 0 000000000Ö×Ö×Ö×Ö× 00 00000 0 0 000Þßäåäåäå 0 0 0 000 0 00 000Ö× 0 0 0000 0 0 0 0 0Æ1Ç1Æ1Ç1Æ1Ç10äå00Æ1Ç100 0 0 0 00Ö×Ö×Ö×00000Ö×00 0 0 000ÞßäåäåÕ‡‡‡ÖÞß00 00000Ö×000 000000Ö×00 00000äå000Î1Ï10 0 00Þß000 0 000 0 0 000Ö×0 0 00Ö×0000 0 0 0 00 000äå 0 0 0 0ÞßÕÖ0Æ1Ç1Æ1Ç1Æ1Ç1Æ1Ç100000 0 0Ö×000Ö×Ö×Ö×Ö× 0 0 0 0 0 0 0äå000äåäåÞßÞßÎ1Ç1 0 00Î1Ï1Î1Ï1Î1Ï100000Ö×Ö×Ö× 0 00Ö×Ö×Ö× 0 0000äåÞßäå 000äåäåäåÆ1Ç1Æ1Ç100 0Ö×0Æ1Ç1Æ1Ç1 0 0 0 000Ö×Ö×00 0äå0Ö×Ö× 0 0 0 0 00ÞßÞßÎ1Ï1Î1Ï1Î1Ï1ÞßÞß 0 0Î1Ï1Î1Ï1 \ No newline at end of file diff --git a/data/layouts/Petalburgext/map.bin b/data/layouts/Petalburgext/map.bin index 182c71def..4676b7ac7 100644 --- a/data/layouts/Petalburgext/map.bin +++ b/data/layouts/Petalburgext/map.bin @@ -1 +1 @@ -Ö1×1Ö5×Ö1×1Ö5×Ö1×1Ö5׸¡¡¡¡¡Â²Ö×Ö×I 1"1IL 2B2C2 2B2C22Ö×1Ö5×Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß 1"1LJKJKÞß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡˜™š¡¡ºÖ×Ö× 1"1LÖ×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡ q¢¡¡ºÞßÞß 1"1L,A-Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¨©ª¡¡ºÖ×Ö×I 1"1IT&4I25'Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß0 1!1111111100Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡Å¡ºÖ×Ö×0(1)1)1)1)1)1)1)1*100Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºæåæå000000000000Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º0000000000000000Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡º000000000000Î1Ï1Î1Ï1Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º000000000000Ö×Ö×Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡Â±±±±±±±±±±±²Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡Å¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Å¡ºÞß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß00è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1 \ No newline at end of file +Ö1×1Ö5×Ö1×1Ö5×Ö1×1Ö5׸¡¡¡¡¡Â²Ö×Ö×I 1"1IL 2B2C2 2B2C22Ö×1Ö5×Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß 1"1LJKJKÞß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡˜™š¡¡ºÖ×Ö× 1"1LÖ×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡ q¢¡¡ºÞßÞß 1"1L,A-Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¨©ª¡¡ºÖ×Ö×I 1"1IT&4I5'Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºÞßÞß0 1!1111111100Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡Å¡ºÖ×Ö×0(1)1)1)1)1)1)1)1*100Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡ºæåæå000000000000Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º0000000000000000Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡º000000000000Î1Ï1Î1Ï1Þß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡º000000000000Ö×Ö×Ö×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡Â±±±±±±±±±±±²Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡Å¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1߸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Å¡ºÞß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1׸¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ºÖ×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß00è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1è1é1Þß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×Ö×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Ö1×1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1Þ1ß1 \ No newline at end of file diff --git a/data/layouts/RustboroCity/map.bin b/data/layouts/RustboroCity/map.bin index 06736e47e512902a29a417da5bbc773d15ae2ef1..c4ab8897c287183c325e345464ddc610d5277b71 100644 GIT binary patch delta 20 bcmX@0dO&qU03W0Hj%jPumz&XYeQ9nZ0R>&6(W+3Z2;<*+bYvk$j~C3=uzeZ6FDP TAXbcVEYMaTW?yFX@IdeZBac;s literal 0 HcmV?d00001 diff --git a/data/layouts/RustboroCity_LeafsHouse_2F/border.bin b/data/layouts/RustboroCity_LeafsHouse_2F/border.bin new file mode 100644 index 0000000000000000000000000000000000000000..f496f458ecf2897514c7ef858e657bf062c57506 GIT binary patch literal 8 LcmZQ%U<5+|02}}X literal 0 HcmV?d00001 diff --git a/data/layouts/RustboroCity_LeafsHouse_2F/map.bin b/data/layouts/RustboroCity_LeafsHouse_2F/map.bin new file mode 100644 index 000000000..ecf397667 --- /dev/null +++ b/data/layouts/RustboroCity_LeafsHouse_2F/map.bin @@ -0,0 +1 @@ +   RQVnn000000ZY&CD000000E222`2a2]2f2KL0000002222222220000002˜2™2™2™2™2š22p0000002 2¡2¡2¡2¡2¢22q0000002¨2©2©2©2©2ª2�2‚20000002j2222ˆ2‰2Š20000002r2222�2‘’2000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index 2a04b090d..ea3ab7e77 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -4480,6 +4480,36 @@ "secondary_tileset": "gTileset_Fortree", "border_filepath": "data/layouts/Route103ext/border.bin", "blockdata_filepath": "data/layouts/Route103ext/map.bin" + }, + { + "id": "LAYOUT_PETALBURG_WOODSEXT2", + "name": "PetalburgWoodsext2_Layout", + "width": 20, + "height": 20, + "primary_tileset": "gTileset_General", + "secondary_tileset": "gTileset_Petalburg", + "border_filepath": "data/layouts/PetalburgWoodsext2/border.bin", + "blockdata_filepath": "data/layouts/PetalburgWoodsext2/map.bin" + }, + { + "id": "LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE", + "name": "RustboroCity_LeafsHouse_Layout", + "width": 16, + "height": 13, + "primary_tileset": "gTileset_Building", + "secondary_tileset": "gTileset_GenericBuilding", + "border_filepath": "data/layouts/RustboroCity_LeafsHouse/border.bin", + "blockdata_filepath": "data/layouts/RustboroCity_LeafsHouse/map.bin" + }, + { + "id": "LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE_2F", + "name": "RustboroCity_LeafsHouse_2F_Layout", + "width": 16, + "height": 13, + "primary_tileset": "gTileset_Building", + "secondary_tileset": "gTileset_BrendansMaysHouse", + "border_filepath": "data/layouts/RustboroCity_LeafsHouse_2F/border.bin", + "blockdata_filepath": "data/layouts/RustboroCity_LeafsHouse_2F/map.bin" } ] } diff --git a/data/maps/LittlerootTown/map.json b/data/maps/LittlerootTown/map.json index 3ecde2034..0eec2ff6c 100644 --- a/data/maps/LittlerootTown/map.json +++ b/data/maps/LittlerootTown/map.json @@ -159,6 +159,13 @@ "elevation": 0, "dest_map": "MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB", "dest_warp_id": "0" + }, + { + "x": 17, + "y": 2, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY_LEAFS_HOUSE", + "dest_warp_id": "0" } ], "coord_events": [ diff --git a/data/maps/LittlerootTown_MaysHouse_1F/map.json b/data/maps/LittlerootTown_MaysHouse_1F/map.json index 4e4887003..ad09a2f8c 100644 --- a/data/maps/LittlerootTown_MaysHouse_1F/map.json +++ b/data/maps/LittlerootTown_MaysHouse_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MOM", @@ -167,5 +167,7 @@ "script": "LittlerootTown_MaysHouse_1F_EventScript_MeetRival2" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/LittlerootTown_MaysHouse_2F/map.json b/data/maps/LittlerootTown_MaysHouse_2F/map.json index ce3a5f570..4f60b46fa 100644 --- a/data/maps/LittlerootTown_MaysHouse_2F/map.json +++ b/data/maps/LittlerootTown_MaysHouse_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_RIVAL_MAY_NORMAL", @@ -232,7 +232,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index ddf4ff933..62e44830a 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -730,7 +730,7 @@ LittlerootTown_ProfessorBirchsLab_Text_GetRivalToTeachYou: .string "important foster a strong bond\l" .string "with your POKéMON.\p" .string "They will follow you on your\n" - .string "adverntures if you let them.\p" + .string "adventures if you let them.\p" .string "Why don't you try it with {STR_VAR_1}?$" LittlerootTown_ProfessorBirchsLab_Text_DontBeThatWay: diff --git a/data/maps/PetalburgWoods/map.json b/data/maps/PetalburgWoods/map.json index 7e85e3dcf..5f58951b9 100644 --- a/data/maps/PetalburgWoods/map.json +++ b/data/maps/PetalburgWoods/map.json @@ -17,6 +17,11 @@ "map": "MAP_PETALBURG_WOODS_EXT", "offset": 0, "direction": "right" + }, + { + "map": "MAP_PETALBURG_WOODSEXT2", + "offset": 0, + "direction": "left" } ], "object_events": [ @@ -139,8 +144,8 @@ }, { "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER", - "x": 4, - "y": 14, + "x": 11, + "y": 10, "elevation": 3, "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT", "movement_range_x": 0, @@ -188,6 +193,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "PetalburgWoods_EventScript_Girl", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE", + "x": 7, + "y": 14, + "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": "0", + "script": "EventScript_CutTree", + "flag": "FLAG_TEMP_13" } ], "warp_events": [ diff --git a/data/maps/PetalburgWoodsExt/map.json b/data/maps/PetalburgWoodsExt/map.json index ed5456165..d17514e7f 100644 --- a/data/maps/PetalburgWoodsExt/map.json +++ b/data/maps/PetalburgWoodsExt/map.json @@ -3,7 +3,7 @@ "name": "PetalburgWoodsExt", "layout": "LAYOUT_PETALBURG_WOODS_EXT", "music": "MUS_PETALBURG", - "region_map_section": "MAPSEC_PETALBURG_CITY", + "region_map_section": "MAPSEC_PETALBURG_WOODS", "requires_flash": false, "weather": "WEATHER_RAIN", "map_type": "MAP_TYPE_ROUTE", diff --git a/data/maps/PetalburgWoodsExt/scripts.inc b/data/maps/PetalburgWoodsExt/scripts.inc index 5a2bb5838..b7975ea8e 100644 --- a/data/maps/PetalburgWoodsExt/scripts.inc +++ b/data/maps/PetalburgWoodsExt/scripts.inc @@ -1,2 +1,3 @@ PetalburgWoodsExt_MapScripts:: .byte 0 + diff --git a/data/maps/PetalburgWoodsext2/map.json b/data/maps/PetalburgWoodsext2/map.json new file mode 100644 index 000000000..cc6c0cbfd --- /dev/null +++ b/data/maps/PetalburgWoodsext2/map.json @@ -0,0 +1,72 @@ +{ + "id": "MAP_PETALBURG_WOODSEXT2", + "name": "PetalburgWoodsext2", + "layout": "LAYOUT_PETALBURG_WOODSEXT2", + "music": "MUS_PETALBURG_WOODS", + "region_map_section": "MAPSEC_PETALBURG_WOODS", + "requires_flash": false, + "weather": "WEATHER_SHADE", + "map_type": "MAP_TYPE_ROUTE", + "allow_cycling": true, + "allow_escaping": false, + "allow_running": true, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": [ + { + "map": "MAP_PETALBURG_WOODS", + "offset": 0, + "direction": "right" + } + ], + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", + "x": 1, + "y": 3, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "PetalburgWoodsext2_EventScript_ItemRevive", + "flag": "FLAG_ITEM_PETALBURGEXT2_WOODS_REVIVE" + }, + { + "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER", + "x": 8, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NORMAL", + "trainer_sight_or_berry_tree_id": "4", + "script": "PetalburgWoodsext2_EventScript_Lewis", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_CAMPER", + "x": 4, + "y": 15, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NORMAL", + "trainer_sight_or_berry_tree_id": "4", + "script": "PetalburgWoodsext2_EventScript_Coleman", + "flag": "0" + } + ], + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/PetalburgWoodsext2/scripts.inc b/data/maps/PetalburgWoodsext2/scripts.inc new file mode 100644 index 000000000..f80fec3a2 --- /dev/null +++ b/data/maps/PetalburgWoodsext2/scripts.inc @@ -0,0 +1,33 @@ +PetalburgWoodsext2_MapScripts:: + .byte 0 + +PetalburgWoodsext2_EventScript_Coleman:: + trainerbattle_single TRAINER_COLEMAN, PetalburgWoodsext2_Text_ColemanIntro, PetalburgWoodsext2_Text_ColemanDefeated + msgbox PetalburgWoodsext2_Text_ColemanPostBattle, MSGBOX_AUTOCLOSE + end + +PetalburgWoodsext2_Text_ColemanIntro: + .string "I promise that I'm not lost.$" + +PetalburgWoodsext2_Text_ColemanDefeated: + .string "Maybe it's time to turn around.$" + +PetalburgWoodsext2_Text_ColemanPostBattle: + .string "I found some cool POKéMON in the\n" + .string "east side of this forrest.$" + +PetalburgWoodsext2_EventScript_Lewis:: + trainerbattle_single TRAINER_LEWIS, PetalburgWoodsext2_Text_LewisIntro, PetalburgWoodsext2_Text_LewisDefeated + msgbox PetalburgWoodsext2_Text_LewisPostBattle, MSGBOX_AUTOCLOSE + end + +PetalburgWoodsext2_Text_LewisIntro: + .string "I travel the world looking for\n" + .string "rare bug POKéMON. Wanna see?$" + +PetalburgWoodsext2_Text_LewisDefeated: + .string "Might be time to Pupate...$" + +PetalburgWoodsext2_Text_LewisPostBattle: + .string "Every region has it's own special\n" + .string "bug POKéMON.$" diff --git a/data/maps/Petalburgext/map.json b/data/maps/Petalburgext/map.json index 69c2b4455..ce65612c3 100644 --- a/data/maps/Petalburgext/map.json +++ b/data/maps/Petalburgext/map.json @@ -41,6 +41,13 @@ ], "bg_events": [ - + { + "type": "sign", + "x": 32, + "y": 5, + "elevation": 0, + "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", + "script": "Petalburgext_EventScript_Sign" + } ] } diff --git a/data/maps/Petalburgext/scripts.inc b/data/maps/Petalburgext/scripts.inc index 884a5cd06..8280495ed 100644 --- a/data/maps/Petalburgext/scripts.inc +++ b/data/maps/Petalburgext/scripts.inc @@ -3,11 +3,18 @@ Petalburgext_MapScripts:: Petalburgext_EventScript_Fisherman:: goto_if_set FLAG_RECEIVED_FEEBASS, Petalburgext_EventScript_Fisherman_thankyou - msgbox Petalburgext_Text_Fisherman, MSGBOX_DEFAULT + msgbox Petalburgext_Text_Fisherman, MSGBOX_NPC msgbox Petalburgext_Text_Fisherman_request, MSGBOX_YESNO - compare VAR_RESULT, 0 - goto_if_eq Petalburgext_EventScript_Fisherman_no - msgbox Petalburgext_Text_Fisherman_yes, MSGBOX_DEFAULT + goto_if_eq VAR_RESULT, NO, Petalburgext_EventScript_Fisherman_no + goto_if_eq VAR_RESULT, YES, Petalburgext_EventScript_Fisherman_yes + end + +Petalburgext_EventScript_Fisherman_thankyou:: + msgbox Petalburgext_Text_Fisherman_thankyou, MSGBOX_NPC + end + +Petalburgext_EventScript_Fisherman_yes:: + msgbox Petalburgext_Text_Fisherman_yes, MSGBOX_NPC getpartysize compare VAR_RESULT, 6 goto_if_eq Petalburgext_EventScript_Fisherman_partyfull @@ -17,30 +24,24 @@ Petalburgext_EventScript_Fisherman:: waitfanfare hidemonpic setflag FLAG_RECEIVED_FEEBASS - release - end - -Petalburgext_EventScript_Fisherman_thankyou:: - msgbox Petalburgext_Text_Fisherman_thankyou, MSGBOX_DEFAULT end Petalburgext_EventScript_Fisherman_no:: - msgbox Petalburgext_Text_Fisherman_no, MSGBOX_DEFAULT + msgbox Petalburgext_Text_Fisherman_no, MSGBOX_NPC end Petalburgext_EventScript_Fisherman_partyfull:: - msgbox Petalburgext_Text_Fisherman_partyfull MSGBOX_DEFAULT + msgbox Petalburgext_Text_Fisherman_partyfull MSGBOX_NPC end Petalburgext_Text_Fisherman_thankyou: .string "Please keep that thing away from me.$" Petalburgext_Text_Fisherman: - .string "Eww, this thing is ugly..\p" - .string "but everytime I toss it back it\n" - .string "jumps back onto my fishing pole.\p" - .string ".....%" - + .string "Eww, this ugly fish thing again..\p" + .string "but everytime I toss it back it jumps\n" + .string "right back onto my fishing pole.\p" + .string ".....$" Petalburgext_Text_Fisherman_request: .string "Maybe you could take it?$" @@ -51,12 +52,18 @@ Petalburgext_Text_Fisherman_no: Petalburgext_Text_Fisherman_yes: .string "Thank you!\p" - .string "Maybe I can catch some real\n" - .string "fish now.$" + .string "Now I can catch some real fish.$" Petalburgext_Text_Fisherman_partyfull: .string "Looks like you can't hold anymore\n" .string "POKéMON right now.\p" .string "Guess I'll toss it back again.$" +Petalburgext_EventScript_Sign:: + msgbox Petalburgext_Text_Sign, MSGBOX_NPC + end + +Petalburgext_Text_Sign: + .string "Closed for renovations$" + \ No newline at end of file diff --git a/data/maps/Route104_Prototype/map.json b/data/maps/Route104_Prototype/map.json index a15458bf6..9315e6616 100644 --- a/data/maps/Route104_Prototype/map.json +++ b/data/maps/Route104_Prototype/map.json @@ -12,9 +12,17 @@ "allow_running": false, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "connections": 0, + "object_events": [ + + ], + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route104_PrototypePrettyPetalFlowerShop/map.json b/data/maps/Route104_PrototypePrettyPetalFlowerShop/map.json index 7abd76e3d..10d1d092d 100644 --- a/data/maps/Route104_PrototypePrettyPetalFlowerShop/map.json +++ b/data/maps/Route104_PrototypePrettyPetalFlowerShop/map.json @@ -12,9 +12,17 @@ "allow_running": false, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "connections": 0, + "object_events": [ + + ], + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity/map.json b/data/maps/RustboroCity/map.json index 3d77404ee..df11f79a2 100644 --- a/data/maps/RustboroCity/map.json +++ b/data/maps/RustboroCity/map.json @@ -323,6 +323,13 @@ "elevation": 0, "dest_map": "MAP_RUSTBORO_CITY_HOUSE3", "dest_warp_id": "0" + }, + { + "x": 32, + "y": 46, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY_LEAFS_HOUSE", + "dest_warp_id": "0" } ], "coord_events": [ diff --git a/data/maps/RustboroCity_CuttersHouse/map.json b/data/maps/RustboroCity_CuttersHouse/map.json index 16394a68b..946f5d249 100644 --- a/data/maps/RustboroCity_CuttersHouse/map.json +++ b/data/maps/RustboroCity_CuttersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -57,6 +57,10 @@ "dest_warp_id": "8" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat1_1F/map.json b/data/maps/RustboroCity_Flat1_1F/map.json index 1ed8aafd1..1fde12360 100644 --- a/data/maps/RustboroCity_Flat1_1F/map.json +++ b/data/maps/RustboroCity_Flat1_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_3", @@ -64,6 +64,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat1_2F/map.json b/data/maps/RustboroCity_Flat1_2F/map.json index bb8767062..36104fda0 100644 --- a/data/maps/RustboroCity_Flat1_2F/map.json +++ b/data/maps/RustboroCity_Flat1_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -128,6 +128,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_1F/map.json b/data/maps/RustboroCity_Flat2_1F/map.json index 21c1d5d7f..a728e4da3 100644 --- a/data/maps/RustboroCity_Flat2_1F/map.json +++ b/data/maps/RustboroCity_Flat2_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SKITTY", @@ -64,6 +64,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_2F/map.json b/data/maps/RustboroCity_Flat2_2F/map.json index 8494c5232..22e353793 100644 --- a/data/maps/RustboroCity_Flat2_2F/map.json +++ b/data/maps/RustboroCity_Flat2_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_3F/map.json b/data/maps/RustboroCity_Flat2_3F/map.json index d7f47d6a0..826b495db 100644 --- a/data/maps/RustboroCity_Flat2_3F/map.json +++ b/data/maps/RustboroCity_Flat2_3F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE", @@ -50,6 +50,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_House1/map.json b/data/maps/RustboroCity_House1/map.json index ad8e9d7ff..7b35c24e7 100644 --- a/data/maps/RustboroCity_House1/map.json +++ b/data/maps/RustboroCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_CAMPER", @@ -57,6 +57,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_House2/map.json b/data/maps/RustboroCity_House2/map.json index 398c3ca2a..ed893d820 100644 --- a/data/maps/RustboroCity_House2/map.json +++ b/data/maps/RustboroCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -57,6 +57,10 @@ "dest_warp_id": "9" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_House3/map.json b/data/maps/RustboroCity_House3/map.json index 94a9f1ba9..814d1bdbb 100644 --- a/data/maps/RustboroCity_House3/map.json +++ b/data/maps/RustboroCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -70,6 +70,10 @@ "dest_warp_id": "11" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_LeafsHouse/map.json b/data/maps/RustboroCity_LeafsHouse/map.json new file mode 100644 index 000000000..d853e9d9b --- /dev/null +++ b/data/maps/RustboroCity_LeafsHouse/map.json @@ -0,0 +1,73 @@ +{ + "id": "MAP_RUSTBORO_CITY_LEAFS_HOUSE", + "name": "RustboroCity_LeafsHouse", + "layout": "LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE", + "music": "MUS_RUSTBORO", + "region_map_section": "MAPSEC_RUSTBORO_CITY", + "requires_flash": false, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_INDOOR", + "allow_cycling": false, + "allow_escaping": false, + "allow_running": false, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": 0, + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN", + "x": 11, + "y": 5, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "LeafsHouse_EventScript_grandmother", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_UNUSED_SQUIRTLE_DOLL", + "x": 9, + "y": 3, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "LeafsHouse_EventScript_doll", + "flag": "0" + } + ], + "warp_events": [ + { + "x": 1, + "y": 12, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY", + "dest_warp_id": "12" + }, + { + "x": 2, + "y": 12, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY", + "dest_warp_id": "12" + }, + { + "x": 1, + "y": 1, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY_LEAFS_HOUSE_2F", + "dest_warp_id": "0" + } + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/RustboroCity_LeafsHouse/scripts.inc b/data/maps/RustboroCity_LeafsHouse/scripts.inc new file mode 100644 index 000000000..79abd1937 --- /dev/null +++ b/data/maps/RustboroCity_LeafsHouse/scripts.inc @@ -0,0 +1,46 @@ +RustboroCity_LeafsHouse_MapScripts:: + .byte 0 + +//grand mother scripts +LeafsHouse_EventScript_grandmother:: + goto_if_set FLAG_LEAFS_ARRIVED, LeafsHouse_EventScript_grandmother_leafsarrive + msgbox LeafsHouse_Text_grandmother_hello, MSGBOX_NPC + end + +LeafsHouse_EventScript_grandmother_leafsarrive:: + msgbox LeafsHouse_EventScript_grandmother_happyleafishome + end + +LeafsHouse_EventScript_grandmother_happyleafishome: + .string "Leaf's Grandma: Leaf is a very popular\n" + .string "trainer in her hometown.\l" + .string "Don't tell her know that you know. hehe$" + +LeafsHouse_Text_grandmother_hello: + .string "Old Lady: Hello little one.You have the\n" + .string "look of a Trainer in your eyes.\p" + .string "My granddaughter is also a trainer.\n" + .string "She'll be visiting from KANTO soon\l" + .string "You should come by later and meet her.$" + + +//Doll scrips +LeafsHouse_EventScript_doll:: + goto_if_set FLAG_LEAFS_ARRIVED, LeafsHouse_EventScript_doll_afterleaf + msgbox LeafsHouse_Text_doll, MSGBOX_NPC + end + +LeafsHouse_Text_doll: + .string "Old Lady: That belonged to my\n" + .string "granddaughter when she was little.$" + +LeafsHouse_EventScript_doll_afterleaf:: + msgbox LeafsHouse_Text_doll_afterleaf, MSGBOX_NPC + end + +LeafsHouse_Text_doll_afterleaf: + .string "Leaf's Grandma: Leaf used to carry\n" + .string "that thing everywhere with her when\l" + .string "she would visit me in the winters.$" + + \ No newline at end of file diff --git a/data/maps/RustboroCity_LeafsHouse_2F/map.json b/data/maps/RustboroCity_LeafsHouse_2F/map.json new file mode 100644 index 000000000..8e7e4eb45 --- /dev/null +++ b/data/maps/RustboroCity_LeafsHouse_2F/map.json @@ -0,0 +1,53 @@ +{ + "id": "MAP_RUSTBORO_CITY_LEAFS_HOUSE_2F", + "name": "RustboroCity_LeafsHouse_2F", + "layout": "LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE_2F", + "music": "MUS_RUSTBORO", + "region_map_section": "MAPSEC_RUSTBORO_CITY", + "requires_flash": false, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_INDOOR", + "allow_cycling": false, + "allow_escaping": false, + "allow_running": false, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": 0, + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_MEOWTH", + "x": 7, + "y": 7, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_LEFT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "RustboroCity_LeafsHouse_2F_EventScript_meowth", + "flag": "0" + } + ], + "warp_events": [ + { + "x": 1, + "y": 1, + "elevation": 0, + "dest_map": "MAP_RUSTBORO_CITY_LEAFS_HOUSE", + "dest_warp_id": "2" + } + ], + "coord_events": [ + + ], + "bg_events": [ + { + "type": "sign", + "x": 6, + "y": 1, + "elevation": 0, + "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", + "script": "RustboroCity_LeafsHouse_2F_EventScript_Gamecube" + } + ] +} diff --git a/data/maps/RustboroCity_LeafsHouse_2F/scripts.inc b/data/maps/RustboroCity_LeafsHouse_2F/scripts.inc new file mode 100644 index 000000000..36dbe91bc --- /dev/null +++ b/data/maps/RustboroCity_LeafsHouse_2F/scripts.inc @@ -0,0 +1,22 @@ +RustboroCity_LeafsHouse_2F_MapScripts:: + .byte 0 + +//gamecube +RustboroCity_LeafsHouse_2F_EventScript_Gamecube:: + msgbox RustboroCity_LeafsHouse_2F_Text_cube, MSGBOX_SIGN + end + +RustboroCity_LeafsHouse_2F_Text_cube: + .string "Looks a bit dusty and most of the\n" + .string "games are remakes.$" + +//meowth +RustboroCity_LeafsHouse_2F_EventScript_meowth:: + playmoncry SPECIES_MEOWTH, 0 + waitmoncry + msgbox RustboroCity_LeafsHouse_2F_Text_sleepingMeowth, MSGBOX_SIGN + end + +RustboroCity_LeafsHouse_2F_Text_sleepingMeowth: + .string "Meowth is sleeping without a care in\n" + .string "the world.$" \ No newline at end of file diff --git a/data/maps/RustboroCity_PokemonCenter_2F/map.json b/data/maps/RustboroCity_PokemonCenter_2F/map.json index 5c9c5d42e..f8df7f440 100644 --- a/data/maps/RustboroCity_PokemonCenter_2F/map.json +++ b/data/maps/RustboroCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index b45e54cc7..5f07ad6cb 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -213,7 +213,9 @@ "RustboroCity_Flat2_1F", "RustboroCity_Flat2_2F", "RustboroCity_Flat2_3F", - "RustboroCity_House3" + "RustboroCity_House3", + "RustboroCity_LeafsHouse", + "RustboroCity_LeafsHouse_2F" ], "gMapGroup_IndoorFortree": [ "FortreeCity_House1", @@ -436,7 +438,8 @@ "TerraCave_End", "AlteringCave", "MeteorFalls_StevensCave", - "PetalburgWoodsExt" + "PetalburgWoodsExt", + "PetalburgWoodsext2" ], "gMapGroup_IndoorDynamic": [ "SecretBase_RedCave1", diff --git a/data/scripts/item_ball_scripts.inc b/data/scripts/item_ball_scripts.inc index af3528cad..ae53ff180 100644 --- a/data/scripts/item_ball_scripts.inc +++ b/data/scripts/item_ball_scripts.inc @@ -354,6 +354,10 @@ PetalburgWoods_EventScript_ItemParalyzeHeal:: finditem ITEM_PARALYZE_HEAL end +PetalburgWoodsext2_EventScript_ItemRevive:: + finditem ITEM_REVIVE + end + RusturfTunnel_EventScript_ItemPokeBall:: finditem ITEM_POKE_BALL end diff --git a/include/constants/flags.h b/include/constants/flags.h index 620e23f4b..6d405de55 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1222,8 +1222,8 @@ #define FLAG_ITEM_ROUTE_102ext_RARECANDY 0x494 // Unused Flag #define FLAG_ITEM_TOWN_LITTLEROOT_POTION 0x495 // Unused Flag #define FLAG_RECEIVED_FEEBASS 0x496 // Unused Flag -#define FLAG_UNUSED_0x497 0x497 // Unused Flag -#define FLAG_UNUSED_0x498 0x498 // Unused Flag +#define FLAG_ITEM_PETALBURGEXT2_WOODS_REVIVE 0x497 // Unused Flag +#define FLAG_LEAFS_ARRIVED 0x498 // Unused Flag #define FLAG_UNUSED_0x499 0x499 // Unused Flag #define FLAG_UNUSED_0x49A 0x49A // Unused Flag #define FLAG_UNUSED_0x49B 0x49B // Unused Flag diff --git a/include/constants/layouts.h b/include/constants/layouts.h index 32aee8a00..40ae5fa44 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -453,5 +453,8 @@ #define LAYOUT_PETALBURG_CITY_OLD_RESEARCH_BUILDING 446 #define LAYOUT_PETALBURG_WOODS_EXT 447 #define LAYOUT_ROUTE103EXT 448 +#define LAYOUT_PETALBURG_WOODSEXT2 449 +#define LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE 450 +#define LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE_2F 451 #endif // GUARD_CONSTANTS_LAYOUTS_H diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index a1f85f448..6b5727ee8 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -184,6 +184,8 @@ #define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8)) #define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8)) #define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8)) +#define MAP_RUSTBORO_CITY_LEAFS_HOUSE (17 | (11 << 8)) +#define MAP_RUSTBORO_CITY_LEAFS_HOUSE_2F (18 | (11 << 8)) // gMapGroup_IndoorFortree #define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8)) @@ -407,6 +409,7 @@ #define MAP_ALTERING_CAVE (106 | (24 << 8)) #define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8)) #define MAP_PETALBURG_WOODS_EXT (108 | (24 << 8)) +#define MAP_PETALBURG_WOODSEXT2 (109 | (24 << 8)) // gMapGroup_IndoorDynamic #define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) diff --git a/include/constants/opponents.h b/include/constants/opponents.h index a8f2f5e58..4e333590a 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -857,12 +857,14 @@ #define TRAINER_BRENDAN_PLACEHOLDER 853 #define TRAINER_MAY_PLACEHOLDER 854 #define TRAINER_BART 855 +#define TRAINER_LEWIS 856 +#define TRAINER_COLEMAN 867 // NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows // More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled // MAX_TRAINERS_COUNT can be increased but will take up additional saveblock space -#define TRAINERS_COUNT 856 -#define MAX_TRAINERS_COUNT 864 +#define TRAINERS_COUNT 868 +#define MAX_TRAINERS_COUNT 900//864 #endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index c652c125c..56d0cc452 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -11,6 +11,29 @@ static const struct TrainerMonNoItemDefaultMoves sParty_bart[] = { } }; +static const struct TrainerMonNoItemDefaultMoves sParty_lewis[] = { + { + .iv = 0, + .lvl = 6, + .species = SPECIES_WEEDLE, + }, + { + .iv = 0, + .lvl = 7, + .species = SPECIES_LEDYBA, + } +}; + +static const struct TrainerMonItemCustomMoves sParty_coleman[] = { + { + .iv = 255, + .lvl = 11, + .species = SPECIES_WOOPER, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_CURSE, MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ATTRACT} + } +}; + static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer1[] = { { .iv = 0, diff --git a/src/data/trainers.h b/src/data/trainers.h index 6885a3ee9..b1222dce0 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -10273,4 +10273,28 @@ const struct Trainer gTrainers[] = { .aiFlags = 0, .party = NO_ITEM_DEFAULT_MOVES(sParty_bart), }, + + [TRAINER_LEWIS] = + { + .trainerClass = TRAINER_CLASS_BUG_CATCHER, + .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .trainerName = _("LEWIS"), + .items = {}, + .doubleBattle = FALSE, + .aiFlags = 0, + .party = NO_ITEM_DEFAULT_MOVES(sParty_lewis), + }, + + [TRAINER_COLEMAN] = + { + .trainerClass = TRAINER_CLASS_CAMPER, + .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, + .trainerPic = TRAINER_PIC_CAMPER, + .trainerName = _("COLEMAN"), + .items = {}, + .doubleBattle = FALSE, + .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, + .party = ITEM_CUSTOM_MOVES(sParty_coleman), + }, }; diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 783f8387a..8e72ce4c0 100755 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -11754,7 +11754,7 @@ ] }, "water_mons": { - "encounter_rate": 0, + "encounter_rate": 10, "mons": [ { "min_level": 2, @@ -11784,7 +11784,7 @@ ] }, "fishing_mons": { - "encounter_rate": 0, + "encounter_rate": 20, "mons": [ { "min_level": 4, @@ -11838,6 +11838,75 @@ } ] } + }, + { + "map": "MAP_PETALBURG_WOODSEXT2", + "base_label": "gPetalburgWoodsext20", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_SHROOMISH" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_POOCHYENA" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_SILCOON" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_CASCOON" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_WURMPLE" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_SHROOMISH" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_TAILLOW" + }, + { + "min_level": 5, + "max_level": 5, + "species": "SPECIES_SLAKOTH" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_TAILLOW" + }, + { + "min_level": 6, + "max_level": 6, + "species": "SPECIES_SLAKOTH" + } + ] + } } ] }, From 9bee74dd25d82848ddc3b6717aceab4555d6a179 Mon Sep 17 00:00:00 2001 From: SuppaiNeko Date: Fri, 7 Apr 2023 07:43:23 -0700 Subject: [PATCH 71/71] Added extra content in granitecave --- data/event_scripts.s | 2 + data/layouts/GraniteCave_B3F/border.bin | 1 + data/layouts/GraniteCave_B3F/map.bin | 8 ++ data/layouts/layouts.json | 10 ++ data/maps/EverGrandeCity/map.json | 4 +- .../EverGrandeCity_ChampionsRoom/map.json | 10 +- data/maps/EverGrandeCity_DrakesRoom/map.json | 10 +- data/maps/EverGrandeCity_GlaciasRoom/map.json | 10 +- data/maps/EverGrandeCity_Hall1/map.json | 14 ++- data/maps/EverGrandeCity_Hall2/map.json | 14 ++- data/maps/EverGrandeCity_Hall3/map.json | 14 ++- data/maps/EverGrandeCity_Hall4/map.json | 14 ++- data/maps/EverGrandeCity_Hall5/map.json | 14 ++- data/maps/EverGrandeCity_HallOfFame/map.json | 10 +- data/maps/EverGrandeCity_PhoebesRoom/map.json | 10 +- .../EverGrandeCity_PokemonLeague_1F/map.json | 10 +- data/maps/EverGrandeCity_SidneysRoom/map.json | 10 +- data/maps/GraniteCave_1F/map.json | 10 +- data/maps/GraniteCave_B1F/map.json | 10 +- data/maps/GraniteCave_B2F/map.json | 6 +- data/maps/GraniteCave_B3F/map.json | 105 ++++++++++++++++++ data/maps/GraniteCave_B3F/scripts.inc | 2 + data/maps/GraniteCave_StevensRoom/map.json | 36 +++++- data/maps/GraniteCave_StevensRoom/scripts.inc | 99 ++++++++++++++++- data/maps/InsideOfTruck/map.json | 2 +- data/maps/LittlerootTown/map.json | 4 +- data/maps/Route101ext/map.json | 26 +++++ data/maps/Route101ext/scripts.inc | 27 +++++ .../map.json | 6 +- data/maps/map_groups.json | 3 +- data/scripts/item_ball_scripts.inc | 8 ++ include/constants/flags.h | 6 +- include/constants/layouts.h | 1 + include/constants/map_groups.h | 1 + src/new_game.c | 1 + 35 files changed, 453 insertions(+), 65 deletions(-) create mode 100644 data/layouts/GraniteCave_B3F/border.bin create mode 100644 data/layouts/GraniteCave_B3F/map.bin create mode 100644 data/maps/GraniteCave_B3F/map.json create mode 100644 data/maps/GraniteCave_B3F/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 37a5c3260..0ed581716 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1076,3 +1076,5 @@ Common_EventScript_LegendaryFlewAway:: .include "data/maps/RustboroCity_LeafsHouse/scripts.inc" .include "data/maps/RustboroCity_LeafsHouse_2F/scripts.inc" + + .include "data/maps/GraniteCave_B3F/scripts.inc" diff --git a/data/layouts/GraniteCave_B3F/border.bin b/data/layouts/GraniteCave_B3F/border.bin new file mode 100644 index 000000000..423a0732e --- /dev/null +++ b/data/layouts/GraniteCave_B3F/border.bin @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/layouts/GraniteCave_B3F/map.bin b/data/layouts/GraniteCave_B3F/map.bin new file mode 100644 index 000000000..48dfb6dcf --- /dev/null +++ b/data/layouts/GraniteCave_B3F/map.bin @@ -0,0 +1,8 @@ +222222222BBBBBBBBBBBB222BBBBò222222òBBB22BBBBB2222222222222BBB222BBB22222222222222BBB22BBB22222!B!B!B!B!B!B!B!B!B!BBBB222BBB222222B!B!B +BBBBBBLBRBRBRB222BBB22222BBBRBRBRBOBBBBBB222BBB222222BBBBBBBBBBBB22B22222BBò222BBB!B +222222BB2222VW2BBBB22!2!2!2 +22BB2222VW2BBBBBBB2222222BB2222VW2BBB222222BB22222BB22222222222BB2222222B2222222222222222222B22222222222222222222!!!22!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B +2!!!222B>BBBBBBBBBBBBBBB2222BBBBBBBBBBBBò22222BBBB2222222222222BBBòò2222222222BBBB""""""22222222222!!! +""""""2222222222222""""""222222222222""""""2!2!2 +222222!2 +2""""""2222222222""Y#""!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index ea3ab7e77..3aa7e6678 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -4510,6 +4510,16 @@ "secondary_tileset": "gTileset_BrendansMaysHouse", "border_filepath": "data/layouts/RustboroCity_LeafsHouse_2F/border.bin", "blockdata_filepath": "data/layouts/RustboroCity_LeafsHouse_2F/map.bin" + }, + { + "id": "LAYOUT_GRANITE_CAVE_B3F", + "name": "GraniteCave_B3F_Layout", + "width": 30, + "height": 30, + "primary_tileset": "gTileset_General", + "secondary_tileset": "gTileset_Cave", + "border_filepath": "data/layouts/GraniteCave_B3F/border.bin", + "blockdata_filepath": "data/layouts/GraniteCave_B3F/map.bin" } ] } diff --git a/data/maps/EverGrandeCity/map.json b/data/maps/EverGrandeCity/map.json index 58978b7ff..6e0b5f707 100644 --- a/data/maps/EverGrandeCity/map.json +++ b/data/maps/EverGrandeCity/map.json @@ -19,7 +19,9 @@ "direction": "left" } ], - "object_events": [], + "object_events": [ + + ], "warp_events": [ { "x": 18, diff --git a/data/maps/EverGrandeCity_ChampionsRoom/map.json b/data/maps/EverGrandeCity_ChampionsRoom/map.json index 305a1f16f..dfef15dec 100644 --- a/data/maps/EverGrandeCity_ChampionsRoom/map.json +++ b/data/maps/EverGrandeCity_ChampionsRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WALLACE", @@ -70,6 +70,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_DrakesRoom/map.json b/data/maps/EverGrandeCity_DrakesRoom/map.json index 249e244d0..cb19e82bb 100644 --- a/data/maps/EverGrandeCity_DrakesRoom/map.json +++ b/data/maps/EverGrandeCity_DrakesRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_DRAKE", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_DRAKE", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_GlaciasRoom/map.json b/data/maps/EverGrandeCity_GlaciasRoom/map.json index fd861a55b..4022726c9 100644 --- a/data/maps/EverGrandeCity_GlaciasRoom/map.json +++ b/data/maps/EverGrandeCity_GlaciasRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GLACIA", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GLACIA", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall1/map.json b/data/maps/EverGrandeCity_Hall1/map.json index 7e430832e..abf4d6ede 100644 --- a/data/maps/EverGrandeCity_Hall1/map.json +++ b/data/maps/EverGrandeCity_Hall1/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall2/map.json b/data/maps/EverGrandeCity_Hall2/map.json index 3ff291251..7dd9c4d02 100644 --- a/data/maps/EverGrandeCity_Hall2/map.json +++ b/data/maps/EverGrandeCity_Hall2/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall3/map.json b/data/maps/EverGrandeCity_Hall3/map.json index a12fe19b3..2df85e96d 100644 --- a/data/maps/EverGrandeCity_Hall3/map.json +++ b/data/maps/EverGrandeCity_Hall3/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall4/map.json b/data/maps/EverGrandeCity_Hall4/map.json index 09cf73961..2cf467a80 100644 --- a/data/maps/EverGrandeCity_Hall4/map.json +++ b/data/maps/EverGrandeCity_Hall4/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -30,6 +32,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall5/map.json b/data/maps/EverGrandeCity_Hall5/map.json index b63907630..8870eec85 100644 --- a/data/maps/EverGrandeCity_Hall5/map.json +++ b/data/maps/EverGrandeCity_Hall5/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_HallOfFame/map.json b/data/maps/EverGrandeCity_HallOfFame/map.json index 82219dfd4..bc24f2be6 100644 --- a/data/maps/EverGrandeCity_HallOfFame/map.json +++ b/data/maps/EverGrandeCity_HallOfFame/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WALLACE", @@ -37,6 +37,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_PhoebesRoom/map.json b/data/maps/EverGrandeCity_PhoebesRoom/map.json index 7fdc61651..422ac269e 100644 --- a/data/maps/EverGrandeCity_PhoebesRoom/map.json +++ b/data/maps/EverGrandeCity_PhoebesRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_PHOEBE", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_PHOEBE", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_PokemonLeague_1F/map.json b/data/maps/EverGrandeCity_PokemonLeague_1F/map.json index 6dd97c0b7..a0f1a34cf 100644 --- a/data/maps/EverGrandeCity_PokemonLeague_1F/map.json +++ b/data/maps/EverGrandeCity_PokemonLeague_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -104,6 +104,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_SidneysRoom/map.json b/data/maps/EverGrandeCity_SidneysRoom/map.json index dfe6fe36c..405e47b00 100644 --- a/data/maps/EverGrandeCity_SidneysRoom/map.json +++ b/data/maps/EverGrandeCity_SidneysRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_SIDNEY", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SIDNEY", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/GraniteCave_1F/map.json b/data/maps/GraniteCave_1F/map.json index c254c4b00..988cf9995 100644 --- a/data/maps/GraniteCave_1F/map.json +++ b/data/maps/GraniteCave_1F/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_HIKER", @@ -71,6 +71,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/GraniteCave_B1F/map.json b/data/maps/GraniteCave_B1F/map.json index 8c6a112a6..23d0ee76e 100644 --- a/data/maps/GraniteCave_B1F/map.json +++ b/data/maps/GraniteCave_B1F/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", @@ -79,6 +79,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/GraniteCave_B2F/map.json b/data/maps/GraniteCave_B2F/map.json index e3748ee4b..46b32d68b 100644 --- a/data/maps/GraniteCave_B2F/map.json +++ b/data/maps/GraniteCave_B2F/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", @@ -169,7 +169,9 @@ "dest_warp_id": "6" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "hidden_item", diff --git a/data/maps/GraniteCave_B3F/map.json b/data/maps/GraniteCave_B3F/map.json new file mode 100644 index 000000000..4912c19f8 --- /dev/null +++ b/data/maps/GraniteCave_B3F/map.json @@ -0,0 +1,105 @@ +{ + "id": "MAP_GRANITE_CAVE_B3F", + "name": "GraniteCave_B3F", + "layout": "LAYOUT_GRANITE_CAVE_B3F", + "music": "MUS_PETALBURG_WOODS", + "region_map_section": "MAPSEC_GRANITE_CAVE", + "requires_flash": true, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_UNDERGROUND", + "allow_cycling": true, + "allow_escaping": false, + "allow_running": true, + "show_map_name": true, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": 0, + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_STEVEN", + "x": 9, + "y": 25, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", + "x": 2, + "y": 17, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "GraniteCave_B3F_EventScript_ItemRevive", + "flag": "FLAG_ITEM_GRANITE_CAVE_3F_REVIVE" + }, + { + "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", + "x": 16, + "y": 6, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "GraniteCave_B3F_EventScript_ItemSuperPotion", + "flag": "FLAG_ITEM_GRANITE_CAVE_3F_SUPERPOTION" + }, + { + "graphics_id": "OBJ_EVENT_GFX_AGGRON", + "x": 22, + "y": 24, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LAIRON", + "x": 26, + "y": 28, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_ARON", + "x": 18, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_WANDER_AROUND", + "movement_range_x": 3, + "movement_range_y": 3, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + } + ], + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/GraniteCave_B3F/scripts.inc b/data/maps/GraniteCave_B3F/scripts.inc new file mode 100644 index 000000000..1a3b2fa0f --- /dev/null +++ b/data/maps/GraniteCave_B3F/scripts.inc @@ -0,0 +1,2 @@ +GraniteCave_B3F_MapScripts:: + .byte 0 diff --git a/data/maps/GraniteCave_StevensRoom/map.json b/data/maps/GraniteCave_StevensRoom/map.json index 280af56c8..8989666f6 100644 --- a/data/maps/GraniteCave_StevensRoom/map.json +++ b/data/maps/GraniteCave_StevensRoom/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_STEVEN", @@ -26,6 +26,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "GraniteCave_StevensRoom_EventScript_Steven", "flag": "FLAG_HIDE_GRANITE_CAVE_STEVEN" + }, + { + "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK", + "x": -7, + "y": -7, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_BALTOY", + "x": -7, + "y": -6, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ @@ -37,6 +63,10 @@ "dest_warp_id": "3" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/GraniteCave_StevensRoom/scripts.inc b/data/maps/GraniteCave_StevensRoom/scripts.inc index 384e648ee..705aa1876 100644 --- a/data/maps/GraniteCave_StevensRoom/scripts.inc +++ b/data/maps/GraniteCave_StevensRoom/scripts.inc @@ -7,9 +7,9 @@ GraniteCave_StevensRoom_EventScript_Steven:: lock faceplayer msgbox GraniteCave_StevensRoom_Text_ImStevenLetterForMe, MSGBOX_DEFAULT - setvar VAR_0x8004, ITEM_LETTER - call Common_EventScript_PlayerHandedOverTheItem - setflag FLAG_DELIVERED_STEVEN_LETTER + //setvar VAR_0x8004, ITEM_LETTER + //call Common_EventScript_PlayerHandedOverTheItem + //setflag FLAG_DELIVERED_STEVEN_LETTER msgbox GraniteCave_StevensRoom_Text_ThankYouTakeThis, MSGBOX_DEFAULT giveitem ITEM_TM47 call_if_eq VAR_RESULT, FALSE, GraniteCave_StevensRoom_EventScript_BagFull @@ -22,6 +22,8 @@ GraniteCave_StevensRoom_EventScript_Steven:: closemessage delay 30 setflag FLAG_REGISTERED_STEVEN_POKENAV + //insert own script here + goto GraniteCave_StevensRoom_EventScript_Steven_AskForHelp msgbox GraniteCave_StevensRoom_Text_IveGotToHurryAlong, MSGBOX_DEFAULT closemessage call_if_eq VAR_FACING, DIR_NORTH, GraniteCave_StevensRoom_EventScript_StevenExitNorth @@ -118,4 +120,95 @@ GraniteCave_StevensRoom_Text_IveGotToHurryAlong: GraniteCave_StevensRoom_Text_OhBagIsFull: .string "Oh, your BAG is full…\n" .string "That's too bad, then.$" + +//Extra +GraniteCave_StevensRoom_EventScript_Steven_AskForHelp:: + msgbox GraniteCave_StevensRoom_Text_CouldUseSomeHelp, MSGBOX_YESNO + //goto_if_eq VAR_RESULT, YES, GraniteCave_StevensRoom_EventScript_CouldUseSomeHelp_Yes + //msgbox GraniteCave_StevensRoom_Text_CouldUseSomeHelp_No, MSGBOX_NPC + closemessage + goto GraniteCave_StevensRoom_EventScript_Colapse + end + +GraniteCave_StevensRoom_Text_CouldUseSomeHelp: + .string "While I have you, maybe you could help\n" + .string "me. Would you mind?$" + +GraniteCave_StevensRoom_Movement_CheckDoor: + walk_up + delay_16 + walk_down + step_end + +GraniteCave_StevensRoom_Movement_StevenLookAround: + face_left + delay_16 + face_right + delay_16 + face_down + delay_16 + step_end + +GraniteCave_StevensRoom_Text_AfterFall: + .string "That was... interesting.\p" + .string "Looks like you will be helping me\n" + .string "afterall.\p" + .string "....................$" + +GraniteCave_StevensRoom_Text_UseDig: + .string "I have an Idea.\p" + .string "Baltoy, use dig!$" + +GraniteCave_StevensRoom_Movement_ReleaseBaltoy: + face_left + walk_faster_left + face_down + step_end + +GraniteCave_StevensRoom_EventScript_Colapse:: + lock + delay 16 + setvar VAR_0x8004, 0 @ vertical pan + setvar VAR_0x8005, 2 @ horizontal pan + setvar VAR_0x8006, 40 @ num shakes + setvar VAR_0x8007, 4 @ shake delay + special ShakeCamera + playse SE_M_EARTHQUAKE + delay 64 + fadescreen 1 //screen to black + setobjectxyperm 2, 7, 4 //set rock to location + removeobject 2 + setflag FLAG_STEVENS_CAVE_ROCK + clearflag FLAG_STEVENS_CAVE_ROCK + showobjectat 2, MAP_GRANITE_CAVE_STEVENS_ROOM + applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_StevensRoom_Movement_CheckDoor + waitstate // wait for shake + waitse + fadescreen 0 //fade back to normal + applymovement LOCALID_STEVEN, GraniteCave_StevensRoom_Movement_StevenLookAround + delay 128 + lockall + faceplayer + msgbox GraniteCave_StevensRoom_Text_AfterFall, MSGBOX_NPC + delay 64 + msgbox GraniteCave_StevensRoom_Text_UseDig + delay 32 + fadescreen 3 + //applymovement OBJ_EVENT_ID_PLAYER, GraniteCave_StevensRoom_Movement_ReleaseBaltoy + setobjectxyperm 3, 6, 8 + showobjectat 3, MAP_GRANITE_CAVE_STEVENS_ROOM + addobject 3 + fadescreen 2 + delay 64 + setvar VAR_0x8004, 0 @ vertical pan + setvar VAR_0x8005, 2 @ horizontal pan + setvar VAR_0x8006, 30 @ num shakes + setvar VAR_0x8007, 2 @ shake delay + special ShakeCamera + waitstate + warp MAP_RUSTBORO_CITY, 0, 0, 0 + release + end + + diff --git a/data/maps/InsideOfTruck/map.json b/data/maps/InsideOfTruck/map.json index 4b027853a..a76f2c939 100644 --- a/data/maps/InsideOfTruck/map.json +++ b/data/maps/InsideOfTruck/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_MOVING_BOX", diff --git a/data/maps/LittlerootTown/map.json b/data/maps/LittlerootTown/map.json index 0eec2ff6c..b81fbdee8 100644 --- a/data/maps/LittlerootTown/map.json +++ b/data/maps/LittlerootTown/map.json @@ -164,8 +164,8 @@ "x": 17, "y": 2, "elevation": 0, - "dest_map": "MAP_RUSTBORO_CITY_LEAFS_HOUSE", - "dest_warp_id": "0" + "dest_map": "MAP_GRANITE_CAVE_1F", + "dest_warp_id": "3" } ], "coord_events": [ diff --git a/data/maps/Route101ext/map.json b/data/maps/Route101ext/map.json index 1e3ece887..cfe2f0b8d 100644 --- a/data/maps/Route101ext/map.json +++ b/data/maps/Route101ext/map.json @@ -107,6 +107,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "Route101ext_EventScript_LonelyWoman", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK", + "x": 5, + "y": 24, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "FLAG_STEVENS_CAVE_ROCK" + }, + { + "graphics_id": "OBJ_EVENT_GFX_FAT_MAN", + "x": 7, + "y": 24, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "GraniteCave_StevensRoom_EventScript_Colapse", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/Route101ext/scripts.inc b/data/maps/Route101ext/scripts.inc index ed544b1d9..1ab272567 100644 --- a/data/maps/Route101ext/scripts.inc +++ b/data/maps/Route101ext/scripts.inc @@ -16,6 +16,33 @@ Route101ext_EventScript_LonelyWoman:: Route101ext_EventScript_Sign:: msgbox Route101ext_Text_Sign, MSGBOX_NPC end + +Route101ext_EventScript_RockTest:: + goto_if_set FLAG_STEVENS_CAVE_ROCK, Route101ext_EventScript_RockTest_on + removeobject 7 + setflag FLAG_STEVENS_CAVE_ROCK + + delay 16 + setvar VAR_0x8004, 0 @ vertical pan + setvar VAR_0x8005, 2 @ horizontal pan + setvar VAR_0x8006, 40 @ num shakes + setvar VAR_0x8007, 4 @ shake delay + special ShakeCamera + waitstate + + end + +Route101ext_EventScript_RockTest_on:: + clearflag FLAG_STEVENS_CAVE_ROCK + setobjectxyperm 7, 5, 24 + delay 16 + setvar VAR_0x8004, 1 @ vertical pan + setvar VAR_0x8005, 2 @ horizontal pan + setvar VAR_0x8006, 3 @ num shakes + setvar VAR_0x8007, 1 @ shake delay + special ShakeCamera + waitstate + end Route101ext_Text_Sign: .string "{LEFT_ARROW} OLDALE TOWN\n" diff --git a/data/maps/Route124_DivingTreasureHuntersHouse/map.json b/data/maps/Route124_DivingTreasureHuntersHouse/map.json index 148014b99..39931b32e 100644 --- a/data/maps/Route124_DivingTreasureHuntersHouse/map.json +++ b/data/maps/Route124_DivingTreasureHuntersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_5", @@ -44,7 +44,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 5f07ad6cb..278b07d04 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -439,7 +439,8 @@ "AlteringCave", "MeteorFalls_StevensCave", "PetalburgWoodsExt", - "PetalburgWoodsext2" + "PetalburgWoodsext2", + "GraniteCave_B3F" ], "gMapGroup_IndoorDynamic": [ "SecretBase_RedCave1", diff --git a/data/scripts/item_ball_scripts.inc b/data/scripts/item_ball_scripts.inc index ae53ff180..ff713268d 100644 --- a/data/scripts/item_ball_scripts.inc +++ b/data/scripts/item_ball_scripts.inc @@ -381,6 +381,14 @@ GraniteCave_B2F_EventScript_ItemRepel:: GraniteCave_B2F_EventScript_ItemRareCandy:: finditem ITEM_RARE_CANDY end + +GraniteCave_B3F_EventScript_ItemRevive:: + finditem ITEM_REVIVE + end + +GraniteCave_B3F_EventScript_ItemSuperPotion:: + finditem ITEM_SUPER_POTION + end JaggedPass_EventScript_ItemBurnHeal:: finditem ITEM_BURN_HEAL diff --git a/include/constants/flags.h b/include/constants/flags.h index 6d405de55..c71d5b240 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1224,9 +1224,9 @@ #define FLAG_RECEIVED_FEEBASS 0x496 // Unused Flag #define FLAG_ITEM_PETALBURGEXT2_WOODS_REVIVE 0x497 // Unused Flag #define FLAG_LEAFS_ARRIVED 0x498 // Unused Flag -#define FLAG_UNUSED_0x499 0x499 // Unused Flag -#define FLAG_UNUSED_0x49A 0x49A // Unused Flag -#define FLAG_UNUSED_0x49B 0x49B // Unused Flag +#define FLAG_STEVENS_CAVE_ROCK 0x499 // Unused Flag +#define FLAG_ITEM_GRANITE_CAVE_3F_SUPERPOTION 0x49A // Unused Flag +#define FLAG_ITEM_GRANITE_CAVE_3F_REVIVE 0x49B // Unused Flag #define FLAG_UNUSED_0x49C 0x49C // Unused Flag #define FLAG_UNUSED_0x49D 0x49D // Unused Flag #define FLAG_UNUSED_0x49E 0x49E // Unused Flag diff --git a/include/constants/layouts.h b/include/constants/layouts.h index 40ae5fa44..f767cc81e 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -456,5 +456,6 @@ #define LAYOUT_PETALBURG_WOODSEXT2 449 #define LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE 450 #define LAYOUT_RUSTBORO_CITY_LEAFS_HOUSE_2F 451 +#define LAYOUT_GRANITE_CAVE_B3F 452 #endif // GUARD_CONSTANTS_LAYOUTS_H diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 6b5727ee8..5e05a156d 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -410,6 +410,7 @@ #define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8)) #define MAP_PETALBURG_WOODS_EXT (108 | (24 << 8)) #define MAP_PETALBURG_WOODSEXT2 (109 | (24 << 8)) +#define MAP_GRANITE_CAVE_B3F (110 | (24 << 8)) // gMapGroup_IndoorDynamic #define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) diff --git a/src/new_game.c b/src/new_game.c index 424c02aec..436339c8b 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -127,6 +127,7 @@ static void ClearFrontierRecord(void) static void WarpToTruck(void) { SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), WARP_ID_NONE, -1, -1); + //SetWarpDestination(MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), -1, 6, 18); WarpIntoMap(); }